Downgrade: new mode: OpenWires
Retrieves open edges from shells and fuses them into wires.
This commit is contained in:
parent
75f6c208b1
commit
8c2e971200
|
@ -45,7 +45,7 @@ def makeLatticeDowngrade(name):
|
||||||
class _latticeDowngrade:
|
class _latticeDowngrade:
|
||||||
"The latticeDowngrade object"
|
"The latticeDowngrade object"
|
||||||
|
|
||||||
_DowngradeModeList = ['Compounds','CompSolids','Solids','Shells','Faces','Wires','Edges','Vertices']
|
_DowngradeModeList = ['Compounds','CompSolids','Solids','Shells','OpenWires','Faces','Wires','Edges','Vertices']
|
||||||
|
|
||||||
def __init__(self,obj):
|
def __init__(self,obj):
|
||||||
self.Type = "latticeDowngrade"
|
self.Type = "latticeDowngrade"
|
||||||
|
@ -71,6 +71,21 @@ class _latticeDowngrade:
|
||||||
rst = shp.Solids
|
rst = shp.Solids
|
||||||
elif obj.Mode == 'Shells':
|
elif obj.Mode == 'Shells':
|
||||||
rst = shp.Shells
|
rst = shp.Shells
|
||||||
|
elif obj.Mode == 'OpenWires':
|
||||||
|
openWires = []
|
||||||
|
shells = shp.Shells
|
||||||
|
for shell in shells:
|
||||||
|
openEdges = shell.getFreeEdges().childShapes()
|
||||||
|
if len(openEdges) > 1: # edges need to be fused into wires
|
||||||
|
wires = openEdges[0].multiFuse(openEdges[1:])
|
||||||
|
if wires.ShapeType == 'Compound':
|
||||||
|
wires = wires.childShapes()
|
||||||
|
else:
|
||||||
|
wires = [wires]
|
||||||
|
else:
|
||||||
|
wires = openEdges
|
||||||
|
openWires.extend(wires)
|
||||||
|
rst = openWires
|
||||||
elif obj.Mode == 'Faces':
|
elif obj.Mode == 'Faces':
|
||||||
rst = shp.Faces
|
rst = shp.Faces
|
||||||
elif obj.Mode == 'Wires':
|
elif obj.Mode == 'Wires':
|
||||||
|
@ -139,7 +154,10 @@ def CreateLatticeDowngrade(name, mode = "Wires"):
|
||||||
FreeCADGui.doCommand("f.Base = FreeCADGui.Selection.getSelection()[0]")
|
FreeCADGui.doCommand("f.Base = FreeCADGui.Selection.getSelection()[0]")
|
||||||
FreeCADGui.doCommand("f.Mode = '"+mode+"'")
|
FreeCADGui.doCommand("f.Mode = '"+mode+"'")
|
||||||
FreeCADGui.doCommand("f.Label = f.Mode + ' of ' + f.Base.Label")
|
FreeCADGui.doCommand("f.Label = f.Mode + ' of ' + f.Base.Label")
|
||||||
|
if mode != 'OpenWires':
|
||||||
FreeCADGui.doCommand("f.Base.ViewObject.hide()")
|
FreeCADGui.doCommand("f.Base.ViewObject.hide()")
|
||||||
|
else:
|
||||||
|
FreeCADGui.doCommand("f.ViewObject.LineWidth = 6.0")
|
||||||
FreeCADGui.doCommand("f.Proxy.execute(f)")
|
FreeCADGui.doCommand("f.Proxy.execute(f)")
|
||||||
FreeCADGui.doCommand("f.purgeTouched()")
|
FreeCADGui.doCommand("f.purgeTouched()")
|
||||||
FreeCADGui.doCommand("f = None")
|
FreeCADGui.doCommand("f = None")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user