diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 60ff6574..c8840a35 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -2541,7 +2541,7 @@ class App(QtCore.QObject): 'millholes': { 'fcn': drillmillgeometry, 'help': "Create Geometry Object for milling holes from Excellon.\n" + - "> drillmillgeometry -tools -tooldia -outname \n" + + "> millholes -tools -tooldia -outname \n" + " name: Name of the Excellon Object\n" + " tools: Comma separated indexes of tools (example: 1,3 or 2)\n" + " tooldia: Diameter of the milling tool (example: 0.1)\n" + diff --git a/camlib.py b/camlib.py index 1a8ba47c..44a634e6 100644 --- a/camlib.py +++ b/camlib.py @@ -172,6 +172,30 @@ class Geometry(object): return None + def get_exteriors(self, geometry=None): + """ + Returns all exteriors of polygons in geometry. + + :return: + """ + + exteriors = [] + + if geometry is None: + geometry = self.solid_geometry + + ## If iterable, expand recursively. + try: + for geo in geometry: + exteriors.extend(self.get_exteriors(geometry=geo)) + + ## Not iterable, get the exterior if polygon. + except TypeError: + if type(geometry) == Polygon: + exteriors.append(geometry.exterior) + + return exteriors + def flatten(self, geometry=None, reset=True, pathonly=False): """ Creates a list of non-iterable linear geometry objects.