| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- import sys
- import unittest
- from PyQt5 import QtGui, QtWidgets
- from FlatCAMApp import App
- from FlatCAMObj import FlatCAMGeometry, FlatCAMCNCjob
- from flatcamGUI.ObjectUI import GerberObjectUI, GeometryObjectUI
- from time import sleep
- import os
- import tempfile
- from shapely.geometry import LineString, LinearRing, Polygon, MultiPolygon
- class PolyPaintTestCase(unittest.TestCase):
- def setUp(self):
- self.app = QtWidgets.QApplication(sys.argv)
- # Create App, keep app defaults (do not load
- # user-defined defaults).
- self.fc = App(user_defaults=False)
- def tearDown(self):
- for _ in range(2):
- self.app.processEvents()
- # NOTE: These are creating problems...
- # del self.fc
- # del self.app
- def test_poly_paint_svg_all(self):
- print("*********************************")
- print("* svg_all *")
- print("*********************************")
- # Clear workspace
- self.fc.on_file_new()
- for _ in range(2):
- self.app.processEvents()
- # Open SVG with polygons
- self.fc.import_svg('tests/svg/drawing.svg')
- name = self.fc.collection.get_names()[0]
- self.fc.collection.set_active(name)
- geo_obj = self.fc.collection.get_by_name(name)
- # Paint all polygons
- geo_obj.paint_poly_all(5, 0.2, 1)
- sleep(5) # Todo: Do not base it on fixed time.
- for _ in range(2):
- self.app.processEvents()
- # New object should be available
- names = self.fc.collection.get_names()
- self.assertEqual(len(names), 2)
- # Verify new geometry makes sense
- painted = self.fc.collection.get_by_name(names[-1])
- for geo in painted.solid_geometry:
- # Correct Type
- self.assertTrue(isinstance(geo, LineString))
- # Lots of points (Should be 1000s)
- self.assertGreater(len(geo.coords), 2)
- def test_poly_paint_svg_click(self):
- print("*********************************")
- print("* svg_click *")
- print("*********************************")
- # Clear workspace
- self.fc.on_file_new()
- for _ in range(2):
- self.app.processEvents()
- # Open SVG with polygons
- self.fc.import_svg('tests/svg/drawing.svg')
- name = self.fc.collection.get_names()[0]
- self.fc.collection.set_active(name)
- geo_obj = self.fc.collection.get_by_name(name)
- # Paint all polygons
- geo_obj.paint_poly_single_click([300, 700], 5, 0.2, 1)
- sleep(5)
- for _ in range(2):
- self.app.processEvents()
- # New object should be available
- names = self.fc.collection.get_names()
- sleep(1)
- self.assertEqual(len(names), 2)
- # Verify new geometry makes sense
- painted = self.fc.collection.get_by_name(names[-1])
- for geo in painted.solid_geometry:
- # Correct Type
- self.assertTrue(isinstance(geo, LineString))
- # Lots of points (Should be 1000s)
- self.assertGreater(len(geo.coords), 2)
- def test_poly_paint_noncopper_all(self):
- print("*********************************")
- print("* noncopper_all *")
- print("*********************************")
- # Clear workspace
- self.fc.on_file_new()
- for _ in range(2):
- self.app.processEvents()
- self.fc.open_gerber('tests/gerber_files/simple1.gbr')
- sleep(1)
- for _ in range(2):
- self.app.processEvents()
- name = self.fc.collection.get_names()[0]
- gerber_obj = self.fc.collection.get_by_name(name)
- self.fc.collection.set_active(name)
- gerber_obj.on_generatenoncopper_button_click()
- sleep(1)
- for _ in range(2):
- self.app.processEvents()
- # New object should be available
- names = self.fc.collection.get_names()
- sleep(1)
- self.assertEqual(len(names), 2)
- geoname = "simple1.gbr_noncopper"
- geo_obj = self.fc.collection.get_by_name(geoname)
- self.fc.collection.set_active(geoname)
- geo_obj.paint_poly_all(0.02, 0.2, 0)
- sleep(5)
- for _ in range(2):
- self.app.processEvents()
- # New object should be available
- names = self.fc.collection.get_names()
- sleep(1)
- self.assertEqual(len(names), 3)
- # Verify new geometry makes sense
- painted = self.fc.collection.get_by_name(names[-1])
- for geo in painted.solid_geometry:
- # Correct Type
- self.assertTrue(isinstance(geo, LineString))
- # Lots of points (Should be 1000s)
- self.assertGreater(len(geo.coords), 2)
- def test_poly_paint_noncopper_click(self):
- print("*********************************")
- print("* noncopper_click *")
- print("*********************************")
- # Clear workspace
- self.fc.on_file_new()
- for _ in range(2):
- self.app.processEvents()
- self.fc.open_gerber('tests/gerber_files/simple1.gbr')
- sleep(1)
- for _ in range(2):
- self.app.processEvents()
- name = self.fc.collection.get_names()[0]
- gerber_obj = self.fc.collection.get_by_name(name)
- self.fc.collection.set_active(name)
- gerber_obj.on_generatenoncopper_button_click()
- sleep(1)
- for _ in range(2):
- self.app.processEvents()
- # New object should be available
- names = self.fc.collection.get_names()
- sleep(1)
- self.assertEqual(len(names), 2)
- geoname = "simple1.gbr_noncopper"
- geo_obj = self.fc.collection.get_by_name(geoname)
- self.fc.collection.set_active(geoname)
- geo_obj.paint_poly_single_click([2.7, 1.0], 0.02, 0.2, 0)
- sleep(5)
- for _ in range(2):
- self.app.processEvents()
- # New object should be available
- names = self.fc.collection.get_names()
- sleep(1)
- self.assertEqual(len(names), 3)
- # Verify new geometry makes sense
- painted = self.fc.collection.get_by_name(names[-1])
- for geo in painted.solid_geometry:
- # Correct Type
- self.assertTrue(isinstance(geo, LineString))
- # Lots of points (Should be 1000s)
- self.assertGreater(len(geo.coords), 2)
|