明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3400|回复: 12

视口缩放->寻求帮助!

  [复制链接]
发表于 2005-11-30 14:24:00 | 显示全部楼层 |阅读模式

  acedCommand(RTSTR, "Zoom", RTSTR, "Window", RTPOINT, dZoomMin,
     RTPOINT, dZoomMax, RTNONE);

上面是我用command命令实现的视口缩放的功能,

请问如果不用command命令,该怎么做呢?

寻求帮助,谢谢!!!

发表于 2005-11-30 23:08:00 | 显示全部楼层

reply

在vba中已经发过了:

void zoomExtents()
{
 // get the extents of the drawing
 AcDbViewTableRecord view;
 AcGePoint3d max = acdbHostApplicationServices()->workingDatabase()->extmax(),
  min = acdbHostApplicationServices()->workingDatabase()->extmin();

 AcGePoint2d max_2d (max[X], max[Y]);
 AcGePoint2d min_2d (min[X], min[Y]);
 // now set the view center point
 view.setCenterPoint (min_2d + (max_2d - min_2d) / 2.0);
 // now height and width of view
 view.setHeight(max_2d[Y] - min_2d[Y]);
 view.setWidth(max_2d[X] - min_2d[X]);
 // set the view
 acedSetCurrentView (&view, NULL);
 // updates the extents
 acdbHostApplicationServices()->workingDatabase()->updateExt(TRUE);
}

 楼主| 发表于 2005-12-1 13:53:00 | 显示全部楼层

非常感受到谢你,,

因为第一次发错了,所以在ARX里重发了一下,

感谢你两次的回答,

 

 楼主| 发表于 2005-12-1 14:23:00 | 显示全部楼层

帖子相同问题:

  acedCommand(RTSTR , "Zoom", RTSTR, "Extents", RTNONE );
这个功能如果不用COMMAND命令来实行,

该如何来作呢,,

又一次麻烦您,,,谢谢!!!

发表于 2005-12-1 14:41:00 | 显示全部楼层

reply

void zoomExtents()
{
 // get the extents of the drawing
 AcDbViewTableRecord view;
 AcGePoint3d max = acdbHostApplicationServices()->workingDatabase()->extmax(),
  min = acdbHostApplicationServices()->workingDatabase()->extmin();

 AcGePoint2d max_2d (max[X], max[Y]);
 AcGePoint2d min_2d (min[X], min[Y]);
 // now set the view center point
 view.setCenterPoint (min_2d + (max_2d - min_2d) / 2.0);
 // now height and width of view
 view.setHeight(max_2d[Y] - min_2d[Y]);
 view.setWidth(max_2d[X] - min_2d[X]);
 // set the view
 acedSetCurrentView (&view, NULL);
 // updates the extents
 acdbHostApplicationServices()->workingDatabase()->updateExt(TRUE);
}

 楼主| 发表于 2005-12-1 15:06:00 | 显示全部楼层

acdbHostApplicationServices()->workingDatabase()->updateExt(TRUE);
最后的这句话一定要加吗?

我去掉了测试对程序没有影响,

请告知加上这句话的目的,

谢谢!!!

发表于 2005-12-1 17:24:00 | 显示全部楼层

reply

只是作一次刷新,影响不是很大.
 楼主| 发表于 2005-12-2 16:04:00 | 显示全部楼层

发现了一点问题:

我用你教我的方法进行视口缩放跟

用 acedCommand(RTSTR , "Zoom", RTSTR, "Extents", RTNONE );
进行缩放后的效果不一致,

command命令实现的效果要小一些。

不知道是什么原因?请指教!!!

 楼主| 发表于 2005-12-2 16:21:00 | 显示全部楼层

本来想把截图贴上来的,但是说太大了,传不上来,

麻烦你帮忙看一下吧,

就是用你贴的代码将图缩放后图的上下端会接挨着视口,

但是用command命令缩放后,图的上下端与视口之间有一点距离,就是比代码缩放的图略小一些。

 

发表于 2005-12-2 23:32:00 | 显示全部楼层

reply

你需要的这么细吗?

如果像你说的,那么有可能Zoom命令对视野显示作了"加工",Zoom Extents让图形紧贴着视口边缘显示不好,就扩大了一些,猜测!

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

本版积分规则

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

GMT+8, 2024-11-26 02:56 , Processed in 0.199117 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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