乐筑天下

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

[编程交流] '最大化显示#039;不是w

[复制链接]

26

主题

84

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 23:54:06 | 显示全部楼层 |阅读模式
大家好,
 
每次打开图形(位于启动套件中)时,都会加载一个小lisp。它在AutoCAD 2013中运行良好。自升级到2014年以来,发生了以下情况:
 
这是我上次保存图形的方式:

                               
登录/注册后可看大图

 
 
这是打开图形后得到的结果(请注意,它没有缩放到范围):

                               
登录/注册后可看大图

 
 
这是我期待看到的:

                               
登录/注册后可看大图

 
此外,SECURELOAD设置为“0”,我的lisp如下所示:
 
  1. (defun C:DoTheseSteps()
  2. (setvar "tilemode" 1)
  3. (setvar "PLINEWID" 0)
  4. (setvar "SNAPUNIT" '(1.25 1.25))
  5. (command "._ZOOM" "Extents")
  6. )
  7. (c:DoTheseSteps)

 
 
来自命令提示符的快照:
005416cei99bdn911iouno.jpg
知道为什么“最大化显示”不起作用吗?
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 00:09:31 | 显示全部楼层
你的阿卡多克。lsp在我的A2014上运行良好。。。可以尝试使用(command-s“_.zoom”“\u E”)或此acaddoc。lsp:
 
  1. (vl-load-com)
  2. (setvar "tilemode" 1)
  3. (setvar "PLINEWID" 0)
  4. (setvar "SNAPUNIT" '(1.25 1.25))
  5. (vla-zoomextents (vlax-get-acad-object))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:14:00 | 显示全部楼层
我建议在图形完全打开后,使用s::startup positialization函数来评估最大化操作。
 
将以下内容复制到您的acaddoc。lsp:
  1. (vl-load-com)
  2. (setvar 'tilemode 1)
  3. (setvar 'plinewid 0.0)
  4. (setvar 'snapunit '(1.25 1.25))
  5. (defun zoomextents ( )
  6.    (vla-zoomextents (vlax-get-acad-object))
  7.    (princ)
  8. )
  9. (if (= 'list (type s::startup))
  10.    (setq s::startup (append s::startup '((zoomextents))))
  11.    (defun-q s::startup ( ) (zoomextents))
  12. )
  13. (princ)
回复

使用道具 举报

26

主题

84

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-6 00:23:47 | 显示全部楼层
 
谢谢marko_ribar。我采用李的方法。不过还是要谢谢你。
 
 
李,大师,你的代码正如期运行。但是,作为一个初学者,我试图为自己简化您的解决方案。根据你在这里的帖子,我还可以使用以下代码:
  1. (defun-q zoomextents ( )
  2. (vla-zoomextents (vlax-get-acad-object))
  3. (princ))
  4. (setq S::STARTUP (append S::STARTUP zoomextents))

 
而不是:
  1. (defun zoomextents ( )
  2.    (vla-zoomextents (vlax-get-acad-object))
  3.    (princ)
  4. )
  5. (if (= 'list (type s::startup))
  6.    (setq s::startup (append s::startup '((zoomextents))))
  7.    (defun-q s::startup ( ) (zoomextents))
  8. )
  9. (princ)

 
我不能吗?
 
显然,你的方法背后有一个逻辑,这就是我试图理解的。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:32:43 | 显示全部楼层
 
谢谢你,我很高兴代码能为你工作。
 
 
来自该[非常旧]帖子的“简化”版本假设s::启动符号为nil或之前已使用defun-q定义(以生成列表);如果无意中使用defun定义了s::启动符号,或者定义为在另一个启动文件的其他位置保存非列表值,那么这种方法将出错。
 
我最近的代码包含了更多的错误捕捉,如果s::启动符号不是一个列表,那么将使用defun-q正确地重新定义该符号。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:41:56 | 显示全部楼层
在我上面的帖子之后,考虑使用defun-q表达式正确定义s::startup函数的情况:
 
现在,我们定义自己的函数,将其附加到启动函数中:
请注意,添加时,参数/局部变量声明列表现在显示在s::启动函数定义中:
如果该列表为零,则可以。但是,如果该列表包含局部变量,则生成的函数将出错,因为该列表将被解释为除法表达式:
  1. _$ (defun-q mystartup ( / a b c ) (setq a "a" b "b" c "c") (princ))
  2. MYSTARTUP
  3. _$ mystartup
  4. ((/ A B C) (SETQ A "a" B "b" C "c") (PRINC))
  1. _$ (defun-q s::startup ( ) (princ "\nMy startup.") (princ))
  2. S::STARTUP
  3. _$ s::startup
  4. (nil (PRINC "\nMy startup.") (PRINC))

由于表观“除法表达式”的参数为零,因此导致以下错误:
当然,在将函数定义附加到s::启动定义之前,可以使用cdr删除该列表头,但这意味着函数定义的符号将是全局的,不再声明为局部变量。
 
在我看来,使用我最近的安排会产生一个更清晰的结果:
  1. 12
  1. _$ (defun-q s::startup ( ) (princ "\nMy startup.") (princ))
  2. S::STARTUP
  3. _$ s::startup
  4. (nil (PRINC "\nMy startup.") (PRINC))

所有变量都保持mystartup函数的局部性,我们在评估过程中没有错误:
  1. 15
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:58:05 | 显示全部楼层
 
哈哈谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 21:09 , Processed in 1.124259 second(s), 69 queries .

© 2020-2025 乐筑天下

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