From 250d00dd7b68cc74c94ffd080a76edb719d59465 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 23 Nov 2012 20:44:01 -0200 Subject: [PATCH] Draft: small bugfix in shape2dview --- src/Mod/Draft/Draft.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index c61ca642f..6fbd2d2ba 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -2796,14 +2796,24 @@ class _Shape2DView(_DraftObject): self.createGeometry(obj) def clean(self,shape): - "returns a valid compound of edges" - import Part + "returns a valid compound of edges, by recreating them" + # this is because the projection algorithm somehow creates wrong shapes. + # they dispay fine, but on loading the file the shape is invalid + import Part,DraftGeomUtils oldedges = shape.Edges newedges = [] for e in oldedges: try: if isinstance(e.Curve,Part.Line): newedges.append(e.Curve.toShape()) + elif isinstance(e.Curve,Part.Circle): + if len(e.Vertexes) > 1: + mp = DraftGeomUtils.findMidpoint(e) + a = Part.Arc(e.Vertexes[0].Point,mp,e.Vertexes[-1].Point).toShape() + newedges.append(a) + else: + newedges.append(e.Curve.toShape()) + # TODO: treat ellipses and bsplines else: newedges.append(e) except: @@ -2822,6 +2832,7 @@ class _Shape2DView(_DraftObject): if obj.HiddenLines: for g in groups[5:]: edges.append(g) + #return Part.makeCompound(edges) return self.clean(Part.makeCompound(edges)) def createGeometry(self,obj):