找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 1801|回复: 0

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

[复制链接]
发表于 2008-8-6 13:31:00 | 显示全部楼层 |阅读模式
使用toolkit开发trigger的程序时,往往需要能够连续通过trigger来触发dll中的函数.
% A0 g' F' X2 H$ [- p# K我碰到的问题:
0 _4 U" c3 M, f/ R. Z7 S   1.配置trigger:
5 @" ^* E2 r! l5 K7 X5 p   Name: CimDll , \! I8 [) {4 q+ ?
   Event: Create PIV : u1 j: S3 @. K$ B, V4 C& `
   Time:  POST
0 b! O' ?3 Q- J- g9 c8 E7 I   RequireNO : `8 R( a( h. S+ ~) ?: H9 F
   DLL:Cim.dll , c, n3 i( g; E3 C/ |
   FunctionDMTPIVCreatePostOperation
, @7 x1 {/ ^8 l4 w0 \    ( T/ m# R3 H; W
  2.源代码:
2 m4 U- X- L( h: ?; W, u8 M% }/ C. @   int PDMDLLInit()
# f' A1 D4 K! u1 F9 e{ / F$ u7 C+ `# F- S. J( i6 Z
   PTCERROR pdm_status; + Q) C- D( D# ]0 p0 b1 g
   FILE      *g_pfileLog;    g_pfileLog =fopen("test.dat","w"); 4 M, q# d2 K8 d. N- o4 ?
   setbuf(g_pfileLog,NULL); ' z6 V) q- ^1 l1 U# P
   fprintf(g_pfileLog,"begin test\n");
, G9 ]' a% E% ?$ Z   pdm_status = PDMTriggerRegister("DMTPIVCreatePostOperation", PDMTPIVCreatePostOperation);
# F/ d' y- m1 r6 \) y) y   if (pdm_status != PDM_SUCCESS) ( f' v+ i) S8 Z% W7 q( }
   {   4 M7 s# r6 ^. W4 A1 W) U; R
    printf("Failed to Register Trigger PIV Create Post.\n"); 6 b$ q2 e  `0 O  |& w0 B+ k
   } , p9 J, F3 g! M3 W" R: ]0 E
    return (pdm_status); 5 _0 t1 j, A! t4 Z; y; m
} " w* c. Z7 ?  W1 x
int PDMTPIVCreatePostOperation(int argc, void **argv)
: U$ L$ @6 s6 G( ?! g{
4 S. D& u- u$ E3 P   fprintf(g_pfileLog,"test\n");
9 |% i9 @3 m. p: O8 G1 F   ..... 2 F/ O7 L+ |+ l  M3 ^
   fprintf(g_pfileLog,"end test\n"); - W8 q$ p, I7 A0 X# J& P
   fclose(g_pfileLog);
* A0 s. h+ _5 B: _! o1 e}
# W+ L1 u' a2 E5 u   结果:以上代码存在的问题:如果我们在第一次checkin到C/S中后,删除test.dat文件,然后再进行checkin时,发现没有再生成test.dat,在函数PDMTPIVCreatePostOperation()中所进行的对文件的操作都无效.
3 @& T! N! x& p3 y6 y) m" s   原因:我们使用trigger触发时,真正起作用的是函数DMTPIVCreatePostOperation(),而PDMDLLInit()只是在第一次checkin时起作用,所以在第一次调用PDMTPIVCreatePostOperation()后,我就fclose(g_pfileLog),所以出现了上面的情况.所以注意的是:不要把一些重要的东西放在函数PDMDLLInit()中.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-9-15 19:50 , Processed in 0.071917 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表