Exemple #1
0
for i in range(N):
    block = brick.copy()
    block.transform(Translation.from_vector([0, 0, 0.5 * H + i * H]))
    shift(block)
    assembly.add_block(block)

# mark the bottom block as support

assembly.node_attribute(0, 'is_support', True)

# ==============================================================================
# Export
# ==============================================================================

assembly.to_json(FILE)

# ==============================================================================
# Visualize
# ==============================================================================

R = Rotation.from_axis_and_angle([1.0, 0, 0], -pi / 2)
assembly.transform(R)

plotter = AssemblyPlotter(assembly, figsize=(16, 10), tight=True)
plotter.draw_nodes(radius=0.05)
plotter.draw_edges()
plotter.draw_blocks(facecolor={
    key: '#ff0000'
    for key in assembly.nodes_where({'is_support': True})
})
import os

import compas_rhino

from compas_assembly.datastructures import Assembly
from compas_assembly.rhino import AssemblyHelper

HERE = os.path.abspath(os.path.dirname(__file__))

drawsettings = {
    'show.vertices': True,
    'layer': 'Assembly',
}

wall = Assembly()

guids = compas_rhino.select_surfaces()
wall.add_blocks_from_polysurfaces(guids)

wall.draw(drawsettings)

while True:
    keys = AssemblyHelper.select_vertices(wall)
    if not keys:
        break

    if AssemblyHelper.update_vertex_attributes(wall, keys):
        wall.draw(drawsettings)

wall.to_json(os.path.join(HERE, '../data/frompolysurfaces.json'))
Exemple #3
0
        # add (number_of_even_bricks) full bricks

        for j in range(number_of_even_bricks):
            block = brick.copy()
            mesh_transform(block, Translation([j * (width + gap), 0, dy]))
            assembly.add_block(block)
    else:
        # in the uneven rows
        # add a half brick
        # add (number_of_even_bricks - 1) full bricks
        # add a half brick

        block = halfbrick.copy()
        mesh_transform(block, Translation([0, 0, dy]))
        assembly.add_block(block)

        for j in range(number_of_even_bricks - 1):
            block = brick.copy()
            mesh_transform(block,
                           Translation([(0.5 + j) * (width + gap), 0, dy]))
            assembly.add_block(block)

        block = halfbrick.copy()
        mesh_transform(block,
                       Translation([(0.5 + j + 1) * (width + gap), 0, dy]))
        assembly.add_block(block)

# export to json

assembly.to_json(compas_assembly.get('wall.json'))
Exemple #4
0
    if i % 2 == 0:
        # in the even rows
        # add (number_of_even_bricks) full bricks

        for j in range(number_of_even_bricks):
            block = brick.copy()
            mesh_transform(block, Translation([j * (width + gap), 0, dy]))
            assembly.add_block(block)
    else:
        # in the uneven rows
        # add a half brick
        # add (number_of_even_bricks - 1) full bricks
        # add a half brick

        block = halfbrick.copy()
        mesh_transform(block, Translation([0, 0, dy]))
        assembly.add_block(block)

        for j in range(number_of_even_bricks - 1):
            block = brick.copy()
            mesh_transform(block, Translation([(0.5 + j) * (width + gap), 0, dy]))
            assembly.add_block(block)

        block = halfbrick.copy()
        mesh_transform(block, Translation([(0.5 + j + 1) * (width + gap), 0, dy]))
        assembly.add_block(block)

# export to json

assembly.to_json(PATH)
Exemple #5
0
    block = brick.copy()

    factor = choice([+0.01, -0.01, +0.05, -0.05, +0.1, -0.1])
    axis = choice([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]])
    vector = add_vectors(scale_vector(axis, factor), [0.0, 0.0, i * H])

    mesh_transform(block, Translation(vector))

    if i == 0:
        assembly.add_block(block, is_support=True)
    else:
        assembly.add_block(block)

# export to json

assembly.to_json(compas_assembly.get('stack.json'))

# visualise

R = Rotation.from_axis_and_angle([1.0, 0, 0], -pi / 2)
assembly_transform(assembly, R)

plotter = AssemblyPlotter(assembly, tight=True)

plotter.draw_vertices(
    text={key: str(key)
          for key, attr in assembly.vertices(True)})
plotter.draw_blocks(facecolor={
    key: '#ff0000'
    for key in assembly.vertices_where({'is_support': True})
})
from compas_rhino.utilities import get_meshes

# get support meshes and block meshes from Rhino
rhino_supports = get_meshes("Supports")
rhino_blocks = get_meshes("Blocks")

#  create and weld compas meshes
supports = []
for i in rhino_supports:
    support = Block.from_rhinomesh(i)
    support = mesh_weld(support)
    supports.append(support)

blocks = []
for i in rhino_blocks:
    block = Block.from_rhinomesh(i)
    block = mesh_weld(block)
    blocks.append(block)

# create an assembly
assembly = Assembly()

for i in supports:
    assembly.add_block(i, is_support=True)
for i in blocks:
    assembly.add_block(i, is_support=False)

# export the assembly in a .json file

assembly.to_json('assembly_taubman.json')