您的位置:首页 > 其它

Creo二次开发--函数(七)--尺寸遍历操作函数

2013-02-02 21:43 423 查看
特别声明:由于最近发现好多网站在转载的过程中没有声明出处,更有甚者将文章直接改头换面就作为自己的东西了。所以放缓了发布的节奏。

另外,原本打算的实例部分也将直接发布到豆丁网上。下周将完成尺寸部分修改的实例。将给出具体的详细说明。

ProSolidDimensionVisit--访问实体中的所有尺寸对象。需要定义访问动作函数及过滤函数。

以下代码来自Toolkit的帮助文件,实现了将对象的所有尺寸对象收集到pp_dims这个数组中的过程。

/*=========================================================================*\
目的:	尺寸访问动作函数,将所访问的尺寸对象添加到data所指示的数组中
返回值:	PRO_TK_NO_ERROR - success;
\*=========================================================================*/

ProError ProUtilCollectDimVisitAction (ProDimension *dimension,
ProError     filter_status, /* ignored */
ProAppData   data)
{
ProDimension **p_dims = (ProDimension**)data;
ProDimension cur_dim;

cur_dim.owner = dimension->owner;
cur_dim.id = dimension->id;

//转载请注明http://blog.csdn.net/jh2005
cur_dim.type = dimension->type;
ProArrayObjectAdd((ProArray*)p_dims, PRO_VALUE_UNUSED, 1, &cur_dim);

return PRO_TK_NO_ERROR;
}
/*=========================================================================*\
Function:	ProUtilCollectDimensions()
Purpose:	Return a list of dimensions in the part, assembly, or drawing
Returns:	PRO_TK_NO_ERROR - success;
PRO_TK_BAD_INPUTS - invalid parameters
\*=========================================================================*/
ProError ProUtilCollectDimension(
ProMdl	model,	    /* In:  The handle to the model */
ProBoolean   refdim,    /* In:  PRO_B_TRUE for collecting reference dimensions,
PRO_B_FALSE for collecting standard dimensions */
ProDimension **pp_dims   /* Out: ProArray with collected dimensions.
The function allocates memory
for this argument, but you must
free it. To free the memory,
call the function ProArrayFree()*/
)
{

//转载请注明http://blog.csdn.net/jh2005
int n;
ProError status;

status = ProArrayAlloc( 0, sizeof(ProDimension), 1, (ProArray*)pp_dims);
if( status == PRO_TK_NO_ERROR )
{
status = ProSolidDimensionVisit( (ProSolid)model, refdim,
(ProDimensionVisitAction)ProUtilCollectDimVisitAction,
(ProDimensionFilterAction)NULL,
(ProAppData)pp_dims);
}

ProArraySizeGet((ProArray*)pp_dims, &n);
if (n==0)
{
status = PRO_TK_E_NOT_FOUND;
}

return (status);

}

转载请注明http://blog.csdn.net/jh2005
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: