|
2 | 2 | "cells": [ |
3 | 3 | { |
4 | 4 | "cell_type": "code", |
5 | | - "execution_count": null, |
| 5 | + "execution_count": 1, |
6 | 6 | "metadata": {}, |
7 | 7 | "outputs": [], |
8 | 8 | "source": [ |
|
21 | 21 | "# DEM of a Cross Vault" |
22 | 22 | ] |
23 | 23 | }, |
24 | | - { |
25 | | - "cell_type": "markdown", |
26 | | - "metadata": {}, |
27 | | - "source": [ |
28 | | - "## Block Data" |
29 | | - ] |
30 | | - }, |
31 | | - { |
32 | | - "cell_type": "code", |
33 | | - "execution_count": 1, |
34 | | - "metadata": {}, |
35 | | - "outputs": [], |
36 | | - "source": [ |
37 | | - "import pathlib\n", |
38 | | - "\n", |
39 | | - "from compas.files import OBJ\n", |
40 | | - "\n", |
41 | | - "FILE = pathlib.Path.cwd() / \"data\" / \"crossvault.obj\"\n", |
42 | | - "\n", |
43 | | - "obj = OBJ(FILE)\n", |
44 | | - "obj.read()" |
45 | | - ] |
46 | | - }, |
47 | | - { |
48 | | - "cell_type": "markdown", |
49 | | - "metadata": {}, |
50 | | - "source": [ |
51 | | - "## Block Meshes" |
52 | | - ] |
53 | | - }, |
54 | | - { |
55 | | - "cell_type": "code", |
56 | | - "execution_count": 2, |
57 | | - "metadata": {}, |
58 | | - "outputs": [], |
59 | | - "source": [ |
60 | | - "from compas.datastructures import Mesh\n", |
61 | | - "\n", |
62 | | - "meshes = []\n", |
63 | | - "for name in obj.objects:\n", |
64 | | - " vertices, faces = obj.objects[name]\n", |
65 | | - " mesh: Mesh = Mesh.from_vertices_and_faces(vertices, faces)\n", |
66 | | - " mesh.scale(0.025, 0.025, 0.025)\n", |
67 | | - " mesh.name = name\n", |
68 | | - " meshes.append(mesh)" |
69 | | - ] |
70 | | - }, |
71 | 24 | { |
72 | 25 | "cell_type": "markdown", |
73 | 26 | "metadata": {}, |
|
77 | 30 | }, |
78 | 31 | { |
79 | 32 | "cell_type": "code", |
80 | | - "execution_count": 3, |
| 33 | + "execution_count": 2, |
81 | 34 | "metadata": {}, |
82 | 35 | "outputs": [], |
83 | 36 | "source": [ |
| 37 | + "import pathlib\n", |
| 38 | + "import compas\n", |
84 | 39 | "from compas_dem.models import BlockModel\n", |
85 | 40 | "\n", |
86 | | - "model = BlockModel.from_boxes(meshes)" |
87 | | - ] |
88 | | - }, |
89 | | - { |
90 | | - "cell_type": "markdown", |
91 | | - "metadata": {}, |
92 | | - "source": [ |
93 | | - "## Contacts" |
94 | | - ] |
95 | | - }, |
96 | | - { |
97 | | - "cell_type": "code", |
98 | | - "execution_count": 4, |
99 | | - "metadata": {}, |
100 | | - "outputs": [], |
101 | | - "source": [ |
102 | | - "# model.compute_contacts(tolerance=1e-3, minimum_area=1e-2)" |
103 | | - ] |
104 | | - }, |
105 | | - { |
106 | | - "cell_type": "markdown", |
107 | | - "metadata": {}, |
108 | | - "source": [ |
109 | | - "## Supports" |
110 | | - ] |
111 | | - }, |
112 | | - { |
113 | | - "cell_type": "code", |
114 | | - "execution_count": 5, |
115 | | - "metadata": {}, |
116 | | - "outputs": [], |
117 | | - "source": [ |
118 | | - "from compas_dem.elements import BlockElement\n", |
119 | | - "\n", |
120 | | - "element: BlockElement\n", |
| 41 | + "FILE = pathlib.Path.cwd() / \"data\" / \"crossvault.json\"\n", |
121 | 42 | "\n", |
122 | | - "for element in model.elements():\n", |
123 | | - " if model.graph.degree(element.graphnode) == 1:\n", |
124 | | - " element.is_support = True" |
| 43 | + "model: BlockModel = compas.json_load(FILE)" |
125 | 44 | ] |
126 | 45 | }, |
127 | 46 | { |
|
133 | 52 | }, |
134 | 53 | { |
135 | 54 | "cell_type": "code", |
136 | | - "execution_count": 7, |
| 55 | + "execution_count": 3, |
137 | 56 | "metadata": {}, |
138 | 57 | "outputs": [ |
139 | 58 | { |
140 | 59 | "data": { |
141 | 60 | "application/vnd.jupyter.widget-view+json": { |
142 | | - "model_id": "a3ed37df12a641b797702057f23d25db", |
| 61 | + "model_id": "4e71320045d24d4b990353efdf753cf1", |
143 | 62 | "version_major": 2, |
144 | 63 | "version_minor": 0 |
145 | 64 | }, |
|
0 commit comments