机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 1570|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2008-8-6 13:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用toolkit开发trigger的程序时,往往需要能够连续通过trigger来触发dll中的函数.
2 F$ a; R% k0 \& V6 C我碰到的问题: 4 B! g; w$ O5 P" {7 D& X- K& q: x
   1.配置trigger:
) o! t$ q5 L. G- D' \  q- Z   Name: CimDll
- t' |2 h* k( g" u/ K( H7 j1 Q0 s. C   Event: Create PIV . X# x3 H+ ]8 L$ V) L! \
   Time:  POST
3 o% u1 I- T4 r/ e" a   RequireNO
' d' i+ }5 K4 Q; A- h& T   DLL:Cim.dll
3 H/ M4 G5 ~7 L2 s6 ?8 z3 q   FunctionDMTPIVCreatePostOperation
' k5 O0 V; W0 L4 z7 O    2 o8 ^! d. h  l0 N
  2.源代码: ( o7 L; O) x; X- S2 Z$ A+ _  C7 z9 L
   int PDMDLLInit() 4 Y. _! Z0 q6 }% e" M
{
5 }2 d& W7 ?, F" A2 V! Q" l* p6 V0 J% r% E   PTCERROR pdm_status; 1 j4 }" N1 U8 [
   FILE      *g_pfileLog;    g_pfileLog =fopen("test.dat","w"); 3 X( S3 U$ v. O& n% G# t1 O
   setbuf(g_pfileLog,NULL);
3 Z: n; P( _# D6 e   fprintf(g_pfileLog,"begin test\n");
' l8 C' R/ e3 |8 s+ T$ q0 H' A+ H   pdm_status = PDMTriggerRegister("DMTPIVCreatePostOperation", PDMTPIVCreatePostOperation);
1 N3 {& E6 h9 o! T, K* Z" }1 K   if (pdm_status != PDM_SUCCESS) + i. C, {* y) d* F9 ?$ H# h
   {   4 X% s7 V. A' O& c
    printf("Failed to Register Trigger PIV Create Post.\n");
: @: S4 S$ i& t" V* F  r  S( t   } ) R; s5 m- L6 g
    return (pdm_status);
6 C( F4 ?$ S: J' ]- h; w) O6 R}
  R1 |7 x1 j. j4 D  |4 ^+ Qint PDMTPIVCreatePostOperation(int argc, void **argv)
% p3 H' g+ o3 f( z! A8 g{
( O+ s* [- p& b. U& h   fprintf(g_pfileLog,"test\n");
1 |/ L0 F" O8 W& o# ]   ..... : t! w& `1 ~2 C: Z+ t6 p- U
   fprintf(g_pfileLog,"end test\n");
) }+ Z# Z* E: T' r# `   fclose(g_pfileLog); 2 Q; a% E0 h% I( {
} # b; F- q6 Y8 w% v! }
   结果:以上代码存在的问题:如果我们在第一次checkin到C/S中后,删除test.dat文件,然后再进行checkin时,发现没有再生成test.dat,在函数PDMTPIVCreatePostOperation()中所进行的对文件的操作都无效. & M% u8 [  C! ^! x8 I( R
   原因:我们使用trigger触发时,真正起作用的是函数DMTPIVCreatePostOperation(),而PDMDLLInit()只是在第一次checkin时起作用,所以在第一次调用PDMTPIVCreatePostOperation()后,我就fclose(g_pfileLog),所以出现了上面的情况.所以注意的是:不要把一些重要的东西放在函数PDMDLLInit()中.
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-11-22 11:02 , Processed in 0.049966 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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