Ресурсы Unigraphics: Создание постпроцессоров. Использование PostBuilder.Запуск PB в Windows |
Запуск
PB -
производиться довольно оригинально.
Наверно, Вы не раз сталкивались с ситуацией, что простого запуска
post_builder.bat недостаточно. "C:\Program Files\UGS\NX 6.0\POSTBUILD\post_builder.bat" "C:\Program Files\UGS\NX 6.0\" |
Например, запуск Постбилдера 16.3.3 зависел от 25 ниже указанных библиотек: на самом деле ему было нужны всего лишь 2-е! остальные просто тянулись сборкой.
|
Рассмотрим по ближе файлы участвующие в запуске:
post_builder.bat => в этом файле происходит установка переменных окружения и запуск Постбилдера
UG16-NX4 | NX6-NX75 |
@echo off REM================================================ REM PB_HOME is the only env var referenced in the Post Builder source codes. REM It should be set base on the Post Builder installation. REM================================================ set base=%1 set base_dir=%base:"=% set PB_HOME=%base_dir%\postbuild REM================================================ REM UG DLL's search path. REM================================================ set PATH=%base_dir%\UGII;%PATH% REM================================================ REM Some vars for Tcl etc. REM================================================ set PB_TCL=%PB_HOME%\tcl set TCL_LIBRARY=%PB_TCL%\share\tcl8.0 set TK_LIBRARY=%PB_TCL%\share\tk8.0 set TIX_LIBRARY=%PB_TCL%\share\tix4.1 REM================================================ REM Tcl DLL search path REM================================================ set PATH=%PB_TCL%\exe;%PATH% REM================================================ REM Start Post Builder REM================================================ "%PB_HOME%\app\post_builder.exe" REM================================================ REM Post Builder returns 0 as the result of a successful run, otherwise REM it returns a non-zero value. REM================================================ if ERRORLEVEL 0 goto END pause :END |
@echo off REM================================================ REM PB_HOME is the only env var referenced in the Post Builder source codes. REM It should be set base on the Post Builder installation. REM================================================ set base=%1 set base_dir=%base:"=% set PB_HOME=%base_dir%\postbuild REM================================================ REM UG DLL's search path. REM================================================ set PATH=%base_dir%\UGII;%PATH% REM================================================ REM Some vars for Tcl etc. REM================================================ set PB_TCL=%PB_HOME%\tcl rem<01-21-08 gsl> Corrected env vars rem set TCL_LIBRARY=%PB_TCL%\share\tcl8.0 rem set TK_LIBRARY=%PB_TCL%\share\tk8.0 rem set TIX_LIBRARY=%PB_TCL%\share\tix4.1 set TCL_LIBRARY=%PB_TCL%\share\tcl8.4 set TK_LIBRARY=%PB_TCL%\share\tk8.4 set TIX_LIBRARY=%PB_TCL%\share\tix8.4 REM================================================ REM Tcl DLL search path REM================================================ set PATH=%PB_TCL%\exe;%PATH% REM================================================ REM Start Post Builder REM================================================ "%PB_HOME%\app\post_builder.exe" "%*" REM================================================ REM Post Builder returns 0 as the result of a successful run, otherwise REM it returns a non-zero value. REM================================================ if ERRORLEVEL 0 goto END pause |
post_builder.exe => в этом файле производиться проверка лицензии UG и запуск %PB_HOME%\app\Postino с параметрами.
16 | NX4 | NX6 |
IMPORTS TABLE: libufun.dll ----- ----- 3067 UF_get_fail_message 1171 UF_MISC_set_program_name 3069 UF_initialize 3079 UF_terminate libuglm.dll ----- ----- 29 check_license 32 leave_a_module |
IMPORTS TABLE: libufun.dll ----- ----- 4552 UF_get_fail_message 4556 UF_initialize 1611 UF_MISC_set_program_name 4567 UF_terminate libuglm.dll ----- ----- 20 UGFLEX_enter_module 26 UGFLEX_set_display 13 UGFLEX_ask_display 24 UGFLEX_leave_module |
EXPORTS TABLE: void __cdecl NXSigningResource(void) IMPORTS TABLE: libsyss.dll ----- ----- 6025 public: static void __cdecl UGS::Memory::CppMemory::free(void *) 5372 public: static void * cdecl UGS::Memory::CppMemory::allocate(unsigned int) libjam.dll ----- ----- 357 int __cdecl JAM_enter_module( 319 void __cdecl JAM_ask_server_info(char * const,char * const) 447 int __cdecl JAM_leave_module() 327 int __cdecl JAM_check_availability() libufun.dll ----- ----- 5197 UF_terminate 5171 UF_free 356 UF_CFI_spawn 5175 UF_get_fail_message 5180 UF_initialize 1811 UF_MISC_set_program_name 5155 UF_allocate_memory 5185 UF_print_syslog |
%PB_HOME%\app\Postino .
NX4-NX6-NX75 | |
IMPORTS TABLE: |
Создаются команды в интерпретаторе и он сам: proc UI_PB__main_menu {top} proc UIPB__createGauge {} proc UIPB__updateGauge {val1 val2} proc UIPB__destroyGauge {} и другие команды. ....................................................... |
Суммируем Итог:
Postino.exe - файл прямо не зависит от лицензии. Он вообще не зависит от библиотек UGS, кроме tcl. Надо заметить, так было не всегда. Я уже где то писал, что для того, чтобы запустить Постбилдер в UG17 было нужно 11 библиотек. Так вот, в 16-ой и 17-версии Юга предпринималась попытка объединить Postino и post_builder.
.text:00401000 ; Library: \\fsnac2\wntipref\ugv1702\ip2\libs\libufun.lib
.text:00401000 ; Library: ..\tcl\exe\tcl80.lib
.text:00401000 ; Library: ..\tcl\exe\tk80.lib
.text:00401000 ; Library: ..\tcl\exe\tix4180.lib
.text:00401000 ; Library: \\fsnac2\wntipref\ugv1702\ip2\libs\libuglm.lib
В Postino создается
TCL - интерпретатор, и команда UI_PB__main_menu + окно с бегущей строкой (параллельно ведется
декодирование) и заставка, далее
осуществляется загрузка исходников самого Постбилдера. Лицензия (номер) и тип
передается через аргументы командной строки. В самом файле - номер
(называемый паролем) и лицензия уже
зашита.
Попутно, мы выяснили, что
в исходниках Постбилдера предусматривалась
команда и лицензия на импортирование MDFA - файлов
и предусмотрено 4 типа лицензии:
gPB(PB_LICENSE) UG_POST_MILL gPB(PB_LICENSE) UG_POST_ADV_BLD gPB(PB_LICENSE) UG_POST_NO_LICENSE gPB(PB_LICENSE) UG_POST_AUTHOR ; # - этот вид лицензии появился в NX6
Для того, чтобы выяснить, какие параметры передаются - сделал простейшие программы (в 2-е строки), которые читают параметры командной строки и выводят в окно (это для тех, кому лень): первый вариант - MFC cmdprg.rar , второй вариант - TCL\TK cmdprg_ui.rar (упакован в exe-файл посредством http://freewrap.sourceforge.net . Так что, извиняйте за размеры .
параметры------------------------------ | ||
запуск без лицензии | %PB_HOME%\app\Postino.exe "NO_LICENSE" UG_POST_NO_LICENSE | |
UG16 | %PB_HOME%\app\Postino.exe "!$%^(@*#&)" UG_POST_MILL | |
NX4 (PB 3.303 - 3.41) | %PB_HOME%\app\Postino.exe 1456928370 UG_POST_MILL | |
NX6 | %PB_HOME%\app\Postino.exe 2006061812
UG_POST_ADV_BLD "L N D" %PB_HOME% - здесь "L N D" - это название лицензионного сервера (см. Лог-файл). | |
NX75 | %PB_HOME%\app\Postino.exe
"2006061812 UG_POST_ADV_BLD
"1002010 - *L*N*D*" "{CAM_KIT_POST_100 754} {CAM_KIT_POST_101 756}
{CAM_KIT_VNC_100 755} {CAM_KIT_VNC_101 757}" %PB_HOME%" - здесь "L N D" - это название лицензионного сервера (см. Лог-файл), {CAM_KIT_POST_100 754} - типы лицензий. | |
для Nx4 | для Nx6 |
@echo off REM========================настраиваемые переменные========================== rem любой 'левый' путь - без кириллицы set UGII_BASE_DIR=D:\UGNX4 Set USERNAME=Admin set PB_HOME=.\POSTBUILD REM========================================================================== set PB_TCL=%PB_HOME%\tcl REM========================================= REM Tcl DLL search path REM========================================= set PATH=%PB_TCL%\exe;%PATH% set TCL_LIBRARY=%PB_TCL%\share\tcl8.0 set TK_LIBRARY=%PB_TCL%\share\tk8.0 set TIX_LIBRARY=%PB_TCL%\share\tix4.1 rem %PB_HOME%\app\Postino.exe 1456928370 UG_POST_ADV_BLD rem %PB_HOME%\app\Postino.exe 1456928370 UG_POST_MILL if ERRORLEVEL 0 goto END pause :END |
@echo off REM========================настраиваемые переменные========================== rem любой 'левый' путь - без кириллицы set UGII_BASE_DIR=C:\UGNX6\ Set USERNAME=Admin set PB_HOME=.\POSTBUILD rem ============================================= set PB_TCL=%PB_HOME%\tcl REM====================================================== REM Tcl DLL search path REM====================================================== set PATH=%PB_TCL%\exe;%PATH% rem<01-21-08 gsl> Corrected env vars set TCL_LIBRARY=%PB_TCL%\share\tcl8.4 set TK_LIBRARY=%PB_TCL%\share\tk8.4 set TIX_LIBRARY=%PB_TCL%\share\tix8.4 %PB_HOME%\app\Postino.exe 2006061812 UG_POST_ADV_BLD "L N D" %PB_HOME% if ERRORLEVEL 0 goto END pause :END |
|
Copyright © 2001—2008 че