找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1620|回复: 7

[精彩文萃] 函数SSGET的用法

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-1-12 21:01:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
(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>")


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 264个

财富等级: 日进斗金

发表于 2017-1-12 21:04:39 来自手机 | 显示全部楼层
:S 好像也可拉窗口但只选一个
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2017-1-12 21:59:56 | 显示全部楼层

测试了,不是选一个

单选的应该是 (ssget ":E:S")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1336个

财富等级: 财源广进

发表于 2017-2-2 10:37:51 | 显示全部楼层
这个挺好的,收藏了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3031个

财富等级: 富可敌国

发表于 2017-2-2 12:13:50 来自手机 | 显示全部楼层
好东西,收藏了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2021-1-27 16:09:01 | 显示全部楼层
请问楼主 选文本 字节大于4 小于50的表达式 应该怎样写呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2021-1-27 20:36:27 | 显示全部楼层
大佬,这代码好多漏写的"<and" "<or" "<not".........
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 11个

财富等级: 恭喜发财

发表于 2021-1-27 20:41:05 | 显示全部楼层
谢谢楼主,正在学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-3-29 22:46 , Processed in 0.386305 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表