Skip to content

Commit 804514a

Browse files
authored
Merge pull request #32 from ricardoavelino/fill
Added fill and Masonry rho
2 parents 7cc0d3c + 8ea5cab commit 804514a

File tree

4 files changed

+55
-3
lines changed

4 files changed

+55
-3
lines changed

commands/TNA_envelope.py

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@
1111
import compas_rhino.objects
1212
from compas.datastructures import Mesh
1313
from compas_masonry.session import MasonrySession as Session
14+
from compas_rui import feedback
1415
from compas_tna.diagrams import FormDiagram
15-
16-
# from compas_rui import feedback
1716
from compas_tna.envelope import CrossVaultEnvelope
1817
from compas_tna.envelope import DomeEnvelope
1918
from compas_tna.envelope import Envelope
@@ -299,17 +298,48 @@ def RunCommand():
299298
obj = compas_rhino.objects.find_object(guid)
300299
mesh_middle = compas_rhino.conversions.mesh_to_compas(obj.Geometry, cls=Mesh)
301300

301+
guid = compas_rhino.objects.select_mesh("Select fill mesh (Optional)")
302+
rs.UnselectAllObjects()
303+
if not guid:
304+
mesh_fill = None
305+
else:
306+
guids_bounds.append(guid)
307+
obj = compas_rhino.objects.find_object(guid)
308+
mesh_fill = compas_rhino.conversions.mesh_to_compas(obj.Geometry, cls=Mesh)
309+
302310
rs.HideObjects(guids_bounds)
303311

304312
envelope = MeshEnvelope.from_meshes(mesh_intrados, mesh_extrados, mesh_middle)
305313

314+
if mesh_fill:
315+
envelope.fill = mesh_fill
316+
306317
# =============================================================================
307318
# Not supported
308319
# =============================================================================
309320

310321
else:
311322
raise NotImplementedError
312323

324+
# =============================================================================
325+
# Commom parameters
326+
# =============================================================================
327+
328+
if not envelope:
329+
feedback.warn("Error creating Envelope. Try again.")
330+
return
331+
332+
rho = rs.GetInteger("Density masonry (rho)", envelope.rho, 0, 200)
333+
if not rho:
334+
return
335+
envelope.rho = rho
336+
337+
if envelope.fill:
338+
rho_fill = rs.GetInteger("Density masonry fill (rho_fill)", envelope.rho_fill, 0, 200)
339+
if not rho_fill:
340+
return
341+
envelope.rho_fill = rho_fill
342+
313343
# =============================================================================
314344
# Update scene
315345
# =============================================================================
@@ -324,10 +354,13 @@ def RunCommand():
324354
show_intrados = session.settings.envelope.show_intrados
325355
show_middle = session.settings.envelope.show_middle
326356
show_extrados = session.settings.envelope.show_extrados
357+
show_fill = session.settings.envelope.show_extrados
327358

328359
session.scene.add(envelope.intrados, disjoint=True, show=show_intrados, name="Intrados", layer="Masonry::TNA::Envelope") # type: ignore
329360
session.scene.add(envelope.middle, disjoint=True, show=show_middle, name="Middle", layer="Masonry::TNA::Envelope") # type: ignore
330361
session.scene.add(envelope.extrados, disjoint=True, show=show_extrados, name="Extrados", layer="Masonry::TNA::Envelope") # type: ignore
362+
if envelope.fill:
363+
session.scene.add(envelope.fill, disjoint=True, show=show_fill, name="Fill", layer="Masonry::TNA::Envelope") # type: ignore
331364

332365
session.scene.redraw()
333366
rs.Redraw()

commands/TNA_loads.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def RunCommand():
4343
return
4444

4545
if option == "Add":
46-
option = rs.GetString("Type of load", strings=["Selfweight", "External"])
46+
option = rs.GetString("Type of load", strings=["Selfweight", "External", "FillLoads"])
4747
if not option:
4848
return
4949

@@ -73,6 +73,12 @@ def RunCommand():
7373
print("Load at vertex {0} updated from {1:.2f} to {2:.2f}".format(key, pz, pz + load))
7474
formdiagram.vertex_attribute(key, "pz", pz + load)
7575

76+
elif option == "FillLoads":
77+
if not envelope.fill:
78+
feedback.warn("There is no Fill Mesh. Please re-create envelope with a fill")
79+
return
80+
envelope.apply_fill_weight_to_formdiagram(formdiagram)
81+
7682
elif option == "ClearAll":
7783
print("Cleared Loads in the Model.")
7884
formobject.mesh.vertices_attribute(name="pz", value=0)

src/compas_masonry/scene/envelopeobject.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@ def __init__(
2323
show_intrados=True,
2424
show_middle=False,
2525
show_extrados=True,
26+
show_fill=True,
2627
**kwargs,
2728
):
2829
super().__init__(**kwargs)
2930
self.color = color or self.color
3031
self.show_intrados = show_intrados
3132
self.show_middle = show_middle
3233
self.show_extrados = show_extrados
34+
self.show_fill = show_fill
3335

3436
@property
3537
def settings(self) -> dict:
@@ -38,6 +40,7 @@ def settings(self) -> dict:
3840
settings["show_intrados"] = self.show_intrados
3941
settings["show_middle"] = self.show_middle
4042
settings["show_extrados"] = self.show_extrados
43+
settings["show_fill"] = self.show_fill
4144
return settings
4245

4346
@property
@@ -61,6 +64,9 @@ def draw(self):
6164
if self.show_extrados:
6265
self.draw_extrados()
6366

67+
if self.show_fill:
68+
self.draw_fill()
69+
6470
return self._guids
6571

6672
def _draw_mesh(self, mesh: Mesh, name: str) -> None:
@@ -92,3 +98,9 @@ def draw_extrados(self):
9298
return
9399
guid = self._draw_mesh(self.envelope.extrados, name="Extrados") # type: ignore
94100
self._guids.append(guid)
101+
102+
def draw_fill(self):
103+
if not self.envelope.fill:
104+
return
105+
guid = self._draw_mesh(self.envelope.fill, name="Fill") # type: ignore
106+
self._guids.append(guid)

src/compas_masonry/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class EnvelopeSettings(BaseModel):
2525
show_intrados: bool = Field(default=True, title="Show Intrados")
2626
show_middle: bool = Field(default=False, title="Show Middle")
2727
show_extrados: bool = Field(default=True, title="Show Extrados")
28+
show_fill: bool = Field(default=True, title="Show Fill")
2829

2930

3031
class BlockModelSettings(BaseModel):

0 commit comments

Comments
 (0)