diff --git a/CHANGELOG.md b/CHANGELOG.md index 56ba275..44e16a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +* Added tutorials. +* Added examples. +* Added documentation. +* Added `from_brep` to `compas_dem.elements.Block`. +* Added `is_support` assignment to `compas_dem.BlockModel.from_barrelvault`. + ### Changed ### Removed diff --git a/data/dem_crossvault.json b/data/dem_crossvault.json new file mode 100644 index 0000000..2009b1b --- /dev/null +++ b/data/dem_crossvault.json @@ -0,0 +1 @@ +{"dtype": "compas_dem.models/BlockModel", "data": {"transformation": null, "elements": {"e0a5c168-7e3d-442e-9971-339fe5caee54": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": 0.0, "y": -0.5, "z": 0.0}, "1": {"x": 0.0, "y": 0.5, "z": 0.0}, "2": {"x": 2.0, "y": 0.5, "z": 0.0}, "3": {"x": 2.0, "y": -0.5, "z": 0.0}, "5": {"x": 2.0, "y": -0.5, "z": 0.5}, "4": {"x": 0.0, "y": -0.5, "z": 0.5}, "6": {"x": 2.0, "y": 0.5, "z": 0.5}, "7": {"x": 0.0, "y": 0.5, "z": 0.5}}, "face": {"0": [0, 1, 2, 3], "1": [0, 3, 5, 4], "2": [3, 2, 6, 5], "3": [2, 1, 7, 6], "4": [1, 0, 4, 7], "5": [4, 5, 6, 7]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": [], "name": "Mesh_0", "guid": "13263918-2472-45ac-970a-82f97cd6c453"}, "is_support": true}, "guid": "e0a5c168-7e3d-442e-9971-339fe5caee54"}, "e6a73d92-d11b-4eae-a13f-aa7fed60772a": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"8": {"x": 2.05, "y": -0.5, "z": 0.0}, "9": {"x": 2.05, "y": 0.5, "z": 0.0}, "10": {"x": 4.05, "y": 0.5, "z": 0.0}, "11": {"x": 4.05, "y": -0.5, "z": 0.0}, "13": {"x": 4.05, "y": -0.5, "z": 0.5}, "12": {"x": 2.05, "y": -0.5, "z": 0.5}, "14": {"x": 4.05, "y": 0.5, "z": 0.5}, "15": {"x": 2.05, "y": 0.5, "z": 0.5}}, "face": {"0": [8, 9, 10, 11], "1": [8, 11, 13, 12], "2": [11, 10, 14, 13], "3": [10, 9, 15, 14], "4": [9, 8, 12, 15], "5": [12, 13, 14, 15]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 15, "max_face": 5}, "inheritance": [], "name": "Mesh_1", "guid": "11b9317d-2e0b-4393-95fd-f6f8ef558b8c"}, "is_support": true}, "guid": "e6a73d92-d11b-4eae-a13f-aa7fed60772a"}, "66832273-c7e0-40e8-b9a8-70498facf1a1": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"16": {"x": 4.1, "y": -0.5, "z": 0.0}, "17": {"x": 4.1, "y": 0.5, "z": 0.0}, "18": {"x": 6.1, "y": 0.5, "z": 0.0}, "19": {"x": 6.1, "y": -0.5, "z": 0.0}, "21": {"x": 6.1, "y": -0.5, "z": 0.5}, "20": {"x": 4.1, "y": -0.5, "z": 0.5}, "22": {"x": 6.1, "y": 0.5, "z": 0.5}, "23": {"x": 4.1, "y": 0.5, "z": 0.5}}, "face": {"0": [16, 17, 18, 19], "1": [16, 19, 21, 20], "2": [19, 18, 22, 21], "3": [18, 17, 23, 22], "4": [17, 16, 20, 23], "5": [20, 21, 22, 23]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 23, "max_face": 5}, "inheritance": [], "name": "Mesh_2", "guid": "4ab82877-04ae-4ccf-8653-063f7be753d3"}, "is_support": true}, "guid": "66832273-c7e0-40e8-b9a8-70498facf1a1"}, "6ba56fd2-561b-4538-8db9-c98f6e697450": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"24": {"x": 6.15, "y": -0.5, "z": 0.0}, "25": {"x": 6.15, "y": 0.5, "z": 0.0}, "26": {"x": 8.15, "y": 0.5, "z": 0.0}, "27": {"x": 8.15, "y": -0.5, "z": 0.0}, "29": {"x": 8.15, "y": -0.5, "z": 0.5}, "28": {"x": 6.15, "y": -0.5, "z": 0.5}, "30": {"x": 8.15, "y": 0.5, "z": 0.5}, "31": {"x": 6.15, "y": 0.5, "z": 0.5}}, "face": {"0": [24, 25, 26, 27], "1": [24, 27, 29, 28], "2": [27, 26, 30, 29], "3": [26, 25, 31, 30], "4": [25, 24, 28, 31], "5": [28, 29, 30, 31]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 31, "max_face": 5}, "inheritance": [], "name": "Mesh_3", "guid": "48555654-6b1b-4b63-9013-58a7e6785e95"}, "is_support": true}, "guid": "6ba56fd2-561b-4538-8db9-c98f6e697450"}, "d85d21fa-71f9-4680-a20a-80f6a559c904": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"32": {"x": 8.2, "y": -0.5, "z": 0.0}, "33": {"x": 8.2, "y": 0.5, "z": 0.0}, "34": {"x": 10.2, "y": 0.5, "z": 0.0}, "35": {"x": 10.2, "y": -0.5, "z": 0.0}, "37": {"x": 10.2, "y": -0.5, "z": 0.5}, "36": {"x": 8.2, "y": -0.5, "z": 0.5}, "38": {"x": 10.2, "y": 0.5, "z": 0.5}, "39": {"x": 8.2, "y": 0.5, "z": 0.5}}, "face": {"0": [32, 33, 34, 35], "1": [32, 35, 37, 36], "2": [35, 34, 38, 37], "3": [34, 33, 39, 38], "4": [33, 32, 36, 39], "5": [36, 37, 38, 39]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 39, "max_face": 5}, "inheritance": [], "name": "Mesh_4", "guid": "df4c02a4-380d-4c8d-bfaf-aac86d1a0d8c"}, "is_support": true}, "guid": "d85d21fa-71f9-4680-a20a-80f6a559c904"}, "62fe7171-e036-4b21-81b2-03780c2877ab": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"4": {"x": 0.0, "y": -0.5, "z": 0.5}, "7": {"x": 0.0, "y": 0.5, "z": 0.5}, "40": {"x": 0.974, "y": 0.5, "z": 0.5}, "41": {"x": 0.974, "y": -0.5, "z": 0.5}, "43": {"x": 0.974, "y": -0.5, "z": 1.0}, "42": {"x": 0.0, "y": -0.5, "z": 1.0}, "44": {"x": 0.974, "y": 0.5, "z": 1.0}, "45": {"x": 0.0, "y": 0.5, "z": 1.0}}, "face": {"0": [4, 7, 40, 41], "1": [4, 41, 43, 42], "2": [41, 40, 44, 43], "3": [40, 7, 45, 44], "4": [7, 4, 42, 45], "5": [42, 43, 44, 45]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 45, "max_face": 5}, "inheritance": [], "name": "Mesh_5", "guid": "22e7e3ad-d682-4ae6-83b5-669d380a6dd2"}, "is_support": false}, "guid": "62fe7171-e036-4b21-81b2-03780c2877ab"}, "4f21e307-8e08-4ba4-a46a-f3de2ee55c96": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"46": {"x": 1.024, "y": -0.5, "z": 0.5}, "47": {"x": 1.024, "y": 0.5, "z": 0.5}, "48": {"x": 3.024, "y": 0.5, "z": 0.5}, "49": {"x": 3.024, "y": -0.5, "z": 0.5}, "51": {"x": 3.024, "y": -0.5, "z": 1.0}, "50": {"x": 1.024, "y": -0.5, "z": 1.0}, "52": {"x": 3.024, "y": 0.5, "z": 1.0}, "53": {"x": 1.024, "y": 0.5, "z": 1.0}}, "face": {"0": [46, 47, 48, 49], "1": [46, 49, 51, 50], "2": [49, 48, 52, 51], "3": [48, 47, 53, 52], "4": [47, 46, 50, 53], "5": [50, 51, 52, 53]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 53, "max_face": 5}, "inheritance": [], "name": "Mesh_6", "guid": "56b166c1-41f4-4316-ab10-1b5d695e7505"}, "is_support": false}, "guid": "4f21e307-8e08-4ba4-a46a-f3de2ee55c96"}, "cfd06bf1-da59-49af-bdb5-9c72a014a45e": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"54": {"x": 3.074, "y": -0.5, "z": 0.5}, "55": {"x": 3.074, "y": 0.5, "z": 0.5}, "56": {"x": 5.074, "y": 0.5, "z": 0.5}, "57": {"x": 5.074, "y": -0.5, "z": 0.5}, "59": {"x": 5.074, "y": -0.5, "z": 1.0}, "58": {"x": 3.074, "y": -0.5, "z": 1.0}, "60": {"x": 5.074, "y": 0.5, "z": 1.0}, "61": {"x": 3.074, "y": 0.5, "z": 1.0}}, "face": {"0": [54, 55, 56, 57], "1": [54, 57, 59, 58], "2": [57, 56, 60, 59], "3": [56, 55, 61, 60], "4": [55, 54, 58, 61], "5": [58, 59, 60, 61]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 61, "max_face": 5}, "inheritance": [], "name": "Mesh_7", "guid": "64b9ff21-aead-4115-9d5b-264ab20512a4"}, "is_support": false}, "guid": "cfd06bf1-da59-49af-bdb5-9c72a014a45e"}, "056acc52-ff6f-421a-9e75-f2c3e8b99a5f": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"62": {"x": 5.124, "y": -0.5, "z": 0.5}, "63": {"x": 5.124, "y": 0.5, "z": 0.5}, "64": {"x": 7.124, "y": 0.5, "z": 0.5}, "65": {"x": 7.124, "y": -0.5, "z": 0.5}, "67": {"x": 7.124, "y": -0.5, "z": 1.0}, "66": {"x": 5.124, "y": -0.5, "z": 1.0}, "68": {"x": 7.124, "y": 0.5, "z": 1.0}, "69": {"x": 5.124, "y": 0.5, "z": 1.0}}, "face": {"0": [62, 63, 64, 65], "1": [62, 65, 67, 66], "2": [65, 64, 68, 67], "3": [64, 63, 69, 68], "4": [63, 62, 66, 69], "5": [66, 67, 68, 69]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 69, "max_face": 5}, "inheritance": [], "name": "Mesh_8", "guid": "4b03eca3-ee93-4979-bdbc-c4f5f10ea238"}, "is_support": false}, "guid": "056acc52-ff6f-421a-9e75-f2c3e8b99a5f"}, "5de6d494-8bb4-4093-a2c0-7fb984dc86f7": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"70": {"x": 7.174, "y": -0.5, "z": 0.5}, "71": {"x": 7.174, "y": 0.5, "z": 0.5}, "72": {"x": 9.174, "y": 0.5, "z": 0.5}, "73": {"x": 9.174, "y": -0.5, "z": 0.5}, "75": {"x": 9.174, "y": -0.5, "z": 1.0}, "74": {"x": 7.174, "y": -0.5, "z": 1.0}, "76": {"x": 9.174, "y": 0.5, "z": 1.0}, "77": {"x": 7.174, "y": 0.5, "z": 1.0}}, "face": {"0": [70, 71, 72, 73], "1": [70, 73, 75, 74], "2": [73, 72, 76, 75], "3": [72, 71, 77, 76], "4": [71, 70, 74, 77], "5": [74, 75, 76, 77]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 77, "max_face": 5}, "inheritance": [], "name": "Mesh_9", "guid": "ea7fb3f8-e5f8-443c-86ab-2597679d7606"}, "is_support": false}, "guid": "5de6d494-8bb4-4093-a2c0-7fb984dc86f7"}, "db809c52-8d8d-4934-9519-e71534e91bbe": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"78": {"x": 9.224, "y": -0.5, "z": 0.5}, "79": {"x": 9.224, "y": 0.5, "z": 0.5}, "38": {"x": 10.2, "y": 0.5, "z": 0.5}, "37": {"x": 10.2, "y": -0.5, "z": 0.5}, "81": {"x": 10.2, "y": -0.5, "z": 1.0}, "80": {"x": 9.224, "y": -0.5, "z": 1.0}, "82": {"x": 10.2, "y": 0.5, "z": 1.0}, "83": {"x": 9.224, "y": 0.5, "z": 1.0}}, "face": {"0": [78, 79, 38, 37], "1": [78, 37, 81, 80], "2": [37, 38, 82, 81], "3": [38, 79, 83, 82], "4": [79, 78, 80, 83], "5": [80, 81, 82, 83]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 83, "max_face": 5}, "inheritance": [], "name": "Mesh_10", "guid": "7367755b-6008-43d2-809a-f01f130c3dd7"}, "is_support": false}, "guid": "db809c52-8d8d-4934-9519-e71534e91bbe"}, "86a7c6f4-4401-4838-9def-677aa92ab551": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"42": {"x": 0.0, "y": -0.5, "z": 1.0}, "45": {"x": 0.0, "y": 0.5, "z": 1.0}, "84": {"x": 2.0, "y": 0.5, "z": 1.0}, "85": {"x": 2.0, "y": -0.5, "z": 1.0}, "87": {"x": 2.0, "y": -0.5, "z": 1.5}, "86": {"x": 0.0, "y": -0.5, "z": 1.5}, "88": {"x": 2.0, "y": 0.5, "z": 1.5}, "89": {"x": 0.0, "y": 0.5, "z": 1.5}}, "face": {"0": [42, 45, 84, 85], "1": [42, 85, 87, 86], "2": [85, 84, 88, 87], "3": [84, 45, 89, 88], "4": [45, 42, 86, 89], "5": [86, 87, 88, 89]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 89, "max_face": 5}, "inheritance": [], "name": "Mesh_11", "guid": "f8ea1271-574e-420a-bf21-4e4377c29d01"}, "is_support": false}, "guid": "86a7c6f4-4401-4838-9def-677aa92ab551"}, "4b97afbd-41d0-490d-a008-5c83df691ddf": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"90": {"x": 2.05, "y": -0.5, "z": 1.0}, "91": {"x": 2.05, "y": 0.5, "z": 1.0}, "92": {"x": 4.05, "y": 0.5, "z": 1.0}, "93": {"x": 4.05, "y": -0.5, "z": 1.0}, "95": {"x": 4.05, "y": -0.5, "z": 1.5}, "94": {"x": 2.05, "y": -0.5, "z": 1.5}, "96": {"x": 4.05, "y": 0.5, "z": 1.5}, "97": {"x": 2.05, "y": 0.5, "z": 1.5}}, "face": {"0": [90, 91, 92, 93], "1": [90, 93, 95, 94], "2": [93, 92, 96, 95], "3": [92, 91, 97, 96], "4": [91, 90, 94, 97], "5": [94, 95, 96, 97]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 97, "max_face": 5}, "inheritance": [], "name": "Mesh_12", "guid": "f7751e09-7bb2-43bd-9d08-fbb8a51da943"}, "is_support": false}, "guid": "4b97afbd-41d0-490d-a008-5c83df691ddf"}, "3b42dff9-2751-4628-ae05-95cef1378f82": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"98": {"x": 4.1, "y": -0.5, "z": 1.0}, "99": {"x": 4.1, "y": 0.5, "z": 1.0}, "100": {"x": 6.1, "y": 0.5, "z": 1.0}, "101": {"x": 6.1, "y": -0.5, "z": 1.0}, "103": {"x": 6.1, "y": -0.5, "z": 1.5}, "102": {"x": 4.1, "y": -0.5, "z": 1.5}, "104": {"x": 6.1, "y": 0.5, "z": 1.5}, "105": {"x": 4.1, "y": 0.5, "z": 1.5}}, "face": {"0": [98, 99, 100, 101], "1": [98, 101, 103, 102], "2": [101, 100, 104, 103], "3": [100, 99, 105, 104], "4": [99, 98, 102, 105], "5": [102, 103, 104, 105]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 105, "max_face": 5}, "inheritance": [], "name": "Mesh_13", "guid": "f253f4cd-3499-4fb7-97c4-119ad873d7ff"}, "is_support": false}, "guid": "3b42dff9-2751-4628-ae05-95cef1378f82"}, "6bad33b1-86ab-4869-a9e4-8102d2d0bdaa": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"106": {"x": 6.15, "y": -0.5, "z": 1.0}, "107": {"x": 6.15, "y": 0.5, "z": 1.0}, "108": {"x": 8.15, "y": 0.5, "z": 1.0}, "109": {"x": 8.15, "y": -0.5, "z": 1.0}, "111": {"x": 8.15, "y": -0.5, "z": 1.5}, "110": {"x": 6.15, "y": -0.5, "z": 1.5}, "112": {"x": 8.15, "y": 0.5, "z": 1.5}, "113": {"x": 6.15, "y": 0.5, "z": 1.5}}, "face": {"0": [106, 107, 108, 109], "1": [106, 109, 111, 110], "2": [109, 108, 112, 111], "3": [108, 107, 113, 112], "4": [107, 106, 110, 113], "5": [110, 111, 112, 113]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 113, "max_face": 5}, "inheritance": [], "name": "Mesh_14", "guid": "5e1c9e34-7309-48ba-b26c-0c09fb66afe2"}, "is_support": false}, "guid": "6bad33b1-86ab-4869-a9e4-8102d2d0bdaa"}, "2c3104e4-f14a-4028-b845-9723815bcf09": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"114": {"x": 8.2, "y": -0.5, "z": 1.0}, "115": {"x": 8.2, "y": 0.5, "z": 1.0}, "82": {"x": 10.2, "y": 0.5, "z": 1.0}, "81": {"x": 10.2, "y": -0.5, "z": 1.0}, "117": {"x": 10.2, "y": -0.5, "z": 1.5}, "116": {"x": 8.2, "y": -0.5, "z": 1.5}, "118": {"x": 10.2, "y": 0.5, "z": 1.5}, "119": {"x": 8.2, "y": 0.5, "z": 1.5}}, "face": {"0": [114, 115, 82, 81], "1": [114, 81, 117, 116], "2": [81, 82, 118, 117], "3": [82, 115, 119, 118], "4": [115, 114, 116, 119], "5": [116, 117, 118, 119]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 119, "max_face": 5}, "inheritance": [], "name": "Mesh_15", "guid": "55f5c48d-8599-4a7d-9d20-be6a88b2c515"}, "is_support": false}, "guid": "2c3104e4-f14a-4028-b845-9723815bcf09"}, "5bde50c6-b9a5-4344-92f4-3849fdc7b70e": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"86": {"x": 0.0, "y": -0.5, "z": 1.5}, "89": {"x": 0.0, "y": 0.5, "z": 1.5}, "120": {"x": 0.974, "y": 0.5, "z": 1.5}, "121": {"x": 0.974, "y": -0.5, "z": 1.5}, "123": {"x": 0.974, "y": -0.5, "z": 2.0}, "122": {"x": 0.0, "y": -0.5, "z": 2.0}, "124": {"x": 0.974, "y": 0.5, "z": 2.0}, "125": {"x": 0.0, "y": 0.5, "z": 2.0}}, "face": {"0": [86, 89, 120, 121], "1": [86, 121, 123, 122], "2": [121, 120, 124, 123], "3": [120, 89, 125, 124], "4": [89, 86, 122, 125], "5": [122, 123, 124, 125]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 125, "max_face": 5}, "inheritance": [], "name": "Mesh_16", "guid": "9e9457b7-bddb-49cf-b1d4-894e5af49f32"}, "is_support": false}, "guid": "5bde50c6-b9a5-4344-92f4-3849fdc7b70e"}, "0ffc7caa-bf16-48e0-993d-4e181ad74b89": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"126": {"x": 1.024, "y": -0.5, "z": 1.5}, "127": {"x": 1.024, "y": 0.5, "z": 1.5}, "128": {"x": 3.024, "y": 0.5, "z": 1.5}, "129": {"x": 3.024, "y": -0.5, "z": 1.5}, "131": {"x": 3.024, "y": -0.5, "z": 2.0}, "130": {"x": 1.024, "y": -0.5, "z": 2.0}, "132": {"x": 3.024, "y": 0.5, "z": 2.0}, "133": {"x": 1.024, "y": 0.5, "z": 2.0}}, "face": {"0": [126, 127, 128, 129], "1": [126, 129, 131, 130], "2": [129, 128, 132, 131], "3": [128, 127, 133, 132], "4": [127, 126, 130, 133], "5": [130, 131, 132, 133]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 133, "max_face": 5}, "inheritance": [], "name": "Mesh_17", "guid": "fb20e72c-2ab5-444f-b1e8-f3429d2b442a"}, "is_support": false}, "guid": "0ffc7caa-bf16-48e0-993d-4e181ad74b89"}, "d8469193-e522-4280-8803-2df87daf93f4": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"134": {"x": 3.074, "y": -0.5, "z": 1.5}, "135": {"x": 3.074, "y": 0.5, "z": 1.5}, "136": {"x": 5.074, "y": 0.5, "z": 1.5}, "137": {"x": 5.074, "y": -0.5, "z": 1.5}, "139": {"x": 5.074, "y": -0.5, "z": 2.0}, "138": {"x": 3.074, "y": -0.5, "z": 2.0}, "140": {"x": 5.074, "y": 0.5, "z": 2.0}, "141": {"x": 3.074, "y": 0.5, "z": 2.0}}, "face": {"0": [134, 135, 136, 137], "1": [134, 137, 139, 138], "2": [137, 136, 140, 139], "3": [136, 135, 141, 140], "4": [135, 134, 138, 141], "5": [138, 139, 140, 141]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 141, "max_face": 5}, "inheritance": [], "name": "Mesh_18", "guid": "dd8e58f9-0156-45fb-b296-9fde0ec56e51"}, "is_support": false}, "guid": "d8469193-e522-4280-8803-2df87daf93f4"}, "b1779abe-3b05-47a7-b32f-7058098779cb": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"142": {"x": 5.124, "y": -0.5, "z": 1.5}, "143": {"x": 5.124, "y": 0.5, "z": 1.5}, "144": {"x": 7.124, "y": 0.5, "z": 1.5}, "145": {"x": 7.124, "y": -0.5, "z": 1.5}, "147": {"x": 7.124, "y": -0.5, "z": 2.0}, "146": {"x": 5.124, "y": -0.5, "z": 2.0}, "148": {"x": 7.124, "y": 0.5, "z": 2.0}, "149": {"x": 5.124, "y": 0.5, "z": 2.0}}, "face": {"0": [142, 143, 144, 145], "1": [142, 145, 147, 146], "2": [145, 144, 148, 147], "3": [144, 143, 149, 148], "4": [143, 142, 146, 149], "5": [146, 147, 148, 149]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 149, "max_face": 5}, "inheritance": [], "name": "Mesh_19", "guid": "7216f174-2d82-401d-bb79-c602857cd41c"}, "is_support": false}, "guid": "b1779abe-3b05-47a7-b32f-7058098779cb"}, "60cc127e-a4f7-4147-84bb-5571565845d9": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"150": {"x": 7.174, "y": -0.5, "z": 1.5}, "151": {"x": 7.174, "y": 0.5, "z": 1.5}, "152": {"x": 9.174, "y": 0.5, "z": 1.5}, "153": {"x": 9.174, "y": -0.5, "z": 1.5}, "155": {"x": 9.174, "y": -0.5, "z": 2.0}, "154": {"x": 7.174, "y": -0.5, "z": 2.0}, "156": {"x": 9.174, "y": 0.5, "z": 2.0}, "157": {"x": 7.174, "y": 0.5, "z": 2.0}}, "face": {"0": [150, 151, 152, 153], "1": [150, 153, 155, 154], "2": [153, 152, 156, 155], "3": [152, 151, 157, 156], "4": [151, 150, 154, 157], "5": [154, 155, 156, 157]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 157, "max_face": 5}, "inheritance": [], "name": "Mesh_20", "guid": "cbda28bc-e674-4897-8fdc-87e97693ed94"}, "is_support": false}, "guid": "60cc127e-a4f7-4147-84bb-5571565845d9"}, "b6d08125-f484-4091-9609-7314f3ae6f55": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"158": {"x": 9.224, "y": -0.5, "z": 1.5}, "159": {"x": 9.224, "y": 0.5, "z": 1.5}, "118": {"x": 10.2, "y": 0.5, "z": 1.5}, "117": {"x": 10.2, "y": -0.5, "z": 1.5}, "161": {"x": 10.2, "y": -0.5, "z": 2.0}, "160": {"x": 9.224, "y": -0.5, "z": 2.0}, "162": {"x": 10.2, "y": 0.5, "z": 2.0}, "163": {"x": 9.224, "y": 0.5, "z": 2.0}}, "face": {"0": [158, 159, 118, 117], "1": [158, 117, 161, 160], "2": [117, 118, 162, 161], "3": [118, 159, 163, 162], "4": [159, 158, 160, 163], "5": [160, 161, 162, 163]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 163, "max_face": 5}, "inheritance": [], "name": "Mesh_21", "guid": "560666b6-d75a-45df-9039-5bebbdc85ce8"}, "is_support": false}, "guid": "b6d08125-f484-4091-9609-7314f3ae6f55"}, "1e5eee56-2da5-4cbd-90fe-ea05d5c74c4c": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"122": {"x": 0.0, "y": -0.5, "z": 2.0}, "125": {"x": 0.0, "y": 0.5, "z": 2.0}, "164": {"x": 2.0, "y": 0.5, "z": 2.0}, "165": {"x": 2.0, "y": -0.5, "z": 2.0}, "167": {"x": 2.0, "y": -0.5, "z": 2.5}, "166": {"x": 0.0, "y": -0.5, "z": 2.5}, "168": {"x": 2.0, "y": 0.5, "z": 2.5}, "169": {"x": 0.0, "y": 0.5, "z": 2.5}}, "face": {"0": [122, 125, 164, 165], "1": [122, 165, 167, 166], "2": [165, 164, 168, 167], "3": [164, 125, 169, 168], "4": [125, 122, 166, 169], "5": [166, 167, 168, 169]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 169, "max_face": 5}, "inheritance": [], "name": "Mesh_22", "guid": "749ed06b-147b-49ca-9dfa-1aace4192d76"}, "is_support": false}, "guid": "1e5eee56-2da5-4cbd-90fe-ea05d5c74c4c"}, "b2a7280a-60a8-434a-b4de-134bd5e95216": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"170": {"x": 2.05, "y": -0.5, "z": 2.0}, "171": {"x": 2.05, "y": 0.5, "z": 2.0}, "172": {"x": 4.05, "y": 0.5, "z": 2.0}, "173": {"x": 4.05, "y": -0.5, "z": 2.0}, "175": {"x": 4.05, "y": -0.5, "z": 2.5}, "174": {"x": 2.05, "y": -0.5, "z": 2.5}, "176": {"x": 4.05, "y": 0.5, "z": 2.5}, "177": {"x": 2.05, "y": 0.5, "z": 2.5}}, "face": {"0": [170, 171, 172, 173], "1": [170, 173, 175, 174], "2": [173, 172, 176, 175], "3": [172, 171, 177, 176], "4": [171, 170, 174, 177], "5": [174, 175, 176, 177]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 177, "max_face": 5}, "inheritance": [], "name": "Mesh_23", "guid": "9baa4c01-7c96-441d-b1af-8d82964045fb"}, "is_support": false}, "guid": "b2a7280a-60a8-434a-b4de-134bd5e95216"}, "5d5eaafe-bf89-44ef-80de-fa74a65c7b80": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"178": {"x": 4.1, "y": -0.5, "z": 2.0}, "179": {"x": 4.1, "y": 0.5, "z": 2.0}, "180": {"x": 6.1, "y": 0.5, "z": 2.0}, "181": {"x": 6.1, "y": -0.5, "z": 2.0}, "183": {"x": 6.1, "y": -0.5, "z": 2.5}, "182": {"x": 4.1, "y": -0.5, "z": 2.5}, "184": {"x": 6.1, "y": 0.5, "z": 2.5}, "185": {"x": 4.1, "y": 0.5, "z": 2.5}}, "face": {"0": [178, 179, 180, 181], "1": [178, 181, 183, 182], "2": [181, 180, 184, 183], "3": [180, 179, 185, 184], "4": [179, 178, 182, 185], "5": [182, 183, 184, 185]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 185, "max_face": 5}, "inheritance": [], "name": "Mesh_24", "guid": "87ee3464-dbde-438c-a1d3-af7b270db880"}, "is_support": false}, "guid": "5d5eaafe-bf89-44ef-80de-fa74a65c7b80"}, "f649a802-320d-4b32-8f84-60410f35097b": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"186": {"x": 6.15, "y": -0.5, "z": 2.0}, "187": {"x": 6.15, "y": 0.5, "z": 2.0}, "188": {"x": 8.15, "y": 0.5, "z": 2.0}, "189": {"x": 8.15, "y": -0.5, "z": 2.0}, "191": {"x": 8.15, "y": -0.5, "z": 2.5}, "190": {"x": 6.15, "y": -0.5, "z": 2.5}, "192": {"x": 8.15, "y": 0.5, "z": 2.5}, "193": {"x": 6.15, "y": 0.5, "z": 2.5}}, "face": {"0": [186, 187, 188, 189], "1": [186, 189, 191, 190], "2": [189, 188, 192, 191], "3": [188, 187, 193, 192], "4": [187, 186, 190, 193], "5": [190, 191, 192, 193]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 193, "max_face": 5}, "inheritance": [], "name": "Mesh_25", "guid": "a0a0ea0d-1a75-48fc-a9ee-4e679c2f3a59"}, "is_support": false}, "guid": "f649a802-320d-4b32-8f84-60410f35097b"}, "604ceb70-a5aa-4448-935b-59341a8e45dd": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"194": {"x": 8.2, "y": -0.5, "z": 2.0}, "195": {"x": 8.2, "y": 0.5, "z": 2.0}, "162": {"x": 10.2, "y": 0.5, "z": 2.0}, "161": {"x": 10.2, "y": -0.5, "z": 2.0}, "197": {"x": 10.2, "y": -0.5, "z": 2.5}, "196": {"x": 8.2, "y": -0.5, "z": 2.5}, "198": {"x": 10.2, "y": 0.5, "z": 2.5}, "199": {"x": 8.2, "y": 0.5, "z": 2.5}}, "face": {"0": [194, 195, 162, 161], "1": [194, 161, 197, 196], "2": [161, 162, 198, 197], "3": [162, 195, 199, 198], "4": [195, 194, 196, 199], "5": [196, 197, 198, 199]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 199, "max_face": 5}, "inheritance": [], "name": "Mesh_26", "guid": "b4eca98c-af40-44f7-9c74-c149754a30a3"}, "is_support": false}, "guid": "604ceb70-a5aa-4448-935b-59341a8e45dd"}, "04b1925a-8c30-4f17-9c65-c8da1f6f9ea7": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"166": {"x": 0.0, "y": -0.5, "z": 2.5}, "169": {"x": 0.0, "y": 0.5, "z": 2.5}, "200": {"x": 0.974, "y": 0.5, "z": 2.5}, "201": {"x": 0.974, "y": -0.5, "z": 2.5}, "203": {"x": 0.974, "y": -0.5, "z": 3.0}, "202": {"x": 0.0, "y": -0.5, "z": 3.0}, "204": {"x": 0.974, "y": 0.5, "z": 3.0}, "205": {"x": 0.0, "y": 0.5, "z": 3.0}}, "face": {"0": [166, 169, 200, 201], "1": [166, 201, 203, 202], "2": [201, 200, 204, 203], "3": [200, 169, 205, 204], "4": [169, 166, 202, 205], "5": [202, 203, 204, 205]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 205, "max_face": 5}, "inheritance": [], "name": "Mesh_27", "guid": "fc2840ee-555d-40df-a3f7-3172b003624f"}, "is_support": false}, "guid": "04b1925a-8c30-4f17-9c65-c8da1f6f9ea7"}, "f2167b9b-7ecd-4fd8-ab09-230b4451925e": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"206": {"x": 1.024, "y": -0.5, "z": 2.5}, "207": {"x": 1.024, "y": 0.5, "z": 2.5}, "208": {"x": 3.024, "y": 0.5, "z": 2.5}, "209": {"x": 3.024, "y": -0.5, "z": 2.5}, "211": {"x": 3.024, "y": -0.5, "z": 3.0}, "210": {"x": 1.024, "y": -0.5, "z": 3.0}, "212": {"x": 3.024, "y": 0.5, "z": 3.0}, "213": {"x": 1.024, "y": 0.5, "z": 3.0}}, "face": {"0": [206, 207, 208, 209], "1": [206, 209, 211, 210], "2": [209, 208, 212, 211], "3": [208, 207, 213, 212], "4": [207, 206, 210, 213], "5": [210, 211, 212, 213]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 213, "max_face": 5}, "inheritance": [], "name": "Mesh_28", "guid": "82212b9f-df16-410e-8811-4a411502fcc4"}, "is_support": false}, "guid": "f2167b9b-7ecd-4fd8-ab09-230b4451925e"}, "eafe1592-ebe9-44f2-851e-faaedfe01783": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"214": {"x": 3.074, "y": -0.5, "z": 2.5}, "215": {"x": 3.074, "y": 0.5, "z": 2.5}, "216": {"x": 5.074, "y": 0.5, "z": 2.5}, "217": {"x": 5.074, "y": -0.5, "z": 2.5}, "219": {"x": 5.074, "y": -0.5, "z": 3.0}, "218": {"x": 3.074, "y": -0.5, "z": 3.0}, "220": {"x": 5.074, "y": 0.5, "z": 3.0}, "221": {"x": 3.074, "y": 0.5, "z": 3.0}}, "face": {"0": [214, 215, 216, 217], "1": [214, 217, 219, 218], "2": [217, 216, 220, 219], "3": [216, 215, 221, 220], "4": [215, 214, 218, 221], "5": [218, 219, 220, 221]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 221, "max_face": 5}, "inheritance": [], "name": "Mesh_29", "guid": "c1a71f59-6c41-4959-ba96-a40b57905ea0"}, "is_support": false}, "guid": "eafe1592-ebe9-44f2-851e-faaedfe01783"}, "05edee34-9f52-4496-b2bc-1efca28333a6": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"222": {"x": 5.124, "y": -0.5, "z": 2.5}, "223": {"x": 5.124, "y": 0.5, "z": 2.5}, "224": {"x": 7.124, "y": 0.5, "z": 2.5}, "225": {"x": 7.124, "y": -0.5, "z": 2.5}, "227": {"x": 7.124, "y": -0.5, "z": 3.0}, "226": {"x": 5.124, "y": -0.5, "z": 3.0}, "228": {"x": 7.124, "y": 0.5, "z": 3.0}, "229": {"x": 5.124, "y": 0.5, "z": 3.0}}, "face": {"0": [222, 223, 224, 225], "1": [222, 225, 227, 226], "2": [225, 224, 228, 227], "3": [224, 223, 229, 228], "4": [223, 222, 226, 229], "5": [226, 227, 228, 229]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 229, "max_face": 5}, "inheritance": [], "name": "Mesh_30", "guid": "bf6c8e43-2888-4d5e-acba-cbe3670db391"}, "is_support": false}, "guid": "05edee34-9f52-4496-b2bc-1efca28333a6"}, "6cdf546d-5f0e-4fa6-923a-fc9724267964": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"230": {"x": 7.174, "y": -0.5, "z": 2.5}, "231": {"x": 7.174, "y": 0.5, "z": 2.5}, "232": {"x": 9.174, "y": 0.5, "z": 2.5}, "233": {"x": 9.174, "y": -0.5, "z": 2.5}, "235": {"x": 9.174, "y": -0.5, "z": 3.0}, "234": {"x": 7.174, "y": -0.5, "z": 3.0}, "236": {"x": 9.174, "y": 0.5, "z": 3.0}, "237": {"x": 7.174, "y": 0.5, "z": 3.0}}, "face": {"0": [230, 231, 232, 233], "1": [230, 233, 235, 234], "2": [233, 232, 236, 235], "3": [232, 231, 237, 236], "4": [231, 230, 234, 237], "5": [234, 235, 236, 237]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 237, "max_face": 5}, "inheritance": [], "name": "Mesh_31", "guid": "82c8a39a-2417-4faf-a4e2-e8554f45788a"}, "is_support": false}, "guid": "6cdf546d-5f0e-4fa6-923a-fc9724267964"}, "a83d1a76-13b1-4a6e-a896-e2b26c9fa12e": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"238": {"x": 9.224, "y": -0.5, "z": 2.5}, "239": {"x": 9.224, "y": 0.5, "z": 2.5}, "198": {"x": 10.2, "y": 0.5, "z": 2.5}, "197": {"x": 10.2, "y": -0.5, "z": 2.5}, "241": {"x": 10.2, "y": -0.5, "z": 3.0}, "240": {"x": 9.224, "y": -0.5, "z": 3.0}, "242": {"x": 10.2, "y": 0.5, "z": 3.0}, "243": {"x": 9.224, "y": 0.5, "z": 3.0}}, "face": {"0": [238, 239, 198, 197], "1": [238, 197, 241, 240], "2": [197, 198, 242, 241], "3": [198, 239, 243, 242], "4": [239, 238, 240, 243], "5": [240, 241, 242, 243]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 243, "max_face": 5}, "inheritance": [], "name": "Mesh_32", "guid": "c6c0d1fa-f72f-4191-920b-de14cf1eb0a6"}, "is_support": false}, "guid": "a83d1a76-13b1-4a6e-a896-e2b26c9fa12e"}, "33c76283-d4dd-4efe-a5ae-78d768f4ecda": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"202": {"x": 0.0, "y": -0.5, "z": 3.0}, "205": {"x": 0.0, "y": 0.5, "z": 3.0}, "244": {"x": 2.0, "y": 0.5, "z": 3.0}, "245": {"x": 2.0, "y": -0.5, "z": 3.0}, "247": {"x": 2.0, "y": -0.5, "z": 3.5}, "246": {"x": 0.0, "y": -0.5, "z": 3.5}, "248": {"x": 2.0, "y": 0.5, "z": 3.5}, "249": {"x": 0.0, "y": 0.5, "z": 3.5}}, "face": {"0": [202, 205, 244, 245], "1": [202, 245, 247, 246], "2": [245, 244, 248, 247], "3": [244, 205, 249, 248], "4": [205, 202, 246, 249], "5": [246, 247, 248, 249]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 249, "max_face": 5}, "inheritance": [], "name": "Mesh_33", "guid": "431aa7d6-0a2b-4fea-945f-f4621b0c6f0a"}, "is_support": false}, "guid": "33c76283-d4dd-4efe-a5ae-78d768f4ecda"}, "91289d6c-bb54-43ad-b174-741888976acd": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"250": {"x": 2.05, "y": -0.5, "z": 3.0}, "251": {"x": 2.05, "y": 0.5, "z": 3.0}, "252": {"x": 4.05, "y": 0.5, "z": 3.0}, "253": {"x": 4.05, "y": -0.5, "z": 3.0}, "255": {"x": 4.05, "y": -0.5, "z": 3.5}, "254": {"x": 2.05, "y": -0.5, "z": 3.5}, "256": {"x": 4.05, "y": 0.5, "z": 3.5}, "257": {"x": 2.05, "y": 0.5, "z": 3.5}}, "face": {"0": [250, 251, 252, 253], "1": [250, 253, 255, 254], "2": [253, 252, 256, 255], "3": [252, 251, 257, 256], "4": [251, 250, 254, 257], "5": [254, 255, 256, 257]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 257, "max_face": 5}, "inheritance": [], "name": "Mesh_34", "guid": "1ad57511-99b9-4ab0-9785-137de485b55f"}, "is_support": false}, "guid": "91289d6c-bb54-43ad-b174-741888976acd"}, "9d06a281-1727-4d75-80e3-2b065a67bf8f": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"258": {"x": 4.1, "y": -0.5, "z": 3.0}, "259": {"x": 4.1, "y": 0.5, "z": 3.0}, "260": {"x": 6.1, "y": 0.5, "z": 3.0}, "261": {"x": 6.1, "y": -0.5, "z": 3.0}, "263": {"x": 6.1, "y": -0.5, "z": 3.5}, "262": {"x": 4.1, "y": -0.5, "z": 3.5}, "264": {"x": 6.1, "y": 0.5, "z": 3.5}, "265": {"x": 4.1, "y": 0.5, "z": 3.5}}, "face": {"0": [258, 259, 260, 261], "1": [258, 261, 263, 262], "2": [261, 260, 264, 263], "3": [260, 259, 265, 264], "4": [259, 258, 262, 265], "5": [262, 263, 264, 265]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 265, "max_face": 5}, "inheritance": [], "name": "Mesh_35", "guid": "1814db72-a45e-4bbb-927d-1b011360807b"}, "is_support": false}, "guid": "9d06a281-1727-4d75-80e3-2b065a67bf8f"}, "5e96ffca-cba8-47f2-9a7e-bfeb9f491c49": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"266": {"x": 6.15, "y": -0.5, "z": 3.0}, "267": {"x": 6.15, "y": 0.5, "z": 3.0}, "268": {"x": 8.15, "y": 0.5, "z": 3.0}, "269": {"x": 8.15, "y": -0.5, "z": 3.0}, "271": {"x": 8.15, "y": -0.5, "z": 3.5}, "270": {"x": 6.15, "y": -0.5, "z": 3.5}, "272": {"x": 8.15, "y": 0.5, "z": 3.5}, "273": {"x": 6.15, "y": 0.5, "z": 3.5}}, "face": {"0": [266, 267, 268, 269], "1": [266, 269, 271, 270], "2": [269, 268, 272, 271], "3": [268, 267, 273, 272], "4": [267, 266, 270, 273], "5": [270, 271, 272, 273]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 273, "max_face": 5}, "inheritance": [], "name": "Mesh_36", "guid": "0997870e-9f8c-40ac-85f8-09284955035a"}, "is_support": false}, "guid": "5e96ffca-cba8-47f2-9a7e-bfeb9f491c49"}, "db6c2013-a193-49e6-8d1e-daf8132787c1": {"dtype": "compas_dem.elements/Block", "data": {"transformation": null, "features": [], "name": "Block", "material": null, "geometry": {"dtype": "compas.datastructures/Mesh", "data": {"attributes": {}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"274": {"x": 8.2, "y": -0.5, "z": 3.0}, "275": {"x": 8.2, "y": 0.5, "z": 3.0}, "242": {"x": 10.2, "y": 0.5, "z": 3.0}, "241": {"x": 10.2, "y": -0.5, "z": 3.0}, "277": {"x": 10.2, "y": -0.5, "z": 3.5}, "276": {"x": 8.2, "y": -0.5, "z": 3.5}, "278": {"x": 10.2, "y": 0.5, "z": 3.5}, "279": {"x": 8.2, "y": 0.5, "z": 3.5}}, "face": {"0": [274, 275, 242, 241], "1": [274, 241, 277, 276], "2": [241, 242, 278, 277], "3": [242, 275, 279, 278], "4": [275, 274, 276, 279], "5": [276, 277, 278, 279]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 279, "max_face": 5}, "inheritance": [], "name": "Mesh_37", "guid": "b63c9dba-815e-4a91-82cf-859ff7a82c6f"}, "is_support": false}, "guid": "db6c2013-a193-49e6-8d1e-daf8132787c1"}}, "materials": {}, "tree": {"attributes": {}, "root": {"name": "root", "children": [{"name": "ElementNode", "element": "e0a5c168-7e3d-442e-9971-339fe5caee54"}, {"name": "ElementNode", "element": "e6a73d92-d11b-4eae-a13f-aa7fed60772a"}, {"name": "ElementNode", "element": "66832273-c7e0-40e8-b9a8-70498facf1a1"}, {"name": "ElementNode", "element": "6ba56fd2-561b-4538-8db9-c98f6e697450"}, {"name": "ElementNode", "element": "d85d21fa-71f9-4680-a20a-80f6a559c904"}, {"name": "ElementNode", "element": "62fe7171-e036-4b21-81b2-03780c2877ab"}, {"name": "ElementNode", "element": "4f21e307-8e08-4ba4-a46a-f3de2ee55c96"}, {"name": "ElementNode", "element": "cfd06bf1-da59-49af-bdb5-9c72a014a45e"}, {"name": "ElementNode", "element": "056acc52-ff6f-421a-9e75-f2c3e8b99a5f"}, {"name": "ElementNode", "element": "5de6d494-8bb4-4093-a2c0-7fb984dc86f7"}, {"name": "ElementNode", "element": "db809c52-8d8d-4934-9519-e71534e91bbe"}, {"name": "ElementNode", "element": "86a7c6f4-4401-4838-9def-677aa92ab551"}, {"name": "ElementNode", "element": "4b97afbd-41d0-490d-a008-5c83df691ddf"}, {"name": "ElementNode", "element": "3b42dff9-2751-4628-ae05-95cef1378f82"}, {"name": "ElementNode", "element": "6bad33b1-86ab-4869-a9e4-8102d2d0bdaa"}, {"name": "ElementNode", "element": "2c3104e4-f14a-4028-b845-9723815bcf09"}, {"name": "ElementNode", "element": "5bde50c6-b9a5-4344-92f4-3849fdc7b70e"}, {"name": "ElementNode", "element": "0ffc7caa-bf16-48e0-993d-4e181ad74b89"}, {"name": "ElementNode", "element": "d8469193-e522-4280-8803-2df87daf93f4"}, {"name": "ElementNode", "element": "b1779abe-3b05-47a7-b32f-7058098779cb"}, {"name": "ElementNode", "element": "60cc127e-a4f7-4147-84bb-5571565845d9"}, {"name": "ElementNode", "element": "b6d08125-f484-4091-9609-7314f3ae6f55"}, {"name": "ElementNode", "element": "1e5eee56-2da5-4cbd-90fe-ea05d5c74c4c"}, {"name": "ElementNode", "element": "b2a7280a-60a8-434a-b4de-134bd5e95216"}, {"name": "ElementNode", "element": "5d5eaafe-bf89-44ef-80de-fa74a65c7b80"}, {"name": "ElementNode", "element": "f649a802-320d-4b32-8f84-60410f35097b"}, {"name": "ElementNode", "element": "604ceb70-a5aa-4448-935b-59341a8e45dd"}, {"name": "ElementNode", "element": "04b1925a-8c30-4f17-9c65-c8da1f6f9ea7"}, {"name": "ElementNode", "element": "f2167b9b-7ecd-4fd8-ab09-230b4451925e"}, {"name": "ElementNode", "element": "eafe1592-ebe9-44f2-851e-faaedfe01783"}, {"name": "ElementNode", "element": "05edee34-9f52-4496-b2bc-1efca28333a6"}, {"name": "ElementNode", "element": "6cdf546d-5f0e-4fa6-923a-fc9724267964"}, {"name": "ElementNode", "element": "a83d1a76-13b1-4a6e-a896-e2b26c9fa12e"}, {"name": "ElementNode", "element": "33c76283-d4dd-4efe-a5ae-78d768f4ecda"}, {"name": "ElementNode", "element": "91289d6c-bb54-43ad-b174-741888976acd"}, {"name": "ElementNode", "element": "9d06a281-1727-4d75-80e3-2b065a67bf8f"}, {"name": "ElementNode", "element": "5e96ffca-cba8-47f2-9a7e-bfeb9f491c49"}, {"name": "ElementNode", "element": "db6c2013-a193-49e6-8d1e-daf8132787c1"}]}}, "graph": {"attributes": {}, "default_node_attributes": {"x": 0.0, "y": 0.0, "z": 0.0, "element": null}, "default_edge_attributes": {"modifiers": null, "contacts": null}, "node": {"0": {"element": "e0a5c168-7e3d-442e-9971-339fe5caee54"}, "1": {"element": "e6a73d92-d11b-4eae-a13f-aa7fed60772a"}, "2": {"element": "66832273-c7e0-40e8-b9a8-70498facf1a1"}, "3": {"element": "6ba56fd2-561b-4538-8db9-c98f6e697450"}, "4": {"element": "d85d21fa-71f9-4680-a20a-80f6a559c904"}, "5": {"element": "62fe7171-e036-4b21-81b2-03780c2877ab"}, "6": {"element": "4f21e307-8e08-4ba4-a46a-f3de2ee55c96"}, "7": {"element": "cfd06bf1-da59-49af-bdb5-9c72a014a45e"}, "8": {"element": "056acc52-ff6f-421a-9e75-f2c3e8b99a5f"}, "9": {"element": "5de6d494-8bb4-4093-a2c0-7fb984dc86f7"}, "10": {"element": "db809c52-8d8d-4934-9519-e71534e91bbe"}, "11": {"element": "86a7c6f4-4401-4838-9def-677aa92ab551"}, "12": {"element": "4b97afbd-41d0-490d-a008-5c83df691ddf"}, "13": {"element": "3b42dff9-2751-4628-ae05-95cef1378f82"}, "14": {"element": "6bad33b1-86ab-4869-a9e4-8102d2d0bdaa"}, "15": {"element": "2c3104e4-f14a-4028-b845-9723815bcf09"}, "16": {"element": "5bde50c6-b9a5-4344-92f4-3849fdc7b70e"}, "17": {"element": "0ffc7caa-bf16-48e0-993d-4e181ad74b89"}, "18": {"element": "d8469193-e522-4280-8803-2df87daf93f4"}, "19": {"element": "b1779abe-3b05-47a7-b32f-7058098779cb"}, "20": {"element": "60cc127e-a4f7-4147-84bb-5571565845d9"}, "21": {"element": "b6d08125-f484-4091-9609-7314f3ae6f55"}, "22": {"element": "1e5eee56-2da5-4cbd-90fe-ea05d5c74c4c"}, "23": {"element": "b2a7280a-60a8-434a-b4de-134bd5e95216"}, "24": {"element": "5d5eaafe-bf89-44ef-80de-fa74a65c7b80"}, "25": {"element": "f649a802-320d-4b32-8f84-60410f35097b"}, "26": {"element": "604ceb70-a5aa-4448-935b-59341a8e45dd"}, "27": {"element": "04b1925a-8c30-4f17-9c65-c8da1f6f9ea7"}, "28": {"element": "f2167b9b-7ecd-4fd8-ab09-230b4451925e"}, "29": {"element": "eafe1592-ebe9-44f2-851e-faaedfe01783"}, "30": {"element": "05edee34-9f52-4496-b2bc-1efca28333a6"}, "31": {"element": "6cdf546d-5f0e-4fa6-923a-fc9724267964"}, "32": {"element": "a83d1a76-13b1-4a6e-a896-e2b26c9fa12e"}, "33": {"element": "33c76283-d4dd-4efe-a5ae-78d768f4ecda"}, "34": {"element": "91289d6c-bb54-43ad-b174-741888976acd"}, "35": {"element": "9d06a281-1727-4d75-80e3-2b065a67bf8f"}, "36": {"element": "5e96ffca-cba8-47f2-9a7e-bfeb9f491c49"}, "37": {"element": "db6c2013-a193-49e6-8d1e-daf8132787c1"}}, "edge": {"0": {"5": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [0.0, -0.5, 0.5], "guid": "b932aa66-6b2d-4cff-9942-236cda8d64f2"}, {"dtype": "compas.geometry/Point", "data": [0.0, 0.5, 0.5], "guid": "7e090d19-5661-4ac2-8fba-3a750cc799fc"}, {"dtype": "compas.geometry/Point", "data": [0.974, 0.5, 0.5], "guid": "5b4f4225-953a-42ef-8284-bffd8620cf93"}, {"dtype": "compas.geometry/Point", "data": [0.974, -0.5, 0.5], "guid": "fbbd863f-95d7-4184-84a4-73a7d4eed269"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [0.487, 0.0, 0.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "bc754c9a-5d3c-42ba-9ad5-ae72209c6891"}, "size": 0.974, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "6f56e74d-a0e7-4861-9aeb-b874d760f9b0"}]}, "6": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [1.024, -0.5, 0.5], "guid": "d836e43c-0693-4153-a916-c9c8f3856ec9"}, {"dtype": "compas.geometry/Point", "data": [1.024, 0.5, 0.5], "guid": "2b53dd09-83dc-4564-bb58-3b65e88e5a1a"}, {"dtype": "compas.geometry/Point", "data": [2.0, 0.5, 0.5], "guid": "e90772ad-9d68-4379-aaea-4c236e73be50"}, {"dtype": "compas.geometry/Point", "data": [2.0, -0.5, 0.5], "guid": "dcafa812-cba4-4757-bda4-8e9de07398d4"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [1.5119999999999998, 0.0, 0.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "44cc929d-f0ee-4f63-9dca-01c772b0f3f0"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "54b337b5-de53-48fe-973f-40db55754bfa"}]}}, "1": {"6": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [2.05, -0.5, 0.5], "guid": "bb327a5a-198c-41dc-8621-3e2fb48962b7"}, {"dtype": "compas.geometry/Point", "data": [2.05, 0.5, 0.5], "guid": "a9c348d6-6a93-435f-8361-1d0715db0583"}, {"dtype": "compas.geometry/Point", "data": [3.024, 0.5, 0.5], "guid": "31ffe25a-4d82-405c-a96f-a8e9805eeef1"}, {"dtype": "compas.geometry/Point", "data": [3.024, -0.5, 0.5], "guid": "2b0d9416-bc18-4a7f-98af-404c6dc51e67"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [2.537, 0.0, 0.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "af83816c-581e-4cd6-aeb9-8027e270e139"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "f1ccd790-b371-4e4d-982c-cce4305ded90"}]}, "7": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [3.074, -0.5, 0.5], "guid": "e4acabc3-e88d-4293-9c90-a4dc059ab2cc"}, {"dtype": "compas.geometry/Point", "data": [3.074, 0.5, 0.5], "guid": "73768cee-99c0-47f7-9456-fc3b9634b5ff"}, {"dtype": "compas.geometry/Point", "data": [4.05, 0.5, 0.5], "guid": "89b4c965-d5e9-443a-9e0a-6574da6a80a1"}, {"dtype": "compas.geometry/Point", "data": [4.05, -0.5, 0.5], "guid": "6e9e43fa-8034-49a5-8f80-eac53291e06e"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [3.562, 0.0, 0.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "6bf7e9cd-6471-4e67-b20c-2f09ff46edef"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "225024bb-b1f7-4190-894d-5396f9e63c7e"}]}}, "2": {"7": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [4.1, -0.5, 0.5], "guid": "07435a45-a2fe-4438-b6f9-37926510d54f"}, {"dtype": "compas.geometry/Point", "data": [4.1, 0.5, 0.5], "guid": "4d1892ab-74a1-4680-b300-1be5eb2c8849"}, {"dtype": "compas.geometry/Point", "data": [5.074, 0.5, 0.5], "guid": "b2f6910b-33c7-44d4-8d79-318f7e36ab5f"}, {"dtype": "compas.geometry/Point", "data": [5.074, -0.5, 0.5], "guid": "49e098f4-98c5-401a-9e4d-560437d107e3"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [4.587, 0.0, 0.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "18baff70-b0a9-4b67-a88b-ec6e51126495"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "2b05ef5a-8781-4742-9f9e-13e2f7a75f6f"}]}, "8": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [5.124, -0.5, 0.5], "guid": "f3783561-a532-4cb7-bacb-7b303999c71e"}, {"dtype": "compas.geometry/Point", "data": [5.124, 0.5, 0.5], "guid": "b53d3bec-b182-47c8-8235-cae9c9fa8df0"}, {"dtype": "compas.geometry/Point", "data": [6.1, 0.5, 0.5], "guid": "aee6333a-e7c8-4a8a-a112-d0789d512b2d"}, {"dtype": "compas.geometry/Point", "data": [6.1, -0.5, 0.5], "guid": "ce7e0b8a-8567-44ce-b1fc-d22c37a69d2f"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [5.611999999999999, 0.0, 0.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "4394378b-9288-4b60-883e-a3d99c750d69"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "cc099d00-6c24-4e01-adf3-e5642661bfda"}]}}, "3": {"8": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [6.15, -0.5, 0.5], "guid": "9d19f0e0-70a7-424b-9d73-a75c191f5854"}, {"dtype": "compas.geometry/Point", "data": [6.15, 0.5, 0.5], "guid": "ab710bcb-1a40-4008-9a7c-db6484ba01ee"}, {"dtype": "compas.geometry/Point", "data": [7.124, 0.5, 0.5], "guid": "6969d907-24ba-45fa-8450-80a942fab2e0"}, {"dtype": "compas.geometry/Point", "data": [7.124, -0.5, 0.5], "guid": "721ac0f6-71d8-4c1a-b0bf-e19f26cd73d8"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [6.6370000000000005, 0.0, 0.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "6988efa3-d1a5-469c-9e4d-2e3ae121290e"}, "size": 0.9739999999999993, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "18a02665-df54-4867-bda4-8162df06bd94"}]}, "9": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [7.174, -0.5, 0.5], "guid": "dbb3c7be-31c8-4c62-aba0-77c0b8f7a7b6"}, {"dtype": "compas.geometry/Point", "data": [7.174, 0.5, 0.5], "guid": "33315786-1c9b-4cc0-9d34-b5ffa867b66c"}, {"dtype": "compas.geometry/Point", "data": [8.15, 0.5, 0.5], "guid": "35434061-ff20-42f6-874e-774924831ab6"}, {"dtype": "compas.geometry/Point", "data": [8.15, -0.5, 0.5], "guid": "d072e076-6f0d-4399-b309-211058fbd7cb"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [7.662000000000001, 0.0, 0.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "a8df1872-f86f-44af-a27f-662a7534e426"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "1e30ddbc-97cf-44fe-8a0b-d9d1a02a9f4f"}]}}, "4": {"9": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [8.2, -0.5, 0.5], "guid": "6757413f-f260-4aca-8ea2-ac9bd3d0acbe"}, {"dtype": "compas.geometry/Point", "data": [8.2, 0.5, 0.5], "guid": "5962ba3f-2b6e-400c-a0f3-e04d52a4081e"}, {"dtype": "compas.geometry/Point", "data": [9.174, 0.5, 0.5], "guid": "2948d52c-0946-4ce4-a702-1f44607db607"}, {"dtype": "compas.geometry/Point", "data": [9.174, -0.5, 0.5], "guid": "90cb9f3f-7e43-41f4-92ce-b263ec5e6871"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [8.687, 0.0, 0.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "829a5086-af8e-4def-b7e9-2dc7c5ad2185"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "49dede91-c690-450b-a0bb-43d47b30a110"}]}, "10": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [9.224, -0.5, 0.5], "guid": "d984c686-8c71-4426-8bde-9490ce12f8c8"}, {"dtype": "compas.geometry/Point", "data": [9.224, 0.5, 0.5], "guid": "b1a5fed9-929e-4eab-a7db-2a3db9124e9d"}, {"dtype": "compas.geometry/Point", "data": [10.2, 0.5, 0.5], "guid": "d4299e0a-b70d-4721-b932-0ae3c60be018"}, {"dtype": "compas.geometry/Point", "data": [10.2, -0.5, 0.5], "guid": "d5d384b5-b024-4cdd-ad7d-a9ce81cfec07"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [9.712, 0.0, 0.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "a56c6809-7112-413b-96fb-30221ebb16c2"}, "size": 0.9759999999999991, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "c9a364ef-e212-4427-85dd-2e22be468842"}]}}, "5": {"11": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [0.0, -0.5, 1.0], "guid": "f63d2a00-ca60-4988-81e9-0b789a928e15"}, {"dtype": "compas.geometry/Point", "data": [0.0, 0.5, 1.0], "guid": "022e40c4-0ad4-4a4c-bef0-2dab86566d29"}, {"dtype": "compas.geometry/Point", "data": [0.974, 0.5, 1.0], "guid": "3f2353dc-f773-48a5-a2ba-191e58253b6a"}, {"dtype": "compas.geometry/Point", "data": [0.974, -0.5, 1.0], "guid": "3fef5d14-76d8-48a5-af0f-e5c33db678fd"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [0.487, 0.0, 1.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "238e3b0e-3708-4566-9984-8231dfc3e73d"}, "size": 0.974, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "89fe0467-68f5-4fe7-ac11-169ba20804c4"}]}}, "6": {"11": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [1.024, -0.5, 1.0], "guid": "a2a17882-699f-4aa7-8438-2c8f499a9527"}, {"dtype": "compas.geometry/Point", "data": [1.024, 0.5, 1.0], "guid": "8786989c-bfce-4397-b5f6-8b36967e8a62"}, {"dtype": "compas.geometry/Point", "data": [2.0, 0.5, 1.0], "guid": "d54a00b8-7ce0-4c3b-bf86-8191e9acfeac"}, {"dtype": "compas.geometry/Point", "data": [2.0, -0.5, 1.0], "guid": "1a67775c-2958-4499-940f-57bca690a33a"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [1.5119999999999998, 0.0, 1.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "e0432133-dfa0-4b5e-af62-d10b917fc0b3"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "27b8ff7e-53d6-462e-b9c4-0bba3966e9b4"}]}, "12": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [2.05, -0.5, 1.0], "guid": "49246ae9-55a3-4d58-817e-4754d9d002ba"}, {"dtype": "compas.geometry/Point", "data": [2.05, 0.5, 1.0], "guid": "105885cc-b66b-4de1-a6e3-1d28878e7145"}, {"dtype": "compas.geometry/Point", "data": [3.024, 0.5, 1.0], "guid": "fbfd8eda-6e9c-4965-bd75-4c9a24c17332"}, {"dtype": "compas.geometry/Point", "data": [3.024, -0.5, 1.0], "guid": "dadfb103-6b08-4e18-a142-b128dbc67236"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [2.537, 0.0, 1.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "c5cad13a-dcb0-4005-91fd-25e2bfdf6a1c"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "ffdf6bc0-6db6-4e52-b66f-0163d20a5db3"}]}}, "7": {"12": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [3.074, -0.5, 1.0], "guid": "eed5a939-7cdf-4065-b648-6eff6789e019"}, {"dtype": "compas.geometry/Point", "data": [3.074, 0.5, 1.0], "guid": "1f6dfdb8-93a2-4a6e-b191-8d21ea4a62e8"}, {"dtype": "compas.geometry/Point", "data": [4.05, 0.5, 1.0], "guid": "b3ad71f3-7741-4c4a-8d77-e3f4a82d4344"}, {"dtype": "compas.geometry/Point", "data": [4.05, -0.5, 1.0], "guid": "9d91af85-b49c-4d10-a3a5-6a80e30fd9e3"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [3.562, 0.0, 1.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "28c9744c-0242-4e00-828d-50809ab3a926"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "585596e2-6a79-4b06-9aec-e145040a10bc"}]}, "13": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [4.1, -0.5, 1.0], "guid": "2aa48b40-8af8-47d1-8780-8332edc18943"}, {"dtype": "compas.geometry/Point", "data": [4.1, 0.5, 1.0], "guid": "1fd11cd0-ce98-4e47-8126-dda658090da0"}, {"dtype": "compas.geometry/Point", "data": [5.074, 0.5, 1.0], "guid": "2a4bba0f-f890-4291-95f2-d868bf403a45"}, {"dtype": "compas.geometry/Point", "data": [5.074, -0.5, 1.0], "guid": "460500ba-ec75-44fd-80b8-9f0d37906327"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [4.587, 0.0, 1.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "72037a69-835b-47c2-8afe-7b64f459b637"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "717491db-b833-4cf7-8b94-b97ad5736930"}]}}, "8": {"14": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [6.15, -0.5, 1.0], "guid": "4bf62d5e-9eb8-4f52-ae43-f514364d46e1"}, {"dtype": "compas.geometry/Point", "data": [6.15, 0.5, 1.0], "guid": "7ecda7cc-2228-42e3-897c-cd0f8e8f23df"}, {"dtype": "compas.geometry/Point", "data": [7.124, 0.5, 1.0], "guid": "6b9dc45f-9fda-4124-a89b-db0e6c95e66f"}, {"dtype": "compas.geometry/Point", "data": [7.124, -0.5, 1.0], "guid": "a8756db0-81de-4d3b-9515-cea34a027961"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [6.6370000000000005, 0.0, 1.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "8d90e006-2f1c-476b-b46c-90da0b3f4917"}, "size": 0.9739999999999993, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "7f9d6cde-3c78-4955-bf52-5a878834ac19"}]}, "13": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [5.124, -0.5, 1.0], "guid": "c5c7b11b-31da-411c-a7d5-9586ec44da9c"}, {"dtype": "compas.geometry/Point", "data": [5.124, 0.5, 1.0], "guid": "6ab2c8b8-9ce4-42e6-aab5-adf849fb69e1"}, {"dtype": "compas.geometry/Point", "data": [6.1, 0.5, 1.0], "guid": "e1abea19-c10e-4d4c-bc9f-e86019b621bd"}, {"dtype": "compas.geometry/Point", "data": [6.1, -0.5, 1.0], "guid": "3939e2fc-902a-4c99-ab05-b04890e34135"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [5.611999999999999, 0.0, 1.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "e3411eef-4f24-4e52-baeb-062f569c174e"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "60612569-c8d9-4c20-a29d-71bc2438f2a3"}]}}, "9": {"14": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [7.174, -0.5, 1.0], "guid": "941bd11e-cbc8-46ac-84ba-dd2032cbaf76"}, {"dtype": "compas.geometry/Point", "data": [7.174, 0.5, 1.0], "guid": "bae7b6a4-7f6f-41e8-bfdb-8e389f92074c"}, {"dtype": "compas.geometry/Point", "data": [8.15, 0.5, 1.0], "guid": "dae3a571-57f7-489b-a29d-01cc15ed4852"}, {"dtype": "compas.geometry/Point", "data": [8.15, -0.5, 1.0], "guid": "556f580c-00a4-4f37-89c2-436f253d63ea"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [7.662000000000001, 0.0, 1.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "a7c4c066-750d-4f85-8140-575a2cdc5aa6"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "2e16e277-6ec1-4897-80ec-c45fc2fe8da8"}]}, "15": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [8.2, -0.5, 1.0], "guid": "6e2a27a0-180d-4851-88dc-46ba4cc434a8"}, {"dtype": "compas.geometry/Point", "data": [8.2, 0.5, 1.0], "guid": "b372fa66-296b-45b0-a4bc-ed5f3011ee13"}, {"dtype": "compas.geometry/Point", "data": [9.174, 0.5, 1.0], "guid": "9c1b72bb-3a84-42b8-bedf-674ea8be870b"}, {"dtype": "compas.geometry/Point", "data": [9.174, -0.5, 1.0], "guid": "17b5b720-37d6-4ba5-a7dc-4085d22dd750"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [8.687, 0.0, 1.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "75109437-4752-453a-a79a-34ed1f15f971"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "cc886f33-ad17-47ae-b82b-19d84aa2d094"}]}}, "10": {"15": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [9.224, -0.5, 1.0], "guid": "4407ce12-29aa-4976-96ff-9db44637f855"}, {"dtype": "compas.geometry/Point", "data": [9.224, 0.5, 1.0], "guid": "8dfffee3-f51f-4914-972a-73dc4b7cf87f"}, {"dtype": "compas.geometry/Point", "data": [10.2, 0.5, 1.0], "guid": "5baac981-91f8-498a-881e-b61eddfd489b"}, {"dtype": "compas.geometry/Point", "data": [10.2, -0.5, 1.0], "guid": "a913aa15-031c-4a1b-a61b-9e5b18f7d581"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [9.712, 0.0, 1.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "f1d13fd6-5ba0-4c93-bbd0-f9dce6f5a7e0"}, "size": 0.9759999999999991, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "f43679df-1bc1-4dda-877b-afa2ca19e4b1"}]}}, "11": {"16": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [0.0, -0.5, 1.5], "guid": "8b5616c8-eaa3-4ce7-b4ad-52fcf0696dde"}, {"dtype": "compas.geometry/Point", "data": [0.0, 0.5, 1.5], "guid": "9acf53b3-f7e4-4588-a759-48fa85570ea9"}, {"dtype": "compas.geometry/Point", "data": [0.974, 0.5, 1.5], "guid": "e33cea45-fbe6-450e-91c2-632efad2c92f"}, {"dtype": "compas.geometry/Point", "data": [0.974, -0.5, 1.5], "guid": "45cad2fb-c261-4845-a76f-5179625ce7f9"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [0.487, 0.0, 1.4999999999999998], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "c49e9c2f-660d-4716-9800-00c50ace18c0"}, "size": 0.974, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "7d4351e4-a792-4d62-b7bf-a241c77669ac"}]}, "17": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [1.024, -0.5, 1.5], "guid": "0607f6cc-652b-4cb9-bace-1ae9b8e104c6"}, {"dtype": "compas.geometry/Point", "data": [1.024, 0.5, 1.5], "guid": "a856a9f5-c02c-4d18-80bc-a01933b64ab9"}, {"dtype": "compas.geometry/Point", "data": [2.0, 0.5, 1.5], "guid": "d49e1359-bc01-40a1-af71-7345a7a1ea31"}, {"dtype": "compas.geometry/Point", "data": [2.0, -0.5, 1.5], "guid": "d8e44452-dce3-4c34-be7e-4ad740a0f93c"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [1.5119999999999998, 0.0, 1.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "e4f58166-35ee-4214-91e7-8a89cc9c22d7"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "7ada7e8c-2ae0-49ad-af46-45e78f06e801"}]}}, "12": {"18": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [3.074, -0.5, 1.5], "guid": "6c58cde0-dfa7-4c16-932b-36e4085925d8"}, {"dtype": "compas.geometry/Point", "data": [3.074, 0.5, 1.5], "guid": "7f5a1de7-3047-4586-999c-9dbe4c826814"}, {"dtype": "compas.geometry/Point", "data": [4.05, 0.5, 1.5], "guid": "2e66b061-9615-47a4-b209-c7214282b04a"}, {"dtype": "compas.geometry/Point", "data": [4.05, -0.5, 1.5], "guid": "273445c7-b748-493e-bb61-08a3893d029d"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [3.562, 0.0, 1.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "45d8d29d-0562-4589-9f47-75b2759889a7"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "94638619-32b6-4b6a-8720-86ca52653c87"}]}, "17": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [2.05, -0.5, 1.5], "guid": "44e378af-25ba-4fd6-a281-68e7699a940d"}, {"dtype": "compas.geometry/Point", "data": [2.05, 0.5, 1.5], "guid": "9a35d991-fb4b-468e-afce-2fd5686d544c"}, {"dtype": "compas.geometry/Point", "data": [3.024, 0.5, 1.5], "guid": "7a88065d-7b9f-47c2-b7c8-a075e65b40fa"}, {"dtype": "compas.geometry/Point", "data": [3.024, -0.5, 1.5], "guid": "4ebc18af-24ae-4447-b314-97122fcaf05f"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [2.537, 0.0, 1.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "f94afbe9-6558-4927-a164-5bd6f63506c2"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "889f84ec-7ebf-4176-ac66-986f00805f19"}]}}, "13": {"18": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [4.1, -0.5, 1.5], "guid": "4792c9fe-b335-4b6f-8671-cae8024141ac"}, {"dtype": "compas.geometry/Point", "data": [4.1, 0.5, 1.5], "guid": "ac7e6fd9-3f94-4424-b377-e61c82a6e3da"}, {"dtype": "compas.geometry/Point", "data": [5.074, 0.5, 1.5], "guid": "9a11fb96-7a12-45f5-84b6-53112d46b09e"}, {"dtype": "compas.geometry/Point", "data": [5.074, -0.5, 1.5], "guid": "e3dfc756-edf0-4c94-894e-d0f5223d2da7"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [4.587, 0.0, 1.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "315415f6-720c-4c2d-97ed-cab532772f3c"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "4e6de0ed-a56b-48bd-83d4-d94383d7263d"}]}, "19": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [5.124, -0.5, 1.5], "guid": "eea6fbfb-5beb-4f14-a86d-784e36fb2348"}, {"dtype": "compas.geometry/Point", "data": [5.124, 0.5, 1.5], "guid": "98a3f7be-f130-4fc6-b965-368ad17a62f9"}, {"dtype": "compas.geometry/Point", "data": [6.1, 0.5, 1.5], "guid": "e2bc7a54-4542-4ce4-8e36-b798f2ec2da9"}, {"dtype": "compas.geometry/Point", "data": [6.1, -0.5, 1.5], "guid": "ccb8cb97-dacd-4ba6-a26a-5caf50656d0b"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [5.611999999999999, 0.0, 1.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "7ecba1db-6b40-4fac-ab42-991533ced1ab"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "30b9ea7d-080c-4275-b3ea-67e566e1e8b5"}]}}, "14": {"19": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [6.15, -0.5, 1.5], "guid": "7cafd478-759c-4b5c-bbc1-9ed4fe229adf"}, {"dtype": "compas.geometry/Point", "data": [6.15, 0.5, 1.5], "guid": "07ceaf8a-4e92-405d-9203-202111cd47fd"}, {"dtype": "compas.geometry/Point", "data": [7.124, 0.5, 1.5], "guid": "e8416466-74d9-465d-99f7-9952efe58340"}, {"dtype": "compas.geometry/Point", "data": [7.124, -0.5, 1.5], "guid": "81ca326c-d636-4db5-9f0a-bc7152d72d3e"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [6.6370000000000005, 0.0, 1.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "5f66df5d-3e66-40bf-b380-198d2a3cf153"}, "size": 0.9739999999999993, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "834a2a4f-bf24-4b99-9a35-ead8730eb268"}]}, "20": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [7.174, -0.5, 1.5], "guid": "9c0b0386-0969-4156-95b7-ad698c4ed253"}, {"dtype": "compas.geometry/Point", "data": [7.174, 0.5, 1.5], "guid": "499c57ab-2cc7-4405-b45c-f98430d4c4fe"}, {"dtype": "compas.geometry/Point", "data": [8.15, 0.5, 1.5], "guid": "0bb025fb-7540-496d-9a40-88b3b333b322"}, {"dtype": "compas.geometry/Point", "data": [8.15, -0.5, 1.5], "guid": "9b55307a-c772-4b0e-99b7-2bf59a43d30d"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [7.662000000000001, 0.0, 1.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "638099b2-9d6d-4e55-b402-751047e4c772"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "f5322a05-6138-4cff-a34c-4925d30b1978"}]}}, "15": {"20": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [8.2, -0.5, 1.5], "guid": "5017b229-fa3b-4a96-ba22-365fd1a971b0"}, {"dtype": "compas.geometry/Point", "data": [8.2, 0.5, 1.5], "guid": "c8e9c0d6-d53e-434e-87ec-7f9bf085624f"}, {"dtype": "compas.geometry/Point", "data": [9.174, 0.5, 1.5], "guid": "b243fb51-86d8-4e97-91de-f9c38d7ac502"}, {"dtype": "compas.geometry/Point", "data": [9.174, -0.5, 1.5], "guid": "133ae8b0-111e-46dc-9a23-e34dbe23e21c"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [8.687, 0.0, 1.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "53665532-be47-4847-9b63-e30dc2869930"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "ddb90fb6-ef46-45a6-9db1-a97cd8dd086c"}]}, "21": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [9.224, -0.5, 1.5], "guid": "8bb25d12-59ab-411c-a4c1-6ed3047dc246"}, {"dtype": "compas.geometry/Point", "data": [9.224, 0.5, 1.5], "guid": "6a936f97-6f8c-4bfb-b8f6-333cfafee77d"}, {"dtype": "compas.geometry/Point", "data": [10.2, 0.5, 1.5], "guid": "8d11cbe1-2aa9-421d-850a-b13bf72df925"}, {"dtype": "compas.geometry/Point", "data": [10.2, -0.5, 1.5], "guid": "757f2add-c618-4ab9-a9c4-4d2c71fb0b70"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [9.712, 0.0, 1.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "a38cacc3-c4a2-417e-b4be-82deff7efc58"}, "size": 0.9759999999999991, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "0aa00aa8-2b18-4bf4-ad8c-fa13b1ee5c57"}]}}, "16": {"22": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [0.0, -0.5, 2.0], "guid": "5f43eeaa-84c6-4093-9313-afebff21ddc2"}, {"dtype": "compas.geometry/Point", "data": [0.0, 0.5, 2.0], "guid": "ef679733-4cfc-4b2f-b5fd-48fb3607aa85"}, {"dtype": "compas.geometry/Point", "data": [0.974, 0.5, 2.0], "guid": "bcb5aaff-4865-4b2e-ab0d-a04bfd71140c"}, {"dtype": "compas.geometry/Point", "data": [0.974, -0.5, 2.0], "guid": "de4c6e94-d686-4793-b047-a69985b5cb87"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [0.487, 0.0, 2.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "73bf1a3b-7d9e-4529-8448-cca135fab353"}, "size": 0.974, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "206971a7-8ad7-499e-820f-5ef74f343454"}]}}, "17": {"22": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [1.024, -0.5, 2.0], "guid": "56126873-8774-4941-b46f-bb34a9a0c3ad"}, {"dtype": "compas.geometry/Point", "data": [1.024, 0.5, 2.0], "guid": "673b7dbf-54b1-4ee0-85c4-8cbdf7b0ef78"}, {"dtype": "compas.geometry/Point", "data": [2.0, 0.5, 2.0], "guid": "cf531825-3fa6-42fe-bc67-02d82da0eeba"}, {"dtype": "compas.geometry/Point", "data": [2.0, -0.5, 2.0], "guid": "ad6df8d7-54ac-4b68-8377-34dc0b05b7a3"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [1.5119999999999998, 0.0, 2.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "59426a90-2151-4c25-8160-86e05cbd8f20"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "1dc059e0-bc3c-4d5a-af6f-7fc7b1634069"}]}, "23": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [2.05, -0.5, 2.0], "guid": "2a0d5747-0cc7-42bf-b92d-1a03d106fc04"}, {"dtype": "compas.geometry/Point", "data": [2.05, 0.5, 2.0], "guid": "3c702dad-33d0-4d59-b4c7-7f6d9813d86b"}, {"dtype": "compas.geometry/Point", "data": [3.024, 0.5, 2.0], "guid": "f50aac69-ad33-4650-b240-d1373759bf7a"}, {"dtype": "compas.geometry/Point", "data": [3.024, -0.5, 2.0], "guid": "b86ec694-6847-4f6b-b639-a2984381e924"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [2.537, 0.0, 2.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "05dd45b7-a683-4e00-8a4f-3828ec755754"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "8a610df2-de1b-4047-8607-e74efb7a83d2"}]}}, "18": {"24": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [4.1, -0.5, 2.0], "guid": "44ab230c-8293-48a1-9810-ef1f0628610f"}, {"dtype": "compas.geometry/Point", "data": [4.1, 0.5, 2.0], "guid": "809ab6db-a6b2-40fc-861a-cab0e24034d4"}, {"dtype": "compas.geometry/Point", "data": [5.074, 0.5, 2.0], "guid": "4e5a199b-db8d-4e53-9f48-e3701d456d6d"}, {"dtype": "compas.geometry/Point", "data": [5.074, -0.5, 2.0], "guid": "48595744-6810-42d6-aca9-664715166f05"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [4.587, 0.0, 2.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "cce1b743-987c-4a3f-9071-ccdb52a5c107"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "6c9412f9-d89e-41ad-9e10-b8e35df12818"}]}, "23": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [3.074, -0.5, 2.0], "guid": "bd53e6db-0bf3-4c7a-b751-037937f2390b"}, {"dtype": "compas.geometry/Point", "data": [3.074, 0.5, 2.0], "guid": "426c9f11-a3bd-46d0-8690-3c8938480e12"}, {"dtype": "compas.geometry/Point", "data": [4.05, 0.5, 2.0], "guid": "ca766854-42c4-45b2-abcc-42a7c9b084eb"}, {"dtype": "compas.geometry/Point", "data": [4.05, -0.5, 2.0], "guid": "c2a498f2-afb9-42a8-b85e-58697b38391b"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [3.562, 0.0, 2.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "1356c25a-a60e-47b7-bbdf-27ce5c4527bb"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "997f17c1-a0ff-4012-84df-e2f241e4cd12"}]}}, "19": {"24": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [5.124, -0.5, 2.0], "guid": "2cb68b41-e941-4164-b2be-baf4cd9c985c"}, {"dtype": "compas.geometry/Point", "data": [5.124, 0.5, 2.0], "guid": "b7c77780-92bc-47f8-a811-c91accb00f53"}, {"dtype": "compas.geometry/Point", "data": [6.1, 0.5, 2.0], "guid": "660fb6a3-cd33-4776-a9cb-d0d81b33cc97"}, {"dtype": "compas.geometry/Point", "data": [6.1, -0.5, 2.0], "guid": "bdc3d8f4-2d63-4826-a517-f39a8fd6288c"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [5.611999999999999, 0.0, 2.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "cd7c3a87-ae18-47d0-ae7d-d4cdb69c34b9"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "5c5251c7-0edf-4c6d-9f0e-b63f3da7b2a5"}]}, "25": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [6.15, -0.5, 2.0], "guid": "58c8679d-d37a-474a-84df-704f5e52aa7f"}, {"dtype": "compas.geometry/Point", "data": [6.15, 0.5, 2.0], "guid": "71832c5f-20b4-4314-8041-852865f024ec"}, {"dtype": "compas.geometry/Point", "data": [7.124, 0.5, 2.0], "guid": "899ae72a-05ba-4475-9a03-50658f45f56d"}, {"dtype": "compas.geometry/Point", "data": [7.124, -0.5, 2.0], "guid": "f84bd9dd-5efd-4429-9b00-b58b44a78046"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [6.6370000000000005, 0.0, 2.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "c31ca37b-7fc4-4126-ab92-610ddc4f7483"}, "size": 0.9739999999999993, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "d0128f18-ca1a-4667-89b0-6f3c5ef39fb9"}]}}, "20": {"26": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [8.2, -0.5, 2.0], "guid": "01222ff3-3ce2-41e3-a388-854cb17d686c"}, {"dtype": "compas.geometry/Point", "data": [8.2, 0.5, 2.0], "guid": "f39d90ad-e84d-4f03-86be-cb07e9f62f02"}, {"dtype": "compas.geometry/Point", "data": [9.174, 0.5, 2.0], "guid": "cd447162-6c32-4c30-83ed-3ce3f95afe34"}, {"dtype": "compas.geometry/Point", "data": [9.174, -0.5, 2.0], "guid": "2e17f40a-53a1-4d47-8e44-d13d33795c53"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [8.687, 0.0, 2.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "40d18bb6-dd18-4c0f-8030-5a0d7e7ac689"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "9a6110a8-f85f-415c-84c9-678b2f15f08b"}]}, "25": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [7.174, -0.5, 2.0], "guid": "2008695c-30f1-4ba5-9b9d-0ac3bb0a411d"}, {"dtype": "compas.geometry/Point", "data": [7.174, 0.5, 2.0], "guid": "736c2023-e653-4bce-9824-f92821812e0a"}, {"dtype": "compas.geometry/Point", "data": [8.15, 0.5, 2.0], "guid": "6feaf49a-a680-4b93-8caf-65be3504fbd1"}, {"dtype": "compas.geometry/Point", "data": [8.15, -0.5, 2.0], "guid": "91037660-c530-4b06-ba7c-332b7fedfbf3"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [7.662000000000001, 0.0, 2.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "4f094751-efd6-4b69-82e7-8bfb239317bf"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "a237d784-7011-4897-93ab-c0ef100e7d89"}]}}, "21": {"26": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [9.224, -0.5, 2.0], "guid": "d7218b5a-7ff0-4049-a91c-8ae10afa84f7"}, {"dtype": "compas.geometry/Point", "data": [9.224, 0.5, 2.0], "guid": "4bfe669c-98bc-404c-8157-2977ce5748ec"}, {"dtype": "compas.geometry/Point", "data": [10.2, 0.5, 2.0], "guid": "ddbb3b16-cdf5-4c4f-82dc-e2cc18d83a18"}, {"dtype": "compas.geometry/Point", "data": [10.2, -0.5, 2.0], "guid": "054d4406-2529-4ffa-be8a-4e80aab57314"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [9.712, 0.0, 2.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "0c603793-436d-488b-a151-12e903307a95"}, "size": 0.9759999999999991, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "0f12472f-4336-4c00-a83c-e88cc40bd1d2"}]}}, "22": {"27": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [0.0, -0.5, 2.5], "guid": "776bbc95-6a07-4af5-a84b-c93d5b085b68"}, {"dtype": "compas.geometry/Point", "data": [0.0, 0.5, 2.5], "guid": "07331936-4edd-4bf5-8dea-d0619ae39c42"}, {"dtype": "compas.geometry/Point", "data": [0.974, 0.5, 2.5], "guid": "a2270984-49c6-49f2-8798-02f1e3257d40"}, {"dtype": "compas.geometry/Point", "data": [0.974, -0.5, 2.5], "guid": "72bedf63-55d8-444d-a857-e99da2775dd3"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [0.487, 0.0, 2.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "9d522976-18f4-4f35-9951-ed53ada98d3b"}, "size": 0.974, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "f75c1258-27a4-42bd-979c-326796cb1bc2"}]}, "28": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [1.024, -0.5, 2.5], "guid": "7ace0782-6217-4761-a224-3cc761b02810"}, {"dtype": "compas.geometry/Point", "data": [1.024, 0.5, 2.5], "guid": "9b95908f-699e-4844-a65e-ed9da37fcb36"}, {"dtype": "compas.geometry/Point", "data": [2.0, 0.5, 2.5], "guid": "0a0342ee-44d8-403d-bea4-deb2f65a642c"}, {"dtype": "compas.geometry/Point", "data": [2.0, -0.5, 2.5], "guid": "66ecb2a6-960a-4d65-b7e1-73ce1dbf0c83"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [1.5119999999999998, 0.0, 2.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "d0657519-325a-483f-86e6-03a095dd6059"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "518db94e-beaa-4a27-a807-9257509871ad"}]}}, "23": {"28": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [2.05, -0.5, 2.5], "guid": "13178b9f-f8f1-42c8-add3-7c202a41bd1c"}, {"dtype": "compas.geometry/Point", "data": [2.05, 0.5, 2.5], "guid": "b1494373-c554-49e3-8ab6-dc599de88f49"}, {"dtype": "compas.geometry/Point", "data": [3.024, 0.5, 2.5], "guid": "140a8ce7-7ce1-4d4f-a298-3bfcdc871a65"}, {"dtype": "compas.geometry/Point", "data": [3.024, -0.5, 2.5], "guid": "431ec88d-fc61-44bd-90cd-03b8ced41777"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [2.537, 0.0, 2.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "d40e826a-1947-4e03-915f-a5f6bda33430"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "48d94172-f9be-4b4d-830c-951bae3ad530"}]}, "29": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [3.074, -0.5, 2.5], "guid": "6b07a790-6456-4e10-a706-1096141812e2"}, {"dtype": "compas.geometry/Point", "data": [3.074, 0.5, 2.5], "guid": "8ddeccc1-32b0-498e-a9ee-eaa02df02670"}, {"dtype": "compas.geometry/Point", "data": [4.05, 0.5, 2.5], "guid": "9dce53c5-c1d3-44ad-9051-6948da803964"}, {"dtype": "compas.geometry/Point", "data": [4.05, -0.5, 2.5], "guid": "6e5fcd01-8707-4ab7-919a-315e03253561"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [3.562, 0.0, 2.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "7d98b4ba-04e0-4f78-872f-874c9c11c1ed"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "952b7dc2-1e25-4e86-87a9-3e0e48433f65"}]}}, "24": {"29": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [4.1, -0.5, 2.5], "guid": "415a7c28-0515-4c42-adae-d0c5ff519b8d"}, {"dtype": "compas.geometry/Point", "data": [4.1, 0.5, 2.5], "guid": "e086109a-ee36-4cb3-860e-aedf45000d69"}, {"dtype": "compas.geometry/Point", "data": [5.074, 0.5, 2.5], "guid": "da0ac363-7013-42e4-9f26-528a4f7bc371"}, {"dtype": "compas.geometry/Point", "data": [5.074, -0.5, 2.5], "guid": "ef90a6ee-0b66-4c94-8492-74bc1c79ac8f"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [4.587, 0.0, 2.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "200d3116-d856-447e-96b5-f17fa7106569"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "b0aed96f-fb5a-4308-8d61-a61765616b44"}]}, "30": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [5.124, -0.5, 2.5], "guid": "49de8537-53f6-4ce8-85f9-d006ce49a1d6"}, {"dtype": "compas.geometry/Point", "data": [5.124, 0.5, 2.5], "guid": "6ded7eb5-e90a-4eda-836a-49e5903d81cf"}, {"dtype": "compas.geometry/Point", "data": [6.1, 0.5, 2.5], "guid": "dd8ae7be-8823-441c-9744-d3f69e827216"}, {"dtype": "compas.geometry/Point", "data": [6.1, -0.5, 2.5], "guid": "e8cb62a0-cc8a-4ade-8c47-3c370ad5b9bd"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [5.611999999999999, 0.0, 2.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "2700d151-cb7b-4444-9b0d-6f757cf9ff69"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "10a033ff-155c-4666-afc1-40a78b77a528"}]}}, "25": {"30": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [6.15, -0.5, 2.5], "guid": "de31fc09-72c2-4165-bd75-7aecb67d3b6f"}, {"dtype": "compas.geometry/Point", "data": [6.15, 0.5, 2.5], "guid": "345d9128-5a47-44a3-a666-7062ab027d4d"}, {"dtype": "compas.geometry/Point", "data": [7.124, 0.5, 2.5], "guid": "e9e23f76-d4af-4678-956b-49ac93c7592c"}, {"dtype": "compas.geometry/Point", "data": [7.124, -0.5, 2.5], "guid": "e63d3367-94d1-4362-86a0-892b02c5ff9d"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [6.6370000000000005, 0.0, 2.5000000000000004], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "2ebab277-d187-4a49-bcad-9c6c05be7931"}, "size": 0.9739999999999993, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "ea6c9972-e817-40c9-be16-e0aedd6e9eef"}]}, "31": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [7.174, -0.5, 2.5], "guid": "ff7213a1-e32d-4f5e-b202-d9ea9844675d"}, {"dtype": "compas.geometry/Point", "data": [7.174, 0.5, 2.5], "guid": "19dd00dc-8fb7-424e-ae11-4b89f5dec4ca"}, {"dtype": "compas.geometry/Point", "data": [8.15, 0.5, 2.5], "guid": "e9dd26ba-59d4-494e-8353-096cf2ec53bb"}, {"dtype": "compas.geometry/Point", "data": [8.15, -0.5, 2.5], "guid": "733df62f-6542-4079-ade1-fa54f26fd6e3"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [7.662000000000001, 0.0, 2.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "2bd407ef-a755-4395-94e0-fda55db9d1ad"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "f5ab9413-3fb5-4893-80f5-06aa3682ee06"}]}}, "26": {"31": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [8.2, -0.5, 2.5], "guid": "6b836476-d63e-4d8c-951d-076fdfbf994e"}, {"dtype": "compas.geometry/Point", "data": [8.2, 0.5, 2.5], "guid": "cc968788-58ef-48f2-946c-1982442a4c13"}, {"dtype": "compas.geometry/Point", "data": [9.174, 0.5, 2.5], "guid": "231bc508-4e40-47d3-be84-e61696edb920"}, {"dtype": "compas.geometry/Point", "data": [9.174, -0.5, 2.5], "guid": "15daca1b-5f5a-4f39-a092-a7ea7f4f8ad5"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [8.687, 0.0, 2.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "8b4fbdb8-d791-4f84-a5ed-0bda6e60520a"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "aaa40fbb-5459-4041-8b8e-e4f638990834"}]}, "32": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [9.224, -0.5, 2.5], "guid": "f6325664-f35a-474a-883a-e1cd54744dc5"}, {"dtype": "compas.geometry/Point", "data": [9.224, 0.5, 2.5], "guid": "1904a64f-b5ba-4e4b-8a84-930e37c03b56"}, {"dtype": "compas.geometry/Point", "data": [10.2, 0.5, 2.5], "guid": "57fa7fa8-5eea-4ad4-90e0-93a94d5a8517"}, {"dtype": "compas.geometry/Point", "data": [10.2, -0.5, 2.5], "guid": "a70a73fd-5070-46bf-9d47-3a865874252e"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [9.712, 0.0, 2.5], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "5432eac8-b0f6-4992-b64a-4c54d7971c63"}, "size": 0.9759999999999991, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "e0b9c761-d2ac-4315-a70e-747a8087249c"}]}}, "27": {"33": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [0.0, -0.5, 3.0], "guid": "5a514629-08c1-4f9e-8531-62d2cf013dd8"}, {"dtype": "compas.geometry/Point", "data": [0.0, 0.5, 3.0], "guid": "e6d6b311-719d-40b8-8a36-2bbd42bd06fd"}, {"dtype": "compas.geometry/Point", "data": [0.974, 0.5, 3.0], "guid": "dc1dd507-98d5-4869-bc56-b1cbfe0caf16"}, {"dtype": "compas.geometry/Point", "data": [0.974, -0.5, 3.0], "guid": "cd61845b-911b-4077-8e37-e1788d68bf16"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [0.487, 0.0, 2.9999999999999996], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "c50e9877-3a94-447f-a079-4b251dfb2459"}, "size": 0.974, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "ec8a76cc-26c0-4154-b93a-e05bdfe4b61e"}]}}, "28": {"33": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [1.024, -0.5, 3.0], "guid": "46ac9a90-de43-4904-b3e6-a2d49bd69910"}, {"dtype": "compas.geometry/Point", "data": [1.024, 0.5, 3.0], "guid": "a2eaa7b9-c2d3-4d1f-a4a7-ba4dd7d2d809"}, {"dtype": "compas.geometry/Point", "data": [2.0, 0.5, 3.0], "guid": "c4c940c0-fc66-4be3-9311-d0cac94c9f15"}, {"dtype": "compas.geometry/Point", "data": [2.0, -0.5, 3.0], "guid": "40b86a23-0a5d-43e8-a31e-b993d64f7353"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [1.5119999999999998, 0.0, 3.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "dc235a78-2c6d-4892-bd1d-762f774ebcff"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "b017fd6a-cfe2-49a0-baa7-0c9072952038"}]}, "34": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [2.05, -0.5, 3.0], "guid": "d63a4fe9-fe18-48d5-b5f9-4ea107b06cfb"}, {"dtype": "compas.geometry/Point", "data": [2.05, 0.5, 3.0], "guid": "70c68fcd-1479-4970-824b-07832548ad5e"}, {"dtype": "compas.geometry/Point", "data": [3.024, 0.5, 3.0], "guid": "a6ac2fe4-61da-4e04-90a5-a55094de334f"}, {"dtype": "compas.geometry/Point", "data": [3.024, -0.5, 3.0], "guid": "049ada15-0f81-464f-a4a8-7b9e71326289"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [2.537, 0.0, 3.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "af94e047-8e9e-40e8-ab2f-377885516d41"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "3beed82f-373e-4d70-8475-7919ebf15f65"}]}}, "29": {"35": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [4.1, -0.5, 3.0], "guid": "3db2fa25-7abc-4240-a35c-b56441a74f12"}, {"dtype": "compas.geometry/Point", "data": [4.1, 0.5, 3.0], "guid": "26bba558-e16b-4195-be74-ec37b94a690d"}, {"dtype": "compas.geometry/Point", "data": [5.074, 0.5, 3.0], "guid": "2faad410-652f-435b-933c-9fa81ccdad8b"}, {"dtype": "compas.geometry/Point", "data": [5.074, -0.5, 3.0], "guid": "2217aa45-fe2d-44dc-9429-7425b81a9363"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [4.587, 0.0, 3.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "3398234c-312c-430b-99e5-1bc5c825fe06"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "12f08341-68bc-400d-9111-31dad6248b01"}]}, "34": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [3.074, -0.5, 3.0], "guid": "5f66dbba-e1cb-41a5-b570-111dacdedcc0"}, {"dtype": "compas.geometry/Point", "data": [3.074, 0.5, 3.0], "guid": "a22ca054-5ead-4f16-9955-9f851812b223"}, {"dtype": "compas.geometry/Point", "data": [4.05, 0.5, 3.0], "guid": "ca7e441a-99bc-4069-80c7-0a1ce8caa897"}, {"dtype": "compas.geometry/Point", "data": [4.05, -0.5, 3.0], "guid": "d4dd7bed-2ae5-43cb-a3bc-c44f433fca7a"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [3.562, 0.0, 3.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "ea7949c8-8d26-4e54-84ff-ead747e0234a"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "ab651043-ffe4-497f-ba81-7b3ef814d849"}]}}, "30": {"35": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [5.124, -0.5, 3.0], "guid": "ad6b48fb-1107-416b-b501-96ba8ba2e9a5"}, {"dtype": "compas.geometry/Point", "data": [5.124, 0.5, 3.0], "guid": "fe0dd091-ccf8-4c01-81a8-b3ecb106d52e"}, {"dtype": "compas.geometry/Point", "data": [6.1, 0.5, 3.0], "guid": "49772159-f605-4c1c-ab2f-2b8d788186cf"}, {"dtype": "compas.geometry/Point", "data": [6.1, -0.5, 3.0], "guid": "a6abcfda-4a66-46c0-9c4a-d38aeda214b3"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [5.611999999999999, 0.0, 3.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "4ea1417c-18f3-48c3-9aa4-2d8899891de4"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "5cfff1c7-1508-4915-bc6b-c292fe7c752a"}]}, "36": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [6.15, -0.5, 3.0], "guid": "10d24d1f-4c09-4b28-8ea5-561b24c98c5b"}, {"dtype": "compas.geometry/Point", "data": [6.15, 0.5, 3.0], "guid": "8e8b2d21-258e-419d-a571-bbb08653bb80"}, {"dtype": "compas.geometry/Point", "data": [7.124, 0.5, 3.0], "guid": "ef518df6-b749-48e2-b57a-1900a105461f"}, {"dtype": "compas.geometry/Point", "data": [7.124, -0.5, 3.0], "guid": "2aff85c6-f11b-4f92-8d35-1f361161f3de"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [6.6370000000000005, 0.0, 3.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "e5d3e590-1f50-451d-96dd-32e006f8cdd5"}, "size": 0.9739999999999993, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "bd95d35b-aec5-44ef-9312-96e83614be2e"}]}}, "31": {"36": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [7.174, -0.5, 3.0], "guid": "4ee31c76-c218-46a4-b360-3be941cc82e9"}, {"dtype": "compas.geometry/Point", "data": [7.174, 0.5, 3.0], "guid": "900c30ea-8e79-4b38-93f2-860e79bcfb88"}, {"dtype": "compas.geometry/Point", "data": [8.15, 0.5, 3.0], "guid": "0d6cc5c6-e9b0-4223-9a60-01ffdd6c8a41"}, {"dtype": "compas.geometry/Point", "data": [8.15, -0.5, 3.0], "guid": "7b56950d-8d4e-44f0-8305-3d62ee5d12a6"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [7.662000000000001, 0.0, 3.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "4cacdc31-fe49-4517-a35a-dda3281cb41e"}, "size": 0.976, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "70293f0f-1ccb-437d-8a7b-4e25323f411c"}]}, "37": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [8.2, -0.5, 3.0], "guid": "42de1b7a-0313-41f5-8a89-65fea3e1bffe"}, {"dtype": "compas.geometry/Point", "data": [8.2, 0.5, 3.0], "guid": "b6f7a999-de1e-411c-ad81-b8c410ef1401"}, {"dtype": "compas.geometry/Point", "data": [9.174, 0.5, 3.0], "guid": "6c18db14-b181-4002-84fe-a9e8fd16204e"}, {"dtype": "compas.geometry/Point", "data": [9.174, -0.5, 3.0], "guid": "3cbbf3d8-1972-4206-b7cd-132fd6ff7ca9"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [8.687, 0.0, 3.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "318b1b16-ccfa-451f-b747-b6beb75e64d8"}, "size": 0.9740000000000002, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "64aa6529-900b-4b3c-a771-08ea34a436ca"}]}}, "32": {"37": {"contacts": [{"dtype": "compas_dem.interactions/FrictionContact", "data": {"points": [{"dtype": "compas.geometry/Point", "data": [9.224, -0.5, 3.0], "guid": "48bcc3af-98f1-42da-8bb6-dc7245c651bd"}, {"dtype": "compas.geometry/Point", "data": [9.224, 0.5, 3.0], "guid": "7a22190f-f7aa-4776-abe0-eba3dc46b0fe"}, {"dtype": "compas.geometry/Point", "data": [10.2, 0.5, 3.0], "guid": "800bb3e4-9a5a-4539-8d9a-63140b9e8da7"}, {"dtype": "compas.geometry/Point", "data": [10.2, -0.5, 3.0], "guid": "af039cc5-1090-4dab-bec9-8e3d7a4c6edd"}], "frame": {"dtype": "compas.geometry/Frame", "data": {"point": [9.712, 0.0, 3.0], "xaxis": [1.0, 0.0, 0.0], "yaxis": [0.0, 1.0, 0.0]}, "guid": "8a32117a-89c3-43b7-82cb-dc2cbbfb06ba"}, "size": 0.9759999999999991, "mesh": null, "name": "FrictionContact", "forces": null}, "guid": "7bdf42ae-b07e-45b2-95ea-6dc7e54e99f6"}]}}, "33": {}, "34": {}, "35": {}, "36": {}, "37": {}}, "max_node": 37}}, "inheritance": ["compas_model.models/Model"], "guid": "a6e715cc-d3cd-4a95-85d3-52a2772383a6"} \ No newline at end of file diff --git a/data/dem_results.json b/data/dem_results.json new file mode 100644 index 0000000..a8f9d03 --- /dev/null +++ b/data/dem_results.json @@ -0,0 +1 @@ +{"blocks": [{"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": 5.0, "y": 0.0, "z": 3.061616997868383e-16}, "1": {"x": 5.0, "y": 0.5, "z": 3.061616997868383e-16}, "2": {"x": 5.5, "y": 0.5, "z": 3.3677786976552215e-16}, "3": {"x": 5.5, "y": 0.0, "z": 3.3677786976552215e-16}, "4": {"x": 4.938441702975689, "y": 0.0, "z": 0.7821723252011547}, "5": {"x": 4.938441702975689, "y": 0.5, "z": 0.7821723252011547}, "6": {"x": 5.4322858732732575, "y": 0.5, "z": 0.8603895577212701}, "7": {"x": 5.4322858732732575, "y": 0.0, "z": 0.8603895577212701}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "60af9003-e36c-4ad2-8e37-e18b1550b7c0"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": 4.938441702975689, "y": 0.0, "z": 0.7821723252011547}, "1": {"x": 4.938441702975689, "y": 0.5, "z": 0.7821723252011547}, "2": {"x": 5.4322858732732575, "y": 0.5, "z": 0.8603895577212701}, "3": {"x": 5.4322858732732575, "y": 0.0, "z": 0.8603895577212701}, "4": {"x": 4.755282581475769, "y": 0.0, "z": 1.5450849718747375}, "5": {"x": 4.755282581475769, "y": 0.5, "z": 1.5450849718747375}, "6": {"x": 5.230810839623345, "y": 0.5, "z": 1.6995934690622112}, "7": {"x": 5.230810839623345, "y": 0.0, "z": 1.6995934690622112}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "9ed5b459-abf5-4f32-9721-b5c773d4eafd"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": 4.755282581475769, "y": 0.0, "z": 1.5450849718747375}, "1": {"x": 4.755282581475769, "y": 0.5, "z": 1.5450849718747375}, "2": {"x": 5.230810839623345, "y": 0.5, "z": 1.6995934690622112}, "3": {"x": 5.230810839623345, "y": 0.0, "z": 1.6995934690622112}, "4": {"x": 4.45503262094184, "y": 0.0, "z": 2.2699524986977346}, "5": {"x": 4.45503262094184, "y": 0.5, "z": 2.2699524986977346}, "6": {"x": 4.900535883036024, "y": 0.5, "z": 2.496947748567508}, "7": {"x": 4.900535883036024, "y": 0.0, "z": 2.496947748567508}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "f08f7cae-0426-48c4-bd73-a4bb77b1552d"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": 4.45503262094184, "y": 0.0, "z": 2.2699524986977346}, "1": {"x": 4.45503262094184, "y": 0.5, "z": 2.2699524986977346}, "2": {"x": 4.900535883036024, "y": 0.5, "z": 2.496947748567508}, "3": {"x": 4.900535883036024, "y": 0.0, "z": 2.496947748567508}, "4": {"x": 4.045084971874738, "y": 0.0, "z": 2.9389262614623664}, "5": {"x": 4.045084971874738, "y": 0.5, "z": 2.9389262614623664}, "6": {"x": 4.449593469062212, "y": 0.5, "z": 3.2328188876086035}, "7": {"x": 4.449593469062212, "y": 0.0, "z": 3.2328188876086035}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "f47e8949-562c-4232-ad1a-2a740b4fc59a"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": 4.045084971874738, "y": 0.0, "z": 2.9389262614623664}, "1": {"x": 4.045084971874738, "y": 0.5, "z": 2.9389262614623664}, "2": {"x": 4.449593469062212, "y": 0.5, "z": 3.2328188876086035}, "3": {"x": 4.449593469062212, "y": 0.0, "z": 3.2328188876086035}, "4": {"x": 3.5355339059327386, "y": 0.0, "z": 3.5355339059327386}, "5": {"x": 3.5355339059327386, "y": 0.5, "z": 3.5355339059327386}, "6": {"x": 3.8890872965260135, "y": 0.5, "z": 3.889087296526013}, "7": {"x": 3.8890872965260135, "y": 0.0, "z": 3.889087296526013}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "62a10890-988d-49b2-bde2-212a7fff2222"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": 3.5355339059327386, "y": 0.0, "z": 3.5355339059327386}, "1": {"x": 3.5355339059327386, "y": 0.5, "z": 3.5355339059327386}, "2": {"x": 3.8890872965260135, "y": 0.5, "z": 3.889087296526013}, "3": {"x": 3.8890872965260135, "y": 0.0, "z": 3.889087296526013}, "4": {"x": 2.938926261462367, "y": 0.0, "z": 4.045084971874738}, "5": {"x": 2.938926261462367, "y": 0.5, "z": 4.045084971874738}, "6": {"x": 3.2328188876086044, "y": 0.5, "z": 4.449593469062213}, "7": {"x": 3.2328188876086044, "y": 0.0, "z": 4.449593469062213}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "d576c0f6-0ebe-4a4b-b972-23c054ce3e35"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": 2.938926261462367, "y": 0.0, "z": 4.045084971874738}, "1": {"x": 2.938926261462367, "y": 0.5, "z": 4.045084971874738}, "2": {"x": 3.2328188876086044, "y": 0.5, "z": 4.449593469062213}, "3": {"x": 3.2328188876086044, "y": 0.0, "z": 4.449593469062213}, "4": {"x": 2.269952498697735, "y": 0.0, "z": 4.45503262094184}, "5": {"x": 2.269952498697735, "y": 0.5, "z": 4.45503262094184}, "6": {"x": 2.4969477485675093, "y": 0.5, "z": 4.900535883036026}, "7": {"x": 2.4969477485675093, "y": 0.0, "z": 4.900535883036026}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "8303d7c3-95e6-4c4b-8981-ed8fe5e537b1"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": 2.269952498697735, "y": 0.0, "z": 4.45503262094184}, "1": {"x": 2.269952498697735, "y": 0.5, "z": 4.45503262094184}, "2": {"x": 2.4969477485675093, "y": 0.5, "z": 4.900535883036026}, "3": {"x": 2.4969477485675093, "y": 0.0, "z": 4.900535883036026}, "4": {"x": 1.5450849718747381, "y": 0.0, "z": 4.75528258147577}, "5": {"x": 1.5450849718747381, "y": 0.5, "z": 4.75528258147577}, "6": {"x": 1.6995934690622128, "y": 0.5, "z": 5.230810839623348}, "7": {"x": 1.6995934690622128, "y": 0.0, "z": 5.230810839623348}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "9590d064-c35f-4f5e-bc30-fe6407f6b3c5"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": 1.5450849718747381, "y": 0.0, "z": 4.75528258147577}, "1": {"x": 1.5450849718747381, "y": 0.5, "z": 4.75528258147577}, "2": {"x": 1.6995934690622128, "y": 0.5, "z": 5.230810839623348}, "3": {"x": 1.6995934690622128, "y": 0.0, "z": 5.230810839623348}, "4": {"x": 0.7821723252011551, "y": 0.0, "z": 4.938441702975691}, "5": {"x": 0.7821723252011551, "y": 0.5, "z": 4.938441702975691}, "6": {"x": 0.8603895577212713, "y": 0.5, "z": 5.43228587327326}, "7": {"x": 0.8603895577212713, "y": 0.0, "z": 5.43228587327326}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "89a4d37e-a3b2-4325-8d0d-b545d778e7c2"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": 0.7821723252011551, "y": 0.0, "z": 4.938441702975691}, "1": {"x": 0.7821723252011551, "y": 0.5, "z": 4.938441702975691}, "2": {"x": 0.8603895577212713, "y": 0.5, "z": 5.43228587327326}, "3": {"x": 0.8603895577212713, "y": 0.0, "z": 5.43228587327326}, "4": {"x": 3.3306690738754696e-16, "y": 0.0, "z": 5.000000000000003}, "5": {"x": 3.3306690738754696e-16, "y": 0.5, "z": 5.000000000000003}, "6": {"x": 1.2212453270876722e-15, "y": 0.5, "z": 5.5000000000000036}, "7": {"x": 1.2212453270876722e-15, "y": 0.0, "z": 5.5000000000000036}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "d3d6ab8f-0255-43a6-bcbc-b1f327231750"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": 3.3306690738754696e-16, "y": 0.0, "z": 5.000000000000003}, "1": {"x": 3.3306690738754696e-16, "y": 0.5, "z": 5.000000000000003}, "2": {"x": 1.2212453270876722e-15, "y": 0.5, "z": 5.5000000000000036}, "3": {"x": 1.2212453270876722e-15, "y": 0.0, "z": 5.5000000000000036}, "4": {"x": -0.7821723252011544, "y": 0.0, "z": 4.938441702975691}, "5": {"x": -0.7821723252011544, "y": 0.5, "z": 4.938441702975691}, "6": {"x": -0.8603895577212691, "y": 0.5, "z": 5.432285873273261}, "7": {"x": -0.8603895577212691, "y": 0.0, "z": 5.432285873273261}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "1106cd82-d865-4735-8f63-b004cb5c113a"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": -0.7821723252011544, "y": 0.0, "z": 4.938441702975691}, "1": {"x": -0.7821723252011544, "y": 0.5, "z": 4.938441702975691}, "2": {"x": -0.8603895577212691, "y": 0.5, "z": 5.432285873273261}, "3": {"x": -0.8603895577212691, "y": 0.0, "z": 5.432285873273261}, "4": {"x": -1.5450849718747377, "y": 0.0, "z": 4.755282581475771}, "5": {"x": -1.5450849718747377, "y": 0.5, "z": 4.755282581475771}, "6": {"x": -1.6995934690622108, "y": 0.5, "z": 5.230810839623349}, "7": {"x": -1.6995934690622108, "y": 0.0, "z": 5.230810839623349}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "9f8c38f7-832d-4e86-a7ce-45797495012c"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": -1.5450849718747377, "y": 0.0, "z": 4.755282581475771}, "1": {"x": -1.5450849718747377, "y": 0.5, "z": 4.755282581475771}, "2": {"x": -1.6995934690622108, "y": 0.5, "z": 5.230810839623349}, "3": {"x": -1.6995934690622108, "y": 0.0, "z": 5.230810839623349}, "4": {"x": -2.269952498697735, "y": 0.0, "z": 4.455032620941842}, "5": {"x": -2.269952498697735, "y": 0.5, "z": 4.455032620941842}, "6": {"x": -2.496947748567508, "y": 0.5, "z": 4.900535883036027}, "7": {"x": -2.496947748567508, "y": 0.0, "z": 4.900535883036027}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "cb372b1e-cf56-4c23-917d-95104375827a"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": -2.269952498697735, "y": 0.0, "z": 4.455032620941842}, "1": {"x": -2.269952498697735, "y": 0.5, "z": 4.455032620941842}, "2": {"x": -2.496947748567508, "y": 0.5, "z": 4.900535883036027}, "3": {"x": -2.496947748567508, "y": 0.0, "z": 4.900535883036027}, "4": {"x": -2.9389262614623672, "y": 0.0, "z": 4.045084971874739}, "5": {"x": -2.9389262614623672, "y": 0.5, "z": 4.045084971874739}, "6": {"x": -3.2328188876086035, "y": 0.5, "z": 4.449593469062215}, "7": {"x": -3.2328188876086035, "y": 0.0, "z": 4.449593469062215}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "49ec4185-5360-43fe-a0c7-9ac3e1c614b1"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": -2.9389262614623672, "y": 0.0, "z": 4.045084971874739}, "1": {"x": -2.9389262614623672, "y": 0.5, "z": 4.045084971874739}, "2": {"x": -3.2328188876086035, "y": 0.5, "z": 4.449593469062215}, "3": {"x": -3.2328188876086035, "y": 0.0, "z": 4.449593469062215}, "4": {"x": -3.5355339059327395, "y": 0.0, "z": 3.535533905932739}, "5": {"x": -3.5355339059327395, "y": 0.5, "z": 3.535533905932739}, "6": {"x": -3.8890872965260135, "y": 0.5, "z": 3.889087296526016}, "7": {"x": -3.8890872965260135, "y": 0.0, "z": 3.889087296526016}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "7d242187-ae4b-4279-8602-1cd856661d17"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": -3.5355339059327395, "y": 0.0, "z": 3.535533905932739}, "1": {"x": -3.5355339059327395, "y": 0.5, "z": 3.535533905932739}, "2": {"x": -3.8890872965260135, "y": 0.5, "z": 3.889087296526016}, "3": {"x": -3.8890872965260135, "y": 0.0, "z": 3.889087296526016}, "4": {"x": -4.045084971874739, "y": 0.0, "z": 2.938926261462367}, "5": {"x": -4.045084971874739, "y": 0.5, "z": 2.938926261462367}, "6": {"x": -4.449593469062214, "y": 0.5, "z": 3.232818887608607}, "7": {"x": -4.449593469062214, "y": 0.0, "z": 3.232818887608607}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "c5e98ded-90f6-43f6-88e3-7d7befceda0f"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": -4.045084971874739, "y": 0.0, "z": 2.938926261462367}, "1": {"x": -4.045084971874739, "y": 0.5, "z": 2.938926261462367}, "2": {"x": -4.449593469062214, "y": 0.5, "z": 3.232818887608607}, "3": {"x": -4.449593469062214, "y": 0.0, "z": 3.232818887608607}, "4": {"x": -4.455032620941841, "y": 0.0, "z": 2.269952498697735}, "5": {"x": -4.455032620941841, "y": 0.5, "z": 2.269952498697735}, "6": {"x": -4.900535883036028, "y": 0.5, "z": 2.4969477485675116}, "7": {"x": -4.900535883036028, "y": 0.0, "z": 2.4969477485675116}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "a4c9d0a3-6545-497d-a47f-966471327316"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": -4.455032620941841, "y": 0.0, "z": 2.269952498697735}, "1": {"x": -4.455032620941841, "y": 0.5, "z": 2.269952498697735}, "2": {"x": -4.900535883036028, "y": 0.5, "z": 2.4969477485675116}, "3": {"x": -4.900535883036028, "y": 0.0, "z": 2.4969477485675116}, "4": {"x": -4.755282581475771, "y": 0.0, "z": 1.545084971874738}, "5": {"x": -4.755282581475771, "y": 0.5, "z": 1.545084971874738}, "6": {"x": -5.23081083962335, "y": 0.5, "z": 1.6995934690622145}, "7": {"x": -5.23081083962335, "y": 0.0, "z": 1.6995934690622145}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "ca87dcb6-5a97-4afd-b692-11eb5928f3c1"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": -4.755282581475771, "y": 0.0, "z": 1.545084971874738}, "1": {"x": -4.755282581475771, "y": 0.5, "z": 1.545084971874738}, "2": {"x": -5.23081083962335, "y": 0.5, "z": 1.6995934690622145}, "3": {"x": -5.23081083962335, "y": 0.0, "z": 1.6995934690622145}, "4": {"x": -4.938441702975692, "y": 0.0, "z": 0.7821723252011548}, "5": {"x": -4.938441702975692, "y": 0.5, "z": 0.7821723252011548}, "6": {"x": -5.432285873273264, "y": 0.5, "z": 0.8603895577212727}, "7": {"x": -5.432285873273264, "y": 0.0, "z": 0.8603895577212727}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "cfd3e865-eb9b-47bc-99c6-1f188250f00a"}, {"dtype": "compas_assembly.datastructures/Block", "data": {"attributes": {"node": null}, "default_vertex_attributes": {"x": 0.0, "y": 0.0, "z": 0.0}, "default_edge_attributes": {}, "default_face_attributes": {}, "vertex": {"0": {"x": -4.938441702975692, "y": 0.0, "z": 0.7821723252011548}, "1": {"x": -4.938441702975692, "y": 0.5, "z": 0.7821723252011548}, "2": {"x": -5.432285873273264, "y": 0.5, "z": 0.8603895577212727}, "3": {"x": -5.432285873273264, "y": 0.0, "z": 0.8603895577212727}, "4": {"x": -5.0000000000000036, "y": 0.0, "z": -1.1102230246251565e-16}, "5": {"x": -5.0000000000000036, "y": 0.5, "z": -1.1102230246251565e-16}, "6": {"x": -5.500000000000007, "y": 0.5, "z": 1.887379141862766e-15}, "7": {"x": -5.500000000000007, "y": 0.0, "z": 1.887379141862766e-15}}, "face": {"0": [0, 1, 2, 3], "1": [7, 6, 5, 4], "2": [3, 7, 4, 0], "3": [6, 2, 1, 5], "4": [7, 3, 2, 6], "5": [5, 1, 0, 4]}, "facedata": {"0": {}, "1": {}, "2": {}, "3": {}, "4": {}, "5": {}}, "edgedata": {}, "max_vertex": 7, "max_face": 5}, "inheritance": ["compas.datastructures/Mesh"], "guid": "2dbeddb4-532e-4be2-a1c7-f2044f2330f7"}], "resultant_compression_by_interface": [[{"dtype": "compas.geometry/Line", "data": {"start": [5.046358409889122, 0.25000000009626244, 1.2946019596638467], "end": [5.467697495930538, 0.2500000000962611, 0.3706609005202859]}, "guid": "b8ea7149-9b9e-4008-8f85-f79acc1ead1c"}], [{"dtype": "compas.geometry/Line", "data": {"start": [4.678954050406151, 0.2500000002041828, 1.9993754833999615], "end": [5.100293136447567, 0.25000000020418145, 1.178094541939052]}, "guid": "a0392ebe-39ac-451a-8d6a-fd216a657089"}], [{"dtype": "compas.geometry/Line", "data": {"start": [4.277013078255501, 0.2500000003287301, 2.645898916683225], "end": [4.698352164296916, 0.25000000032872877, 1.9272780929049673]}, "guid": "0c64a8e2-9f92-4b20-8d3b-014e5d41d0d1"}], [{"dtype": "compas.geometry/Line", "data": {"start": [3.834415429369123, 0.2500000004744508, 3.2469066148844052], "end": [4.255754515410538, 0.2500000004744495, 2.630945908788799]}, "guid": "b91bb01d-9adf-43f7-96a8-e21ad34637ee"}], [{"dtype": "compas.geometry/Line", "data": {"start": [3.3425926152780634, 0.25000000064425393, 3.809912452505248], "end": [3.763931701319478, 0.2500000006442526, 3.2966118640922932]}, "guid": "756b5ba7-699d-4fcc-a493-6b266674d381"}], [{"dtype": "compas.geometry/Line", "data": {"start": [2.7894445066990787, 0.2500000008366794, 4.334622972751021], "end": [3.210783592740494, 0.25000000083667806, 3.9239825020207175]}, "guid": "142fd2ab-6631-426f-a473-de7ec27fdd75"}], [{"dtype": "compas.geometry/Line", "data": {"start": [2.1603239233723994, 0.250000001041306, 4.807326862151008], "end": [2.581663009413814, 0.25000000104130465, 4.499346509103358]}, "guid": "254219c7-acc5-435b-9bac-c84f1d8d302f"}], [{"dtype": "compas.geometry/Line", "data": {"start": [1.4437683462027426, 0.25000000123378324, 5.194496372624485], "end": [1.8651074322441576, 0.2500000012337819, 4.989176137259486]}, "guid": "38d9308c-d3ae-466c-b52c-197c04ab34a2"}], [{"dtype": "compas.geometry/Line", "data": {"start": [0.6433466810942938, 0.2500000013760346, 5.443376287404319], "end": [1.0646857671357088, 0.2500000013760333, 5.340716169721971]}, "guid": "ad98b06f-9ccf-484d-b01e-abf864588706"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-0.2106695430207063, 0.25000000142913953, 5.499999998529973], "end": [0.21066954302070875, 0.2500000014291382, 5.499999998530277]}, "guid": "72a203f2-356e-4a36-8c2f-8801d507d7bf"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-1.0646857671355185, 0.25000000137603995, 5.340716169720479], "end": [-0.6433466810941033, 0.2500000013760386, 5.443376287403434]}, "guid": "78a93db6-2bb9-4039-b562-0d5e85ee7503"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-1.8651074322434853, 0.2500000012337931, 4.989176137257118], "end": [-1.4437683462020703, 0.2500000012337918, 5.1944963726227265]}, "guid": "61a73729-97fc-45db-9abd-eeba4b10b4ed"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-2.581663009412542, 0.2500000010413191, 4.499346509100559], "end": [-2.1603239233711267, 0.25000000104131775, 4.807326862148819]}, "guid": "d4b05264-c703-4d85-a5b0-3dccb2782b26"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-3.2107835927386494, 0.2500000008366942, 3.9239825020178745], "end": [-2.789444506697234, 0.2500000008366929, 4.334622972748786]}, "guid": "45b6c841-4292-4a3b-8b7b-27fd66b0e871"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-3.763931701317164, 0.2500000006442697, 3.296611864089675], "end": [-3.3425926152757492, 0.25000000064426836, 3.809912452503238]}, "guid": "9284c765-cd2f-48dc-a980-fb77f30a8f3b"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-4.255754515407867, 0.25000000047446685, 2.630945908786555], "end": [-3.8344154293664516, 0.2500000004744655, 3.2469066148827705]}, "guid": "cc1820f5-f7dc-462a-b6d1-35e4b076b313"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-4.698352164293989, 0.25000000032874586, 1.9272780929031712], "end": [-4.2770130782525735, 0.25000000032874453, 2.645898916682039]}, "guid": "57821632-c64f-4ec3-ae02-f01cb9593353"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-5.100293136444459, 0.2500000002041981, 1.178094541937737], "end": [-4.678954050403044, 0.25000000020419677, 1.9993754833992576]}, "guid": "decbe024-14f3-46ff-a786-65d3fd52ad85"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-5.467697495927305, 0.2500000000962773, 0.3706609005194691], "end": [-5.046358409885889, 0.250000000096276, 1.2946019596636416]}, "guid": "189d8346-83d1-45c5-b66d-7a4914ff579d"}]], "resultant_tension_by_interface": [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], "nodal_normal_compression_by_interface": [[{"dtype": "compas.geometry/Line", "data": {"start": [5.407599317162625, 0.0, 1.0162543387568816], "end": [5.45697242938389, 0.0, 0.7045247766856583]}, "guid": "e6344b1e-6ca2-4db0-b4cc-e0b73257b10b"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.924861347630052, 0.0, 0.8679153143344993], "end": [4.952022058321327, 0.0, 0.6964293360678095]}, "guid": "ad1726db-e968-43b8-b5a8-9edab1d902d3"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.924861347609288, 0.5, 0.8679153144655951], "end": [4.952022058342091, 0.5, 0.6964293359367137]}, "guid": "79eeeadc-64f1-41fb-87a2-30835f2e2fc6"}, {"dtype": "compas.geometry/Line", "data": {"start": [5.40759931715392, 0.5, 1.0162543388118466], "end": [5.456972429392595, 0.5, 0.7045247766306932]}, "guid": "76e7fc20-d0b1-4571-ae47-febdac6768bb"}], [{"dtype": "compas.geometry/Line", "data": {"start": [5.210922014430379, 0.0, 1.760804978932359], "end": [5.250699664816311, 0.0, 1.638381959192063]}, "guid": "26a64c93-4c3c-41ae-9876-7586ce970706"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.7047707279238455, 0.0, 1.7005444719836995], "end": [4.805794435027693, 0.0, 1.389625471765775]}, "guid": "0e77a13e-7e6d-498d-a7ee-682ec3465a83"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.704770727942358, 0.5, 1.7005444719267235], "end": [4.80579443500918, 0.5, 1.389625471822751]}, "guid": "c520cc80-fd19-4562-aee0-bf00b61f6c2f"}, {"dtype": "compas.geometry/Line", "data": {"start": [5.2109220142968695, 0.5, 1.7608049793432579], "end": [5.2506996649498205, 0.5, 1.638381958781164]}, "guid": "042f4c82-f774-4bc8-b270-db8589844710"}], [{"dtype": "compas.geometry/Line", "data": {"start": [4.893618800032781, 0.0, 2.510523288337123], "end": [4.907452966039267, 0.0, 2.483372208797893]}, "guid": "60f16773-b94c-4838-8caf-f7aab9bf82b1"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.367567373569161, 0.0, 2.441612712057962], "end": [4.54249786831452, 0.0, 2.0982922853375072]}, "guid": "bbf6fa17-ca7c-47e8-ac33-56ea16f67411"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.367567373681278, 0.5, 2.4416127118379203], "end": [4.542497868202402, 0.5, 2.098292285557549]}, "guid": "521628af-7cd0-403e-8212-0d37b8aeac25"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.8936187996724545, 0.5, 2.5105232890443046], "end": [4.907452966399594, 0.5, 2.4833722080907115]}, "guid": "421d3f3b-2fc9-4332-8901-493c64e1c00e"}], [{"dtype": "compas.geometry/Line", "data": {"start": [4.449593468922628, 0.0, 3.2328188878007245], "end": [4.449593469201797, 0.0, 3.2328188874164816]}, "guid": "b7bab7b7-b469-42a8-8068-05866e5384a3"}, {"dtype": "compas.geometry/Line", "data": {"start": [3.9354660233005823, 0.0, 3.089803800420893], "end": [4.154703920448894, 0.0, 2.788048722503839]}, "guid": "42002dc4-22ba-4cbf-941e-ee51d7dd2fca"}, {"dtype": "compas.geometry/Line", "data": {"start": [3.9354660228845164, 0.5, 3.089803800993559], "end": [4.15470392086496, 0.5, 2.788048721931173]}, "guid": "41276cb2-da3a-4017-aaf9-df0a6e4542c5"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.449593468922624, 0.5, 3.2328188878007293], "end": [4.4495934692018, 0.5, 3.2328188874164767]}, "guid": "076e0994-afad-4ef1-8ee5-393c6b7f62ad"}], [{"dtype": "compas.geometry/Line", "data": {"start": [3.8832290836986774, 0.0, 3.894945509353349], "end": [3.8949455093533496, 0.0, 3.883229083698677]}, "guid": "e59fb7fc-bbfe-45e6-930c-fcf45bb2ab95"}, {"dtype": "compas.geometry/Line", "data": {"start": [3.424562159754351, 0.0, 3.6465056521111263], "end": [3.6465056521111263, 0.0, 3.424562159754351]}, "guid": "0cc79229-7f23-4264-ae66-2e6662364165"}, {"dtype": "compas.geometry/Line", "data": {"start": [3.42456215912156, 0.5, 3.6465056527439175], "end": [3.6465056527439175, 0.5, 3.42456215912156]}, "guid": "63cad2f6-816e-4e8d-b225-b265d837d210"}, {"dtype": "compas.geometry/Line", "data": {"start": [3.883229083729324, 0.5, 3.8949455093227026], "end": [3.894945509322703, 0.5, 3.8832290837293235]}, "guid": "9a411ef5-0c7f-49e0-bcf0-f334fa540701"}], [{"dtype": "compas.geometry/Line", "data": {"start": [3.2083014587804297, 0.0, 4.467406423783227], "end": [3.257336316436779, 0.0, 4.4317805143412]}, "guid": "87e2e421-a234-447f-ba4a-ee1543e5233b"}, {"dtype": "compas.geometry/Line", "data": {"start": [2.8456834007390035, 0.0, 4.1128298756231425], "end": [3.03216912218573, 0.0, 3.977340068126334]}, "guid": "37c65828-8837-4518-b20d-3d8142fd2606"}, {"dtype": "compas.geometry/Line", "data": {"start": [2.8456834009148153, 0.5, 4.112829875495407], "end": [3.0321691220099183, 0.5, 3.977340068254069]}, "guid": "31c08ea0-2b88-48e7-a857-49dd0d11db62"}, {"dtype": "compas.geometry/Line", "data": {"start": [3.2083014578163978, 0.5, 4.467406424483637], "end": [3.257336317400811, 0.5, 4.431780513640789]}, "guid": "af4346e3-9ef8-43a5-9986-ddc93dd2eb40"}], [{"dtype": "compas.geometry/Line", "data": {"start": [2.4458610495642623, 0.0, 4.926565856308843], "end": [2.5480344475707564, 0.0, 4.87450590976321]}, "guid": "685bc22d-4efa-4189-80ee-ef83aeec3526"}, {"dtype": "compas.geometry/Line", "data": {"start": [2.2062695323565116, 0.0, 4.4874807129919905], "end": [2.3336354650389586, 0.0, 4.42258452889169]}, "guid": "c0f3d25e-b17e-4c53-971e-b8c7a076c313"}, {"dtype": "compas.geometry/Line", "data": {"start": [2.2062695322067634, 0.5, 4.487480713068291], "end": [2.333635465188707, 0.5, 4.422584528815389]}, "guid": "7e8e1502-4d89-4654-811d-f634f3f33766"}, {"dtype": "compas.geometry/Line", "data": {"start": [2.445861048757928, 0.5, 4.92656585671969], "end": [2.5480344483770905, 0.5, 4.874505909352362]}, "guid": "d07ed6c3-248e-49f4-9675-f1495dc1ddf0"}], [{"dtype": "compas.geometry/Line", "data": {"start": [1.6214852975187248, 0.0, 5.2561897229945655], "end": [1.7777016406057007, 0.0, 5.20543195625213]}, "guid": "13c81642-31e4-4f83-879f-52d748154dc1"}, {"dtype": "compas.geometry/Line", "data": {"start": [1.5128314222893637, 0.0, 4.7657623950094825], "end": [1.5773385214601126, 0.0, 4.7448027679420575]}, "guid": "766a3496-7d48-49f9-85a8-e4e4726905b3"}, {"dtype": "compas.geometry/Line", "data": {"start": [1.5128314215285812, 0.5, 4.765762395256676], "end": [1.577338522220895, 0.5, 4.744802767694864]}, "guid": "9642bcfa-1ee5-4e32-8083-67725ef01f9c"}, {"dtype": "compas.geometry/Line", "data": {"start": [1.6214852971902085, 0.5, 5.256189723101307], "end": [1.777701640934217, 0.5, 5.205431956145389]}, "guid": "21564731-b181-4c96-95c9-7f562187430c"}], [{"dtype": "compas.geometry/Line", "data": {"start": [0.762363061001271, 0.0, 5.447811745093232], "end": [0.9584160544412714, 0.0, 5.416760001453288]}, "guid": "45d5ac8d-9558-4acf-908b-50fa0eb91fa8"}, {"dtype": "compas.geometry/Line", "data": {"start": [0.7734763112086548, 0.0, 4.939819016284948], "end": [0.7908683391936552, 0.0, 4.937064389666435]}, "guid": "fab0909b-28d1-44e4-ae9f-79024da37ce7"}, {"dtype": "compas.geometry/Line", "data": {"start": [0.7734763107135285, 0.5, 4.9398190163633675], "end": [0.7908683396887815, 0.5, 4.937064389588015]}, "guid": "e7b23651-40e1-48dd-9ba3-a776d8b47fe5"}, {"dtype": "compas.geometry/Line", "data": {"start": [0.7623630603215669, 0.5, 5.447811745200887], "end": [0.9584160551209756, 0.5, 5.416760001345633]}, "guid": "af426427-4b98-4c5b-9f81-66d4c8ba0501"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-0.10533477059868808, 0.0, 5.5000000000000036], "end": [0.10533477059869052, 0.0, 5.5000000000000036]}, "guid": "0be7ffd5-13a4-433e-8ab9-bc850d7eb528"}, {"dtype": "compas.geometry/Line", "data": {"start": [-3.0951207223191896e-10, 0.0, 5.000000000000003], "end": [3.0951273836573374e-10, 0.0, 5.000000000000003]}, "guid": "3549e220-3aa5-4366-98a3-e58fecf9a967"}, {"dtype": "compas.geometry/Line", "data": {"start": [-3.098044399681183e-10, 0.5, 5.000000000000003], "end": [3.098051061019331e-10, 0.5, 5.000000000000003]}, "guid": "d5d1219d-9eb2-4667-b9ec-f5d8405533c4"}, {"dtype": "compas.geometry/Line", "data": {"start": [-0.10533477180269983, 0.5, 5.5000000000000036], "end": [0.10533477180270227, 0.5, 5.5000000000000036]}, "guid": "39c7f88d-73ca-401e-9894-dc2bc8e3a5c1"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-0.9584160543317952, 0.0, 5.416760001470628], "end": [-0.7623630611107426, 0.0, 5.447811745075894]}, "guid": "cf24f3c6-203e-4026-8995-73aa5c9b3351"}, {"dtype": "compas.geometry/Line", "data": {"start": [-0.7908683393031496, 0.0, 4.937064389649092], "end": [-0.7734763110991588, 0.0, 4.93981901630229]}, "guid": "4b675691-5d7e-4d58-b39f-2f6d43b16a13"}, {"dtype": "compas.geometry/Line", "data": {"start": [-0.7908683395798027, 0.5, 4.937064389605275], "end": [-0.7734763108225057, 0.5, 4.9398190163461075]}, "guid": "f51c4997-70ed-406d-bcb4-565ffc3a075d"}, {"dtype": "compas.geometry/Line", "data": {"start": [-0.958416055229977, 0.5, 5.41676000132837], "end": [-0.7623630602125608, 0.5, 5.447811745218152]}, "guid": "8bd7f4e8-a837-4b65-83c2-e21849399dc1"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-1.7777016405105543, 0.0, 5.205431956283045], "end": [-1.6214852976138667, 0.0, 5.2561897229636525]}, "guid": "27049d31-fb9a-4e0f-bada-8039bbd2af6d"}, {"dtype": "compas.geometry/Line", "data": {"start": [-1.5773385215552964, 0.0, 4.744802767911131], "end": [-1.5128314221941785, 0.0, 4.765762395040411]}, "guid": "bfe44a25-f60e-4aba-a739-fe5a1fd32880"}, {"dtype": "compas.geometry/Line", "data": {"start": [-1.5773385221266938, 0.5, 4.7448027677254725], "end": [-1.5128314216227812, 0.5, 4.765762395226069]}, "guid": "77f47ece-341c-474b-a57d-a4af851fe2f5"}, {"dtype": "compas.geometry/Line", "data": {"start": [-1.7777016410284645, 0.5, 5.205431956114766], "end": [-1.6214852970959566, 0.5, 5.256189723131931]}, "guid": "695bead1-12d1-43a6-a391-52922f5556a6"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-2.548034447600046, 0.0, 4.874505909748287], "end": [-2.44586104953497, 0.0, 4.9265658563237675]}, "guid": "c28b8015-a8ab-4501-a0f2-ccc696b05cca"}, {"dtype": "compas.geometry/Line", "data": {"start": [-2.3336354650097233, 0.0, 4.4225845289065875], "end": [-2.206269532385747, 0.0, 4.487480712977097]}, "guid": "dd0c01c3-6115-428c-971f-f1fdeab03e8f"}, {"dtype": "compas.geometry/Line", "data": {"start": [-2.3336354652192965, 0.5, 4.422584528799805], "end": [-2.2062695321761736, 0.5, 4.487480713083879]}, "guid": "c976e627-5368-4765-9324-e803ac41e9aa"}, {"dtype": "compas.geometry/Line", "data": {"start": [-2.548034448346567, 0.5, 4.874505909367915], "end": [-2.445861048788449, 0.5, 4.926565856704139]}, "guid": "297a071b-f693-4189-a7aa-d97137717596"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-3.2573363165250373, 0.0, 4.431780514277078], "end": [-3.2083014586921696, 0.0, 4.467406423847352]}, "guid": "262add42-14de-4796-860f-328492e63784"}, {"dtype": "compas.geometry/Line", "data": {"start": [-3.032169122097537, 0.0, 3.9773400681904114], "end": [-2.8456834008271974, 0.0, 4.112829875559067]}, "guid": "3f97faaf-81b6-415d-b159-9b296b429cd1"}, {"dtype": "compas.geometry/Line", "data": {"start": [-3.0321691220997056, 0.5, 3.9773400681888362], "end": [-2.845683400825029, 0.5, 4.112829875560642]}, "guid": "5632f1df-0083-4a26-89c3-8f6beb077da0"}, {"dtype": "compas.geometry/Line", "data": {"start": [-3.257336317311103, 0.5, 4.431780513705967], "end": [-3.2083014579061038, 0.5, 4.467406424418463]}, "guid": "95998f12-5760-4046-bd88-ef1f3b31a195"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-3.894945509358816, 0.0, 3.8832290836932137], "end": [-3.883229083693211, 0.0, 3.8949455093588186]}, "guid": "32f478ac-49a6-403d-a8c6-34a3e4315edb"}, {"dtype": "compas.geometry/Line", "data": {"start": [-3.64650565210573, 0.0, 3.4245621597597493], "end": [-3.424562159759749, 0.0, 3.646505652105729]}, "guid": "6ca36da3-2898-4d92-a290-df13c72ddc09"}, {"dtype": "compas.geometry/Line", "data": {"start": [-3.646505652750991, 0.5, 3.4245621591144886], "end": [-3.424562159114488, 0.5, 3.6465056527509896]}, "guid": "0f5d5308-362d-46c0-a103-0bd869b607b9"}, {"dtype": "compas.geometry/Line", "data": {"start": [-3.894945509315715, 0.5, 3.883229083736315], "end": [-3.883229083736312, 0.5, 3.8949455093157175]}, "guid": "9ca58764-0362-45fa-b9f4-bc419e9c3f8b"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-4.449593469201083, 0.0, 3.2328188874174715], "end": [-4.449593468923346, 0.0, 3.2328188877997435]}, "guid": "4ee4ee82-a6e4-4579-8291-9a8a0213aa13"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.154703920449677, 0.0, 2.788048722502765], "end": [-3.935466023299801, 0.0, 3.0898038004219694]}, "guid": "c7de5983-62aa-4ea0-9a0b-52e83a84d936"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.154703920865773, 0.5, 2.788048721930058], "end": [-3.935466022883705, 0.5, 3.0898038009946767]}, "guid": "fe670025-4eab-4de5-b486-3accb42713be"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.44959346920107, 0.5, 3.2328188874174884], "end": [-4.449593468923358, 0.5, 3.2328188877997266]}, "guid": "3f789257-d6da-49e0-a8f2-fcb50e550adb"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-4.9074529661095525, 0.0, 2.4833722086599606], "end": [-4.893618799962503, 0.0, 2.5105232884750626]}, "guid": "a66648c3-92f0-4d70-ac1f-15156784e9a1"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.542497868244295, 0.0, 2.0982922854753343], "end": [-4.367567373639387, 0.0, 2.441612711920136]}, "guid": "b171c58c-362c-427e-b792-c9bb878bb80a"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.542497868273985, 0.5, 2.098292285417064], "end": [-4.367567373609697, 0.5, 2.441612711978406]}, "guid": "c2bc4382-539b-480e-a6e0-23ea7812515f"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.907452966328084, 0.5, 2.483372208231068], "end": [-4.8936187997439715, 0.5, 2.510523288903955]}, "guid": "80430564-4ef4-4089-9c07-fdf65c8ec339"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-5.250699664803223, 0.0, 1.6383819592323632], "end": [-5.210922014443478, 0.0, 1.7608049788920654]}, "guid": "1e9818c0-9df8-40e9-ab19-f2f0f3711128"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.805794435040829, 0.0, 1.3896254717253536], "end": [-4.704770727910713, 0.0, 1.7005444720241218]}, "guid": "e1c0efa9-5715-470c-9d0d-b8b345166450"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.805794434997034, 0.5, 1.3896254718601408], "end": [-4.704770727954508, 0.5, 1.7005444718893346]}, "guid": "0dc682d5-69eb-4ea9-bee9-313bf90f5c7b"}, {"dtype": "compas.geometry/Line", "data": {"start": [-5.250699664962023, 0.5, 1.6383819587436266], "end": [-5.2109220142846775, 0.5, 1.760804979380802]}, "guid": "9231b48d-7424-4a3f-847d-1b19baa9b961"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-5.456972429367165, 0.0, 0.704524776791296], "end": [-5.407599317179362, 0.0, 1.0162543386512493]}, "guid": "ab707a1c-1249-49d6-8c21-849c56c23ece"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.952022058338082, 0.0, 0.6964293359620399], "end": [-4.924861347613302, 0.0, 0.8679153144402696]}, "guid": "f6f2e933-baeb-4919-a471-69034a6cefdd"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.95202205832586, 0.5, 0.6964293360392099], "end": [-4.924861347625524, 0.5, 0.8679153143630997]}, "guid": "cb45ace4-6260-4777-b038-6a1dbf801047"}, {"dtype": "compas.geometry/Line", "data": {"start": [-5.456972429408862, 0.5, 0.7045247765280366], "end": [-5.407599317137666, 0.5, 1.0162543389145087]}, "guid": "f0d3181d-13d0-4499-904b-44cc7d857c13"}]], "nodal_normal_tension_by_interface": [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], "nodal_tangential_by_interface": [[{"dtype": "compas.geometry/Line", "data": {"start": [5.39875188908703, -5.083786638317886e-10, 0.8550782964040824], "end": [5.465819857459485, 5.083786638317886e-10, 0.8657008190384574]}, "guid": "df3f200f-4508-4517-83b0-92892481748e"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.904907828714218, 5.083789902299736e-10, 0.7768610812943378], "end": [4.971975577237161, -5.083789902299736e-10, 0.787483569107971]}, "guid": "170067e8-89b7-45de-a13b-af5606ce7605"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.90490782712257, 0.500000000508379, 0.7768610810422457], "end": [4.9719755788288085, 0.499999999491621, 0.7874835693600631]}, "guid": "973b3bd6-a8c7-486c-ae47-db22dfce3d1e"}, {"dtype": "compas.geometry/Line", "data": {"start": [5.398751887495377, 0.49999999949162127, 0.8550782961519893], "end": [5.465819859051138, 0.5000000005083787, 0.8657008192905505]}, "guid": "38be55de-e0da-4a56-927a-4aa3d4ed1a28"}], [{"dtype": "compas.geometry/Line", "data": {"start": [5.213343808944729, -6.818784361225623e-11, 1.6939180867600243], "end": [5.248277870301961, 6.818784361225623e-11, 1.7052688513643977]}, "guid": "e36f7484-6d8d-4f4f-aac3-1cf86d8ac66a"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.737815520120767, 6.818816983168577e-11, 1.5394095796051885], "end": [4.772749642830771, -6.818816983168577e-11, 1.550760364144286]}, "guid": "92374716-1795-4b7d-9945-5e482e646d1e"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.7378155194464195, 0.5000000000681881, 1.5394095793860796], "end": [4.772749643505119, 0.4999999999318118, 1.550760364363395]}, "guid": "f15e5cb2-13e5-4a7d-9018-ce7202b5b269"}, {"dtype": "compas.geometry/Line", "data": {"start": [5.2133438082703805, 0.49999999993181216, 1.693918086540915], "end": [5.24827787097631, 0.5000000000681879, 1.705268851583507]}, "guid": "0a9c0b08-0961-4cf2-a682-d088b837bf31"}], [{"dtype": "compas.geometry/Line", "data": {"start": [4.895059675807029, 1.1340439819551931e-10, 2.4941574816176293], "end": [4.90601209026502, -1.1340439819551931e-10, 2.4997380155173867]}, "guid": "31dd85e4-d48e-4562-b5ae-982d98b09dca"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.449556387436463, -1.1340407182882698e-10, 2.2671622183593705], "end": [4.460508854447218, 1.1340407182882698e-10, 2.272742779036099]}, "guid": "5a5331d6-dfa8-41b9-af1f-62410dcf23c6"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.449556387160511, 0.49999999988659594, 2.2671622182187665], "end": [4.4605088547231695, 0.5000000001134041, 2.2727427791767028]}, "guid": "1760f8c6-b7e6-479a-bbd6-a5c42e7d5873"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.895059675531074, 0.5000000001134044, 2.494157481477023], "end": [4.906012090540975, 0.4999999998865956, 2.499738015657993]}, "guid": "821fd73b-138e-4c63-acd0-c58a16d5ed1f"}], [{"dtype": "compas.geometry/Line", "data": {"start": [4.4495934691248, -6.674218421450626e-19, 3.232818887654075], "end": [4.449593468999625, 6.674218421450626e-19, 3.232818887563131]}, "guid": "3fc2944f-7cb7-4e79-ab26-a24e10cce230"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.049369149617684, 3.270010799693506e-16, 2.94203889879015], "end": [4.040800794131792, -3.270010799693506e-16, 2.935813624134582]}, "guid": "b65ba735-5691-497a-aa7f-b9db5fba7a1f"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.0493691488294585, 0.5000000000000003, 2.9420388982174708], "end": [4.040800794920018, 0.49999999999999967, 2.935813624707261]}, "guid": "71e5dc88-b1ff-4290-98cb-d884c28ce147"}, {"dtype": "compas.geometry/Line", "data": {"start": [4.449593469124801, 0.5, 3.2328188876540764], "end": [4.449593468999623, 0.5, 3.2328188875631296]}, "guid": "1ec8cfb2-3cc7-4105-a3f8-c339aa73a6da"}], [{"dtype": "compas.geometry/Line", "data": {"start": [3.8931871975735395, 4.1289928645347435e-11, 3.893187197573539], "end": [3.8849873954784875, -4.1289928645347435e-11, 3.884987395478487]}, "guid": "2998592e-84f6-44a6-8de2-79bfbcda31ad"}, {"dtype": "compas.geometry/Line", "data": {"start": [3.5429291929243374, -4.128960346883035e-11, 3.5429291929243374], "end": [3.52813861894114, 4.128960346883035e-11, 3.52813861894114]}, "guid": "c4ad0fc7-5ad0-48b4-b655-6aef5045afe5"}, {"dtype": "compas.geometry/Line", "data": {"start": [3.5429291924604547, 0.4999999999587104, 3.5429291924604547], "end": [3.5281386194050226, 0.5000000000412896, 3.5281386194050226]}, "guid": "c8e19a2f-1a64-4c7b-8397-8e1bd37b5a5a"}, {"dtype": "compas.geometry/Line", "data": {"start": [3.8931871975520576, 0.50000000004129, 3.893187197552057], "end": [3.8849873954999694, 0.4999999999587101, 3.884987395499969]}, "guid": "29d5a58e-269a-4e90-bb56-1d07bde03b2a"}], [{"dtype": "compas.geometry/Line", "data": {"start": [3.2390316372695547, 1.2745145785946557e-11, 4.458144585371959], "end": [3.226606137947654, -1.2745145785946557e-11, 4.441042352752468]}, "guid": "a75612a8-ecc9-4f33-8261-68c73b1f89a0"}, {"dtype": "compas.geometry/Line", "data": {"start": [2.945139030429766, -1.2744819454040727e-11, 4.053636114757531], "end": [2.9327134924949676, 1.2744819454040727e-11, 4.036533828991946]}, "guid": "d0f9bf38-41c8-4890-a2c4-aa61fb9b48eb"}, {"dtype": "compas.geometry/Line", "data": {"start": [2.9451390302367098, 0.4999999999872552, 4.053636114491812], "end": [2.932713492688024, 0.5000000000127448, 4.036533829257665]}, "guid": "a7ee49cc-5b46-4ab1-9113-8f7a60e8adf9"}, {"dtype": "compas.geometry/Line", "data": {"start": [3.2390316370765007, 0.5000000000127451, 4.4581445851062425], "end": [3.226606138140708, 0.49999999998725486, 4.441042353018184]}, "guid": "2eacc15f-2c97-48cc-b6da-8891b7b1e88e"}], [{"dtype": "compas.geometry/Line", "data": {"start": [2.5016651951232447, 7.577445806857662e-12, 4.9097943932054715], "end": [2.492230302011774, -7.577445806857662e-12, 4.891277372866581]}, "guid": "e623221f-a786-4ed2-833e-c624da5b34b2"}, {"dtype": "compas.geometry/Line", "data": {"start": [2.2746699465713855, -7.577119473670102e-12, 4.46429113369784], "end": [2.2652350508240846, 7.577119473670102e-12, 4.445774108185841]}, "guid": "c9ed97ad-4e73-4e5b-b452-5bf4ea4a61d9"}, {"dtype": "compas.geometry/Line", "data": {"start": [2.274669946454158, 0.4999999999924229, 4.464291133467768], "end": [2.265235050941312, 0.5000000000075772, 4.445774108415913]}, "guid": "2679e037-e086-4384-9029-62f40e689eee"}, {"dtype": "compas.geometry/Line", "data": {"start": [2.5016651950060167, 0.5000000000075775, 4.909794392975399], "end": [2.492230302129002, 0.49999999999242256, 4.891277373096654]}, "guid": "8c7a3a2d-72e4-48db-b08f-2afb5d93713c"}], [{"dtype": "compas.geometry/Line", "data": {"start": [1.7021069456339768, 1.4114941263290118e-11, 5.238546525089342], "end": [1.6970799924904487, -1.4114941263290118e-11, 5.223075154157353]}, "guid": "a34742d3-6fdb-428f-8a25-420fc58c7b10"}, {"dtype": "compas.geometry/Line", "data": {"start": [1.547598445514909, -1.4114614929608421e-11, 4.7630182579192475], "end": [1.5425714982345673, 1.4114614929608421e-11, 4.7475469050322925]}, "guid": "b10373af-495b-4c80-867f-4ed45482533c"}, {"dtype": "compas.geometry/Line", "data": {"start": [1.547598445466132, 0.4999999999858854, 4.763018257769128], "end": [1.5425714982833443, 0.5000000000141146, 4.747546905182412]}, "guid": "821ce930-d7e0-4bdd-aa6b-12efd04f383e"}, {"dtype": "compas.geometry/Line", "data": {"start": [1.7021069455851998, 0.5000000000141149, 5.238546524939221], "end": [1.6970799925392257, 0.49999999998588507, 5.223075154307474]}, "guid": "654b8b98-9fac-486e-85fc-3a653869db44"}], [{"dtype": "compas.geometry/Line", "data": {"start": [0.8610834309142078, 1.5202394916429293e-11, 5.436666816196156], "end": [0.8596956845283347, -1.5202394916429293e-11, 5.427904930350365]}, "guid": "83034c74-9a64-4407-8987-1739643cd09a"}, {"dtype": "compas.geometry/Line", "data": {"start": [0.7828661918077596, -1.5202068582501587e-11, 4.942822604314124], "end": [0.7814784585945503, 1.5202068582501587e-11, 4.9340608016372585]}, "guid": "24495ad9-8fc0-455d-9931-2253ec07daa0"}, {"dtype": "compas.geometry/Line", "data": {"start": [0.7828661917977809, 0.49999999998479794, 4.942822604251121], "end": [0.781478458604529, 0.5000000000152021, 4.934060801700261]}, "guid": "ea976d28-a924-42d4-a78a-3c3b34112888"}, {"dtype": "compas.geometry/Line", "data": {"start": [0.8610834309042277, 0.5000000000152024, 5.436666816133143], "end": [0.8596956845383148, 0.4999999999847976, 5.427904930413377]}, "guid": "e4f69fa1-1c44-4429-8dc1-bc830c33c73d"}], [{"dtype": "compas.geometry/Line", "data": {"start": [1.2212453270876055e-15, 3.465847005278028e-16, 5.499999999999965], "end": [1.22124532708774e-15, -3.465847005278028e-16, 5.500000000000042]}, "guid": "69594102-a80d-4e05-a093-0179abbdd41e"}, {"dtype": "compas.geometry/Line", "data": {"start": [3.330669073874797e-16, -2.034336266480994e-17, 4.9999999999999645], "end": [3.330669073876154e-16, 2.034336266480994e-17, 5.000000000000041]}, "guid": "60a3ae9b-f3b2-4cb3-bdd6-e08599bec346"}, {"dtype": "compas.geometry/Line", "data": {"start": [3.330669073874797e-16, 0.5, 4.9999999999999645], "end": [3.330669073876154e-16, 0.5, 5.000000000000041]}, "guid": "3717bd1e-97c9-4fb6-b486-c48ba6f09796"}, {"dtype": "compas.geometry/Line", "data": {"start": [1.221245327087605e-15, 0.5000000000000003, 5.499999999999965], "end": [1.2212453270877406e-15, 0.49999999999999967, 5.500000000000042]}, "guid": "82e1b185-b341-4b51-9843-5576c0a7751c"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-0.8596956845295395, -2.299225895342786e-11, 5.427904930357987], "end": [-0.8610834309129983, 2.299225895342786e-11, 5.436666816188535]}, "guid": "500a6f6a-fbbc-4088-9197-b094bc47de89"}, {"dtype": "compas.geometry/Line", "data": {"start": [-0.7814784585957563, 2.299258528792277e-11, 4.934060801644877], "end": [-0.7828661918065521, -2.299258528792277e-11, 4.942822604306505]}, "guid": "179b3227-9762-416b-893b-459ab4c21444"}, {"dtype": "compas.geometry/Line", "data": {"start": [-0.7814784586032979, 0.5000000000229926, 4.934060801692493], "end": [-0.7828661917990105, 0.4999999999770074, 4.942822604258889]}, "guid": "bb95eb30-6831-4edf-8a1e-f82b898a4bf2"}, {"dtype": "compas.geometry/Line", "data": {"start": [-0.8596956845370819, 0.4999999999770077, 5.427904930405608], "end": [-0.8610834309054559, 0.5000000000229923, 5.436666816140914]}, "guid": "ae2efced-9c48-44ee-8069-eb75d05fa925"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-1.6970799924933382, -2.354503630051108e-11, 5.223075154166255], "end": [-1.702106945631083, 2.354503630051108e-11, 5.238546525080443]}, "guid": "1f070e10-1448-450f-948b-6d9ee8e53f9c"}, {"dtype": "compas.geometry/Line", "data": {"start": [-1.5425714982374583, 2.3545362635023694e-11, 4.747546905041193], "end": [-1.5475984455120166, -2.3545362635023694e-11, 4.763018257910349]}, "guid": "2ba46e71-0217-459e-ada8-6a7cc9c7e281"}, {"dtype": "compas.geometry/Line", "data": {"start": [-1.5425714982804068, 0.5000000000235454, 4.747546905173375], "end": [-1.547598445469068, 0.4999999999764546, 4.763018257778167]}, "guid": "6fcbbaa4-d9e5-4464-84ed-273fa53b0b5b"}, {"dtype": "compas.geometry/Line", "data": {"start": [-1.697079992536287, 0.49999999997645495, 5.223075154298437], "end": [-1.7021069455881341, 0.500000000023545, 5.23854652494826]}, "guid": "42f23b8b-bb5e-4597-bd1a-fc2016dd7bea"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-2.4922303020146823, -1.4053710442302718e-11, 4.891277372872292], "end": [-2.5016651951203337, 1.4053710442302718e-11, 4.909794393199762]}, "guid": "33260333-ec72-4519-9fae-d3053e3d820a"}, {"dtype": "compas.geometry/Line", "data": {"start": [-2.265235050826994, 1.4054036776818921e-11, 4.445774108191553], "end": [-2.2746699465684763, -1.4054036776818921e-11, 4.464291133692131]}, "guid": "0c03b6fe-23d2-414d-a80b-071ef4a140d4"}, {"dtype": "compas.geometry/Line", "data": {"start": [-2.265235050938341, 0.5000000000140541, 4.445774108410084], "end": [-2.274669946457129, 0.49999999998594596, 4.4642911334736]}, "guid": "d4b56f25-bab6-4875-925d-e7023163e839"}, {"dtype": "compas.geometry/Line", "data": {"start": [-2.4922303021260297, 0.4999999999859463, 4.891277373090824], "end": [-2.5016651950089863, 0.5000000000140538, 4.90979439298123]}, "guid": "23d03dd0-aca3-4178-ae4a-3d1dc530f469"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-3.226606137946838, -1.142086748355051e-11, 4.441042352751348], "end": [-3.239031637270369, 1.142086748355051e-11, 4.458144585373082]}, "guid": "4912c98c-5894-476e-90e6-fe30721ec7a1"}, {"dtype": "compas.geometry/Line", "data": {"start": [-2.932713492494153, 1.1421193818070346e-11, 4.036533828990825], "end": [-2.9451390304305813, -1.1421193818070346e-11, 4.053636114758653]}, "guid": "5e90b01d-6bc8-4f97-867a-20dc3b390caa"}, {"dtype": "compas.geometry/Line", "data": {"start": [-2.932713492688767, 0.5000000000114212, 4.036533829258688], "end": [-2.9451390302359677, 0.4999999999885788, 4.05363611449079]}, "guid": "9ed5c76d-8a51-461b-83b5-d736598b9973"}, {"dtype": "compas.geometry/Line", "data": {"start": [-3.2266061381414497, 0.49999999998857914, 4.441042353019207], "end": [-3.2390316370757573, 0.5000000000114209, 4.458144585105223]}, "guid": "f8820a5e-e4c3-4547-9c68-e178af4a3fb0"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-3.8849873954668768, -3.042869113681778e-11, 3.8849873954668794], "end": [-3.89318719758515, 3.042869113681778e-11, 3.893187197585153]}, "guid": "c14c7e4b-f549-463f-919e-04649a41e4d6"}, {"dtype": "compas.geometry/Line", "data": {"start": [-3.5281386189373127, 3.0429018358943705e-11, 3.5281386189373123], "end": [-3.5429291929281663, -3.0429018358943705e-11, 3.542929192928166]}, "guid": "ce1d8f73-5560-4bd6-917c-6352515e1663"}, {"dtype": "compas.geometry/Line", "data": {"start": [-3.5281386194232027, 0.500000000030429, 3.5281386194232023], "end": [-3.5429291924422763, 0.499999999969571, 3.542929192442276]}, "guid": "1a23bdde-465b-4da0-a35d-07df1d1a3cb4"}, {"dtype": "compas.geometry/Line", "data": {"start": [-3.8849873954970757, 0.4999999999695713, 3.884987395497078], "end": [-3.8931871975549512, 0.5000000000304287, 3.8931871975549543]}, "guid": "1f71a7bb-6e49-4640-944c-8cc73d045434"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-4.449593468999952, 4.931157529934138e-19, 3.232818887563371], "end": [-4.449593469124476, -4.931157529934138e-19, 3.2328188876538437]}, "guid": "8fc807cb-09be-4927-89be-66685e33ca2a"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.040800794131392, 3.2584169329250887e-16, 2.935813624134291], "end": [-4.049369149618086, -3.2584169329250887e-16, 2.9420388987904436]}, "guid": "cfbe5cf4-f346-41f4-9b49-75ed3ef330fc"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.040800794919616, 0.5000000000000003, 2.93581362470697], "end": [-4.049369148829862, 0.49999999999999967, 2.9420388982177643]}, "guid": "73aef07d-6db4-4d49-a470-d6ea4e7363d2"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.449593468999957, 0.5, 3.2328188875633757], "end": [-4.449593469124471, 0.5, 3.2328188876538393]}, "guid": "90fb5445-b72d-4224-a965-ac6f2bde929d"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-4.906012090240729, -8.617504974216951e-11, 2.4997380155050113], "end": [-4.895059675831327, 8.617504974216951e-11, 2.494157481630012]}, "guid": "842d0e36-f596-4ca2-ae47-bcf51ae3f528"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.4605088544229226, 8.617537607668237e-11, 2.27274277902372], "end": [-4.44955638746076, -8.617537607668237e-11, 2.2671622183717504]}, "guid": "a665848a-e771-4682-8ff7-c0319613999d"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.460508854747404, 0.5000000000861754, 2.272742779189051], "end": [-4.449556387136278, 0.4999999999138246, 2.267162218206419]}, "guid": "eaef3346-1151-4cbc-918a-3d4a838efb5e"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.906012090565211, 0.49999999991382493, 2.4997380156703435], "end": [-4.895059675506845, 0.5000000000861751, 2.4941574814646796]}, "guid": "3a7ecaab-2428-4e37-8a3d-5d08f514dc08"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-5.248277870216154, 1.5838796943552429e-10, 1.705268851336519], "end": [-5.213343809030547, -1.5838796943552429e-10, 1.6939180867879096]}, "guid": "a6c22a13-39a3-4c85-935b-10204ce72c57"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.7727496427449605, -1.5838764463460016e-10, 1.5507603641164043], "end": [-4.737815520206581, 1.5838764463460016e-10, 1.5394095796330711]}, "guid": "00df6c3f-a2a9-4288-a9fd-75b73efe93f6"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.772749643590887, 0.49999999984161236, 1.5507603643912626], "end": [-4.737815519360654, 0.5000000001583876, 1.5394095793582128]}, "guid": "881fb4bd-57cc-457f-9e50-ae7a17763771"}, {"dtype": "compas.geometry/Line", "data": {"start": [-5.248277871062082, 0.500000000158388, 1.7052688516113776], "end": [-5.213343808184619, 0.49999999984161203, 1.693918086513051]}, "guid": "94e5af2e-d8bc-47aa-a6ed-daf9b9265c2a"}], [{"dtype": "compas.geometry/Line", "data": {"start": [-5.465819857684843, 2.8020301854494736e-10, 0.8657008190741524], "end": [-5.3987518888616846, -2.8020301854494736e-10, 0.8550782963683929]}, "guid": "ba539554-dd76-4a44-9e3b-51c47b3f2ec9"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.97197557746251, -2.802026939430539e-10, 0.7874835691436628], "end": [-4.904907828488874, 2.802026939430539e-10, 0.7768610812586467]}, "guid": "85d87c86-5937-4f23-9f51-03b3b2be5b25"}, {"dtype": "compas.geometry/Line", "data": {"start": [-4.971975578603441, 0.4999999997197973, 0.7874835693243685], "end": [-4.904907827347943, 0.5000000002802027, 0.776861081077941]}, "guid": "c7564b2c-be14-480b-8530-fb0e53b49894"}, {"dtype": "compas.geometry/Line", "data": {"start": [-5.465819858825768, 0.500000000280203, 0.8657008192548573], "end": [-5.39875188772076, 0.499999999719797, 0.855078296187688]}, "guid": "0ac43f22-b2e0-404d-a034-fe72fb359175"}]]} \ No newline at end of file diff --git a/data/wall.obj b/data/wall.obj new file mode 100644 index 0000000..5b3f783 --- /dev/null +++ b/data/wall.obj @@ -0,0 +1,576 @@ +# OBJ +# COMPAS +# version: 2.13.0 +# precision: 3 +# V F E: 304 228 456 + +o Mesh_0 +v 0.000 -0.250 0.000 +v 0.000 0.250 0.000 +v 1.000 0.250 0.000 +v 1.000 -0.250 0.000 +v 0.000 -0.250 0.250 +v 1.000 -0.250 0.250 +v 1.000 0.250 0.250 +v 0.000 0.250 0.250 +f 1 2 3 4 +f 1 4 6 5 +f 4 3 7 6 +f 3 2 8 7 +f 2 1 5 8 +f 5 6 7 8 +o Mesh_1 +v 1.025 -0.250 0.000 +v 1.025 0.250 0.000 +v 2.025 0.250 0.000 +v 2.025 -0.250 0.000 +v 1.025 -0.250 0.250 +v 2.025 -0.250 0.250 +v 2.025 0.250 0.250 +v 1.025 0.250 0.250 +f 9 10 11 12 +f 9 12 14 13 +f 12 11 15 14 +f 11 10 16 15 +f 10 9 13 16 +f 13 14 15 16 +o Mesh_2 +v 2.050 -0.250 0.000 +v 2.050 0.250 0.000 +v 3.050 0.250 0.000 +v 3.050 -0.250 0.000 +v 2.050 -0.250 0.250 +v 3.050 -0.250 0.250 +v 3.050 0.250 0.250 +v 2.050 0.250 0.250 +f 17 18 19 20 +f 17 20 22 21 +f 20 19 23 22 +f 19 18 24 23 +f 18 17 21 24 +f 21 22 23 24 +o Mesh_3 +v 3.075 -0.250 0.000 +v 3.075 0.250 0.000 +v 4.075 0.250 0.000 +v 4.075 -0.250 0.000 +v 3.075 -0.250 0.250 +v 4.075 -0.250 0.250 +v 4.075 0.250 0.250 +v 3.075 0.250 0.250 +f 25 26 27 28 +f 25 28 30 29 +f 28 27 31 30 +f 27 26 32 31 +f 26 25 29 32 +f 29 30 31 32 +o Mesh_4 +v 4.100 -0.250 0.000 +v 4.100 0.250 0.000 +v 5.100 0.250 0.000 +v 5.100 -0.250 0.000 +v 4.100 -0.250 0.250 +v 5.100 -0.250 0.250 +v 5.100 0.250 0.250 +v 4.100 0.250 0.250 +f 33 34 35 36 +f 33 36 38 37 +f 36 35 39 38 +f 35 34 40 39 +f 34 33 37 40 +f 37 38 39 40 +o Mesh_5 +v 0.000 -0.250 0.250 +v 0.000 0.250 0.250 +v 0.487 0.250 0.250 +v 0.487 -0.250 0.250 +v 0.000 -0.250 0.500 +v 0.487 -0.250 0.500 +v 0.487 0.250 0.500 +v 0.000 0.250 0.500 +f 41 42 43 44 +f 41 44 46 45 +f 44 43 47 46 +f 43 42 48 47 +f 42 41 45 48 +f 45 46 47 48 +o Mesh_6 +v 0.512 -0.250 0.250 +v 0.512 0.250 0.250 +v 1.512 0.250 0.250 +v 1.512 -0.250 0.250 +v 0.512 -0.250 0.500 +v 1.512 -0.250 0.500 +v 1.512 0.250 0.500 +v 0.512 0.250 0.500 +f 49 50 51 52 +f 49 52 54 53 +f 52 51 55 54 +f 51 50 56 55 +f 50 49 53 56 +f 53 54 55 56 +o Mesh_7 +v 1.537 -0.250 0.250 +v 1.537 0.250 0.250 +v 2.537 0.250 0.250 +v 2.537 -0.250 0.250 +v 1.537 -0.250 0.500 +v 2.537 -0.250 0.500 +v 2.537 0.250 0.500 +v 1.537 0.250 0.500 +f 57 58 59 60 +f 57 60 62 61 +f 60 59 63 62 +f 59 58 64 63 +f 58 57 61 64 +f 61 62 63 64 +o Mesh_8 +v 2.562 -0.250 0.250 +v 2.562 0.250 0.250 +v 3.562 0.250 0.250 +v 3.562 -0.250 0.250 +v 2.562 -0.250 0.500 +v 3.562 -0.250 0.500 +v 3.562 0.250 0.500 +v 2.562 0.250 0.500 +f 65 66 67 68 +f 65 68 70 69 +f 68 67 71 70 +f 67 66 72 71 +f 66 65 69 72 +f 69 70 71 72 +o Mesh_9 +v 3.587 -0.250 0.250 +v 3.587 0.250 0.250 +v 4.587 0.250 0.250 +v 4.587 -0.250 0.250 +v 3.587 -0.250 0.500 +v 4.587 -0.250 0.500 +v 4.587 0.250 0.500 +v 3.587 0.250 0.500 +f 73 74 75 76 +f 73 76 78 77 +f 76 75 79 78 +f 75 74 80 79 +f 74 73 77 80 +f 77 78 79 80 +o Mesh_10 +v 4.612 -0.250 0.250 +v 4.612 0.250 0.250 +v 5.100 0.250 0.250 +v 5.100 -0.250 0.250 +v 4.612 -0.250 0.500 +v 5.100 -0.250 0.500 +v 5.100 0.250 0.500 +v 4.612 0.250 0.500 +f 81 82 83 84 +f 81 84 86 85 +f 84 83 87 86 +f 83 82 88 87 +f 82 81 85 88 +f 85 86 87 88 +o Mesh_11 +v 0.000 -0.250 0.500 +v 0.000 0.250 0.500 +v 1.000 0.250 0.500 +v 1.000 -0.250 0.500 +v 0.000 -0.250 0.750 +v 1.000 -0.250 0.750 +v 1.000 0.250 0.750 +v 0.000 0.250 0.750 +f 89 90 91 92 +f 89 92 94 93 +f 92 91 95 94 +f 91 90 96 95 +f 90 89 93 96 +f 93 94 95 96 +o Mesh_12 +v 1.025 -0.250 0.500 +v 1.025 0.250 0.500 +v 2.025 0.250 0.500 +v 2.025 -0.250 0.500 +v 1.025 -0.250 0.750 +v 2.025 -0.250 0.750 +v 2.025 0.250 0.750 +v 1.025 0.250 0.750 +f 97 98 99 100 +f 97 100 102 101 +f 100 99 103 102 +f 99 98 104 103 +f 98 97 101 104 +f 101 102 103 104 +o Mesh_13 +v 2.050 -0.250 0.500 +v 2.050 0.250 0.500 +v 3.050 0.250 0.500 +v 3.050 -0.250 0.500 +v 2.050 -0.250 0.750 +v 3.050 -0.250 0.750 +v 3.050 0.250 0.750 +v 2.050 0.250 0.750 +f 105 106 107 108 +f 105 108 110 109 +f 108 107 111 110 +f 107 106 112 111 +f 106 105 109 112 +f 109 110 111 112 +o Mesh_14 +v 3.075 -0.250 0.500 +v 3.075 0.250 0.500 +v 4.075 0.250 0.500 +v 4.075 -0.250 0.500 +v 3.075 -0.250 0.750 +v 4.075 -0.250 0.750 +v 4.075 0.250 0.750 +v 3.075 0.250 0.750 +f 113 114 115 116 +f 113 116 118 117 +f 116 115 119 118 +f 115 114 120 119 +f 114 113 117 120 +f 117 118 119 120 +o Mesh_15 +v 4.100 -0.250 0.500 +v 4.100 0.250 0.500 +v 5.100 0.250 0.500 +v 5.100 -0.250 0.500 +v 4.100 -0.250 0.750 +v 5.100 -0.250 0.750 +v 5.100 0.250 0.750 +v 4.100 0.250 0.750 +f 121 122 123 124 +f 121 124 126 125 +f 124 123 127 126 +f 123 122 128 127 +f 122 121 125 128 +f 125 126 127 128 +o Mesh_16 +v 0.000 -0.250 0.750 +v 0.000 0.250 0.750 +v 0.487 0.250 0.750 +v 0.487 -0.250 0.750 +v 0.000 -0.250 1.000 +v 0.487 -0.250 1.000 +v 0.487 0.250 1.000 +v 0.000 0.250 1.000 +f 129 130 131 132 +f 129 132 134 133 +f 132 131 135 134 +f 131 130 136 135 +f 130 129 133 136 +f 133 134 135 136 +o Mesh_17 +v 0.512 -0.250 0.750 +v 0.512 0.250 0.750 +v 1.512 0.250 0.750 +v 1.512 -0.250 0.750 +v 0.512 -0.250 1.000 +v 1.512 -0.250 1.000 +v 1.512 0.250 1.000 +v 0.512 0.250 1.000 +f 137 138 139 140 +f 137 140 142 141 +f 140 139 143 142 +f 139 138 144 143 +f 138 137 141 144 +f 141 142 143 144 +o Mesh_18 +v 1.537 -0.250 0.750 +v 1.537 0.250 0.750 +v 2.537 0.250 0.750 +v 2.537 -0.250 0.750 +v 1.537 -0.250 1.000 +v 2.537 -0.250 1.000 +v 2.537 0.250 1.000 +v 1.537 0.250 1.000 +f 145 146 147 148 +f 145 148 150 149 +f 148 147 151 150 +f 147 146 152 151 +f 146 145 149 152 +f 149 150 151 152 +o Mesh_19 +v 2.562 -0.250 0.750 +v 2.562 0.250 0.750 +v 3.562 0.250 0.750 +v 3.562 -0.250 0.750 +v 2.562 -0.250 1.000 +v 3.562 -0.250 1.000 +v 3.562 0.250 1.000 +v 2.562 0.250 1.000 +f 153 154 155 156 +f 153 156 158 157 +f 156 155 159 158 +f 155 154 160 159 +f 154 153 157 160 +f 157 158 159 160 +o Mesh_20 +v 3.587 -0.250 0.750 +v 3.587 0.250 0.750 +v 4.587 0.250 0.750 +v 4.587 -0.250 0.750 +v 3.587 -0.250 1.000 +v 4.587 -0.250 1.000 +v 4.587 0.250 1.000 +v 3.587 0.250 1.000 +f 161 162 163 164 +f 161 164 166 165 +f 164 163 167 166 +f 163 162 168 167 +f 162 161 165 168 +f 165 166 167 168 +o Mesh_21 +v 4.612 -0.250 0.750 +v 4.612 0.250 0.750 +v 5.100 0.250 0.750 +v 5.100 -0.250 0.750 +v 4.612 -0.250 1.000 +v 5.100 -0.250 1.000 +v 5.100 0.250 1.000 +v 4.612 0.250 1.000 +f 169 170 171 172 +f 169 172 174 173 +f 172 171 175 174 +f 171 170 176 175 +f 170 169 173 176 +f 173 174 175 176 +o Mesh_22 +v 0.000 -0.250 1.000 +v 0.000 0.250 1.000 +v 1.000 0.250 1.000 +v 1.000 -0.250 1.000 +v 0.000 -0.250 1.250 +v 1.000 -0.250 1.250 +v 1.000 0.250 1.250 +v 0.000 0.250 1.250 +f 177 178 179 180 +f 177 180 182 181 +f 180 179 183 182 +f 179 178 184 183 +f 178 177 181 184 +f 181 182 183 184 +o Mesh_23 +v 1.025 -0.250 1.000 +v 1.025 0.250 1.000 +v 2.025 0.250 1.000 +v 2.025 -0.250 1.000 +v 1.025 -0.250 1.250 +v 2.025 -0.250 1.250 +v 2.025 0.250 1.250 +v 1.025 0.250 1.250 +f 185 186 187 188 +f 185 188 190 189 +f 188 187 191 190 +f 187 186 192 191 +f 186 185 189 192 +f 189 190 191 192 +o Mesh_24 +v 2.050 -0.250 1.000 +v 2.050 0.250 1.000 +v 3.050 0.250 1.000 +v 3.050 -0.250 1.000 +v 2.050 -0.250 1.250 +v 3.050 -0.250 1.250 +v 3.050 0.250 1.250 +v 2.050 0.250 1.250 +f 193 194 195 196 +f 193 196 198 197 +f 196 195 199 198 +f 195 194 200 199 +f 194 193 197 200 +f 197 198 199 200 +o Mesh_25 +v 3.075 -0.250 1.000 +v 3.075 0.250 1.000 +v 4.075 0.250 1.000 +v 4.075 -0.250 1.000 +v 3.075 -0.250 1.250 +v 4.075 -0.250 1.250 +v 4.075 0.250 1.250 +v 3.075 0.250 1.250 +f 201 202 203 204 +f 201 204 206 205 +f 204 203 207 206 +f 203 202 208 207 +f 202 201 205 208 +f 205 206 207 208 +o Mesh_26 +v 4.100 -0.250 1.000 +v 4.100 0.250 1.000 +v 5.100 0.250 1.000 +v 5.100 -0.250 1.000 +v 4.100 -0.250 1.250 +v 5.100 -0.250 1.250 +v 5.100 0.250 1.250 +v 4.100 0.250 1.250 +f 209 210 211 212 +f 209 212 214 213 +f 212 211 215 214 +f 211 210 216 215 +f 210 209 213 216 +f 213 214 215 216 +o Mesh_27 +v 0.000 -0.250 1.250 +v 0.000 0.250 1.250 +v 0.487 0.250 1.250 +v 0.487 -0.250 1.250 +v 0.000 -0.250 1.500 +v 0.487 -0.250 1.500 +v 0.487 0.250 1.500 +v 0.000 0.250 1.500 +f 217 218 219 220 +f 217 220 222 221 +f 220 219 223 222 +f 219 218 224 223 +f 218 217 221 224 +f 221 222 223 224 +o Mesh_28 +v 0.512 -0.250 1.250 +v 0.512 0.250 1.250 +v 1.512 0.250 1.250 +v 1.512 -0.250 1.250 +v 0.512 -0.250 1.500 +v 1.512 -0.250 1.500 +v 1.512 0.250 1.500 +v 0.512 0.250 1.500 +f 225 226 227 228 +f 225 228 230 229 +f 228 227 231 230 +f 227 226 232 231 +f 226 225 229 232 +f 229 230 231 232 +o Mesh_29 +v 1.537 -0.250 1.250 +v 1.537 0.250 1.250 +v 2.537 0.250 1.250 +v 2.537 -0.250 1.250 +v 1.537 -0.250 1.500 +v 2.537 -0.250 1.500 +v 2.537 0.250 1.500 +v 1.537 0.250 1.500 +f 233 234 235 236 +f 233 236 238 237 +f 236 235 239 238 +f 235 234 240 239 +f 234 233 237 240 +f 237 238 239 240 +o Mesh_30 +v 2.562 -0.250 1.250 +v 2.562 0.250 1.250 +v 3.562 0.250 1.250 +v 3.562 -0.250 1.250 +v 2.562 -0.250 1.500 +v 3.562 -0.250 1.500 +v 3.562 0.250 1.500 +v 2.562 0.250 1.500 +f 241 242 243 244 +f 241 244 246 245 +f 244 243 247 246 +f 243 242 248 247 +f 242 241 245 248 +f 245 246 247 248 +o Mesh_31 +v 3.587 -0.250 1.250 +v 3.587 0.250 1.250 +v 4.587 0.250 1.250 +v 4.587 -0.250 1.250 +v 3.587 -0.250 1.500 +v 4.587 -0.250 1.500 +v 4.587 0.250 1.500 +v 3.587 0.250 1.500 +f 249 250 251 252 +f 249 252 254 253 +f 252 251 255 254 +f 251 250 256 255 +f 250 249 253 256 +f 253 254 255 256 +o Mesh_32 +v 4.612 -0.250 1.250 +v 4.612 0.250 1.250 +v 5.100 0.250 1.250 +v 5.100 -0.250 1.250 +v 4.612 -0.250 1.500 +v 5.100 -0.250 1.500 +v 5.100 0.250 1.500 +v 4.612 0.250 1.500 +f 257 258 259 260 +f 257 260 262 261 +f 260 259 263 262 +f 259 258 264 263 +f 258 257 261 264 +f 261 262 263 264 +o Mesh_33 +v 0.000 -0.250 1.500 +v 0.000 0.250 1.500 +v 1.000 0.250 1.500 +v 1.000 -0.250 1.500 +v 0.000 -0.250 1.750 +v 1.000 -0.250 1.750 +v 1.000 0.250 1.750 +v 0.000 0.250 1.750 +f 265 266 267 268 +f 265 268 270 269 +f 268 267 271 270 +f 267 266 272 271 +f 266 265 269 272 +f 269 270 271 272 +o Mesh_34 +v 1.025 -0.250 1.500 +v 1.025 0.250 1.500 +v 2.025 0.250 1.500 +v 2.025 -0.250 1.500 +v 1.025 -0.250 1.750 +v 2.025 -0.250 1.750 +v 2.025 0.250 1.750 +v 1.025 0.250 1.750 +f 273 274 275 276 +f 273 276 278 277 +f 276 275 279 278 +f 275 274 280 279 +f 274 273 277 280 +f 277 278 279 280 +o Mesh_35 +v 2.050 -0.250 1.500 +v 2.050 0.250 1.500 +v 3.050 0.250 1.500 +v 3.050 -0.250 1.500 +v 2.050 -0.250 1.750 +v 3.050 -0.250 1.750 +v 3.050 0.250 1.750 +v 2.050 0.250 1.750 +f 281 282 283 284 +f 281 284 286 285 +f 284 283 287 286 +f 283 282 288 287 +f 282 281 285 288 +f 285 286 287 288 +o Mesh_36 +v 3.075 -0.250 1.500 +v 3.075 0.250 1.500 +v 4.075 0.250 1.500 +v 4.075 -0.250 1.500 +v 3.075 -0.250 1.750 +v 4.075 -0.250 1.750 +v 4.075 0.250 1.750 +v 3.075 0.250 1.750 +f 289 290 291 292 +f 289 292 294 293 +f 292 291 295 294 +f 291 290 296 295 +f 290 289 293 296 +f 293 294 295 296 +o Mesh_37 +v 4.100 -0.250 1.500 +v 4.100 0.250 1.500 +v 5.100 0.250 1.500 +v 5.100 -0.250 1.500 +v 4.100 -0.250 1.750 +v 5.100 -0.250 1.750 +v 5.100 0.250 1.750 +v 4.100 0.250 1.750 +f 297 298 299 300 +f 297 300 302 301 +f 300 299 303 302 +f 299 298 304 303 +f 298 297 301 304 +f 301 302 303 304 diff --git a/docs/_images/dem_arch.png b/docs/_images/dem_arch.png new file mode 100644 index 0000000..e8e2f52 Binary files /dev/null and b/docs/_images/dem_arch.png differ diff --git a/docs/_images/dem_armadillo.png b/docs/_images/dem_armadillo.png new file mode 100644 index 0000000..ad5c970 Binary files /dev/null and b/docs/_images/dem_armadillo.png differ diff --git a/docs/_images/dem_datastructure_overview_centroids.png b/docs/_images/dem_datastructure_overview_centroids.png new file mode 100644 index 0000000..325edbd Binary files /dev/null and b/docs/_images/dem_datastructure_overview_centroids.png differ diff --git a/docs/_images/dem_datastructure_overview_contacts.png b/docs/_images/dem_datastructure_overview_contacts.png new file mode 100644 index 0000000..e6811b3 Binary files /dev/null and b/docs/_images/dem_datastructure_overview_contacts.png differ diff --git a/docs/_images/dem_datastructure_overview_data.png b/docs/_images/dem_datastructure_overview_data.png new file mode 100644 index 0000000..ece8a75 Binary files /dev/null and b/docs/_images/dem_datastructure_overview_data.png differ diff --git a/docs/_images/dem_datastructure_overview_graph.png b/docs/_images/dem_datastructure_overview_graph.png new file mode 100644 index 0000000..f6d6688 Binary files /dev/null and b/docs/_images/dem_datastructure_overview_graph.png differ diff --git a/docs/_images/dem_datastructure_overview_interaction.png b/docs/_images/dem_datastructure_overview_interaction.png new file mode 100644 index 0000000..e5daf3a Binary files /dev/null and b/docs/_images/dem_datastructure_overview_interaction.png differ diff --git a/docs/_images/dem_datastructure_overview_supports.png b/docs/_images/dem_datastructure_overview_supports.png new file mode 100644 index 0000000..4b669ef Binary files /dev/null and b/docs/_images/dem_datastructure_overview_supports.png differ diff --git a/docs/_images/dem_datastructure_overview_transformation.png b/docs/_images/dem_datastructure_overview_transformation.png new file mode 100644 index 0000000..fd21c95 Binary files /dev/null and b/docs/_images/dem_datastructure_overview_transformation.png differ diff --git a/docs/_images/dem_datastructure_overview_vertices.png b/docs/_images/dem_datastructure_overview_vertices.png new file mode 100644 index 0000000..766607c Binary files /dev/null and b/docs/_images/dem_datastructure_overview_vertices.png differ diff --git a/docs/_images/dem_datastructure_results.png b/docs/_images/dem_datastructure_results.png new file mode 100644 index 0000000..93d80ec Binary files /dev/null and b/docs/_images/dem_datastructure_results.png differ diff --git a/docs/_images/dem_dome.png b/docs/_images/dem_dome.png new file mode 100644 index 0000000..b36f4ec Binary files /dev/null and b/docs/_images/dem_dome.png differ diff --git a/docs/_images/dem_vault_barrel.png b/docs/_images/dem_vault_barrel.png new file mode 100644 index 0000000..e28c17c Binary files /dev/null and b/docs/_images/dem_vault_barrel.png differ diff --git a/docs/_images/dem_vault_cross.png b/docs/_images/dem_vault_cross.png new file mode 100644 index 0000000..21ef927 Binary files /dev/null and b/docs/_images/dem_vault_cross.png differ diff --git a/docs/_images/dem_wall.png b/docs/_images/dem_wall.png new file mode 100644 index 0000000..46ba7ac Binary files /dev/null and b/docs/_images/dem_wall.png differ diff --git a/docs/examples/dem_arch.py b/docs/examples/dem_arch.py new file mode 100644 index 0000000..34ba52c --- /dev/null +++ b/docs/examples/dem_arch.py @@ -0,0 +1,37 @@ +from compas_dem.models import BlockModel +from compas_dem.templates import ArchTemplate +from compas_dem.viewer import DEMViewer + +# ============================================================================= +# Template +# ============================================================================= + +template = ArchTemplate(rise=3, span=10, thickness=0.5, depth=0.5, n=50) + +# ============================================================================= +# Model +# ============================================================================= + +model = BlockModel.from_template(template) + +# ============================================================================= +# Interactions +# ============================================================================= + +model.compute_contacts(tolerance=0.001) + +# ============================================================================= +# Supports +# ============================================================================= + +for node in model.graph.nodes_where(degree=1): + model.graph.node_element(node).is_support = True # type: ignore + +# ============================================================================= +# Viz +# ============================================================================= + +viewer = DEMViewer(model) + +viewer.setup() +viewer.show() diff --git a/docs/examples/dem_arch.rst b/docs/examples/dem_arch.rst new file mode 100644 index 0000000..fa52197 --- /dev/null +++ b/docs/examples/dem_arch.rst @@ -0,0 +1,13 @@ +******************************************************************************** +DEM of an Arch +******************************************************************************** + +.. figure:: /_images/dem_arch.png + +.. rst-class:: lead + +In this example, we make a model from a simple arch of blocks. +We then compute the contacts between the blocks, and the contact forces required for equilibrium. + +.. literalinclude:: dem_arch.py + :language: python diff --git a/docs/examples/dem_armadillo.py b/docs/examples/dem_armadillo.py new file mode 100644 index 0000000..5ff18c5 --- /dev/null +++ b/docs/examples/dem_armadillo.py @@ -0,0 +1,63 @@ +import pathlib + +from compas.datastructures import Mesh +from compas.files import OBJ + +from compas_dem.models import BlockModel +from compas_dem.elements import Block +from compas_dem.viewer import DEMViewer + +# ============================================================================= +# Data +# ============================================================================= + +FILE = pathlib.Path(__file__).parent.parent.parent / "data" / "armadillo.obj" + +obj = OBJ(FILE) +obj.read() + +meshes = [] +for name in obj.objects: # type: ignore + vertices, faces = obj.objects[name] # type: ignore + mesh: Mesh = Mesh.from_vertices_and_faces(vertices, faces) + mesh.scale(1, 1, 1) + mesh.translate([-10, -10, 0]) + mesh.name = name + meshes.append(mesh) + +# ============================================================================= +# Model and interactions +# ============================================================================= + +model = BlockModel() +for mesh in meshes: + element = Block.from_mesh(mesh) + model.add_element(element) + +model.compute_contacts(tolerance=0.1) + +# ============================================================================= +# Supports +# ============================================================================= + +for element in model.elements(): + centroid = element.modelgeometry.centroid() + + for v in element.modelgeometry.vertices(): + p = element.modelgeometry.vertex_attribute(v, "z") + if p < 0.5: + element.is_support = True + break + +# Get Supports and Blocks Elements +blocks = list(model.blocks()) +supports = list(model.supports()) + +# ============================================================================= +# Viz +# ============================================================================= + +viewer = DEMViewer(model) + +viewer.setup() +viewer.show() diff --git a/docs/examples/dem_armadillo.rst b/docs/examples/dem_armadillo.rst new file mode 100644 index 0000000..4374916 --- /dev/null +++ b/docs/examples/dem_armadillo.rst @@ -0,0 +1,12 @@ +******************************************************************************** +DEM of an Armadillo Vault +******************************************************************************** + +.. figure:: /_images/dem_armadillo.png + +.. rst-class:: lead + +In this example, we make a model from the Armadillo Vault. + +.. literalinclude:: dem_armadillo.py + :language: python diff --git a/docs/examples/dem_dome.py b/docs/examples/dem_dome.py new file mode 100644 index 0000000..5719659 --- /dev/null +++ b/docs/examples/dem_dome.py @@ -0,0 +1,68 @@ +from compas.datastructures import Mesh +from compas.geometry import SphericalSurface + +from compas_dem.elements import Block +from compas_dem.models import BlockModel +from compas_dem.viewer import DEMViewer + +# ============================================================================= +# Geometry +# ============================================================================= + +surface = SphericalSurface(radius=5) +patch = surface.to_polyhedron(nu=32, nv=12, du=[0, 1.0], dv=[0.1, 0.5]) + +blocks = [] +for polygon in patch.polygons: + bottom = polygon.points + top = [] + for point in bottom: + vector = point - surface.frame.point + direction = vector.unitized() + top.append(point + direction * 0.3) + vertices = bottom + top + faces = [[0, 3, 2, 1], [4, 5, 6, 7], [2, 3, 7, 6], [1, 2, 6, 5], [0, 1, 5, 4], [3, 0, 4, 7]] + blocks.append(Mesh.from_vertices_and_faces(vertices, faces)) + +columns = [blocks[i : i + 12] for i in range(0, len(blocks), 12)] +rows = list(zip(*columns)) + +bricks = [] +for i in range(len(rows)): + for j in range(0, len(rows[0]), 2): + if i % 2 == 0: + a: Mesh = rows[i][j] + b: Mesh = rows[i][j + 1] + else: + a: Mesh = rows[i][j - 1] + b: Mesh = rows[i][j] + brick: Mesh = a.copy() + brick.join(b, True) + brick.attributes["is_support"] = i == len(rows) - 1 + bricks.append(brick) + +# ============================================================================= +# Model and interactions +# ============================================================================= + +model = BlockModel() + +for brick in bricks: + element = Block.from_mesh(brick) + element.is_support = brick.attributes["is_support"] + model.add_element(element) + +model.compute_contacts(tolerance=0.001) + +# ============================================================================= +# Export +# ============================================================================= + +# ============================================================================= +# Viz +# ============================================================================= + +viewer = DEMViewer(model) + +viewer.setup() +viewer.show() diff --git a/docs/examples/dem_dome.rst b/docs/examples/dem_dome.rst new file mode 100644 index 0000000..4c79cdb --- /dev/null +++ b/docs/examples/dem_dome.rst @@ -0,0 +1,13 @@ +******************************************************************************** +DEM of a Dome +******************************************************************************** + +.. figure:: /_images/dem_dome.png + +.. rst-class:: lead + +In this example, we make a model from a simple dome of blocks. +We then compute the contacts between the blocks, and the contact forces required for equilibrium. + +.. literalinclude:: dem_dome.py + :language: python diff --git a/docs/examples/dem_vault_barrel.py b/docs/examples/dem_vault_barrel.py new file mode 100644 index 0000000..f9450e1 --- /dev/null +++ b/docs/examples/dem_vault_barrel.py @@ -0,0 +1,26 @@ +from compas_dem.models import BlockModel +from compas_dem.templates import BarrelVaultTemplate +from compas_dem.viewer import DEMViewer + +# ============================================================================= +# Template +# ============================================================================= + +template = BarrelVaultTemplate() + +# ============================================================================= +# Model and interactions +# ============================================================================= + +model = BlockModel.from_barrelvault(template) + +model.compute_contacts(tolerance=0.001) + +# ============================================================================= +# Viz +# ============================================================================= + +viewer = DEMViewer(model) + +viewer.setup() +viewer.show() diff --git a/docs/examples/dem_vault_barrel.rst b/docs/examples/dem_vault_barrel.rst new file mode 100644 index 0000000..f420c2b --- /dev/null +++ b/docs/examples/dem_vault_barrel.rst @@ -0,0 +1,13 @@ +******************************************************************************** +DEM of a Barrel Vault +******************************************************************************** + +.. figure:: /_images/dem_vault_barrel.png + +.. rst-class:: lead + +In this example, we make a model from a simple barrel vault of blocks. +We then compute the contacts between the blocks, and the contact forces required for equilibrium. + +.. literalinclude:: dem_vault_barrel.py + :language: python diff --git a/docs/examples/dem_vault_cross.py b/docs/examples/dem_vault_cross.py new file mode 100644 index 0000000..75857fe --- /dev/null +++ b/docs/examples/dem_vault_cross.py @@ -0,0 +1,53 @@ +import pathlib + +from compas.datastructures import Mesh +from compas.files import OBJ + +from compas_dem.models import BlockModel +from compas_dem.elements import Block +from compas_dem.viewer import DEMViewer + +# ============================================================================= +# Data +# ============================================================================= + +FILE = pathlib.Path(__file__).parent.parent.parent / "data" / "crossvault.obj" + +obj = OBJ(FILE) +obj.read() + +meshes = [] +for name in obj.objects: # type: ignore + vertices, faces = obj.objects[name] # type: ignore + mesh: Mesh = Mesh.from_vertices_and_faces(vertices, faces) + mesh.scale(0.025, 0.025, 0.025) + mesh.name = name + meshes.append(mesh) + +# ============================================================================= +# Model and interactions +# ============================================================================= + +model = BlockModel() +for mesh in meshes: + element = Block.from_mesh(mesh) + model.add_element(element) + +model.compute_contacts(tolerance=0.001) + +# ============================================================================= +# Supports +# ============================================================================= + +for element in model.elements(): + if model.graph.degree(element.graphnode) == 1: + element.is_support = True + +# ============================================================================= +# Viz +# ============================================================================= + +viewer = DEMViewer(model) + +viewer.setup() +viewer.show() diff --git a/docs/examples/dem_vault_cross.rst b/docs/examples/dem_vault_cross.rst new file mode 100644 index 0000000..851dcf8 --- /dev/null +++ b/docs/examples/dem_vault_cross.rst @@ -0,0 +1,13 @@ +******************************************************************************** +DEM of a Cross Vault +******************************************************************************** + +.. figure:: /_images/dem_vault_cross.png + +.. rst-class:: lead + +In this example, we make a model from a simple cross vault of blocks. +We then compute the contacts between the blocks, and the contact forces required for equilibrium. + +.. literalinclude:: dem_vault_cross.py + :language: python diff --git a/docs/examples/dem_wall.py b/docs/examples/dem_wall.py new file mode 100644 index 0000000..0eeacd7 --- /dev/null +++ b/docs/examples/dem_wall.py @@ -0,0 +1,66 @@ +import pathlib + +from compas.datastructures import Mesh +from compas.files import OBJ + +from compas_dem.models import BlockModel +from compas_dem.elements import Block +from compas_dem.viewer import DEMViewer +import compas + +# ============================================================================= +# Data +# ============================================================================= + +FILE = pathlib.Path(__file__).parent.parent.parent / "data" / "wall.obj" + +obj = OBJ(FILE) +obj.read() + +meshes = [] +for name in obj.objects: # type: ignore + vertices, faces = obj.objects[name] # type: ignore + mesh: Mesh = Mesh.from_vertices_and_faces(vertices, faces) + mesh.scale(2, 2, 2) + mesh.name = name + meshes.append(mesh) + +# ============================================================================= +# Model and interactions +# ============================================================================= + +model = BlockModel() +for mesh in meshes: + element = Block.from_mesh(mesh) + model.add_element(element) + +model.compute_contacts(tolerance=0.001) + +# ============================================================================= +# Supports +# ============================================================================= + +for element in model.elements(): + centroid = element.modelgeometry.centroid() + if centroid[2] < 0.5: + element.is_support = True + +# Get Supports and Blocks Elements +blocks = list(model.blocks()) +supports = list(model.supports()) + + +# ============================================================================= +# Save model to json +# ============================================================================= + +model.to_json(pathlib.Path(__file__).parent.parent.parent / "data" / "dem_crossvault.json") + +# ============================================================================= +# Viz +# ============================================================================= + +viewer = DEMViewer(model) + +viewer.setup() +viewer.show() diff --git a/docs/examples/dem_wall.rst b/docs/examples/dem_wall.rst new file mode 100644 index 0000000..6d4dd75 --- /dev/null +++ b/docs/examples/dem_wall.rst @@ -0,0 +1,13 @@ +******************************************************************************** +DEM of a Wall +******************************************************************************** + +.. figure:: /_images/dem_wall.png + +.. rst-class:: lead + +In this example, we make a model from a simple wall of blocks. +We then compute the contacts between the blocks, and the contact forces required for equilibrium. + +.. literalinclude:: dem_wall.py + :language: python diff --git a/docs/tutorial.rst b/docs/tutorial.rst index 34e1184..4f7d9ff 100644 --- a/docs/tutorial.rst +++ b/docs/tutorial.rst @@ -1,3 +1,10 @@ ******************************************************************************** Tutorial ******************************************************************************** + +.. toctree:: + :maxdepth: 1 + :titlesonly: + :glob: + + tutorial/* diff --git a/docs/tutorial/dem_datastructure_overview.py b/docs/tutorial/dem_datastructure_overview.py new file mode 100644 index 0000000..d4b73ad --- /dev/null +++ b/docs/tutorial/dem_datastructure_overview.py @@ -0,0 +1,63 @@ +from compas.geometry import Transformation +from compas_dem.elements import Block +from compas_dem.models import BlockModel +from compas_dem.templates import ArchTemplate +from compas_dem.viewer import DEMViewer + +# Data +template = ArchTemplate(rise=3, span=10, thickness=0.5, depth=0.5, n=50) + +# Model +model = BlockModel() +for mesh in template.blocks(): + element = Block.from_mesh(mesh) + model.add_element(element) + +elements = list(model.elements()) + +# Supports +for element in model.elements(): + centroid = element.modelgeometry.centroid() + if centroid[2] < 0.3: + element.is_support = True + +# Transformation +elements[25].transformation = Transformation.from_matrix( + [ + [1, 0, 0, 0.0], + [0, 1, 0, 0.0], + [0, 0, 1, 1.0], + [0, 0, 0, 1], + ] +) + +# Centroids +centroids = [] +for el in elements: + coords = el.modelgeometry.centroid() + centroids.append(coords) + +# Vertices +highlight = 40 +vertices = [] +mesh = elements[highlight].modelgeometry +vertices, faces = mesh.to_vertices_and_faces() + +# Contacts +model.compute_contacts(tolerance=0.001) + +contact_polygons = [] +for contact in model.contacts(): + polygon = contact.polygon + contact_polygons.append(polygon) + + for point in polygon: + print(point) + +# Interaction +edge = model.add_interaction(elements[0], elements[1]) + +# Visualization +viewer = DEMViewer(model) +viewer.setup() +viewer.show() diff --git a/docs/tutorial/dem_datastructure_overview.rst b/docs/tutorial/dem_datastructure_overview.rst new file mode 100644 index 0000000..56c748b --- /dev/null +++ b/docs/tutorial/dem_datastructure_overview.rst @@ -0,0 +1,233 @@ +******************************************************************************** +DEM Data Structure: Overview +******************************************************************************** + +.. rst-class:: lead + +A concise, step-by-step overview that builds a small block model from a template, +computes contacts, inspects element data (centroids, vertices), applies a transformation, +adds an interaction, converts meshes to BREP, and visualizes everything. + + +Contents +-------- + +1. `Data`_: instantiate an :class:`compas_dem.templates.ArchTemplate` to generate simple block meshes. +2. `Model`_: create a :class:`compas_dem.models.BlockModel` and add blocks via :meth:`compas_dem.elements.Block.from_mesh`. +3. `Supports`_: set fixed elements. +4. `Transformation`_: assign a transformation matrix to one element to move it. +5. `Centroids`_: query element geometry centroids for each block. +6. `Vertices`_: iterate element geometry vertices and read vertex coordinates. +7. `Contacts`_: call :meth:`compas_dem.models.BlockModel.compute_contacts` then iterate :meth:`compas_dem.models.BlockModel.contacts`. +8. `Interaction`_: connect two elements via :meth:`compas_dem.models.BlockModel.add_interaction`. +9. `Mesh to Brep`_: convert meshes to Brep geometry using COMPAS functions. +10. `Visualization`_: use :class:`compas_dem.viewer.DEMViewer` to add model groups (supports, blocks, contacts, interactions) and overlay centroids/vertices/BREPs. + + +Imports +^^^^^^^ + +.. literalinclude:: dem_datastructure_overview.py + :language: python + :end-before: # Data + + +Data +^^^^ + +A model is created from a collection of solid Mesh or BRep objects. Most vault and arch topologies are written as templates to automate the geometry generation process. In this tutorial, we use the :class:`compas_dem.templates.ArchTemplate` to generate a vault topology. + +.. literalinclude:: dem_datastructure_overview.py + :language: python + :start-after: # Data + :end-before: # Model + + +.. figure:: ../_images/dem_datastructure_overview_data.png + :align: center + + Arch template. + +.. tip:: + You can also load geometry from an obj file: + +.. code-block:: python + + from compas.files import OBJ + import pathlib + + PATH = pathlib.Path(__file__).parent.parent.parent / "data" / + FILE = "wall.obj" + + obj = OBJ(PATH / FILE) + obj.read() + + meshes = [] + for name in obj.objects: + vertices, faces = obj.objects[name] + mesh: Mesh = Mesh.from_vertices_and_faces(vertices, faces) + mesh.scale(2, 2, 2) + mesh.name = name + meshes.append(mesh) + + +Model +^^^^^ + +Then we create a :class:`compas_dem.models.BlockModel` and add blocks via :meth:`compas_dem.elements.Block.from_mesh`. The :class:`compas_dem.models.BlockModel` class represents a general model of hierarchically organized elements with interactions. It contains additional data structures such as a tree and a graph. At this step, the model and initial geometry are the same. + +.. literalinclude:: dem_datastructure_overview.py + :language: python + :start-after: # Model + :end-before: # Supports + +.. tip:: + Check constructor overloads of :class:`compas_dem.elements.Block` to create blocks from different geometries. + +.. code-block:: python + + Block.from_box() + Block.from_mesh() + Block.from_brep() + +.. tip:: + Check constructor overloads of :class:`compas_dem.models.BlockModel` to create models from various templates. + +.. code-block:: python + + BlockModel.from_arch() + BlockModel.from_barrelvault() + BlockModel.from_crossvault() + BlockModel.from_fanvault() + BlockModel.from_pavilionvault() + BlockModel.from_triangulation_dual() + BlockModel.from_meshpattern() + +Supports +^^^^^^^^ + +Elements are fixed by assigning the boolean atribute of the support. + +.. literalinclude:: dem_datastructure_overview.py + :language: python + :start-after: # Supports + :end-before: # Transformation + +.. figure:: ../_images/dem_datastructure_overview_supports.png + :align: center + + Supports. + + +Transformation +^^^^^^^^^^^^^^ + +When we assign the transformation matrix to an element, we can change its orientation. If a tree hierarchy is used, the transformations will affect the sub-elements. + +.. literalinclude:: dem_datastructure_overview.py + :language: python + :start-after: # Transformation + :end-before: # Centroids + + +.. figure:: ../_images/dem_datastructure_overview_transformation.png + :align: center + + Transformed block. + + +Centroids +^^^^^^^^^ + +We can get the centroids of the blocks: + +.. literalinclude:: dem_datastructure_overview.py + :language: python + :start-after: # Centroids + :end-before: # Vertices + +.. figure:: ../_images/dem_datastructure_overview_centroids.png + :align: center + + Centroids. + + +Vertices +^^^^^^^^ + +We can extract vertices and faces, where vertices are stored as a list of 3 floats and faces are stored as a list of 3 or n integers. + +.. literalinclude:: dem_datastructure_overview.py + :language: python + :start-after: # Vertices + :end-before: # Contacts + +.. figure:: ../_images/dem_datastructure_overview_vertices.png + :align: center + + Vertices. + + +Contacts +^^^^^^^^ + +We can compute contacts between blocks using the :meth:`compas_dem.models.BlockModel.compute_contacts` method. Contacts are stored as a list of contact objects. The detected contacts are highlighted in light blue color and stored as polygons. We can access the contact polygon by iterating :meth:`compas_dem.models.BlockModel.contacts` and accessing the polygon attribute. + +.. literalinclude:: dem_datastructure_overview.py + :language: python + :start-after: # Contacts + :end-before: # Interaction + +.. figure:: ../_images/dem_datastructure_overview_contacts.png + :align: center + + Contacts. + +When contacts are detected, the interaction graph displays the connectivity of the elements by lines drawn from the centroids of blocks. + +.. figure:: ../_images/dem_datastructure_overview_graph.png + :align: center + + Graph edges. + + +Interaction +^^^^^^^^^^^ + +While contacts are specific interactions between blocks, interactions are more general and can be used to connect any two elements. By calling the :meth:`compas_dem.models.BlockModel.add_interaction` function, we add an edge to the model graph. Optionally, we can specify a modifier class to define how the second element is modified by the first element. Most often, we use modifiers to define solid Boolean operations between meshes or breps. + +.. literalinclude:: dem_datastructure_overview.py + :language: python + :start-after: # Interaction + :end-before: # Visualization + +.. figure:: ../_images/dem_datastructure_overview_interaction.png + :align: center + + Interaction. + + +Mesh to Brep +^^^^^^^^^^^^ + +For using BRep outside Rhino, please insteal compas_occ package and import Brep from compas_occ.geometry. We can convert meshes to breps using COMPAS geometry functions. Breps are stored as a list of Brep objects. Or if we start from breps, we convert them to meshes by extracting polygons from brep faces. + +.. code-block:: python + + from compas.geometry import Brep + breps = [] + for el in elements: + brep = Brep.from_mesh(el.modelgeometry) + breps.append(brep) + # polygons = brep.to_polygons() + # mesh = Mesh.from_polygons(polygons) + + +Visualization +^^^^^^^^^^^^^ + +We can visualize the model using the :class:`compas_dem.viewer.DEMViewer` class. The viewer adds model groups (supports, blocks, contacts, interactions) on the left side of the screen. At the top of the screen, there is an additional button called "COMPAS_DEM" with options: "Show Blocks", "Show Contacts", and "Show Interactions". + +.. literalinclude:: dem_datastructure_overview.py + :language: python + :start-after: # Visualization diff --git a/docs/tutorial/dem_datastructure_raw_data_extraction.py b/docs/tutorial/dem_datastructure_raw_data_extraction.py new file mode 100644 index 0000000..dc4c565 --- /dev/null +++ b/docs/tutorial/dem_datastructure_raw_data_extraction.py @@ -0,0 +1,37 @@ +from compas_dem.templates import ArchTemplate +from compas_dem.models import BlockModel +import numpy as np +from typing import List, Tuple + +# Model +template: ArchTemplate = ArchTemplate(rise=3, span=10, thickness=0.5, depth=0.5, n=50) +model: BlockModel = BlockModel.from_template(template) +elements: List = list(model.elements()) +model.compute_contacts(tolerance=0.001) + +# Meshes to Numpy Arrays +numpy_vertices: List[np.ndarray] = [] +numpy_faces: List[np.ndarray] = [] +for element in elements: + V, F = element.modelgeometry.to_vertices_and_faces() + numpy_vertices.append(np.asarray(V, dtype=np.float64)) + numpy_faces.append(np.asarray(F, dtype=np.int32)) + +# Centroids +centroids: List = [] +for element in elements: + centroids.append(element.modelgeometry.centroid()) +numpy_centroids: np.ndarray = np.asarray(centroids, dtype=np.float64) + +# Contact Polygons +numpy_contact_polygons: List[np.ndarray] = [] +for contact in model.contacts(): + numpy_contact_polygons.append(np.asarray(contact.polygon, dtype=np.float64)) + +# Contact Indices +contact_indices: List[Tuple[int, int]] = [] +for edge in model.graph.edges(): + contacts = model.graph.edge_attribute(edge, name="contacts") + if contacts: + contact_indices.append(edge) +numpy_contact_indices: np.ndarray = np.asarray(contact_indices, dtype=np.int32) diff --git a/docs/tutorial/dem_datastructure_raw_data_extraction.rst b/docs/tutorial/dem_datastructure_raw_data_extraction.rst new file mode 100644 index 0000000..e1cd2e4 --- /dev/null +++ b/docs/tutorial/dem_datastructure_raw_data_extraction.rst @@ -0,0 +1,86 @@ +******************************************************************************** +DEM Data Structure: Raw Data Extraction +******************************************************************************** + +.. rst-class:: lead + +A practical guide to extracting raw numerical data from DEM models for external processing, +analysis, or visualization. Learn how to convert geometry, centroids, contacts, and connectivity +information into NumPy arrays for computational workflows. + + +Contents +-------- + +1. `Model Setup`_: create a :class:`compas_dem.models.BlockModel` from :class:`compas_dem.templates.ArchTemplate` and compute contacts. +2. `Mesh Data`_: extract vertices and faces as NumPy arrays from element geometries. +3. `Centroids`_: convert element centroids to a structured NumPy array. +4. `Contact Polygons`_: extract contact geometry as a list of NumPy arrays. +5. `Contact Indices`_: get connectivity information as element index pairs. + + +Imports +^^^^^^^ + +.. literalinclude:: dem_datastructure_raw_data_extraction.py + :language: python + :end-before: # Model + + +Model Setup +^^^^^^^^^^^ + +We start by creating a model from an :class:`compas_dem.templates.ArchTemplate` and computing contacts using :meth:`compas_dem.models.BlockModel.compute_contacts`. This provides the foundation data structure for raw data extraction. + +.. literalinclude:: dem_datastructure_raw_data_extraction.py + :language: python + :start-after: # Model + :end-before: # Meshes to Numpy Arrays + + +Mesh Data +^^^^^^^^^ + +Extract vertices and faces from each element's geometry and convert them to NumPy arrays. Vertices are stored as float64 arrays containing 3D coordinates, while faces are stored as int32 arrays containing vertex indices. + +.. literalinclude:: dem_datastructure_raw_data_extraction.py + :language: python + :start-after: # Meshes to Numpy Arrays + :end-before: # Centroids + +.. note:: + The resulting ``numpy_vertices`` and ``numpy_faces`` are lists of variable-sized arrays, as each element can have a different number of vertices and faces. + +Centroids +^^^^^^^^^ + +Element centroids are extracted and converted to a single NumPy array for efficient processing. Each row represents the 3D centroid coordinates (3 floats per row) of one element. + +.. literalinclude:: dem_datastructure_raw_data_extraction.py + :language: python + :start-after: # Centroids + :end-before: # Contact Polygons + + +Contact Polygons +^^^^^^^^^^^^^^^^ + +Contact polygons represent the geometric interfaces between elements. Each contact is converted to a NumPy array containing the polygon vertices. + +.. literalinclude:: dem_datastructure_raw_data_extraction.py + :language: python + :start-after: # Contact Polygons + :end-before: # Contact Indices + +.. note:: + The ``numpy_contact_polygons`` list contains variable-sized arrays, as contact polygons can have different numbers of vertices. + + +Contact Indices +^^^^^^^^^^^^^^^ + +Extract connectivity information (2 integers per row) as pairs of element indices that are in contact. This provides the graph structure of the assembly. + +.. literalinclude:: dem_datastructure_raw_data_extraction.py + :language: python + :start-after: # Contact Indices \ No newline at end of file diff --git a/docs/tutorial/dem_datastructure_results.py b/docs/tutorial/dem_datastructure_results.py new file mode 100644 index 0000000..4852b00 --- /dev/null +++ b/docs/tutorial/dem_datastructure_results.py @@ -0,0 +1,50 @@ +from compas_dem.templates import ArchTemplate +from compas_dem.models import BlockModel +from compas_viewer import Viewer +from compas.colors import Color +import compas +import pathlib + +# Model +template = ArchTemplate(rise=5, span=10, thickness=0.5, depth=0.5, n=20) +model = BlockModel.from_template(template) +model.compute_contacts(tolerance=0.001) + +# Load results +results = compas.json_load(pathlib.Path(__file__).parent.parent.parent / "data" / "dem_results.json") + +# Store results in contacts +for idx, contact in enumerate(model.contacts()): + contact.forces = { + "resultant_compression_by_interface": results["resultant_compression_by_interface"][idx], + "resultant_tension_by_interface": results["resultant_tension_by_interface"][idx], + "nodal_normal_compression_by_interface": results["nodal_normal_compression_by_interface"][idx], + "nodal_normal_tension_by_interface": results["nodal_normal_tension_by_interface"][idx], + "nodal_tangential_by_interface": results["nodal_tangential_by_interface"][idx], + } + +# Visualization +viewer = Viewer() + +# Add elements +for element in model.elements(): + viewer.scene.add(element.modelgeometry, show_faces=False) + +# Add contacts and forces +force_types = [ + ("resultant_compression_by_interface", 3, Color(0, 0.3, 0)), + ("resultant_tension_by_interface", 8, Color(0.8, 0, 0)), + ("nodal_normal_compression_by_interface", 3, Color.from_hex("#00468b")), + ("nodal_normal_tension_by_interface", 5, Color(1, 0, 0)), + ("nodal_tangential_by_interface", 5, Color(1.0, 0.5, 0.0)), +] + +for contact in model.contacts(): + viewer.scene.add(contact.polygon, facecolor=Color.cyan().lightened(50)) + + for force_type, linewidth, color in force_types: + group = viewer.scene.add_group(force_type) + for line in contact.forces[force_type]: + group.add(line, linewidth=linewidth, linecolor=color) + +viewer.show() diff --git a/docs/tutorial/dem_datastructure_results.rst b/docs/tutorial/dem_datastructure_results.rst new file mode 100644 index 0000000..e4ec554 --- /dev/null +++ b/docs/tutorial/dem_datastructure_results.rst @@ -0,0 +1,68 @@ +******************************************************************************** +DEM Data Structure: Results +******************************************************************************** + +.. rst-class:: lead + +A practical guide to add results from DEM analysis to the data structure for visualization. +Learn how to load analysis results and visualize force vectors on contact interfaces. + + +.. figure:: ../_images/dem_datastructure_results.png + :align: center + + DEM model with analysis results showing force vectors on contact interfaces. + + +Contents +-------- + +1. `Model Setup`_: create a :class:`compas_dem.models.BlockModel` and compute contacts. +2. `Load Results`_: import analysis results from JSON file. +3. `Store Results`_: attach force data to contact objects. +4. `Visualization`_: display elements, contacts, and force vectors with different colors. + + +Model Setup +^^^^^^^^^^^ + +Create a model from an :class:`compas_dem.templates.ArchTemplate` and compute contacts to establish the foundation for result visualization. + +.. literalinclude:: dem_datastructure_results.py + :language: python + :start-after: # Model + :end-before: # Load results + + +Load Results +^^^^^^^^^^^^ + +Load analysis results from a JSON file containing force data for each contact interface. + +.. literalinclude:: dem_datastructure_results.py + :language: python + :start-after: # Load results + :end-before: # Store results in contacts + + +Store Results +^^^^^^^^^^^^^ + +Attach the loaded force data to each contact object for easy access during visualization. + +.. literalinclude:: dem_datastructure_results.py + :language: python + :start-after: # Store results in contacts + :end-before: # Visualization + + +Visualization +^^^^^^^^^^^^^ + +Visualize the model with elements, contact polygons, and force vectors using different colors and line widths to distinguish force types. + +.. literalinclude:: dem_datastructure_results.py + :language: python + :start-after: # Visualization + + diff --git a/src/compas_dem/elements/block.py b/src/compas_dem/elements/block.py index d208afc..644ef1f 100644 --- a/src/compas_dem/elements/block.py +++ b/src/compas_dem/elements/block.py @@ -118,6 +118,22 @@ def from_mesh(cls, mesh: Mesh, **kwargs) -> "Block": """ return cls(geometry=mesh.copy(cls=Mesh), **kwargs) + @classmethod + def from_brep(cls, brep, **kwargs) -> "Block": + """Construct a block element from a brep. + + Parameters + ---------- + brep : :class:`compas.geometry.Brep` + A brep. + + Returns + ------- + :class:`Block` + + """ + return cls(geometry=brep, **kwargs) + # ============================================================================= # Implementations of abstract methods # ============================================================================= diff --git a/src/compas_dem/models/blockmodel.py b/src/compas_dem/models/blockmodel.py index e0ac63a..2b4adaf 100644 --- a/src/compas_dem/models/blockmodel.py +++ b/src/compas_dem/models/blockmodel.py @@ -229,6 +229,7 @@ def from_barrelvault(cls, template: BarrelVaultTemplate) -> "BlockModel": model = cls() for mesh in template.blocks(): block: Block = Block.from_mesh(mesh) + block.is_support = mesh.attributes["is_support"] model.add_element(block) return model