乐筑天下

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

[编程交流] 用于块布局名称的Lisp

[复制链接]

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 16:56:30 | 显示全部楼层 |阅读模式
大家好!
 
我正在构建标题栏(带有属性的块),我需要一个例程,该例程将自动读取多布局dwg中的布局名称,并将其写入每个布局的块属性“布局”。带有Ctab的字段不适合我的需要。。。
 
这样的事情可能吗?
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:01:27 | 显示全部楼层
是的,这是可能的。
 
您的属性标题栏的名称是什么?
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:05:49 | 显示全部楼层
 
嗨Tharwat!
 
块的名称为TITLEBLOCK。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:10:00 | 显示全部楼层
我们开始吧,试试这个程序。
 
  1. (defun c:Test  nil
  2. ;;------------------------------------;;
  3. ;;    Tharwat 20.05.2015        ;;
  4. ;;    Modify Title Blocks that have     ;;
  5. ;;    Tag name "LAYOUT" wiht its    ;;
  6. ;;    location is each Layout's Name    ;;
  7. ;;------------------------------------;;
  8. (vlax-for x  (vla-get-layouts (vla-get-ActiveDocument (vlax-get-acad-object)))
  9.    (if (/= (vla-get-name x) "Model")
  10.      (vlax-for b  (vla-get-block x)
  11.        (and (eq (vla-get-objectname b) "AcDbBlockReference")
  12.             (eq (vla-get-effectivename b) "TILTEBLOCK")
  13.             (vl-some
  14.               '(lambda (a)
  15.                  (if
  16.                    (eq "LAYOUT" (strcase (vla-get-tagstring a)))
  17.                     (vla-put-textstring a (vla-get-name x))
  18.                     )
  19.                  )
  20.               (vlax-invoke b 'getattributes)
  21.               )
  22.             )
  23.        )
  24.      )
  25.    )
  26. (princ)
  27. )(vl-load-com)
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:14:46 | 显示全部楼层
我会努力的,
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:18:16 | 显示全部楼层
 
好的,我会等你的回复。
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:20:26 | 显示全部楼层
效果很好!
有没有办法让lisp在打开/保存或刷新时自动调用?
 
万分感谢!!!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:23:37 | 显示全部楼层
 
杰出的非常欢迎你。
 
 
 
您必须在许多图形文件上运行该程序。你不是吗?
“打开”和“保存”命令不起作用,因此需要第三方程序对图形文件列表进行处理。
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:28:04 | 显示全部楼层
 
确切地
 
你知道一些吗?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:33:31 | 显示全部楼层
如果没有那么多文件来实现程序,只需将此(c:Test)添加到最后一个括号后的程序中,并将lisp文件添加到appload命令的公文包中,然后只需打开要在其中运行程序的图形,程序应自动运行并单独执行任务,然后只需保存并关闭图形即可保存新更改。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-12 12:31 , Processed in 1.375993 second(s), 83 queries .

© 2020-2025 乐筑天下

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