July 11, 2008

RhinoScript | Redraw Curve




* 커브 그리기 할때, 폐곡선을 그리려고 했는데 실수로 명령을 끝내버리는 실수를 종종하게 된다. 이러한 경우, 커브의 EndPoint를 옮겨 폐곡선을 만들거나 CloseCrv을 사용하게 되면 Periodic 커브가 아닌 폐곡선이 만들어진다.

* 커브 그리기 할때, 필요한 CP 갯수보다 적은 수로 커브를 만들어 InsertKnot, InsertControlPoint를 이용하여 포인트를 추가하게 된다. 그러나 이 경우 원하는 위치에 CP가 놓이지 않게 되거나 MakeUniform 명령을 추가로 사용해야 하는 경우가 있다.


아래는 위 두가지 경우에 사용할수 있는 간단한 라이노 스크립트이다. 사용법은 위 동영상에서 볼 수 있 듯이 -Runscript ( )를 이용하여 아이콘을 만들면 편리하다.


Option Explicit

Sub CurveRedraw()

   Dim strObject,dblDegree,arrPoints,strCmd,arrPoint,i

   strObject= Rhino.GetObject ("Select curve to redraw",4)
   If IsNull (strObject) Then Exit Sub
     If Rhino.IsCurveClosed(strObject) Then
     Rhino.Print "The object is a closed curve."
   Exit Sub
   End If

   arrPoints = Rhino.CurvePoints(strObject)
   dblDegree = Rhino.CurveDegree(strObject)


   Rhino.DeleteObject strObject
     Dim strE
       strE=" "
     If IsArray(arrPoints) Then
     For Each arrPoint In arrPoints
     If i=UBound(arrPoints) Then strE=""
     strCmd=strCmd&"W"&Pt2str(arrPoint)&strE
     Next
   End If
   Rhino.command "Curve Degree="&CStr(dblDegree)&" "&strCmd, False

End Sub

CurveRedraw

No comments: