您的当前位置:首页 > 行业 > 正文

【AutoLISP】创建编组(GROUP)的三种方法-快资讯

  • 2023-05-03 15:06:28 来源:哔哩哔哩

AutlLisp版本:Visual LISP 2024 (zh) 

三种方法分别为:

command调用-group命令


(相关资料图)

entmake生成编组

vl扩展函数

一、command调用-group命令

其中:“-group”表示命令行方式调用AutoCAD的group命令,前面的 “_.” 表示调用的是原始定义、未被重定义的命令;“C” 表示创建;“*” 表示组名<字符串>,当为“*”时创建的为未命名组;“组说明”即组说明;#ss 为图元所组成的选择集;"" 为空格,结束图元选择,完成group命令。

注意:通过 (setq #ss (ssget)) 创建的选择集可能包含一些图元外的选择方式信息,该方法支持,无需对选择集进行数据处理。

二、entmake生成编组

2.1 查看编组的图元属性的方法

在AutoLISP中,编组也具有<图元名>,因此entmake可以用来生成编组,不过我们先了解一下如何查看编组的图元属性。先上结果:

解释如下:

通过:

点选某被编组图元,可以看到其图元属性如下:

其中:

这3项组码为编组给图元添加的反应器,因此,其中330组码项为编组的图元名。对其进行(entget)即可获得编组的属性列表:

其中包含:

【70】命名标记:1-未命名,0-已命名

【71】可选择性标记:1-可选择,0-未选择

【340】<图元名>指针,指向组内图元,每个图元一个。

另外,此编组是我在AutoCAD中选择图元后鼠标右键->组创建的,属性列表中包含有字典给编组添加的反应器信息:

继续向上追溯字典的属性列表,如下:

这是"ACAD_GROUP"类的专属字典,是默认存在不需要创建的,可以继续向上追溯330项至绘图文件的命名对象总字典,对应其中的(3 . "ACAD_GROUP") (350 . <图元名: 1fcd82e78d0>)项(总字典是绘图中所有非图形对象的根)。字典的句柄(组码5)为"D",这也就是为什么在DXF文件中,GROUP节中组码330项为"D"。可以看到,该字典中保存了编组的名字,我们所查看的编组<图元名: 1fce6f21e60>的名字为“*A3”。对于字典的专门探讨,请见此文章。

作为一个AutoCAD界面正常创建的未命名编组,会在编组属性列表中组码(70 . 1)且在字典属性列表组码 (3 . “*A#”)(350 . <图元名>)。但这只是AutoCAD程序的规范,不是绝对的,下面采用AutoLISP中的entmake方式生成的编组,此处就有所不同。

2.2  entmake生成编组的方法

该方法基于前面对编组属性列表的探讨,构造相同的属性列表。这里示例一个函数,可将一个选择集中所有图元组合为一个编组:

属性列表中包含组码0、100、300、70、71项,然后每个图元追加一个(340 . <图元名>)项。通过entmake属性列表,即可创建编组。

通过(entget)获得该方式创建编组的属性:

其中并不含有上一小节中所示的、"ACAD_GROUP"字典所赋予的组码102、330项,同时"ACAD_GROUP"字典中也未添加该编组的名称项,且在AutoCAD的"CLASSICGROUP"界面也找不到该编组,但是该编组在AutoCAD中事实上已经成功建立,是可以选定的、可以操作的。这说明"ACAD_GROUP"字典所赋予的反应器组码102、330项并不是必要的。

然而若想在"ACAD_GROUP"字典中增加该编组的条目,十编组的建立更规范也是可以的,涉及到字典操作(可查看此文章):

该操作会同时在编组的属性列表中添加向"ACAD_GROUP"字典的反应器组码102和330。

注:使用repeat+计数器而非foreach是因为,在AutoLISP中,根据选择集建立方式的不同,其中可能不仅含有图元信息,还含有其他选择方式等信息,若要使用foreach,要么在之前使用(ssnamex)获得图元名列表,并对其进行处理,要么在foreach中嵌套if判断进行处理。而我们仅需要获得<图元名>,(ssname)可以很简洁地实现该目标,既不需要复杂的预处理,也不需要不必要的判断环节,即对选择集的兼容性更强。若能保证选择集中仅有图元信息,则如下代码可以实现同样效果:

三、vla扩展函数

并没有直接创建group的vla函数,通过vla创建group实际上获得vla-groups集合,通过在集合中添加新元素的方式创建,且创建后要通过vla-put命令才能对组进行编辑,示例如下:

该创建的组可以在"CLASSICGROUP"中查看,如图1所示。此时组是空的,向组内添加图元的操作为:

对该方法的详细介绍见官方文档:

https://help.autodesk.com/view/OARX/2023/CHS/?guid=GUID-1CA2C9D1-F8F7-4C11-B361-2998C4869119

alv-appenditems的详细用法及<variant:obj>的创建方法见官方文档:

https://help.autodesk.com/view/OARX/2023/CHS/?guid=GUID-01216A16-2242-4E2A-B98E-C12002594D4E

四、其他

4.1 图形文件中编组情况可用"CLASSICGROUP"命令查看:

4.2 编组相关DXF组码说明见官方文档:

https://help.autodesk.com/view/OARX/2023/CHS/?guid=GUID-5F1372C4-37C8-4056-9303-EE1715F58E67

欢迎留言并发表您的见解!

标签:

推荐阅读

【AutoLISP】创建编组(GROUP)的三种方法-快资讯

AutlLisp版本:VisualLISP2024(zh)三种方法分别为:command调用-group命令entmake生成编组vl扩展函数一、co

每日关注!休闲时间买买买 00后是网购绝对主力

网购已经成为时下很普遍的购物方式。调查发现,近四成国人工作日休闲时间网购。在七大区域中,东北人有些霸

全球速讯:全新好:公司股票被实施退市风险警示,股票简称将变更为“*ST全新”

全新好4月29日公告,公司2022年度经审计归属于上市公司股东的净利润为负值且营业收入低于人民币一亿元,根

绿植领养增春意!山东女子学院绿之源环保协会开展绿植领养活动

为推行爱绿植绿护绿的文明风尚,积极引导广大青年学子树立生态文明观念,山东女子学院绿之源环保协会于3月1

京冀旅游专线助力千年古县旅游再上新台阶

日前,京冀旅游专线又添新路线,北京六里桥客运站到河北易县大巴正式通车。易县是千年古县,拥有清西陵、狼

猜您喜欢

【版权及免责声明】凡注明"转载来源"的作品,均转载自其它媒体,转载目的在于传递更多的信息,并不代表本网赞同其观点和对其真实性负责。亚洲商务网倡导尊重与保护知识产权,如发现本站文章存在内容、版权或其它问题,烦请联系。 联系方式:8 86 239 5@qq.com,我们将及时沟通与处理。

产品