masterlong 发表于 2014-12-28 19:45:16

vla-ZoomWindow窗口显示不居中的问题

(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
本意是希望调整窗口尺寸后
绘制的矩形居中窗口
但实际运行的效果
矩形是按最大化的窗口来居中的
而不是按调整后窗口来居中的
这段代码哪里有问题
或者需要增加什么代码?

masterlong 发表于 2014-12-29 18:25:14

顶一下
因为是在对话框中zoom
没法command

masterlong 发表于 2014-12-30 10:00:48

终于找到解决办法了
把最后一句zoomwindows定义为一个子程序
然后用vla-sendcommand发送执行
这样就可以居中了
手机上就不发完整代码了

o只是过客o 发表于 2015-5-2 10:02:01

masterlong 发表于 2014-12-30 10:00 static/image/common/back.gif
终于找到解决办法了
把最后一句zoomwindows定义为一个子程序
然后用vla-sendcommand发送执行


为什么我试了半天还是不行啊
求指导

o只是过客o 发表于 2015-5-2 11:13:52

masterlong 发表于 2014-12-30 10:00 static/image/common/back.gif
终于找到解决办法了
把最后一句zoomwindows定义为一个子程序
然后用vla-sendcommand发送执行


求完整代码

masterlong 发表于 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)
)

o只是过客o 发表于 2015-5-4 22:09:35

masterlong 发表于 2015-5-4 19:04 static/image/common/back.gif
(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,可是似乎是不行.
页: [1]
查看完整版本: vla-ZoomWindow窗口显示不居中的问题