[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:
paul lee
2020-07-26 05:25:00 +08:00
committed by Yorik van Havre
parent bd8432f1c6
commit 377ef5cff7

View File

@@ -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