Creo 7.0~10.0 兼容: 改用 7.0 SDK 编译, REVISION 36->18, DLL 更名 Res_center.dll

This commit is contained in:
admin
2026-09-09 21:00:40 +08:00
parent a025f66aea
commit 1a350f1fe6
12 changed files with 67 additions and 21 deletions
+2
View File
@@ -0,0 +1,2 @@
# Creo 7.0 Pro/TOOLKIT SDK (third-party, ~390MB, not part of source)
sdk7/
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+7 -2
View File
@@ -1,6 +1,11 @@
@echo off @echo off
set PROTOOL_SRC=C:\PROGRA~1\PTC\CREO80~1.0\COMMON~1\PROTOO~1 rem Creo 7.0 SDK first (covers Creo 7.0~10.0), fallback to Creo 8.0 SDK
set PROTOOL_SYS=%PROTOOL_SRC%\x86e_win64 if exist "%~dp0sdk7\protoolkit\includes" (
set "PROTOOL_SRC=%~dp0sdk7\protoolkit"
) else (
set "PROTOOL_SRC=C:\PROGRA~1\PTC\CREO80~1.0\COMMON~1\PROTOO~1"
)
set "PROTOOL_SYS=%PROTOOL_SRC%\x86e_win64"
call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat" call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
BIN
View File
Binary file not shown.
+3 -3
View File
@@ -4,19 +4,19 @@ MAKEFILENAME = makefile_short
PRO_MACHINE_TYPE = x86e_win64 PRO_MACHINE_TYPE = x86e_win64
!ifndef PROTOOL_SRC !ifndef PROTOOL_SRC
PROTOOL_SRC = C:\PROGRA~1\PTC\CREO80~1.0\COMMON~1\PROTOO~1 PROTOOL_SRC = D:\A开发型项目\AI_Agent相关开发\Res_center\sdk7\protoolkit
!endif !endif
!ifndef PROTOOL_SYS !ifndef PROTOOL_SYS
PROTOOL_SYS = $(PROTOOL_SRC)\$(PRO_MACHINE_TYPE) PROTOOL_SYS = $(PROTOOL_SRC)\$(PRO_MACHINE_TYPE)
!endif !endif
EXE_DLL = Res_center_80.dll EXE_DLL = Res_center.dll
INCS = -I.\include -I$(PROTOOL_SRC)\includes -I$(PROTOOL_SRC)\protk_appls\includes INCS = -I.\include -I$(PROTOOL_SRC)\includes -I$(PROTOOL_SRC)\protk_appls\includes
CC = cl CC = cl
MACH = -DPRO_MACHINE=36 -DPRO_OS=4 MACH = -DPRO_MACHINE=36 -DPRO_OS=4
CCFLAGS = -c -GS -fp:precise -D_WSTDIO_DEFINED /utf-8 CCFLAGS = -c -GS -fp:precise -D_WSTDIO_DEFINED /utf-8 /wd4828
CFLAGS = $(CCFLAGS) $(INCS) $(MACH) CFLAGS = $(CCFLAGS) $(INCS) $(MACH)
PTCLIBS_DLL = $(PROTOOL_SYS)\obj\protk_dll_NU.lib \ PTCLIBS_DLL = $(PROTOOL_SYS)\obj\protk_dll_NU.lib \
+2 -2
View File
@@ -1,6 +1,6 @@
NAME Resource_Library NAME Resource_Library
EXEC_FILE D:\A开发型项目\AI_Agent相关开发\Res_center\Res_center_80.dll EXEC_FILE D:\A开发型项目\AI_Agent相关开发\Res_center\Res_center.dll
TEXT_DIR D:\A开发型项目\AI_Agent相关开发\Res_center\text TEXT_DIR D:\A开发型项目\AI_Agent相关开发\Res_center\text
STARTUP dll STARTUP dll
REVISION 36 REVISION 18
END END
+6 -6
View File
@@ -14,8 +14,8 @@
#define IDC_RX 204 #define IDC_RX 204
#define IDC_RY 205 #define IDC_RY 205
#define IDC_RZ 206 #define IDC_RZ 206
#define IDOK 207 #define RC_IDOK 207
#define IDCANCEL 208 #define RC_IDCANCEL 208
#define PARAM_DW 320 #define PARAM_DW 320
#define PARAM_DH 320 #define PARAM_DH 320
#define WC_PARAM L"RCv62Param" #define WC_PARAM L"RCv62Param"
@@ -151,8 +151,8 @@ static void param_create_controls(HWND hDlg)
SendMessageW(ctrl, WM_SETFONT, (WPARAM)gParamFont, 1); SendMessageW(ctrl, WM_SETFONT, (WPARAM)gParamFont, 1);
y += dy + 12; y += dy + 12;
CreateWindowW(L"BUTTON", L"\u786e\u5b9a", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 100, y, 80, 26, hDlg, (HMENU)IDOK, NULL, NULL); CreateWindowW(L"BUTTON", L"\u786e\u5b9a", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 100, y, 80, 26, hDlg, (HMENU)RC_IDOK, NULL, NULL);
CreateWindowW(L"BUTTON", L"\u53d6\u6d88", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 190, y, 80, 26, hDlg, (HMENU)IDCANCEL, NULL, NULL); CreateWindowW(L"BUTTON", L"\u53d6\u6d88", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 190, y, 80, 26, hDlg, (HMENU)RC_IDCANCEL, NULL, NULL);
} }
static LRESULT CALLBACK ParamWndProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) static LRESULT CALLBACK ParamWndProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
@@ -162,12 +162,12 @@ static LRESULT CALLBACK ParamWndProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM
param_create_controls(hDlg); param_create_controls(hDlg);
return 0; return 0;
case WM_COMMAND: case WM_COMMAND:
if (LOWORD(wParam) == IDOK) { if (LOWORD(wParam) == RC_IDOK) {
param_apply_matrix(hDlg); param_apply_matrix(hDlg);
DestroyWindow(hDlg); DestroyWindow(hDlg);
return 0; return 0;
} }
if (LOWORD(wParam) == IDCANCEL) { if (LOWORD(wParam) == RC_IDCANCEL) {
make_identity(gParamMatrix); make_identity(gParamMatrix);
DestroyWindow(hDlg); DestroyWindow(hDlg);
return 0; return 0;
+2 -2
View File
@@ -39,10 +39,10 @@ static void GenerateProtk(char* buf, int sz)
char dir[MAX_PATH]; GetExeDir(dir, sizeof(dir)); char dir[MAX_PATH]; GetExeDir(dir, sizeof(dir));
snprintf(buf, sz, snprintf(buf, sz,
"NAME Resource_Library\r\n" "NAME Resource_Library\r\n"
"EXEC_FILE %s\\Res_center_80.dll\r\n" "EXEC_FILE %s\\Res_center.dll\r\n"
"TEXT_DIR %s\\text\r\n" "TEXT_DIR %s\\text\r\n"
"STARTUP dll\r\n" "STARTUP dll\r\n"
"REVISION 36\r\n" "REVISION 18\r\n"
"END\r\n", "END\r\n",
dir, dir); dir, dir);
} }
Binary file not shown.
+30 -2
View File
@@ -9,7 +9,7 @@
类型:Creo Pro/TOOLKIT DLL 插件 类型:Creo Pro/TOOLKIT DLL 插件
功能:标准件库浏览、3D 预览、搜索过滤、快速装配、LIC 授权 功能:标准件库浏览、3D 预览、搜索过滤、快速装配、LIC 授权
语言:C (核心) + C++ (preview.cpp) 语言:C (核心) + C++ (preview.cpp)
编译器:MSVC 2022 | SDK:Creo 8.0 PTK | 平台:Win10/11 x64 | Creo 7.0+ 编译器:MSVC 2022 | SDK:Creo 7.0 PTK(最低目标版本,兼容 7.0~10.0)| 平台:Win10/11 x64 | Creo 7.0~10.0
二、源文件 二、源文件
@@ -77,15 +77,43 @@
参数对话框无确定按钮 → 英文→中文,对话框加高 参数对话框无确定按钮 → 英文→中文,对话框加高
搜索框上边框缺失 → WS_EX_CLIENTEDGE 替换 WS_BORDER 搜索框上边框缺失 → WS_EX_CLIENTEDGE 替换 WS_BORDER
Insert 按钮中文被截 → 200×50 加宽居中 Insert 按钮中文被截 → 200×50 加宽居中
Creo 7.0 加载失败 → protk.dat REVISION 36→18(36 会被 7.0 判为
要求 8.0),并以 Creo 7.0 SDK 重新编译 DLL
七、工具说明 七、 工具说明
-------------------------------------------------- --------------------------------------------------
tools\keygen_lic.exe LIC授权文件生成器(Metro暗色UI + 背景音乐) tools\keygen_lic.exe LIC授权文件生成器(Metro暗色UI + 背景音乐)
tools\configen.exe protk.dat自动配置器(一键生成) tools\configen.exe protk.dat自动配置器(一键生成)
部署时放在DLL同目录运行 部署时放在DLL同目录运行
======================================================================
八、版本兼容策略(Creo 7.0~10.0 / Win10~11)
======================================================================
【8.1】protk.dat 的 REVISION 含义
Creo 加载器在启动辅助应用程序前检查 REVISION:值过大(如 36 对
应"要求 Creo 8.0")时,旧版本 Creo 直接拒绝加载并提示
"应用程序需要 Creo X;当前版本为 Creo Y"。
官方 Creo 8.0 自带安装自检样例(pt_inst_test)即使用 REVISION 18,
该值被 7.0~10.0 全系接受,为通用兼容值。
【8.2】SDK 选择
PTC 兼容规则:旧版 SDK 编译的应用程序可在新版 Creo 中运行
(Creo 版本新于 TOOLKIT 版本 = 支持;反之不支持)。
故以 7.0 Pro/TOOLKIT 编译一份 DLL 即可覆盖 7.0~10.0。
源码只用 ProPartTessellate / ProAsmcompAssemble / ProFamtable 等
7.0 已有的稳定 API,无 8.0 专有调用,7.0 SDK 可直接编译。
【8.3】运行时依赖
ucore68.dll / udata68.dll 与 DLL 同目录部署;跨版本部署时从目标机
Creo 的 Common Files\x86e_win64\obj 复制同名文件,避免混用。
【8.4】编译方法
makefile_short 的 PROTOOL_SRC 指向 Creo 7.0 的 ProTOOLKIT 目录后
运行 build.bat(nmake),产物 Res_center.dll(版本中立命名)。
====================================================================== ======================================================================
附录A:组件替换开发记录(已暂停) 附录A:组件替换开发记录(已暂停)
====================================================================== ======================================================================
+15 -4
View File
@@ -13,7 +13,7 @@
二、部署文件清单 二、部署文件清单
-------------------------------------------------- --------------------------------------------------
D:\ResLib\ D:\ResLib\
├── Res_center_80.dll ← 核心 DLL(必须) ├── Res_center.dll ← 核心 DLL(必须,Creo 7.0~10.0 通用)
├── protk.dat ← Creo 插件注册文件(必须) ├── protk.dat ← Creo 插件注册文件(必须)
├── ucore68.dll ← Creo 运行时依赖(必须) ├── ucore68.dll ← Creo 运行时依赖(必须)
├── udata68.dll ← Creo 运行时依赖(必须) ├── udata68.dll ← Creo 运行时依赖(必须)
@@ -79,10 +79,10 @@
七、常见问题 七、常见问题
-------------------------------------------------- --------------------------------------------------
Q1: 启动提示"无法加载辅助应用程序" Q1: 启动提示"无法加载辅助应用程序"
A1: 检查 protk.dat 路径和 REVISION=36,或用 configen.exe 重新生成 A1: 检查 protk.dat 路径与 REVISION=18(通用兼容值),或用 configen.exe 重新生成
Q2: 点击按钮无反应 Q2: 点击按钮无反应
A2: 确保 ucore68.dll、udata68.dll 与 DLL 同目录 A2: 确保 ucore68.dll、udata68.dll 与 DLL 同目录;若跨 Creo 版本部署,建议直接复制目标机 Creo 安装目录 Common Files\x86e_win64\obj 下的同名文件,避免版本混用
Q3: 3D 预览空白 Q3: 3D 预览空白
A3: 显卡需支持 OpenGL(Windows 自带即可) A3: 显卡需支持 OpenGL(Windows 自带即可)
@@ -93,7 +93,18 @@ A4: 检查 config\lic\res_center.lic 是否存在且内容正确
Q5: 如何更新标准件库 Q5: 如何更新标准件库
A5: 直接在 Resource_Library 下增删 .prt/.asm 或目录,无需维护 .mnu A5: 直接在 Resource_Library 下增删 .prt/.asm 或目录,无需维护 .mnu
Q6: 支持哪些 Creo 版本?支持 Win11 吗?
A6: Creo 7.0 / 8.0 / 9.0 / 10.0(64位)均支持。DLL 基于 Creo 7.0 的
Pro/TOOLKIT 编译(PTC 兼容规则:旧版 SDK 编译的应用程序可在新版
Creo 中运行),因此一份 Res_center.dll 通用于 7.0~10.0。
Windows 10 / 11(64位)均支持。
Q7: 提示"应用程序需要 Creo 8.0;当前版本为 Creo 7.0"
A7: 旧版 protk.dat 中 REVISION=36 会被 Creo 7.0 判定为要求 Creo 8.0。
使用新版 configen.exe 重新生成 protk.dat(REVISION=18,Creo 全系
通用兼容值),或手动把该行改为 REVISION 18 后重新启动辅助应用程序。
八、版本信息 八、版本信息
-------------------------------------------------- --------------------------------------------------
版本:V1.2 | DLL:Res_center_80.dll | 兼容:Creo 7.0~10.0 版本:V1.3 | DLL:Res_center.dll | 兼容:Creo 7.0~10.0(Win10/11 x64)