总结得很好的ssget用法.....如此好文,必须转载.
原文地址: http://blog.csdn.net/yxp_xa/article/details/72229202
ssget 用法详解 by yxp 2017/04/10
ALisp 编程时 ssget 是无处不在的,灵活的选择集构建方式,可以轻松的处理图形,体现了 Lisp 相对其他语言的优点。
然而强大的 ssget 估计很多人都不清楚用法,包括各种教程对 ssget 的描述都不够完善,本文试图总结 ssget 的用法,不足之处请读者指正。
语法:
(ssget [sel-method] [pt1 [pt2]] [pt-list] [filter-list])
ssget 的参数均为可选参数,需要注意的是可选参数之间的组合条件。
以下语法表示中 <parameter>
尖括号代表必选,[parameter]
方括号代表可选。
一、选择集的窗口参数
[sel-method]
字符串类型,不区分大小写,指定一个选择方法。[pt1 [pt2]]
表类型,由三个数字的点参数表,表示 xyz 坐标,也可以是仅包括xy 的坐标。[pt-list]
表类型,由点参数表组成的表。C 窗交(反选)
如果指定了该参数,则必须跟一对点创建一个矩形窗口,与矩形窗口相交的对象均被加入选择集。
参数语法: (ssget "c" <pt1> <pt2> [filter-list])
此时,[pt-list] 参数不能出现,否则 ssget 将会返回一个错误提示:错误的点参数
示例:
(setq pt1 (getpoint "First Pt:"))
(setq pt2 (getpoint "Second Pt:"))
(setq ss (ssget "c" pt1 pt2))
W 窗口(正选)
与 C 参数语法及用法类似,但功能不同,只有在矩形窗口内完整的对象才会被加入选择集。
参数语法: (ssget "w" <pt1> <pt2> [filter-list])
参数前加下划线 "_w"
可以使代码在不同版本的CAD平台下兼容,建议写上。
CP 圈交(多边形反选)
如果指定了该参数,则必须用构成多边形的点表响应,与多边形相交的对象被加入选择集。
参数语法: (ssget "CP" <pt-list> [filter-list])
此时点参数 [pt1] [pt2]
不能出现,而且,CP 参数依赖 <pt-list>
的顺序来构成一个多边形。
例如四个点按顺序连接为一个8字型,而不是一个矩形,ssget 将返回一个空选择集,即使对象与窗口相交。
如果参数为少于3个点的表,也将返回一个 nil
。
示例:
(setq pt1 (getpoint "Piont1:"))
(setq pt2 (getpoint "Piont2:"))
(setq pt3 (getpoint "Piont3:"))
(setq pt4 (getpoint "Piont4:"))
(setq ss (ssget "c" (list pt1 pt2 pt4 pt4)))
WP 圈围(多边形正选)
与 CP 参数语法及用法类似,但只有被多边形窗口包围的对象才会被加入选择集。
参数语法: (ssget "wp" <pt-list> [filter-list])
F 栏选
将参数点表连接为一条折线,与折线相交的对象被加入选择集。
参数语法: (ssget "f" <pt-list> [filter-list])
pt-list 最少由2个点组成表,CP/WP 参数最少需要 3 个点。
P 前一批创建的图形
包括 CAD 命令或 LISP 程序创建的图形对象。
参数语法: (ssget "p" [filter-list])
P 参数不能和 [pt1 [pt2]] [pt-list]
任何一个点参数组合,否则将返回一个错误,有的 CAD 版本会返回 nil
当分解(EXPLODE)一个 CAD 图形时,p 方法特别有用,可以一次性建立分解后的所有对象选择集。
L 最后一个创建的对象
包括 CAD 命令或 LISP 程序创建的