ITK 服务端开发:External 与 Internal 实战

基于 IMA Teamcenter 知识库整理的 PLM 实战指南。

6

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 服务,务必在测试环境充分验证后再部署到生产环境。

广告
广告位预留中 (728x90)