Files
ResLib/开发技术文档_V1.2.txt
T

144 lines
6.3 KiB
Plaintext
Raw Normal View History

2026-08-10 23:13:58 +08:00
======================================================================
资源中心管理器 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
2026-08-10 23:13:58 +08:00
二、源文件
--------------------------------------------------
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
2026-08-10 23:13:58 +08:00
七、 工具说明
2026-08-10 23:13:58 +08:00
--------------------------------------------------
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(版本中立命名)。
2026-08-10 23:13:58 +08:00
======================================================================
附录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\