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