PATH = os.path.join(DATA, 'stack.json')

# load assembly

assembly = Assembly.from_json(PATH)

# compute interface forces

compute_interface_forces_cvx(assembly, solver='CPLEX', verbose=True)

# serialise

assembly.to_json(PATH)

# visualise

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

plotter = AssemblyPlotter(assembly, figsize=(10, 7))

plotter.draw_vertices(text={key: str(key) for key in assembly.vertices()})
plotter.draw_edges()

plotter.draw_blocks(facecolor={
    key: (255, 0, 0)
    for key in assembly.vertices_where({'is_support': True})
})

plotter.show()
예제 #2
0
"""
import os

from compas.geometry import Frame
from compas.geometry import Transformation

from compas_assembly.datastructures import Assembly
from compas_assembly.datastructures import assembly_transform

HERE = os.path.dirname(__file__)
DATA = os.path.join(HERE, '../data')
PATH_FROM = os.path.join(DATA, '090_wall_courses.json')
PATH_TO = os.path.join(DATA, '51_wall_transformed.json')

assembly = Assembly.from_json(PATH_FROM)

# Set default attributes which will be changed later on in the planning process
assembly.update_default_vertex_attributes(is_buildable=False,
                                          is_planned=False,
                                          is_built=False)

# Define the frame where you want to transform the brick wall to.
pt = (-0.189775, -0.871978, 0.518383)
frame = Frame(pt, (1, 0, 0), (0, 1, 0))
T = Transformation.from_frame(frame)

# Transform the assembly
assembly_transform(assembly, T)
# serialise
assembly.to_json(PATH_TO)