找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1921|回复: 2

[求助] ObjectArx 如何实现矩形阵列

[复制链接]

已领礼包: 2个

财富等级: 恭喜发财

发表于 2014-11-14 16:35:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
以下是我做矩形阵列的代码,请大侠们办我分析一下错误原因,如何让函数AcAxArrayRectangular返回的HRESULT的值大于等于0
  1. Acad::ErrorStatus es;
  2.     ads_name ent;
  3.     ads_point pt;
  4.     AcDbObjectId Id;
  5.        LPDISPATCH pDisp;
  6.        VARIANT pArrayObjs;
  7.        HRESULT hr;
  8.     BeginEditorCommand();
  9.     if (m_ss[0]!=0L||m_ss[1]!=0L)
  10.     {
  11.         //acedSSFree(m_ss);
  12.         m_ss[0] = m_ss[1] = 0L;
  13.     }
  14.     //acedSSGet(_T(":S"),NULL,NULL,NULL,m_ss);
  15.     if (acedEntSel(_T("\n请选择对象..."),m_ss,pt)==RTNORM)
  16.     {
  17.         CompleteEditorCommand();

  18.         //通过对象标识转换函数得到为对象id
  19.         es=acdbGetObjectId(Id,m_ss);
  20.         if (Acad::eOk==es)
  21.         {
  22.             acutPrintf(_T("\n选择对象成功,开始阵列"));
  23.             pDisp = acedGetAcadWinApp()->GetIDispatch(TRUE);
  24.             VariantInit(&pArrayObjs);
  25.             V_VT(&pArrayObjs)=VT_ARRAY|VT_DISPATCH;

  26.             hr=AcAxArrayRectangular(Id,pDisp,1,3,1,1,20,1,&pArrayObjs);
  27.             if (SUCCEEDED(hr))
  28.             {
  29.                 acutPrintf(_T("\n成功"));
  30.             }
  31.             else if(FAILED(hr))
  32.             {
  33.                 acutPrintf(_T("\n失败"));
  34.             }
  35.         }
  36.         else{
  37.             acutPrintf(_T("error"));
  38.         }
  39.     }
  40.     else
  41.     {
  42.         CancelEditorCommand();
  43.     }

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-14 19:11:57 | 显示全部楼层
既然你用了ARX,怎么还用COM?

直接构造平移变换矩阵

mat.setToTranslation(...);

然后对实体transFormedCopy 就行了。

点评

有现成的函数想直接用一下没有成功。现在我已经用矩阵变换实现了,谢谢  详情 回复 发表于 2014-11-17 08:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2014-11-17 08:53:11 | 显示全部楼层
XDSoft 发表于 2014-11-14 19:11
既然你用了ARX,怎么还用COM?

直接构造平移变换矩阵

有现成的函数想直接用一下没有成功。现在我已经用矩阵变换实现了,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-24 14:35 , Processed in 0.442977 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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