이번 기사에서는 함수 " subst "에 대해 설명합니다.
AutoLISP에는 목록이라는 여러 데이터를 포함하는 상자가 있습니다.
리스트의 요소(리스트의 내용)를 꺼내거나, 추가해 여러가지 처리를 실시합니다만, subst 는 요소의 치환을 실시 할 수 있는 편리한 함수입니다.
사용 예를 섞어 해설해 가기 때문에 꼭 봐 주세요.
목록의 요소를 검색하는 몇 가지 함수가 있지만 subst는 요소를 대체할 수 있는 귀중한 함수입니다. 도형 정의 데이터를 다시 쓰는 데 자주 사용되며 편집 작업을 자동화하는 데 큰 도움이 됩니다.
subst로 대체하려면 다음 세 가지 인수가 필요합니다. 순서가 바뀌지 않도록 주의해야 합니다.
아래의 리스트를 예로 subst의 동작을 설명합니다. 덧붙여서, 리스트는 요소에 두 개의 요소로 구성된 리스트로 되어 있는 리스트 입니다.
;;;대체 전 리스트
((10 . "aa") (20 . "bb") (20 . "bb"))
선두 요소의 (10 . "aa") 를 (40 . "dd") 로 치환하는 경우를 생각합니다. 해당 인수는 다음과 같습니다.
우선, 치환전의 리스트를 list와 cons를 사용해 작성해, 변수 lst에 격납합니다.
;;;리스트의 첫번째 요소를 대체
(setq lst (list (cons 10 "aa") (cons 20 "bb") (cons 20 "bb")))
(subst (cons 40 "dd") (cons 10 "aa") lst)
치환 후의 요소가 (40 . "dd"), 치환 대상의 요소가 (10 . "aa") 때문에 각각을 인수에 지정해, 마지막에 대상 리스트인 변수 lst 를 기술합니다.
이 경우 대체 후 리스트는 다음과 같습니다.
;;;대체 후 리스트
((40 . "dd") (20 . "bb") (20 . "bb"))
치환 후와 치환 전을 비교하면, 첫번째 요소만 변경되고 있는 것을 알 수 있습니다.
또한 subst는 대상 목록의 해당 요소를 모두 대체 합니다. 그 때문에, 상기의 예로 치환 대상의 요소를 (20 . "bb")로 했을 경우는 2번째뿐만 아니라 3번째의 요소도 치환되기 때문에 주의가 필요합니다.
;;;치환 대상을 (20. "bb")로 한 경우의 치환 후의 리스트
((10 . "aa") (40 . "cc") (40 . "cc"))
subst의 구문과 인수 및 반환값을 글머리 기호로 정리했으므로 참고로 해 주실 수 있으면 다행입니다.
이번 정리
2. LISP의 기초 및 필수 기본 함수 설명과 예제 1부 (0) | 2022.01.24 |
---|---|
1. AutoCAD User로부터 Programmer로 향한 첫 발걸음 (1) | 2022.01.23 |
AutoLISP의 데이터 형식 변환 함수 (0) | 2021.12.25 |
리스트의 요소를 취득하는 함수 nth, last, assoc (0) | 2021.12.25 |
AutoLISP의 도형 이름 함수 (0) | 2021.12.25 |
댓글 영역