proxy = Proxy('compas_assembly.datastructures') # load meshes FILE = os.path.join(os.path.dirname(__file__), 'armadillo.json') meshes = compas.json_load(FILE) # construct assembly assembly = Assembly() for mesh in meshes: block = mesh.copy(cls=Block) assembly.add_block(block) # identify interfaces assembly = proxy.assembly_interfaces_numpy(assembly, tmax=0.02, amin=0.0001) # ============================================================================== # Visualization # ============================================================================== artist = AssemblyArtist(assembly, layer="Armadillo") artist.clear_layer() artist.draw_nodes() artist.draw_blocks() artist.draw_edges() artist.draw_interfaces()
arch = Arch(rise, span, thickness, depth, n) assembly = Assembly.from_geometry(arch) assembly.node_attribute(0, 'is_support', True) assembly.node_attribute(n - 1, 'is_support', True) # ============================================================================== # Identify the interfaces # ============================================================================== proxy.package = 'compas_assembly.datastructures' # make proxy methods into configurable objects # with __call__ for execution # store the method objects in a dict of callables assembly = proxy.assembly_interfaces_numpy(assembly, tmax=0.02) # ============================================================================== # Compute interface forces # ============================================================================== proxy.package = 'compas_rbe.equilibrium' assembly = proxy.compute_interface_forces_cvx(assembly, solver='CPLEX') # ============================================================================== # Visualize # ============================================================================== artist = AssemblyArtist(assembly, layer="Arch") artist.clear_layer()