June 26, 2008

RhinoScript | ExtractMeshes

Curve piping은 RDK를 이용하여 curve를 Pipe 형상으로 빠르게 렌더링 할 수 있는 플러그인이다. Edge softening 또한 각진 polysurface에서 모서리 부분을 작은 필렛이 된것처럼 부드럽게 렌더링해준다.
#curve piping download
http://en.wiki.mcneel.com/default.aspx/McNeel/CurvePiping.html

#SoftenEdge download
>http://en.wiki.mcneel.com/default.aspx/McNeel/EdgeSoftening.html


이 두 커맨드는 빠르게 쉐이딩해볼 수 있어 좋긴한데, 렌더메쉬를 추출하는 커맨드 ExtractPipedCurve, ExtractSoftenedEdgeMesh 가 여러개의 개체에서 사용할 수 없어 불편한 점이 있다.


## 이에 여러 개체에서 메쉬를 추출할 수 있는 간단한 스크립트를 작성하였다.
커맨드처럼 사용하고자 하는 경우 ExtractMeshes.rhp파일을 다운로드하여
사용하기 바란다. 커맨드 이름은 아래와 같다.

ExtractPipedCurves
ExtractSoftenedEdgeMeshes



** 스크립트 소스1 **

두 가지 스크립트 모두 똑같은 방법을 사용한다.

Option Explicit
Sub ExtractPipedCurves()
  '변수선언
   Dim arrObjects, strObject, i,arrTemp, arrMesh
   '여러개의 커브 선택입력
     arrObjects = Rhino.GetObjects ("Select curves to extract piped mesh",4)
     ' 예외처리
     If IsNull(arrObjects) Then Exit Sub
       ReDim arrMesh(UBound(arrObjects))
       i=0
       ' 빠른실행을 위한 화면 정지
       Rhino.EnableRedraw False
       ' 각 개체 별 커맨드 실행
       For Each strObject In arrObjects
         Rhino.selectObject strObject
         Rhino.command "ExtractPipedCurve ", False
         arrTemp = Rhino.LastCreatedObjects
         arrMesh(i) = arrTemp(0)
         Rhino.UnselectObject strObject
         i=i+1
       Next
     '화면정지 해제
     Rhino.EnableRedraw True
   ' 생성된 개체 선택
   Rhino.SelectObjects arrMesh
End Sub
ExtractPipedCurves



** 스크립트 소스2 **

Option Explicit
Sub ExtractSoftenedEdgeMeshes()
   Dim arrObjects, strObject, i,arrTemp, arrMesh
   arrObjects = Rhino.GetObjects ("Select objects to extract softened edge mesh",8+16)
   If IsNull(arrObjects) Then Exit Sub
     ReDim arrMesh(UBound(arrObjects))
     i=0
     Rhino.EnableRedraw False
     For Each strObject In arrObjects
       Rhino.selectObject strObject
       Rhino.command "ExtractSoftenedEdgeMesh ", False
       arrTemp = Rhino.LastCreatedObjects
       arrMesh(i) = arrTemp(0)
       Rhino.UnselectObject strObject
       i=i+1
     Next
   Rhino.EnableRedraw True
   Rhino.SelectObjects arrMesh
End Sub
ExtractSoftenedEdgeMeshes


*Edge softening을 사용한 경우와 그렇지 않은 경우

No comments: