找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 183|回复: 1

[分享] AcDbRegion 和 AdDbPolyline 使用 intersectWith 方法时的 Bug 解决方法

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-2-26 10:31:55 | 显示全部楼层 |阅读模式
  1. 如果 pEnt1 为 AcDbRegion ,pEnt2 为 AcDbPolyline
  2. pEnt1->intersectWith(pEnt2,Intersect::kOnBothOperands,pts);
  3. 此时交点为 nil,解决方法,交换顺序
  4. AcGePoint3dArray pts;
  5.                 Acad::ErrorStatus es=pEnt1->intersectWith(pEnt2,Intersect::kOnBothOperands,pts);
  6.                 if (es!=Acad::eOk)
  7.                 {
  8.                         return RTNORM;
  9.                 }
  10.                 if (pts.logicalLength()==0)
  11.                 {
  12.                         pts.setLogicalLength(0);
  13.                         pts.setPhysicalLength(0);
  14.                         es=pEnt2->intersectWith(pEnt1,Intersect::kOnBothOperands,pts);
  15.                 }
  16.                 if (es!=Acad::eOk)
  17.                 {
  18.                         return RTNORM;
  19.                 }
复制代码

0

主题

0

回帖

26

积分

管理员

积分
26
 楼主| 发表于 2024-2-26 10:32:22 | 显示全部楼层
使用下列函授解决了!
ACDB采用PORT ADESK采用SEALED采用VIRTUAL Acad::ErrorStatus intersectWith(
    const AcDbEntity* pEnt,
    AcDb::Intersect intType,
    const AcGePlane& projPlane,
    AcGePoint3dArray& points,
    Adesk::GsMarker thisGsMarker = 0,
    Adesk::GsMarker otherGsMarker = 0
) const;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 13:45 , Processed in 0.119242 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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