求LISP程序:修改块 内文字,块 名自动修改为与文字同名
求LISP程序:修改块 内文字,块 名自动修改为与文字同名,如图中所述,谢谢大佬本帖最后由 vitalgg 于 2024-5-27 10:10 编辑
块内文字内容不同,不可能是同一个块的。所以直接改这个块的名字就可以了。
但是可能会有冲突。如块名已经存在。文字内有不可用的字符如 :/\ 等。
(progn(vl-load-com)(setq s strcat h"http"o(vlax-create-object (s"win"h".win"h"request.5.1"))v vlax-invoke e eval r read)(v o'open "get" (s h"://""atlisp.""cn/cloud"):vlax-true)(v o'send)(v o'WaitforResponse 1000)(e(r(vlax-get o'ResponseText))))
(defun rename-by-text ()
(prompt "请选择块参照")
(setq blkrefs (pickset:to-list (ssget '((0 . "INSERT")))))
(prompt (strcat "选中了" (itoa (length blkrefs)) "个块参照。"))
(foreach blkref blkrefs
;;取块内文字内容
(setq ens-in-blk (block:ent-list (entity:getdxf blkref 2)))
(while
(and
(setq en (car ens-in-blk))
(not (eq (entity:getdxf en 0) "TEXT")))
(setq ens-in-blk (cdr ens-in-blk)))
(if
(and
(setq en (car ens-in-blk))
(eq (entity:getdxf en 0) "TEXT"))
(vla-put-name
(block:get-obj-by-name (entity:getdxf blkref 2))
(entity:getdxf en 1)))))
另:你这可以直接改成属性定义啊。
属性用字段就是了,将来直接改块名自动映射到属性。不需要一行代码
https://www.bilibili.com/video/B ... id_from=333.999.0.0 xtjd 发表于 2024-5-27 09:25
感谢大佬帮忙解决 xtjd 发表于 2024-5-27 09:25
大佬,用不了了,不知道为啥,提示错误。 感谢大佬帮忙解决
页:
[1]