+ fixed an arc orientation bug in Draft to Sketch

git-svn-id: https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk@5244 e8eeb9e2-ec13-0410-a4a9-efa5cf37419d
This commit is contained in:
yorikvanhavre 2011-12-09 15:11:59 +00:00
parent 831b6c010b
commit 412e25dff1
2 changed files with 18 additions and 2 deletions

View File

@ -1216,7 +1216,7 @@ def makeSketch(objectslist,autoconstraints=False,addTo=None,name="Sketch"):
if fcgeo.hasOnlyWires(obj.Shape):
for w in obj.Shape.Wires:
for edge in w.Edges:
nobj.addGeometry(edge.Curve)
nobj.addGeometry(fcgeo.geom(edge))
if autoconstraints:
last = nobj.GeometryCount
segs = range(last-len(w.Edges),last-1)
@ -1230,7 +1230,7 @@ def makeSketch(objectslist,autoconstraints=False,addTo=None,name="Sketch"):
nobj.addConstraint(Constraint("Coincident",last-1,EndPoint,segs[0],StartPoint))
else:
for edge in obj.Shape.Edges:
nobj.addGeometry(edge.Curve)
nobj.addGeometry(fcgeo.geom(edge))
if autoconstraints:
last = nobj.GeometryCount - 1
if fcgeo.isAligned(nobj.Geometry[last],"x"):

View File

@ -355,6 +355,22 @@ def findIntersection(edge1,edge2,infinite1=False,infinite2=False,ex1=False,ex2=F
else :
print "fcgeo: Unsupported curve type: (" + str(edge1.Curve) + ", " + str(edge2.Curve) + ")"
def geom(edge):
"returns a Line, ArcOfCircle or Circle geom from the given edge"
if isinstance(edge.Curve,Part.Line):
return edge.Curve
elif isinstance(edge.Curve,Part.Circle):
if len(edge.Vertexes) == 1:
return edge.Curve
else:
v1 = edge.Vertexes[0].Point
v2 = edge.Vertexes[-1].Point
c = edge.Curve.Center
a1 = -fcvec.angle(v1.sub(c))
a2 = -fcvec.angle(v2.sub(c))
return Part.ArcOfCircle(edge.Curve,a1,a2)
else:
return edge.Curve
def mirror (point, edge):
"finds mirror point relative to an edge"