====================================================================== 资源中心管理器 V1.2 — 开发技术文档 2026-07-29 ====================================================================== 一、项目概述 -------------------------------------------------- 项目:资源中心管理器 (Res_center) 类型:Creo Pro/TOOLKIT DLL 插件 功能:标准件库浏览、3D 预览、搜索过滤、快速装配、LIC 授权 语言:C (核心) + C++ (preview.cpp) 编译器:MSVC 2022 | SDK:Creo 7.0 PTK(最低目标版本,兼容 7.0~10.0)| 平台:Win10/11 x64 | Creo 7.0~10.0 二、源文件 -------------------------------------------------- src/main.c (50行) DLL入口,路径初始化 src/dialog.c (1080行) 主对话框(TreeView+Parts+Preview+FT+Search+LIC) src/menu.c (73行) Creo命令注册(2个命令) src/assembly.c (624行) 装配逻辑 + 参数化对话框 src/preview.cpp (223行) OpenGL 3D 预览 src/license.c (250行) MAC激活(源码保留,未编译) include/res_center.h (84行) 公共头文件 tools/keygen_lic.c LIC授权文件生成器(Metro UI + BGM) tools/configen.c protk.dat自动配置器(Metro UI) tools/build_lic.bat keygen编译脚本 tools/build_config.bat configen编译脚本 三、Creo命令(2个) -------------------------------------------------- RL_Ico2 资源中心 → 对话框 + 插入装配 RL_Ico3 资源中心(参数定位) → 对话框 + 参数窗口(X/Y/Z/RX/RY/RZ) 四、核心技术 -------------------------------------------------- 【4.1】零件发现 — LoadParts() 直接扫目录 *.prt / *.prt.* / *.asm / *.asm.* → 提取基名 → 去重保留最高版本 【4.2】全局搜索 — SearchDirRecursive() 搜索框 → 递归全库匹配文件名 → 显示结果 【4.3】3D 预览 — OpenGL ProPartTessellate → 三角面片 → glDrawElements 装配体:ProSolidFeatVisit → ProAsmcompMdlGet → ProAsmcomppathInit → ProAsmcomppathTrfGet 3点光 + 双面光,灰蓝材质,中灰背景,鼠标旋转/缩放 【4.4】对话框布局 TreeView(300固定) | 按钮+搜索+零件列表(35%) | GL预览+族表+按钮(65%) 【4.5】收藏/最近使用 config\favorites.txt, config\recent.txt,MRU去重 【4.6】LIC授权 文件:config\lic\res_center.lic 算法:MAC → 去横线 → A=01 B=02 ... Z=26 → 倒序 验证:选中零件时检查LIC → 不匹配则隐藏"插入装配",显示"LIC文件不正确" 工具:tools\keygen_lic.exe (Metro暗色UI + poemstear.mp3背景音乐) 五、已知限制 -------------------------------------------------- 超大模型(>500万顶点) → 提示"模型过大,已取消预览" 旧版 .prt → 部分文件 ProPartTessellate 失败 装配体阵列实例 → Pattern 成员待完善 组件替换/删除 → PTK DLL 不支持(参见附录A) 六、已修复 Bug -------------------------------------------------- 最近使用/收藏模式崩溃 → ApplyFilter 递归断环 文件路径双 config → FAV_FILE/RECENT_FILE 修正 参数对话框无确定按钮 → 英文→中文,对话框加高 搜索框上边框缺失 → WS_EX_CLIENTEDGE 替换 WS_BORDER 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\configen.exe protk.dat自动配置器(一键生成) 部署时放在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:组件替换开发记录(已暂停) ====================================================================== 需求:装配环境选中组件 → 从资源中心选新零件 → 删旧换新 结论:PTK DLL 不支持装配树修改 尝试方案: ProFeatureDelete → 链接失败(库未导出) ProFeatureSuppress → 运行时崩溃 ProFeatureWithoptionsDelete → 运行时崩溃 ProMacroExecute(ProCmdMdlTreeDelete) → 运行时崩溃 ProSelect+先装后删 → 状态冲突 后续:研究 Creo 原生 Replace 命令名或 OTK/同步模式 ====================================================================== 附录B:LIC 授权规则 ====================================================================== 算法: MAC "AA-BB-CC-DD-EE-FF" → 去横线 "AABBCCDDEEFF" → A=01 B=02 ... Z=26 → "010102020303040405050606" → 倒序 → "606050504040303020201010" = LIC 文件内容 生成:keygen_lic.exe AA-BB-CC-DD-EE-FF res_center.lic 部署:res_center.lic 放入 config\lic\