상세 컨텐츠

본문 제목

AutoLISP의 데이터 형식 변환 함수

IT & Programming/LISP 공부

by 그림아이 2021. 12. 25. 08:00

본문

반응형

이번 기사에서는 AutoLISP의 데이터형 변환 함수에 대해 설명합니다.

AutoLISP는 유형 선언을 필요로 하지 않는 프로그래밍 언어이지만 일부 함수는 인수 유형을 결정합니다. 이러한 함수를 사용하는 경우는 미리 데이터형을 변환해 주는 것으로, 불필요한 프로그램의 기술을 생략하는 것이 가능합니다.

지금까지는 취급할 수 없었던 데이터가 형 변환에 의해 취급할 수 있게 되면 AutoLISP의 스킬 업으로 이어집니다. AutoCAD를 AutoLISP로 효율화한 분은 꼭 봐 주세요.

 

이번에 소개하는 데이터의 형태 변환을 실시하는 함수가 다음의 6개입니다.

함수 설명
angtos 각도를 숫자 문자열로 변환하고 반환
ascii 문자에 해당하는 아스키 코드를 반환합니다.
chr 아스키 코드에 해당하는 문자를 반환합니다.
fix 숫자의 정수 부분을 반환
float 정수를 실수 형식으로 반환
read 문자열을 기호로 변환하고 반환

각도를 숫자 문자열로 변환: angtos

angtos의 특징은?

  1. 각도를 문자열 형식으로 변환할 수 있습니다.
  2. 설정에 의해 반환값의 단위와 정밀도를 변경할 수 있다

angtos는 각도를 숫자 문자열로 변환하고 반환하는 함수 입니다. 옵션의 설정에 의해 반환값의 단위와 정밀도를 변경할 수 있습니다. 인수의 각도는 라디안 단위로 처리되므로 주의하십시오.

angtos의 사용법은?

  • 구문
    (angtos 각도 [단위 [정확도]])
  • 인수
    각도
    문자열로 변환하려는 라디안 단위의 실수를 지정합니다. 음수 값도 지정할 수 있습니다.

    단위
    반환값의 단위를 설정하는 정수를 지정합니다. 선택 사항이며, 이 경우 시스템 변수 AUNITS를 따릅니다. 설정할 수 있는 정수와 단위의 대응은 다음과 같습니다.

    0:십진수(도)
    1:도/분/초
    2:그래디언트
    3:라디안
    4:측량용 단위

    정밀도
    반환값의 소수점 이하의 자리수를 설정하는 정수를 지정합니다. 선택 사항이며, 이 경우 시스템 변수 AUPREC을 따릅니다.
  • 반환 값
    문자열
    설정에 따라 각도 문자열을 반환합니다. 부의 값의 각도를 기술했을 경우는 0~2π의 범위에서 변환됩니다.

    nil
    변환이 실패하면 nil이 리턴됩니다.
;각도를 문자열로 변환합니다. (10진법으로 소수점 이하 3자리)
(setq ang 1.5)
(angtos ang 0 3)
⇒ "85.944"

문자를 아스키 코드로 변환: ascii

ascii의 특징은?

  1. 문자를 아스키 코드(정수)로 변환할 수 있습니다.
  2. 변환되는 것은 선두의 반각 1 문자만

ascii는 인수의 반각 문자에 해당하는 아스키 코드를 반환하는 함수 입니다. 복수의 문자(문자열)를 인수로 했을 경우, 변환되는 것은 선두의 반각 1 문자만입니다.

아스키 코드란 무엇입니까?

ASCII(ASCII) 코드는 다음과 같이 정의됩니다.

ASCII 란, 알파벳이나 숫자, 기호등을 수록한 문자 코드의 하나. 가장 기본적인 문자 코드로서 세계적으로 보급되고 있으며, 다른 많은 문자 코드가 ASCII의 확장이 되도록 구현되고 있다. 문자를 7비트의 값(0~127)으로 나타내고, 128문자가 수록되어 있다.

ASCII(아스키 코드)란? - IT 용어 사전 e-Words

아스키 코드를 간단히 말하면 반각 문자 각각에 할당된 정수 로, 정수만으로 문자열을 표현하는 것이 가능합니다. 0~127은 알파벳 등 할당되어 있습니다. 일본어의 경우, 확장 영역인 128~255까지의 범위에는 반각 가타카나나 구두점 등이 한정적으로 할당되어 있습니다.

ascii의 사용법은?

  • 구문
    (ascii 문자)
  • 인수
    문자
    아스키 코드로 변환할 문자열을 지정합니다. 여러 문자(문자열)를 지정하면 첫 글자가 변환됩니다.
  • 반환값
    정수
    문자에 대응하는 아스키 코드가 돌려주어집니다.
;문자를 아스키 코드로 변환
(setq str "a")
(ascii str)
⇒ 97

(setq str "autolisp")
(ascii str)
⇒ 97

아스키 코드를 문자로 변환: chr

chr의 특징은?

  1. 아스키 코드(정수)를 문자로 변환 가능

chr은 앞에서 설명한 아스키 코드에 해당하는 문자를 반환하는 함수 입니다. 0~255의 정수를 지정할 수 있습니다만, 256이상일 때는 256로 나눈 너무가 인수가 되어 대응하는 문자가 돌려주어집니다.

chr의 사용법은?

  • 구문
    (chr 아스키 코드)
  • 인수
    아스키 코드
    0-255의 아스키 코드(정수)를 지정합니다. 256 이상인 경우는 256으로 나눈 나머지가 인수가 됩니다.
  • 반환 값
    문자
    아스키 코드에 해당하는 문자가 반환됩니다.
;아스키 코드를 문자로 변환
(setq asc 97)
(chr asc)
⇒ "a"

(setq asc 65)
(chr asc)
⇒ "A"

실수를 정수로 변환: fix

fix의 특징은?

  1. 실수(수치)의 정수 부분을 취득할 수 있다

fix는 인수에 지정된 숫자의 정수 부분을 반환하는 함수 입니다. 인수가 정수일 때는 그 정수가 그대로 돌려주어집니다. 소수점 이하는 잘라내고, 반올림도 하지 않으므로 주의해 주세요.

fix의 사용법은?

  • 구문
    (fix 실수)
  • 인수
    실수
    정수 부분을 검색할 실수를 지정합니다.
  • 반환값
    정수
    인수에 기술한 실수의 정수 부분이 돌려주어집니다. 인수가 정수인 경우는 그 정수를 그대로 돌려줍니다.
;계산된 실수를 정수로 변환
(setq a 10.5)
(setq b 2.3)
(fix (* a b))
⇒ 24

정수를 실수로 변환: float

float의 특징은?

  1. 정수(숫자)를 실수로 변환 가능

float 는 인수의 수치에 소수점 이하를 부가해 실수의 형식으로 돌려주는 함수 입니다. 실수가 인수이면 실수가 그대로 반환됩니다.

float의 사용법은?

  • 구문
    (float 정수)
  • 인수
    정수
    실수로 변환할 정수를 지정합니다.
  • 반환값
    실수
    인수의 정수에 소수점 이하를 부가한 실수가 돌려주어집니다. 인수가 실수의 경우는 그 실수를 그대로 돌려줍니다.
;정수를 실수로 변환
(setq a 10)
(float a)
⇒ 10.0

문자열을 기호로 변환: read

read의 특징은?

  1. 문자열을 기호(기호)로 변환할 수 있습니다.

read는 인수 문자열을 기호로 변환하고 반환하는 함수 입니다. 인수에 구분 기호(공백, 개행, 탭, 괄호 등)가 포함되어 있는 경우는 분할된 선두의 캐릭터 라인만 심볼화 됩니다.

상징이란 무엇입니까?

기호는 함수에 인수로 전달해도 평가되지 않는 데이터입니다. 변수나 문자열이 아닌 단순한 기호로 취급됩니다. 덧붙여서 심볼은 eval이라는 함수로 강제적으로 평가할 수도 있습니다.

read의 사용법은?

  • 구문
    (read 문자열)
  • 인수
    문자열
    기호화할 문자열을 지정합니다.
  • 반환값
    심볼
    인수의 캐릭터 라인을 대응하는 데이터에 변환해 돌려줍니다. 구분자(공백, 줄 바꿈, 탭, 괄호 등)가 인수에 포함되어 있으면 분할된 선행 문자열이 변환됩니다. 인수와 변환되는 데이터의 대응은 다음과 같습니다.

    통상의 캐릭터 라인 ⇒ 평가되지 않는 캐릭터 라인(기호)
    수치의 캐릭터 라인 ⇒ 수치
    함수명의 캐릭터 라인 ⇒ 함수
    리스트의 캐릭터 라인 ⇒ 리스트

    nil
    인수가 생략 되고 있는 경우는 nil 가 돌려주어집니다.
;변수 이름의 문자열을 기호화하고 변수를 강제로 평가합니다.
(setq hako 100)
(eval (read "hako"))
⇒ 100

위의 예에서는 hako라는 기호를 eval로 강제적으로 평가하므로 변수에 저장된 숫자 100이 마지막으로 반환됩니다.

요약

이번은 AutoLISP의 데이터형 변환 함수에 대해 해설해 왔습니다. 함수에 따라서는 인수의 형태가 지정되어 있는 경우가 있으므로 이러한 함수를 조합하는 것으로 프로그램을 단순하게 할 수 있습니다.

함수 내용 구문
angtos 각도를 숫자 문자열로 변환하고 반환 (angtos 각도 [단위 [정확도]])
ascii 문자에 해당하는 아스키 코드를 반환합니다. (ascii 문자)
chr 아스키 코드에 해당하는 문자를 반환합니다. (chr 아스키 코드)
fix 숫자의 정수 부분을 반환 (fix 실수)
float 정수를 실수 형식으로 반환 (float 정수)
읽기 문자열을 기호로 변환하고 반환 (read 문자열)

프로그래밍

 

728x90
반응형

관련글 더보기

댓글 영역