本帖最后由 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)))))
另:你这可以直接改成属性定义啊。
|