乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 126|回复: 9

getSplitCurves方法

[复制链接]

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2006-6-14 17:18:00 | 显示全部楼层 |阅读模式
我正在使用getSplitCurves()方法来破坏AcDbCurve对象,并且所有对象都工作正常,除了使用PEDIT命令转换为样条选项的折线(当您使用该选项时,它们会变成重键)
当我选择该类型的对象时,我的调试解决方案崩溃,但是如果我将其转换为SPLINE,getSplitCurves()工作得很好, 我必须做些什么来避免这种情况。
我很确定我有点(用于参数),它们排序正确,等等.
BTW,即使在我读到的状态错误变量中,也返回eOk枚举....
这是我的一部分代码:
  1. if (pts.isEmpty()) return;
  2. es = pPoly->getSplitCurves(pts,curveSegments);
  3. if (es != Acad::eOk) return;
  4. AcDbObjectId curSpaceId = acdbCurDwg()->currentSpaceId();
  5.                                        
  6. for (int i=0; i  pEnt(objId,AcDb::kForRead);
  7.         if (pEnt.openStatus() == Acad::eOk)
  8.         {
  9.                 es = pPoly->intersectWith(pEnt.object(),AcDb::kOnBothOperands,ints);
  10.                 if (es == Acad::eOk)
  11.                 {
  12.                         if (!ints.isEmpty()) {

回复

使用道具 举报

0

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
3
发表于 2006-6-14 17:44:28 | 显示全部楼层
我注意到问题只存在于与样条拟合的AcDb2dPolyline上,所以我将尝试在进行拆分之前将它们转换为lwpolyline。
回复

使用道具 举报

0

主题

13

帖子

7

银币

初来乍到

Rank: 1

铜币
13
发表于 2006-6-14 17:56:51 | 显示全部楼层
是否有人实现了任何中断函数,而不使用命令中断,即使在C#或任何其他语言或方式/形式中也是如此? 或者遇到与我相同的问题?
或者通常我问这个罕见的问题?  
好吧,必须多学一点。
谢谢。
回复

使用道具 举报

0

主题

8

帖子

4

银币

初来乍到

Rank: 1

铜币
9
发表于 2006-6-14 18:00:31 | 显示全部楼层
路易斯,
我找不到这个问题在我不能在这里提到的其他地方提出..... 我也没有收到他们的回复。
回复

使用道具 举报

0

主题

9

帖子

6

银币

初来乍到

Rank: 1

铜币
12
发表于 2006-6-14 18:08:39 | 显示全部楼层

没问题,杰夫;
我现在陷入了从 k2dCubicSplinePoly 类型的AcDb2dPolyline 到AcDbPolyline的转换中,这似乎是唯一的方法(至少从我自己的角度来看)
现在,如果你在网上搜索,关于这种方法的信息非常非常少.....
再次感谢!
回复

使用道具 举报

0

主题

12

帖子

6

银币

初来乍到

Rank: 1

铜币
13
发表于 2006-6-14 18:13:10 | 显示全部楼层
我打算在adesk objectarx里问一下,看看高手们是否知道。
回复

使用道具 举报

0

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
8
发表于 2006-6-15 11:54:52 | 显示全部楼层
我没有尝试,但你可以从这条曲线(AcDbCurve::getSpline)中获取样条并尝试使用它进行操作。
回复

使用道具 举报

0

主题

8

帖子

6

银币

初来乍到

Rank: 1

铜币
8
发表于 2006-6-15 14:28:48 | 显示全部楼层
谢谢你,亚历山大
是的,我按照您的建议做了,但仍然不走运,返回了这个错误=eGeneralModelingFailure:
这是代码的一部分,我在其中进行了修改。为了运行测试,我的代码中有一个switch语句。
  1. if (pPoly->isKindOf(AcDb2dPolyline::desc()))
  2. {
  3. AcDb2dPolyline *tmp2dPoly = AcDb2dPolyline::cast((AcRxObject*)pPoly.object());
  4. switch (tmp2dPoly->polyType()) {
  5. case AcDb::k2dCubicSplinePoly:
  6.         acutPrintf(_T("\nPolylineType = k2dCubicSplinePoly"));
  7.         AcDbSpline* spline;
  8.         pPoly->getSpline(spline);
  9.         es = spline->getSplitCurves(pts,curveSegments);
  10.         if (es == Acad::eOk)
  11.         {
  12.                 AcDbObjectId curSpaceId = acdbCurDwg()->currentSpaceId();
  13.                 for (int i=0; i (curveSegments[i]);
  14.                         if (tmpCurve) {
  15.                                 AcDbBlockTableRecord *pBlkRec = NULL;
  16.                                 if (acdbOpenObject(pBlkRec,curSpaceId,AcDb::kForWrite) == Acad::eOk)
  17.                                 {
  18.                                         pBlkRec->appendAcDbEntity(tmpCurve);
  19.                                         pBlkRec->close();
  20.                                         tmpCurve->close();
  21.                                 }
  22.                         }
  23.                 }
  24.                 curveSegments.setLogicalLength(0);
  25.         } else {
  26.                 acutPrintf("\nERROR=%s", acadErrorStatusText(es));
  27.                 for (int i = 0; i (curveSegments[i]);
  28.                         delete tmpCurve;
  29.                 }
  30.                 curveSegments.setLogicalLength(0);
  31.         }
  32.         break;

回复

使用道具 举报

0

主题

8

帖子

5

银币

初来乍到

Rank: 1

铜币
8
发表于 2006-6-15 15:11:08 | 显示全部楼层
仍然无法让它工作,因为现在我有一个AcDb::k2dCubicSplinePoly
类型的折线过滤器,我已经尝试过使用转换器()方法,但正如我所说的那样没有工作......有人能告诉我我做错了什么吗?...这是我的代码的一部分,我试图获得一个临时AcDbPolyline,在我看来,代码是正确的,但正常情况下可能不是。
谢谢你。
路易斯。
  1. if (pPoly->isKindOf(AcDb2dPolyline::desc()))
  2. {
  3.         AcDb2dPolyline *tmp2dPoly = AcDb2dPolyline::cast((AcRxObject*)pPoly.object());
  4.         if (tmp2dPoly->polyType() == AcDb::k2dCubicSplinePoly)
  5.         {
  6.                 AcDbPolyline *varPoly = new AcDbPolyline();
  7.                 varPoly->convertFrom((AcDbEntity *&)tmp2dPoly,Adesk::kFalse);
  8.                 acdbOpenObject(varPoly, varPoly->objectId(), AcDb::kForWrite);
  9.                 if (varPoly->getSplitCurves(pts,curveSegments) == Acad::eOk)
  10.                 {
  11.                         AcDbObjectId curSpaceId = acdbCurDwg()->currentSpaceId();
  12.                         for (int i=0; i appendAcDbEntity(pPline);
  13.                                         pBlkRec->close();
  14.                                         pPline->close();
  15.                                 }
  16.                         }
  17.                 }
  18.                 varPoly->close();
  19.                 delete varPoly;
  20.         }
  21. }

回复

使用道具 举报

0

主题

12

帖子

7

银币

初来乍到

Rank: 1

铜币
13
发表于 2006-6-15 15:17:07 | 显示全部楼层
我明白了为什么……我应该更仔细地阅读帮助函数。

这将用来自pEnt指向的AcDb2dPolyline的数据填充AcDbPolyline。pEnt必须指向数据
基中ACDB2DPPolyline对象的k2dSimplePoly或k2dFitCurvePoly类型”
意味着convertFrom()不适用于K2Dcubicsplyline类型。…hmmmmm
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 18:47 , Processed in 0.272041 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表