diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index c59f77466..d44414748 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -165,6 +165,8 @@ def getType(obj): return obj.Proxy.Type if obj.isDerivedFrom("Sketcher::SketchObject"): return "Sketch" + if (obj.TypeId == "Part::Line"): + return "Part::Line" if obj.isDerivedFrom("Part::Feature"): return "Part" if (obj.TypeId == "App::Annotation"): diff --git a/src/Mod/Draft/DraftTools.py b/src/Mod/Draft/DraftTools.py index e310e9b84..128f1a1eb 100644 --- a/src/Mod/Draft/DraftTools.py +++ b/src/Mod/Draft/DraftTools.py @@ -2551,7 +2551,7 @@ class Trimex(Modifier): sw = self.obj.ViewObject.LineWidth import DraftGeomUtils for e in self.edges: - if DraftGeomUtils(e) == "Line": + if DraftGeomUtils.geomType(e) == "Line": self.ghost.append(lineTracker(scolor=sc,swidth=sw)) else: self.ghost.append(arcTracker(scolor=sc,swidth=sw)) @@ -2739,12 +2739,39 @@ class Trimex(Modifier): self.doc.openTransaction("Trim/extend") if Draft.getType(self.obj) in ["Wire","BSpline"]: p = [] - if self.placement: invpl = self.placement.inverse() + if self.placement: + invpl = self.placement.inverse() for v in newshape.Vertexes: np = v.Point - if self.placement: np = invpl.multVec(np) + if self.placement: + np = invpl.multVec(np) p.append(np) self.obj.Points = p + elif Draft.getType(self.obj) == "Part::Line": + p = [] + if self.placement: + invpl = self.placement.inverse() + for v in newshape.Vertexes: + np = v.Point + if self.placement: + np = invpl.multVec(np) + p.append(np) + if ((p[0].x == self.obj.X1) and (p[0].y == self.obj.Y1) and (p[0].z == self.obj.Z1)): + self.obj.X2 = p[-1].x + self.obj.Y2 = p[-1].y + self.obj.Z2 = p[-1].z + elif ((p[-1].x == self.obj.X1) and (p[-1].y == self.obj.Y1) and (p[-1].z == self.obj.Z1)): + self.obj.X2 = p[0].x + self.obj.Y2 = p[0].y + self.obj.Z2 = p[0].z + elif ((p[0].x == self.obj.X2) and (p[0].y == self.obj.Y2) and (p[0].z == self.obj.Z2)): + self.obj.X1 = p[-1].x + self.obj.Y1 = p[-1].y + self.obj.Z1 = p[-1].z + else: + self.obj.X1 = p[0].x + self.obj.Y1 = p[0].y + self.obj.Z1 = p[0].z elif Draft.getType(self.obj) == "Circle": angles = self.ghost[0].getAngles() print "original",self.obj.FirstAngle," ",self.obj.LastAngle