乐筑天下

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

[编程交流] 将全部缩放应用于所有布局

[复制链接]

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 06:31:47 | 显示全部楼层 |阅读模式
嗨,我需要一段代码的帮助。我在另一个论坛帖子上发现了这段代码,我认为它可以满足我的需要,但需要修改。我希望能够对当前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”);;补充
)
(普林斯)
)
 
我该如何改变这一点?(我不需要更改页面设置)
 
谢谢
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 06:43:58 | 显示全部楼层
考虑这种适应性:
 
  1. (vl-load-com)
  2. (defun c:ZoomAll (/ *error* oldCtab acApp)
  3. (defun *error* (msg)
  4.    (and oldCtab (setvar 'ctab oldCtab))
  5.    (cond ((not msg))                                                   ; Normal exit
  6.          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
  7.          ((princ (strcat "\n** Error: " msg " ** ")))                  ; Fatal error, display it
  8.    )
  9.    (princ)
  10. )
  11. (if (and (setq oldCtab (getvar 'ctab))
  12.           (setq acApp (vlax-get-acad-object))
  13.      )
  14.    (foreach tab (layoutlist)
  15.      (setvar 'ctab tab)
  16.      (vla-zoomall acApp)
  17.    )
  18. )
  19. (*error* nil)
  20. )
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 06:54:26 | 显示全部楼层
Thx黑盒。它确实有效,但是我的标题栏有一些意想不到的后果。(删除了多行文字——可能只是一种异常现象)然而,这可能不会像预想的那样起作用。我的一些dwg有超过100个布局;因此,您可以想象在尝试打开时重新生成每个布局的问题。即使使用打开的dwg并运行lsp,在大型dwg上也可能存在问题。谢谢你的帮助。
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 07:08:19 | 显示全部楼层
是的,看起来这只是一个异常。(只是想澄清)谢谢。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:12:22 | 显示全部楼层
不客气;我很乐意帮忙。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 07:29:23 | 显示全部楼层
在执行缩放之前,最好退出模型。
 
  1. (defun c:ZAL (/ doc acad ctab)
  2. (setq acad (vlax-get-acad-object)
  3.        doc  (vla-get-activedocument acad)
  4.        ctab (getvar 'CTAB)
  5. )
  6. (foreach layout (layoutlist)
  7.    (setvar 'CTAB layout)
  8.    (vla-put-mspace doc :vlax-false)
  9.    (vla-zoomall acad)
  10. )
  11. (setvar 'CTAB ctab)
  12. (princ)
  13. )
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:35:43 | 显示全部楼层
... 对于那些希望在离开布局之前恢复MSpace的用户,请合并以下代码段:
 
  1. ;; <snip>
  2.    (foreach tab (layoutlist)
  3.      (setvar 'ctab tab)
  4.      (if (setq mspace (< 1 (getvar 'cvport)))
  5.        (vla-put-mspace acDoc :vlax-false)
  6.      )
  7.      (vla-zoomall acApp)
  8.      (if mspace
  9.        (vla-put-mspace acDoc :vlax-true)
  10.      )
  11.    )
  12. ;; <snip>
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 14:49 , Processed in 0.587372 second(s), 66 queries .

© 2020-2025 乐筑天下

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