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)
Exemplo n.º 2
0
            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]:
Exemplo n.º 3
0
                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]:
Exemplo n.º 4
0
            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()