proe二次開發(fā)使用toolkit開發(fā)trigger的程序
2013-05-06 by:廣州有限元分析、培訓(xùn)中心-1CAE.COM 來源:仿真在線
使用toolkit開發(fā)trigger的程序時,往往需要能夠連續(xù)通過trigger來觸發(fā)dll中的函數(shù).
我碰到的問題:
1.配置trigger:
Name: CimDll
Event: Create PIV
Time: POST
RequireNO
DLL:Cim.dll
Function:PDMTPIVCreatePostOperation
2.源代碼:
int PDMDLLInit()
{
PTCERROR pdm_status;
FILE *g_pfileLog;
g_pfileLog =fopen("test.dat","w");
setbuf(g_pfileLog,NULL);
fprintf(g_pfileLog,"begin test\n");
pdm_status = PDMTriggerRegister("PDMTPIVCreatePostOperation", PDMTPIVCreatePostOperation);
if (pdm_status != PDM_SUCCESS)
{
printf("Failed to Register Trigger PIV Create Post.\n");
}
return (pdm_status);
}
int PDMTPIVCreatePostOperation(int argc, void **argv)
{
fprintf(g_pfileLog,"test\n");
.....
fprintf(g_pfileLog,"end test\n");
fclose(g_pfileLog);
}
結(jié)果:以上代碼存在的問題:如果我們在第一次checkin到C/S中后,刪除test.dat文件,然后再進行checkin時,發(fā)現(xiàn)沒有再生成test.dat,在函數(shù)PDMTPIVCreatePostOperation()中所進行的對文件的操作都無效.
原因:我們使用trigger觸發(fā)時,真正起作用的是函數(shù):PDMTPIVCreatePostOperation(),而PDMDLLInit()只是在第一次checkin時起作用,所以在第一次調(diào)用PDMTPIVCreatePostOperation()后,我就fclose(g_pfileLog),所以出現(xiàn)了上面的情況.所以注意的是:不要把一些重要的東西放在函數(shù)PDMDLLInit()中.
相關(guān)標(biāo)簽搜索:proe二次開發(fā)使用toolkit開發(fā)trigger的程序 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) Autoform培訓(xùn) 有限元培訓(xùn) Solidworks培訓(xùn) UG模具培訓(xùn) PROE培訓(xùn) 運動仿真