Skip to content

Commit fdea044

Browse files
authored
Merge pull request #30 from ricardoavelino/form
Add formdiagram from meshes
2 parents 6945b30 + a896c13 commit fdea044

File tree

2 files changed

+43
-8
lines changed

2 files changed

+43
-8
lines changed

commands/TNA_envelope.py

Lines changed: 19 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

@@ -249,6 +250,8 @@ def RunCommand():
249250
if not thickness:
250251
return
251252

253+
rs.HideObject(guid)
254+
252255
envelope = MeshEnvelope.from_middle_mesh(mesh_middle, thickness)
253256

254257
# # =============================================================================
@@ -266,25 +269,35 @@ def RunCommand():
266269
# =============================================================================
267270

268271
elif option == "FromBounds":
272+
guids_bounds = []
273+
269274
guid = compas_rhino.objects.select_mesh("Select intrados")
275+
rs.UnselectAllObjects()
270276
if not guid:
271277
return
272-
mesh_intrados = compas_rhino.conversions.meshobject_to_compas(guid)
273-
rs.UnselectAllObjects()
278+
guids_bounds.append(guid)
279+
obj = compas_rhino.objects.find_object(guid)
280+
mesh_intrados = compas_rhino.conversions.mesh_to_compas(obj.Geometry, cls=Mesh)
274281

275282
guid = compas_rhino.objects.select_mesh("Select extrados")
283+
rs.UnselectAllObjects()
276284
if not guid:
277285
return
278-
mesh_extrados = compas_rhino.conversions.meshobject_to_compas(guid)
279-
rs.UnselectAllObjects()
286+
guids_bounds.append(guid)
287+
obj = compas_rhino.objects.find_object(guid)
288+
mesh_extrados = compas_rhino.conversions.mesh_to_compas(obj.Geometry, cls=Mesh)
280289

281290
guid = compas_rhino.objects.select_mesh("Select middle (Optional)")
291+
rs.UnselectAllObjects()
282292
if not guid:
283293
mesh_middle = None
284294
pass
285295
else:
286-
mesh_middle = compas_rhino.conversions.meshobject_to_compas(guid)
287-
rs.UnselectAllObjects()
296+
guids_bounds.append(guid)
297+
obj = compas_rhino.objects.find_object(guid)
298+
mesh_middle = compas_rhino.conversions.mesh_to_compas(obj.Geometry, cls=Mesh)
299+
300+
rs.HideObjects(guids_bounds)
288301

289302
envelope = MeshEnvelope.from_meshes(mesh_intrados, mesh_extrados, mesh_middle)
290303

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)