텍스트를 지오메트리로 변환하는 방법
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)"