Files
ctbjrj/cadbt/.zcode/plans/plan-sess_6f2f9ddb-bc6b-4d41-8364-3e9e73e5ee76.md

2.4 KiB
Raw Permalink Blame History

整合方案 v3(按用户要求调整):插件改源码、左侧工具栏 + 网页 CAD 文档区

布局(Smart.CustomComponents.DockSurface 停靠面板)

窗口 位置 内容
QuoteWindow(插件工具栏) DockLeft(宽 ~420,不可关闭) Form3 报价界面(cadcj 改造版,作为左侧工具面板)
NewProjectWindow DockLeft(第二个标签页或 DockBottom) 新建项目窗体
CadViewerWindow Document(中央文档区,独立窗口) WebView2 → http://localhost:5173 网页 CAD

A. 网页端(CAD-Viewer 本地仓库,packages/cad-viewer-example 新增 src/cadbridge.ts)

与 v2 相同:

  • 连续扒图命令(仿 AcApRectCmd 两点 jig;正向=逐条/反向=合并;画彩色 AcDbPolyline 框;回传 text/frameHandle/textHandle)
  • 消息监听:zoomToHandle / deleteHandles / clearHighlight;删除实体回发 entityErased
  • 注册 patu/paxh/payj 命令

B. 插件改造(直接修改 cadcj 源码,生成 cadbt 专用版本)

  • 复制 Form3.cs/Form3.ui.cs/新建项目.cs/新建项目.ui.cs 到 cadbt 项目(cadcj 原插件目录不动,保持 AutoCAD 版独立)
  • Form3 中约 15 处 Autodesk.AutoCAD.* 调用直接改写为 CadBridge 调用(扒图命令、ZoomToFrameHandle、DeleteFramesByHandles、ObjectErased 订阅→桥事件、SaveCurrentDwg 删除)
  • PaMode/PaTextResult 保留;PaTextSelector 的桩改为 CadBridge.StartPick / EntityErased 事件
  • 好处:无 stub 假类型,编译不依赖 acdbmgd,代码可读可维护

C. 宿主程序(cadbt)

  • csproj:增强组件九件套 + AdvancedDataGridView + System.Data.SQLite(安装目录/..\cadcj HintPath)+ WebView2(nuget 解压到 libs\webview2,x86 loader 复制输出)
  • MainForm.Designer.cs:dockSurface1 + DockWindows 集合(左:QuoteWindow/NewProjectWindow;Document:CadViewerWindow)
  • CadViewerWindow:代码创建 WebView2,导航 localhost:5173,WebMessageReceived 分发到 CadBridge 事件;失败提示启动 pnpm dev
  • MainForm.DockWindows.cs:EnsureDefaultTheme + Show

D. 验证

编译 cadbt → 运行 → 三面板布局正确 → 联调扒图/定位/删框链路;网页端 pnpm dev 已验证可跑

说明

  • cadcj 原目录不动,AutoCAD 插件版继续可用;cadbt 用改造副本
  • 后续可选:pnpm build 出 dist + SetVirtualHostNameToFolderMapping 实现离线嵌入