andy_lee 发表于 2022-7-5 23:01:09

非常奇怪的问题

(defun GetMyDocumentsDir()
(vlax-invoke-method
   (vlax-get-property
   (vlax-create-object "wscript.shell")
   'SpecialFolders) 'Item"MyDocuments")
)
;;Call:(GetMyDocumentsDir)
;;(BF:mkslid sldname 400 300)
;;; (SetScreenSize 400 300)
(defun SetScreenSize (Width height / doc oldsize doc w1 h1 dw dh)
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(setq oldsize (getvar "SCREENSIZE"))
(setq W1 (vla-get-width doc))
(setq H1 (vla-get-Height doc))
(setq dw (- w1 (car oldsize)))
(setq dh (- h1 (cadr oldsize)))
(vla-put-width doc (+ dw width))
(vla-put-height doc (+ dh height))
)

(defun c:test()
(SetScreenSize400 300)
(command "zoom" "e")
(princ)
)
 
我的想法是
1、将屏幕大小设置为400*300
2.“缩放”“e”
 
正常应该是这样

 
但是,当我使用命令“test”时,

 
哦,为什么?需要运行“测试”两次
测验图纸

Tharwat 发表于 2022-7-5 23:08:18

将以下代码行添加到函数“SetScreenSize”中,并从主例程中删除命令调用“zoom”。
 
(vla-zoomextents doc)

andy_lee 发表于 2022-7-5 23:11:28

 
谢谢Tharwat,很高兴见到你!
更具体?我不明白。

Tharwat 发表于 2022-7-5 23:15:29

 
删除以下内容。。。
 
(command "zoom" "e")

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

andy_lee 发表于 2022-7-5 23:22:12

 

(defun GetMyDocumentsDir()
(vlax-invoke-method
   (vlax-get-property
   (vlax-create-object "wscript.shell")
   'SpecialFolders) 'Item"MyDocuments")
)
;;Call:(GetMyDocumentsDir)
;;(BF:mkslid sldname 400 300)
;;; (SetScreenSize 400 300)
(defun SetScreenSize (Width height / doc oldsize doc w1 h1 dw dh)
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(setq oldsize (getvar "SCREENSIZE"))
(setq W1 (vla-get-width doc))
(setq H1 (vla-get-Height doc))
(setq dw (- w1 (car oldsize)))
(setq dh (- h1 (cadr oldsize)))
(vla-put-width doc (+ dw width))
(vla-put-height doc (+ dh height))
(vla-zoomextents doc)
)

(defun c:test()
(SetScreenSize400 300)      
(princ)
)
 
; 错误:ActiveX服务器返回错误:未知名称:ZoomExtents

Tharwat 发表于 2022-7-5 23:26:26

奇怪的是,请将load library函数添加到例程中,然后重试。
 
(vl-load-com)

andy_lee 发表于 2022-7-5 23:30:52

 
我加上它,同样!
 
我将“(vla zoomextents doc)”更改为(vla zoomextents*acad*),没有错误
我将“(vla zoomextents doc)”更改为(vla zoomextents(vlax get acad object)),没有错误,
 
但问题并没有解决。

Tharwat 发表于 2022-7-5 23:33:46

它在这里工作正常,您使用的是哪个版本的Autocad?2010年,如您的个人资料所示?

andy_lee 发表于 2022-7-5 23:39:08

 
ACAD 2010

andy_lee 发表于 2022-7-5 23:40:21

这是一个演示(GIF),请看。
55.zip
页: [1] 2
查看完整版本: 非常奇怪的问题