乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 19|回复: 19

[编程交流] 更改块名称

[复制链接]

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 11:59:12 | 显示全部楼层 |阅读模式
我似乎总是想解决最晦涩和毫无意义的问题。
 
有没有办法使用LISP更改块的名称?我尝试了两种方法,vla-put-name和entmod/entupd方法。这是我的代码,没什么特别的:
 
你会注意到我在这里有两种方法,一种简单地注释掉了。
 
vla方法返回一个键错误,entmod/entupd方法没有错误,但不会更新块。关键的错误似乎是一个线索。。。块不包括在某种块参考表中。。?我从来没有遇到过这样的事情,所以我迷路了。我需要将块添加到表中吗?如果需要,如何添加?还是根本不可能?
 
我也在想,如果有必要的话,我可以用entmake重新创建它,但不确定这会如何工作。
 
有什么想法吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:05:15 | 显示全部楼层
我试过这个,但我也得到了同样的结果:
 
  1. (defun c:test  (/ blk tStr)
  2. (if (and (setq blk (car (entsel "\nSelect Block: ")))
  3.           (eq "AcDbBlockReference"
  4.               (vla-get-ObjectName
  5.                 (setq blk
  6.                   (vlax-ename->vla-object blk))))
  7.           (setq tStr (getstring t "\nSpecify New Name: "))
  8.           (snvalid tStr))
  9.    (if (vlax-property-available-p blk 'Name T)
  10.      (vla-put-Name blk tStr)
  11.      (princ "\nCannot Do that!")))
  12. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:06:35 | 显示全部楼层
实际上,这是可行的:
 
  1. (defun c:test  (/ blk tStr)
  2. (if (and (setq blk (car (entsel "\nSelect Block: ")))
  3.           (eq "AcDbBlockReference"
  4.               (vla-get-ObjectName
  5.                 (setq blk
  6.                   (vlax-ename->vla-object blk))))
  7.           (setq tStr (getstring t "\nSpecify New Name: "))
  8.           (tblsearch "BLOCK" tStr))
  9.    (if (vl-catch-all-error-p
  10.          (vl-catch-all-apply
  11.            (function
  12.              (lambda (x)
  13.                (vla-put-Name x tStr))) (list blk)))            
  14.      (princ "\nCannot Do that!")))
  15. (princ))
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 12:10:06 | 显示全部楼层
 
这对我没用,李。它不会出错,但似乎不会更改块的名称。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:13:30 | 显示全部楼层
 
新块名称也必须在图形中。
 
从ACAD帮助:
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 12:17:44 | 显示全部楼层
但是,如果块名称存在,则意味着-块存在,并且将块名称更改为现有块也会更改定义。。将边框的名称更改为标题栏的名称会将边框更改为标题栏。
 
这是有道理的,但它告诉我,如果我想保持一个块的原样,只是简单地更改名称,我必须从头开始重新创建它,可能是通过获取其中的所有实体。。。
 
我希望有更简单的方法
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:18:37 | 显示全部楼层
 
不可能所有事情都这么简单
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:21:54 | 显示全部楼层
创建新块并不太困难,这里有一个LISP,它是我编写的旧LISP的修改:
 
  1. 3
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 12:24:52 | 显示全部楼层
 
我相信你不知道那么好。。。英雄联盟
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:29:58 | 显示全部楼层
 
你们认识吗*只是好奇*
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 10:20 , Processed in 0.507058 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表