이전 포스팅에서 객체를 선택하고 검색하는 다양한 함수를 살펴보았습니다. 객체를 선택하는 함수에 따라 도면 요소 이름, 선택 세트를 확인할 수 있었는데요. 오늘은 선택 세트에 도면 요소를 추가(ssadd), 삭제(ssdel), 검색(ssmemb)하는 선택 세트 편집 함수에 대해서 살펴보겠습니다.
오토캐드(AUTO CAD) 리습(Lisp) 속성 관련 함수 ENTGET SSNAME SSLENGTH
오토캐드(AUTO CAD) 리습(Lisp) 선택 함수 SSGET ENTSEL
1. 선택 세트에 도면 요소 추가- SSADD
AutoCAD에서 SSGET 함수를 사용하여 객체를 선택하면, 선택 세트(Selection Set)가 생성됩니다. 선택 세트에는 0번부터 번호순으로 선택된 객체가 포함되는데요. SSADD 함수는 기존 선택 세트에 도형 이름(도면 요소 이름)을 추가하거나 빈 선택 세트를 만들 수 있습니다. 빈 선택 세트는 활용 방법이 다양해 기억해 두시면 유용하게 사용할 수 있습니다.
도형 이름을 지정하지 않으면 빈 선택 세트가 생성되며, ssadd 함수로 추가된 도면 요소는 기존의 선택 세트에 포함됩니다. 참고로 Entsel로 객체를 선택하면 도면 요소 이름과 선택 좌표를 반환하는데요. 만약 entsel로 선택한 도면 요소를 추가하려면 (setq ss(car(entsel)))과 같이 선택 좌표를 제외한 도면 요소 이름이 포함된 변수를 사용해야 합니다.
(ssadd “도면 요소” “선택 세트”)
<ssadd 예시>
(setq ss (ssadd)) ;빈 선택 세트를 생성하여 ss 변수에 저장
(command "circle" (list 0 0) "D" 10) ; 원 생성
(ssadd (entlast) ss) ; 마지막에 생성한 객체를 선택 세트에 추가
(sslength ss) ; 선택 세트의 도면 요소 개수 확인
2. 선택 세트에서 도면 요소 제거 – SSDEL
SSDEL 함수는 선택 세트에 포함된 도형 이름(도면 요소 이름)을 제거할 수 있습니다. 다만 선택 세트(Selection Set)에 있는 도면 요소 리스트에서만 삭제되어 객체 자체는 삭제되지 않습니다.
SSDEL 함수를 실행하면 지정한 도면 요소를 제외한 나머지 도면 요소가 기존 선택 세트에 남게 됩니다. (도면 요소가 1개일 땐 빈 선택 세트가 생성될 수 있음)
(ssdel “도면 요소” “선택 세트”)
(command "circle" (list 0 0) "D" 10) ; 원 생성
(setq ss (ssadd (entlast))) ; 마지막에 생성된 객체를 선택 세트에 추가
(sslength ss) ; 선택 세트의 객체 수량 확인
(ssdel (entlast) ss) ; 선택 세트에서 도면 요소 삭제
(sslength ss) ; 선택 세트의 객체 수량 확인
3. 선택 세트에서 검색 – SSMEMB
SSMEMB 함수는 선택 세트 내에 지정한 도면 요소가 있는지 확인합니다. 선택 세트에 지정한 도면 요소가 포함되어 있다면, 도면 요소 이름을 반환합니다. 선택 세트에 포함되지 않은 도면 요소 이름은 nil을 반환합니다.
(ssmemb “도면 요소” “선택 세트”)
(command "circle" (list 0 0) "D" 10) ; 원 생성
(setq ss1(entlast)) ; 생성 객체를 ss1 변수로 지정
(setq ss (ssget "X")) ; 모든 객체를 선택하여 선택 세트 생성
(command "circle" (list 100 100) "D" 10) ; 원 생성
(setq ss2(entlast)) ; 생성 객체를 ss2 변수로 지정
(ssmemb ss1 ss) ; 선택 세트에서 ss1 검색
(ssmemb ss2 ss) ; 선택 세트에서 ss2 검색
4. 선택 세트 함수 정리
선택 세트(Selection Set)는 객체를 하나의 그룹으로 정의합니다. 선택 세트 안에는 도면 요소 이름이라는 라벨이 순서에 맞게 저장되어 있습니다. 선택 세트 관련 함수를 간단히 정리하겠습니다.
① ssget 선택한 도면 요소를 선택 세트로 작성
② ssadd 기존 선택 세트에 도형 이름을 추가 및 빈 선택 세트 작성
③ ssdel 선택 세트로부터 지정한 도면 요소를 제거(객체는 제거되지 않음)
④ ssname 선택 세트에서 지정한 번호의 도면 요소를 확인
⑤ sslength 선택 세트의 도면 요소 개수를 확인
⑥ ssmemb 선택 세트에서 도면 요소를 검색