Skip to content

CAD 图纸操作 · 后端 MxServiceCode 指南 ​

适用范围:服务端处理 CAD 图纸(Node.js 命令行:格式转换、数据提取、参数化绘图生成、切分合并、批量导出)。 路由规则见 入口指引;前端操作见 前端 mxcad 指南。

目录


一、MxServiceCode 是什么 ​

MxServiceCode 是一个独立的 Node.js 命令行工程,用于在后台处理 CAD 图纸文件:打开/保存 DWG、格式转换、数据提取、参数化绘图生成新图纸、按图框批量切图、合并比较、导出 PDF 等。

工作方式:命令行调用,执行完即退出,无守护进程,无需启动任何服务。入口是 mxapp.js,每次执行一个命令,stdout 输出一行 JSON 结果;工程内置 Node 运行时,不依赖系统 Node。

后端服务 zip 的内容(同时含后端服务与格式转换程序 mxcadassembly,即完整超集;若只需转换程序可改下单独 MxConvert 包,见 入口指引"链接清单"):

Windows(后端服务包解压后只有一个顶层目录 MxServiceCode_TryVersion\,其下两个子目录):

MxServiceCode_TryVersion\    ← 解压后的顶层目录(与 zip 同名)
├── MxServiceCode\
│   ├── NODE.JS后台程序开发.doc   ← 官方教程:教如何基于本工程做后台开发(不是 API 文档)
│   ├── MxServiceCode.sln        ← 解决方案文件
│   └── MxServiceCode\           ← 工程目录(所有命令在此目录执行)
│       ├── bin\node.exe          ← 内置 Node 运行时
│       ├── Mx2DNode.node         ← 原生模块(核心 CAD 能力)
│       ├── mxapp.js              ← 入口(命令行)
│       ├── package.json          ← npm run build 编译
│       ├── src\                  ← TS 源码(mxcad\ 为 API 类,sample\ 为功能示例,MxCommand.ts 为命令注册)
│       ├── test.bat              ← 测试脚本
│       ├── empty_template.dwg    ← 空白模板
│       ├── A3.dwg / BT.DWG       ← 图框 / 图签示例图块
│       └── t1.dwg / tree.dwg     ← 测试图纸
└── MxCAD\
    └── Release\                 ← 格式转换程序目录(mxcadassembly.exe + fonts\ + 运行依赖等)

Linux(后端服务包解压后只有一个顶层目录 MxServiceCode_TryVersion\,其下两个子目录):

MxServiceCode_TryVersion\    ← 解压后的顶层目录(与 zip 同名)
├── MxServiceCode\
│   ├── NODE.JS后台程序开发.doc   ← 官方教程
│   └── MxServiceCode\           ← 工程目录(无 .sln;内置运行时为 node 而非 bin\node.exe,
│                                 另含 start_demo_MxServiceCode.sh、start_demo_systemlib_MxServiceCode.sh、Linux启动说明.txt)
└── Linux\
    └── MxCAD\                   ← 格式转换程序目录(mxcadassembly + fonts\ + 运行依赖等)

二、程序获取与目录结构 ​

2.1 下载与放置(固定临时路径,只下载一次,跨会话复用) ​

下载地址以 入口指引 的"链接清单"为准(按目标机器平台取"后端服务"对应行;Linux 包为 Ubuntu 20.04 x86_64 构建)。试用版,注意授权有效期。

固定临时路径:Windows = %TEMP%\MxCAD\,Linux = /tmp/MxCAD/。按 入口指引 的排查步骤执行:先判断任务需要什么(仅转换程序 / 需要后端服务),再查看临时路径下有什么——什么都没有 → 按需要下载对应 zip(只需转换程序 → 单独 MxConvert 包;需要后端服务 → MxServiceCode 包,内含转换程序)解压到临时路径;只有转换程序 → 仅需转换程序时做过期检测(见《部署与启动说明.md》)即可用,需要后端时清空重下后端包;已解包后端包 → 做过期检测 + 完整性验证,不完整清空重下。重新下载前必须先清空临时路径(各包目录结构固定,后端包是完整超集)。不要扫描用户机器其他目录;系统清理临时目录后重新下载即可。

所有命令都在临时路径下的 MxServiceCode\MxServiceCode(工程目录)中执行。

2.2 基本用法(Linux 首次使用需先配置权限) ​

bash
chmod 777 start_demo_MxServiceCode.sh
./start_demo_MxServiceCode.sh     # 脚本内已完成 node、Mx2DNode.node、mxcadassembly 等的 chmod

出错时改用 ./start_demo_systemlib_MxServiceCode.sh(使用 systemLib 目录下的原生库)。

⚠️ 内置 Node 版本限制(实测):bin\node.exe 为 v10.9.0,仅支持 CommonJS——ESM(import 语法 / .mjs)直接报 SyntaxError;也没有 fetch、可选链等新特性。用内置 node 写辅助脚本一律用 CommonJS(require)+ .js;需要 ESM 时改用系统 Node。

三、本地参考文档(必读) ​

文档内容何时读
MxServiceCode命令参考.md12 个 CLI 命令完整参考(参数/返回值/调用示例)+ fileparam JSON 传参 + 新命令注册方法调用现成命令时
Mx2DNode二开API参考.md后台参数化绘图/数据提取全部 API(Mx2DDraw、MxBackstage、McDbDatabase、McDb* 实体、选择集、几何对象)二开新命令/定制逻辑时
部署与启动说明.md目录结构、调用方式、Linux 权限、mxcadassembly 独立调用与有效期检测、日志、二开工作流部署/排错时

四、任务→命令选型速查 ​

调用任何现成命令前,先对照本表确认"该命令的契约是否覆盖需求"——命令名不是选型依据。 现成命令不覆盖时直接走二开(见《Mx2DNode二开API参考.md》第九节范例),不要拿功能不符的命令"跑一下试试"。

想做的事走哪条路备注
提取文字 / 块属性getcaddata(现成)⚠️ 仅 TEXT + INSERT 属性,不含任何几何实体
提取指定图层的多段线顶点getPolylineTheSpecifiedLayer(现成)⚠️ 图层名硬编码在 GetDwgData.ts,跨图纸使用必须先改源码重编译
提取直线 / 圆 / 其他几何实体数据二开无现成命令;范例见《Mx2DNode二开API参考.md》第九节(modelSpace().getAllEntity() + instanceof McDbXxx)
提取图层清单getAllLayer(现成)输出 <文件名>_layers.json
DWG→mxweb 转换mxcadassembly 独立调用⚠️ convert 命令已废弃不可用;outpath 目录必须预先存在
切图(按图框批量)frameCut2(现成)⚠️ frameCut(v1)依赖 1337 服务,独立版不可用
整图导出 PDFMx_Custom_ExportPdf(现成)自动按图幅缩放
合并多张 DWGmargeDwg(现成)可按图层过滤
比较两图纸图块表compare_dwg(现成)
参数化绘图(生成新图纸)二开(testParamDraw 可当起点模板)见《Mx2DNode二开API参考.md》第二、九节
读/写扩展数据(xdata)二开mxtest_getxdata 仅调试示例(硬编码路径,勿用于生产)

五、任务→文档检索指引 ​

任务类型应读文档
调用现成命令(转换/提取数据/切图/合并/导出 PDF/图层/比较图纸)《MxServiceCode命令参考.md》
二开:新增命令或定制处理逻辑《Mx2DNode二开API参考.md》+ 工程 src\sample\ 示例代码
环境部署 / 启动失败 / Linux 权限 / 日志排查《部署与启动说明.md》
格式转换参数(DWG/DXF/MXWEB/PDF/JPG、cut_dwg、print_to_pdf)官方《图纸转换程序使用教程》:链接
后台开发入门随包附带的 NODE.JS后台程序开发.doc(教如何基于本工程开发,非 API 文档)

六、能力边界说明(基于 1.0 试用版实测) ​

已具备能力

  • DWG/DXF 打开与保存
  • 格式转换:DWG→mxweb 等(经 mxcadassembly 独立调用,见《部署与启动说明.md》第三节)
  • 参数化绘图:线、圆弧、圆、椭圆、点、文字、多行文字、图片、填充、图块、图框图签、五种标注
  • 数据提取:文字、块属性、多段线、图层、xdata 扩展数据
  • 选择集与过滤(按类型/图层/窗口/交越)
  • 实体编辑:属性、xdata、分解(explode)、求交(intersectWith)、面积(getArea)
  • 图纸合并(可按图层过滤)、按图框批量切图、图纸比较
  • 导出:PDF、JPG、mxweb(前端显示格式)
  • 系统变量读写(LTSCALE 等)

开发模式约定

  • 后续新增 CAD 接口功能:由 AI 基于本工程开发(src\sample\ 模式 + Mx2DNode API)
  • 修改源码后必须 npm run build 重新编译(运行的是 .js)

限制

  • convert 命令不可用:其输出的 wgh 格式已废弃,原生模块已移除 writeWebGLFile(运行报 code:-4)。mxcad 前端只认 mxweb,DWG→mxweb 直接用 mxcadassembly(见《MxServiceCode命令参考.md》详解 1)
  • frameCut(v1)命令依赖 1337 端口服务,独立版 MxServiceCode 不提供该服务,请使用 frameCut2(直接调用 mxcadassembly,功能等价)
  • 试用版(TryVersion):注意授权有效期与打开次数限制
  • mxtest_getxdata 等调试命令含硬编码路径,不可直接用于生产
  • getPolylineTheSpecifiedLayer 的图层过滤值硬编码在源码中,使用前需按目标图纸修改