Site Tools


원을 사용하여 커브 트림

RhinoScript

Summary: RhinoScript를 사용하여 원으로 닫힌 커브를 트림 실행하는 방법입니다.

질문

원으로 교차된 닫힌 스플라인이 있습니다. 닫힌 스플라인에 원으로 교차된 부분을 트림 실행하여 개구부를 만들려고 합니다. RhinoScript'의 TrimCurve 메서드로 해보려고 했지만 성공하지 못했습니다. 어떻게 하면 됩니까?

답변

TrimCurve에서, 입력 커브가 닫힌 커브인 경우에는 트림 실행 간격이 줄어들어야 합니다.

예:

 Option Explicit
 
 Sub CircleTrimmer
 
   ' Local variable declarations
   Dim curve, circle, ccx, ccx_t(1), interval
 
   ' Select closed curve to split
   curve = Rhino.GetObject("Select closed curve to split", 4)
   If IsNull(curve) Then Exit Sub
   If Not Rhino.IsCurveClosed(curve) Then Exit Sub
 
   ' Select circle to split with    
   circle = Rhino.GetObject("Select circle to split with", 4)
   If IsNull(circle) Then Exit Sub
   If Not Rhino.IsCircle(circle) Then Exit Sub
 
   ' Intersect the two curves
   ccx = Rhino.CurveCurveIntersection(curve, circle)
   If IsNull(ccx) Then
     Rhino.Print "Curve and circle do not intersect"
     Exit Sub
   End If
 
   ' Make sure there are only two intersection events
   If UBound(ccx) <> 1 Then
     Rhino.Print "Unable to split curve"
     Exit Sub
   End If
 
   ' Get two intersection parameters on the curve
   ccx_t(0) = ccx(0,5)
   ccx_t(1) = ccx(1,5)
 
   ' If the input curve is closed and the interval is decreasing,
   ' then the portion of the curve across the start and end of the
   ' curve is returned.
   If ccx_t(0) < ccx_t(1) Then
     interval = Array(ccx_t(1), ccx_t(0))
   Else
     interval = Array(ccx_t(0), ccx_t(1))
   End If
 
   ' Trim the curve
   Rhino.TrimCurve curve, interval
 
 End Sub
ko/developer/scriptsamples/circletrimmer.txt · Last modified: 2015/09/14 (external edit)