logo

TerminatorEasterEGG_SECOND

Option Explicit
'Script written by  Luis Quinones
'Script copyrighted by  [n]igma + studioBoom
'www.luisquinonesdesign.com
'www.cargocollective.com/studioboom
'Script version Sunday, March 20, 2011 8:08:03 PM
Call Main()
Sub Main()
'///////////////////////////////////////////////////////////////////////////////////////////////////
Call Rhino.MessageBox("Code Generates Mesh OffSets and Frames Based on Luminance Values coming from Geometry Painted with PaintVertex Tool in Maya")
    'Declare Variables
    Dim strMainLayer : strMainLayer = Rhino.AddLayer("MainMesh")
    Dim strObject : strObject = Rhino.GetObject("Select mesh", 32)
    Call Rhino.ObjectLayer(strObject,strMainLayer)
    MeshFaces
    Dim arrFaces : arrFaces = Rhino.MeshFaces(strObject, True)
    Dim color : color = Rhino.MeshVertexColors(strObject)
    Dim  arrFace(3),arrHLS(3)
    Dim arrFaceVertices2()
    Dim strLayer6 : strLayer6 = Rhino.AddLayer("BaseCrvs",RGB(255,0,0))
    Dim strLayer2 : strLayer2 = Rhino.AddLayer("OffsetCrv",RGB(255,0,0))
    Dim strLayer : strLayer = Rhino.AddLayer("OffSetMesh",RGB(255,0,0))
    Dim strLayer3 : strLayer3 = Rhino.AddLayer("FrameDog",RGB(255,255,255))
    Dim strLayer5 : strLayer5 = Rhino.AddLayer("0_ValueOffSet",RGB(120,120,120))
    Dim strLayer4 : strLayer4 = Rhino.AddLayer("Color_Vert_Info",RGB(255,255,0))
    Dim i,j
'///////////////////////////////////////////////////////////////////////////////////////////////////
    If IsArray(arrFaces) Then
        Rhino.EnableRedraw False
        i = 0
        Do While i <= UBound(arrFaces)
            arrFace(0) = arrFaces(i)
            arrFace(1) = arrFaces(i+1)
            arrFace(2) = arrFaces(i+2)
            arrFace(3) = arrFaces(i+3)
            arrHLS(0) = Rhino.ColorRGBToHLS(color(i))
            'Call Rhino.Print(arrHLS(0)(1)/240)
            arrHLS(1) = Rhino.ColorRGBToHLS(color(i+1))
            'Call Rhino.Print(arrHLS(1)(1)/240)
            arrHLS(2) = Rhino.ColorRGBToHLS(color(i+2))
            'Call Rhino.Print(arrHLS(2)(1)/240)
            arrHLS(3) = Rhino.ColorRGBToHLS(color(i+3))
            'Call Rhino.Print(arrHLS(3)(1)/240)        
            'Call Rhino.AddTextDot("Vert 0" & "_" & arrHLS(0)(1)/240,arrface(0))
            'Call Rhino.AddTextDot("Vert 1" & "_" & arrHLS(1)(1)/240,arrface(1))
            'Call Rhino.AddTextDot("Vert 2" & "_" & arrHLS(2)(1)/240,arrface(2))
            'Call Rhino.AddTextDot("Vert 3" & "_" & arrHLS(3)(1)/240,arrface(3))        
            Dim sum : sum = Rhino.Sum(Array(arrHLS(0)(1)/240,arrHLS(1)(1)/240,arrHLS(2)(1)/240,arrHLS(3)(1)/240))
            Dim ave : ave = sum/4        
            'If ave < 0.015 Then            
            'ave = 0.015            
            'End If        
            'Call Rhino.Print(ave)    
            Dim line : line = Rhino.AddLine(arrFace(0),arrFace(2))    
            Dim midpt : midpt = Rhino.CurveMidPoint(line)    
            Call Rhino.DeleteObject(line)    
            'Dim dot1 : dot1 = Rhino.AddTextDot("Scale_Value = " & ave,midpt)
            'Call Rhino.ObjectLayer(dot1,strLayer4)    
            Dim arrVertices : arrVertices = Array(arrFace(0),arrFace(1),arrFace(2),arrFace(3))
            Dim arrVerticesNEW : arrVerticesNEW = Array(arrFace(0),arrFace(1),arrFace(2),arrFace(3),arrFace(0))        '///////////////////////////////////////////////////////////////////////////////////////////////////
            For j = 0 To 3        
                ReDim Preserve arrFaceVertices2(j)
                arrFaceVertices2(j) = Array(0,1,2,3)
                
            Next    
'///////////////////////////////////////////////////////////////////////////////////////////////////
            Dim newMesh : newMesh = Rhino.AddMesh (arrVertices, arrFaceVertices2)
            Call Rhino.ObjectLayer(newMesh,strLayer5)
            Dim meshCent : meshCent = Rhino.MeshAreaCentroid(newMesh)        
            Dim strPoly : strPoly = Rhino.AddPolyline(arrVerticesNEW)
            Call Rhino.ObjectLayer(strPoly,strLayer6)
            Dim strPoly2 : strPoly2 = Rhino.AddPolyline(arrVerticesNEW)
            Call Rhino.ObjectLayer(strPoly2,strLayer6)        
        '/////////////////////////////////////////////////////////////////////////////////////////////////
                       If ave > 0 And ave < 0.9 Then    
                Dim scaleMesh : scaleMesh = Rhino.ScaleObject(newMesh,meshCent,Array(ave,ave,ave))
                Call Rhino.ObjectLayer(scaleMesh,strLayer)
                
                Dim scaleSrf : scaleSrf = Rhino.ScaleObject(strPoly,meshCent,Array(ave,ave,ave))
                Call Rhino.ObjectLayer(scaleSrf,strLayer2)
            
                Dim strlofty : strlofty = Rhino.AddLoftSrf(Array(strPoly2,scaleSrf))
                Call Rhino.ObjectLayer(strLofty,strLayer3)
                Call Rhino.SurfaceIsocurveDensity(strlofty,-1)
                'Call Rhino.DeleteObjects(join)
                
            End If
'///////////////////////////////////////////////////////////////////////////////////////////////////
            
            If ave >= 0.9  Then
                
                Dim scaleMesh3 : scaleMesh3 = Rhino.ScaleObject(newMesh,meshCent,Array(ave-0.05,ave-0.05,ave-0.05))
                Call Rhino.ObjectLayer(scaleMesh3,strLayer)            
                Dim scaleSrf3 : scaleSrf3 = Rhino.ScaleObject(strPoly,meshCent,Array(ave-0.05,ave-0.05,ave-0.05))
                Call Rhino.ObjectLayer(scaleSrf3,strLayer2)        
                strlofty = Rhino.AddLoftSrf(Array(strPoly2,scaleSrf3))
                Call Rhino.ObjectLayer(strLofty,strLayer3)
                Call Rhino.SurfaceIsocurveDensity(strlofty,-1)
                'Call Rhino.DeleteObjects(join3)
                
            End If
            i = i + 4
            Erase arrFaceVertices2
        Loop    '///////////////////////////////////////////////////////////////////////////////////////////////////
        Rhino.EnableRedraw True
    End If
    Call Rhino.LayerVisible(strLayer2,False)
    Call Rhino.LayerVisible(strLayer4,False)
    Call Rhino.LayerVisible(strMainLayer,False)
    Call Rhino.LayerVisible(strLayer6,False)
End Sub
Update
  • Share