模型有计算自己包围盒的二次开发函数,但是有时候我们计算干涉或某几个特征之间的几何关系时,则需要根据面的包围盒进行计算,:
(1)获得指定特征句柄
(2)遍历此特征下的几何项,获得所有面
(3)通过下面方法计算包围盒
//获取面的边界
status = ProSurfaceContourVisit(tempSurf,
(ProSurfaceContourVisitAction)SolidSurface3ParamVisitAction,
(ProSurfaceContourFilterAction)SolidSurfaceVisitFilter1,
(ProAppData)&pp_contour);
if(status != PRO_TK_NO_ERROR)
{
if (NULL != pp_contour)
{
status = ProArrayFree((ProArray*)pp_contour);
if (PRO_TK_NO_ERROR != status)
{
return status;
}
}
if (geomItemList.size() == 1)
{
return PRO_TK_NO_ERROR;
}
else
{
continue;
}
}
int iContour = 0;
p_Contour = *pp_contour;
status = ProArraySizeGet((ProArray)p_Contour, &iContour);
if (PRO_TK_NO_ERROR != status)
{
return status;
}
// 循环:查找外轮廓
for (int j = 0;j<iContour;j++)
{
ProContourTraversal tra;
status = ProContourTraversalGet(p_Contour[j], &tra);
// 判断:是否是外轮廓
if (tra != PRO_CONTOUR_TRAV_EXTERNAL)
{
continue;
}
// 获取包围盒
status = ProContourBoundbox3dCompute(tempSurf, p_Contour[j], tempBox);
if (PRO_TK_NO_ERROR != status)
{
return status;
}
}
status = ProArrayFree((ProArray*)pp_contour);
if (PRO_TK_NO_ERROR != status)
{
return status;
}