utilvisit.c
来自「Pro.TOOLKIT.Wildfire插件设计.配套光盘-141M.zip」· C语言 代码 · 共 568 行 · 第 1/2 页
C
568 行
return NO ERROR, else return CONTINUE\*--------------------------------------------------------------------*/ if(ftype == PRO_FEAT_COMPONENT) return(PRO_TK_NO_ERROR); return(PRO_TK_CONTINUE);}/*=========================================================================*\ Function: ProUtilFeatvisFilterAction() Purpose: Filter function for ProSolidFeatVisit, allow to visit only visible features Returns: PRO_TK_NO_ERROR - feature visible PRO_TK_CONTINUE - otherwise\*=========================================================================*/ProError ProUtilFeatvisFilterAction( ProFeature *p_feature, /* In : the feature */ ProAppData app_data) /* In : appdata (not used) */{ ProError status; ProBoolean visible; status = ProFeatureVisibilityGet(p_feature, &visible); TEST_CALL_REPORT("ProFeatureVisibilityGet()", "ProUtilFeatvisFilterAction()", status, status != PRO_TK_NO_ERROR); if (status == PRO_TK_NO_ERROR) status = (visible == PRO_B_TRUE ? PRO_TK_NO_ERROR : PRO_TK_CONTINUE); return (status);}/*=========================================================================*\ Function: ProUtilByNameFilterAction() Purpose: Allow to visit only modelitem with a specified name Returns: PRO_TK_NO_ERROR - success; PRO_TK_CONTINUE - no valid modelitem found\*=========================================================================*/ProError ProUtilByNameFilterAction( ProModelitem *p_modelitem, /* In : The modelitem */ FindByName *p_findbyname) /* In : The find structure */{ ProName name; ProError status; status = ProModelitemNameGet(p_modelitem, name); TEST_CALL_REPORT("ProModelitemNameGet()", "ProUtilFindByNameFilterAction()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_E_NOT_FOUND); if (status == PRO_TK_NO_ERROR) { if (ProUtilWstrCmp(p_findbyname->name, name)==0) status = PRO_TK_NO_ERROR; else status = PRO_TK_CONTINUE; } else if (status == PRO_TK_E_NOT_FOUND) status = PRO_TK_CONTINUE; return (status);}/*=========================================================================*\ Function: ProUtilFeatvisByNameFilterAction() Purpose: Allow to visit only visible features with a specified name Returns: PRO_TK_NO_ERROR - success; PRO_TK_CONTINUE - no valid feature found found\*=========================================================================*/ProError ProUtilFeatvisByNameFilterAction( ProFeature *p_feature, /* In : The feature */ FindByName *p_findbyname) /* In : The find structure */{ ProError status; status = ProUtilFeatvisFilterAction(p_feature, NULL); if (status == PRO_TK_NO_ERROR) status = ProUtilByNameFilterAction((ProModelitem*)p_feature, p_findbyname); return (status);}/*=========================================================================*\ Function: ProUtilGeomitemactiveFilterAction() Purpose: Filter function for ProFeatureGeomitemVisit, allow to visit only active geomitems Returns: PRO_TK_NO_ERROR - feature visible PRO_TK_CONTINUE - otherwise\*=========================================================================*/ProError ProUtilGeomitemactiveFilterAction( ProGeomitem *p_geomitem, /* In : the geomitem */ ProAppData app_data) /* In : appdata (not used) */{ ProBoolean test; ProError status; TEST_CALL_REPORT( "ProGeomitemFilter", "ProUtilGeomitemactiveFilterAction", PRO_TK_NO_ERROR, 0 ); status = ProGeomitemIsInactive(p_geomitem, &test); TEST_CALL_REPORT("ProGeomitemIsInactive()", "ProUtilGeomitemactiveFilterAction()", status, status != PRO_TK_NO_ERROR); return (test != PRO_B_TRUE ? PRO_TK_NO_ERROR : PRO_TK_CONTINUE);}/*=========================================================================*\ Function: ProUtilAxisByVectorFilterAction() Purpose: Allow to visit only axis which parallel (perpendicular) to a vector Returns: PRO_TK_NO_ERROR - success; PRO_TK_CONTINUE - no valid axis found\*=========================================================================*/ProError ProUtilAxisByVectorFilterAction( ProAxis axis, /* In : The Axis */ CollectAxisByVector *p_find_by_vector) /* In : find data */{ ProGeomitemdata *p_gi_data; Pro3dPnt vec; double dot; ProError status = PRO_TK_CONTINUE; TEST_CALL_REPORT( "ProAxisFilterAction", "ProUtilAxisByVectorFilterAction", PRO_TK_NO_ERROR, 0 ); status = ProAxisDataGet(axis, &p_gi_data); TEST_CALL_REPORT("ProAxisDataGet()", "ProUtilAxisByVectorFilterAction()", status, status != PRO_TK_NO_ERROR); ProUtilVectorDiff(p_gi_data->data.p_curve_data->line.end2, p_gi_data->data.p_curve_data->line.end1, vec); status = ProGeomitemdataFree(&p_gi_data); TEST_CALL_REPORT("ProGeomitemdataFree()", "ProUtilAxisByVectorFilterAction()", status, status != PRO_TK_NO_ERROR); ProUtilVectorNormalize(vec, vec); dot = fabs(ProUtilVectorDot(vec, p_find_by_vector->vec)); if ((p_find_by_vector->option==USER_PARALLEL && 1-dot<EPSM6) || (p_find_by_vector->option==USER_PERPENDICULAR && dot<EPSM6)) status = PRO_TK_NO_ERROR; else status = PRO_TK_CONTINUE; return (status);}/*=========================================================================*\ Function: ProUtilCollectDtmCurveFeatFilter() Purpose: Allow to visit only dtm curve features Returns: PRO_TK_NO_ERROR - success; PRO_TK_CONTINUE - no valid feature found found\*=========================================================================*/ProError ProUtilCollectDtmCurveFeatFilter( ProFeature *p_feature, /* In : The feature */ ProAppData app_data) /* In : The find structure */{ ProError status; ProFeattype ftype; TEST_CALL_REPORT( "ProFeatureFilterAction", "ProUtilCollectDtmCurveFeatFilter", PRO_TK_NO_ERROR, 0 ); status = ProFeatureTypeGet(p_feature, &ftype); TEST_CALL_REPORT("ProFeatureTypeGet()", "ProUtilCollectDtmCurveFeatFilter()", status, status != PRO_TK_NO_ERROR); return(ftype == PRO_FEAT_CURVE ? PRO_TK_NO_ERROR : PRO_TK_CONTINUE);}/*====================================================================*\ FUNCTION : ProUtilCollectDtmPointFeatFilter() PURPOSE : A filter used to visit only Datum Points features\*====================================================================*/ProError ProUtilCollectDtmPointFeatFilter( ProFeature *feature, ProAppData app_data){ ProError status; ProFeattype ftype;/*--------------------------------------------------------------------*\ Get the feature type\*--------------------------------------------------------------------*/ status = ProFeatureTypeGet(feature, &ftype);/*--------------------------------------------------------------------*\ If the feature is Datum Point, return NO ERROR, else return CONTINUE\*--------------------------------------------------------------------*/ if(ftype == PRO_FEAT_DATUM_POINT) return(PRO_TK_NO_ERROR); return(PRO_TK_CONTINUE);}/*=========================================================================*\ Function: ProUtilCollectDtmCurveFeatFilter() Purpose: Allow to visit only dtm curve features Returns: PRO_TK_NO_ERROR - success; PRO_TK_CONTINUE - no valid feature found found\*=========================================================================*/ProError ProUtilCollectNCSeqFeatFilter( ProFeature *p_feat, /* In : The feature */ ProAppData tmp_p_nc_seq) /* In : The find structure */{ ProError status; ProBoolean is_nc_seq; TEST_CALL_REPORT( "ProFeatureFilterAction", "ProUtilCollectNCSeqFeatFilter", PRO_TK_NO_ERROR, 0 ); status = ProFeatureIsNcseq(p_feat, &is_nc_seq); TEST_CALL_REPORT("ProFeatureIsNcseq()", "ProTestFeatFilterNcseq()", status, (status != PRO_TK_NO_ERROR)); return (is_nc_seq == PRO_B_TRUE? PRO_TK_NO_ERROR : PRO_TK_CONTINUE);}/*=========================================================================*\ Function: ProUtilGeomitemByNameFilterAction() Purpose: Allow to visit only geomitem with a specified name Returns: PRO_TK_NO_ERROR - success; PRO_TK_CONTINUE - no valid modelitem found\*=========================================================================*/ProError ProUtilGeomitemByNameFilterAction( ProAppData geomitem, /* In : The geomitem */ FindByName *p_findbyname) /* In : The find structure */{ ProName name; ProError status; ProModelitem modelitem = p_findbyname->p_modelitem[0]; switch (modelitem.type) { case PRO_CSYS: status = ProCsysToGeomitem((ProSolid)modelitem.owner, (ProCsys)geomitem, &modelitem); TEST_CALL_REPORT("ProCsysToGeomitem()", "ProUtilGeomitemByNameFilterAction()", status, status != PRO_TK_NO_ERROR); break; case PRO_AXIS: status = ProAxisToGeomitem((ProSolid)modelitem.owner, (ProAxis)geomitem, &modelitem); TEST_CALL_REPORT("ProAxisToGeomitem()", "ProUtilGeomitemByNameFilterAction()", status, status != PRO_TK_NO_ERROR); break; case PRO_SURFACE: status = ProSurfaceToGeomitem((ProSolid)modelitem.owner, (ProSurface)geomitem, &modelitem); TEST_CALL_REPORT("ProSurfaceToGeomitem()", "ProUtilGeomitemByNameFilterAction()", status, status != PRO_TK_NO_ERROR); break; default: status = PRO_TK_GENERAL_ERROR; } if (status == PRO_TK_NO_ERROR) { status = ProModelitemNameGet(&modelitem, name); TEST_CALL_REPORT("ProModelitemNameGet()", "ProUtilGeomitemByNameFilterAction()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_E_NOT_FOUND); } if (status == PRO_TK_NO_ERROR) { if (ProUtilWstrCmp(p_findbyname->name, name)==0) status = PRO_TK_NO_ERROR; else status = PRO_TK_CONTINUE; } else if (status == PRO_TK_E_NOT_FOUND) status = PRO_TK_CONTINUE; return (status);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?