Pro/E二次开发使用toolkit开发trigger的程序

2007-08-23 22:23:45 来源:模具网   
核心摘要:使用toolkit开发trigger的程序时,往往需要能够连续通过trigger来触发dll中的函数. 我碰到的问题: 1.配置trigger: Name: CimDll Event: Create PIV Time: POST RequireNO DLL:Cim.dll Function:PDMTPIVCreatePostOperation 2.源代码: int PDMDLLInit() { PTCERROR pdm_s

    使用toolkit开发trigger的程序时,往往需要能够连续通过trigger来触发dll中的函数.
我碰到的问题:
   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);

}

   结果:以上代码存在的问题:如果我们在第一次checkin到C/S中后,删除test.dat文件,然后再进行checkin时,发现没有再生成test.dat,在函数PDMTPIVCreatePostOperation()中所进行的对文件的操作都无效.
   原因:我们使用trigger触发时,真正起作用的是函数:PDMTPIVCreatePostOperation(),而PDMDLLInit()只是在第一次checkin时起作用,所以在第一次调用PDMTPIVCreatePostOperation()后,我就fclose(g_pfileLog),所以出现了上面的情况.所以注意的是:不要把一些重要的东西放在函数PDMDLLInit()中.

(责任编辑:小编)
下一篇:

第三届 CHINAPLAS x CPRJ 塑料回收再生与循环经济论坛暨展示会

上一篇:

论CAXA电子图版与AutoCAD两款软件的的优确点

  • 信息二维码

    手机看新闻

  • 分享到
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们