logo

Python V1 – Data_Reader + MeshBuilder + Vertex Color Info

import rhinoscriptsyntax as rs
from System.Drawing import Color 
"""Script Written By Luis Quinones
Script Copywritten by [n]igma + computationalMatter
www.luisquinonesdesign.com
www.computationalmatter.com
Script Version Wednesday, July 30, 2011"""

import rhinoscriptsyntax as rs
from System.Drawing import Color 

def makeMeshyMesh(pts,mainValue,faceCount,layer): 
    faceCounter = []
    faceVerts = [0]    
    pt1 = rs.AddPoint(pts[0])
    coord1 = rs.PointCoordinates(pt1)
    pt2 = rs.AddPoint(pts[1])
    coord2 = rs.PointCoordinates(pt2)
    pt3 = rs.AddPoint(pts[2])
    coord3 = rs.PointCoordinates(pt3)        
    if len(pts) == 4:    
        pts4 = rs.AddPoint(pts[3])
        coord4 = rs.PointCoordinates(pts4)        
        testVerts = [coord1,coord2,coord3,coord4]        
    for i in range (faceCount):        
        faceCounter.append(i)        
    faceVerts[0] = faceCounter    
    testVerts = [coord1,coord2,coord3]    
    newMesh = rs.AddMesh(testVerts,faceVerts)    
    vertexcount = rs.MeshVertexCount(newMesh)    
    if not vertexcount:        
        print "did not make mesh"        
    else:        
        colors = []       
        for n in range(rs.MeshVertexCount(newMesh)):             
            mainColor = mainValue[n]
            #print mainColor
            r = mainColor
            if r > 255:
                r = 255
            #print r
            g = mainColor
            if g > 255:
                g = 255
            #print g
            b = mainColor
            if b > 255:
                b = 255
            #print b            
            intMainValue = float(r),float(g),float(b)
            #print intMainValue            
            colors.append(intMainValue)    
        print colors
        rs.MeshVertexColors( newMesh, colors )        
        return newMesh

def Main():
    
    strLayer = rs.AddLayer("MeshLayer")
    strLayer2 = rs.AddLayer("DOTACTION")    
    f = open('C:UserskingLuiDesktopzingbanger2.txt','r')
    #C:UserskingLuiDesktop
    mainValue = []
    tempLOC = []
    ElementList = []   
    count = 1
    counter = []   
    for line in f:        
        trim = line.split(",")
        
        TestNodes = trim[1:]
        #print TestNodes
        TestNodesSplit = TestNodes[0]
        TestNodesSplit2 = TestNodesSplit.split(" ")
        NodeList = TestNodesSplit2[2]
        ElementList.append(NodeList)
        
        XYZValue = trim[4:7]
        #print 'this'+ ' = ' + str(XYZValue)
        
        xValue = XYZValue[0]
        temp = xValue.split(" ")
        newXValue = len(temp)-1
        FinalX = temp[newXValue]
        
        yValue = XYZValue[1]
        temp2 = yValue.split(" ")
        newYValue = len(temp2)-1
        FinalY = temp2[newYValue]
        
        zValue = XYZValue[2]
        temp3 = zValue.split(" ")
        newZValue = len(temp3)-1
        FinalZ = temp3[newZValue]
        
        tempLOC.append([FinalX,FinalY,FinalZ])        
        lastItem = len(trim)-1
        value = trim[lastItem]        
        test = value.split(" ")
        lastItem2 = len(test)-1
        printest = test[lastItem2]        
        mainValue.append(test[lastItem2])        
        count += 1
        counter.append(count)        
    indexPass = []    
    count4 = 0    
    lastValueTrans = len(ElementList)-1
    lastValue = int(ElementList[lastValueTrans])    
    #len = 44 items which means there are 43 and 0
    #index numbers in ElementList go from 1 - 13    
    count5 = 1    
    for z in range(lastValue):
        #print "Element List - " + ElementList[count5] + " XYZ = " + str(tempLOC[count5])
        #print ElementList[count4]        
        transferB = ElementList.index(str(count5))        
        indexPass.append(transferB)        
        count5 += 1          
    for m in range(len(indexPass)):        
        if m != len(indexPass)-1:           
            tempArray = indexPass[m],indexPass[m+1]
            tempValueArray = indexPass[m],indexPass[m+1]                      
            listTrans = tempLOC[tempArray[0]:tempArray[1]]
            print listTrans           
            listColorTrans = mainValue[tempValueArray[0]:tempArray[1]]
            print listColorTrans            
            newcount2 = len(listTrans)           
            ColorTrans = mainValue[0:newcount2]                       
            faceCount = len(listTrans)                        
            mesh = makeMeshyMesh(listTrans,listColorTrans,faceCount,strLayer2)
Main()
Update
  • Share