from compas.datastructures import Mesh from compas_rhino.artists.meshartist import MeshArtist from compas_rhino.helpers import mesh_select_face if __name__ == '__main__': # get mesh from json mesh = Mesh.from_json('tessellation_mesh.json') # draw tessellation mesh artist = MeshArtist(mesh, layer='tessellation_mesh') artist.draw_edges() artist.draw_facelabels() artist.redraw() # select a face fkey = mesh_select_face(mesh, message='Select face.') artist.clear_facelabels() # find neighboring faces fkeys = list(mesh.face_neighbors(fkey)) + [fkey] for fkey in fkeys: # get voussoir meshes stored as face attribute data = mesh.get_face_attribute(fkey, 'voussoir') voussoir_mesh = Mesh.from_data(data) # draw neighboring voussoir mesh artist = MeshArtist(voussoir_mesh, layer='voussoir_meshes') artist.draw_faces(join_faces=True)
edges.append((a, b)) # check for the right uv tuples. Ordered as in mesh.edges() edgeset = set(list(mesh.edges())) return [(u, v) if (u, v) in edgeset else (v, u) for u, v in edges] if __name__ == '__main__': edge_crvs = rs.GetObjects("Select edges", 4) lines = get_line_coordinates(edge_crvs) mesh = Mesh.from_lines(lines, delete_boundary_face=True) # draw edges for selection artist = MeshArtist(mesh, layer='joint_lines') artist.draw_edges() artist.redraw() # select edge rs.HideObjects(edge_crvs) edges = mesh_select_edges(mesh) rs.ShowObjects(edge_crvs) # clear edges artist.clear_edges() # find "every second" edge (joint lines) joint_lines = [] for i, uv in enumerate(edges): para_edges = get_parallel_edges(mesh,uv) for u, v in para_edges[i%2::2]:
break edges.append((a, b)) return edges if __name__ == '__main__': crvs = rs.GetObjects("Select mesh edges", 4) lines = get_line_coordinates(crvs) mesh = Mesh.from_lines(lines, delete_boundary_face=True) artist = MeshArtist(mesh, layer='new_lines') artist.draw_edges() artist.redraw() # select edge rs.HideObjects(crvs) edge = mesh_select_edge(mesh, "select a mesh edge") rs.ShowObjects(crvs) # select edge artist.clear_edges() # find "every second" edge (joint lines) new_lines = [] para_edges = get_parallel_edges(mesh, edge) for u, v in para_edges[2::2]:
faces[key] = fkeys for key, (x, y, z) in vertices.items(): dual.add_vertex(key, x=x, y=y, z=z) for fkey, vertices in faces.items(): dual.add_face(vertices, fkey=fkey) return dual if __name__ == '__main__': guid = compas_rhino.select_mesh() mesh = mesh_from_guid(Mesh, guid) # call the function from the compas dual_mesh # dual_mesh = mesh_dual(mesh) compas_rhino.clear_layer('my_dual') # make my own dula mesh with edge condition dual_mesh = my_mesh_dual(mesh) # print(dual_mesh) artist = MeshArtist(dual_mesh, layer='my_dual') artist.draw_edges(color=[255, 0, 0]) # artist.draw_faces(join_faces=True) artist.redraw()