# 整合方案 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 实现离线嵌入