Autolisp新人求教,怎么手动赋予图元名给ENTGET函数
本帖最后由 Syjhy 于 2022-12-2 10:34 编辑请问下我用(CAR(ENTSEL))得到一个图形的图元名,然后复制粘贴给ENTGET函数,(ENTGET <图元名:刚刚复制的>),为啥一直报错呢?只能用(ENTGET(CAR(ENTSEL)))吗
kevinying16 发表于 2022-12-2 13:25
句柄和对象是一一对应的,只要图纸打开了,对象的句柄就不会变。
我想做的是是每次打开图纸总是选择某个固定的对象。感觉得寻找其他方法了 本帖最后由 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 "找不到组码")
[*])
tryhi 发表于 2022-12-2 16:50
组码5全图唯一,并且每次开图都不会变,缺点是无用ssget直接筛选,只能全图遍历
如果知道组码5的代表句柄的字符串值,比如这里的1863,那用函数(handent "1863")好像就可返回图元名,如果是nil,应该是代表该实体对象已经删除。 (setq name (car (entsel)))
(entget name) rocking2008 发表于 2022-12-2 10:43
(setq name (car (entsel)))
(entget name)
我如果总是要对图里的某个对象处理(图元名固定),不想进行点选这个步骤该怎么办? 感觉是参数类型的问题,ENTSEL里的图元名究竟是什么类型的 就是图元类型。 不是符号,也不是字符串,无法用键盘输入。
是用16进制串表示的一种类似指针的类型。 vitalgg 发表于 2022-12-2 11:32
就是图元类型。 不是符号,也不是字符串,无法用键盘输入。
是用16进制串表示的一种类似指针的类型。
这样啊,学习了。只能想其他办法选取固定的对象了 可以用句柄handent,句柄是字符串 句柄和对象是一一对应的,只要图纸打开了,对象的句柄就不会变。
页:
[1]
2