From e4012ec3f842c7e64f27288f81319f67ed627684 Mon Sep 17 00:00:00 2001 From: paireks Date: Sat, 19 Mar 2022 22:34:52 +0100 Subject: [PATCH 1/6] Start of adding --- dotbimpy/file.py | 55 ++++++++++++++++++++++++++++++++ dotbimpy/tests/test_add_files.py | 52 ++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 dotbimpy/tests/test_add_files.py diff --git a/dotbimpy/file.py b/dotbimpy/file.py index 67c64b1..6db0dee 100644 --- a/dotbimpy/file.py +++ b/dotbimpy/file.py @@ -3,6 +3,7 @@ import plotly.graph_objects as go import pyquaternion import numpy as np +import copy class File: @@ -21,6 +22,43 @@ def __eq__(self, other): and self.elements == other.elements \ and self.info == other.info + def __add__(self, other): + if not isinstance(other, File): + return NotImplemented + + new_meshes = [] + new_elements = [] + new_schema_version = self.schema_version + new_file_info = self.info.copy() + + max_mesh_id = 0 + for i in self.meshes: + if max_mesh_id < i.mesh_id: + max_mesh_id = i.mesh_id + new_meshes.append(copy.deepcopy(i)) + + for i in self.elements: + new_elements.append(copy.deepcopy(i)) + + for i in other.meshes: + new_id = i.mesh_id + max_mesh_id + 1 + new_meshes.append(Mesh(new_id, i.coordinates.copy(), i.indices.copy())) + + for i in other.elements: + new_id = i.mesh_id + max_mesh_id + 1 + new_elements.append(Element(mesh_id=new_id, + color=copy.deepcopy(i.color), + rotation=copy.deepcopy(i.rotation), + vector=copy.deepcopy(i.vector), + info=i.info.copy(), + type=i.type, + guid=i.guid)) + + return File(schema_version=new_schema_version, + info=new_file_info, + meshes=new_meshes, + elements=new_elements) + def save(self, path): if path[-4:] != ".bim": raise Exception("Path should end up with .bim extension") @@ -155,6 +193,17 @@ def __eq__(self, other): and self.type == other.type \ and self.mesh_id == other.mesh_id + def equals_without_id(self, other): + if not isinstance(other, Element): + return NotImplemented + + return self.info == other.info \ + and self.color == other.color \ + and self.guid == other.guid \ + and self.rotation == other.rotation \ + and self.vector == other.vector \ + and self.type == other.type + class Color: def __init__(self, r, g, b, a): @@ -182,6 +231,12 @@ def __eq__(self, other): return self.mesh_id == other.mesh_id and self.coordinates == other.coordinates and self.indices == other.indices + def equals_without_id(self, other): + if not isinstance(other, Mesh): + return NotImplemented + + return self.coordinates == other.coordinates and self.indices == other.indices + class Rotation: def __init__(self, qx, qy, qz, qw): diff --git a/dotbimpy/tests/test_add_files.py b/dotbimpy/tests/test_add_files.py new file mode 100644 index 0000000..fbb8fa9 --- /dev/null +++ b/dotbimpy/tests/test_add_files.py @@ -0,0 +1,52 @@ +from dotbimpy import * + + +def test__add__pyramid_cubes(): + file_a = File.read("Pyramid.bim") + file_b = File.read("Cubes.bim") + + file_result = file_a + file_b + + assert file_result.schema_version == file_a.schema_version + assert file_result.info == file_a.info + + # Check meshes + assert file_result.meshes[0] == file_a.meshes[0] + assert file_result.meshes[1].equals_without_id(file_b.meshes[0]) + assert file_result.meshes[1].mesh_id == 1 + + # Check elements + assert file_result.elements[0] == file_a.elements[0] + assert file_result.elements[1].equals_without_id(file_b.elements[0]) and file_result.elements[1].mesh_id == 1 + assert file_result.elements[2].equals_without_id(file_b.elements[1]) and file_result.elements[2].mesh_id == 1 + assert file_result.elements[3].equals_without_id(file_b.elements[2]) and file_result.elements[3].mesh_id == 1 + + +def test__add__cubes_pyramid(): + file_a = File.read("Cubes.bim") + file_b = File.read("Pyramid.bim") + + file_result = file_a + file_b + + assert file_result.schema_version == file_a.schema_version + assert file_result.info == file_a.info + assert file_result.meshes[1].mesh_id == 1 + + # Check meshes + assert file_result.meshes[0] == file_a.meshes[0] + assert file_result.meshes[1].equals_without_id(file_b.meshes[0]) + + # Check elements + assert file_result.elements[0] == file_a.elements[0] + assert file_result.elements[1] == file_a.elements[1] + assert file_result.elements[2] == file_a.elements[2] + assert file_result.elements[3].equals_without_id(file_b.elements[0]) and file_result.elements[3].mesh_id == 1 + + +def test__add__walls_truss(): + file_a = File.read("WallsWithBeams.bim") + file_b = File.read("Truss.bim") + + file_result = file_a + file_b + file_result.save("SumWallsTruss.bim") + file_result.view() From a497f59a8db8d420e958cb1e6570d5302c8b41d8 Mon Sep 17 00:00:00 2001 From: paireks Date: Sun, 20 Mar 2022 12:22:00 +0100 Subject: [PATCH 2/6] Adding files --- dotbimpy/file.py | 4 +- dotbimpy/tests/Truss.bim | 4443 +++++++++++++++++++++++++++++ dotbimpy/tests/WallsWithBeams.bim | 655 +++++ dotbimpy/tests/test_add_files.py | 44 +- 4 files changed, 5136 insertions(+), 10 deletions(-) create mode 100644 dotbimpy/tests/Truss.bim create mode 100644 dotbimpy/tests/WallsWithBeams.bim diff --git a/dotbimpy/file.py b/dotbimpy/file.py index 6db0dee..b67565a 100644 --- a/dotbimpy/file.py +++ b/dotbimpy/file.py @@ -193,7 +193,7 @@ def __eq__(self, other): and self.type == other.type \ and self.mesh_id == other.mesh_id - def equals_without_id(self, other): + def equals_without_mesh_id(self, other): if not isinstance(other, Element): return NotImplemented @@ -231,7 +231,7 @@ def __eq__(self, other): return self.mesh_id == other.mesh_id and self.coordinates == other.coordinates and self.indices == other.indices - def equals_without_id(self, other): + def equals_without_mesh_id(self, other): if not isinstance(other, Mesh): return NotImplemented diff --git a/dotbimpy/tests/Truss.bim b/dotbimpy/tests/Truss.bim new file mode 100644 index 0000000..5466ef1 --- /dev/null +++ b/dotbimpy/tests/Truss.bim @@ -0,0 +1,4443 @@ +{ + "schema_version": "1.0.0", + "meshes": [ + { + "mesh_id": 0, + "coordinates": [ + 0.0, + 0.03, + 0.0, + 7.0, + 0.03, + 0.0, + 7.0, + 0.028374517251019037, + 0.009740984076140503, + 7.0, + 0.023674215281891807, + 0.018426381380690034, + 7.0, + 0.01640844474367281, + 0.025114994347875855, + 7.0, + 0.007364564614223977, + 0.02908200797817991, + 7.0, + -0.002477380364169968, + 0.029897534790200093, + 7.0, + -0.012050862739589082, + 0.02747319979965172, + 7.0, + -0.020318447148772227, + 0.02207171732019395, + 7.0, + -0.02638421253619467, + 0.01427842179111221, + 7.0, + -0.02959083910208167, + 0.004937837708422021, + 7.0, + -0.02959083910208167, + -0.004937837708422013, + 7.0, + -0.026384212536194673, + -0.014278421791112203, + 7.0, + -0.02031844714877223, + -0.022071717320193945, + 7.0, + -0.012050862739589096, + -0.027473199799651717, + 7.0, + -0.0024773803641699823, + -0.029897534790200093, + 7.0, + 0.007364564614223964, + -0.029082007978179912, + 7.0, + 0.016408444743672798, + -0.02511499434787586, + 7.0, + 0.0236742152818918, + -0.01842638138069004, + 7.0, + 0.028374517251019037, + -0.009740984076140512, + 7.0, + 0.03, + 0.0, + 0.0, + 0.03, + 0.0, + 0.0, + 0.028374517251019037, + 0.009740984076140503, + 0.0, + 0.023674215281891807, + 0.018426381380690034, + 0.0, + 0.01640844474367281, + 0.025114994347875855, + 0.0, + 0.007364564614223977, + 0.02908200797817991, + 0.0, + -0.002477380364169968, + 0.029897534790200093, + 0.0, + -0.012050862739589082, + 0.02747319979965172, + 0.0, + -0.020318447148772227, + 0.02207171732019395, + 0.0, + -0.02638421253619467, + 0.01427842179111221, + 0.0, + -0.02959083910208167, + 0.004937837708422021, + 0.0, + -0.02959083910208167, + -0.004937837708422013, + 0.0, + -0.026384212536194673, + -0.014278421791112203, + 0.0, + -0.02031844714877223, + -0.022071717320193945, + 0.0, + -0.012050862739589096, + -0.027473199799651717, + 0.0, + -0.0024773803641699823, + -0.029897534790200093, + 0.0, + 0.007364564614223964, + -0.029082007978179912, + 0.0, + 0.016408444743672798, + -0.02511499434787586, + 0.0, + 0.0236742152818918, + -0.01842638138069004, + 0.0, + 0.028374517251019037, + -0.009740984076140512, + 0.0, + 0.03, + 0.0, + 0.0, + 0.028374517251019037, + 0.009740984076140503, + 0.0, + 0.023674215281891807, + 0.018426381380690034, + 0.0, + 0.01640844474367281, + 0.025114994347875855, + 0.0, + 0.007364564614223977, + 0.02908200797817991, + 0.0, + -0.002477380364169968, + 0.029897534790200093, + 0.0, + -0.012050862739589082, + 0.02747319979965172, + 0.0, + -0.020318447148772227, + 0.02207171732019395, + 0.0, + -0.02638421253619467, + 0.01427842179111221, + 0.0, + -0.02959083910208167, + 0.004937837708422021, + 0.0, + -0.02959083910208167, + -0.004937837708422013, + 0.0, + -0.026384212536194673, + -0.014278421791112203, + 0.0, + -0.02031844714877223, + -0.022071717320193945, + 0.0, + -0.012050862739589096, + -0.027473199799651717, + 0.0, + -0.0024773803641699823, + -0.029897534790200093, + 0.0, + 0.007364564614223964, + -0.029082007978179912, + 0.0, + 0.016408444743672798, + -0.02511499434787586, + 0.0, + 0.0236742152818918, + -0.01842638138069004, + 0.0, + 0.028374517251019037, + -0.009740984076140512, + -2.0000000056086265e-07, + 0.019999999999999997, + 0.0, + -2.0000000056086265e-07, + 0.017709120513064197, + 0.009294463440875369, + -2.0000000056086265e-07, + 0.011361294934623116, + 0.016459677317873126, + -2.0000000056086265e-07, + 0.002410733605106464, + 0.019854177481961076, + -2.0000000056086265e-07, + -0.007092097740850708, + 0.018700324853708292, + -2.0000000056086265e-07, + -0.014970214963422015, + 0.013262453164815906, + -2.0000000056086265e-07, + -0.019418836348521037, + 0.004786313285751161, + -2.0000000056086265e-07, + -0.01941883634852104, + -0.004786313285751148, + -2.0000000056086265e-07, + -0.014970214963422023, + -0.013262453164815897, + -2.0000000056086265e-07, + -0.007092097740850717, + -0.018700324853708292, + -2.0000000056086265e-07, + 0.0024107336051064463, + -0.01985417748196108, + -2.0000000056086265e-07, + 0.011361294934623095, + -0.016459677317873136, + -2.0000000056086265e-07, + 0.01770912051306418, + -0.009294463440875398, + 7.0, + 0.03, + 0.0, + 7.0, + 0.028374517251019037, + 0.009740984076140503, + 7.0, + 0.023674215281891807, + 0.018426381380690034, + 7.0, + 0.01640844474367281, + 0.025114994347875855, + 7.0, + 0.007364564614223977, + 0.02908200797817991, + 7.0, + -0.002477380364169968, + 0.029897534790200093, + 7.0, + -0.012050862739589082, + 0.02747319979965172, + 7.0, + -0.020318447148772227, + 0.02207171732019395, + 7.0, + -0.02638421253619467, + 0.01427842179111221, + 7.0, + -0.02959083910208167, + 0.004937837708422021, + 7.0, + -0.02959083910208167, + -0.004937837708422013, + 7.0, + -0.026384212536194673, + -0.014278421791112203, + 7.0, + -0.02031844714877223, + -0.022071717320193945, + 7.0, + -0.012050862739589096, + -0.027473199799651717, + 7.0, + -0.0024773803641699823, + -0.029897534790200093, + 7.0, + 0.007364564614223964, + -0.029082007978179912, + 7.0, + 0.016408444743672798, + -0.02511499434787586, + 7.0, + 0.0236742152818918, + -0.01842638138069004, + 7.0, + 0.028374517251019037, + -0.009740984076140512, + 7.0, + 0.019999999999999997, + 0.0, + 7.0, + 0.017709120513064197, + -0.009294463440875369, + 7.0, + 0.011361294934623116, + -0.016459677317873126, + 7.0, + 0.002410733605106464, + -0.019854177481961076, + 7.0, + -0.007092097740850708, + -0.018700324853708292, + 7.0, + -0.014970214963422015, + -0.013262453164815906, + 7.0, + -0.019418836348521037, + -0.004786313285751161, + 7.0, + -0.01941883634852104, + 0.004786313285751148, + 7.0, + -0.014970214963422023, + 0.013262453164815897, + 7.0, + -0.007092097740850717, + 0.018700324853708292, + 7.0, + 0.0024107336051064463, + 0.01985417748196108, + 7.0, + 0.011361294934623095, + 0.016459677317873136, + 7.0, + 0.01770912051306418, + 0.009294463440875398, + -2.0000000056086265e-07, + 0.019999999999999997, + 0.0, + -2.0000000056086265e-07, + 0.017709120513064197, + 0.009294463440875369, + -2.0000000056086265e-07, + 0.011361294934623116, + 0.016459677317873126, + -2.0000000056086265e-07, + 0.002410733605106464, + 0.019854177481961076, + -2.0000000056086265e-07, + -0.007092097740850708, + 0.018700324853708292, + -2.0000000056086265e-07, + -0.014970214963422015, + 0.013262453164815906, + -2.0000000056086265e-07, + -0.019418836348521037, + 0.004786313285751161, + -2.0000000056086265e-07, + -0.01941883634852104, + -0.004786313285751148, + -2.0000000056086265e-07, + -0.014970214963422023, + -0.013262453164815897, + -2.0000000056086265e-07, + -0.007092097740850717, + -0.018700324853708292, + -2.0000000056086265e-07, + 0.0024107336051064463, + -0.01985417748196108, + -2.0000000056086265e-07, + 0.011361294934623095, + -0.016459677317873136, + -2.0000000056086265e-07, + 0.01770912051306418, + -0.009294463440875398, + -2.0000000056086265e-07, + 0.019999999999999997, + 0.0, + 7.0, + 0.019999999999999997, + 0.0, + 7.0, + 0.019999999999999997, + 0.0, + 7.0, + 0.017709120513064197, + -0.009294463440875369, + 7.0, + 0.011361294934623116, + -0.016459677317873126, + 7.0, + 0.002410733605106464, + -0.019854177481961076, + 7.0, + -0.007092097740850708, + -0.018700324853708292, + 7.0, + -0.014970214963422015, + -0.013262453164815906, + 7.0, + -0.019418836348521037, + -0.004786313285751161, + 7.0, + -0.01941883634852104, + 0.004786313285751148, + 7.0, + -0.014970214963422023, + 0.013262453164815897, + 7.0, + -0.007092097740850717, + 0.018700324853708292, + 7.0, + 0.0024107336051064463, + 0.01985417748196108, + 7.0, + 0.011361294934623095, + 0.016459677317873136, + 7.0, + 0.01770912051306418, + 0.009294463440875398 + ], + "indices": [ + 22, + 1, + 0, + 22, + 2, + 1, + 23, + 3, + 2, + 23, + 2, + 22, + 24, + 4, + 3, + 24, + 3, + 23, + 25, + 5, + 4, + 25, + 4, + 24, + 26, + 6, + 5, + 26, + 5, + 25, + 27, + 7, + 6, + 27, + 6, + 26, + 28, + 8, + 7, + 28, + 7, + 27, + 29, + 9, + 8, + 29, + 10, + 9, + 29, + 8, + 28, + 30, + 11, + 10, + 30, + 10, + 29, + 31, + 11, + 30, + 32, + 12, + 11, + 32, + 11, + 31, + 33, + 13, + 12, + 33, + 12, + 32, + 34, + 14, + 13, + 34, + 15, + 14, + 34, + 13, + 33, + 35, + 15, + 34, + 36, + 15, + 35, + 36, + 16, + 15, + 37, + 16, + 36, + 37, + 17, + 16, + 38, + 17, + 37, + 38, + 18, + 17, + 39, + 18, + 38, + 39, + 19, + 18, + 21, + 20, + 19, + 21, + 19, + 39, + 70, + 56, + 55, + 70, + 57, + 56, + 71, + 58, + 57, + 71, + 57, + 70, + 69, + 55, + 54, + 69, + 70, + 55, + 59, + 40, + 58, + 59, + 58, + 71, + 41, + 40, + 59, + 68, + 54, + 53, + 68, + 69, + 54, + 60, + 41, + 59, + 42, + 41, + 60, + 52, + 68, + 53, + 67, + 68, + 52, + 61, + 42, + 60, + 43, + 42, + 61, + 51, + 67, + 52, + 66, + 67, + 51, + 44, + 61, + 62, + 44, + 43, + 61, + 50, + 66, + 51, + 45, + 62, + 63, + 45, + 44, + 62, + 49, + 65, + 66, + 49, + 66, + 50, + 46, + 45, + 63, + 48, + 64, + 65, + 48, + 65, + 49, + 47, + 63, + 64, + 47, + 64, + 48, + 47, + 46, + 63, + 93, + 87, + 88, + 93, + 88, + 89, + 92, + 89, + 90, + 92, + 93, + 89, + 94, + 86, + 87, + 94, + 87, + 93, + 91, + 90, + 72, + 91, + 92, + 90, + 73, + 91, + 72, + 95, + 85, + 86, + 95, + 86, + 94, + 103, + 91, + 73, + 74, + 103, + 73, + 84, + 85, + 95, + 96, + 84, + 95, + 102, + 103, + 74, + 75, + 102, + 74, + 83, + 84, + 96, + 97, + 83, + 96, + 76, + 101, + 102, + 76, + 102, + 75, + 82, + 83, + 97, + 77, + 100, + 101, + 77, + 101, + 76, + 81, + 97, + 98, + 81, + 82, + 97, + 78, + 100, + 77, + 80, + 98, + 99, + 80, + 81, + 98, + 79, + 99, + 100, + 79, + 80, + 99, + 79, + 100, + 78, + 105, + 104, + 118, + 105, + 118, + 131, + 106, + 131, + 130, + 106, + 105, + 131, + 107, + 130, + 129, + 107, + 106, + 130, + 108, + 129, + 128, + 108, + 107, + 129, + 109, + 127, + 126, + 109, + 128, + 127, + 109, + 108, + 128, + 110, + 109, + 126, + 111, + 126, + 125, + 111, + 110, + 126, + 112, + 125, + 124, + 112, + 111, + 125, + 113, + 124, + 123, + 113, + 112, + 124, + 114, + 122, + 121, + 114, + 123, + 122, + 114, + 113, + 123, + 115, + 121, + 120, + 115, + 114, + 121, + 116, + 115, + 120, + 117, + 120, + 119, + 117, + 116, + 120 + ] + }, + { + "mesh_id": 1, + "coordinates": [ + 0.02, + 0.0, + 0.0, + 0.02, + 0.0, + 0.46, + 0.017709120513064197, + 0.00929446344087537, + 0.46, + 0.01136129493462312, + 0.016459677317873126, + 0.46, + 0.0024107336051064645, + 0.01985417748196108, + 0.46, + -0.007092097740850709, + 0.018700324853708296, + 0.46, + -0.014970214963422018, + 0.013262453164815908, + 0.46, + -0.019418836348521037, + 0.004786313285751162, + 0.46, + -0.019418836348521044, + -0.004786313285751149, + 0.46, + -0.014970214963422027, + -0.0132624531648159, + 0.46, + -0.007092097740850718, + -0.018700324853708296, + 0.46, + 0.0024107336051064467, + -0.019854177481961083, + 0.46, + 0.011361294934623097, + -0.01645967731787314, + 0.46, + 0.017709120513064183, + -0.0092944634408754, + 0.46, + 0.02, + 0.0, + 0.46, + 0.02, + 0.0, + 0.0, + 0.017709120513064197, + 0.00929446344087537, + 0.0, + 0.01136129493462312, + 0.016459677317873126, + 0.0, + 0.0024107336051064645, + 0.01985417748196108, + 0.0, + -0.007092097740850709, + 0.018700324853708296, + 0.0, + -0.014970214963422018, + 0.013262453164815908, + 0.0, + -0.019418836348521037, + 0.004786313285751162, + 0.0, + -0.019418836348521044, + -0.004786313285751149, + 0.0, + -0.014970214963422027, + -0.0132624531648159, + 0.0, + -0.007092097740850718, + -0.018700324853708296, + 0.0, + 0.0024107336051064467, + -0.019854177481961083, + 0.0, + 0.011361294934623097, + -0.01645967731787314, + 0.0, + 0.017709120513064183, + -0.0092944634408754, + 0.0, + 0.02, + 0.0, + 0.0, + 0.017709120513064197, + 0.00929446344087537, + 0.0, + 0.01136129493462312, + 0.016459677317873126, + 0.0, + 0.0024107336051064645, + 0.01985417748196108, + 0.0, + -0.007092097740850709, + 0.018700324853708296, + 0.0, + -0.014970214963422018, + 0.013262453164815908, + 0.0, + -0.019418836348521037, + 0.004786313285751162, + 0.0, + -0.019418836348521044, + -0.004786313285751149, + 0.0, + -0.014970214963422027, + -0.0132624531648159, + 0.0, + -0.007092097740850718, + -0.018700324853708296, + 0.0, + 0.0024107336051064467, + -0.019854177481961083, + 0.0, + 0.011361294934623097, + -0.01645967731787314, + 0.0, + 0.017709120513064183, + -0.0092944634408754, + 0.0, + 0.015, + -1.0881504185787883e-32, + -2.0000000006126228e-07, + 0.012135254915624212, + 0.008816778784387096, + -2.0000000006126228e-07, + 0.004635254915624212, + 0.014265847744427303, + -2.0000000006126228e-07, + -0.00463525491562421, + 0.014265847744427304, + -2.0000000006126228e-07, + -0.01213525491562421, + 0.008816778784387098, + -2.0000000006126228e-07, + -0.015, + 1.836970198721019e-18, + -2.0000000006126228e-07, + -0.012135254915624212, + -0.008816778784387094, + -2.0000000006126228e-07, + -0.004635254915624213, + -0.014265847744427303, + -2.0000000006126228e-07, + 0.0046352549156242085, + -0.014265847744427304, + -2.0000000006126228e-07, + 0.01213525491562421, + -0.0088167787843871, + -2.0000000006126228e-07, + 0.02, + 0.0, + 0.46, + 0.017709120513064197, + 0.00929446344087537, + 0.46, + 0.01136129493462312, + 0.016459677317873126, + 0.46, + 0.0024107336051064645, + 0.01985417748196108, + 0.46, + -0.007092097740850709, + 0.018700324853708296, + 0.46, + -0.014970214963422018, + 0.013262453164815908, + 0.46, + -0.019418836348521037, + 0.004786313285751162, + 0.46, + -0.019418836348521044, + -0.004786313285751149, + 0.46, + -0.014970214963422027, + -0.0132624531648159, + 0.46, + -0.007092097740850718, + -0.018700324853708296, + 0.46, + 0.0024107336051064467, + -0.019854177481961083, + 0.46, + 0.011361294934623097, + -0.01645967731787314, + 0.46, + 0.017709120513064183, + -0.0092944634408754, + 0.46, + 0.015, + 1.6130123948908375e-36, + 0.46, + 0.012135254915624212, + -0.008816778784387096, + 0.46, + 0.004635254915624212, + -0.014265847744427303, + 0.46, + -0.00463525491562421, + -0.014265847744427304, + 0.46, + -0.01213525491562421, + -0.008816778784387098, + 0.46, + -0.015, + -1.8369701987210404e-18, + 0.46, + -0.012135254915624212, + 0.008816778784387094, + 0.46, + -0.004635254915624213, + 0.014265847744427303, + 0.46, + 0.0046352549156242085, + 0.014265847744427304, + 0.46, + 0.01213525491562421, + 0.0088167787843871, + 0.46, + 0.015, + -1.0881504185787883e-32, + -2.0000000006126228e-07, + 0.012135254915624212, + 0.008816778784387096, + -2.0000000006126228e-07, + 0.004635254915624212, + 0.014265847744427303, + -2.0000000006126228e-07, + -0.00463525491562421, + 0.014265847744427304, + -2.0000000006126228e-07, + -0.01213525491562421, + 0.008816778784387098, + -2.0000000006126228e-07, + -0.015, + 1.836970198721019e-18, + -2.0000000006126228e-07, + -0.012135254915624212, + -0.008816778784387094, + -2.0000000006126228e-07, + -0.004635254915624213, + -0.014265847744427303, + -2.0000000006126228e-07, + 0.0046352549156242085, + -0.014265847744427304, + -2.0000000006126228e-07, + 0.01213525491562421, + -0.0088167787843871, + -2.0000000006126228e-07, + 0.015, + -1.0881504185787883e-32, + -2.0000000006126228e-07, + 0.015, + 1.6130123948908375e-36, + 0.46, + 0.015, + 1.6130123948908375e-36, + 0.46, + 0.012135254915624212, + -0.008816778784387096, + 0.46, + 0.004635254915624212, + -0.014265847744427303, + 0.46, + -0.00463525491562421, + -0.014265847744427304, + 0.46, + -0.01213525491562421, + -0.008816778784387098, + 0.46, + -0.015, + -1.8369701987210404e-18, + 0.46, + -0.012135254915624212, + 0.008816778784387094, + 0.46, + -0.004635254915624213, + 0.014265847744427303, + 0.46, + 0.0046352549156242085, + 0.014265847744427304, + 0.46, + 0.01213525491562421, + 0.0088167787843871, + 0.46 + ], + "indices": [ + 16, + 1, + 0, + 16, + 2, + 1, + 17, + 3, + 2, + 17, + 2, + 16, + 18, + 4, + 3, + 18, + 3, + 17, + 19, + 5, + 4, + 19, + 4, + 18, + 20, + 6, + 5, + 20, + 5, + 19, + 21, + 7, + 6, + 21, + 6, + 20, + 22, + 8, + 7, + 22, + 7, + 21, + 23, + 9, + 8, + 23, + 8, + 22, + 24, + 10, + 9, + 24, + 9, + 23, + 25, + 11, + 10, + 25, + 10, + 24, + 26, + 12, + 11, + 26, + 11, + 25, + 27, + 13, + 12, + 27, + 12, + 26, + 15, + 14, + 13, + 15, + 13, + 27, + 47, + 36, + 35, + 48, + 37, + 36, + 48, + 36, + 47, + 38, + 37, + 48, + 46, + 47, + 35, + 34, + 46, + 35, + 49, + 38, + 48, + 39, + 38, + 49, + 45, + 46, + 34, + 33, + 45, + 34, + 50, + 39, + 49, + 40, + 39, + 50, + 44, + 45, + 33, + 32, + 44, + 33, + 41, + 40, + 50, + 28, + 40, + 41, + 31, + 43, + 44, + 31, + 44, + 32, + 29, + 41, + 42, + 29, + 28, + 41, + 30, + 42, + 43, + 30, + 29, + 42, + 30, + 43, + 31, + 68, + 58, + 59, + 67, + 59, + 60, + 67, + 68, + 59, + 61, + 67, + 60, + 69, + 58, + 68, + 57, + 58, + 69, + 66, + 67, + 61, + 62, + 66, + 61, + 70, + 57, + 69, + 56, + 57, + 70, + 65, + 66, + 62, + 63, + 65, + 62, + 71, + 56, + 70, + 55, + 56, + 71, + 64, + 65, + 63, + 51, + 64, + 63, + 54, + 71, + 72, + 54, + 55, + 71, + 52, + 73, + 64, + 52, + 64, + 51, + 53, + 72, + 73, + 53, + 54, + 72, + 53, + 73, + 52, + 75, + 74, + 85, + 75, + 85, + 95, + 76, + 95, + 94, + 76, + 75, + 95, + 77, + 94, + 93, + 77, + 76, + 94, + 78, + 92, + 91, + 78, + 93, + 92, + 78, + 77, + 93, + 79, + 78, + 91, + 80, + 90, + 89, + 80, + 91, + 90, + 80, + 79, + 91, + 81, + 80, + 89, + 82, + 88, + 87, + 82, + 89, + 88, + 82, + 81, + 89, + 83, + 82, + 87, + 84, + 87, + 86, + 84, + 83, + 87 + ] + }, + { + "mesh_id": 2, + "coordinates": [ + 0.02, + 0.0, + 0.0, + 0.02, + -0.46, + 0.0, + 0.017709120513064197, + -0.46, + 0.00929446344087537, + 0.01136129493462312, + -0.46, + 0.016459677317873126, + 0.0024107336051064645, + -0.46, + 0.01985417748196108, + -0.007092097740850709, + -0.46, + 0.018700324853708296, + -0.014970214963422018, + -0.46, + 0.013262453164815908, + -0.019418836348521037, + -0.46, + 0.004786313285751162, + -0.019418836348521044, + -0.46, + -0.004786313285751149, + -0.014970214963422027, + -0.46, + -0.0132624531648159, + -0.007092097740850718, + -0.46, + -0.018700324853708296, + 0.0024107336051064467, + -0.46, + -0.019854177481961083, + 0.011361294934623097, + -0.46, + -0.01645967731787314, + 0.017709120513064183, + -0.46, + -0.0092944634408754, + 0.02, + -0.46, + 0.0, + 0.02, + 0.0, + 0.0, + 0.017709120513064197, + 0.0, + 0.00929446344087537, + 0.01136129493462312, + 0.0, + 0.016459677317873126, + 0.0024107336051064645, + 0.0, + 0.01985417748196108, + -0.007092097740850709, + 0.0, + 0.018700324853708296, + -0.014970214963422018, + 0.0, + 0.013262453164815908, + -0.019418836348521037, + 0.0, + 0.004786313285751162, + -0.019418836348521044, + 0.0, + -0.004786313285751149, + -0.014970214963422027, + 0.0, + -0.0132624531648159, + -0.007092097740850718, + 0.0, + -0.018700324853708296, + 0.0024107336051064467, + 0.0, + -0.019854177481961083, + 0.011361294934623097, + 0.0, + -0.01645967731787314, + 0.017709120513064183, + 0.0, + -0.0092944634408754, + 0.02, + 0.0, + 0.0, + 0.017709120513064197, + 0.0, + 0.00929446344087537, + 0.01136129493462312, + 0.0, + 0.016459677317873126, + 0.0024107336051064645, + 0.0, + 0.01985417748196108, + -0.007092097740850709, + 0.0, + 0.018700324853708296, + -0.014970214963422018, + 0.0, + 0.013262453164815908, + -0.019418836348521037, + 0.0, + 0.004786313285751162, + -0.019418836348521044, + 0.0, + -0.004786313285751149, + -0.014970214963422027, + 0.0, + -0.0132624531648159, + -0.007092097740850718, + 0.0, + -0.018700324853708296, + 0.0024107336051064467, + 0.0, + -0.019854177481961083, + 0.011361294934623097, + 0.0, + -0.01645967731787314, + 0.017709120513064183, + 0.0, + -0.0092944634408754, + -0.015, + 0.0, + 0.0, + -0.012135254915624212, + 0.0, + -0.008816778784387096, + -0.004635254915624212, + 0.0, + -0.014265847744427303, + 0.00463525491562421, + 0.0, + -0.014265847744427304, + 0.01213525491562421, + 0.0, + -0.008816778784387098, + 0.015, + 0.0, + -1.8369701987210296e-18, + 0.012135254915624212, + 0.0, + 0.008816778784387094, + 0.004635254915624213, + 0.0, + 0.014265847744427303, + -0.0046352549156242085, + 0.0, + 0.014265847744427304, + -0.01213525491562421, + 0.0, + 0.0088167787843871, + 0.02, + -0.46, + 0.0, + 0.017709120513064197, + -0.46, + 0.00929446344087537, + 0.01136129493462312, + -0.46, + 0.016459677317873126, + 0.0024107336051064645, + -0.46, + 0.01985417748196108, + -0.007092097740850709, + -0.46, + 0.018700324853708296, + -0.014970214963422018, + -0.46, + 0.013262453164815908, + -0.019418836348521037, + -0.46, + 0.004786313285751162, + -0.019418836348521044, + -0.46, + -0.004786313285751149, + -0.014970214963422027, + -0.46, + -0.0132624531648159, + -0.007092097740850718, + -0.46, + -0.018700324853708296, + 0.0024107336051064467, + -0.46, + -0.019854177481961083, + 0.011361294934623097, + -0.46, + -0.01645967731787314, + 0.017709120513064183, + -0.46, + -0.0092944634408754, + -0.015, + -0.4600002, + 0.0, + -0.012135254915624212, + -0.4600002, + 0.008816778784387096, + -0.004635254915624212, + -0.4600002, + 0.014265847744427303, + 0.00463525491562421, + -0.4600002, + 0.014265847744427304, + 0.01213525491562421, + -0.4600002, + 0.008816778784387098, + 0.015, + -0.4600002, + 1.8369701987210296e-18, + 0.012135254915624212, + -0.4600002, + -0.008816778784387094, + 0.004635254915624213, + -0.4600002, + -0.014265847744427303, + -0.0046352549156242085, + -0.4600002, + -0.014265847744427304, + -0.01213525491562421, + -0.4600002, + -0.0088167787843871, + -0.015, + -0.4600002, + 0.0, + -0.012135254915624212, + -0.4600002, + 0.008816778784387096, + -0.004635254915624212, + -0.4600002, + 0.014265847744427303, + 0.00463525491562421, + -0.4600002, + 0.014265847744427304, + 0.01213525491562421, + -0.4600002, + 0.008816778784387098, + 0.015, + -0.4600002, + 1.8369701987210296e-18, + 0.012135254915624212, + -0.4600002, + -0.008816778784387094, + 0.004635254915624213, + -0.4600002, + -0.014265847744427303, + -0.0046352549156242085, + -0.4600002, + -0.014265847744427304, + -0.01213525491562421, + -0.4600002, + -0.0088167787843871, + -0.015, + -0.4600002, + 0.0, + -0.015, + 0.0, + 0.0, + -0.015, + 0.0, + 0.0, + -0.012135254915624212, + 0.0, + -0.008816778784387096, + -0.004635254915624212, + 0.0, + -0.014265847744427303, + 0.00463525491562421, + 0.0, + -0.014265847744427304, + 0.01213525491562421, + 0.0, + -0.008816778784387098, + 0.015, + 0.0, + -1.8369701987210296e-18, + 0.012135254915624212, + 0.0, + 0.008816778784387094, + 0.004635254915624213, + 0.0, + 0.014265847744427303, + -0.0046352549156242085, + 0.0, + 0.014265847744427304, + -0.01213525491562421, + 0.0, + 0.0088167787843871 + ], + "indices": [ + 16, + 1, + 0, + 16, + 2, + 1, + 17, + 3, + 2, + 17, + 2, + 16, + 18, + 4, + 3, + 18, + 3, + 17, + 19, + 5, + 4, + 19, + 4, + 18, + 20, + 6, + 5, + 20, + 5, + 19, + 21, + 7, + 6, + 21, + 6, + 20, + 22, + 8, + 7, + 22, + 7, + 21, + 23, + 9, + 8, + 23, + 8, + 22, + 24, + 10, + 9, + 24, + 9, + 23, + 25, + 11, + 10, + 25, + 10, + 24, + 26, + 12, + 11, + 26, + 11, + 25, + 27, + 13, + 12, + 27, + 12, + 26, + 15, + 14, + 13, + 15, + 13, + 27, + 50, + 34, + 33, + 49, + 33, + 32, + 49, + 50, + 33, + 31, + 49, + 32, + 41, + 34, + 50, + 35, + 34, + 41, + 48, + 49, + 31, + 30, + 48, + 31, + 42, + 35, + 41, + 36, + 35, + 42, + 47, + 48, + 30, + 29, + 47, + 30, + 43, + 36, + 42, + 37, + 36, + 43, + 46, + 47, + 29, + 28, + 46, + 29, + 38, + 43, + 44, + 38, + 37, + 43, + 40, + 45, + 46, + 40, + 46, + 28, + 39, + 44, + 45, + 39, + 38, + 44, + 39, + 45, + 40, + 65, + 56, + 57, + 66, + 55, + 56, + 66, + 56, + 65, + 54, + 55, + 66, + 64, + 65, + 57, + 58, + 64, + 57, + 67, + 54, + 66, + 53, + 54, + 67, + 73, + 64, + 58, + 59, + 73, + 58, + 68, + 53, + 67, + 52, + 53, + 68, + 72, + 73, + 59, + 60, + 72, + 59, + 69, + 52, + 68, + 51, + 52, + 69, + 61, + 71, + 72, + 61, + 72, + 60, + 63, + 69, + 70, + 63, + 51, + 69, + 62, + 70, + 71, + 62, + 63, + 70, + 62, + 71, + 61, + 75, + 74, + 85, + 75, + 85, + 95, + 76, + 95, + 94, + 76, + 75, + 95, + 77, + 94, + 93, + 77, + 76, + 94, + 78, + 93, + 92, + 78, + 77, + 93, + 79, + 92, + 91, + 79, + 78, + 92, + 80, + 90, + 89, + 80, + 91, + 90, + 80, + 79, + 91, + 81, + 80, + 89, + 82, + 89, + 88, + 82, + 81, + 89, + 83, + 87, + 86, + 83, + 88, + 87, + 83, + 82, + 88, + 84, + 83, + 86 + ] + }, + { + "mesh_id": 3, + "coordinates": [ + 0.0, + 0.015, + 0.0, + 0.707105, + 0.015, + 0.0, + 0.707105, + 0.012135254915624212, + 0.008816778784387096, + 0.707105, + 0.004635254915624212, + 0.014265847744427303, + 0.707105, + -0.00463525491562421, + 0.014265847744427304, + 0.707105, + -0.01213525491562421, + 0.008816778784387098, + 0.707105, + -0.015, + 1.8369701987210296e-18, + 0.707105, + -0.012135254915624212, + -0.008816778784387094, + 0.707105, + -0.004635254915624213, + -0.014265847744427303, + 0.707105, + 0.0046352549156242085, + -0.014265847744427304, + 0.707105, + 0.01213525491562421, + -0.0088167787843871, + 0.707105, + 0.015, + 0.0, + 0.0, + 0.015, + 0.0, + 0.0, + 0.012135254915624212, + 0.008816778784387096, + 0.0, + 0.004635254915624212, + 0.014265847744427303, + 0.0, + -0.00463525491562421, + 0.014265847744427304, + 0.0, + -0.01213525491562421, + 0.008816778784387098, + 0.0, + -0.015, + 1.8369701987210296e-18, + 0.0, + -0.012135254915624212, + -0.008816778784387094, + 0.0, + -0.004635254915624213, + -0.014265847744427303, + 0.0, + 0.0046352549156242085, + -0.014265847744427304, + 0.0, + 0.01213525491562421, + -0.0088167787843871, + 0.0, + 0.015, + 0.0, + 0.0, + 0.012135254915624212, + 0.008816778784387096, + 0.0, + 0.004635254915624212, + 0.014265847744427303, + 0.0, + -0.00463525491562421, + 0.014265847744427304, + 0.0, + -0.01213525491562421, + 0.008816778784387098, + 0.0, + -0.015, + 1.8369701987210296e-18, + 0.0, + -0.012135254915624212, + -0.008816778784387094, + 0.0, + -0.004635254915624213, + -0.014265847744427303, + 0.0, + 0.0046352549156242085, + -0.014265847744427304, + 0.0, + 0.01213525491562421, + -0.0088167787843871, + -1.9999999989472883e-07, + 0.009999999999999998, + 0.0, + -1.9999999989472883e-07, + 0.006234898018587335, + 0.007818314824680296, + -1.9999999989472883e-07, + -0.002225209339563143, + 0.009749279121818234, + -1.9999999989472883e-07, + -0.00900968867902419, + 0.004338837391175581, + -1.9999999989472883e-07, + -0.00900968867902419, + -0.00433883739117558, + -1.9999999989472883e-07, + -0.0022252093395631455, + -0.009749279121818234, + -1.9999999989472883e-07, + 0.006234898018587333, + -0.007818314824680298, + 0.707105, + 0.015, + 0.0, + 0.707105, + 0.012135254915624212, + 0.008816778784387096, + 0.707105, + 0.004635254915624212, + 0.014265847744427303, + 0.707105, + -0.00463525491562421, + 0.014265847744427304, + 0.707105, + -0.01213525491562421, + 0.008816778784387098, + 0.707105, + -0.015, + 1.8369701987210296e-18, + 0.707105, + -0.012135254915624212, + -0.008816778784387094, + 0.707105, + -0.004635254915624213, + -0.014265847744427303, + 0.707105, + 0.0046352549156242085, + -0.014265847744427304, + 0.707105, + 0.01213525491562421, + -0.0088167787843871, + 0.707105, + 0.009999999999999998, + 0.0, + 0.707105, + 0.006234898018587335, + -0.007818314824680296, + 0.707105, + -0.002225209339563143, + -0.009749279121818234, + 0.707105, + -0.00900968867902419, + -0.004338837391175581, + 0.707105, + -0.00900968867902419, + 0.00433883739117558, + 0.707105, + -0.0022252093395631455, + 0.009749279121818234, + 0.707105, + 0.006234898018587333, + 0.007818314824680298, + -1.9999999989472883e-07, + 0.009999999999999998, + 0.0, + -1.9999999989472883e-07, + 0.006234898018587335, + 0.007818314824680296, + -1.9999999989472883e-07, + -0.002225209339563143, + 0.009749279121818234, + -1.9999999989472883e-07, + -0.00900968867902419, + 0.004338837391175581, + -1.9999999989472883e-07, + -0.00900968867902419, + -0.00433883739117558, + -1.9999999989472883e-07, + -0.0022252093395631455, + -0.009749279121818234, + -1.9999999989472883e-07, + 0.006234898018587333, + -0.007818314824680298, + -1.9999999989472883e-07, + 0.009999999999999998, + 0.0, + 0.707105, + 0.009999999999999998, + 0.0, + 0.707105, + 0.009999999999999998, + 0.0, + 0.707105, + 0.006234898018587335, + -0.007818314824680296, + 0.707105, + -0.002225209339563143, + -0.009749279121818234, + 0.707105, + -0.00900968867902419, + -0.004338837391175581, + 0.707105, + -0.00900968867902419, + 0.00433883739117558, + 0.707105, + -0.0022252093395631455, + 0.009749279121818234, + 0.707105, + 0.006234898018587333, + 0.007818314824680298 + ], + "indices": [ + 13, + 1, + 0, + 13, + 2, + 1, + 14, + 3, + 2, + 14, + 2, + 13, + 15, + 4, + 3, + 15, + 3, + 14, + 16, + 5, + 4, + 16, + 4, + 15, + 17, + 6, + 5, + 17, + 7, + 6, + 17, + 5, + 16, + 18, + 7, + 17, + 19, + 8, + 7, + 19, + 7, + 18, + 20, + 9, + 8, + 20, + 8, + 19, + 21, + 10, + 9, + 21, + 9, + 20, + 12, + 11, + 10, + 12, + 10, + 21, + 38, + 31, + 30, + 32, + 22, + 31, + 32, + 31, + 38, + 37, + 30, + 29, + 37, + 38, + 30, + 23, + 22, + 32, + 33, + 23, + 32, + 28, + 37, + 29, + 36, + 37, + 28, + 24, + 23, + 33, + 34, + 24, + 33, + 27, + 35, + 36, + 27, + 36, + 28, + 25, + 24, + 34, + 26, + 34, + 35, + 26, + 25, + 34, + 26, + 35, + 27, + 50, + 47, + 48, + 49, + 48, + 39, + 49, + 50, + 48, + 51, + 46, + 47, + 51, + 47, + 50, + 40, + 49, + 39, + 55, + 49, + 40, + 45, + 46, + 51, + 52, + 45, + 51, + 41, + 55, + 40, + 54, + 55, + 41, + 44, + 52, + 53, + 44, + 45, + 52, + 42, + 54, + 41, + 43, + 53, + 54, + 43, + 54, + 42, + 43, + 44, + 53, + 57, + 56, + 64, + 57, + 64, + 71, + 58, + 71, + 70, + 58, + 57, + 71, + 59, + 70, + 69, + 59, + 58, + 70, + 60, + 69, + 68, + 60, + 59, + 69, + 61, + 68, + 67, + 61, + 60, + 68, + 62, + 66, + 65, + 62, + 67, + 66, + 62, + 61, + 67, + 63, + 62, + 65 + ] + }, + { + "mesh_id": 4, + "coordinates": [ + 0.015, + 0.0, + 0.0, + 0.015, + -0.707105, + 0.0, + 0.012135254915624212, + -0.707105, + 0.008816778784387096, + 0.004635254915624212, + -0.707105, + 0.014265847744427303, + -0.00463525491562421, + -0.707105, + 0.014265847744427304, + -0.01213525491562421, + -0.707105, + 0.008816778784387098, + -0.015, + -0.707105, + 1.8369701987210296e-18, + -0.012135254915624212, + -0.707105, + -0.008816778784387094, + -0.004635254915624213, + -0.707105, + -0.014265847744427303, + 0.0046352549156242085, + -0.707105, + -0.014265847744427304, + 0.01213525491562421, + -0.707105, + -0.0088167787843871, + 0.015, + -0.707105, + 0.0, + 0.015, + 0.0, + 0.0, + 0.012135254915624212, + 0.0, + 0.008816778784387096, + 0.004635254915624212, + 0.0, + 0.014265847744427303, + -0.00463525491562421, + 0.0, + 0.014265847744427304, + -0.01213525491562421, + 0.0, + 0.008816778784387098, + -0.015, + 0.0, + 1.8369701987210296e-18, + -0.012135254915624212, + 0.0, + -0.008816778784387094, + -0.004635254915624213, + 0.0, + -0.014265847744427303, + 0.0046352549156242085, + 0.0, + -0.014265847744427304, + 0.01213525491562421, + 0.0, + -0.0088167787843871, + 0.015, + 0.0, + 0.0, + 0.012135254915624212, + 0.0, + 0.008816778784387096, + 0.004635254915624212, + 0.0, + 0.014265847744427303, + -0.00463525491562421, + 0.0, + 0.014265847744427304, + -0.01213525491562421, + 0.0, + 0.008816778784387098, + -0.015, + 0.0, + 1.8369701987210296e-18, + -0.012135254915624212, + 0.0, + -0.008816778784387094, + -0.004635254915624213, + 0.0, + -0.014265847744427303, + 0.0046352549156242085, + 0.0, + -0.014265847744427304, + 0.01213525491562421, + 0.0, + -0.0088167787843871, + -0.009999999999999998, + 0.0, + 0.0, + -0.006234898018587335, + 0.0, + -0.007818314824680296, + 0.002225209339563143, + 0.0, + -0.009749279121818234, + 0.00900968867902419, + 0.0, + -0.004338837391175581, + 0.00900968867902419, + 0.0, + 0.00433883739117558, + 0.0022252093395631455, + 0.0, + 0.009749279121818234, + -0.006234898018587333, + 0.0, + 0.007818314824680298, + 0.015, + -0.707105, + 0.0, + 0.012135254915624212, + -0.707105, + 0.008816778784387096, + 0.004635254915624212, + -0.707105, + 0.014265847744427303, + -0.00463525491562421, + -0.707105, + 0.014265847744427304, + -0.01213525491562421, + -0.707105, + 0.008816778784387098, + -0.015, + -0.707105, + 1.8369701987210296e-18, + -0.012135254915624212, + -0.707105, + -0.008816778784387094, + -0.004635254915624213, + -0.707105, + -0.014265847744427303, + 0.0046352549156242085, + -0.707105, + -0.014265847744427304, + 0.01213525491562421, + -0.707105, + -0.0088167787843871, + -0.009999999999999998, + -0.7071051999999999, + 0.0, + -0.006234898018587335, + -0.7071051999999999, + 0.007818314824680296, + 0.002225209339563143, + -0.7071051999999999, + 0.009749279121818234, + 0.00900968867902419, + -0.7071051999999999, + 0.004338837391175581, + 0.00900968867902419, + -0.7071051999999999, + -0.00433883739117558, + 0.0022252093395631455, + -0.7071051999999999, + -0.009749279121818234, + -0.006234898018587333, + -0.7071051999999999, + -0.007818314824680298, + -0.009999999999999998, + -0.7071051999999999, + 0.0, + -0.006234898018587335, + -0.7071051999999999, + 0.007818314824680296, + 0.002225209339563143, + -0.7071051999999999, + 0.009749279121818234, + 0.00900968867902419, + -0.7071051999999999, + 0.004338837391175581, + 0.00900968867902419, + -0.7071051999999999, + -0.00433883739117558, + 0.0022252093395631455, + -0.7071051999999999, + -0.009749279121818234, + -0.006234898018587333, + -0.7071051999999999, + -0.007818314824680298, + -0.009999999999999998, + -0.7071051999999999, + 0.0, + -0.009999999999999998, + 0.0, + 0.0, + -0.009999999999999998, + 0.0, + 0.0, + -0.006234898018587335, + 0.0, + -0.007818314824680296, + 0.002225209339563143, + 0.0, + -0.009749279121818234, + 0.00900968867902419, + 0.0, + -0.004338837391175581, + 0.00900968867902419, + 0.0, + 0.00433883739117558, + 0.0022252093395631455, + 0.0, + 0.009749279121818234, + -0.006234898018587333, + 0.0, + 0.007818314824680298 + ], + "indices": [ + 13, + 1, + 0, + 13, + 2, + 1, + 14, + 3, + 2, + 14, + 2, + 13, + 15, + 4, + 3, + 15, + 3, + 14, + 16, + 5, + 4, + 16, + 4, + 15, + 17, + 6, + 5, + 17, + 7, + 6, + 17, + 5, + 16, + 18, + 7, + 17, + 19, + 8, + 7, + 19, + 7, + 18, + 20, + 9, + 8, + 20, + 8, + 19, + 21, + 10, + 9, + 21, + 9, + 20, + 12, + 11, + 10, + 12, + 10, + 21, + 38, + 26, + 25, + 32, + 27, + 26, + 32, + 26, + 38, + 37, + 25, + 24, + 37, + 38, + 25, + 28, + 27, + 32, + 33, + 28, + 32, + 23, + 37, + 24, + 36, + 37, + 23, + 29, + 28, + 33, + 34, + 29, + 33, + 22, + 35, + 36, + 22, + 36, + 23, + 30, + 29, + 34, + 31, + 34, + 35, + 31, + 30, + 34, + 31, + 35, + 22, + 50, + 42, + 43, + 49, + 43, + 44, + 49, + 50, + 43, + 51, + 41, + 42, + 51, + 42, + 50, + 45, + 49, + 44, + 55, + 49, + 45, + 40, + 41, + 51, + 52, + 40, + 51, + 46, + 55, + 45, + 54, + 55, + 46, + 39, + 52, + 53, + 39, + 40, + 52, + 47, + 54, + 46, + 48, + 53, + 54, + 48, + 54, + 47, + 48, + 39, + 53, + 57, + 56, + 64, + 57, + 64, + 71, + 58, + 71, + 70, + 58, + 57, + 71, + 59, + 70, + 69, + 59, + 58, + 70, + 60, + 69, + 68, + 60, + 59, + 69, + 61, + 68, + 67, + 61, + 60, + 68, + 62, + 66, + 65, + 62, + 67, + 66, + 62, + 61, + 67, + 63, + 62, + 65 + ] + } + ], + "elements": [ + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 0, + "b": 255, + "a": 255 + }, + "guid": "75b120d2-70f2-47a3-a1b9-38e2a1a615f7", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1 + }, + "vector": { + "x": 0, + "y": 0.25, + "z": 0.25 + }, + "type": "Top Chord", + "mesh_id": 0 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 0, + "b": 255, + "a": 255 + }, + "guid": "ef2ee984-8f6f-41cd-906e-098714722163", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1 + }, + "vector": { + "x": 0, + "y": -0.25, + "z": 0.25 + }, + "type": "Top Chord", + "mesh_id": 0 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 0, + "b": 255, + "a": 255 + }, + "guid": "06e499cc-4ae1-488b-a44a-cae973f61eba", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1 + }, + "vector": { + "x": 0, + "y": 0.25, + "z": -0.25 + }, + "type": "Bottom Chord", + "mesh_id": 0 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 0, + "b": 255, + "a": 255 + }, + "guid": "fd8022b5-8787-4c3d-8db0-f887523fe53f", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1 + }, + "vector": { + "x": 0, + "y": -0.25, + "z": -0.25 + }, + "type": "Bottom Chord", + "mesh_id": 0 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 255, + "b": 0, + "a": 255 + }, + "guid": "d1de0cbc-eac3-44bb-b3eb-daea73f1f850", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1 + }, + "vector": { + "x": 0.25, + "y": 0.25, + "z": -0.23 + }, + "type": "Post", + "mesh_id": 1 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 255, + "b": 0, + "a": 255 + }, + "guid": "54b21aad-111b-42ff-827c-955c1e0761b0", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1 + }, + "vector": { + "x": 0.25, + "y": -0.25, + "z": -0.23 + }, + "type": "Post", + "mesh_id": 1 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 255, + "b": 0, + "a": 255 + }, + "guid": "5bf32691-8c11-4aaa-9a5f-9a3afcc988a3", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1 + }, + "vector": { + "x": 6.75, + "y": 0.25, + "z": -0.23 + }, + "type": "Post", + "mesh_id": 1 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 255, + "b": 0, + "a": 255 + }, + "guid": "20199a51-3bf6-4462-8b84-8a102db4a86b", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1 + }, + "vector": { + "x": 6.75, + "y": -0.25, + "z": -0.23 + }, + "type": "Post", + "mesh_id": 1 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 222, + "g": 49, + "b": 99, + "a": 255 + }, + "guid": "81d1a84d-19d5-4958-9e56-c679edac1c41", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1 + }, + "vector": { + "x": 0.25, + "y": 0.23, + "z": 0.25 + }, + "type": "Girder", + "mesh_id": 2 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 222, + "g": 49, + "b": 99, + "a": 255 + }, + "guid": "629330e9-6a85-4ae5-9c46-ad9db1e9b28d", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1 + }, + "vector": { + "x": 0.25, + "y": 0.23, + "z": -0.25 + }, + "type": "Girder", + "mesh_id": 2 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 222, + "g": 49, + "b": 99, + "a": 255 + }, + "guid": "d7c1ebd7-c0ed-4a50-a661-8dce2090382d", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1 + }, + "vector": { + "x": 6.75, + "y": 0.23, + "z": 0.25 + }, + "type": "Girder", + "mesh_id": 2 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 222, + "g": 49, + "b": 99, + "a": 255 + }, + "guid": "31ebad70-6ed5-43b3-8753-e6b0b95dcf2a", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1 + }, + "vector": { + "x": 6.75, + "y": 0.23, + "z": -0.25 + }, + "type": "Girder", + "mesh_id": 2 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "044e5ac6-3218-42ea-9c77-dc0985ca3c0a", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 0.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "2097c966-af36-4af1-807e-826839fcaa22", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 0.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "903c34d0-5625-4cf1-aadb-e4cbefe24f67", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 0.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "f4b7e42d-cc54-49eb-bb60-0ebc0cc365f2", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 0.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "fc2b28f7-fe01-484e-8979-5dba9c3bbcba", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 0.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "549c5274-fa42-48a1-a7dd-7675abecfd54", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 0.75, + "y": -0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "7b2953bd-bae7-4758-9df7-9f449e32ebca", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 0.75, + "y": -0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "13f462ba-f395-4a21-b87d-16cd645aa0b4", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 0.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "23f7dae5-c38f-47ef-b95f-c3fea7d8a07c", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 1.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "9e9d9b1a-635e-43fb-991d-4969e1a2e873", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 1.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "3204004f-d00d-4746-9b30-ef4484c7efbd", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 1.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "236b4b32-29e4-4d3a-881b-4ca71c3eea53", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 1.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "2a4ce871-5a8e-4397-911c-9de416083f07", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 1.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "df0918d7-a463-4ff4-9b7e-85d41f6bacea", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 1.75, + "y": -0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "d49b7780-fc5c-49dd-844a-718ff90a2ca2", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 1.75, + "y": -0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "0ef52cda-b017-44f6-b8cc-f9fe9b46bb94", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 1.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "f6f6ccf0-9a14-43fb-b450-479ab0e7231b", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 2.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "88834e1e-078e-4dbc-bcfb-16ab99578b9f", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 2.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "c9263f7a-40b6-4907-b0a4-4745635cc3b0", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 2.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "35e0a538-ee1e-4795-9dd1-01d8eebeb1e6", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 2.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "f0f3e0b9-69b9-4e78-9d3b-8764a6b6d0c5", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 2.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "57e98081-9218-4303-b34b-2549decb5624", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 2.75, + "y": -0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "a6ebb802-7253-4b07-a495-eca404b59de1", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 2.75, + "y": -0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "98781645-8289-43e6-9f87-c0915da17d28", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 2.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "48a1991e-9da0-4915-81bb-9341af96f32d", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 3.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "e04f4d41-f141-44b8-bdba-c691338e79e8", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 3.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "ac98cba5-926e-4272-90d2-29b7487b92ab", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 3.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "50f52726-4289-4c33-b1fb-6aa0b0e0565a", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 3.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "a0f38513-e3a8-4120-a7de-87c2013c0d51", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 3.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "4de08144-9316-4a13-904a-d24f82b45db4", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 3.75, + "y": -0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "e0aac77f-f9e7-4600-99a8-78ea2aa0e7e3", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 3.75, + "y": -0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "9047aa44-20e9-4952-8820-2805f08d481d", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 3.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "9511129c-cbb9-4b38-ac15-3de602d39a62", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 4.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "28e89abe-fc35-4eeb-9b72-b3711395fcdc", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 4.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "7dd80d77-f02d-489c-8cf7-1527c527722b", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 4.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "e8acf5b5-4b18-4eb9-b747-2cacce27645d", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 4.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "981dc9ca-5c00-4c29-9244-abe525311754", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 4.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "258bb774-2d75-4ded-80c4-7f515465a2a7", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 4.75, + "y": -0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "205137d1-a8e3-4cb0-821c-7ff76f5b9292", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 4.75, + "y": -0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "62ba246f-4fc7-48bc-8bc8-af36231cbe73", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 4.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "a8a08b59-cd1b-44bf-9fbc-5fda56a00ebb", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 5.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "e8195452-7fc7-4b1b-906f-56695ba18919", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 5.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "e645014f-9464-4696-b63a-8d0f4bf084e1", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 5.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "4a2d6849-9083-459e-ba9e-28d80dc6e469", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 5.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "ec86aa58-4adb-44da-a651-e10938f2458d", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 5.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "71e8ee26-0b53-4ba1-99f6-b7292ac80a5a", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 5.75, + "y": -0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "42030113-db05-4a57-ace8-9b78c4bbb9fa", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 5.75, + "y": -0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "86e13364-2572-486b-920a-4b9e5d0cdb22", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 5.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "14596806-a281-4e87-aff8-cc6eae1b394d", + "rotation": { + "qx": 0, + "qy": 0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 6.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "d17fb363-e740-4461-b2c0-bbd01b85b9be", + "rotation": { + "qx": 0, + "qy": -0.382683, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 6.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "238586a7-a747-4fbd-96c9-a2b3404ff472", + "rotation": { + "qx": 0, + "qy": 0, + "qz": -0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 6.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 165, + "b": 0, + "a": 255 + }, + "guid": "db09f45f-3db1-48a8-bfea-5e1ca37cad0c", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0.382683, + "qw": 0.92388 + }, + "vector": { + "x": 6.25, + "y": -0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 3 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 105, + "b": 180, + "a": 255 + }, + "guid": "978a4137-0f50-4efb-95a1-a448ae7dfffa", + "rotation": { + "qx": 0.382683, + "qy": 0, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 0.25, + "y": 0.25, + "z": 0.25 + }, + "type": "Web", + "mesh_id": 4 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 255, + "g": 105, + "b": 180, + "a": 255 + }, + "guid": "ffa24992-1b56-4f26-b754-4c0304bd6ef8", + "rotation": { + "qx": -0.382683, + "qy": 0, + "qz": 0, + "qw": 0.92388 + }, + "vector": { + "x": 6.75, + "y": 0.25, + "z": -0.25 + }, + "type": "Web", + "mesh_id": 4 + } + ], + "info": { + "Author": "John Doe" + } +} \ No newline at end of file diff --git a/dotbimpy/tests/WallsWithBeams.bim b/dotbimpy/tests/WallsWithBeams.bim new file mode 100644 index 0000000..380e3ba --- /dev/null +++ b/dotbimpy/tests/WallsWithBeams.bim @@ -0,0 +1,655 @@ +{ + "schema_version": "1.0.0", + "meshes": [ + { + "mesh_id": 0, + "coordinates": [ + 0.1, + 0.0, + 0.15, + 0.1, + -6.0, + 0.15, + -0.1, + 0.0, + 0.15, + -0.1, + -6.0, + 0.15, + 0.1, + 0.0, + 0.15, + 0.1, + -6.0, + 0.15, + 0.1, + -6.0, + 0.13999999999999999, + 0.1, + 0.0, + 0.13999999999999999, + 0.1, + 0.0, + 0.13999999999999999, + 0.1, + -6.0, + 0.13999999999999999, + 0.005, + -6.0, + 0.13999999999999999, + 0.005, + 0.0, + 0.13999999999999999, + 0.005, + 0.0, + 0.13999999999999999, + 0.005, + -6.0, + 0.13999999999999999, + 0.005, + -6.0, + -0.13999999999999999, + 0.005, + 0.0, + -0.13999999999999999, + 0.005, + 0.0, + -0.13999999999999999, + 0.005, + -6.0, + -0.13999999999999999, + 0.1, + -6.0, + -0.13999999999999999, + 0.1, + 0.0, + -0.13999999999999999, + 0.1, + 0.0, + -0.13999999999999999, + 0.1, + -6.0, + -0.13999999999999999, + 0.1, + -6.0, + -0.15, + 0.1, + 0.0, + -0.15, + 0.1, + 0.0, + -0.15, + 0.1, + -6.0, + -0.15, + -0.1, + -6.0, + -0.15, + -0.1, + 0.0, + -0.15, + -0.1, + 0.0, + -0.13999999999999999, + -0.1, + -6.0, + -0.13999999999999999, + -0.1, + -6.0, + -0.15, + -0.1, + 0.0, + -0.15, + -0.005, + 0.0, + -0.13999999999999999, + -0.005, + -6.0, + -0.13999999999999999, + -0.1, + -6.0, + -0.13999999999999999, + -0.1, + 0.0, + -0.13999999999999999, + -0.005, + 0.0, + 0.13999999999999999, + -0.005, + -6.0, + 0.13999999999999999, + -0.005, + -6.0, + -0.13999999999999999, + -0.005, + 0.0, + -0.13999999999999999, + -0.1, + 0.0, + 0.13999999999999999, + -0.1, + -6.0, + 0.13999999999999999, + -0.005, + -6.0, + 0.13999999999999999, + -0.005, + 0.0, + 0.13999999999999999, + -0.1, + 0.0, + 0.15, + -0.1, + -6.0, + 0.15, + -0.1, + -6.0, + 0.13999999999999999, + -0.1, + 0.0, + 0.13999999999999999, + 0.1, + 0.0, + 0.15, + -0.1, + 0.0, + 0.15, + 0.1, + 0.0, + 0.13999999999999999, + 0.005, + 0.0, + 0.13999999999999999, + 0.005, + 0.0, + -0.13999999999999999, + 0.1, + 0.0, + -0.13999999999999999, + 0.1, + 0.0, + -0.15, + -0.1, + 0.0, + -0.15, + -0.1, + 0.0, + -0.13999999999999999, + -0.005, + 0.0, + -0.13999999999999999, + -0.005, + 0.0, + 0.13999999999999999, + -0.1, + 0.0, + 0.13999999999999999, + 0.1, + -6.0, + 0.15, + 0.1, + -6.0, + 0.13999999999999999, + 0.005, + -6.0, + 0.13999999999999999, + 0.005, + -6.0, + -0.13999999999999999, + 0.1, + -6.0, + -0.13999999999999999, + 0.1, + -6.0, + -0.15, + -0.1, + -6.0, + -0.15, + -0.1, + -6.0, + -0.13999999999999999, + -0.005, + -6.0, + -0.13999999999999999, + -0.005, + -6.0, + 0.13999999999999999, + -0.1, + -6.0, + 0.13999999999999999, + -0.1, + -6.0, + 0.15 + ], + "indices": [ + 0, + 2, + 3, + 0, + 3, + 1, + 7, + 4, + 5, + 7, + 5, + 6, + 11, + 8, + 9, + 11, + 9, + 10, + 15, + 12, + 13, + 15, + 13, + 14, + 19, + 16, + 17, + 19, + 17, + 18, + 23, + 20, + 21, + 23, + 21, + 22, + 27, + 24, + 25, + 27, + 25, + 26, + 31, + 29, + 28, + 31, + 30, + 29, + 35, + 33, + 32, + 35, + 34, + 33, + 39, + 37, + 36, + 39, + 38, + 37, + 43, + 41, + 40, + 43, + 42, + 41, + 47, + 45, + 44, + 47, + 46, + 45, + 57, + 55, + 56, + 53, + 54, + 52, + 58, + 59, + 49, + 51, + 57, + 58, + 51, + 52, + 57, + 48, + 50, + 51, + 49, + 48, + 51, + 49, + 51, + 58, + 54, + 55, + 57, + 54, + 57, + 52, + 68, + 67, + 66, + 64, + 63, + 65, + 69, + 71, + 70, + 62, + 69, + 68, + 62, + 68, + 63, + 60, + 62, + 61, + 65, + 68, + 66, + 65, + 63, + 68, + 71, + 62, + 60, + 71, + 69, + 62 + ] + }, + { + "mesh_id": 1, + "coordinates": [ + -0.09999999999999964, + -0.1, + -1.5, + -0.09999999999999964, + -0.1, + 1.5, + -0.09999999999999964, + 0.1, + -1.5, + -0.09999999999999964, + 0.1, + 1.5, + 8.1, + -0.1, + -1.5, + 8.1, + -0.1, + 1.5, + 8.1, + 0.1, + -1.5, + 8.1, + 0.1, + 1.5, + -0.09999999999999964, + -0.1, + -1.5, + 8.1, + -0.1, + -1.5, + -0.09999999999999964, + -0.1, + 1.5, + 8.1, + -0.1, + 1.5, + -0.09999999999999964, + 0.1, + -1.5, + 8.1, + 0.1, + -1.5, + -0.09999999999999964, + 0.1, + 1.5, + 8.1, + 0.1, + 1.5, + -0.09999999999999964, + -0.1, + -1.5, + -0.09999999999999964, + 0.1, + -1.5, + 8.1, + -0.1, + -1.5, + 8.1, + 0.1, + -1.5, + -0.09999999999999964, + -0.1, + 1.5, + -0.09999999999999964, + 0.1, + 1.5, + 8.1, + -0.1, + 1.5, + 8.1, + 0.1, + 1.5 + ], + "indices": [ + 1, + 2, + 0, + 1, + 3, + 2, + 5, + 4, + 6, + 5, + 6, + 7, + 11, + 8, + 9, + 11, + 10, + 8, + 15, + 13, + 12, + 15, + 12, + 14, + 19, + 16, + 17, + 19, + 18, + 16, + 23, + 21, + 20, + 23, + 20, + 22 + ] + } + ], + "elements": [ + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 0, + "b": 255, + "a": 255 + }, + "guid": "5af2f96d-6d07-4453-aef1-7751deb4693e", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1.0 + }, + "vector": { + "x": 0.0, + "y": 0, + "z": 3.15 + }, + "type": "Beam", + "mesh_id": 0 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 0, + "b": 255, + "a": 255 + }, + "guid": "93ed1739-282a-42ae-b935-d78237e2e099", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1.0 + }, + "vector": { + "x": 2.0, + "y": 0, + "z": 3.15 + }, + "type": "Beam", + "mesh_id": 0 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 0, + "b": 255, + "a": 255 + }, + "guid": "a91d2ca5-dbda-4825-bbfa-7751a2bde926", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1.0 + }, + "vector": { + "x": 4.0, + "y": 0, + "z": 3.15 + }, + "type": "Beam", + "mesh_id": 0 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 0, + "b": 255, + "a": 255 + }, + "guid": "24afc5e3-0d28-48e0-a946-c6309c6c921b", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1.0 + }, + "vector": { + "x": 6.0, + "y": 0, + "z": 3.15 + }, + "type": "Beam", + "mesh_id": 0 + }, + { + "info": { + "Material": "Steel" + }, + "color": { + "r": 0, + "g": 0, + "b": 255, + "a": 255 + }, + "guid": "28bff0b4-4e05-46aa-ba49-5b07f3469dac", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1.0 + }, + "vector": { + "x": 8.0, + "y": 0, + "z": 3.15 + }, + "type": "Beam", + "mesh_id": 0 + }, + { + "info": { + "Material": "Concrete" + }, + "color": { + "r": 255, + "g": 215, + "b": 0, + "a": 255 + }, + "guid": "c59ea8b6-c788-44e3-b0d9-ac713038d1ee", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1.0 + }, + "vector": { + "x": 0, + "y": 0.0, + "z": 1.5 + }, + "type": "Wall", + "mesh_id": 1 + }, + { + "info": { + "Material": "Concrete" + }, + "color": { + "r": 255, + "g": 215, + "b": 0, + "a": 255 + }, + "guid": "11009c85-dc88-49e3-9662-aa012625109c", + "rotation": { + "qx": 0, + "qy": 0, + "qz": 0, + "qw": 1.0 + }, + "vector": { + "x": 0, + "y": -6.0, + "z": 1.5 + }, + "type": "Wall", + "mesh_id": 1 + } + ], + "info": { + "Author": "John Doe" + } +} \ No newline at end of file diff --git a/dotbimpy/tests/test_add_files.py b/dotbimpy/tests/test_add_files.py index fbb8fa9..703c994 100644 --- a/dotbimpy/tests/test_add_files.py +++ b/dotbimpy/tests/test_add_files.py @@ -1,4 +1,5 @@ from dotbimpy import * +import copy def test__add__pyramid_cubes(): @@ -12,14 +13,14 @@ def test__add__pyramid_cubes(): # Check meshes assert file_result.meshes[0] == file_a.meshes[0] - assert file_result.meshes[1].equals_without_id(file_b.meshes[0]) + assert file_result.meshes[1].equals_without_mesh_id(file_b.meshes[0]) assert file_result.meshes[1].mesh_id == 1 # Check elements assert file_result.elements[0] == file_a.elements[0] - assert file_result.elements[1].equals_without_id(file_b.elements[0]) and file_result.elements[1].mesh_id == 1 - assert file_result.elements[2].equals_without_id(file_b.elements[1]) and file_result.elements[2].mesh_id == 1 - assert file_result.elements[3].equals_without_id(file_b.elements[2]) and file_result.elements[3].mesh_id == 1 + assert file_result.elements[1].equals_without_mesh_id(file_b.elements[0]) and file_result.elements[1].mesh_id == 1 + assert file_result.elements[2].equals_without_mesh_id(file_b.elements[1]) and file_result.elements[2].mesh_id == 1 + assert file_result.elements[3].equals_without_mesh_id(file_b.elements[2]) and file_result.elements[3].mesh_id == 1 def test__add__cubes_pyramid(): @@ -34,13 +35,25 @@ def test__add__cubes_pyramid(): # Check meshes assert file_result.meshes[0] == file_a.meshes[0] - assert file_result.meshes[1].equals_without_id(file_b.meshes[0]) + assert file_result.meshes[1].equals_without_mesh_id(file_b.meshes[0]) # Check elements assert file_result.elements[0] == file_a.elements[0] assert file_result.elements[1] == file_a.elements[1] assert file_result.elements[2] == file_a.elements[2] - assert file_result.elements[3].equals_without_id(file_b.elements[0]) and file_result.elements[3].mesh_id == 1 + assert file_result.elements[3].equals_without_mesh_id(file_b.elements[0]) and file_result.elements[3].mesh_id == 1 + + +def test__add__walls_truss__check_if_originals_changed(): + file_a = File.read("WallsWithBeams.bim") + file_b = File.read("Truss.bim") + file_a_copy = copy.deepcopy(file_a) + file_b_copy = copy.deepcopy(file_b) + + file_result = file_a + file_b + + assert file_a == file_a_copy + assert file_b == file_b_copy def test__add__walls_truss(): @@ -48,5 +61,20 @@ def test__add__walls_truss(): file_b = File.read("Truss.bim") file_result = file_a + file_b - file_result.save("SumWallsTruss.bim") - file_result.view() + + assert file_result.schema_version == file_a.schema_version + assert file_result.info == file_a.info + + # Check meshes + assert file_result.meshes[0] == file_a.meshes[0] + assert file_result.meshes[1] == file_a.meshes[1] + for i in range(5): + assert file_result.meshes[i+2].equals_without_mesh_id(file_b.meshes[i]) + + # Check elements + for i in range(7): + assert file_result.elements[i] == file_a.elements[i] + + for i in range(7, len(file_result.elements)): + assert file_result.elements[i].equals_without_mesh_id(file_b.elements[i-7]) + From 0ef44b1e241410301d7a0c7122ff7e08de1fb7f2 Mon Sep 17 00:00:00 2001 From: paireks Date: Sun, 20 Mar 2022 12:32:41 +0100 Subject: [PATCH 3/6] Add truss notebook --- .idea/vcs.xml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .idea/vcs.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From 95074eddb32dc553dc51f4e1ebac069e351576f3 Mon Sep 17 00:00:00 2001 From: paireks Date: Sun, 20 Mar 2022 12:34:43 +0100 Subject: [PATCH 4/6] Add truss notebook --- dotbimpy/other/Truss.ipynb | 175 +++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 dotbimpy/other/Truss.ipynb diff --git a/dotbimpy/other/Truss.ipynb b/dotbimpy/other/Truss.ipynb new file mode 100644 index 0000000..6c887ba --- /dev/null +++ b/dotbimpy/other/Truss.ipynb @@ -0,0 +1,175 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9d95439c-243c-46b9-981e-c1ebb4b358b8", + "metadata": {}, + "source": [ + "# Cadquery + ipywidget + dotbimpy" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "00596700-6ddc-4bf0-b437-325cc942bd3a", + "metadata": {}, + "outputs": [], + "source": [ + "from dotbimpy import *\n", + "from ipywidgets import interact\n", + "import cadquery\n", + "import uuid" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ce601b01-9982-4e1e-a055-003b9f5129c1", + "metadata": {}, + "outputs": [], + "source": [ + "def cadquery_mesh_to_dotbim_mesh(cadquery_mesh, mesh_id):\n", + " vertices, triangles = cadquery_mesh\n", + " coordinates = []\n", + " for i in vertices:\n", + " coordinates.extend([i.x, i.y, i.z])\n", + " indices = [item for sublist in triangles for item in sublist]\n", + " return Mesh(mesh_id=mesh_id, coordinates=coordinates, indices=indices)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "0db56e56-dde0-4abb-8339-1f93ffa7abc4", + "metadata": {}, + "outputs": [], + "source": [ + "def create_mesh_tube(plane, face, l, h, t, mesh_id):\n", + " workplane = cadquery.Workplane(plane).circle(h).extrude(l).faces(face).workplane().circle(h-t).cutThruAll()\n", + " mesh_cq = workplane.val().tessellate(0.1)\n", + " mesh = cadquery_mesh_to_dotbim_mesh(mesh_cq, mesh_id)\n", + " return mesh\n", + "\n", + "def create_tube_element(vector, rotation, color, mesh_id, type_name):\n", + " return Element(mesh_id=mesh_id,vector=vector,guid=str(uuid.uuid4()),\n", + " info={\"Material\": \"Steel\"},rotation=rotation,type=type_name,color=color)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "bc39f142-8f1f-4d65-9d01-6fda00b1aebc", + "metadata": {}, + "outputs": [], + "source": [ + "def f(length):\n", + " meshes = []\n", + " elements = []\n", + " \n", + " # Creating chords\n", + " meshes.append(create_mesh_tube('YZ', '>X', length, 0.03, 0.01, 0))\n", + " elements.append(create_tube_element(Vector(0,0.25,0.25), Rotation(0,0,0,1), Color(0,0,255,255), 0, \"Top Chord\"))\n", + " elements.append(create_tube_element(Vector(0,-0.25,0.25), Rotation(0,0,0,1), Color(0,0,255,255), 0, \"Top Chord\"))\n", + " elements.append(create_tube_element(Vector(0,0.25,-0.25), Rotation(0,0,0,1), Color(0,0,255,255), 0, \"Bottom Chord\"))\n", + " elements.append(create_tube_element(Vector(0,-0.25,-0.25), Rotation(0,0,0,1), Color(0,0,255,255), 0, \"Bottom Chord\"))\n", + " \n", + " # Creating posts\n", + " meshes.append(create_mesh_tube('XY', '>Z', 0.46, 0.02, 0.005, 1))\n", + " elements.append(create_tube_element(Vector(0.25,0.25,-0.23), Rotation(0,0,0,1), Color(0,255,0,255), 1, \"Post\"))\n", + " elements.append(create_tube_element(Vector(0.25,-0.25,-0.23), Rotation(0,0,0,1), Color(0,255,0,255), 1, \"Post\"))\n", + " elements.append(create_tube_element(Vector(length-0.25,0.25,-0.23), Rotation(0,0,0,1), Color(0,255,0,255), 1, \"Post\"))\n", + " elements.append(create_tube_element(Vector(length-0.25,-0.25,-0.23), Rotation(0,0,0,1), Color(0,255,0,255), 1, \"Post\"))\n", + " \n", + " # Creating girder\n", + " meshes.append(create_mesh_tube('XZ', '>Y', 0.46, 0.02, 0.005, 2))\n", + " elements.append(create_tube_element(Vector(0.25,0.23,0.25), Rotation(0,0,0,1), Color(222,49,99,255), 2, \"Girder\"))\n", + " elements.append(create_tube_element(Vector(0.25,0.23,-0.25), Rotation(0,0,0,1), Color(222,49,99,255), 2, \"Girder\"))\n", + " elements.append(create_tube_element(Vector(length-0.25,0.23,0.25), Rotation(0,0,0,1), Color(222,49,99,255), 2, \"Girder\"))\n", + " elements.append(create_tube_element(Vector(length-0.25,0.23,-0.25), Rotation(0,0,0,1), Color(222,49,99,255), 2, \"Girder\"))\n", + " \n", + " # Creating webs\n", + " length_to_fill = length - 0.5\n", + " number_of_gaps = int(length_to_fill / 0.5)\n", + " meshes.append(create_mesh_tube('YZ', '>X', 1.41421*0.5, 0.015, 0.005, 3))\n", + " for i in range(number_of_gaps):\n", + " if i % 2 == 0:\n", + " elements.append(create_tube_element(Vector(i*0.5+0.25,0.25,0.5/2.0), Rotation(0,0.382683,0,0.92388), Color(255,165,0,255), 3, \"Web\"))\n", + " elements.append(create_tube_element(Vector(i*0.5+0.25,-0.25,-0.5/2.0), Rotation(0,-0.382683,0,0.92388), Color(255,165,0,255), 3, \"Web\"))\n", + " elements.append(create_tube_element(Vector(i*0.5+0.25,0.25,0.5/2.0), Rotation(0,0,-0.382683,0.92388), Color(255,165,0,255), 3, \"Web\"))\n", + " elements.append(create_tube_element(Vector(i*0.5+0.25,-0.25,-0.5/2.0), Rotation(0,0,0.382683,0.92388), Color(255,165,0,255), 3, \"Web\"))\n", + " else:\n", + " elements.append(create_tube_element(Vector(i*0.5+0.25,0.25,-0.5/2.0), Rotation(0,-0.382683,0,0.92388), Color(255,165,0,255), 3, \"Web\"))\n", + " elements.append(create_tube_element(Vector(i*0.5+0.25,-0.25,0.5/2.0), Rotation(0,0.382683,0,0.92388), Color(255,165,0,255), 3, \"Web\"))\n", + " elements.append(create_tube_element(Vector(i*0.5+0.25,-0.25,0.5/2.0), Rotation(0,0,0.382683,0.92388), Color(255,165,0,255), 3, \"Web\"))\n", + " elements.append(create_tube_element(Vector(i*0.5+0.25,0.25,-0.5/2.0), Rotation(0,0,-0.382683,0.92388), Color(255,165,0,255), 3, \"Web\"))\n", + " \n", + " # Creating webs on ends\n", + " meshes.append(create_mesh_tube('XZ', '>Y', 1.41421*0.5, 0.015, 0.005, 4))\n", + " elements.append(create_tube_element(Vector(0.25,0.25,0.5/2.0), Rotation(0.382683,0,0,0.92388), Color(255,105,180,255), 4, \"Web\"))\n", + " elements.append(create_tube_element(Vector(length-0.25,0.25,-0.5/2.0), Rotation(-0.382683,0,0,0.92388), Color(255,105,180,255), 4, \"Web\"))\n", + " \n", + " file = File(\"1.0.0\", meshes=meshes, elements=elements, info={\"Author\": \"John Doe\"})\n", + " file.view()\n", + " file.save(\"Truss.bim\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "04180879-ccdb-490d-a297-a62e304a5bf2", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "bc9cebdf52454b6ba0cb0f7099b7d8c3", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(FloatSlider(value=6.0, description='length', max=10.0, min=2.0, step=1.0), Output()), _d…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "interact(f, length=(2.0, 10.0, 1.00))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Anaconda (base)", + "language": "python", + "name": "anaconda-base" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From d8752a9f7a58722d00a453ed0854ef9603f65618 Mon Sep 17 00:00:00 2001 From: paireks Date: Sun, 20 Mar 2022 12:39:32 +0100 Subject: [PATCH 5/6] Update readme --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5981d2d..2cf64db 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# dotbimpy (Version 0.0.5) +# dotbimpy (Version 0.0.6) ## Description @@ -176,6 +176,15 @@ file.view() ``` ![2022-02-23_23h49_52](https://user-images.githubusercontent.com/47977819/155422920-9f0a9aa0-d3d6-442b-a0b0-084acb7e0ea7.png) + +### Merge files + +If you want to merge two files together: + +```python +merged_file = file_a + file_b +``` + ### dotbimpy + cadquery Sometimes it's much easier to create B-REP and then convert it into mesh. For this purpose you can try cadquery: https://github.com/CadQuery/cadquery From 909bd5eecf6501fcfa7fd255da4471cdc07dc04d Mon Sep 17 00:00:00 2001 From: paireks Date: Sun, 20 Mar 2022 12:40:17 +0100 Subject: [PATCH 6/6] Update setup.py --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index de49501..fe47d2a 100644 --- a/setup.py +++ b/setup.py @@ -2,13 +2,13 @@ setup( name='dotbimpy', packages=['dotbimpy'], - version='0.0.5', + version='0.0.6', license='MIT', description='Python library for dotbim', author='Wojciech', author_email='w.radaczynski@gmail.com', url='https://github.com/paireks/dotbimpy', - download_url='https://github.com/paireks/dotbimpy/archive/refs/tags/v_0_0_5.tar.gz', + download_url='https://github.com/paireks/dotbimpy/archive/refs/tags/v_0_0_6.tar.gz', keywords=[], install_requires=[ 'jsonpickle',