以下资料来是互联网.
- (setq ss (ssget ":S" '((0 . "LINE"))));只选取一次直线(省约回车)
- (setq ss (ssget "X" '((0 . "LINE"))));自动选取直线,包含冻结的直线
- (setq ss (ssget "A" '((0 . "LINE"))));自动选取直线,不包含冻结的直线
- (setq ss (ssget '((1 . "*[0-9]*"))));只选取含数字的文本
- (setq ss (ssget '((1 . "*#*")))) ;只选取含数字的文本
- (setq ss (ssget '((0 . "TEXT") (1 . "~*[~`--9]*"))));只选取数字文本
- (ssget '((0 . "TEXT")(-4 . ")(1 . "*[0-9]*")(-4 . "NOT>"));只选择不是数字的文字
- (ssget '((0 . "TEXT")(1 . "~*#*")));只选择不是数字的文字
- (setq ss (ssget '((0 . "TEXT")(1 . "#,1#,2#,3#,4#,50"))));选取1—50的数字文本
- (SETQ SS (SSGET '((0 . "*text")(1 . "*(*,*)*,*(*,**)**"))));选取含括号的文本
- (setq ss (ssget '((1 . "*[a-A-z-Z]*"))));只选取字母
- (setq ss (ssget '((0 . "~insert")))) ;选取不含块的对象
- (SETQ ss (ssget (list '(0 . "CIRCLE")(cons 40 RR))));按半径的大小选取圆
- (setq ss (ssget ":E:S" '((0 . "line"))));选取拾取框内的直线,选取不到就结束
- (setq ss (ssget ":E" '((0 . "LINE"))));选取拾取框内的直线,选取不到就不结束,直到按右键
- (setq ss (ssget ":N" '((0 . "LINE"))));只有通过窗口、窗交点拾取
- (setq ss (ssget ":D" '((0 . "LINE"))));会累加选取的直线,同一条直线,选取两次个数就会乘以2,3次则3.....
- (setq ss (ssget ":L" '((0 . "LINE"))));提示有几个在锁定图上,选取没有的锁定的直线
- (setq ss (ssget "P" '((0 . "LINE"))));上次的选择集
- (setq ss (ssget '((0 . "line")(8 . "~0"))));选取0层以外的线
- (setq ss (ssget '((0 . "line")(8 . "~*[a-A-z-Z]*"))));选取图层名不含字母以外的线
- (setq ss (ssget '((0."CIRCLE") (-3 ("APPNAME")))));选取带扩展数据的实体(圆)
- ;得到矩形p1 p2点框内的文字,包含在框内的被选取 相交的不选取,屏幕外的选取不到,WP点集
- (setq ss(ssget "w" pt1 pt3 '((0 . "*text"))))
- ;得到矩形p1 p2点框内的文字,包含在框内的及和框相交的被选取,屏幕外的选取不到,CP点集
- (setq ss(ssget "c" pt1 pt3 '((0 . "*text"))))
- ;线相交的线删除(屏幕外的选取不到郁闷所以要用zoom "ob")
- (defun c:XX( / pt ptl ss)
- (setq ptl nil)
- (while (setq pt (getpoint))
- (setq ptl (cons pt ptl))
- )
- (setq ss (ssget "f" ptl '((0 . "line"))))
- (KX-E SS)
- )
- ;选取图层表("CENTER" "DIM" "COOL" "CORE" -------N个图层)内的线
- (setq la '("CENTER" "DIM" "COOL" "CORE")
- ss (ssget (list '(0 . "LINE") (cons 8 (apply 'strcat (mapcar '(lambda (x) (strcat x ",")) la)))))
- )
- ;选取经过某点的实体
- (setq pt (getpoint))
- (setq ss (ssget "C" pt pt))
- ;选取不含数字的文本
- (setq ss (ssget '
- ((-4 . ")
- (0 . "*TEXT")
- (-4 . ")
- (1 . "*[0-9]*")
- (-4 . "NOT>")
- (-4 . "AND>")
- )
- )
- )
- ;只选取不含字母的文本
- (setq ss (ssget '
- ((-4 . ")
- (0 . "*TEXT")
- (-4 . ")
- (1 . "*[a-A-z-Z]*")
- (-4 . "NOT>")
- (-4 . "AND>")
- )
- )
- )
- ;------------------------------------------------------------------------------------------------------------
- ;"图层1" "图层2""图层n中的文本,图层1为层名
- (SETQ SS (ssget "x"
- (list
- '(0 . "TEXT")
- (cons 8 "图层[1-n]")
- )
- )
- )
- ;------------------------------------------------------------------------------------------------------------
- ;选取0层以外的线
- (setq ss
- (ssget '
- ((-4 . ")
- (0 . "line")
- (-4 . ")
- (8 . "0")
- (-4 . "NOT>")
- (-4 . "AND>")
- )
- )
- )
- ;------------------------------------------------------------------------------------------------------------
- ;按颜色号选取对象
- (setq col (KX-Int 7 "" "颜色号" col 1))
- (setq SS (ssget
- (list
- '(-4 . ")
- (cons 62 COL)
- '(-4 . "OR>")
- )
- )
- )
- ;-----------------------------------------------------------------------------------------------------------
- ;选取含KX的文本
- (setq XT (strcat "*" "KX" "*"));KX为文字内容
- (ssget (list
- '(0 . "text")
- (cons 1 XT)
- )
- )
- ;-----------------------------------------------------------------------------------------------------------
- ;判断选取某个区域有没有直线
- (setq SS (ssget "c"
- (polar '(0 0) (* 0.25 pi) 0.5);坐标点
- (polar '(0 0) (* 1.25 pi) 0.5);坐标点
- '((0 . "LINE"))
- )
- )
- ;-----------------------------------------------------------------------------------------------------------
- ;选取颜色不是随层的圆、直线
- (setq SS (ssget "X"
- '((0 . "CIRCLE,LINE")
- (-4 . "/=")(62 . 256);-4 62"面不可以加AND OR
- )
- )
- )
- ;------------------------------------------------------------------------------------------------------------
- ;选取颜色1和2的对象(OR)的用法
- (setq ss (ssget '((-4 . ")
- (62 . 2)
- (62 . 1)
- (-4 . "or>")
- )
- )
- )
- ;--------------------------------------------------------------------------------------------------------------
- ;选取半径大于20小于100的圆
- (setq ss (ssget '
- ((-4 . ")
- (0 . "circle")
- (-4 . ">")(40 . 20);大于20
- (-4 . "<")(40 . 100);小于100
- (-4 . "and>")
- )
- )
- )
- ;--------------------------------------------------------------------------------------------------------------
- ;只选取"文字(包括多行文字)、尺寸、带属性的块
- (setq ss (SSGET '
- ((-4 . ")
- (0 . "*TEXT,DIMENSION")
- (-4 . ")
- (0 . "INSERT")
- (66 . 1)
- (-4 . "AND>")
- (-4 . "OR>")
- )
- )
- )
- ;--------------------------------------------------------------------------------------------------------------
- ;屏幕外的窗口模式选取
- (setq rec_p1 '(0 0)) ;窗口左下角点
- (setq rec_p2 '(1000 1000)) ;窗口右上角点
- (setq filter_list
- (list
- '(0 . "insert")
- '(-4 . ")
- '(-4 . ">,>,*") (cons 10 rec_p1)
- '(-4 . "<,<,*") (cons 10 rec_p2)
- '(-4 . "and>")
- )
- )
- (ssget "x" filter_list)
- ;--------------------------------------------------------------------------------------------------------------
- ;--------------------------------------------------------------------------------------------------------------
- ;一次产生n个不同选取集
- (if (setq ss (ssget)) (setq ss1 (ssget "_p" '((0 . "*TEXT")))));从选择集中分解出文字
- ;空回车得出不同结果的选取集
- (if (setq ss (ssget))
- (setq ss (ssget "_p" flt))
- (setq ss (ssget "_x" flt))
- )
- ;--------------------------------------------------------------------------------------------------------------
- ;;;坐标范围选择,有点类似(ssget "c" p1 p2 filter),但本函数在屏幕外的也可选择
- ;;;测试 (tt (getpoint) (getpoint) '((0 . "insert")))
- (defun tt (p1 p2 filter / minX minY maxX maxY)
- (setq minX (min (car p1) (car p2))
- minY (min (cadr p1) (cadr p2))
- maxX (max (car p1) (car p2))
- maxY (max (cadr p1) (cadr p2))
- )
- (if filter
- (ssget "x"
- (append (list '(-4 . ")
- '(-4 . ">=,>=,*")
- (list 10 minX minY 0)
- '(-4 . "<=,<=,*")
- (list 10 maxX maxY 0)
- )
- (append filter '((-4 . "and>")))
- )
- )
- (ssget "X"
- (list '(-4 . ")
- '(-4 . ">=,>=,*")
- (list 10 minX minY 0)
- '(-4 . "<=,<=,*")
- (list 10 maxX maxY 0)
- '(-4 . "and>")