Skip to content

Commit dac8220

Browse files
committed
take edge vertices from trim so they're in order
1 parent fc66906 commit dac8220

File tree

3 files changed

+44
-34
lines changed

3 files changed

+44
-34
lines changed

src/compas_rhino/geometry/brep/edge.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,18 @@ def __init__(self, rhino_edge=None):
3838
super(RhinoBrepEdge, self).__init__()
3939
self._edge = None
4040
self._curve = None
41-
self._start_vertex = None
42-
self._end_vertex = None
41+
self.start_vertex = None
42+
self.end_vertex = None
4343
if rhino_edge:
4444
self._set_edge(rhino_edge)
4545

4646
def _set_edge(self, native_edge):
47+
print("creating Edge object. nativ:{}".format(native_edge))
4748
self._edge = native_edge
4849
self._curve = self._edge.EdgeCurve
49-
self._start_vertex = RhinoBrepVertex(self._edge.StartVertex)
50-
self._end_vertex = RhinoBrepVertex(self._edge.EndVertex)
50+
# print("creating Edge object. StartVertex:{} EndVertex:{}".format(self._edge.StartVertex.Location, self._edge.EndVertex.Location))
51+
# self._curve_start = RhinoBrepVertex(self._edge.StartVertex)
52+
# self._curve_end = RhinoBrepVertex(self._edge.EndVertex)
5153

5254
# ==============================================================================
5355
# Data
@@ -70,7 +72,7 @@ def data(self):
7072
return {
7173
"type": type_,
7274
"value": curve.data,
73-
"points": [self._start_vertex.point.data, self._end_vertex.point.data],
75+
"points": [self.start_vertex.point.data, self.end_vertex.point.data],
7476
}
7577

7678
@data.setter
@@ -89,9 +91,9 @@ def data(self, value):
8991
else:
9092
self._curve = RhinoNurbsCurve.from_data(value["value"]).rhino_curve
9193

92-
self._start_vertex, self._end_vertex = RhinoBrepVertex(), RhinoBrepVertex()
93-
self._start_vertex._point = Point.from_data(value["points"][0])
94-
self._end_vertex._point = Point.from_data(value["points"][1])
94+
self.start_vertex, self.end_vertex = RhinoBrepVertex(), RhinoBrepVertex()
95+
self.start_vertex._point = Point.from_data(value["points"][0])
96+
self.end_vertex._point = Point.from_data(value["points"][1])
9597

9698
# ==============================================================================
9799
# Properties
@@ -101,17 +103,17 @@ def data(self, value):
101103
def curve(self):
102104
return self._curve
103105

104-
@property
105-
def start_vertex(self):
106-
return self._start_vertex
107-
108-
@property
109-
def end_vertex(self):
110-
return self._end_vertex
106+
# @property
107+
# def start_vertex(self):
108+
# return self._start_vertex
109+
#
110+
# @property
111+
# def end_vertex(self):
112+
# return self._end_vertex
111113

112114
@property
113115
def vertices(self):
114-
return [self._start_vertex, self._end_vertex]
116+
return [self.start_vertex, self.end_vertex]
115117

116118
@property
117119
def is_circle(self):

src/compas_rhino/geometry/brep/face.py

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,18 @@ def is_plane(self):
103103

104104
@staticmethod
105105
def _get_surface_geometry(surface):
106-
# success, cast_surface = surface.TryGetPlane()
107-
# if success:
108-
# return "plane", plane_to_compas(cast_surface)
109-
# success, cast_surface = surface.TryGetSphere()
110-
# if success:
111-
# return "sphere", sphere_to_compas(cast_surface)
112-
# success, cast_surface = surface.TryGetCylinder()
113-
# if success:
114-
# return "cylinder", cylinder_to_compas(cast_surface)
115-
# success, cast_surface = surface.TryGetTorus()
116-
# if success:
117-
# raise NotImplementedError("Support for torus surface is not yet implemented!")
106+
success, cast_surface = surface.TryGetPlane()
107+
if success:
108+
return "plane", plane_to_compas(cast_surface)
109+
success, cast_surface = surface.TryGetSphere()
110+
if success:
111+
return "sphere", sphere_to_compas(cast_surface)
112+
success, cast_surface = surface.TryGetCylinder()
113+
if success:
114+
return "cylinder", cylinder_to_compas(cast_surface)
115+
success, cast_surface = surface.TryGetTorus()
116+
if success:
117+
raise NotImplementedError("Support for torus surface is not yet implemented!")
118118
return "nurbs", RhinoNurbsSurface.from_rhino(surface.ToNurbsSurface())
119119

120120
# @staticmethod
@@ -130,9 +130,10 @@ def _get_surface_geometry(surface):
130130
@staticmethod
131131
def _make_surface_from_plane_loop(plane, loop):
132132
# TODO: replace guesswork here with an actual calculation..
133-
c0 = loop.edges[0].start_point
134-
c1 = loop.edges[1].start_point
135-
c2 = loop.edges[2].start_point
136-
c3 = loop.edges[3].start_point
137-
surface = RhinoNurbsSurface.from_corners([c3, c2, c1, c0])
133+
c0 = loop.edges[0].start_vertex._point
134+
c1 = loop.edges[1].start_vertex._point
135+
c2 = loop.edges[2].start_vertex._point
136+
c3 = loop.edges[3].start_vertex._point
137+
# flipped order flips the normal of the resulting surface!
138+
surface = RhinoNurbsSurface.from_corners([c0, c1, c2, c3])
138139
return surface

src/compas_rhino/geometry/brep/loop.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
from compas.geometry import BrepLoop
2+
from compas_rhino.conversions import point_to_compas
23

34
import Rhino
45

56
from .edge import RhinoBrepEdge
7+
from .vertex import RhinoBrepVertex
68

79

810
class LoopType(object):
@@ -54,7 +56,12 @@ def __init__(self, rhino_loop=None):
5456
def _set_loop(self, native_loop):
5557
self._loop = native_loop
5658
self._type = int(self._loop.LoopType)
57-
self._edges = [RhinoBrepEdge(t.Edge) for t in self._loop.Trims]
59+
self._edges = []
60+
for trim in self._loop.Trims:
61+
edge = RhinoBrepEdge(trim.Edge)
62+
edge.start_vertex = RhinoBrepVertex(trim.StartVertex)
63+
edge.end_vertex = RhinoBrepVertex(trim.EndVertex)
64+
self._edges.append(edge)
5865

5966
# ==============================================================================
6067
# Data

0 commit comments

Comments
 (0)