重命名布局LISP。需要广告
我有一个例程,我们时不时地运行,将布局选项卡名称从Layout1更改为Drawing1,从Layout2更改为Drawing2。。等等等等。有人能建议如何在同一代码中添加其他布局可能性吗。例如,如果我们碰巧打开了一个包含DWG1的图形,该图形需要是Drawing1。我知道代码很简单,但请看一下:(defun C:rere ()
(setvar "cmdecho" 0)
(command "layout" "r" "Layout1" "Drawing1")
(PRIN1))
非常感谢您的帮助。谢谢 您需要更多的代码来检查布局名称,您可能需要下载lee mac parse number,这样您就可以读取布局编号Layout1=1,现在为“DWG1”
您可以进行初始化并设置一些预定义的答案,如简单示例1 dwg 2 Drawing 3 Layout 4 DXX,然后使用COND查看您选择了什么描述,这会阻止打字等
;;-------------------=={ Parse Numbers }==--------------------;;
;; ;;
;;Parses a list of numerical values from a supplied string. ;;
;;------------------------------------------------------------;;
;;Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;;
; this is bits of a big routine
; it is not working code just an example of how to do it.
(defun ah:sheetupdate1 ( / ss1 lay plotabs tabname dwgname)
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vlax-for lay (vla-get-Layouts doc)
(setq plotabs (cons (vla-get-name lay) plotabs)) ; a list of all the layout tabs
)
(setq plotabs (vl-sort plotabs '<))
(setq len (length plotabs))
; now go through plotabs and rename the example here is hard coded for DXX
(repeat len
; if less than 10
(if (< (car dwgnum) 10.0)
(setq newstr2 (strcat dwgname "-D0"(rtos sheetnum 2 0)))
(setq newstr2 (strcat dwgname "-D"(rtos sheetnum 2 0)))
)
(command "layout" "r" (nth x plotab ) newstr2)
(setq x (+ x 1))
)
还有一种方法:
(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’ 你说得有道理。不管当前名称值如何,按顺序更改名称,这可能是OP一直想要的。 我们必须拭目以待——尽管如此,编写代码还是很有趣的 我有时会利用taborder在移动布局顺序后对选项卡进行重新编号,这比每个1都快得多。
页:
[1]