将全部缩放应用于所有布局
嗨,我需要一段代码的帮助。我在另一个论坛帖子上发现了这段代码,我认为它可以满足我的需要,但需要修改。我希望能够对当前dwg中的所有布局应用“全部缩放”。(因此,当打开dwg时,我可以先重置布局——有些图形有“多”个布局,因此需要在工作之前清理一下)这是现在的代码。。。(只对当前布局进行缩放)
(vl load com)
(defun c:zza()
(setq lay_list(布局列表)
lay\u list\u len(长度lay\u list)
第0层
)
(重复lay\u list\u len
; (命令“layout”“set”(第n个lay\u第n个lay\u列表))
(命令“zoom”“all”)
(setq lay\u nth(1+lay\u nth))
)
(普林斯)
)
我有一行rem'd了,因为我不想改变布局(出于我的目的,这是没有必要的)我不知道lisp,所以这段代码可能无法正常工作。我只需要“全部缩放”命令。
下面是另一段代码,它将当前布局的页面设置复制到所有可能也能正常工作(或者最好修改)的布局中。。。
(vl load com)
(定义c:CP(/Adoc Layts clyt)
(setq aDoc(vla get activedocument(vlax get acad object))
Layts(vla get layouts aDoc)
clyt(vla get activelayout aDoc)
)
(foreach)
itm公司
(vl remove(vla get name clyt)(布局列表))
(vla copyfrom(vla item Layts itm)clyt)
(命令“_zoom”“all”);;补充
)
(普林斯)
)
我该如何改变这一点?(我不需要更改页面设置)
谢谢 考虑这种适应性:
(vl-load-com)
(defun c:ZoomAll (/ *error* oldCtab acApp)
(defun *error* (msg)
(and oldCtab (setvar 'ctab oldCtab))
(cond ((not msg)) ; Normal exit
((member msg '("Function cancelled" "quit / exit abort"))) ; <esc> or (quit)
((princ (strcat "\n** Error: " msg " ** "))) ; Fatal error, display it
)
(princ)
)
(if (and (setq oldCtab (getvar 'ctab))
(setq acApp (vlax-get-acad-object))
)
(foreach tab (layoutlist)
(setvar 'ctab tab)
(vla-zoomall acApp)
)
)
(*error* nil)
)
Thx黑盒。它确实有效,但是我的标题栏有一些意想不到的后果。(删除了多行文字——可能只是一种异常现象)然而,这可能不会像预想的那样起作用。我的一些dwg有超过100个布局;因此,您可以想象在尝试打开时重新生成每个布局的问题。即使使用打开的dwg并运行lsp,在大型dwg上也可能存在问题。谢谢你的帮助。 是的,看起来这只是一个异常。(只是想澄清)谢谢。 不客气;我很乐意帮忙。 在执行缩放之前,最好退出模型。
(defun c:ZAL (/ doc acad ctab)
(setq acad (vlax-get-acad-object)
doc(vla-get-activedocument acad)
ctab (getvar 'CTAB)
)
(foreach layout (layoutlist)
(setvar 'CTAB layout)
(vla-put-mspace doc :vlax-false)
(vla-zoomall acad)
)
(setvar 'CTAB ctab)
(princ)
) ... 对于那些希望在离开布局之前恢复MSpace的用户,请合并以下代码段:
;; <snip>
(foreach tab (layoutlist)
(setvar 'ctab tab)
(if (setq mspace (< 1 (getvar 'cvport)))
(vla-put-mspace acDoc :vlax-false)
)
(vla-zoomall acApp)
(if mspace
(vla-put-mspace acDoc :vlax-true)
)
)
;; <snip>
页:
[1]