From 377ef5cff7e1986f51360f989e7fc95ffd5ed460 Mon Sep 17 00:00:00 2001 From: paul lee Date: Sun, 26 Jul 2020 05:25:00 +0800 Subject: [PATCH] [Draft - geoutils.offsets] Fix Circle and Arc Offset Direction Forum Discussion - https://forum.freecadweb.org/viewtopic.php?f=23&t=48852#p418903 --- src/Mod/Draft/draftgeoutils/offsets.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Mod/Draft/draftgeoutils/offsets.py b/src/Mod/Draft/draftgeoutils/offsets.py index bb15fb7a14..251328d294 100644 --- a/src/Mod/Draft/draftgeoutils/offsets.py +++ b/src/Mod/Draft/draftgeoutils/offsets.py @@ -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