Skip to content

Commit 950cc16

Browse files
committed
Fix ellipse being rotated when major < minor
1 parent f824578 commit 950cc16

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

declaracad/occ/impl/occ_ellipse.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
88
"""
99

10+
from math import pi
11+
1012
from atom.api import Typed
1113
from OCCT.BRepBuilderAPI import BRepBuilderAPI_MakeFace, BRepBuilderAPI_MakeWire
1214
from OCCT.Geom import Geom_Ellipse
@@ -25,9 +27,13 @@ class OccEllipse(OccEdge, ProxyEllipse):
2527

2628
def create_shape(self):
2729
d = self.declaration
28-
major = max(d.major_radius, d.minor_radius)
29-
minor = min(d.major_radius, d.minor_radius)
30-
curve = self.curve = Geom_Ellipse(coerce_axis(d.axis), major, minor)
30+
r1, r2 = d.major_radius, d.minor_radius
31+
axis = coerce_axis(d.axis)
32+
if r1 >= r2:
33+
curve = Geom_Ellipse(axis, r1, r2)
34+
else:
35+
curve = Geom_Ellipse(axis, r2, r1).Rotated(axis.Axis(), pi / 2)
36+
self.curve = curve
3137
edge = self.make_edge(curve)
3238
if d.as_face:
3339
wire = BRepBuilderAPI_MakeWire(edge).Wire()

0 commit comments

Comments
 (0)