; 한번의 선택만 허용
; 윈도우와 크로싱은 억제하지 않음.
; 위도우와 크로싱을 억제하기 위해서는 앞에 "+." 가 붙어야 함
(defun c:test1()
(setq ss (ssget ":E:S" '((0 . "line"))))
(command "erase" ss "")
)
; 블럭 내부 엔터티를 선택
; 즉 nentsel 을 여러개 하는 것과 같음
(defun c:test2()
(setq ss (ssget ":N" '((0 . "insert"))))
(command "erase" ss "")
)
; 중복 선택 허용
; 즉, 동일한 객체를 두 번 선택해도 선택 셋에 모두 포함됨
(defun c:test3()
(setq ss (ssget ":D" '((0 . "insert"))))
(sslength ss) ; 동일한 블럭을 4번 클릭하면, 선택갯수가 4로 표기됨
)
; 한번 선택으로 종료
; 선택의 방법은 피크, 윈도우, 크로싱이 모두 가능
; 즉, 다중 선택을 허용하나, 이 역시 한번의 선택만 허용
(defun c:test4()
(setq ss (ssget ":S" '((0 . "line"))))
(command "erase" ss "")
)
; 잠긴 객체는 선택에서 제외
(defun c:test5()
(setq ss (ssget ":L" '((0 . "insert"))))
(sslength ss)
)
; 이전 선택 객체 재 선택
(defun c:test6()
(setq ss (ssget "P" '((0 . "insert"))))
(sslength ss)
)
; 단일 선택을 위한 첨가어. 아래 문구와 조합을 이루어 완성
(defun c:test7() (setq ss (ssget "+." '((0 . "insert")))) (sslength ss) )
; 윈도우와 크로싱 억제, 피크로만 선택
; 그러나, 여러번 클릭해서 다중선택은 가능
(defun c:test71()
(setq ss (ssget "+.:E" '((0 . "insert"))))
(sslength ss)
)
; ":E:S" 와 동일하나, 하나의 객체, 한번의 선택만 가능
; 즉, 윈도우와 크로싱이 억제됨
(defun c:test72()
(setq ss (ssget "+.:S" '((0 . "insert"))))
(sslength ss)
)
(defun c:tt73()
(setq ss (ssget "+.:E:S" '((0 . "insert"))))
(sslength ss)
)
; "+.:E" 와 비슷해 보이나, 윈도우와 크로싱을 억제하지 않음
; 다중선택 가능
(defun c:test8()
(setq ss (ssget ":E" '((0 . "insert"))))
(sslength ss)
)
즉, 정리하면 다음과 같다.
윈도우, 크로싱 허용 |
여러 객체 선택 허용 |
여러번 선택 허용 |
샘플명령어 | |
:E | o | o | o | test8 |
:S | o | o | x | test4 |
+.:E | x | o | x | test71 |
+.:S | x | x | x | test72 |
:E:S | o | o | x | test1 |
+.:E:S | x | x | x | test73 |
; 도면상의 모든 객체 선택, 얼려져 있는 개체도 선택
(defun c:test9()
(setq ss (ssget "X" '((0 . "insert"))))
(sslength ss)
)
; x 와 같으나, 얼려진 객체 제외
(defun c:test10()
(setq ss (ssget "A" '((0 . "insert"))))
(sslength ss)
)
; 내용에 숫자가 포함된 문자를 선택
(defun c:test11()
(setq ss (ssget '((1 . "*[0-9]*"))))
)
; 내용에 숫자가 포함된 문자를 선택 (위와 기능이 같음)
(defun c:test11()
(setq ss (ssget '((1 . "*#*"))))
)
; 내용이 숫자로만 이루어진 문자를 선택
(defun c:test12() (setq ss (ssget '((0 . "text,mtext") (1 . "~*[~.0-9]*" )))) )
; 내용에 숫자가 포함되지 않은 문자만 선택
(defun c:test13()
(setq ss
(ssget
'((-4 . "<NOT")
(1 . "*[0-9]*")
(-4 . "NOT>"))
)
)
)
;내용에 숫자가 포함되지 않은 문자만 선택 (위와 기능이 같음)
(defun c:test13()
(setq ss(ssget '((1 . "~*#*"))))
)
;내용에 영문자가 포함된 문자만 선택
(defun c:test14()
(setq ss (ssget '((1 . "*[a-A-z-Z]*"))))
)
;내용이 영문자로만 되어 있는 문자만 선택
(defun c:test15()
(setq ss (ssget '((0 . "text,mtext") (1 . "~*[~a-A-z-Z]*" )))))
;내용에 영문자가 포함되어 있지 않은 문자만 선택
(defun c:test16()
(setq ss (ssget '((-4 . "<NOT")
(1 . "*[a-A-z-Z]*")
(-4 . "NOT>")))
)
)
; 내용에 영문자가 포함되어 있지 않은 문자만 선택 (위와 기능이 같음)
(defun c:test16()
(setq ss (ssget '((1 . "~*[a-A-z-Z]*"))))
)
; 지름이 800보다 크고, 8000보다 작은 원만 선택
(defun c:test17()
(setq ss (ssget '((-4 . "<and")
(0 . "circle")
(-4 . ">")(40 . 800)
(-4 . "<")(40 . 8000)
(-4 . "and>")
)
)
))
; 켜가 1,2,3,4 인 선 객체만 선택
(defun c:test18()
(setq la '("1" "2" "3" "4")
ss (ssget (list '(0 . "line") (cons 8 (apply 'strcat (mapcar '(lambda (x) (strcat x ",")) la)))))
)
)
; 단일 점으로 찍힌 객체만 선택
(defun c:test19()
(setq pt (getpoint))
(setq ss (ssget “c” pt pt))
)
; 통상적인 두점으로 선택하는 방식 (윈도우)
(defun c:test191()
(setq pt (getpoint))
(setq pt1 (getpoint))
(setq ss (ssget “W” pt pt1))
)
; 켜가 0이 아닌 선만 선택
(defun c:test20()
(setq ss (ssget '((-4 . "<AND")
(0 . "line")
(-4 . "<NOT")
(8 . "0")
(-4 . "NOT>")
(-4 . "AND>"))
)
)
)
; 켜가 0이 아닌 선만 선택 (위와 기능이 같음)
(defun c:test21()
(setq ss (ssget '((0 . "line")(8 . "~0"))))
)
; 켜이름에 영문자가 없는 선만 선택
(defun c:test22()
(setq ss (ssget '((0 . "line")(8 . "~*[a-A-z-Z]*"))))
)
; 191과 같으나, 영역 윈도우의 형상이 눈에 보임 (윈도우)
(defun c:test23()
(setq pt1 (getpoint))
(setq pt3 (getcorner pt1))
(setq ss(ssget "w" pt1 pt3 '((0 . "insert")))
)
; 점을 리스트로 만들어서 "wp" 로 선택해도 같은 결과임...
(setq ss(ssget "wp" ptl '((0 . "insert")))))
; 위와 같으나, 크로싱
(defun c:test24()
(setq pt1 (getpoint))
(setq pt3 (getcorner pt1))
(setq ss(ssget "c" pt1 pt3 '((0 . "insert")))
)
; 점을 리스트로 만들어서 "cp" 로 선택해도 같은 결과임...
(setq ss (ssget "cp" ptl '((0 . "insert")))))
; 지나간 점으로 이루어진 선에 걸치는 직선 선택
(defun c:test25() (setq ptl nil) (while (setq pt (getpoint)) (setq ptl (cons pt ptl)) ) (setq ss (ssget "f" ptl '((0 . "line")))) (command "erase" ss "") )
'캐드리습' 카테고리의 다른 글
도곽블럭_선택하여_선축척변경 (0) | 2023.06.27 |
---|---|
문자 또는 숫자 자동 증가 (0) | 2023.06.27 |
중심선 리습 (0) | 2023.02.15 |
멀티 회전복사 리습 (0) | 2023.02.14 |
일정간격 다중 복사 리습 (0) | 2023.02.14 |