- 积分
- 4387
- 明经币
- 个
- 注册时间
- 2005-4-2
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 露水2 于 2012-3-26 21:43 编辑
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]*"))))
)
;只选择含数字的文本( 同上)(感谢caoyin提供)
(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>"))
)))
;选择不含数字的文本(同上)(caoyin 提供的)
(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" ---------------有很多个图层)内的线(这个要感谢网友eachy,感谢学院派xyp1964进行了优化)
(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))
)
;选择0层以外的线
(defun c:test20()
(setq ss (ssget '((-4 . "<AND")
(0 . "line")
(-4 . "<NOT")
(8 . "0")
(-4 . "NOT>")
(-4 . "AND>"))
)))
;选择0层以外的线(同上)(感谢caoyin提供)
(defun c:test20()
(setq ss (ssget '((0 . "line")(8 . "~0"))))
)
;选择图层名不含字母以外的线(根据caoyin提供几个实例进行了重新组合还可以组合出来很多)
(defun c:test21()
(setq ss (ssget '((0 . "line")(8 . "~*[a-A-z-Z]*"))))
)
;选择带扩展数据的实体
(defun c:test22()
(setq ss (ssget '((0."CIRCLE") (-3 ("APPNAME")))))
)
;窗选择 包含在框内的被选择 相交的不选择和"c"比较一下
;屏幕外的选择不到
(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"))))
)
;框选择 包含在框内的及和框相交的被选择 和"w"比较一下
;屏幕外的选择不到
(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"))))
)
;线相交的线删除(屏幕外的选择不到郁闷所以要用zoom "ob")
(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 0)和点(1000 1000)形成的矩形内的实体(在屏幕外面的也可以),(感谢masterlong)
(defun c:test26()
(setq pt1 '(0 0)) ;窗口左下角点
(setq pt3 '(1000 1000)) ;窗口右上角点
(setq ss (ssget "x" (list
'(-4 . "<and")
'(0 . "insert")
'(-4 . ">,>,*")
(cons 10 pt1)
'(-4 . "<,<,*")
(cons 10 pt3)
'(-4 . "and>")
)))
(command "erase" ss "")
)
其他一些 慢慢再添加
|
评分
-
查看全部评分
|