Skip to content

Commit a39080b

Browse files
committed
CAP: exporter source code in decent state
1 parent 93a5a0a commit a39080b

File tree

3 files changed

+811
-107
lines changed

3 files changed

+811
-107
lines changed

src/gh/diffCheck/diffCheck/df_geometries.py

Lines changed: 20 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/gh/diffCheck/diffCheck/diffCheck_app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
# dump the xml
3535
xml : str = assembly1.to_xml()
3636
if i_dump:
37-
assembly1.dump(xml, i_export_dir)
37+
assembly1.dump_xml(xml, i_export_dir)
3838
o_xml = xml
3939

4040
# show the joint/side faces

0 commit comments

Comments
 (0)