找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 66|回复: 0

ObjectARX计算重复的

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-7-11 15:49:41 | 显示全部楼层 |阅读模式
  1. double overlapInDir(AcDbEntity *pline1, AcDbEntity *pline2, const AcGeVector3d &vDir)
  2. {       
  3.         double angle = vDir.angleTo(AcGeVector3d::kXAxis, AcGeVector3d::kZAxis);
  4.         AcGeMatrix3d mat;
  5.         mat.setToRotation(-angle, AcGeVector3d::kZAxis);
  6.                
  7.         AcDbEntity *plineRot1=nullptr, *plineRot2=nullptr;
  8.         Acad::ErrorStatus es;
  9.         es = pline1->getTransformedCopy(mat, plineRot1);
  10.         es = pline2->getTransformedCopy(mat, plineRot2);
  11.         AcDbExtents ext1, ext2;
  12.         es = plineRot1->getGeomExtents(ext1);
  13.         es = plineRot2->getGeomExtents(ext2);
  14.         delete plineRot1;
  15.         delete plineRot2;
  16.         double l1 = ext1.minPoint().x, r1 = ext1.maxPoint().x;
  17.         double l2 = ext2.minPoint().x, r2 = ext2.maxPoint().x;
  18.         double l = std::max(l1,l2), r = std::min(r1,r2);
  19.         double overlap = r - l;
  20.         return overlap;
  21. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-27 21:42 , Processed in 0.146097 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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