@@ -231,48 +231,10 @@ def add_beam(self, beam: DFBeam):
231231 def remove_beam (self , beam_id : int ):
232232 self .beams = [beam for beam in self .beams if beam .id != beam_id ]
233233
234- # @classmethod
235- # def from_xml(cls, file_path: str):
236- # """
237- # Create an assembly from an XML file
238-
239- # :param file_path: The path to the XML file
240- # :return assembly: The assembly object
241- # """
242- # # parse the XML file
243- # tree = ET.parse(file_path)
244- # root = tree.getroot()
245- # beams : typing.List[DFBeam] = []
246-
247- # name = root.get("name")
248- # for beam_elem in root.findall("Beam"):
249- # beam = DFBeam(beam_elem.get("name"), [])
250- # beam._DFBeam__id = int(beam_elem.get("id"))
251- # for face_elem in beam_elem.findall("Face"):
252- # outer_loop = []
253- # for vertex_elem in face_elem.findall("Vertex"):
254- # vertex = DFVertex(
255- # float(vertex_elem.get("x")),
256- # float(vertex_elem.get("y")),
257- # float(vertex_elem.get("z"))
258- # )
259- # outer_loop.append(vertex)
260- # face = DFFace(outer_loop)
261- # face._DFFace__id = int(face_elem.get("id"))
262- # face._DFFace__is_joint = bool(face_elem.get("is_joint"))
263- # face_joint : str = face_elem.get("joint_id")
264- # if face_joint != "None":
265- # face.joint_id = int(face_joint)
266- # else:
267- # face.joint_id = None
268- # beam.faces.append(face)
269- # beams.append(beam)
270- # return cls(beams, name)
271-
272- # FIXME: to be reworked
273234 def to_xml (self ):
274235 """
275- Dump the assembly to an XML file
236+ Dump the assembly's meshes to an XML file. On top of the DiffCheck datatypes and structure,
237+ we export the underlaying beams's meshes from Rhino as vertices and faces.
276238
277239 :return xml_string: The pretty XML string
278240 """
@@ -285,17 +247,26 @@ def to_xml(self):
285247 beam_elem .set ("id" , str (beam .id ))
286248 # dffaces
287249 for face in beam .faces :
288- face_elem = ET .SubElement (beam_elem , "Face " )
250+ face_elem = ET .SubElement (beam_elem , "DFFace " )
289251 face_elem .set ("id" , str (face .id ))
290252 face_elem .set ("is_joint" , str (face .is_joint ))
291253 face_elem .set ("joint_id" , str (face .joint_id ))
292- # dfvertices
293- for loop in face .all_loops :
294- for vertex in loop :
295- vertex_elem = ET .SubElement (face_elem , "DFVertex" )
296- vertex_elem .set ("x" , str (vertex .x ))
297- vertex_elem .set ("y" , str (vertex .y ))
298- vertex_elem .set ("z" , str (vertex .z ))
254+ # export linked mesh
255+ facerhmesh_elem = ET .SubElement (face_elem , "RhMesh" )
256+ mesh = face .to_mesh ()
257+ mesh_vertices = mesh .Vertices
258+ for idx , vertex in enumerate (mesh_vertices ):
259+ facerhmesh_vertex_elem = ET .SubElement (facerhmesh_elem , "RhMeshVertex" )
260+ facerhmesh_vertex_elem .set ("x" , str (vertex .X ))
261+ facerhmesh_vertex_elem .set ("y" , str (vertex .Y ))
262+ facerhmesh_vertex_elem .set ("z" , str (vertex .Z ))
263+ mesh_faces = mesh .Faces
264+ for idx , face in enumerate (mesh_faces ):
265+ facerhmesh_face_elem = ET .SubElement (facerhmesh_elem , "RhMeshFace" )
266+ facerhmesh_face_elem .set ("v1" , str (face .A ))
267+ facerhmesh_face_elem .set ("v2" , str (face .B ))
268+ facerhmesh_face_elem .set ("v3" , str (face .C ))
269+ facerhmesh_face_elem .set ("v4" , str (face .D ))
299270
300271 tree = ET .ElementTree (root )
301272 xml_string = ET .tostring (root , encoding = 'unicode' )
@@ -304,7 +275,7 @@ def to_xml(self):
304275
305276 return pretty_xml
306277
307- def dump (self , pretty_xml : str , dir : str ):
278+ def dump_xml (self , pretty_xml : str , dir : str ):
308279 """
309280 Dump the pretty XML to a file
310281
0 commit comments