Module mola.module_rhino

Expand source code
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__     = ['Benjamin Dillenburger','Demetris Shammas','Mathias Bernhard']
__copyright__  = 'Copyright 2019 / Digital Building Technologies DBT / ETH Zurich'
__license__    = 'MIT License'
__email__      = ['<dbt@arch.ethz.ch>']

try:
    import rhinoscriptsyntax as rs
except ImportError:
    pass

from mola.core_mesh import Mesh
from mola.core_vertex import Vertex
from mola.core_face import Face

def mesh_from_rhino_mesh(obj):
    mesh=Mesh()
    vertices = rs.MeshVertices(obj)
    for v in vertices:
        mesh.vertices.append(Vertex(v[0],v[1],v[2]))
    faceVerts = rs.MeshFaceVertices(obj)
    for face in faceVerts:
        if face[2]==face[3]:
            mesh.faces.append(Face([mesh.vertices[face[0]],mesh.vertices[face[1]],mesh.vertices[face[2]]]))
        else:
            mesh.faces.append(Face([mesh.vertices[face[0]],mesh.vertices[face[1]],mesh.vertices[face[2]],mesh.vertices[face[3]]]))
    return mesh

def display_mesh(mesh):
    display_faces(mesh.faces)

#todo: method to turn rhino mesh into molamesh

def display_faces(faces):
    vertices=[]
    facesIndices=[]
    vertexColors=[]
    for f in faces:
        faceIndices=[]
        for v in f.vertices:
            faceIndices.append(len(vertices))
            vertices.append((v.x,v.y,v.z))
            vertexColors.append((f.color[0]*255,f.color[1]*255,f.color[2]*255))
        facesIndices.append(faceIndices)
    mesh = rs.AddMesh(vertices,facesIndices,None,None,vertexColors)
    
    return mesh

Functions

def display_faces(faces)
Expand source code
def display_faces(faces):
    vertices=[]
    facesIndices=[]
    vertexColors=[]
    for f in faces:
        faceIndices=[]
        for v in f.vertices:
            faceIndices.append(len(vertices))
            vertices.append((v.x,v.y,v.z))
            vertexColors.append((f.color[0]*255,f.color[1]*255,f.color[2]*255))
        facesIndices.append(faceIndices)
    mesh = rs.AddMesh(vertices,facesIndices,None,None,vertexColors)
    
    return mesh
def display_mesh(mesh)
Expand source code
def display_mesh(mesh):
    display_faces(mesh.faces)
def mesh_from_rhino_mesh(obj)
Expand source code
def mesh_from_rhino_mesh(obj):
    mesh=Mesh()
    vertices = rs.MeshVertices(obj)
    for v in vertices:
        mesh.vertices.append(Vertex(v[0],v[1],v[2]))
    faceVerts = rs.MeshFaceVertices(obj)
    for face in faceVerts:
        if face[2]==face[3]:
            mesh.faces.append(Face([mesh.vertices[face[0]],mesh.vertices[face[1]],mesh.vertices[face[2]]]))
        else:
            mesh.faces.append(Face([mesh.vertices[face[0]],mesh.vertices[face[1]],mesh.vertices[face[2]],mesh.vertices[face[3]]]))
    return mesh