Synopsis
#include <ProMdl.h>
ProError ProMdlCurrentGet (
ProMdl *p_handle
/* (Out)
The model handle
*/
)
這個函數(shù)包含一個參數(shù)-指針型參數(shù),定義及使用方法如下。
ProMdl mdlhandle;
ProMdlCurrentGet(&mdlhandle);
mdlhandle 是Ohandle型參數(shù) ,能用這個對象做許多事情。例如,能用ProMdlDataGet()做一個調(diào)用并且獲得關(guān)于這個模型的一些初始信息。
ProMdldata mdldata;
ProMdlDataGet (mdlhandle, &mdldata);
mdldata是一個簡單的結(jié)構(gòu)體,包括名稱、類型、路徑和關(guān)于模型的一些其他信息。下面打印這個模型的類型。
不能直接執(zhí)行printf("%s\n",mdldata.type),需要采用下面的方式,用ProWstringToString()把這種類型轉(zhuǎn)成一種規(guī)定的字符序列:
char type_in_c[PRO_TYPE_SIZE]; /* uses predefined Pro/T constants like PRO_TYPE_SIZE */
ProWstringToString (type_in_c, mdldata.type);
printf("%s\n",type_in_c);
現(xiàn)在打印模型的名字,就能象上面一樣,從mdldata結(jié)構(gòu)中取出名字,也可以用另一種的方法。
ProName current_name;
char current_name_in_c[PRO_NAME_SIZE];
ProMdlNameGet(mdlhandle, current_name);
ProWstringToString(current_name_in_c,current_name);
printf("%s\n", current_name_in_c);
接著,我們看一下訪問函數(shù)。模型可能有大量包含許多子對象的對象。由于不知道這些對象的數(shù)量,需要能夠以某種方式收集要尋找的對象。對于這種類型的問題,需要用到PTC提供的訪問函數(shù)。
假設(shè)想訪問包含在一個模型中的所有特征并收集它們的ids。執(zhí)行這個指令的函數(shù)是ProSolidFeatVisit()。其包括4個參數(shù): ProSolid句柄、訪問函數(shù)指針、過濾函數(shù)指針和應(yīng)用數(shù)據(jù)的結(jié)構(gòu)體指針。過濾函數(shù)的目的是能夠過濾特定的對象,請看下面的例子:
static ProError user_action_get_feat_ids(
ProFeature *feature,
ProError status,
ProAppData appdata)
{
ProBoolean visible;
vector<int> *fids = (vector<int> *)appdata;
ProFeatureVisibilityGet(feature,&visible); /* only work with visible features */
if(visible == PRO_B_TRUE){ // and collect their ids
fids->push_back(feature->id);