From 97b5ec247964214b3b7292c23220ed78801b7746 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Mon, 21 Oct 2013 15:15:37 -0200 Subject: [PATCH] Draft: Shape2Dview now takes groups as input --- src/Mod/Draft/Draft.py | 12 ++++++++++++ src/Mod/Draft/DraftGeomUtils.py | 17 +++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index 2ceadc2fa..133ab4ad8 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -3691,6 +3691,18 @@ class _Shape2DView(_DraftObject): comp.Placement = opl.inverse() if comp: obj.Shape = comp + + elif obj.Base.isDerivedFrom("App::DocumentObjectGroup"): + shapes = [] + for o in obj.Base.Group: + if o.isDerivedFrom("Part::Feature"): + if o.Shape: + if not o.Shape.isNull(): + shapes.append(o.Shape) + if shapes: + import Part + comp = Part.makeCompound(shapes) + obj.Shape = self.getProjected(obj,comp,obj.Projection) elif obj.Base.isDerivedFrom("Part::Feature"): if not DraftVecUtils.isNull(obj.Projection): diff --git a/src/Mod/Draft/DraftGeomUtils.py b/src/Mod/Draft/DraftGeomUtils.py index 2e1d8f257..b4e2d8e93 100755 --- a/src/Mod/Draft/DraftGeomUtils.py +++ b/src/Mod/Draft/DraftGeomUtils.py @@ -238,16 +238,25 @@ def findIntersection(edge1,edge2,infinite1=False,infinite2=False,ex1=False,ex2=F norm1 = pt2.sub(pt1).cross(pt3.sub(pt1)) norm2 = pt2.sub(pt4).cross(pt3.sub(pt4)) if not DraftVecUtils.isNull(norm1): - norm1.normalize() + try: + norm1.normalize() + except: + return [] if not DraftVecUtils.isNull(norm2): - norm2.normalize() + try: + norm2.normalize() + except: + return [] if DraftVecUtils.isNull(norm1.cross(norm2)): vec1 = pt2.sub(pt1) vec2 = pt4.sub(pt3) if DraftVecUtils.isNull(vec1) or DraftVecUtils.isNull(vec2): return [] # One of the line has zero-length - vec1.normalize() - vec2.normalize() + try: + vec1.normalize() + vec2.normalize() + except: + return [] norm3 = vec1.cross(vec2) if not DraftVecUtils.isNull(norm3) : k = ((pt3.z-pt1.z)*(vec2.x-vec2.y)+(pt3.y-pt1.y)*(vec2.z-vec2.x)+ \