2010. 9. 2. 13:47
Rhino Script 예제
2010. 9. 2. 13:47 in Rhino3D/Rhino Script
뭔진 모르지만 스크립트를 이렇게 사용할 수 있다는 코드예제
=======================================================================================
Option Explicit 'Script written by <David Mans (adapted from work by Che Wei Wang www.cwwang.com> 'Script copyrighted by <Neoarchaic Studio> 'Script version Sunday, September 28, 2008 12:18:06 AM Call Main() Sub Main() Dim objects, folder, name, arrResults, arrDrawings objects = Rhino.GetObjects("Select Objects") If isNull(objects) Then Exit Sub arrDrawings = Rhino.GetBoolean("DrawingTypes", array("orthoElev","no","yes","auxElev","no","yes","auxTop","no","yes","auxBottom","no","yes","isoTop","no","yes","isoBottom","no","yes"),array(True,False,False,False,False,True)) arrResults = Rhino.GetBoolean("Output Options", array("drawings","no","yes","renders","no","yes"),array(True,False)) If arrResults(1) = True Then name=Rhino.GetString("Enter prefix for jpeg file naming") folder = Rhino.BrowseForFolder("testFolder","SelectFolder","RenderFolder") If IsNull(folder) Then Exit Sub End If Call multiIso(objects,array(0,0,0),folder,name,arrResults, arrDrawings) End Sub Function multiIso(arrObjects, origin,folder,name, arrBool, arrMode) multiIso = Null Dim strView Dim k: k=0 Dim count Dim arrPoint(),arrTitle() ReDim arrPoint(k),arrTitle(k) If arrMode(0) = True Then ReDim Preserve arrPoint(k+5),arrTitle(k+5),arrSwitch(k+5) 'plans and elevations arrTitle(k) = "Top" arrPoint(k) = Array(0,0,1) arrTitle(k+1) = "Bottom" arrPoint(k+1) = Array(0,0,-1) arrTitle(k+2) = "Front" arrPoint(k+2) = Array(0,-1,0) arrTitle(k+3) = "Back" arrPoint(k+3) = Array( 0,1,0) arrTitle(k+4) = "Left" arrPoint(k+4) = Array(-1,0,0) arrTitle(k+5) = "Right" arrPoint(k+5) = Array(1,0,0) k=k+5 End If If arrMode(1) = True Then ReDim Preserve arrPoint(k+4),arrTitle(k+4),arrSwitch(k+4) 'auxilary orthographic elevation arrSwitch(k) = True arrTitle(k) = "FrontLeft" arrPoint(k) = Array(-1,-1,0) arrTitle(k+1) = "FrontRight" arrPoint(k+1) = Array( 1,-1,0) arrTitle(k+2) = "BackLeft" arrPoint(k+2) = Array(-1, 1,0) arrTitle(k+3) = "BackRight" arrPoint(k+3) = Array( 1, 1,0) k=k+4 End If If arrMode(2) = True Then ReDim Preserve arrPoint(k+4),arrTitle(k+4),arrSwitch(k+4) 'auxilary orthographic top arrSwitch(k) = True arrTitle(k) = "TopFront" arrPoint(k) = Array(0,-1,1) arrTitle(k+1) = "TopBack" arrPoint(k+1) = Array( 0,1,1) arrTitle(k+2) = "TopLeft" arrPoint(k+2) = Array(-1,0,1) arrTitle(k+3) = "TopRight" arrPoint(k+3) = Array( 1,0,1) k=k+4 End If If arrMode(3) = True Then ReDim Preserve arrPoint(k+4),arrTitle(k+4),arrSwitch(k+4) 'auxilary orthographic bottom arrSwitch(k) = True arrTitle(k) = "BottomFront" arrPoint(k) = Array(0,-1,-1) arrTitle(k+1) = "BottomBack" arrPoint(k+1) = Array( 0,1,-1) arrTitle(k+2) = "BottomLeft" arrPoint(k+2) = Array(-1,0,-1) arrTitle(k+3) = "BottomRight" arrPoint(k+3) = Array( 1,0,-1) k=k+4 End If If arrMode(4) = True Then ReDim Preserve arrPoint(k+4),arrTitle(k+4),arrSwitch(k+4) 'axonometric isometric top arrSwitch(k) = True arrTitle(k) = "TopFrontLeft" arrPoint(k) = Array(-1,-1,1) arrTitle(k+1) = "TopFrontRight" arrPoint(k+1) = Array( 1,-1,1) arrTitle(k+2) = "TopBackLeft" arrPoint(k+2) = Array(-1, 1,1) arrTitle(k+3) = "TopBackRight" arrPoint(k+3) = Array( 1, 1,1) k=k+4 End If If arrMode(5) = True Then ReDim Preserve arrPoint(k+4),arrTitle(k+4),arrSwitch(k+4) 'axonometric isometric bottom arrSwitch(k) = True arrTitle(k) = "BottomFrontLeft" arrPoint(k) = Array(-1,-1,-1) arrTitle(k+1) = "BottomFrontRight" arrPoint(k+1) = Array( 1,-1,-1) arrTitle(k+2) = "BottomBackLeft" arrPoint(k+2) = Array(-1, 1,-1) arrTitle(k+3) = "BottomBackRight" arrPoint(k+3) = Array( 1, 1,-1) k=k+4 End If count = k-1 Dim arrOrigin, vect arrOrigin = Array(0,0,0) Call Rhino.Command("-_SetView c t ", False) strView = Rhino.CurrentView() Dim j,m,n,u u=0 Dim obox: obox = Rhino.BoundingBox(arrObjects) Dim i,r,s,t Dim arrLabel Dim invSel Dim arrDrawings(),bbox(), dblLength(), dblHeight(), dblDist ReDim arrDrawings(count),bbox(count), dblLength(count), dblHeight(count) Call Rhino.EnableRedraw (False) If arrBool(0) = True Then If j = 0 And m = 0 And n = 0 Then Call Rhino.SelectObjects(arrObjects) Call Rhino.Command("-_Make2d " ,False) Call Rhino.DeleteObjects(Rhino.SelectedObjects()) Else Call Rhino.Command("-_SetView c t ", False) End If Call Rhino.ViewProjection(strView,1) For i = 0 To count Step 1 Call Rhino.ViewCameraTarget (strView, arrPoint(i), arrOrigin) Call Rhino.UnselectAllObjects() Call Rhino.SelectObjects(arrObjects) Call Rhino.ZoomSelected() Call Rhino.Command("-_Make2d d c _Enter" ,False) arrDrawings(i) = Rhino.SelectedObjects() bbox(i) = Rhino.BoundingBox(arrDrawings(i)) dblLength(i) = Rhino.Distance(bbox(i)(0),bbox(i)(1)) dblHeight(i) = Rhino.Distance(bbox(i)(0),bbox(i)(3)) Call Rhino.UnselectAllObjects() Next r = 0 s = 0 t = 0 For i = 0 To count Step 1 ReDim Preserve arrHeight(s) arrHeight(s) = dblHeight(i) s=s+1 If arrSwitch(i) = True Then t = t+Rhino.max(arrHeight)+3 ReDim arrHeight(0) s = 0 r = 0 End If If r > 0 Then r = dblLength(i)*0.5+dblLength(i-1)*0.5+r End If Call Rhino.MoveObjects(arrDrawings(i),origin,array(r,u+t,0)) Call Rhino.AddText(CStr(arrTitle(i)),array(r,u+t-dblHeight(i)*0.2,0),dblHeight(i)*0.1) r=r+3 If i = count Then t = t+dblHeight(i)*1.5 End If Next End If If arrBool(1) = True Then If isArray(arrObjects) Then Call Rhino.SelectObjects(arrObjects) Else Call Rhino.SelectObject(arrObjects) End If invSel = Rhino.InvertSelectedObjects() If isNull(invSel) Then Else Call Rhino.HideObjects(invSel) End If Call Rhino.UnselectAllObjects() Call Rhino.Command("-_SetView c t ", False) For i = 0 To count Step 1 Call Rhino.ViewCameraTarget (strView, arrPoint(i), arrOrigin) Call Rhino.SelectObjects(arrObjects) Call Rhino.ZoomSelected() Call Rhino.Command("_-Render",False) Call Rhino.Command("_-SaveRenderWindowAs " & GetRenderFileName(name,folder, CStr(arrTitle(i)), "png"),False) Call Rhino.Command("_-CloseRenderWindow",False) Call Rhino.UnselectAllObjects() Next End If Call Rhino.EnableRedraw (True) Call Rhino.Command("-_SetView c t", False) Call Rhino.Command("-_Show _Enter",False) Call Rhino.ZoomExtents() End Function Function GetRenderFileName(name,folder, view, ext) Dim doc, file, temp doc = Rhino.DocumentName temp = "_"& name &"_"& view & "." & ext file = LCase(Replace(doc, ".3dm", temp, 1, -1, 1)) GetRenderFileName = Chr(34) & folder & file & Chr(34) End Function