访问基准点
ProPointIdGet() --获得基准点的标识符
ProPointInit() --获取指定标识符的基准点的句柄,基准点也是一个模糊句柄,用ProPoint来定义。
ProPointToGeomitem()--将基准点句柄转换为几何元素句柄。
ProGeomitemToPoint()--将几何元素句柄转换为基准点
要获取一个模型的所有基准点,需要使用ProSolidFeatVisit()或者 ProFeatureGeomitemVisit() 来访问。
访问基准平面
ProSurfaceInit()-- 获取指定标识符的基准平面的句柄,基准平面也是一个模糊句柄,用ProSurface来定义。
ProSurfaceIdGet() --获得基准平面的标识符
ProSurfaceToGeomitem()--将基准平面句柄转换为几何元素句柄。
ProGeomitemToSurface()--将几何元素句柄转换为基准平面句柄
要获取一个模型的所有基准平面,需要使用ProSolidFeatVisit()或者 ProFeatureGeomitemVisit() 来访问。
可以使用下面的函数获取特征为p_featuer的所有类型为item_type的几何元素集合,然后通过转换获取相应的基准点或者基准平面。
ProError ProUtilCollectFeatureGeomitems( ProFeature *p_feature, ProType item_type,ProGeomitem **p_geomitems )
{
ProError status;
if( p_geomitems != NULL )
{
status = ProArrayAlloc( 0, sizeof(ProGeomitem), 1,
(ProArray*)p_geomitems );
if( status == PRO_TK_NO_ERROR )
{
status = ProFeatureGeomitemVisit( p_feature, item_type,
(ProGeomitemAction)ProUtilCollect3ParamDBVisitAction,
(ProGeomitemFilter)ProUtilDefaultFilter,
(ProAppData)&p_geomitems );
if( status != PRO_TK_NO_ERROR )
{
ProArrayFree( (ProArray*)p_geomitems );
*p_geomitems = NULL;
}
}
}
else
status = PRO_TK_BAD_INPUTS;
return (status);
}
ProError ProUtilCollect3ParamDBVisitAction(
void *p_object, /* In: The pointer to the object
being visited */
ProError status, /* In: The status returned by filter func */
ProAppData app_data) /* In: In fact it's ProArray** */
{
return (ProUtilCollect2ParamDBVisitAction(p_object, app_data));
}
ProError ProUtilCollect2ParamDBVisitAction(
void *p_object, /* In: The pointer to the object
being visited */
ProAppData app_data) /* In: In fact it's ProArray** */
{
ProError status;
ProArray *p_array;
p_array = (ProArray*)((void**)app_data)[0];
status = ProArrayObjectAdd(p_array, PRO_VALUE_UNUSED, 1, p_object );
return (status);
}