乐筑天下

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

[编程交流] 使用实际$

[复制链接]

8

主题

52

帖子

44

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 15:09:53 | 显示全部楼层 |阅读模式
您好,我想知道是否有人可以告诉我如何编写脚本或lisp来更新标题栏中名为DRAWINGNAME的属性。具有实际$FILENAME$的DWG。我正在尝试更新旧的标题栏,这些标题栏不是在考虑字段概念的情况下创建的。
 
提前感谢您,
 
卡梅隆
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:15:21 | 显示全部楼层
我在这里可能有点离题,但我的理解是,您希望更新旧图形中的标题栏,以便名为“DRAWINGNAME”的属性包含图形的文件名。
 
我说得对吗?
回复

使用道具 举报

8

主题

52

帖子

44

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 15:19:00 | 显示全部楼层
是的,李。我需要DRAWINGNAME属性使用的实际文件名(无论其名称如何)。非常感谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:19:54 | 显示全部楼层
试一试{Untested}
 
  1. (defun c:dwgupd (/ ss eLst dNme aEnt aEntLst)
  2. (vl-load-com)
  3. (if (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 2 "TITLE") (cons 66 1)
  4.     (if (getvar "CTAB")
  5.       (cons 410 (getvar "CTAB"))
  6.       (cons 67 (- 1 (getvar "TILEMODE")))))))
  7.    (progn
  8.    (setq eLst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
  9.      dNme (vl-filename-base (getvar "DWGNAME")))
  10.    (foreach e eLst
  11.      (setq aEnt (entnext e))
  12.      (while (not (eq "SEQEND" (cdadr (setq aEntLst (entget aEnt)))))
  13.    (if (= "DRAWINGNAME" (cdr (assoc 2 aEntLst)))
  14.      (entmod (subst (cons 1 dNme)(assoc 1 aEntLst) aEntLst)))
  15.    (setq aEnt (entnext aEnt)))))
  16.    (princ "\n<!> No Title Blocks Found <!> "))
  17. (princ))
回复

使用道具 举报

48

主题

1073

帖子

1043

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2022-7-6 15:23:33 | 显示全部楼层
这听起来很熟悉,是不是李。
回复

使用道具 举报

8

主题

52

帖子

44

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 15:26:32 | 显示全部楼层
太好了,李!你真有学问。非常感谢。我现在只需要重新生成它,这样我就知道已经发生了变化。我会设法弄明白的。再次感谢!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:31:45 | 显示全部楼层
 
我已经花了很多时间练习编写块属性更新例程,现在我闭上眼睛就可以完成了
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:33:56 | 显示全部楼层
啊,是的,我没有在里面放摄政王。。。只需在末尾加上这个(就在最后一个(普林斯)之前):
 
  1. (command "_regenall")
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:36:31 | 显示全部楼层

 
  1. (defun c:dwgupd (/ ss eLst dNme aEnt aEntLst)
  2. (vl-load-com)
  3. (if (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 2 "TITLE") (cons 66 1)
  4.     (if (getvar "CTAB")
  5.       (cons 410 (getvar "CTAB"))
  6.       (cons 67 (- 1 (getvar "TILEMODE")))))))
  7.    (progn
  8.    (setq eLst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
  9.      dNme (vl-filename-base (getvar "DWGNAME")))
  10.    (foreach e eLst
  11.      (setq aEnt (entnext e))
  12.      (while (not (eq "SEQEND" (cdadr (setq aEntLst (entget aEnt)))))
  13.    (if (= "DRAWINGNAME" (cdr (assoc 2 aEntLst)))
  14.      (entmod (subst (cons 1 dNme)(assoc 1 aEntLst) aEntLst)))
  15.    (setq aEnt (entnext aEnt)))))
  16.    (princ "\n<!> No Title Blocks Found <!> "))
  17. (command "_regenall")
  18. (princ))
回复

使用道具 举报

8

主题

52

帖子

44

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 15:40:27 | 显示全部楼层
非常感谢。我最终也明白了,在你建议的位置使用这个命令。似乎也能做到,但我想我会用你的。。。那样更专业!
 
(princ“\n未找到标题栏”))
(普林斯)
(命令“REGEN”)
)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 19:27 , Processed in 0.459720 second(s), 72 queries .

© 2020-2025 乐筑天下

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