# 欧霓博目录软件 —— 项目总览(继续开发前先读这个) > 本文件是项目全貌的汇总。继续开发时,先让 AI 读本文件 + `README.md`(同目录)+ `文件夹说明.md` 即可接上上下文。 > 最后更新:2026-08-28(**NX 按需生成服务二期 A 版全链路打通**:批处理导出 0 solid 根因定位+独立翻译器正解+worker 改造+nxBin 配置化+后台 /admin 密码登录三 tab+一键启动+网页状态圆球+生成后 3D 预览选格式下载+模型管理定时/手动清理;详见 `docs\工作交接.md` + `开发记录-NX2506批处理攻坚.md` §4.6) ## 1. 项目背景 - 公司:**欧霓博**(气动元件/气缸制造商) - 目标:**自研**气动元件电子目录软件,对标 Airtac 的 CADENAS PARTdataManager 目录光盘(工作目录里的 Airtac 包即对标物),**不使用任何 CADENAS 组件** - 核心目标一句话:**普通客户通过软件选型并下载 STEP 文件**,导入自己的 CAD 使用 ## 2. 需求定稿(多次收敛后的最终范围) | 项 | 结论 | |---|---| | 交付对象 | 普通客户(各类 CAD 用户),不限定 Teamcenter/NX/SolidWorks | | 核心功能 | 浏览目录 → 参数选型(规则过滤)→ 3D 预览 → **下载 STEP** | | 增强功能 | 搜索(型号/中文/英文/拼音)、参数范围筛选、批量下载 zip+BOM | | 维护端 | 维护入口内置在同一个软件里(密码保护,客户不可见);内含 Builder 制作器 | | 发布 | 维护入口/命令行一键编译发布 → **客户版单文件 exe**(数据内置、无维护入口)+ 光盘目录 + 增量更新包 | | 平台 | Windows 10/11,完全离线单机,中英双语 | | 一致性(2026-08-24 定) | **桌面版功能与页面排版始终与在线版保持一致**——任何界面/功能改动两端同步做 | | Teamcenter 集成 | 默认不做,仅当客户明确需要时作为可选扩展(M4) | ## 3. 里程碑状态:M1/M2/M3 全部完成 ✅ - **M1 核心闭环**:目录树、参数化选型(规则 R1~R3 实时过滤)、3D 预览(拖拽旋转/滚轮缩放)、尺寸图/参数表/数据表 PDF、STEP 下载、维护入口(`--admin`)、中英切换 - **M2 制作与检索**:维护入口内 Builder 5 步向导(含保存/加载配置)、全文搜索+拼音关键词、参数范围筛选、批量下载、校验器(STEP 缺失/编码重复/规则冲突/附件缺失)、CLI 打包模式 `--build` - **M3 一键发布**:`publish.ps1`(自测门禁 → 客户版 exe 数据内置+物理剔除维护入口 → 光盘目录+增量包)、数据包版本校验、用户/维护手册 - **自测全过**(`--selftest`,结果看 `sample/selftest.log`;样例包 40 项、ONEBOT 包 25 项,新增"手册页附件可读"与"真实 B-rep 兼容"检查) ## 4. 技术栈与关键决策(含与设计文档的偏差) 本机环境:**无 .NET SDK**,有 VS 2022 Build Tools(含 Roslyn csc.exe)+ Windows 自带 .NET Framework 4.8/WPF。 | 设计文档原案 | 实际实现 | 原因 | |---|---|---| | C# / .NET 8 (WPF+MVVM) | C# / net48 **代码式 WPF(无 XAML)**,csc 编译 | 零安装;net48 内置于 Win10/11,客户机免装运行时 | | SQLite + FTS5 | **zip + catalog.json**,内存 LINQ 查询 | 避免外部依赖,10 万级变体足够 | | Helix Toolkit | WPF 内置 **Viewport3D** | 零依赖 | | 预生成预览网格 | 运行时直接解析**自有极简 STEP**(4 圆柱组合)→ 网格 | 自有格式简单;真实 CAD 通用 STEP 由 NX Journal 批量生成预生成变体 | | — | 数据包 .opc = zip(catalog.json + step/ + docs/) | schema_version=1.0,向前兼容校验 | **关键架构决策**(详见 `欧霓博_目录软件_M1设计文档.md` 决策 2): - **预生成变体策略**:一个型号组合一个 STEP 文件,选型=命中文件。**离散档位行程够用**;若行程连续(任意值)需"参数化二期"(运行时建模,最难部分,已预留 `geometry_source` 扩展点) ## 5. 目录结构地图(工作目录根 = Airtac 包目录) ``` airtac_0602_2026_v11sp5_world_version/ ← 工作目录根 (Airtac 原始 CD 内容: data/ + cip/ + software/) ├── OnebotCatalog_2026.08_客户版.zip ← 客户交付包示例 ├── ONEBOT目录-维护版.lnk / ONEBOT目录-客户版.lnk ← 快捷方式 └── OnebotCatalog/ ← ★项目主目录 (自包含: 文档+软件+数据+工具) │ ├── 项目总览.md ← 本文件 (继续开发的入口) │ ├── 文件夹说明.md / README.md ← 目录用途 / 开发说明 │ ├── 欧霓博_电子目录系统_开发提示词.md + M1/M2/M3设计文档.md ← 历史文档 │ ├── src/ (App + CatalogCore + Viewer3D, 10+ 个 .cs) │ ├── web/ (在线站前端: index.html/app.js/style.css + OneBot-logo.png) │ ├── viewer/STEPViewer/ ← 新迪 3D 查看器【本地副本】(原项目 Z:\...\上海新迪3D\dev 只读不改; │ │ menu=min 精简菜单/无模型树已改; 菜单精简-生产部署补丁.txt = 部署补丁) │ ├── assets/ (OneBot-logo.png 嵌入资源 + OneBot-logo.ico exe 图标) │ ├── tools/ (build.ps1, publish.ps1, serve-web.ps1, fix-bom.ps1, make-icon.ps1, │ │ make-opc.ps1, extract-pdf.py, ui-diagnose.ps1, ui-diagnose2.ps1) │ ├── bin/ (OnebotCatalog.exe 开发版, OnebotCatalog-Customer.exe 客户版, 维护入口.bat) │ ├── sample/ (OnebotCatalog_2026.08.opc 真实目录; 2026.06 旧版已删, SC-meta.json) │ ├── release/ (2026.08 真实三份产物: 离线包+增量包+在线站) │ ├── docs/ (用户手册.md, 维护手册.md) │ ├── README.md (开发说明, 必读) │ ├── onebot-data/ ← ONEBOT 数据管线 (统一路线, 2026-08-22 并入自包含布局) │ │ ├── catalog/ ← ★唯一数据源★ (catalog.json + series\*.meta.json + csv\ + step\ + manual\) │ │ ├── tools/ (gen-onebot-source.ps1 源生成器, render-manual-pages.py 手册拆页, scan-manual-pages.py) │ │ ├── 数据维护说明书.md ← 团队操作指南 (数模替换/新增系列/打包/排查) │ │ └── (旧 build-onebot-catalog.ps1 与 out\ 旧布局残留已于 2026-08-23 删除, 防止误用) │ └── sample-data/ ← 样例数据 + NX 工具 (2026-08-22 并入) │ ├── onb-sc/ (SC 标准气缸 72 变体 + MAQ 迷你气缸 36 变体, step/ 108 个 STEP, params.csv) │ └── tools/ (gen-step/gen-images/gen-pdf/gen-xlsx/verify-step/fix-bom, │ nx-batch-export.vb NX 批量导出模板, nx-batch-export-glb.vb, │ NX母模建模操作说明书.md) │ ├── airtac-benchmark/ ← 亚德客目录对标分析 (2026-08-22, 仅结构/格式, 不含对方几何) │ ├── 亚德客目录对标分析.md ← 主报告 (.cip 容器格式/目录组织/参数格式/架构对照/可借鉴点) │ ├── cip-tool.py (解析器) + series-tree.txt (系列树) + *-listing.txt (两容器条目清单) │ └── out\ (解出的文本配置: dir.prj/categories.prj/系列.tab 等, 仅明文, 无几何) ``` ### 真实数据 (ONEBOT, 2026-08-22 入库) - 来源:《ONEBOT - 直线气缸 - 中文.pdf》(152 页, 71MB)。提取方式:`OnebotCatalog/tools/extract-pdf.py` (PyMuPDF) + 私有区数字解码(0xF6B1~0xF6BA = 0~9)。 - 产物:`OnebotCatalog\onebot-data\catalog\`(★唯一数据源★:catalog.json + series\*.meta.json + csv\ + step\ 1,309 个占位几何 STEP + manual\ 38 页)→ C# FullCatalogBuilder → `OnebotCatalog/sample/OnebotCatalog_2026.08.opc`(11 系列 52,154 变体, 5.5MB)。 - 系列:KC(32-320)/KCB/KSB/KCS/KS/KSU/M/MS/MSC/MAL/MALC;规则按手册提取(YB→缸径≤125;KS/KSU 双轴型固定形式受限)。 - **2026-08-23 新增 6 个 UNIVER 系样板系列**(参照官网 universal-onebot.com 产品数据):UCBM 气动夹紧缸(6 型号)/ULP 可伸缩定位销(3)/USP 勾销缸(3)/UGP 夹爪缸(2, 含规则)/UAGP 翻转缸(22)/LAE 电动气缸(3)——共 39 型号,几何为占位,参数仅"规格(±型式)"两列,**作为各分类的填数模板**(现 17 系列 52,193 变体)。 - **几何为占位**:NX 母模批量导出真实 STEP 后,按相同文件名(`系列-型号缸径x行程.step`)替换 `catalog\step\` 并【重建全量目录】即可(KC-00-32x10 已试点)。 ## 6. 日常操作手册(浓缩) ```powershell # 编译开发版 / 客户版 powershell -NoProfile -ExecutionPolicy Bypass -File OnebotCatalog\tools\build.ps1 powershell -NoProfile -ExecutionPolicy Bypass -File OnebotCatalog\tools\build.ps1 -Customer -Opc sample\xxx.opc # 自测 (结果看 OnebotCatalog\sample\selftest.log) OnebotCatalog\bin\OnebotCatalog.exe --selftest OnebotCatalog\sample\OnebotCatalog_2026.08.opc # CLI 打包 (与向导同一 Builder 内核; --meta 元数据模板见 sample\SC-meta.json) OnebotCatalog\bin\OnebotCatalog.exe --build params.csv step目录 输出.opc --series SC --meta 配置.json # CLI 全量打包 (统一路线: 源目录 → .opc; 结果看 \build.log) OnebotCatalog\bin\OnebotCatalog.exe --buildfull OnebotCatalog\onebot-data\catalog OnebotCatalog\sample\OnebotCatalog_2026.08.opc # 刷新源数据 (占位几何+CSV+meta 重生成; NX 真实 STEP 直接替换 catalog\step\ 同名文件即可, 无需跑这个) powershell -NoProfile -ExecutionPolicy Bypass -File OnebotCatalog\onebot-data\tools\gen-onebot-source.ps1 # 一键发布 (自测不过不允许发布; ★发布前必须先停 serve-web 和客户版 exe★) powershell -NoProfile -ExecutionPolicy Bypass -File OnebotCatalog\tools\publish.ps1 -Opc sample\xxx.opc -Version 2026.08 # 本地网页预览 (并发服务器, 默认站点 release\web_2026.08; 关掉即停) powershell -NoProfile -ExecutionPolicy Bypass -File OnebotCatalog\tools\serve-web.ps1 # 运行 OnebotCatalog\bin\OnebotCatalog.exe sample\xxx.opc # 客户模式 OnebotCatalog\bin\OnebotCatalog.exe sample\xxx.opc --admin # 维护入口 (密码: onebot888) ``` **维护入口在哪里(用户常问)**: - 双击 `OnebotCatalog\bin\维护入口.bat` = 开发版 + --admin + 密码框(密码 onebot888)→ 顶栏出现【维护入口】按钮 - **客户版 exe(release\ 里那个)编译时已彻底移除维护入口**——这是设计需求,不是 bug;客户永远看不到编辑功能 - 若需在客户版也留隐藏入口(如 Ctrl+Shift+A 弹密码框),改 MainWindow.cs 一处即可(未做) **放数据/编辑数据流程**(核心概念:.opc 是编译产物,不可直接改;编辑 = 改源头 CSV/STEP → 重新生成): 1. 准备:参数表 CSV(首列=型号编码 + 参数列 + 必须的 step_file 列)+ STEP 目录 + 可选附件 2. 首次:维护入口 → 目录制作器 → 5 步向导(导入→参数→编码→规则→附件生成)→ 【保存配置】 3. 编辑:改 CSV/STEP → 向导【加载配置】→ 重新导入 → 生成 → 校验 → publish 或替换客户 catalog.opc 4. **编辑当前数据(2026-08-22 统一路线)**:唯一数据源 = `OnebotCatalog\onebot-data\catalog\`(catalog.json + series\<代码>.meta.json + csv\ + step\ + manual\)。维护窗口显示当前包系列清单;目录制作器 Step1 顶部选【数据源目录】(默认已填) → 下拉选系列 → 编辑参数/规则/显示名/附件 →【保存配置】(直接写回 series\*.meta.json) → 点【重建全量目录】→ 全量 .opc 生成并可加载到主窗口。同一内核另有 CLI:`--buildfull <源目录> <输出.opc>`。旧 build-onebot-catalog.ps1 已废弃(存档);源数据刷新用 `OnebotCatalog\onebot-data\tools\gen-onebot-source.ps1`(几何+CSV+meta 生成,NX 真实 STEP 直接替换 catalog\step\ 同名文件) 5. **团队完整操作指南**:`OnebotCatalog\onebot-data\数据维护说明书.md` —— 数模替换 / 新增产品系列(CSV+meta+挂分类+STEP 全流程)/ 只改参数规则 / 常见问题排查表(含"桌面 3D 对真实 B-rep 空白"等已知边界),可直接转给维护同事 **环境陷阱(重要!)**: - PowerShell 5.1 与 csc 对**无 BOM 文件按 GBK 读取** → 编辑任何含中文的 .ps1/.cs/.vb 后必须先运行 `fix-bom.ps1`(幂等,可重复跑)再编译/运行 - winexe(GUI 程序)退出码不可靠 → 自测结果以 selftest.log 文本为准("结果: X 通过, Y 失败") - 外层 PowerShell 调用里不要用双引号包裹含 `$` 的命令(外层会先插值吞掉变量) - **发布前必须先停 serve-web 与客户版 exe**(站点目录/编译产物被占用会失败;publish 已带删除重试,但 exe 锁仍会卡编译) - 嵌套 powershell 传数组参数会被揉成单串 → fix-bom 等带 -Files 数组的脚本用当前会话 `& (Resolve-Path ...).Path -Files @(...)` 调用;`&` 相对路径偶发"模块加载"报错,一律先 Resolve-Path 取绝对路径 ## 7. NX 数据准备(母模参数化 + Journal 批量导出) 用户使用 **NX 2506**。流程(★完整操作说明书:`OnebotCatalog\sample-data\tools\NX母模建模操作说明书.md`——表达式规划/建模五步/验收表/journal CONFIG/常见问题): 1. **建参数化母模**:所有会变尺寸用表达式(`bore`/`stroke`/`rodLen=stroke+40` 公式联动),表达式名与 CSV 列名一字不差;磁石槽等"有无"特征用【按表达式抑制】(magOn=0/1);**固定形式/磁石/双轴都改变外形 → 母模内做特征组+按表达式抑制切换**(mountIdx 0~6、twinOn 0/1);草图必须全约束 2. **安装方式建议做法②**:母模只建气缸本体,安装件(法兰/脚座/中摆)独立 STEP 当选配件发;参数表 mount 列照写,多型号可共用同一 step_file(Builder 支持) 3. **批量导出**:NX 里 工具→日记→播放(**不是 Ctrl+U**,Ctrl+U 只认 .dll),选 `OnebotCatalog\sample-data\tools\nx-batch-export.vb`(已适配 NX 10~2506 的 DexBuilder API;改 CONFIG 区三个路径即可) 4. 验收:母模手动改 stroke/magOn/bore 验证联动,再 2~3 档小批量试跑,最后全量 5. **GLB 轻量化批量导出(待办 9)**:`nx-batch-export-glb.vb` 同款骨架;NX 2506 原生支持(文件→导出→Extended Reality→GLB,NX 2206 起有此功能);导出 API 需用【工具→日记→录制】录一次真实调用再填入 ExportGlb 函数体(模板已留接缝) ## 8. 双发布管线(离线 + 在线,一次编辑两处发布) 目标:**同一份数据,一次编辑,离线/在线同步发布,零二次编辑**。 ``` CSV + STEP + 配置 meta(唯一数据源) ↓ Builder 打包 .opc 数据包(唯一中间产物) ↓ publish 流水线(扩展现有 publish.ps1) ┌───────────┴─────────────┐ 离线发布 在线发布 ├─ 客户版 exe(数据内置) ├─ 解包 .opc 内容 ├─ 发布 zip(官网下载) │ (catalog.json + step/ + docs/) └─ 增量包 catalog.opc └─ 上传 Web 服务器静态目录 ↓ 网页选型应用(读同一份 catalog.json) ``` **一致性三保障**:① 格式同源——网页消费的 catalog.json 与离线包内部完全同一份;② 校验同源——两端用同一 PackageValidator;③ 版本同源——catalogVersion 统一,在线即时更新,离线客户走增量包;后续给客户版 exe 加"检查更新"(启动时读服务器 version.json 对比版本号提示升级),离线客户永不落后。 **网页版技术要点**:纯静态托管(云服务器/OSS/CDN)即可;一期做目录树+参数选型+尺寸图+下载(无 3D);二期 3D 预览需构建期把 STEP 预转 **glTF**(three.js 渲染);附加价值:搜索引擎收录获客、下载/选型统计、SEO。 **在线 MVP 已实现(2026-08-22,持续增强)**: - `OnebotCatalog/web/` — 前端三件套(index.html / app.js / style.css,零依赖纯静态);规则引擎与离线版 C# 同语义;支持目录树/选型/尺寸图/参数表+范围筛选/搜索/双语/STEP 下载;URL 加 `?selftest=1` 页面底部显示断言结果 - **网页版增强(2026-08-22)**:目录树/参数面板**拖拽调宽**(split1/split2 分隔条);STEP 下载**点击即时反馈 + 3 秒防连点**;尺寸图窗口显示**系列手册页**(kind=manual);3D iframe 带 `&menu=min` 精简菜单;品牌 ONEBOT;app.js 版本号 `?v=4` - publish.ps1 第 5 步:解包 .opc + 复制前端 → `release/web_<版本>/`,**整目录上传到网站根目录即上线**(站点目录删除带重试) - `OnebotCatalog/tools/serve-web.ps1` — 零依赖本地预览服务器(localhost:8080,**Runspace 池 16 并发**,大文件不阻塞下载,含防目录穿越 + /viewer/ 双根目录) ## 9. 待办清单(按优先级,状态更新于 2026-08-22) | # | 待办 | 状态 | 依赖 | |---|---|---|---| | 1 | **真实数据接入**:真实系列参数表 + NX 母模导出 STEP → 套用 Builder 流程 | 🔄 目录数据已入库;**KC-00-32x10 真实数模已试点接入**(网页渲染/下载验证通过),待批量导出其余 1,308 个 | 用户 NX 母模批量导出 | | 2 | **离线交付完善**:代码签名证书 + 官网 zip 下载流程 | ⏳ 未开始 | 证书需用户购买 | | 3 | **虚拟机验收**:纯净 Win10/11 断网跑客户版 + CAD 核对 STEP | ⏳ 未开始 | 可随时做 | | 4 | **在线 MVP**:网页选型(目录树+参数+尺寸图+下载,无 3D);publish.ps1 增加"解包上传"输出分支 | ✅ 完成(2026-08-22) | 待上传部署 | | 5 | **检查更新**:客户版 exe 启动时读服务器 version.json 提示升级 | ⏳ 未开始 | 在线 MVP 之后 | | 6 | **在线 3D 预览** | ✅ 完成 | 新迪 STEPViewer iframe 联动 + Canvas 回退 | | 7 | **参数化**:**一期选型数据参数化**(2026-08-25 上线,进展 23)+ **二期 NX 按需生成服务**(服务器现算 STEP,CADENAS 模式;A 版:轻量自建队列 + run_journal 常驻 worker,单个+批量、输出留存不删、检索先行、多格式 STEP/Parasolid/IGES/STL) | ✅ 一期上线;**二期 A 版全链路打通(2026-08-28)**:批处理导出 0 solid 根因定位 + 独立翻译器正解 + worker 改造 + 后台 /admin 密码登录三 tab + 一键启动 + 网页状态圆球 + 生成后 3D 预览选格式下载 + 模型管理定时/手动清理;Parasolid/STL 已砍(只留 step/iges/prt)| **真母模**(建模工程师,唯一卡进度)+ NX 2512 实测 + 云部署 | | 8 | **M4 可选扩展**:Teamcenter 集成 | ⏳ 未开始 | 仅客户明确需要 | | 9 | **网页/桌面 3D 轻量化(预转换)**:NX 把 STEP 离线批量转轻量网格,预览读网格(快/稳),STEP 照旧下载 | ✅ **桌面窗口内部分完成(2026-08-23)**:开源 Helix Toolkit (MIT) 直渲 STL 网格,NX journal 同步导出 STL(进展 17);网页端轻量化(glTF)待做:`nx-batch-export-glb.vb` 模板已写 | 网页轻量化随 NX 母模批量导出一起做 | | 10 | **网站集成/云部署**:目录网页版融入公司网站(onebot251231_n2PB6,React+Supabase)或腾讯云+宝塔部署;已出三方案(静态模块/网站后台/维护服务),等用户命令 | 📋 方案已分析待命令 | 需备案域名 + 服务器预算确认 | 共 9 项待办,**完成 4/6,1 试点中**,剩 2/3/5/7/8/9。核心软件(M1-M3)已完成。 **2026-08-22 全天进展记录(按序)**: 1. 占位 STEP 全量重建(OCCT 拓扑+颜色)→ 自测 25/25 → 2026.08 三份产物发布(2026.06 旧产物已全删,脚本默认参数统一指向 2026.08) 2. **统一路线重构**:源目录 `OnebotCatalog\onebot-data\catalog\` = 唯一数据源;C# FullCatalogBuilder(维护窗口【重建全量目录】/ CLI --buildfull);向导编辑源目录 meta JSON(含 Display 显示名列);旧打包脚本废弃 3. 尺寸图窗口**手册页对照**(38 页 2MB,kind=manual) 4. 新迪查看器 **menu=min 精简菜单 + 隐藏模型树**(本地副本;生产补丁文件备好) 5. 窗口拖拽:桌面版三分区 GridSplitter + 全部窗口可调/最小尺寸;网页版目录树/参数面板分隔条 6. **真实数模试点**:KC-00-32x10 真实 NX STEP 接入全链路,无头浏览器验证渲染成功(自测兼容真实 B-rep) 7. STEP 下载反馈+防连点;serve-web 并发化(Runspace 池);publish 删除重试 8. 品牌统一 ONEBOT 9. 注意:release 站点 app.js 里 `VIEWER_BASE` 目前是本地 `/viewer/` 前缀,**上传生产前需改成 `/STEPViewer/index.html`**(§12) **2026-08-23 进展记录(续)**: 10. **平替对照功能**:数据源 `catalog\crossref.csv`(brand,foreign_model,our_model,note;构建自动校验我方型号存在);桌面【平替对照】标签页+搜索直达(SearchEngine 挂 AltCodes,竞品型号精确命中 900 分)、网页同款标签页;佳尔灵英文目录自动提取工具 `onebot-data\tools\jelpc-crossref.py`(系列对照 SI↔KC/SIB↔KCB/SQ↔KCS/SC↔KS/SU↔KSU/SCT↔KSB/MAL/MALC 同名;完整订购码需逐系列解析订购码页) 11. **.stp 后缀兼容**:构建内核 ResolveStepFile(优先 .step,找不到同名 .stp),NX 导出的 .stp 直接放无需改名(已实测) 12. 桌面 3D 真实数模**自动弹浏览器预览**(本机微型服务器,静默失败降级);网页手册页标题只显序号、未选型不显示占位图 13. 修复向导前导零 bug(踩坑 #18),KC meta 数据还原,自测恢复 25/25 14. **产品种类扩充(空壳)**:catalog.json 新增 6 个分类——气动夹紧缸 CLM / 气动可伸缩定位销 PIN / 气动勾销缸 HOK / 气动夹爪缸 GRP / 气动翻转缸 ROT / 电动气缸 ELEC(中英名**参照官网 universal-onebot.com 与网站源码** `06_update_execution_categories.sql` + `translate-categories.sql`;series 暂为空,系列数据待 CSV+meta 按维护说明书场景 4 补充)→ 重建 25/25 自测 → 三份产物已发布 15. **6 个分类各建样板系列**(型号取自网站产品数据,几何占位、参数极简,作为填数模板):UCBM/ULP/USP/UGP/UAGP/LAE(39 型号,占位 STEP 按型号命名——将来 NX 真实数模**同名替换**即可,CSV 都不用改)→ 17 系列 52,193 变体 → 自测 31/31 → 三份产物已发布 16. **新系列 .stp 原生约定**(按用户 NX 导出习惯):6 个新系列的 step_file 列与占位文件统一为 `.stp`——NX 导出的 .stp 拷进 `catalog\step\` 同名覆盖即可,无后缀差异;老 11 个系列仍为 .step 列(.stp 自动兼容,但同前缀时 .step 优先,换 .stp 需先删 .step 占位) 17. **开源窗口内 3D(Helix Toolkit, MIT)**:桌面 3D 标签页接入 HelixViewport3D——选型后找 `<数据包目录>\mesh\.stl`,有网格就**窗口内直渲**(不再弹浏览器),无网格回退浏览器方案;管线:NX journal 同步导出 STL 到 `catalog\mesh\`(exportStl 开关,公差 0.5mm)→ publish 同步到 sample\mesh\ + 发布目录 mesh\;`gen-mesh-preview.py` 生成占位网格(40 个已就位);lib\ 放 HelixToolkit.Wpf.dll(2.27.3, net462)+HelixToolkit.dll,build/publish 自动附带(客户版 +580KB) 18. **STEP→STL 开源转换链路**(手头真实 STEP 不必等 NX):`step-to-stl.py`(cadquery/OCP,LGPL,1.5mm 公差,**二进制 STL**)批量把 `catalog\step\` 真实数模转 `catalog\mesh\`;`simplify-stl.py`(纯 numpy 顶点聚类 0.75mm)把 >2MB 网格压小——UCBM32 装配体 22MB→2.1MB、USP63 4.8MB→0.5MB;已转真实网格:UCBM32/USP63/KC-00-32x10 19. **方案 B 落地:窗口内嵌 WebView2 3D(2026-08-24)**:lib\ 引入 Microsoft.Web.WebView2 三件套(1.0.4129.50, net462);MainWindow 3D 标签页四级优先级——**STL 网格(Helix) > WebView2 内嵌新迪查看器(真实 STEP 直显) > 外部浏览器回退 > 占位自绘**;WebView2 初始化失败静默降级(Win11 自带运行时, Win10 装 Edge 即有);真实数模不再弹浏览器窗口;发布目录附带三件套 DLL(开发提示词文档:`开发提示词-窗口内3D-WebView2方案B.md`) 20. **桌面/网页一致性 + 布局合并(2026-08-24,用户新规矩:桌面版功能与排版始终与在线版一致)**:两端 3D 与尺寸图合并为同一页(左 3D | 可拖拽分隔条 | 右 尺寸图+手册页);网页无头实测分隔条拖拽生效;37 个占位网格已删,保留 3 个真实网格(UCBM32/USP63/KC-00-32x10)作无 WebView2 环境降级;新 6 系列手册占位(manual\<系列>\p01.png + meta 附件,`gen-manual-placeholders.py` 纯标准库生成,真实手册到货同名覆盖) 21. **PDF 下载 + 精确视图定稿(2026-08-24)**:① 17 个系列手册页打包成 PDF(`manual-pages-to-pdf.py`,纯标准库 PNG 解码+手写 PDF)挂 datasheet 附件——网页【下载 PDF】按钮直接下载、桌面数据表标签新增【下载数据表 (PDF)】(SaveFileDialog),与 STEP 下载一致;② **真实数模直接进 WebView2 精确视图**(用户定稿,不做网格快显+按钮);显示链:占位→自绘 / 真实→WebView2 直显 / 无运行时→Helix 网格降级 / 都无→浏览器回退;③ 桌面参数表**双击行→参数带入选型**(与网页一致);④ 新迪查看器防闪烁补丁(body 首帧前应用 embed/menu-min 类,生产部署补丁文件已更新);⑤ crossref.csv 用户行 S0032-50 修正为 KCS0032-50 22. **购物车批量导出(2026-08-24,淘宝式,两端一致)**:三处入口(参数面板【加入清单】/参数表行尾"+"与勾选批量加入/顶栏【清单 (N)】角标)→ 清单面板(桌面非模态窗口/网页右侧抽屉;数量可改仅体现于 BOM,zip 每型号一份)→ **一键打包** zip(全部 STEP+BOM.csv UTF-8 BOM+清单.txt,重名加系列码后缀);桌面 ZipArchive 零新依赖,网页 JSZip 3.10.1 (MIT, web\libs\) 前端内存打包纯静态;购物车生命周期=浏览器刷新/软件重启才清空,切系列/标签页/搜索/平替均不动购物车;原"参数表批量导出所选"改造为批量加入清单;无头 E2E 验证:两系列各加一件 → 角标 (2) 抽屉 2 条 0 报错;开发提示词:`开发提示词-批量导出购物车.md` 23. **参数化选型引擎一期(2026-08-25,两端一致,KC 试点)**:meta.json 扩展 `mode=parametric` + `modelCodeTemplate`(语法 `{field[:padN]}`)+ range 参数域(min/max/step/gridValues);CSV 降级为"标准档位网格",非标组合由引擎实时生成编码(无 STEP);**对拍门禁**(构建期强制:KC 全部 2,628 编码模板重生成 100% 一致);**双端一致性** = 一份规则 JSON + C#/JS 各一解释器 + 同一份测试向量 `catalog\parametric-vectors.json`(随 .opc 发布,桌面 selftest 36/36 含向量 7/7 + 网页无头 e2e-parametric.js 16/16);非标档位行为:标题徽标 + 下载按钮置灰(统一文案)+ 3D 展示最近标准档位(按域距离,平局取小)+ 购物车条目标注"非标档位(打包时无 STEP)"、zip 打包跳过并注明;range 参数 UI = 桌面可编辑下拉(标准档位标"标准")/ 网页输入框+datalist;非法输入红字提示不生效;开发提示词:`开发提示词-参数化选型引擎.md`、二期:`开发提示词-NX按需生成服务.md`(A 版已含 单个+批量/输出留存/检索先行/多格式) 24. **NX 按需生成服务二期 A 版(2026-08-25,开发+本地联调完成,待 NX 实测/部署)**:`bin\GenServer.exe`(独立控制台 exe,tools\build-genserver.ps1 单独编译,复用 CatalogCore 规则引擎做服务端二次校验——红线)+ `sample-data\tools\worker_journal.vb`(run_journal 常驻轮询,母模副本绝不保存、批量单会话顺序处理、逐项 .prog 进度);**检索先行**(入队前+认领后双重检索,输出目录 `output\<系列>\<型号>\` 留存不删,全格式齐全即命中复用);**多格式** STEP(214)/Parasolid/IGES/STL(DexBuilder+StlManager,与 nx-batch-export.vb 同源);**单个+批量**(/gen、/gen-batch、/status、/file、/files、/download,token 一次性+限流+CORS+匿名模式);两端接入:网页 config.js api(空=置灰过渡态)+ 桌面 catalog.json genApi;购物车含非标时打包前自动批量生成(型号子文件夹);本地联调全过(状态机/检索/批量/zip/token;网页 e2e-gen.js 8/8:按钮升级/立即命中/排队轮询/标准回归);**待用户**:masters.json 表达式名确认、KC 母模就位、NX run_journal 实测、IGES/Parasolid 枚举名按版本核对、云部署指令 25. **NX 2506 批处理攻坚(2026-08-26 凌晨,接续见 `OnebotCatalog\开发记录-NX2506批处理攻坚.md`)**:本机确认 **NX 2506 已装**(`C:\Program Files\Siemens\NX2506\NXBIN\run_journal.exe`);全部 API 通过反射探针实测适配(probe-api1~6.vb):OpenBaseDisplay(批处理 OpenBase 后 Work=NULL)、CloseAll 两参数、CreateExpression("Number","名=值")、UF EditExp 只改已存在、ufs.Modl.Update()、Session.DexManager 各格式独立 Creator(StepCreator/IgesCreator/ParasolidExporter/STLCreator)、SaveAs 两参数、journal 无 JSON 库(任务文件改行式键值,GenServer 烘焙母模配置);worker 编译运行全管线通过(心跳/认领/改表达式/写结果);**新增 PRT 格式**(用户需求:SaveAs 输出 NX 原生参数化部件)+ 格式下拉两端齐;**卡点**:批处理模式翻译器导出全部空几何(STEP/IGES 空文件、Parasolid "no valid export objects"、STL 不产出;已排除中文路径/只读/引用集/几何来源)——交互式导出正常;**明天方案**:用户交互式 NX 录制导出宏修正 worker 导出函数(首选),或真母模直接实测(可能直接成功);**教训**:停 worker 时按时间条件批量杀 ugraf 误杀了用户交互会话,今后停进程必须精确 PID;用户新需求待做:生成后先 3D 预览再选格式下载(GenServer 加 /preview 端点) ## 10. 重要踩坑记录(2026-08-22,修复都带回归自测) | # | 坑 | 根因与修复 | 影响面 | |---|---|---|---| | 1 | **选型选项一选就被清空**("已选 0/5,无法选择") | `AllowedOptions` 跳过了"已选参数"的键,UI 刷新拿空列表把刚选的值删掉(M1 就潜伏,样例期未暴露) | 桌面+网页 | | 2 | **选完型号后参数锁死** | 修复#1 后,已选参数的可选值被"自己的当前值"锁死 → 改为"除自身外的其他已选"约束计算可改值 | 桌面+网页 | | 3 | **网页磁石/固定形式点不了** | 空字符串 ""(无磁石/基本型)是合法枚举值,`