Syjhy 发表于 2022-12-2 10:33:28

Autolisp新人求教,怎么手动赋予图元名给ENTGET函数

本帖最后由 Syjhy 于 2022-12-2 10:34 编辑

请问下我用(CAR(ENTSEL))得到一个图形的图元名,然后复制粘贴给ENTGET函数,(ENTGET <图元名:刚刚复制的>),为啥一直报错呢?只能用(ENTGET(CAR(ENTSEL)))吗

Syjhy 发表于 2022-12-2 16:30:28

kevinying16 发表于 2022-12-2 13:25
句柄和对象是一一对应的,只要图纸打开了,对象的句柄就不会变。

我想做的是是每次打开图纸总是选择某个固定的对象。感觉得寻找其他方法了

tryhi 发表于 2022-12-2 16:50:57

本帖最后由 tryhi 于 2022-12-2 17:11 编辑

Syjhy 发表于 2022-12-2 16:30
我想做的是是每次打开图纸总是选择某个固定的对象。感觉得寻找其他方法了
组码5全图唯一,并且每次开图都不会变,缺点是无用ssget直接筛选,只能全图遍历




[*](setq zm5 "1863");假设图元组码为1863
[*](setq ss(ssget "x"))
[*](setq a 0)
[*](setq en(ssname ss 0))
[*](while (and en(/= zm5 (cdr(assoc 5 (entget en)))))
[*](setq en(ssname ss(setq a(1+ a))))
[*])
[*](if (= zm5 (cdr(assoc 5 (entget en))))
[*](progn (princ "找到图元")(sssetfirst nil(ssadd en)))
[*](princ "找不到组码")
[*])

zhaoxt 发表于 2022-12-2 19:14:58

tryhi 发表于 2022-12-2 16:50
组码5全图唯一,并且每次开图都不会变,缺点是无用ssget直接筛选,只能全图遍历




如果知道组码5的代表句柄的字符串值,比如这里的1863,那用函数(handent "1863")好像就可返回图元名,如果是nil,应该是代表该实体对象已经删除。

rocking2008 发表于 2022-12-2 10:43:01

(setq name (car (entsel)))
(entget name)

Syjhy 发表于 2022-12-2 11:04:36

rocking2008 发表于 2022-12-2 10:43
(setq name (car (entsel)))
(entget name)

我如果总是要对图里的某个对象处理(图元名固定),不想进行点选这个步骤该怎么办?

Syjhy 发表于 2022-12-2 11:16:19

感觉是参数类型的问题,ENTSEL里的图元名究竟是什么类型的

vitalgg 发表于 2022-12-2 11:32:22

就是图元类型。 不是符号,也不是字符串,无法用键盘输入。
是用16进制串表示的一种类似指针的类型。

Syjhy 发表于 2022-12-2 11:52:00

vitalgg 发表于 2022-12-2 11:32
就是图元类型。 不是符号,也不是字符串,无法用键盘输入。
是用16进制串表示的一种类似指针的类型。

这样啊,学习了。只能想其他办法选取固定的对象了

kevinying16 发表于 2022-12-2 13:24:18

可以用句柄handent,句柄是字符串

kevinying16 发表于 2022-12-2 13:25:20

句柄和对象是一一对应的,只要图纸打开了,对象的句柄就不会变。
页: [1] 2
查看完整版本: Autolisp新人求教,怎么手动赋予图元名给ENTGET函数