Gallery details
–Code Generates Mesh OffSets and Frames Based on Luminance Values coming from Geometry Painted with PaintVertex Tool in Maya–
Dynamics + Python + RhinoScript Research V.4 [07.April.2011] – via Dynamics + RhinoScript
RHINOSCRIPT CODE
Option Explicit
'Script written by Luis Quinones
'Script copyrighted by [n]igma + studioBoom + computational matter
'www.luisquinonesdesign.com
'www.studioboomdesign.com
'www.computationalmatter.com
'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")
'layer to store base mesh
Dim strMainLayer : strMainLayer = Rhino.AddLayer("MainMesh")
'pick Mesh which is unwelded at 0
Dim strObject : strObject = Rhino.GetObject("Select mesh", 32)
'store mesh in base layer
Call Rhino.ObjectLayer(strObject,strMainLayer)
' get the face vertices of the mesh
Dim arrFaces : arrFaces = Rhino.MeshFaces(strObject, True)
'get the vertex colors of the mesh
Dim color : color = Rhino.MeshVertexColors(strObject)
'Dynamic + Fixed Arrays
Dim arrFace(3),arrHLS(3),arrFace2(3)
Dim arrFaceVertices2(0)
Dim arrFaceVerts(0)
Dim lengthCheck()
Dim lengthCheck2()
'Create Layers
Dim strLayer6 : strLayer6 = Rhino.AddLayer("BaseCrvs",RGB(255,0,0))
Dim strLayer2 : strLayer2 = Rhino.AddLayer("OffsetCrv",RGB(255,0,0))
Dim strLayer9 : strLayer9 = Rhino.AddLayer("OffsetCrv_Fillet",RGB(255,0,0))
Dim strLayer : strLayer = Rhino.AddLayer("OffSetMesh",RGB(255,0,0))
Dim strLayer8 : strLayer8 = Rhino.AddLayer("OffSetMesh_Fillet",RGB(255,0,0))
Dim strLayer3 : strLayer3 = Rhino.AddLayer("FrameDog",RGB(255,255,255))
Dim strLayer11 : strLayer11 = Rhino.AddLayer("FrameDog2",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 strLayer7 : strLayer7 = Rhino.AddLayer("TempStuff",RGB(255,255,0))
Dim strLayer10 : strLayer10 = Rhino.AddLayer("Offset_SOLO",RGB(255,255,0))
Dim strLayer12 : strLayer12 = Rhino.AddLayer("StrandyDandy",RGB(255,255,255))
Dim strLayer13 : strLayer13 = Rhino.AddLayer("0.99ScaledCrv",RGB(255,255,255))
Dim strLayer14 : strLayer14 = Rhino.AddLayer("SkinnyFrame",RGB(255,255,255))
Dim i,j
Dim count2
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
If IsArray(arrFaces) Then
Rhino.EnableRedraw False
i = 0
count2 = 0
Do While i <= UBound(arrFaces)
arrFace2(0) = arrFaces(i)
arrFace2(1) = arrFaces(i+1)
arrFace2(2) = arrFaces(i+2)
arrFace2(3) = arrFaces(i+3)
If arrFace2(2)(0) = arrFace2(3)(0) And arrFace2(2)(1) = arrFace2(3)(1) And arrFace2(2)(2) = arrFace2(3)(2) Then
' Call Rhino.MessageBox("SHIT")
arrHLS(0) = Rhino.ColorRGBToHLS(color(count2))
'Call Rhino.Print(arrHLS(0)(1)/240)
arrHLS(1) = Rhino.ColorRGBToHLS(color(count2+1))
'Call Rhino.Print(arrHLS(1)(1)/240)
arrHLS(2) = Rhino.ColorRGBToHLS(color(count2+2))
'Call Rhino.Print(arrHLS(2)(1)/240)
arrHLS(3) = Rhino.ColorRGBToHLS(color(count2+2))
'Call Rhino.Print(arrHLS(3)(1)/240)
Dim sum : sum = Rhino.Sum(array(arrHLS(0)(1)/240,arrHLS(1)(1)/240,arrHLS(2)(1)/240))
Dim ave : ave = sum/3
arrFaceVerts(0) = Array(0,1,2,2)
Dim arrMeshVerts : arrMeshVerts = Array(arrFace2(0),arrFace2(1),arrFace2(2),arrFace2(3))
Dim arrVerticesNEW : arrVerticesNEW = arrMeshVerts
Dim newMesh : newMesh = Rhino.AddMesh(arrMeshVerts,arrFaceVerts)
Dim meshCent : meshCent = Rhino.MeshAreaCentroid(newMesh)
count2 = count2 + 3
Else
arrHLS(0) = Rhino.ColorRGBToHLS(color(count2))
'Call Rhino.Print(arrHLS(0)(1)/240)
arrHLS(1) = Rhino.ColorRGBToHLS(color(count2+1))
'Call Rhino.Print(arrHLS(1)(1)/240)
arrHLS(2) = Rhino.ColorRGBToHLS(color(count2+2))
'Call Rhino.Print(arrHLS(2)(1)/240)
arrHLS(3) = Rhino.ColorRGBToHLS(color(count2+3))
'Call Rhino.Print(arrHLS(3)(1)/240)
sum = Rhino.Sum(Array(arrHLS(0)(1)/240,arrHLS(1)(1)/240,arrHLS(2)(1)/240,arrHLS(3)(1)/240))
ave = sum/4
arrFaceVerts(0) = Array(0,1,2,3)
arrMeshVerts = Array(arrFace2(0),arrFace2(1),arrFace2(2),arrFace2(3))
arrVerticesNEW = arrMeshVerts
newMesh = Rhino.AddMesh(arrMeshVerts,arrFaceVerts)
meshCent = Rhino.MeshAreaCentroid(newMesh)
count2 = count2 + 4
end if
Dim baseScaledAction : baseScaledAction = Rhino.ScaleObject(newMesh,meshCent,array(0.98,0.98,0.98))
'Store the scaled baseMesh in the proper layer
Call Rhino.ObjectLayer(baseScaledAction,strLayer5)
'Create a polyline around the meshFace to avoid a tolerance issue
Dim strPolyBase : strPolyBase = Rhino.AddPolyline(arrVerticesNEW)
'Store the polyline in the proper layer
Call Rhino.ObjectLayer(strPolyBase,strLayer6)
'Create a new polyline(A) around the meshFace to avoid a tolerance issue
Dim strPoly : strPoly = Rhino.AddPolyline(arrVerticesNEW)
'Scale the polyline by 0.98 to create an edge ridge condition before any transformations are made
strPoly = Rhino.ScaleObject(strPoly,meshCent,array(0.98,0.98,0.98))
'Store the scaled polyLine in the proper layer
Call Rhino.ObjectLayer(strPoly,strLayer13)
'Create a copy of the new polyline(B) around the meshFace to avoid a tolerance issue
Dim strPoly2 : strPoly2 = Rhino.AddPolyline(arrVerticesNEW)
'Scale the polyline by 0.98 to create an edge ridge condition before any transformations are made
strPoly2 = Rhino.ScaleObject(strPoly2,meshCent,array(0.98,0.98,0.98))
'Store the scaled new polyLine in the proper layer
Call Rhino.ObjectLayer(strPoly2,strLayer13)
'Create another copy of the new polyline(C) around the meshFace to avoid a tolerance issue
Dim strPoly3 : strPoly3 = Rhino.AddPolyline(arrVerticesNEW)
'Scale the polyline by 0.98 to create an edge ridge condition before any transformations are made
strPoly3 = Rhino.ScaleObject(strPoly3,meshCent,array(0.98,0.98,0.98))
'Store the scaled new polyLine in the proper layer
Call Rhino.ObjectLayer(strPoly3,strLayer13)
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'FUNCTION INFORMATION ------------------------------------------------------------------------------------------
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'Create Array to Store the BasePolyline(0.98 Scaled) and The SkinnyFrame Layer to pass to Function
Dim arrCurveFrameOut : arrCurveFrameOut = array(strPolyBase,strPoly3)
'Call the Quad Mesh Generating Function to Create the Skinny Frame (reason there is a 0,98 offset above)
Call QuadUnfilletMeshGenerator(arrCurveFrameOut,strLayer14)
'Call StrandyPipe Function that makes the Radiant Cooling Pipes
'Dim strandy : strandy = strandyPipeyAction(strPoly3,ave)
'Put the Return from the function(Curves) and store them in the "StrandyDandy" Layer
'Call Rhino.ObjectLayer(strandy,strLayer12)
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'if the luminance value is greater than 0 and less than 0,9 then do this
If ave > 0 And ave < 0.9 Then
'Scale the new Mesh over top of each existing mesh face
Dim scaleMesh : scaleMesh = Rhino.ScaleObject(newMesh,meshCent,Array(ave,ave,ave))
'store it in the offsetMesh Layer
Call Rhino.ObjectLayer(scaleMesh,strLayer)
'Get the meshFaceArea
Dim meshArea1 : meshArea1 = Rhino.MeshArea(scaleMesh)
'Call Rhino.Print(meshArea1(1))
'scale the polyline(A) from the centroid by the luminance value
Dim basescaleSrf : basescaleSrf = Rhino.ScaleObject(strPoly,meshCent,Array(ave,ave,ave))
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'POLYLINE MOVING ALONG MeshFace NORMAL BASED ON PAINT LUMINANCE VALUES
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'VECTOR RELOCATION SET ------------------------------------------------
'Get the meshfaceNormal
Dim normal : normal = Rhino.MeshFaceNormals(newMesh)
'Set the Move value at half the Luminance Value
Dim pushValue : pushValue = ave * 0.5
'Scale the vector to 0,5 units
Dim normal2 : normal2 = Rhino.VectorScale(normal(0),-pushValue)
'Add the point at the scaled vector
Dim newVec : newVec = Rhino.PointAdd(meshCent,normal2)
'Move the (0,98) scaled polyline from the centroid of the base meshface to the newVector Position
Dim scaleSrf : scaleSrf = Rhino.MoveObject(basescaleSrf,meshCent,newVec)
Call Rhino.ObjectLayer(scaleSrf,strLayer2)
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'Create a temp polyline(A) copy to explode the hell out of
Dim scaleSrfTemp : scaleSrfTemp = Rhino.ScaleObject(strPoly,meshCent,Array(1,1,1))
Call Rhino.ObjectLayer(scaleSrfTemp,strLayer7)
'Explode that hotness
Dim explodeTest : explodeTest = Rhino.ExplodeCurves(scaleSrfTemp)
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'loop through the exploded hotness to store all the lenght values of the curve segments
Dim z
For z = 0 To Ubound(explodeTest)
ReDim Preserve lengthCheck(z)
lengthCheck(z) = Rhino.CurveLength(explodeTest(z))
'Call Rhino.Print(lengthCheck(z))
Next
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'If the length of a segment is less than 0,2 then do not fillet the curve
If lengthCheck(0) < 0.2 Or lengthCheck(1) < 0.2 Or lengthCheck(2) < 0.2 Or lengthCheck(3) < 0.2 Then
'Array containing polyline(B) and the moved along normal polyline to build out the meshFrame
Dim arrLoftCrvsB : arrLoftCrvsB = array(strPoly2,scaleSrf)
'Call the Quad Mesh Generating Function to Create the unfilleted meshFrame and put in the FrameDog2 Layer
Call QuadUnfilletMeshGenerator(arrLoftCrvsB,strLayer11)
'Create the infill Window for the frames that are unfilled
Dim offsetSolo : offsetSolo = Rhino.MeshPolyline(scaleSrfTemp)
'Store the window in the "OffsetSolo" Layer
Call Rhino.ObjectLayer(offsetSolo,strLayer10)
Else
'If the length of a segment is greater than 0,2 then do this
'//////////////////////////////////////////////////////////////////////////////
Dim arrLoftCrvs : arrLoftCrvs = array(scaleSrf,strPoly2)
'FUNCTION to FILLET-----------------------------------------------------------
Dim hotFillet : hotFillet = HotFilletAction(arrLoftCrvs,strLayer8,meshArea1(1),strLayer11)
'//////////////////////////////////////////////////////////////////////////////
Call Rhino.DeleteObject(scaleSrf)
'Dim strlofty : strlofty = Rhino.AddLoftSrf(Array(hotFillet,strPoly2),,,0,0)
'Call Rhino.ObjectLayer(hotMeshAction,strLayer3)
Call Rhino.ObjectLayer(hotFillet,strLayer9)
'Call Rhino.SurfaceIsocurveDensity(hotSeamage,-1)
End If
Erase lengthCheck
End If
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'if the luminance value is greater than 0,9 Then
If ave >= 0.9 Then
'Scale the new Mesh over top of each existing mesh face
Dim scaleMesh3 : scaleMesh3 = Rhino.ScaleObject(newMesh,meshCent,Array(ave-0.05,ave-0.05,ave-0.05))
'store it in the offsetMesh Layer
Call Rhino.ObjectLayer(scaleMesh3,strLayer)
Dim meshArea2 : meshArea2 = Rhino.MeshArea(scaleMesh3)
Dim basescaleSrf2 : basescaleSrf2 = Rhino.ScaleObject(strPoly,meshCent,Array(ave-0.05,ave-0.05,ave-0.05))
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'VECTOR RELOCATION SET ------------------------------------------------
Dim normal2A : normal2A = Rhino.MeshFaceNormals(newMesh)
Dim pushValue2 : pushValue2 = (ave - 0.05) * 0.5
Dim normal22 : normal22 = Rhino.VectorScale(normal2A(0),-pushValue2)
Dim newVec2 : newVec2 = Rhino.PointAdd(meshCent,normal22)
Dim scaleSrf3 : scaleSrf3 = Rhino.MoveObject(basescaleSrf2,meshCent,newVec2)
Call Rhino.ObjectLayer(scaleSrf3,strLayer2)
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
scaleSrfTemp = Rhino.ScaleObject(strPoly,meshCent,Array(1,1,1))
Call Rhino.ObjectLayer(scaleSrfTemp,strLayer7)
explodeTest = Rhino.ExplodeCurves(scaleSrfTemp)
Dim y
For y = 0 To Ubound(explodeTest)
ReDim Preserve lengthCheck2(y)
lengthCheck2(y) = Rhino.CurveLength(explodeTest(y))
'Call Rhino.Print(lengthCheck(z))
Next
If lengthCheck2(0) < 0.2 Or lengthCheck2(1) < 0.2 Or lengthCheck2(2) < 0.2 Or lengthCheck2(3) < 0.2 Then
arrLoftCrvsB = array(strPoly2,scaleSrf3)
Call QuadUnfilletMeshGenerator(arrLoftCrvsB,strLayer11)
offsetSolo = Rhino.MeshPolyline(scaleSrfTemp)
Call Rhino.ObjectLayer(offsetSolo,strLayer10)
'Call Rhino.ObjectLayer(scaleMesh,strLayer10)
'Dim movedBase2 : movedBase2 = Rhino.MoveObject(scaleMesh3,meshCent,newVec)
'Call Rhino.ObjectLayer(movedBase2,strLayer10)
'strlofty = Rhino.AddLoftSrf(Array(strPoly2,scaleSrf3))
'Call Rhino.ObjectLayer(strLofty,strLayer11)
'Call Rhino.SurfaceIsocurveDensity(strlofty,-1)
'Call Rhino.ObjectLayer(scaleMesh3,strLayer10)
Else
'Dim hotFillet2 : hotFillet2 = HotFilletAction(scaleSrf3)
'Call Rhino.DeleteObject(scaleSrf3)
'/////////////////////////////////////////////////////////////////////////////
arrLoftCrvs = array(scaleSrf3,strPoly2)
hotFillet = HotFilletAction(arrLoftCrvs,strLayer8,meshArea2(1),strLayer11)
'hotMeshAction = DirtyDirtyMeshGenerator(arrLoftCrvs)
'hotSeamage = HotSeamageAction(arrLoftCrvs)
'/////////////////////////////////////////////////////////////////////////////
Call Rhino.DeleteObject(scaleSrf3)
'strlofty = Rhino.AddLoftSrf(Array(strPoly2,scaleSrf3))
'Call Rhino.ObjectLayer(hotMeshAction,strLayer3)
Call Rhino.ObjectLayer(hotFillet,strLayer9)
'Call Rhino.SurfaceIsocurveDensity(hotSeamage,-1)
'Call Rhino.DeleteObjects(join3)
End If
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)
Call Rhino.LayerVisible(strLayer,False)
Call Rhino.LayerVisible(strLayer7,False)
Call Rhino.LayerVisible(strLayer9,False)
End Sub
Function HotFilletAction(arrCrvs,layer,area,strLayer11)
Dim curves
Dim strOutterCrv
curves = arrCrvs(0)
strOutterCrv = arrCrvs(1)
Dim arrOutterCrvPts : arrOutterCrvPts = Rhino.CurvePoints(strOutterCrv)
Dim explodeAction : explodeAction = Rhino.ExplodeCurves(curves)
Dim strNewLayer : strNewLayer = Rhino.AddLayer("fillet")
Dim i
Dim startPoints()
Dim midPoints()
Dim endPoints()
Dim startPoints2()
Dim endPoints2()
Dim filletStorage()
Dim arrFaceVertices2(0)
Dim arrFaceVertices3(0)
Dim arrVertForMesh
Dim testArray
'Rhino.Print area
If area > 10 Then
Dim dblRadValue : dblRadValue = area/120
End If
If area <= 10 And area > 6 Then
dblRadValue = area/30
End If
If area <= 6 Then
dblRadValue = area/40
End If
'Rhino.Print dblRadValue
For i = 0 To Ubound(explodeAction)
arrFaceVertices2(0) = Array(0,1,2,2)
arrFaceVertices3(0) = Array(0,1,2,3)
If i = 3 Then
ReDim Preserve filletStorage(i)
filletStorage(i) = Rhino.AddFilletCurve(explodeAction(i),explodeAction(0),dblRadValue)
'Call Rhino.ObjectLayer(fillet,strNewLayer)
ReDim Preserve startPoints(i)
ReDim Preserve endPoints(i)
startPoints(i) = Rhino.CurveStartPoint( filletStorage(i))
endPoints(i) = Rhino.CurveEndPoint( filletStorage(i))
'///////////////////////////////////////////////////////////////////////////////////////////
Dim arrFilletDiv : arrFilletDiv = Rhino.DivideCurve(filletStorage(i),5)
'Call Rhino.Print(arrFilletDiv(0)(0))
Dim w
For w = 0 To Ubound(arrFilletDiv) -1
'Call Rhino.AddLine(arrFilletDiv(y),arrOutterCrvPts(1))
arrVertForMesh = array(arrFilletDiv(w),arrFilletDiv(w+1),arrOutterCrvPts(0))
Dim FrameMesh : FrameMesh = Rhino.AddMesh(arrVertForMesh,arrFaceVertices2)
Call Rhino.ObjectLayer(FrameMesh,strLayer11)
Next
'///////////////////////////////////////////////////////////////////////////////////////////
Else
ReDim Preserve filletStorage(i)
filletStorage(i) = Rhino.AddFilletCurve(explodeAction(i),explodeAction(i+1),dblRadValue)
If IsNull (filletStorage(i)) Then
Rhino.Print "something is fucked up"
End If
'Call Rhino.ObjectLayer(fillet,strNewLayer)
'//////////////////////////////////////////////////////////////////////////////////////////
arrFilletDiv = Rhino.DivideCurve(filletStorage(i),5)
'Call Rhino.Print(arrFilletDiv(0)(0))
Dim y
For y = 0 To Ubound(arrFilletDiv) -1
'Call Rhino.AddLine(arrFilletDiv(y),arrOutterCrvPts(1))
If i = 0 Then
arrVertForMesh = array(arrFilletDiv(y),arrFilletDiv(y+1),arrOutterCrvPts(1))
End If
If i = 1 Then
arrVertForMesh = array(arrFilletDiv(y),arrFilletDiv(y+1),arrOutterCrvPts(2))
End If
If i = 2 Then
arrVertForMesh = array(arrFilletDiv(y),arrFilletDiv(y+1),arrOutterCrvPts(3))
End If
FrameMesh = Rhino.AddMesh(arrVertForMesh,arrFaceVertices2)
Call Rhino.ObjectLayer(FrameMesh,strLayer11)
Next
'//////////////////////////////////////////////////////////////////////////////////////////
ReDim Preserve startPoints(i)
ReDim Preserve midPoints(i)
ReDim Preserve endPoints(i)
startPoints(i) = Rhino.CurveStartPoint(filletStorage(i))
midPoints(i) = Rhino.CurveMidPoint(filletStorage(i))
'Call Rhino.AddTextDot(i,midPoints(i))
endPoints(i) = Rhino.CurveEndPoint( filletStorage(i))
End If
Next
Dim j
For j = 0 To Ubound(startPoints)
If j = 3 Then
ReDim Preserve filletStorage(i+j)
filletStorage(i+j) = Rhino.AddLine(endPoints(j),startPoints(0))
'Call Rhino.ObjectLayer(newLine,strNewLayer)
testArray = array(endPoints(j),startPoints(0),arrOutterCrvPts(1),arrOutterCrvPts(0))
'Call Rhino.ObjectLayer(newLine,strNewLayer)
Dim FrameMesh2 : FrameMesh2 = Rhino.AddMesh(testArray,arrFaceVertices3)
Call Rhino.ObjectLayer(FrameMesh2,strLayer11)
Else
ReDim Preserve filletStorage(i+j)
filletStorage(i+j) = Rhino.AddLine(endPoints(j),startPoints(j+1))
testArray = array(endPoints(j),startPoints(j+1),arrOutterCrvPts(j+2),arrOutterCrvPts(j+1))
'Call Rhino.ObjectLayer(newLine,strNewLayer)
FrameMesh2 = Rhino.AddMesh(testArray,arrFaceVertices3)
Call Rhino.ObjectLayer(FrameMesh2,strLayer11)
End If
Next
'Call Rhino.Print(Ubound(filletStorage))
Dim strNewJoined : strNewJoined = Rhino.JoinCurves(filletStorage,True)
Dim conv : conv = Rhino.ConvertCurveToPolyline(strNewJoined(0))
'Call Rhino.ReverseCurve(conv)
Call Rhino.DeleteObject(explodeAction(0))
Call Rhino.DeleteObject(explodeAction(1))
Call Rhino.DeleteObject(explodeAction(2))
Call Rhino.DeleteObject(explodeAction(3))
Call Rhino.DeleteObject(strNewJoined(0))
Dim newOffsetFillet : newOffsetFillet = Rhino.MeshPolyline(conv)
Call Rhino.ObjectLayer(newOffsetFillet,layer)
HotFilletAction = conv
End Function
Function HotSeamageAction(hotFillet)
Dim strObject(1),arrDomain, dblParameter,strObject2
strObject(0) = hotFillet(0)
strObject(1) = hotFillet(1)
' If Rhino.IsCurveClosed(strObject) Then
arrDomain = Rhino.CurveDomain(hotFillet(0))
dblParameter = (arrDomain(0) + arrDomain(1)) / 2
Dim eval : eval = Rhino.EvaluateCurve(hotFillet(0) ,dblParameter)
Call Rhino.AddPoint(eval)
Dim param2 : param2 = Rhino.CurveClosestPoint(hotFillet(1) ,eval)
Dim eval2 : eval2 = Rhino.EvaluateCurve(hotFillet(1) ,param2)
Call Rhino.AddPoint(eval2)
Rhino.CurveSeam hotFillet(0) , dblParameter
Rhino.CurveSeam hotFillet(1) , param2
'Dim crvCont : crvCont = array(strObject,strObject2)
'End If
Dim loftedAction : loftedAction = Rhino.AddLoftSrf(strObject)
HotSeamageAction = loftedAction
End Function
Function QuadUnfilletMeshGenerator(meshCrvs,layer)
Dim i,j,z,k
Dim arrMeshVerts()
Dim arrFaceVerts(0)
arrFaceVerts(0) = array(0,1,2,3)
Dim pts : pts = Rhino.CurvePoints(meshCrvs(0))
Dim pts2 : pts2 = Rhino.CurvePoints(meshCrvs(1))
For k = 0 To Ubound(pts)-1
Dim meshArray : meshArray = array(pts(k),pts2(k),pts2(k+1),pts(k+1))
Dim quadMeshy : quadMeshy = Rhino.AddMesh(meshArray,arrFaceVerts)
Call Rhino.ObjectLayer(quadMeshy,layer)
Next
End Function
Function reparameterize(crvy)
'If Rhino.IsCurve(strSrfID) = True Then
Call rhino.SelectObject(crvy)
Call rhino.Command("reparameterize 0 1")
Call rhino.UnselectAllObjects()
'End If
End Function
Function strandyPipeyAction(strCrv,ave)
Dim arrExp : arrExp = Rhino.ExplodeCurves(strCrv)
Call Rhino.DeleteObjects(array(arrExp(2),arrExp(3)))
If ave <= 0.5 Then
Call Rhino.DeleteObject(arrExp(2))
End If
If ave > 0.5 Then
Call Rhino.DeleteObject(arrExp(0))
End If
strandyPipeyAction = arrExp
End Function
Recently in Portfolio
- [K]ernels

- Nike A.I.R Prototypes

- [A]nisochromatic Meshing

- Nike After Dark Tour

- PARAPRAXIS

- [001.HRR] CONCEPT BIKE

- 2040:LUNAR.OUTPOST[a]

- HE.6 2020 Prototype

- CULEBRA.NET

- PYTORCH-CLASSIFIER

- Nike Zoom Superfly Elite

- BENGBU CITY OPERA

- Nike Footscape Flyknit DM

- Jordan Hyperdunk React

- KA-HELMET

- [C]ucarachas

- [S]eeker

- [O]h Baby

- [E]l Papa

- [S]hatter.Brain

- [S]tigmergy

- [F]orces

- CULEBRA.JAVA

- [C]ulebra.MultiBehaviors

- [S]ticky Stuff

- [S]entinels

- [G]allopingTopiary

- RELUXOED

- [SRC] . Semi Rigid Car

- [P]erlin

- [E]ternal Wanderers

- [W]heelie

- [S]labacube

- [M]esh Crawlers

- [L]a Silla

- [3]D BabyMaking Trackstars

- [3]D Trackers

- [2]D BabyMaking Trackers

- [T]rackers

- CULEBRA GRASSHOPPER

- culebra.[M]eshCrawlers.3D

- culebra.[H]ybrid.3D

- culebra.[F]lorgy

- culebra.[F]ockers.3D

- culebra.[F]ockers.2D

- culebra.[N]oisey.3D

- [E]l Nino

- culebra.[S]elfOrg

- [D]rippin

- culebra.[N]oisey.2D

- [C]reepyCrawlers

- [J]eepresesCreepers

- [T]2000

- PUFFER PLEATNESS

- EMERGEN[CY]

- [L]iquified

- [S]uckedComp

- [X]plosion

- MR. EW

- [H]airGoo

- [B]alled

- [n]injaStars

- [b]loomer

- [t]rip city

- TAPE GUNNED

- [B]oom

- [M]iller Time

- [D]elamjam

- [B]rain Zapper

- [B]ig Bird

- [E]gg Tube Pavillion

- [A]llice’s Easter Tree

- [S]weet Honey

- [U]M.Urgent

- [t]oo.urgent

- [B]onnie..+..Clyde

- [B]io Mess

- [EL]Mojado.Virus

- [W]HAT the …!

- [H]ot Lava

- [P]leat Diddy

- [t]erminator easter egg

- Mr. BB

- [B]less You

- [F]antastic + Interactive

- [S]oo_Minimally_Pathed

- [P]uffer Fish.Fab

- [M]an Eater

- [AHH] Alien House Hunters

- [W]eave Machine

- Sportbike Racing

- Grappling

- Kart Racing


Leave a reply