======================================================================
  资源中心管理器 V1.2 — 开发技术文档
  2026-07-29
======================================================================

一、项目概述
--------------------------------------------------
项目：资源中心管理器 (Res_center)
类型：Creo Pro/TOOLKIT DLL 插件
功能：标准件库浏览、3D 预览、搜索过滤、快速装配、LIC 授权
语言：C (核心) + C++ (preview.cpp)
编译器：MSVC 2022 | SDK：Creo 8.0 PTK | 平台：Win10/11 x64 | Creo 7.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 加宽居中


七、工具说明
--------------------------------------------------
  tools\keygen_lic.exe   LIC授权文件生成器（Metro暗色UI + 背景音乐）
  tools\configen.exe     protk.dat自动配置器（一键生成）
  部署时放在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\
