原标题:ssget 详解

autoLisp 语言编程用 ssget 函数实现程序与 CAD 图形的实时交互,使得杂乱纷繁的图形对象在 ssget 面前变得规规矩矩。充分体现了 autoLisp 相对其他开发语言的优点(比如 vba)。

然而强大的 ssget 很多新手感到茫然,各种流行的 autoLisp 语言开发教程对 ssget 的描述都不够全面,本文作者进行了一些测试,并试图总结 ssget 的用法,不足之处请读者指正。

语法:

(ssget [sel-method] [pt1 [pt2]] [pt-list] [filter-list])

ssget 的参数均为可选参数,需要注意的是可选参数之间的组合条件。

以下语法表示中 尖括号代表必选,[parameter]方括号代表可选。

一、选择集的窗口参数

[sel-method]字符串类型,不区分大小写,指定一个选择方法。

[pt1 [pt2]]表类型,由三个数字的点参数表,表示 xyz 坐标,也可以是仅包括xy 的坐标。

[pt-list]表类型,由点参数表组成的表。

C 窗交(反选)

如果指定了该参数,则必须跟一对点创建一个矩形窗口,与矩形窗口相交的对象均被加入选择集。注意:此模式仅选择绘图区域内的可见对象,而且线框选择模式均有这个限制。

参数语法: (ssget "c" [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" [filter-list])

注意: 字符串参数前加下划线 “_” 可以使 模式字符串在非英文版的 AutoCAD 里安全运行,建议写上。中文版 AutoCAD 与英文版编码兼容,添加下划线前缀不是必须的。

CP 圈交(多边形反选)

如果指定了该参数,则必须用构成多边形的点表响应,与多边形相交的对象被加入选择集。仅选绘图区可见对象。

参数语法: (ssget "CP" [filter-list])

此时点参数 [pt1] [pt2] 不能出现,而且,CP 参数依赖 的顺序来构成一个多边形。

例如四个点按顺序连接为一个8字型,而不是一个矩形,ssget 将返回一个空选择集,即使对象与窗口相交。

如果参数为少于3个点的表,也将返回一个 nil。

示例:

(setq pt1 (getpoint "Piont1:"))

(setq pt2 (getpoint "Piont2:"))

(setq pt3 (getpoint "Piont3:"))

(setq pt4 (getpoint "Piont4:"))

(setq ss (ssget "_cp" (list pt1 pt2 pt4 pt4)))

WP 圈围(多边形正选)

与 CP 参数语法及用法类似,但只有被多边形窗口包围的对象才会被加入选择集。仅选绘图区可见对象。

参数语法: (ssget "wp" [filter-list])

F 栏选

将参数点表连接为一条折线,与折线相交的对象被加入选择集。仅选绘图区可见对象。

参数语法: (ssget "f" [filter-list])

pt-list 最少由2个点组成表,CP/WP 参数最少需要 3 个点。

示例:选择穿越(0 10) (100 100)两点的连线的所有可见文字

(ssget "_f" '((0 10)(100 100)) '((0 . "text")))

P 前一批创建的图形

包括 CAD 命令或 LISP 程序创建的图形对象。

参数语法: (ssget "p" [filter-list])

P 参数不能和 [pt1 [pt2]] [pt-list] 任何一个点参数组合,否则将返回一个错误,有的 CAD 版本会返回 nil

当分解(EXPLODE)一个 CAD 图形时,p 方法特别有用,可以一次性建立分解后的所有对象选择集。

L 最后一个创建的对象

包括 CAD 命令或 LISP 程序创建的对象,注意和 P 参数的区别。

参数语法:(ssget "l" [filter-list])

在获取最后一个对象的图元名时,与 entlast 作用相同,但是后者不能提供直接过滤功能,而且返回值不同。

(ssname (ssget "L") 0) == (entlast)

I 隐含窗口选择

参数语法: (ssget “i” [filter-list])

CAD 命令有两种执行方式,第一种先命令后选择,第二种先选择后命令。所以在 Lisp 中也允许先选择后命令,

而且这方式可以通过 系统变量 pickfirst 来关闭(值为 0),此时 I 参数失效,(ssget “i”) 将返回 nil。

选择对象后,选择集呈现亮显状态,可以用 (sssetfirst nil) 取消选择集的亮显。

X 整个文件

在当前打开的CAD文件中搜索所有对象,包括关闭、冻结图层中的图元和可见屏幕外的图元对象,不分大小写。

参数语法:(ssget "x" [filter-list])

X 用法与 A 用法等价,(ssget “A”) 也是选择所有对象,但是 A 模式不包括冻结图层上的对象。

:E 拾取框

用鼠标拾取框选择对象,此时 ssget 将不再拉出一个矩形窗口,直到点右键结束选择。此模式可与 “+” 组合使用。

参数语法:(ssget ":E" [filter-list])

与 :E 对应的 :N 参数为只能拉出一个矩形窗口选择,而不能通过点选拾取对象。

:S 仅允许单一选择集

使用:s参数时,ssget 将点选对象一次就会结束,无论是否选中对象,未选中则返回 nil,可节省一次回车确认。

参数语法:(ssget ":S" [filter-list])

说明: “:S” 参数和 “:E” 可以同时使用,例如:(ssget "_:S:E"),此时 ssget 与 entsel 作用相同,但是返回值不同。

: D 重复选择

允许同一个对象多次加入选择集,每选择一次,则加入一次。

参数语法:(ssget ":D" [filter-list])

例如:画两条直线,然后运行代码(setq ss (ssget ":D")),框选3次直线后。(sslength ss)返回 6

:L 不选择锁定图层对象

注意: L、:L、-L 的参数是不同的。

参数语法:(ssget ":L" [filter-list])

ssget 默认选择所有图层对象,这样在程序中需判断图层是否锁定,才能编辑,否则 lisp 代码将返回错误。

其他

其他方法还有A :A -A _:V _:U _:R -M -P :P -G -L :?等参数以及组合用法,有兴趣的朋友可以测试。

使用 AutoCAD 命令 select 然后用 “?” 响应对象选择,就会出现选择提示符如下:

需要点或窗口(W)/上一个(L)/窗交(C)/框(BOX)/全部(ALL)/栏选(F)/圈围(WP)/圈交(CP)/编组(G)/添加(A)/删除(R)/多个(M )/前一个(P)/放弃(U)/自动(AU)/单个(SI)/子对象(SU)/对象(O)

命令行里提示的参数与 ssget 基本兼容。例如:在使用 “G” 作为 ssget 的模式字符串时,没有参数将编组名称传递给 ssget,因此该参数虽然有效,但无法返回期望结果,不知道新版的 CAD 会不会改进。

ssget 带点参数调用时,可能会受到自动捕捉的影响,一般先将系统变量 osmode 置零。

一些系统变量可能会影响模式字符串的使用,例如 pickadd, pickauto, pickdrag, pickfirst, pickstyle 等。

ssget 点参数包围的矩形、多边形应在当前绘图区域内可见,否则 ssget 仅返回可见区域内的对象选择集。

创建选择集会消耗 AutoCAD 的临时文件存储区,所以 AutoLISP 不允许同时创建多于 128 个选择集。 例如:画一个圆,然后执行以下代码: (repeat 130 (setq a (cons (ssget "l") a))) 这段程序循环了 130 次,AutoCAD提示 “错误: 超出选择集数量的最大范围”,如果继续调用 (ssget) 将返回 nil;此时,只有清空选择集变量 (setq a nil) 才能继续调用 ssget。

ssget 选择时没有自定义提示,如果特别需要可用第三方函数,比如飞诗的: Fsxm-ssget

责任编辑:

lisp ssget 浩辰_ssget 详解相关推荐

  1. lisp ssget 浩辰_AutoCAD和浩辰CAD,gCAD都可以用的lisp

    ;000fff;日期:2016-01-01;文件名:mylisp20160101.lsp.;--------------------;FFF来进行指令提示.(defun c:FFF()(princ & ...

  2. cad lisp 示坡线_示坡线画法详解

    我先来解决一下示坡线的问题,有两种方法: 1.方法一:采用定距等分命令来绘制示坡线,如下图所示: 我将以一个对象按一条spline曲线等距排列来进行说明定距等分命令的使用: (1)首先将你要排列的对象 ...

  3. lisp不是函授型语言_lisp函数大全详解

    lisp函数大全详解 AutoLISP提供了大量的预定义函数.若将函数名(大小写都可)作为表中的第一个元素函数变元(若有的话)作为表中后面的元素,就可以调用那个函数.本章按字母顺序列出AutoLISP ...

  4. 亿信华辰:一文详解医疗机构数据治理六大核心环节|推荐收藏

    近几年来,医疗机构的数字化进程明显加快,机构内的信息系统越来越多.电子病历不断普及.各方面业务的数字化基本实现--与之相伴随而来的,是海量待挖掘应用的数据. 艾瑞咨询发布的<2022年中国医疗信 ...

  5. CAD手机看图软件中多线段编辑详解

    很多人在使用CAD手机看图软件查看CAD图纸的过程中,有些时候需要对图纸中的多线段进行简单的编辑,这个时候该怎么操作呢?下面以浩辰CAD看图王手机版来给大家详细介绍一下CAD手机看图软件中多线段编辑的 ...

  6. 今晚8点直播 | 详解聊天机器人落地及进阶实战

    近年来,聊天机器人技术及产品得到了快速的发展.聊天机器人作为人工智能技术的杀手级应用,发展得如火如荼,各种智能硬件层出不穷. 本次公开课中,AI科技大本营联合电子工业出版社博文视点邀请到上海瓦歌智能科 ...

  7. 重磅直播|慕尼黑工业大学博士详解室内SLAM中的几何约束

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间,对3D视觉领域相关知识点进行讲解,并在微 ...

  8. 重磅直播|中科慧眼崔峰博士详解深度相机原理及其应用

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间,对3D视觉领域相关知识点进行讲解,并在微 ...

  9. 悟道·文澜详解:目前最大的中文多模态通用预训练模型

    近年来,BERT等预训练语言模型在多类自然语言处理任务上取得了显著的性能提升,从而极大地改写了研究范式.随着OpenAI超大规模语言模型GPT-3的发布,预训练语言模型在自然语言理解能力上再次被推至新 ...

  10. 独家 | PHM数据竞赛首个中国夺冠团队经验分享(常用模型赛题详解PPT视频)

    清华大数据"赛事经验分享"系列讲座旨在分享国内外大数据领域重要赛事获胜团队及个人的参赛历程及获胜经验,本期,我们邀请到PHM Data Challenge十年竞赛史上首个完全由中国 ...

最新文章

  1. CodeForces 518A - Chewbaсca and Number(思路)
  2. 异常规范之阿里巴巴开发手册中的异常规范讲解
  3. 设计算法时要确保分类讨论的完备性
  4. endnote x9中科大版_文献管理软件Endnote的一些使用经验
  5. ubuntu20.04下安装vmshare tools_Go语言的安装与配置-vscode
  6. mysql5权威指南_MySQL5权威指南(第3版)
  7. mysql数据库的函数_详解数据库_MySQL: mysql函数
  8. MongoDB独特查询
  9. Git官网下载windows版本慢的问题
  10. 如何快速融入一个研发团队?
  11. 为什么项目验收前的总是非常忙乱?
  12. 怎么修改html的空格大小,css设置空格宽度间距样式
  13. 浅谈农批市场的信息化:发展现状、信息化动因和契入方向
  14. 运动目标检测(背景建模)
  15. 荣耀20公测鸿蒙,荣耀 20、30 系列等机型,将开始逐步适配华为鸿蒙系统
  16. 2019写给对象的话_最新写给女朋友的情话短句 一句话形容最好的爱情说说2019
  17. 抖音短视频直播电商企业号IP运营操盘商业计划书方案pdf
  18. selenium.common.exceptions.SessionNotCreatedException浏览器版本不匹配报错
  19. aria2c rpc php,Mac上配置 aria2c 神器
  20. Cognos 11.0快速开发指南

热门文章

  1. 古体字与简体字对照表_中文簡体字与繁体字对照表
  2. Latex排版—(1)基础排版
  3. iOS13.0上适配深色模式
  4. 学习3D建模电脑配置要求
  5. 十二进制转二进制--2018
  6. go——垃圾回收机制(GC)
  7. win10电脑怎么将html网页做成壁纸,win10系统怎么在电脑桌面上创建网页的快捷方式...
  8. git 添加文件覆盖文件, 删除文件
  9. 如何购买阿里云域名教程(域名购买+配置)~
  10. uniapp 点击动画_uni-app animation动画