Site Tools


텍스트를 지오메트리로 변환하는 방법

RhinoScript

Version: Rhino 4.0
Summary: RhinoScript 를 사용하여 텍스트를 커브로 변환하는 방법을 소개합니다.

질문

인그레이브 작업을 하기 위해, 많은 텍스트 요소를 텍스트 개체 (지오메트리) 로 변환시켜야 합니다. 텍스트 요소를 분해하여 텍스트의 아웃라인을 이루는 커브를 얻을 수 있습니다. 단, 텍스트 요소를 단일 스트로크 글꼴로 바꾸면, 각각의 글자/숫자가 자동으로 닫혀 읽을 수가 없게 되는 것이 문제가 됩니다. 단일 스트로크 글꼴을 만들 수 있는 단 한 가지 방법은

Rhino 의 TextObject 명령을 사용하여 지오메트리를 만드는 것입니다. 그러나, 텍스트 요소가 너무 많기 때문에 각각의 텍스트 요소를 지오메트리로 다시 만드는 것은 시간이 너무 오래 걸립니다. 이 과정을 자동화하는 스크립트를 만들 수 있습니까?

답변

다음은 텍스트 요소를 텍스트 개체 (지오메트리) 로 변환시키는 스크립트입니다. 이 샘플 스크립트를 사용하면, 텍스트 요소의 글꼴, 높이, 굵게, 기울임꼴 속성과 동일하게 텍스트 개체 (지오메트리) 가 만들어집니다. 기존 글꼴을 단일 스트로크 글꼴을 사용하도록 덮어쓰려면 다음 줄을 수정하세요:

 font = Rhino.TextObjectFont(obj)

이것을 다음과 같이 변경하세요:

 font = "<단일_스트로크_글꼴_이름>"
 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 ' ConvertTextToGeometry.rvb -- September 2008
 ' If this code works, it was written by Dale Fugier.
 ' If not, I don't know who wrote it.
 ' Works with Rhino 4.0.

 Option Explicit
 
 Sub ConvertTextToGeometry
 
   ' Declare local variables
   Dim obj_list, obj, saved_plane, cmd
   Dim font, height, plane, style, text, bold, italic
 
   ' Select annotation objects
   obj_list = Rhino.GetObjects("Select text to convert to geometry", 512, True, True)
   If Not IsArray(obj_list) Then Exit Sub
 
   ' For speed, turn of screen redrawing
   Call Rhino.EnableRedraw(False)
 
   ' Save the current construction plane
   saved_plane = Rhino.ViewCPlane()
 
   ' Process each selected object
   For Each obj In obj_list
 
     ' Weed out just the text objects
     If Rhino.IsText(obj) Then
 
       ' Acquire the text parameters
       font = Rhino.TextObjectFont(obj)
       height = Rhino.TextObjectHeight(obj)
       plane = Rhino.TextObjectPlane(obj)
       style = Rhino.TextObjectStyle(obj)
       text = Rhino.TextObjectText(obj)
 
       If (style And 1) Then
         bold = "_Yes"
       Else
         bold = "_No"
       End If
 
       If (style And 2) Then
         italic = "_Yes"
       Else
         italic = "_No"
       End If
 
       ' Set the current construction plane
       Call Rhino.ViewCPlane(, plane)
 
       ' Add a new text object (geometry)
       cmd = "_-TextObject "
       cmd = cmd & "_GroupOutput=_Yes "
       cmd = cmd & "_FontName=" & font & " "
       cmd = cmd & "_Italic=" & italic & " "
       cmd = cmd & "_Bold=" & bold & " "
       cmd = cmd & "_Height=" & CStr(height) & " "
       cmd = cmd & "_Output=_Curves "
       cmd = cmd & "_AllowOpenCurves=_Yes "
       cmd = cmd & Chr(34) & text & Chr(34) & " "
       cmd = cmd & "0"
       Call Rhino.Command(cmd, 0)
 
       ' Delete the original object
       Call Rhino.DeleteObject(obj)
 
     End If
   Next
 
   ' Restore the saved construction plane      
   Call Rhino.ViewCPlane(, saved_plane)
 
   ' Enable screen redrawing
   Call Rhino.EnableRedraw(True)
 
 End Sub
 
 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 Rhino.AddStartupScript Rhino.LastLoadedScriptFile
 Rhino.AddAlias "ConvertTextToGeometry", "_NoEcho _-RunScript (ConvertTextToGeometry)"
ko/developer/scriptsamples/converttexttogeometry.txt · Last modified: 2015/09/14 (external edit)