明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4994|回复: 8

[求助]如何获得CAD视图的左下角和右上角的坐标(ObjectARX)

[复制链接]
发表于 2010-6-22 17:10:00 | 显示全部楼层 |阅读模式
比如在cad上画了很多图形,然后绘图过程中会用到很多次缩放.我的目标是给一个命令,可以让所有的图形摆放到界面的中心,并且比例合适。
所以,要首先获得所有图形的左下角和右上角的坐标,请问高手如何做到那,谢谢。PS我现在用的是ObjectARX 2007
发表于 2010-6-22 19:00:00 | 显示全部楼层
这个简单,让我帮你写一个!
发表于 2010-6-22 19:52:00 | 显示全部楼层

static void ROYMyTest_Test2(void)
 {
  // Add your code for command ROYMyTest._Test2 here
  ads_name ssName;
  long ssLength;
  if (acedSSGet(_T("A"),NULL,NULL,NULL,ssName)!=RTNORM
   || acedSSLength(ssName,&ssLength)!=RTNORM)
   return;
  AcDbObjectId EntID;
  ads_name eName;
  AcDbEntity *pEnt;
  AcDbExtents extent;
  AcGePoint3d MaxPt,MinPt;
  Adesk::Boolean isFirstSet=Adesk::kTrue;
  for (long i=0;i<ssLength;i++)
  {
   if (acedSSName(ssName,i,eName)!=RTNORM
    || acdbGetObjectId(EntID,eName)!=Acad::eOk
    || acdbOpenAcDbEntity(pEnt,EntID,AcDb::kForRead)!=Acad::eOk)
    continue;
   if (pEnt->getGeomExtents(extent)!=Acad::eOk)
   {
    pEnt->close();
    continue;
   }
   pEnt->close();
   if (isFirstSet)
   {
    MaxPt=extent.maxPoint();
    MinPt=extent.minPoint();
    isFirstSet=Adesk::kFalse;
   }
   else
   {
    if (MaxPt.x<extent.maxPoint().x)
     MaxPt.x=extent.maxPoint().x;
    if (MaxPt.y<extent.maxPoint().y)
     MaxPt.y=extent.maxPoint().y;
    if (extent.minPoint().x<MinPt.x)
     MinPt.x=extent.minPoint().x;
    if (extent.minPoint().y<MinPt.y)
     MinPt.y=extent.minPoint().y;
   }
  }
  acedSSFree(ssName);

  acedCommand(RTSTR,_T("ZOOM"),
   RTSTR,_T("W"),
   RTPOINT,asDblArray(MinPt),
   RTPOINT,asDblArray(MaxPt),
   RTNONE);
 }

发表于 2010-6-22 19:53:00 | 显示全部楼层
以上代码仅适用于CAD2008,仅作参考!
 楼主| 发表于 2010-6-23 11:17:00 | 显示全部楼层

rongyifei 兄,谢谢啦,我拿回去钻研一下。

 楼主| 发表于 2010-6-23 11:18:00 | 显示全部楼层
加你为好友,多向你学习。
发表于 2010-6-25 21:39:00 | 显示全部楼层
QQ:1258433045,有空聊聊!
发表于 2010-6-28 10:15:00 | 显示全部楼层

已阅!

发表于 2014-12-13 01:13:05 | 显示全部楼层
rongyifei 发表于 2010-6-22 19:52
static void ROYMyTest_Test2(void)&nbsp;{&nbsp;&nbsp;// Add your code for command ROYMyTest._Test2 he ...

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

本版积分规则

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

GMT+8, 2024-11-25 07:46 , Processed in 0.178538 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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