Skip to content

Commit aa182df

Browse files
Add formdiagram from meshes
1 parent 6945b30 commit aa182df

File tree

2 files changed

+34
-8
lines changed

2 files changed

+34
-8
lines changed

commands/TNA_envelope.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import compas_rhino
1010
import compas_rhino.conversions
1111
import compas_rhino.objects
12+
from compas.datastructures import Mesh
1213
from compas_masonry.session import MasonrySession as Session
1314
from compas_tna.diagrams import FormDiagram
1415

@@ -267,24 +268,27 @@ def RunCommand():
267268

268269
elif option == "FromBounds":
269270
guid = compas_rhino.objects.select_mesh("Select intrados")
271+
rs.UnselectAllObjects()
270272
if not guid:
271273
return
272-
mesh_intrados = compas_rhino.conversions.meshobject_to_compas(guid)
273-
rs.UnselectAllObjects()
274+
obj = compas_rhino.objects.find_object(guid)
275+
mesh_intrados = compas_rhino.conversions.mesh_to_compas(obj.Geometry, cls=Mesh)
274276

275277
guid = compas_rhino.objects.select_mesh("Select extrados")
278+
rs.UnselectAllObjects()
276279
if not guid:
277280
return
278-
mesh_extrados = compas_rhino.conversions.meshobject_to_compas(guid)
279-
rs.UnselectAllObjects()
281+
obj = compas_rhino.objects.find_object(guid)
282+
mesh_extrados = compas_rhino.conversions.mesh_to_compas(obj.Geometry, cls=Mesh)
280283

281284
guid = compas_rhino.objects.select_mesh("Select middle (Optional)")
285+
rs.UnselectAllObjects()
282286
if not guid:
283287
mesh_middle = None
284288
pass
285289
else:
286-
mesh_middle = compas_rhino.conversions.meshobject_to_compas(guid)
287-
rs.UnselectAllObjects()
290+
obj = compas_rhino.objects.find_object(guid)
291+
mesh_middle = compas_rhino.conversions.mesh_to_compas(obj.Geometry, cls=Mesh)
288292

289293
envelope = MeshEnvelope.from_meshes(mesh_intrados, mesh_extrados, mesh_middle)
290294

commands/TNA_formdiagram.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
import rhinoscriptsyntax as rs # type: ignore
88

9+
import compas_rhino
10+
from compas.datastructures import Mesh
911
from compas_masonry.session import MasonrySession as Session
1012
from compas_rui import feedback
1113
from compas_tna.diagrams import FormDiagram
@@ -79,6 +81,7 @@ def RunCommand():
7981
# =============================================================================
8082

8183
formdiagram = None
84+
rs.UnselectAllObjects()
8285

8386
option = rs.GetString(message="FormDiagram", strings=["FromPattern", "FromLines", "FromRhinoMesh"])
8487
if not option:
@@ -89,14 +92,33 @@ def RunCommand():
8992
# =============================================================================
9093

9194
if option == "FromLines":
92-
pass
95+
guids = compas_rhino.objects.select_lines("Select lines")
96+
if not guids:
97+
return
98+
99+
lines = compas_rhino.objects.get_line_coordinates(guids)
100+
if not lines:
101+
return
102+
103+
mesh_formdiagram = Mesh.from_lines(lines, delete_boundary_face=True) # type: ignore
104+
formdiagram = FormDiagram.from_mesh(mesh_formdiagram)
105+
106+
rs.HideObjects(guids)
93107

94108
# =============================================================================
95109
# From a Rhino mesh
96110
# =============================================================================
97111

98112
elif option == "FromRhinoMesh":
99-
pass
113+
guid = compas_rhino.objects.select_mesh("Select FormDiagram Mesh")
114+
rs.UnselectAllObjects()
115+
if not guid:
116+
return
117+
obj = compas_rhino.objects.find_object(guid)
118+
mesh_formdiagram = compas_rhino.conversions.mesh_to_compas(obj.Geometry, cls=Mesh)
119+
formdiagram = FormDiagram.from_mesh(mesh_formdiagram)
120+
121+
rs.HideObjects(guid)
100122

101123
# =============================================================================
102124
# From a predefined pattern

0 commit comments

Comments
 (0)