明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2690|回复: 6

[已解答] vla-ZoomWindow窗口显示不居中的问题

[复制链接]
发表于 2014-12-28 19:45:16 | 显示全部楼层 |阅读模式
(defun c:tt()

;;关闭特性窗口,并绘制一个矩形
(command "_propertiesclose")
(command "rectang" "non" '(0 0) "non" '(500 200))

;;调整CAD窗口尺寸
(setq *acad* (vlax-get-acad-object))
(vla-put-WindowState *acad* 3)
(setq acadWidth (vla-get-Width *acad*))
(setq acadHeight (vla-get-Height *acad*))
(vla-put-WindowState *acad* 1)
(vla-put-WindowLeft *acad* 800)
(vla-put-WindowTop *acad* 0)
(vla-put-Width *acad* (- acadWidth 800 4))
(vla-put-Height *acad* (- acadHeight 4))

;;以上代码没有问题

;;下面改变视窗以居中显示矩形————但没有达到预期的效果
;;矩形的实际位置是按最大化窗口居中的
;;而不是按当前窗口居中的

;;;;;;;;;;;;;;;;;;;;貌似这里应该还需要加一段代码来“刷新窗口数据”

(vla-ZoomWindow *acad* (vlax-3d-point '(-5 -5)) (vlax-3d-point '(505 205)))

(princ)
)

CAD最大化时加载这段代码运行TT
本意是希望调整窗口尺寸后
绘制的矩形居中窗口
但实际运行的效果
矩形是按最大化的窗口来居中的
而不是按调整后窗口来居中的
这段代码哪里有问题
或者需要增加什么代码?

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2014-12-29 18:25:14 来自手机 | 显示全部楼层
顶一下
因为是在对话框中zoom
没法command
 楼主| 发表于 2014-12-30 10:00:48 来自手机 | 显示全部楼层
终于找到解决办法了
把最后一句zoomwindows定义为一个子程序
然后用vla-sendcommand发送执行
这样就可以居中了
手机上就不发完整代码了
发表于 2015-5-2 10:02:01 | 显示全部楼层
masterlong 发表于 2014-12-30 10:00
终于找到解决办法了
把最后一句zoomwindows定义为一个子程序
然后用vla-sendcommand发送执行

为什么我试了半天还是不行啊
求指导
发表于 2015-5-2 11:13:52 | 显示全部楼层
masterlong 发表于 2014-12-30 10:00
终于找到解决办法了
把最后一句zoomwindows定义为一个子程序
然后用vla-sendcommand发送执行

求完整代码
 楼主| 发表于 2015-5-4 19:04:16 | 显示全部楼层
(defun c:tt()
        ;;关闭特性窗口,并绘制一个矩形
        (command "_propertiesclose")
        (command "rectang" "non" '(0 0) "non" '(500 200))
       
        ;;调整CAD窗口尺寸
        (setq *acad* (vlax-get-acad-object))
        (vla-put-WindowState *acad* 3)
        (setq acadWidth (vla-get-Width *acad*))
        (setq acadHeight (vla-get-Height *acad*))
        (vla-put-WindowState *acad* 1)
        (vla-put-WindowLeft *acad* 800)
        (vla-put-WindowTop *acad* 0)
        (vla-put-Width *acad* (- acadWidth 800 4))
        (vla-put-Height *acad* (- acadHeight 4))
        ;;以上代码没有问题
       
        ;;不能直接执行以下代码
        ;;(vla-ZoomWindow *acad* (vlax-3d-point '(-5 -5)) (vlax-3d-point '(505 205)))
       
        ;;要在改变了CAD窗口以后视口居中,只能采用vla-sendcommand方式
        (setq *doc* (vla-get-ActiveDocument *acad*))
        (vla-sendcommand *doc* "(do_zoomWindow) ")
(princ)
)

(defun do_zoomWindow()
        (vla-ZoomWindow *acad* (vlax-3d-point '(-5 -5)) (vlax-3d-point '(505 205)))
(princ)
)
发表于 2015-5-4 22:09:35 | 显示全部楼层
masterlong 发表于 2015-5-4 19:04
(defun c:tt()
        ;;关闭特性窗口,并绘制一个矩形
        (command "_propertiesclose")

(defun c:tt ()
  (setq DWGNAME "C:\\Users\\123\\Desktop\\CADTEST\\Drawing1.dwg")
  (setq APP (vlax-get-acad-object))
  (setq acdo (vla-get-activedocument app))
  (setq WW (vla-open (vla-get-documents APP) DWGNAME))
  (vla-activate ww)
  (setq APP (vlax-get-acad-object))
  (setq *doc* (vla-get-ActiveDocument APP))
  (vla-sendcommand *doc* "(do_zoomWindow)")
)

(defun do_zoomWindow()
        (vla-ZoomWindow *acad* (vlax-3d-point '(-5 -5)) (vlax-3d-point '(505 205)))
(princ)
)

是我的想法太天真了吗?我打算打开一个已有的图形来实现zoom,可是似乎是不行.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-22 03:33 , Processed in 0.172004 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表