[ArchWall_Draft-OffsetWires] Bug-fix Ellipse Support (#16038)

* [ArchWall_Draft-OffsetWires] Bug-fix Ellipse Support

Fixed bug/regression in ArchWall/Draft-OffsetWires ellipse support.

FC Forum Discussion
- https://forum.freecad.org/viewtopic.php?p=777965#p777897

* Update offsets.py

Typo

* L347 - trailing whitespace after comma
This commit is contained in:
paul
2024-08-27 00:03:21 +08:00
committed by GitHub
parent 0d4b04deb3
commit 664f4d5655
2 changed files with 7 additions and 5 deletions

View File

@@ -343,7 +343,9 @@ def offsetWire(wire, dvec, bind=False, occ=False,
# record current edge's Orientation, and set Delta
if i != 0: # else:
# TODO Should also calculate 1st edge direction above
if isinstance(curredge.Curve, Part.Circle):
if isinstance(curredge.Curve, (Part.Circle,Part.Ellipse)):
# Seems Circle/Ellipse (1 geometry) would be sorted in 1 list,
# so i=0; should not happen here in fact (i != 0). 2024.8.25.
delta = curredge.tangentAt(curredge.FirstParameter).cross(norm)
else:
delta = vec(curredge).cross(norm)
@@ -441,7 +443,7 @@ def offsetWire(wire, dvec, bind=False, occ=False,
# TODO arc always in counter-clockwise directinon
# ... ( not necessarily 'reversed')
if curOrientation == "Reversed":
if not isinstance(curredge.Curve, Part.Circle):
if not isinstance(curredge.Curve, (Part.Circle,Part.Ellipse)):
# assume straight line, reverse it
nedge = Part.Edge(nedge.Vertexes[1], nedge.Vertexes[0])
elif nedge.isClosed():
@@ -482,7 +484,7 @@ def offsetWire(wire, dvec, bind=False, occ=False,
elif curAlign == 'Center':
nedge = offset(curredge, delta, trim=True)
if curOrientation == "Reversed":
if not isinstance(curredge.Curve, Part.Circle):
if not isinstance(curredge.Curve, (Part.Circle,Part.Ellipse)):
# assume straight line, reverse it
nedge = Part.Edge(nedge.Vertexes[1], nedge.Vertexes[0])
elif nedge.isClosed():