Added "interiors" shell command.
This commit is contained in:
@@ -2209,6 +2209,42 @@ class App(QtCore.QObject):
|
|||||||
|
|
||||||
return 'Ok'
|
return 'Ok'
|
||||||
|
|
||||||
|
def interiors(obj_name, *args):
|
||||||
|
a, kwa = h(*args)
|
||||||
|
types = {}
|
||||||
|
|
||||||
|
for key in kwa:
|
||||||
|
if key not in types:
|
||||||
|
return 'Unknown parameter: %s' % key
|
||||||
|
kwa[key] = types[key](kwa[key])
|
||||||
|
|
||||||
|
try:
|
||||||
|
obj = self.collection.get_by_name(str(obj_name))
|
||||||
|
except:
|
||||||
|
return "Could not retrieve object: %s" % obj_name
|
||||||
|
|
||||||
|
if obj is None:
|
||||||
|
return "Object not found: %s" % obj_name
|
||||||
|
|
||||||
|
assert isinstance(obj, Geometry)
|
||||||
|
|
||||||
|
obj_interiors = obj.get_interiors()
|
||||||
|
|
||||||
|
def geo_init(geo_obj, app_obj):
|
||||||
|
geo_obj.solid_geometry = obj_interiors
|
||||||
|
|
||||||
|
if 'outname' in kwa:
|
||||||
|
outname = kwa['outname']
|
||||||
|
else:
|
||||||
|
outname = obj_name + ".interiors"
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.new_object('geometry', outname, geo_init)
|
||||||
|
except Exception as e:
|
||||||
|
return "Failed: %s" % str(e)
|
||||||
|
|
||||||
|
return 'Ok'
|
||||||
|
|
||||||
def isolate(name, *args):
|
def isolate(name, *args):
|
||||||
a, kwa = h(*args)
|
a, kwa = h(*args)
|
||||||
types = {'dia': float,
|
types = {'dia': float,
|
||||||
@@ -2568,10 +2604,19 @@ class App(QtCore.QObject):
|
|||||||
" name: Name of the source Geometry object.\n" +
|
" name: Name of the source Geometry object.\n" +
|
||||||
" outname: Name of the resulting Geometry object."
|
" outname: Name of the resulting Geometry object."
|
||||||
},
|
},
|
||||||
|
'interiors': {
|
||||||
|
'fcn': interiors,
|
||||||
|
'help': "Get interiors of polygons.\n" +
|
||||||
|
"> interiors <name> [-outname <outname>]\n" +
|
||||||
|
" name: Name of the source Geometry object.\n" +
|
||||||
|
" outname: Name of the resulting Geometry object."
|
||||||
|
},
|
||||||
'drillcncjob': {
|
'drillcncjob': {
|
||||||
'fcn': drillcncjob,
|
'fcn': drillcncjob,
|
||||||
'help': "Drill CNC job.\n" +
|
'help': "Drill CNC job.\n" +
|
||||||
"> drillcncjob <name> -tools <str> -drillz <float> -travelz <float> -feedrate <float> -outname <str> [-spindlespeed (int)] [-toolchange (int)] \n" +
|
"> drillcncjob <name> -tools <str> -drillz <float> " +
|
||||||
|
"-travelz <float> -feedrate <float> -outname <str> " +
|
||||||
|
"[-spindlespeed (int)] [-toolchange (int)] \n" +
|
||||||
" name: Name of the object\n" +
|
" name: Name of the object\n" +
|
||||||
" tools: Comma separated indexes of tools (example: 1,3 or 2)\n" +
|
" tools: Comma separated indexes of tools (example: 1,3 or 2)\n" +
|
||||||
" drillz: Drill depth into material (example: -2.0)\n" +
|
" drillz: Drill depth into material (example: -2.0)\n" +
|
||||||
|
|||||||
27
camlib.py
27
camlib.py
@@ -172,11 +172,34 @@ class Geometry(object):
|
|||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def get_interiors(self, geometry=None):
|
||||||
|
|
||||||
|
interiors = []
|
||||||
|
|
||||||
|
if geometry is None:
|
||||||
|
geometry = self.solid_geometry
|
||||||
|
|
||||||
|
## If iterable, expand recursively.
|
||||||
|
try:
|
||||||
|
for geo in geometry:
|
||||||
|
interiors.extend(self.get_interiors(geometry=geo))
|
||||||
|
|
||||||
|
## Not iterable, get the exterior if polygon.
|
||||||
|
except TypeError:
|
||||||
|
if type(geometry) == Polygon:
|
||||||
|
interiors.extend(geometry.interiors)
|
||||||
|
|
||||||
|
return interiors
|
||||||
|
|
||||||
|
|
||||||
def get_exteriors(self, geometry=None):
|
def get_exteriors(self, geometry=None):
|
||||||
"""
|
"""
|
||||||
Returns all exteriors of polygons in geometry.
|
Returns all exteriors of polygons in geometry. Uses
|
||||||
|
``self.solid_geometry`` if geometry is not provided.
|
||||||
|
|
||||||
:return:
|
:param geometry: Shapely type or list or list of list of such.
|
||||||
|
:return: List of paths constituting the exteriors
|
||||||
|
of polygons in geometry.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
exteriors = []
|
exteriors = []
|
||||||
|
|||||||
Reference in New Issue
Block a user