Files
FreeCADWasmDev/docs/current/desktop-ui-part-entry-repair-20260923
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
..

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:网格转换、几何采样、附着、框选已接主工作区并完成一次配置前端交付;New Sketch 仍未完成,整包保持 open。