66
77import rhinoscriptsyntax as rs # type: ignore
88
9+ import compas_rhino
10+ from compas .datastructures import Mesh
911from compas_masonry .session import MasonrySession as Session
1012from compas_rui import feedback
1113from 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