乐筑天下

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

[编程交流] 重命名布局LISP。需要广告

[复制链接]

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 18:18:27 | 显示全部楼层 |阅读模式
我有一个例程,我们时不时地运行,将布局选项卡名称从Layout1更改为Drawing1,从Layout2更改为Drawing2。。等等等等。有人能建议如何在同一代码中添加其他布局可能性吗。例如,如果我们碰巧打开了一个包含DWG1的图形,该图形需要是Drawing1。我知道代码很简单,但请看一下:
 
  1. (defun C:rere ()
  2. (setvar "cmdecho" 0)
  3. (command "layout" "r" "Layout1" "Drawing1")
  4.   (PRIN1))

 
非常感谢您的帮助。谢谢
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:37:49 | 显示全部楼层
您需要更多的代码来检查布局名称,您可能需要下载lee mac parse number,这样您就可以读取布局编号Layout1=1,现在为“DWG1”
 
您可以进行初始化并设置一些预定义的答案,如简单示例1 dwg 2 Drawing 3 Layout 4 DXX,然后使用COND查看您选择了什么描述,这会阻止打字等
 
  1. ;;-------------------=={ Parse Numbers }==--------------------;;
  2. ;;                                                            ;;
  3. ;;  Parses a list of numerical values from a supplied string. ;;
  4. ;;------------------------------------------------------------;;
  5. ;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;

 
  1. ; this is bits of a big routine
  2. ; it is not working code just an example of how to do it.
  3. (defun ah:sheetupdate1 ( / ss1 lay plotabs tabname dwgname)
  4. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  5. (vlax-for lay (vla-get-Layouts doc)
  6. (setq plotabs (cons (vla-get-name lay) plotabs)) ; a list of all the layout tabs
  7. )
  8. (setq plotabs (vl-sort plotabs '<))
  9. (setq len (length plotabs))
  10. ; now go through plotabs and rename the example here is hard coded for DXX
  11. (repeat len
  12. ; if less than 10
  13. (if (< (car dwgnum) 10.0)
  14.      (setq newstr2 (strcat dwgname "-D0"  (rtos sheetnum 2 0)))
  15.      (setq newstr2 (strcat dwgname "-D"  (rtos sheetnum 2 0)))
  16. )
  17. (command "layout" "r" (nth x plotab ) newstr2)
  18. (setq x (+ x 1))
  19. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 18:44:55 | 显示全部楼层
还有一种方法:
(defun c:rere(/itm lst ord)(vlax for lay(vla get layouts(vla get activedocument(vlax get acad object))(if(=:vlax false(vla get modeltype lay))(progn(vla put name lay(vla get handle lay))(setq lst(cons lay lst)ord(cons(vla get taborder lay)ord))))(setq itm 0)(foreach idx(vl-sort-i ord’
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:53:46 | 显示全部楼层
你说得有道理。不管当前名称值如何,按顺序更改名称,这可能是OP一直想要的。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 19:06:21 | 显示全部楼层
我们必须拭目以待——尽管如此,编写代码还是很有趣的
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:18:27 | 显示全部楼层
我有时会利用taborder在移动布局顺序后对选项卡进行重新编号,这比每个1都快得多。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:23:39 | 显示全部楼层
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 19:53 , Processed in 0.519138 second(s), 66 queries .

© 2020-2025 乐筑天下

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