이번 기사에서는 AutoLISP의 데이터형 변환 함수에 대해 설명합니다.
AutoLISP는 유형 선언을 필요로 하지 않는 프로그래밍 언어이지만 일부 함수는 인수 유형을 결정합니다. 이러한 함수를 사용하는 경우는 미리 데이터형을 변환해 주는 것으로, 불필요한 프로그램의 기술을 생략하는 것이 가능합니다.
지금까지는 취급할 수 없었던 데이터가 형 변환에 의해 취급할 수 있게 되면 AutoLISP의 스킬 업으로 이어집니다. AutoCAD를 AutoLISP로 효율화한 분은 꼭 봐 주세요.
이번에 소개하는 데이터의 형태 변환을 실시하는 함수가 다음의 6개입니다.
함수 | 설명 |
angtos | 각도를 숫자 문자열로 변환하고 반환 |
ascii | 문자에 해당하는 아스키 코드를 반환합니다. |
chr | 아스키 코드에 해당하는 문자를 반환합니다. |
fix | 숫자의 정수 부분을 반환 |
float | 정수를 실수 형식으로 반환 |
read | 문자열을 기호로 변환하고 반환 |
angtos는 각도를 숫자 문자열로 변환하고 반환하는 함수 입니다. 옵션의 설정에 의해 반환값의 단위와 정밀도를 변경할 수 있습니다. 인수의 각도는 라디안 단위로 처리되므로 주의하십시오.
;각도를 문자열로 변환합니다. (10진법으로 소수점 이하 3자리)
(setq ang 1.5)
(angtos ang 0 3)
⇒ "85.944"
ascii는 인수의 반각 문자에 해당하는 아스키 코드를 반환하는 함수 입니다. 복수의 문자(문자열)를 인수로 했을 경우, 변환되는 것은 선두의 반각 1 문자만입니다.
ASCII(ASCII) 코드는 다음과 같이 정의됩니다.
ASCII 란, 알파벳이나 숫자, 기호등을 수록한 문자 코드의 하나. 가장 기본적인 문자 코드로서 세계적으로 보급되고 있으며, 다른 많은 문자 코드가 ASCII의 확장이 되도록 구현되고 있다. 문자를 7비트의 값(0~127)으로 나타내고, 128문자가 수록되어 있다.
ASCII(아스키 코드)란? - IT 용어 사전 e-Words
아스키 코드를 간단히 말하면 반각 문자 각각에 할당된 정수 로, 정수만으로 문자열을 표현하는 것이 가능합니다. 0~127은 알파벳 등 할당되어 있습니다. 일본어의 경우, 확장 영역인 128~255까지의 범위에는 반각 가타카나나 구두점 등이 한정적으로 할당되어 있습니다.
;문자를 아스키 코드로 변환
(setq str "a")
(ascii str)
⇒ 97
(setq str "autolisp")
(ascii str)
⇒ 97
chr은 앞에서 설명한 아스키 코드에 해당하는 문자를 반환하는 함수 입니다. 0~255의 정수를 지정할 수 있습니다만, 256이상일 때는 256로 나눈 너무가 인수가 되어 대응하는 문자가 돌려주어집니다.
;아스키 코드를 문자로 변환
(setq asc 97)
(chr asc)
⇒ "a"
(setq asc 65)
(chr asc)
⇒ "A"
fix는 인수에 지정된 숫자의 정수 부분을 반환하는 함수 입니다. 인수가 정수일 때는 그 정수가 그대로 돌려주어집니다. 소수점 이하는 잘라내고, 반올림도 하지 않으므로 주의해 주세요.
;계산된 실수를 정수로 변환
(setq a 10.5)
(setq b 2.3)
(fix (* a b))
⇒ 24
float 는 인수의 수치에 소수점 이하를 부가해 실수의 형식으로 돌려주는 함수 입니다. 실수가 인수이면 실수가 그대로 반환됩니다.
;정수를 실수로 변환
(setq a 10)
(float a)
⇒ 10.0
read는 인수 문자열을 기호로 변환하고 반환하는 함수 입니다. 인수에 구분 기호(공백, 개행, 탭, 괄호 등)가 포함되어 있는 경우는 분할된 선두의 캐릭터 라인만 심볼화 됩니다.
기호는 함수에 인수로 전달해도 평가되지 않는 데이터입니다. 변수나 문자열이 아닌 단순한 기호로 취급됩니다. 덧붙여서 심볼은 eval이라는 함수로 강제적으로 평가할 수도 있습니다.
;변수 이름의 문자열을 기호화하고 변수를 강제로 평가합니다.
(setq hako 100)
(eval (read "hako"))
⇒ 100
위의 예에서는 hako라는 기호를 eval로 강제적으로 평가하므로 변수에 저장된 숫자 100이 마지막으로 반환됩니다.
이번은 AutoLISP의 데이터형 변환 함수에 대해 해설해 왔습니다. 함수에 따라서는 인수의 형태가 지정되어 있는 경우가 있으므로 이러한 함수를 조합하는 것으로 프로그램을 단순하게 할 수 있습니다.
함수 | 내용 | 구문 |
angtos | 각도를 숫자 문자열로 변환하고 반환 | (angtos 각도 [단위 [정확도]]) |
ascii | 문자에 해당하는 아스키 코드를 반환합니다. | (ascii 문자) |
chr | 아스키 코드에 해당하는 문자를 반환합니다. | (chr 아스키 코드) |
fix | 숫자의 정수 부분을 반환 | (fix 실수) |
float | 정수를 실수 형식으로 반환 | (float 정수) |
읽기 | 문자열을 기호로 변환하고 반환 | (read 문자열) |
1. AutoCAD User로부터 Programmer로 향한 첫 발걸음 (1) | 2022.01.23 |
---|---|
리스트의 요소를 치환하는 함수 「subst」 (0) | 2021.12.26 |
리스트의 요소를 취득하는 함수 nth, last, assoc (0) | 2021.12.25 |
AutoLISP의 도형 이름 함수 (0) | 2021.12.25 |
AutoLISP 선택 세트 ssget (0) | 2021.12.24 |
댓글 영역