From 393a3fd0508fd5d32b1922bc52b5eddc016231eb Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Thu, 5 Dec 2024 15:53:38 +0100 Subject: [PATCH] Draft: make Trimex extrude mode link-aware Fixes #14670. --- src/Mod/Draft/draftguitools/gui_trimex.py | 27 ++++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/Mod/Draft/draftguitools/gui_trimex.py b/src/Mod/Draft/draftguitools/gui_trimex.py index 3518514868..85d1f316b7 100644 --- a/src/Mod/Draft/draftguitools/gui_trimex.py +++ b/src/Mod/Draft/draftguitools/gui_trimex.py @@ -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)