+ 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:
parent
831b6c010b
commit
412e25dff1
|
@ -1216,7 +1216,7 @@ def makeSketch(objectslist,autoconstraints=False,addTo=None,name="Sketch"):
|
||||||
if fcgeo.hasOnlyWires(obj.Shape):
|
if fcgeo.hasOnlyWires(obj.Shape):
|
||||||
for w in obj.Shape.Wires:
|
for w in obj.Shape.Wires:
|
||||||
for edge in w.Edges:
|
for edge in w.Edges:
|
||||||
nobj.addGeometry(edge.Curve)
|
nobj.addGeometry(fcgeo.geom(edge))
|
||||||
if autoconstraints:
|
if autoconstraints:
|
||||||
last = nobj.GeometryCount
|
last = nobj.GeometryCount
|
||||||
segs = range(last-len(w.Edges),last-1)
|
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))
|
nobj.addConstraint(Constraint("Coincident",last-1,EndPoint,segs[0],StartPoint))
|
||||||
else:
|
else:
|
||||||
for edge in obj.Shape.Edges:
|
for edge in obj.Shape.Edges:
|
||||||
nobj.addGeometry(edge.Curve)
|
nobj.addGeometry(fcgeo.geom(edge))
|
||||||
if autoconstraints:
|
if autoconstraints:
|
||||||
last = nobj.GeometryCount - 1
|
last = nobj.GeometryCount - 1
|
||||||
if fcgeo.isAligned(nobj.Geometry[last],"x"):
|
if fcgeo.isAligned(nobj.Geometry[last],"x"):
|
||||||
|
|
|
@ -355,6 +355,22 @@ def findIntersection(edge1,edge2,infinite1=False,infinite2=False,ex1=False,ex2=F
|
||||||
else :
|
else :
|
||||||
print "fcgeo: Unsupported curve type: (" + str(edge1.Curve) + ", " + str(edge2.Curve) + ")"
|
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):
|
def mirror (point, edge):
|
||||||
"finds mirror point relative to an edge"
|
"finds mirror point relative to an edge"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user