wewehua 发表于 2018-9-19 10:20:07

lisp中插入字段如何读取活动块元素ObjId

急求:
本人做了一个活动块,然后在lisp中插入进来后,进行文字命名,希望将这个活动块的长度作为文字命名的一部分。
但在lisp程序中无法知道ObjId后面这部分数字串的名称,导致不成功,求大神指点:
代码如下:
(defun c:t5 (/ p)
(setq p0 (getpoint "点选起点"))
(command "insert" "pxbd1" p0 "1" "1" 90 "")
(setq txt1 (STRCAT
"%<\\AcObjProp Object(%<\\_ObjId 1705933040>%).Parameter(1).UpdatedDistance \\f \"%lu2%pr0\">%"
))
(princ)
)


解释:pxbd1是活动块名,其中:ObjId 1705933040,每次插入同一活动块,这串字符都会有变化,这串字符既不是元素,也不是名称,请各位大神指点如何求得所插入块的ObjId!
感谢!

gaics 发表于 2018-9-28 15:17:18

本帖最后由 gaics 于 2023-8-17 08:39 编辑

(defun c:t5 (/ obj p0 txt1)
(setq p0 (getpoint "点选起点"))
(command "insert" "pxbd1" p0 "1" "1" 90 "")
(setq obj (vlax-ename->vla-object (entlast)))
(setq txt1 (vla-get-objectid obj))
(setq txt1 (itoa txt1))
(setq      txt1
         (STRCAT
         "%<\\AcObjProp Object(%<\\_ObjId "
         txt1
         ">%).Parameter(1).UpdatedDistance \\f \"%lu2%pr0\">%"
         )
)
(COMMAND "TEXT" "j" "m" p0 "40" 90 txt1)
(princ)
)

wewehua 发表于 2018-9-19 10:21:34

求大神指点

wewehua 发表于 2018-9-19 10:22:46

补充一下代码结尾还有这一句:
(COMMAND "TEXT" "j" "m" p0 "40" 90 txt1)

菜卷鱼 发表于 2018-9-20 08:40:48

(entlast) 可以得到 最后一次创建的图元名,你试试根据这个图元名去得到你要的信息

kozmosovia 发表于 2018-9-29 12:36:31

本帖最后由 kozmosovia 于 2018-9-29 12:42 编辑

这个不需要编程,动态块定义时就可以指定自身。直接把你要写的文字做成快内属性就行。

wewehua 发表于 2018-10-3 09:06:44

gaics 发表于 2018-9-28 15:17


非常好,感谢,解决了
页: [1]
查看完整版本: lisp中插入字段如何读取活动块元素ObjId