机械必威体育网址

标题: Pro/E二次开发使用toolkit开发trigger的程序 [打印本页]

作者: sunshine1026    时间: 2008-8-6 13:31
标题: Pro/E二次开发使用toolkit开发trigger的程序
使用toolkit开发trigger的程序时,往往需要能够连续通过trigger来触发dll中的函数. ; }5 W+ S9 {1 ]0 t
我碰到的问题: 9 t, c# x; w3 I+ |1 `+ ]
   1.配置trigger: 7 q: e  o; g& ~+ x- ~. d
   Name: CimDll
0 y/ p8 i' U% }$ j. z   Event: Create PIV ) [# g6 a! ~: h4 t5 X7 x7 d( V
   Time:  POST
7 H) y' i" P6 \7 q/ f   RequireNO
( _' S9 O! Y: @- J5 h   DLL:Cim.dll , ?( z3 Y3 f4 `+ a& j4 N, i
   FunctionDMTPIVCreatePostOperation
( _& z1 _9 M% T! U+ N8 z    , ^8 ?$ j0 x4 V+ r5 L+ D' X
  2.源代码:
! }. c2 F& r7 E   int PDMDLLInit()
/ M& y/ x- P: A" z, F( P% p5 J% Y{ 6 g6 M+ C& o6 R% @) R7 J) \, h  k
   PTCERROR pdm_status; & S) x4 t( _: I1 Q. l( }0 f+ ?6 W
   FILE      *g_pfileLog;    g_pfileLog =fopen("test.dat","w");
2 Q% ?" Y% J% `( g. K! |1 W   setbuf(g_pfileLog,NULL); & C8 Z0 D+ v% Y5 r
   fprintf(g_pfileLog,"begin test\n");
0 |# `! }% b" p   pdm_status = PDMTriggerRegister("DMTPIVCreatePostOperation", PDMTPIVCreatePostOperation);
0 f$ R  j& p0 \- i   if (pdm_status != PDM_SUCCESS) : Z& O# H% h. }& j
   {   : a3 O7 b" `" m  C" r% \1 h
    printf("Failed to Register Trigger PIV Create Post.\n"); - A2 r0 Y$ p' S( W4 x0 W
   }
% y5 d# u( o$ ?    return (pdm_status);
8 g. M9 w9 v# |( A  r4 Z$ m/ z}
9 U4 J( a5 T" s$ T) w2 Wint PDMTPIVCreatePostOperation(int argc, void **argv) 3 B6 S5 u. {0 V$ W" [
{   K; p# X8 v" c. G( u: w: O2 k  s
   fprintf(g_pfileLog,"test\n");
/ c1 @+ Z! v- r! ]: t; I7 d7 g* R   ..... $ D5 `) U- q- k
   fprintf(g_pfileLog,"end test\n");
8 c0 N. c8 U9 v   fclose(g_pfileLog);
3 d) [1 ^) X' q. q}
7 g8 M8 N$ P& {* b! F( e- k; o   结果:以上代码存在的问题:如果我们在第一次checkin到C/S中后,删除test.dat文件,然后再进行checkin时,发现没有再生成test.dat,在函数PDMTPIVCreatePostOperation()中所进行的对文件的操作都无效. , a) g/ D0 g& I' E4 z/ y! B& X7 A" W
   原因:我们使用trigger触发时,真正起作用的是函数DMTPIVCreatePostOperation(),而PDMDLLInit()只是在第一次checkin时起作用,所以在第一次调用PDMTPIVCreatePostOperation()后,我就fclose(g_pfileLog),所以出现了上面的情况.所以注意的是:不要把一些重要的东西放在函数PDMDLLInit()中.




欢迎光临 机械必威体育网址 (//www.szfco.com/) Powered by Discuz! X3.4