logo

[B]rain Zapper

Projects details

Dynamics + Python Research V.1 [07.June.2011] Рvia Dynamics + Python [07.June.2011]
–BioReactor Energy Distribution System – ElectroChemical Actuators for door opening of Emergent Soft/Rigid Car Design – Design + Video by LQ
Recreates a series of polylines based on an animated series of deformed geometry. Post deformation the geometry is in very bad shape, this script rebuilds the base polylines to reInput into the next scripts–
Research and Development by Luis Quinones and Tom Wiscombe @ Emergent Architecture 

PYTHON CODE

"""Recreates a series of polylines based on an animated series of deformed geometry. Post deformation the geometry is in very bad shape, this script rebuilds the base polylines to reInput into the next scripts"""

import rhinoscriptsyntax as rs
strNewLayer = rs.AddLayer("Plines",[255,255,255])
layerChoose = rs.GetLayer("ChooseLayer")
strMesh = rs.ObjectsByLayer(layerChoose)

print len(strMesh)
#rs.EnableRedraw (False)
faceVert = [0,1]
newPts = []
faceVert[0] = [0,1,2,3]
faceVert[1] = [0,3,4,4]

for z in range (len(strMesh)):
        #print layerName
        strLayer = rs.AddLayer('frame'+ str(z+1),[255,255,255])
        arrFaces = rs.MeshFaces(strMesh[z],True)
        print (len(arrFaces))
        i = 0
        while (i < len(arrFaces)):
            face = arrFaces[i],arrFaces[i+1],arrFaces[i+2],arrFaces[i+3]
            #face[0] = arrFaces[i]
            #face[1] = arrFaces[i+1]
            #face[2] = arrFaces[i+2]
            #face[3] = arrFaces[i+3]
            newLine = rs.AddLine(face[0],face[1])
            rs.ObjectLayer(newLine,strLayer)
            i += 4
        crvs = rs.ObjectsByLayer(strLayer,True)      

        if not crvs:
            print "negative" 
        rs.Command("Join")
        rs.UnselectAllObjects()     
        arrCrvTest = rs.ObjectsByLayer(strLayer)
        if arrCrvTest:        
            for curve in arrCrvTest :

                newPts2 = []
                crvPts = rs.CurvePoints(curve)
                #print crvPts[0]
                #crvPts.pop(-1)

                if crvPts :            
                    meshTest = rs.AddMesh(crvPts,faceVert)
                    areatest = rs.MeshArea(meshTest)
                    #print areatest[1]
                    if areatest[1] == 0:                 
                        print "One Failed"
                        rs.DeleteObject(curve)           
                    rs.DeleteObject(meshTest)
        rs.UnselectAllObjects()

        arrCrvs = rs.ObjectsByLayer(strLayer)
        if arrCrvs:         
            for curves in arrCrvs:           
                crvPts = rs.CurvePoints(curves)     
                if crvPts:              
                    meshTest = rs.AddMesh(crvPts,faceVert)
                    centroid = rs.MeshAreaCentroid(meshTest)
                    newPts2.append(centroid)
                    newPts.append(rs.AddPoint(centroid))
                    rs.DeleteObject(meshTest)              
        rs.DeleteObjects(newPts)
        if newPts:
            pline = rs.AddPolyline(newPts2)
        else:
            print" RIGHT--->WROONGG!"       
        if pline:
            rs.RebuildCurve(pline,2,40)
            print "rebuilt @ 2,40"
            rs.ObjectLayer(pline,strNewLayer)

        rs.LayerVisible(strLayer,False)
rs.LayerVisible(layerChoose,False)
#rs.EnableRedraw (True)
Update

 

 

 

  • Share

Leave a reply

Your email address will not be published. Required fields are marked *