R&D Data/Code · 2025. 9. 7.

종이모형 설명서 제작용 원 안에 텍스트+번호 생성 라이노 스크립트

Letter+Num in Circle

!-_RunScript (
Option Explicit
'Script written by <>
'Script copyrighted by <>
'Script version v1 14.11.2010

Call Main()
Sub Main()
	Dim arrBod01, arrBod02
	Dim arrArea
	Dim Circle01, Radius01
	
	Dim Number, FontSize, Shift, Text, LongText, Letter, Charact
	Dim Operator
	
	Letter = Rhino.GetString("Begin with A:", "A")
	Number = Rhino.GetReal("Select a number:",1)
	Charact = Asc(Letter)
	
	Radius01 = Rhino.GetReal("Radius of the circle:",2.5)
	
	FontSize = Radius01 * 0.6
	Operator = 0
	
	If Not Rhino.isLayer("Numbers::Parts_Num") Then
		Rhino.AddLayer "Numbers::Parts_Num"
	End If
	If Not Rhino.isLayer("Numbers::Num_Lines") Then
		Rhino.AddLayer "Numbers::Num_Lines"
	End If
	
	Do
		arrBod01 = Rhino.GetPoint("Select first point:")
		If Not isNull(arrBod01) Then

			arrArea = Rhino.WorldXYPlane
			Circle01 = Rhino.AddCircle(arrArea, Radius01)
			Rhino.ObjectColor Circle01, 0
			Rhino.MoveObject Circle01, Rhino.CircleCenterPoint(Circle01), arrBod01

			LongText = Len(Number&Letter)
			Shift = FontSize * 0.75 / 2 * LongText

			arrBod02 = Array (arrBod01(0)-Shift, arrBod01(1)-(FontSize/2), 0)
			Text = Rhino.AddText (Letter&Number, arrBod02, FontSize)
			Rhino.TextObjectStyle Text, 1
			Rhino.ObjectColor Text, 0
			Number = Number + 1
			Letter = Chr(Charact)
				
			Rhino.ObjectLayer Circle01, "Numbers::Num_Lines"
			Rhino.ObjectLayer Text, "Numbers::Parts_Num"				
			
		Else
			Operator = 1
		End If
	Loop Until Operator = 1
	
	Rhino.Print("Finished users")

End Sub
)

 

 

Num+Letter in Circle

!-_RunScript (
Option Explicit
'Script written by <>
'Script copyrighted by <>
'Script version v1 14.11.2010

Call Main()
Sub Main()
	Dim arrBod01, arrBod02
	Dim arrArea
	Dim Circle01, Radius01
	
	Dim Number, FontSize, Shift, Text, LongText, Letter, Charact
	Dim Operator
	
	Number = Rhino.GetReal("Select a number:",1)
	Letter = Rhino.GetString("Begin with a:", "a")
	Charact = Asc(Letter)
	
	Radius01 = Rhino.GetReal("Radius of the circle:",2.5)
	
	FontSize = Radius01 * 0.6
	Operator = 0
	
	If Not Rhino.isLayer("Numbers::Parts_Num") Then
		Rhino.AddLayer "Numbers::Parts_Num"
	End If
	If Not Rhino.isLayer("Numbers::Num_Lines") Then
		Rhino.AddLayer "Numbers::Num_Lines"
	End If
	
	Do
		arrBod01 = Rhino.GetPoint("Select first point:")
		If Not isNull(arrBod01) Then

			arrArea = Rhino.WorldXYPlane
			Circle01 = Rhino.AddCircle(arrArea, Radius01)
			Rhino.ObjectColor Circle01, 0
			Rhino.MoveObject Circle01, Rhino.CircleCenterPoint(Circle01), arrBod01

			LongText = Len(Number&Letter)
			Shift = FontSize * 0.75 / 2 * LongText

			arrBod02 = Array (arrBod01(0)-Shift, arrBod01(1)-(FontSize/2), 0)
			Text = Rhino.AddText (Number&Letter, arrBod02, FontSize)
			Rhino.TextObjectStyle Text, 1
			Rhino.ObjectColor Text, 0
			Charact = Charact + 1
			Letter = Chr(Charact)
				
			Rhino.ObjectLayer Circle01, "Numbers::Num_Lines"
			Rhino.ObjectLayer Text, "Numbers::Parts_Num"				
			
		Else
			Operator = 1
		End If
	Loop Until Operator = 1
	
	Rhino.Print("Finished users")

End Sub
)