# shift block randomly in XY plane

for i in range(N):
    b = block.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 = scale_vector(axis, factor)

    T = Translation([vector[0], vector[1], i * H])
    mesh_transform(b, T)

    assembly.add_block(b, is_support=(i == 0))

# export to json

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_blocks(facecolor={
    key: (255, 0, 0)
    for key in assembly.vertices_where({'is_support': True})
})
plotter.show()
示例#2
0
    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})
})
plotter.show()