Merge pull request #18314 from Roy-043/Draft-make-Trimex-extrude-mode-link-aware

Draft: make Trimex extrude mode link-aware
This commit is contained in:
Roy-043
2024-12-05 20:03:19 +01:00
committed by GitHub

View File

@@ -114,25 +114,26 @@ class Trimex(gui_base_original.Modifier):
import DraftGeomUtils
import Part
if "Shape" not in self.obj.PropertiesList:
if not hasattr(self.obj, "Shape"):
self.obj = None
self.finish()
_err(translate("draft", "This object is not supported."))
return
if "Placement" in self.obj.PropertiesList:
if hasattr(self.obj, "Placement"):
self.placement = self.obj.Placement
if len(self.obj.Shape.Faces) == 1:
# simple extrude mode, the object itself is extruded
self.extrudeMode = True
self.ghost = [trackers.ghostTracker([self.obj])]
self.normal = self.obj.Shape.Faces[0].normalAt(0.5, 0.5)
self.ghost += [trackers.lineTracker() for _ in self.obj.Shape.Vertexes]
elif len(self.obj.Shape.Faces) > 1:
# face extrude mode, a new object is created
ss = Gui.Selection.getSelectionEx()[0]
if len(ss.SubObjects) == 1 and ss.SubObjects[0].ShapeType == "Face":
if self.obj.Shape.Faces:
sel = Gui.Selection.getSelectionEx("", 0)[0]
self.obj = sel.Object
if len(self.obj.Shape.Faces) == 1:
# simple extrude mode, the object itself is extruded
self.extrudeMode = True
self.ghost = [trackers.ghostTracker([self.obj])]
self.normal = self.obj.Shape.Faces[0].normalAt(0.5, 0.5)
self.ghost += [trackers.lineTracker() for _ in self.obj.Shape.Vertexes]
elif len(sel.SubObjects) == 1 and sel.SubObjects[0].ShapeType == "Face":
# face extrude mode, a new object is created
self.obj = self.doc.addObject("Part::Feature", "Face")
self.obj.Shape = ss.SubObjects[0]
self.obj.Shape = sel.SubObjects[0]
self.extrudeMode = True
self.ghost = [trackers.ghostTracker([self.obj])]
self.normal = self.obj.Shape.Faces[0].normalAt(0.5, 0.5)