ITK 服务端开发:External 与 Internal 实战
基于 IMA Teamcenter 知识库整理的 PLM 实战指南。
ITK(Integration Toolkit)是 Teamcenter 最核心、最强大的二次开发接口。分为 External ITK 和 Internal ITK 两种方式。
External ITK(独立程序)
External ITK 是独立运行的程序,通过 ITK API 登录 Teamcenter 并执行操作。常用于数据导入导出工具、批量处理工具等。
最简单的 External ITK 程序(C)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// Train.c
#include <stdlib.h>
#include <tc/tc.h>
int ITK_user_main(int argc, char* argv[])
{
int result;
if ((result = ITK_auto_login()) == ITK_ok) {
printf("Hello PDM!");
result = ITK_exit_module(TRUE);
}
return result;
}
|
编译和执行
1
2
3
4
5
6
7
8
9
10
11
|
# 设置环境变量
set MSDEV_HOME=C:\PROGRA~1\MICROS~4\VC
# 编译
compile -DIPLIB=none Train.c
# 链接
linkitk -o Train Train.obj
# 执行
template -u=<user> -p=<password> -g=<group>
|
Internal ITK(嵌入 TC 服务)
Internal ITK 运行在 Teamcenter Server 进程内,推荐使用 Custom Hooks 方式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// 1. 定义 Site Preference(允许多值)
IMAN_customization_libraries = site-name
// 2. 设置环境变量
set IMAN_USER_LIB=%IMAN_DATA%\local\lib
// 3. 实现回调注册函数
extern "C" int __declspec(dllexport)
cust1_register_callbacks()
{
CUSTOM_register_exit("cust1",
"User Exit Function",
(CUSTOM_EXIT_ftn_t)your_function_name);
return ITK_ok;
}
|
User Exits(用户出口)
修改 %TC_ROOT%\sample 内以 USER_ 开头的函数。示例:自定义 Item ID 编码规则:
1
2
|
CUSTOM_register_exit("cust1", "USER_new_item_id",
(CUSTOM_EXIT_ftn_t)CUST_new_item_id);
|
AOM 数据对象操作标准流程
| 操作 |
步骤 |
| 修改对象 |
AOM_load() → AOM_lock() → AOM_set_xxx() → AOM_save() → AOM_unlock() |
| 创建对象 |
创建对象 → AOM_save() → AOM_unlock() |
| 删除对象 |
AOM_load() → AOM_lock_for_delete() → AOM_delete() |
⚠️ Internal ITK 修改会影响整个 TC 服务,务必在测试环境充分验证后再部署到生产环境。