找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1705|回复: 7

[求助] [已解决]getTrimmedOffset怎么用的啊

[复制链接]

已领礼包: 28个

财富等级: 恭喜发财

发表于 2019-4-17 15:20:58 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 1121443108qaz 于 2019-4-18 13:30 编辑

我按照下面代码写结果偏移不成功,新生成的对象和原对象不模一样,关键getTrimmedOffset返回void,我没法用返回值判断问题在哪里。
  1. void MyUtil::offset(AcDbCurve*  pCurve, double offsetValue)
  2. {
  3.          AcGeCurve3d* pGeCurve3d = NULL;
  4.          AcDbCurve *pNewCurve = NULL;
  5.          AcGeCurve3d *pNewGeCurve3d = NULL;
  6.          AcGeVoidPointerArray offsetCurves=NULL;
  7.          if (pCurve->getAcGeCurve(pGeCurve3d)==Acad ::eOk)
  8.          {
  9.                   pGeCurve3d->getTrimmedOffset(offsetValue, AcGeVector3d(0, 0, 1), offsetCurves);
  10.                  acutPrintf(L"\nlength is %d", offsetCurves.length());
  11.                  for (int i=0;i<offsetCurves.length();i++)
  12.                  {
  13.                          pNewGeCurve3d = (AcGeCurve3d *)offsetCurves.at(i);
  14.                          acdbConvertGelibCurveToAcDbCurve(*pGeCurve3d, pNewCurve);
  15.                          CDwgDatabaseUtil::postToMOdelSpace(pNewCurve);
  16.                          delete pNewGeCurve3d;
  17.                  }
  18.                  delete pGeCurve3d;
  19.          }
  20. }

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

已领礼包: 20个

财富等级: 恭喜发财

发表于 2019-4-17 21:35:46 | 显示全部楼层
acutPrintf(L"\nlength is %d", offsetCurves.length());

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

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2019-4-17 22:00:36 来自手机 | 显示全部楼层
[quote]marting 发表于 2019-4-17 21:35
acutPrintf(L

打印出来了,数量是1啊,我用矩形 圆 和直线测试都是这样
来自: 微社区

点评

那就把结果GE实体生成DB曲线,添加到数据库,看看给你生成的是什么就知道了  详情 回复 发表于 2019-4-17 22:07
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2019-4-17 22:07:10 | 显示全部楼层
1121443108qaz 发表于 2019-4-17 22:00
[quote]marting 发表于 2019-4-17 21:35
acutPrintf(L

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

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2019-4-17 22:15:07 来自手机 | 显示全部楼层
marting 发表于 2019-4-17 22:07
那就把结果GE实体生成DB曲线,添加到数据库,看看给你生成的是什么就知道了

你看我代码上是用acdbconvertgelibcuvetodbcurve这个函数转为db曲线的,最终它生成了一个新的曲线,但是这个曲线和我未偏移的曲线是一样的。所以我完全没搞明白问题出在哪里了。
来自: 微社区

点评

XDRX API 测试 [attachimg]87437[/attachimg] 你试试加上 AcGe::OffsetCrvExtType extensionType , 0,1,2分别给下  详情 回复 发表于 2019-4-17 22:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2019-4-17 22:41:27 | 显示全部楼层
1121443108qaz 发表于 2019-4-17 22:15
你看我代码上是用acdbconvertgelibcuvetodbcurve这个函数转为db曲线的,最终它生成了一个新的曲线,但是 ...

XDRX API 测试

  1. (defun c:tt ()
  2.   (xdrx_begin)
  3.   (if (and (setq dis (getreal "\n输入偏移距离<退出>:"))
  4.            (setq e (car        (xdrx_entsel
  5.                           "\n选择曲线<退出>:"
  6.                           '((0 . "CIRCLE,LINE,ELLIPSE,*POLYLINE"))
  7.                         )
  8.                    )
  9.            )
  10.            (setq g (xdge::constructor e))
  11.            (setq gs (xdge::getpropertyvalue
  12.                       g        "getTrimmedOffset" dis '(0 0 1.0) 2)
  13.            )
  14.       )
  15.     (progn (xdge::entity:make gs))
  16.   )
  17.   (xdrx_end)
  18.   (princ)
  19. )


搜狗截图20190417223818.png


你试试加上 AcGe::OffsetCrvExtType extensionType , 0,1,2分别给下

点评

是我傻了, acdbConvertGelibCurveToAcDbCurve(*pNewGeCurve3d, pNewCurve);这一句应该这样,之前传的总是原曲线的ge曲线。  详情 回复 发表于 2019-4-17 23:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2019-4-17 23:32:20 | 显示全部楼层

是我傻了, acdbConvertGelibCurveToAcDbCurve(*pNewGeCurve3d, pNewCurve);这一句应该这样,之前传的总是原曲线的ge曲线。

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2019-4-17 23:41:47 | 显示全部楼层
1121443108qaz 发表于 2019-4-17 23:32
是我傻了, acdbConvertGelibCurveToAcDbCurve(*pNewGeCurve3d, pNewCurve);这一句应该这样,之前传的总 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 05:10 , Processed in 0.316532 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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