[Draft - geoutils.offsets] Fix Circle and Arc Offset Direction
Forum Discussion - https://forum.freecadweb.org/viewtopic.php?f=23&t=48852#p418903
This commit is contained in:
committed by
Yorik van Havre
parent
bd8432f1c6
commit
377ef5cff7
@@ -201,7 +201,7 @@ def offsetWire(wire, dvec, bind=False, occ=False,
|
||||
"""
|
||||
if isinstance(wire, Part.Wire) or isinstance(wire, Part.Face):
|
||||
# Seems has repeatedly sortEdges, remark out here
|
||||
# edges = Part.__sortEdges__(wire.Edges)
|
||||
#edges = Part.__sortEdges__(wire.Edges)
|
||||
edges = wire.Edges
|
||||
elif isinstance(wire, list):
|
||||
if isinstance(wire[0], Part.Edge):
|
||||
@@ -277,7 +277,7 @@ def offsetWire(wire, dvec, bind=False, occ=False,
|
||||
if not firstDir:
|
||||
# need to test against Part.Circle, not Part.ArcOfCircle
|
||||
if isinstance(e.Curve, Part.Circle):
|
||||
v0 = e.Vertexes[0].Point.sub(e.Curve.Center)
|
||||
v0 = e.tangentAt(e.FirstParameter).cross(norm)
|
||||
else:
|
||||
v0 = vec(e).cross(norm)
|
||||
# check against dvec provided for the offset direction
|
||||
@@ -318,7 +318,7 @@ def offsetWire(wire, dvec, bind=False, occ=False,
|
||||
if i != 0: # else:
|
||||
# TODO Should also calculate 1st edge direction above
|
||||
if isinstance(curredge.Curve, Part.Circle):
|
||||
delta = curredge.Vertexes[0].Point.sub(curredge.Curve.Center)
|
||||
delta = curredge.tangentAt(curredge.FirstParameter).cross(norm)
|
||||
else:
|
||||
delta = vec(curredge).cross(norm)
|
||||
# TODO Could be edge.Orientation in fact
|
||||
|
||||
Reference in New Issue
Block a user