# 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()
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()