Ja - es ist möglich. Entgegen anders lautender Aussagen von UGS.
Dieser Weg ist allerdings undokumentiert und "is not playing by the rules", wie sich Keith Hafen von UGS ausdrückte. Also betreten auf eigene Gefahr.
Vereinfacht (s.o.) in etwa so:
void execute_my_macro(void)
{
char
libSpec[UF_CFI_MAX_PATH_NAME_LEN + 1],
*ugRootDirP,
*macroFileP;
// Build library filename.
if(UF_CALL(UF_translate_variable("UGII_ROOT_DIR", &ugRootDirP)))
{
WRITE("Error ! - no UGII_ROOT_DIR translation !\n");
return;
}
if(UF_CALL(uc4575(ugRootDirP, 115, "libugui", libSpec)))
{
WRITE("Error ! - no directory name-building !\n");
return;
}
// Execute macro file.
if(UF_CALL(UF_load_library(libSpec, "MACRO_playback_from_usertool", (UF_load_f_p_t
*)&MACRO_playback_from_usertool_f_p)))
{
WRITE("Error ! - no library loaded !\n");
return;
}
if(UF_CALL(UF_translate_variable("MY_OWN_MACRO", ¯oFileP)))
{
WRITE("Error ! - MY_OWN_MACRO variable is not translated !\n");
return;
}
if ( macroFileP == NULL )
{
WRITE("Error ! - MY_OWN_MACRO is not set or makes no sense !\n");
return;
}
MACRO_playback_from_usertool_f_p (macroFileP);
}
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP