Files
wangdequan 789e18ca3e
Some checks failed
FreeCAD master CI / Prepare (push) Has been cancelled
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
FreeCAD master CI / Pixi (push) Has been cancelled
FreeCAD master CI / Ubuntu (push) Has been cancelled
FreeCAD master CI / Windows (push) Has been cancelled
FreeCAD master CI / Lint (push) Has been cancelled
FreeCAD master CI / WrapUp (push) Has been cancelled
Stale Issues / stale (push) Has been cancelled
CodeQL Advanced (c-cpp) / Analyze (c-cpp) (push) Has been cancelled
Push Crowdin Translations / update-crowdin (push) Has been cancelled
Fetch Crowdin Translations / update-crowdin (push) Has been cancelled
Build Release / upload_src (push) Has been cancelled
Build Release / build (10.13, macos-15-intel, osx-64) (push) Has been cancelled
Build Release / build (11.0, macos-latest, osx-arm64) (push) Has been cancelled
Build Release / build (15.0, macos-latest, osx-arm64) (push) Has been cancelled
Build Release / build (ubuntu-22.04, linux-64) (push) Has been cancelled
Build Release / build (ubuntu-22.04-arm, linux-arm64) (push) Has been cancelled
Build Release / build (windows-latest, win-64) (push) Has been cancelled
Monthly issue metrics / issue metrics (push) Has been cancelled
Continue FreeCAD Web UI parity repairs
2026-09-23 14:03:56 +08:00

45 lines
4.7 KiB
Markdown
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.
# Part 桌面菜单/工具栏入口集中补漏 — 2026-09-23
状态:入口布局与键盘修改已实现,未验证;原 Part 包的主工作区任务接线仍待完成。
## 本轮已修改
`web/src/part-workbench-ui.tsx`:
- 依据 `freecad-source/src/Mod/Part/Gui/Workbench.cpp::setupMenuBar/setupToolBars`,将 Box Selection 放回首项;Shape From Mesh、Points From Shape、Attachment、材料检查放回顶层,移除额外 Feature/Inspection 子菜单及重复检查命令。
- New Sketch 放回 Part 菜单和 Part Tools 工具栏,继续使用既有 activatePartAction。
- 从桌面命令定义采用 Primitive、Persistent Section Cut、Points From Shape、New Sketch、Attachment 标签。
- 修正 Shape From Mesh 和 Attachment 图标名;复制五个原生 SVG 到 `web/public/icons/part/`:Part_BoxSelection、Part_Shape_from_Mesh、Part_PointsFromMesh、Part_Attachment、Sketcher_NewSketch。材料检查命令在桌面无图标,移除不存在的 SVG 引用并保留菜单图标占位空间。
- 整组菜单共用键盘行为:上下键在当前层移动、右键/Enter 进入子菜单、左键/Esc 返回当前父层、Home/End 跳转、Tab 收起并返回入口焦点;打开同级菜单时收起其他菜单,执行命令前恢复入口焦点。
沿用 `partUiActions → PartWorkbenchMenu/PartWorkbenchToolbars → project-shell.tsx::activatePartAction`。本轮未改几何算法、原生所有者或 Three.js 模型逻辑。
## 有源码依据的原包残余(不能用已有菜单标记宣称完成)
在 `web/src/project-shell.tsx::activatePartAction`,shape-from-mesh、points-from-mesh、edit-attachment、box-selection 仅设置 workspaceTask 并请求 read;相应任务组件没有在主工作区挂载。Sketcher_NewSketch 只切换工作台并设置 sketcher-new-sketch,未挂载对应创建流程。
1. Mesh 转换和几何采样:复用 `part-mesh-conversion-task.tsx`、`part-sample-points-task.tsx` 及 workbench-shell 中现有挂载。增加嵌入方式,使用当前文档快照/选择、同一 nativeRequest 和 applyNativeDocument;保留 tolerance/sew/sampleDistance、真实 Accept/Cancel/错误反馈,不新建 fixture 或第二文档。适配器已有 createShapeFromMesh/createPointSamples 原生请求。
2. Attachment:复用 `part-attachment-task.tsx` 和 executePartAttachmentDesktop 的 begin/apply/accept/cancelAttachment 事务,挂载主工作区并保留引用、MapMode、offset/rotation、取消回滚及卸载处理。单纯 read/snapshot 不会启动编辑。
3. BoxSelection:复用 WebViewTask/当前视口的区域框选与 selection callback。executePartBoxSelectionDesktop 发出 part.viewCommand 或 part.documentViewCommand,并非 PART_DOCUMENT_COMMAND。当前 runRetainedPartCommand 里的假 router 忽略 command 且一律把 payload.action 送 nativeRequest,不适合此路由;必须按 owner/command 接到真实视图协议。
4. New Sketch:接通既有 Sketcher 创建任务和当前文档所有者,明确平面/支持选择、确认、取消与模型树更新;切换工作台和写任务字符串不是创建流程。
以上属于已有 `operator-gap-ui-part-menu-toolbar-family` 未交付的原范围,回写同一个 key,不新建孤立按钮任务。原有 Tube/Primitives/Tolerance、快捷基本体与布尔路由、已完成菜单布局直接复用。
## 构建与接续
- 命令(项目目录):`python3 tools/build_web_frontend.py`。
- 日志:`docs/current/desktop-ui-part-entry-repair-20260923/build.log`。
- 退出码 0;Vite 日志 built in 1.65s,保留已有大 chunk 提示。
- 无原生源码修改,未运行原生构建;无未结束的本轮构建进程。
- 未运行测试、浏览器、截图、独立类型检查或验收。构建成功不代表完整功能通过。
- 第 10780 轮原调度器正在执行 Material 两个包,本轮只改 Part 独立源码与资源,未启动第二调度器;共享策略通过 tools/policy_io.py 原子更新。
处理模块 | 对标项 | 源码落点 | 路由入口 | OCCT 边界 | 状态 | 结论
--- | --- | --- | --- | --- | --- | ---
Part | 菜单层级/工具栏/图标/键盘 | part-workbench-ui.tsx;web/public/icons/part | PartWorkbenchMenu/PartWorkbenchToolbars | 沿用既有 native owner;无算法变更 | 已补漏(未验证) | 保留
Part | 主工作区任务/视图协议/草图创建 | project-shell.tsx;既有 Part task 组件和适配器 | activatePartAction/runRetainedPartCommand | 需正确接到现有 Part/Sketcher 文档与视图所有者 | 已定位待接 | 继续
## 主任务续接更新
参见 [continuation.md](continuation.md):网格转换、几何采样、附着、框选已接主工作区并完成一次配置前端交付;New Sketch 仍未完成,整包保持 open。