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

144 lines
6.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
======================================================================
资源中心管理器 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\