乐筑天下

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

[编程交流] 非常奇怪的问题

[复制链接]

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:01:09 | 显示全部楼层 |阅读模式
  1. (defun GetMyDocumentsDir()
  2. (vlax-invoke-method
  3.    (vlax-get-property
  4.      (vlax-create-object "wscript.shell")
  5.      'SpecialFolders) 'Item  "MyDocuments")
  6. )
  7. ;;Call:(GetMyDocumentsDir)
  8. ;;(BF:mkslid sldname 400 300)
  9. ;;; (SetScreenSize 400 300)
  10. (defun SetScreenSize (Width height / doc oldsize doc w1 h1 dw dh)
  11. (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  12. (setq oldsize (getvar "SCREENSIZE"))
  13. (setq W1 (vla-get-width doc))
  14. (setq H1 (vla-get-Height doc))
  15. (setq dw (- w1 (car oldsize)))
  16. (setq dh (- h1 (cadr oldsize)))
  17. (vla-put-width doc (+ dw width))
  18. (vla-put-height doc (+ dh height))
  19. )
  20. (defun c:test()
  21. (SetScreenSize  400 300)
  22. (command "zoom" "e")
  23. (princ)
  24. )

 
我的想法是
1、将屏幕大小设置为400*300
2.“缩放”“e”
 
正常应该是这样
000116t2mg4bjgbymj8mbm.png
 
但是,当我使用命令“test”时,
000118oxdexdds67xce7ws.png
 
哦,为什么?需要运行“测试”两次
测验图纸
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:08:18 | 显示全部楼层
将以下代码行添加到函数“SetScreenSize”中,并从主例程中删除命令调用“zoom”。
 
  1. (vla-zoomextents doc)
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:11:28 | 显示全部楼层
 
谢谢Tharwat,很高兴见到你!
更具体?我不明白。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:15:29 | 显示全部楼层
 
删除以下内容。。。
 
  1. (command "zoom" "e")

 
然后从例程中向函数添加与函数vla zoomextents相关的代码行,如下所示。
 
  1.   (vla-put-height doc (+ dh height))
  2. (vla-zoomextents doc)
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:22:12 | 显示全部楼层
 

  1. (defun GetMyDocumentsDir()
  2. (vlax-invoke-method
  3.    (vlax-get-property
  4.      (vlax-create-object "wscript.shell")
  5.      'SpecialFolders) 'Item  "MyDocuments")
  6. )
  7. ;;Call:(GetMyDocumentsDir)
  8. ;;(BF:mkslid sldname 400 300)
  9. ;;; (SetScreenSize 400 300)
  10. (defun SetScreenSize (Width height / doc oldsize doc w1 h1 dw dh)
  11. (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  12. (setq oldsize (getvar "SCREENSIZE"))
  13. (setq W1 (vla-get-width doc))
  14. (setq H1 (vla-get-Height doc))
  15. (setq dw (- w1 (car oldsize)))
  16. (setq dh (- h1 (cadr oldsize)))
  17. (vla-put-width doc (+ dw width))
  18. (vla-put-height doc (+ dh height))
  19. [color="red"] (vla-zoomextents doc)[/color]
  20. )
  21. (defun c:test()
  22. (SetScreenSize  400 300)      
  23. (princ)
  24. )

 
; 错误:ActiveX服务器返回错误:未知名称:ZoomExtents
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:26:26 | 显示全部楼层
奇怪的是,请将load library函数添加到例程中,然后重试。
 
  1. (vl-load-com)
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:30:52 | 显示全部楼层
 
我加上它,同样!
 
我将“(vla zoomextents doc)”更改为(vla zoomextents*acad*),没有错误
我将“(vla zoomextents doc)”更改为(vla zoomextents(vlax get acad object)),没有错误,
 
但问题并没有解决。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:33:46 | 显示全部楼层
它在这里工作正常,您使用的是哪个版本的Autocad?2010年,如您的个人资料所示?
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:39:08 | 显示全部楼层
 
ACAD 2010
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:40:21 | 显示全部楼层
这是一个演示(GIF),请看。
55.zip
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:32 , Processed in 0.362993 second(s), 75 queries .

© 2020-2025 乐筑天下

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