from compas.datastructures import Mesh from compas.datastructures import mesh_subdivide from compas.geometry import Box from compas.geometry import Translation from compas.geometry import distance_point_point from compas_viewers.multimeshviewer import MultiMeshViewer tri = partial(mesh_subdivide, scheme='tri') quad = partial(mesh_subdivide, scheme='quad') ck = partial(mesh_subdivide, scheme='catmullclark') corner = partial(mesh_subdivide, scheme='corner') doosabin = partial(mesh_subdivide, scheme='doosabin') box = Box.from_corner_corner_height((0.0, 0.0, 0.0), (1.0, 1.0, 0.0), 1.0) mesh = Mesh.from_shape(box) bbox = mesh.bounding_box_xy() d = distance_point_point(bbox[0], bbox[1]) k = 2 tri_mesh = tri(mesh, k=k) quad_mesh = quad(mesh, k=k) ck_mesh = ck(mesh, k=k) corner_mesh = corner(mesh, k=k) doosabin_mesh = doosabin(mesh, k=k) quad_mesh.transform(Translation([1.5 * d, 0.0, 0.0])) corner_mesh.transform(Translation([1.5 * 2 * d, 0.0, 0.0]))
return network_copy # ============================================================================== # Main # ============================================================================== if __name__ == "__main__": from math import pi from compas.utilities import print_profile from compas.geometry import Box from compas.geometry import matrix_from_translation from compas.geometry import Translation from compas.geometry import Rotation from compas.datastructures import network network_transform = print_profile(network_transform) box = Box.from_corner_corner_height([0.0, 0.0, 0.0], [1.0, 1.0, 0.0], 1.0) network = network.from_vertices_and_faces(box.vertices, box.faces) T = matrix_from_translation([-2.0, 0.0, 3.0]) T = Translation([-2.0, 0.0, 3.0]) R = Rotation.from_axis_and_angle([0.0, 0.0, 1.0], pi / 2) network_transform(network, R) print(network.get_vertices_attribute('x'))
def box(): box = Box.from_corner_corner_height([0, 0, 0], [1, 1, 0], 1.0) mesh = Mesh.from_shape(box) return mesh