Catch reference model deatch event

Hi

How can I catch event when reference model is detached?

Thanks in advance for any help.

  • you can use the mdlSystem_setFunction like this:

    mdlSystem_setFunction (SYSTEM_REFERENCE_DETACH,   asynRefDetach);

       mdlSystem_setFunction (SYSTEM_REFERENCE_DETACHED, asynRefDetached);

    /*----------------------------------------------------------------------+

    |                                                                       |

    | name          asynRefDetach                                           |

    |                                                                       |

    | author        BSI                                     12/01           |

    |                                                                       |

    +----------------------------------------------------------------------*/

    Private int  asynRefDetach  

    (

    DgnModelRefP    modelRef

    )

       {

       char    fileName[MAXFILELENGTH];

       /* Called when a reference is about to be detached. */

       mdlModelRef_getFileName (modelRef, fileName, MAXNAMELENGTH);

       printf ("FILE is ABOUT to be detached %s\n", fileName);

       return SUCCESS;

       }

    /*----------------------------------------------------------------------+

    |                                                                       |

    | name          asynRefDetached                                         |

    |                                                                       |

    | author        BSI                                     12/01           |

    |                                                                       |

    +----------------------------------------------------------------------*/

    Private void  asynRefDetached

    (

    DgnModelRefP     modelRef,      /* => */

    char            *fullFileSpec,  /* =>  */

    int              reason         /* => */

    )

       {

       char    attachReason[32];

       char    fileName[MAXFILELENGTH];

       /* Called right before the reference file modelRef is discarded.  */

       switch  (reason)

           {

           case SYSTEM_REFDETACHED_DETACHED:

               strcpy (attachReason, "SYSTEM_REFDETACHED_DETACHED");

               break;

           case SYSTEM_REFDETACHED_UNDONEATTACH:

               strcpy (attachReason, "SYSTEM_REFDETACHED_UNDONEATTACH");

               break;

           case SYSTEM_REFDETACHED_REDONEDETACH:

               strcpy (attachReason, "SYSTEM_REFDETACHED_REDONEDETACH");

               break;

           case SYSTEM_REFDETACHED_MODELDELETED:

               strcpy (attachReason, "SYSTEM_REFDETACHED_MODELDELETED");

               break;

           case SYSTEM_REFDETACHED_RELOADED:

               strcpy (attachReason, "SYSTEM_REFDETACHED_RELOADED");

               break;

           default:

               strcpy (attachReason, "UNKNOWN");

               break;

           }

       mdlModelRef_getFileName (modelRef, fileName, MAXNAMELENGTH);

       printf ("DETACHED\t%s  %s\n", attachReason, fileName);

       }

    HTH,