mode
大小写无所谓
;;可以模拟带过滤的entsel
;;选择拾取框内的实体,选择不到就结束
(defun c:test1 ()
(setq ss (ssget ":E:S" '((0 . "line"))))
(command "erase" ss "")
)
;;?
(defun c:test2 ()
(setq ss (ssget ":N" '((0 . "insert"))))
(command "erase" ss "")
)
;;会累加选择的实体同一个块选择两次个数就会乘以2(看命令行)
;;去掉":D"你试试结果(看命令行)
(defun c:test3 ()
(setq ss (ssget ":D" '((0 . "insert"))))
(sslength ss)
)
;;只选择一次自动结束选择
;;用处省了回车
(defun c:test4 ()
(setq ss (ssget ":S" '((0 . "line"))))
(command "erase" ss "")
)
;;会提示有几个在锁定图上 并且不选择在锁定图层的实体(看命令行)
;;去掉":L"你试试结果(看命令行)
(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)
)
;;可以模拟带过滤的entsel
;;选择拾取框内的实体,选择不到就不结束,选择到不右键也不结束注意和":E:S"的区别
(defun c:test8 ()
(setq ss (ssget ":E" '((0 . "insert"))))
(sslength ss)
)
;;自动选择所有的满足条件的实体(好理解)冻结的也可选择到
(defun c:test9 ()
(setq ss (ssget "X" '((0 . "insert"))))
(sslength ss)
)
;;自动选择不包括冻结的满足条件的实体(感谢masterlong)
(defun c:test10 ()
(setq ss (ssget "A" '((0 . "insert"))))
(sslength ss)
)
;;只选择含数字的文本(好理解)
(defun c:test11 ()
(setq ss (ssget '((1 . "*[0-9]*"))))
)
;;只选择含字母的文本(好理解)
(defun c:test12 ()
(setq ss (ssget '((1 . "*[a-A-z-Z]*"))))
)
;;选择半径大于800小于8000的圆
(defun c:test13 ()
(setq ss (ssget '((-4 . "<and")
(0 . "circle")
(-4 . ">")
(40 . 800)
(-4 . "<")
(40 . 8000)
(-4 . "and>")
)
)
)
)
;;选择图层表("图层1" "图层2" "图层3" "图层4" ---------------有很多个图层)内的线(这个要感谢网友eachy,感谢学院派xyp1964进行了优化)
(defun c:test14 ()
(setq la '("1" "2" "3" "4")
ss (ssget
(list
'(0 . "line")
(cons 8
(apply 'strcat (mapcar '(lambda (x) (strcat x ",")) la))
)
)
)
)
)
;;选择经过某点的实体,
(defun :test15 ()
(setq pt (getpoint))
(setq ss (ssget pt))
)
;;选择0层以外的线
(defun c:test16 ()
(setq ss (ssget '((-4 . "<AND")
(0 . "line")
(-4 . "<NOT")
(8 . "0")
(-4 . "NOT>")
(-4 . "AND>")
)
)
)
)
;;选择带扩展数据的实体
(defun c:test17 ()
(setq ss (ssget '((0. "CIRCLE") (-3 ("APPNAME")))))
)
;;窗选择 包含在框内的被选择 相交的不选择和"c"比较一下
;;屏幕外的选择不到
(defun c:test18 ()
(setq pt1 (getpoint))
(setq pt3 (getcorner pt1))
(setq ss (ssget "w" pt1 pt3 '((0 . "insert"))))
;;"wp"后面换成点集 (setq ss(ssget "wp" ptl '((0 . "insert"))))
)
;;框选择 包含在框内的及和框相交的被选择 和"w"比较一下
;;屏幕外的选择不到
(defun c:test19 ()
(setq pt1 (getpoint))
(setq pt3 (getcorner pt1))
(setq ss (ssget "c" pt1 pt3 '((0 . "insert"))))
;;"cp"后面换成点集 (setq ss(ssget "cp" ptl '((0 . "insert"))))
)
;;线相交的线删除(屏幕外的选择不到郁闷所以要用zoom "ob")
(defun c:test20 ()
(setq ptl nil)
(while (setq pt (getpoint))
(setq ptl (cons pt ptl))
)
(setq ss (ssget "f" ptl '((0 . "line"))))
(command "erase" ss "")
)
;;选择不含数字的文本(结合了test11 和test16)
(defun c:test21 ()
(setq ss (ssget '((-4 . "<NOT")
(1 . "*[0-9]*")
(-4 . "NOT>")
)
)
)
)
;;选择不含数字的文本(caoyin提供的)
(defun c:test21-1 ()
(setq ss (ssget '((1 . "~*#*"))))
)
;;只选择不含字母的文本(结合test12和test16)
(defun c:test22 ()
(setq ss (ssget '((-4 . "<NOT")
(1 . "*[a-A-z-Z]*")
(-4 . "NOT>")
)
)
)
)