多段线是AcDbPolyline类形成的。
现在判断出两个实体相交,如果要求面积,可以首先形成面域或构造闭合多义线,都可以得到面积。现在的情况是如何构造?? 如果你不知道构成面域的实体,那你就得自己写算法实现求轮廓的函数,
或者你用acedCommand调边界来求。。。。。。
帮不了你,太复杂,没那么多时间的,
只能帮你提供参考意见 实体知道。但是两个实体相交得到的面域可能不止一个。如何选择那个是????? “两个实体相交得到的面域可能不止一个“
不明白,请贴图说明
命令: _region<BR>选择对象: 找到 1 个<BR>选择对象: 找到 1 个,总计 2 个<BR>选择对象:<BR>已提取 2 个 环。<BR>已创建 2 个 面域。
我用工具栏上的命令:(面域),分别选择了两个实体,结果提示已经创建了两个面域,?我的问题主要是要他们相交的部分 也就是一个AcDbFace(四个点)类和AcDbPolyline类的求交集的面积问题 你用这两个面域,然后求交呀!! 版主说的只有在两个封闭时才能用。但楼主说的可不是这样,我觉得有个简单的办法,就是用boundary命令。我以前曾企图写个这样的算法,可是效果不太理想,便作罢了。 是要封闭,搂主给的例子也是封闭的呀,
是可以用boundary,有一定限制
最好自己写算法 我这样做的<BR> AcDbVoidPtrArray curveSegments,regions;<BR> curveSegments.append(pFace);<BR> curveSegments.append(pPoly);
AcDbRegion reg;<BR> if(Acad::eInvalidInput==reg.createFromCurves(curveSegments,regions))<BR> acutPrintf("不合法\n");
double regArea;<BR> reg.getArea(regArea);<BR> reg.close();<BR> acutPrintf("area=%0.3f\n",regArea);
可能是我理解错了。createFromCurves函数的该怎么使用??<BR> AcDbVoidPtrArray regions;<BR> AcDbRegion::createFromCurves(entities, regions);
if (regions.length() < 1) <BR> {<BR> return Acad::eInvalidInput;<BR> }<BR> AcDbRegion *pRegion = new AcDbRegion;<BR> assert(pRegion != NULL);
for (int i = 0; i < regions.length(); i++)<BR> {<BR> pRegion->booleanOper(AcDb::kBoolUnite,(AcDbRegion*)regions);//AcDb::kBoolUnite自己用什么类型自己查<BR> delete (AcRxObject*)regions;<BR> }
......
页:
1
[2]