当前位置:首页 > 文章列表 > 文章 > 前端 > 网页CAD后台处理DWG图纸(MxServiceCode)

网页CAD后台处理DWG图纸(MxServiceCode)

2026-08-20 17:51:32 0浏览 收藏

一、引言:什么是 MxServiceCode?

在开发 Web CAD 应用时,我们经常会遇到一些需要在服务器后台处理图纸的需求,比如批量转换格式、提取图纸数据等。这时候,云图开发包中的 MxServiceCode 就派上大用场了。

简单来说,MxServiceCode 是一个典型的 CAD 后端服务层,它位于云图开发包中的MxDrawCloudServerBinMxServiceCode目录下。它不是一个完整的 Web 前端应用,而是以 Node.js 命令行(CLI)的形式,对底层的 DWG 处理能力进行了轻量化的封装。它的核心技术由三大基石构成:MxFun 核心引擎、Native Addon(原生 C++ 扩展插件)以及 mxcad 对象模型。

这种底层架构设计,保证了它在处理复杂 CAD 数据时的高性能与稳定性。而在应用层面上,它非常灵活,所有的后端功能都是由基于该核心的“命令模块”来提供的。这意味着,开发者可以像搭积木一样,通过编写或调用不同的命令模块,轻松定制和扩展服务器端的图纸处理逻辑。

二、MxServiceCode 项目结构介绍

网页CAD后台处理DWG图纸(MxServiceCode)
为了让大家在二次开发时能“找对门”,我们结合实际的工程目录结构,对 MxServiceCode 主要部分进行详细拆解。该项目采用标准的 Node.js + TypeScript 工程规范,核心分为以下几个板块:

1. bin 原生依赖与资源

bin 目录是整个项目的“动力心脏”,它并非普通的脚本文件夹,而是包含了项目运行所必需的底层二进制文件和资源。MxServiceCode 之所以能处理复杂的 DWG 图纸,完全依赖于该目录提供的原生环境支持。
Mx2DNode.node:核心的 Native 模块,真正执行 DWG 解析与转换的底层引擎。
fonts:DWG 字体文件,确保后台转换时文字不乱码。

2. src 核心源码层

这是项目的逻辑处理中心,包含了从底层引擎封装到具体业务功能的所有 TypeScript 代码。根据职责不同,可划分为以下三个部分:
(1) mxcad 数据模型层
网页CAD后台处理DWG图纸(MxServiceCode)

这个文件夹是 CAD 对象模型的封装,将底层的 Native DWG 对象包装成了 Ja vaScript 可访问的实体。里面包含了大量的核心类,例如:
McDbDatabase.ts:图纸数据库。
McDbEntity.ts、McDbPolyline.ts、McDbText.ts:各类图纸实体(如多段线、文字、圆等)。
McDbLayerTable.ts:图层表,用于管理图纸的图层信息。

(2) sample 业务实现层
网页CAD后台处理DWG图纸(MxServiceCode)
这里是编写实际业务逻辑的地方,每个文件通常对应一个特定的图纸处理功能(如格式转换、图框切割等)。
若需新增功能,只需在此添加脚本并在 MxCommand.ts 中注册即可,模块化设计使得扩展非常灵活。

(3)其他核心 TS 文件
网页CAD后台处理DWG图纸(MxServiceCode)
除了前面提到的几个子文件夹,src 根目录下这几份文件,基本就撑起了整个程序的骨架和控制中枢:
ini.js:初始化脚本。通常会在程序启动的最早阶段执行,主要用来设置环境变量、加载基础配置,为后续模块顺利加载打好前站。
MxFun.ts:底层桥梁。它负责加载 bin 目录中的原生 C++ 扩展(Mx2DNode.node),完成 CAD 引擎环境初始化,同时还提供日志记录、路径处理等通用工具函数。
MxProcessor.ts:命令调度中枢。主要职责是解析外部传入的命令行参数,再把任务准确分发到对应的业务处理函数。
MxCommand.ts:命令注册表。所有可用指令名称(例如 convert、frameCut)以及它们与具体实现函数之间的映射关系,都是在这里定义的。
MxUtility.ts:通用工具库。这里封装了项目中各模块都会反复用到的高频辅助方法,用来减少重复代码。
MxBackstageConvert.ts:图纸文件后台处理接口。它对底层 DWG 后台处理接口做了封装,负责图纸的打开与保存、WebGL 输出生成,以及后台数据库访问。

3. 根目录与基础配置

这是项目的入口和配置中心,决定了程序如何启动和运行。
mxapp.ts:程序的绝对入口。Node.js 启动时首先执行此文件,负责初始化底层环境、解析命令行参数并触发命令执行。
package.json / tsconfig.json:项目的依赖管理清单与 TypeScript 编译配置文件。
test.bat / testlinux.sh:跨平台的测试脚本。分别用于 Windows 和 Linux 环境下快速验证功能是否正常。
.dwg (A3.dwg, BT.DWG, tree.dwg 等):项目自带的测试图纸文件,用于开发调试时的输入源。

4. doc 与 public 目录

doc:存放相关的技术文档或 API 说明,方便开发者查阅。
public:静态资源目录。如果 MxServiceCode 启动了简单的 HTTP 服务,这里的文件(如 HTML 预览页、CSS/JS 资源)可以直接被外部访问。

三、命令执行链路

网页CAD后台处理DWG图纸(MxServiceCode)
理解了项目结构后,我们需要深入探究 MxServiceCode 是如何处理一次完整请求的。它的命令执行链路非常清晰,核心逻辑可以概括为:命令行输入 → MxProcessor 调度 → 业务实现 → 底层处理 → JSON 输出。具体流程如下:

1. 程序启动与参数读取

在终端敲下命令后,Node.js 会先从入口文件 mxapp.ts 开始执行。程序一启动,就会立刻调用 MxFun.init(),把底层的 C++ 运行环境先初始化好。紧接着,再通过 process.argv.slice(2) 读取用户在命令行里传入的全部参数。要是这时候没有带任何命令,程序就不会继续往下走了,而是直接输出版本信息和日志路径,然后结束运行。

2. 命令分发与注册

当检测到有效参数后,程序会进入 MxProcessor.do(args) 进行命令分发。在分发之前,MxProcessor 会先调用 ReginstCommand() 完成命令的注册。这个函数位于 MxCommand.ts 中,它的作用是将具体的命令名称(如 convert、frameCut、margeDwg 等)与 sample 目录下的具体实现函数一一映射。

3. 参数解析与执行

MxProcessor 支持两种参数解析模式:一种是标准的 命令 名称=值 形式,另一种是通过 fileparam filepath=... 读取外部 JSON 文件的形式。解析出命令名和参数后,MxProcessor 会在已注册的命令表中查找对应的处理函数。如果找不到,会直接返回“命令没定义”的错误;如果找到,则立即执行该函数。

4. 业务逻辑与底层交互

位于 sample 目录下的命令实现函数被触发后,会开始处理具体的业务逻辑。它们通常会调用 MxBackstageConvert 或 Mx2DDraw 等模块来操作图纸。而这些模块在接收到指令后,会将请求传递给真正的底层核心——由 MxFun 加载的 Native 模块(Mx2DNode.node)。Native 模块负责执行最耗时的 DWG 文件打开、实体遍历、数据转换等底层操作。

5. 统一结果输出

当 Native 层完成所有图纸处理任务后,结果会逐层向上返回给命令实现函数。命令函数会将处理结果封装成一个标准的对象(例如包含 success 和 message 字段)。最后,MxProcessor.do() 会使用 console.log(JSON.stringify(...)) 将这个对象统一输出为 JSON 格式。这种标准化的输出方式,使得外部的 Web 服务或调用程序能够极其方便地读取和处理执行结果。

四、 功能测试

在正式体验 MxServiceCode 强大的图纸处理能力之前,有一个关键的前置步骤,如果需要通过 HTTP 接口来调用这些功能,必须先启动云图开发包中的web服务,确保 1337 端口处于正常运行状态。

1. 启动 1337 端口服务(前置准备)

网页CAD后台处理DWG图纸(MxServiceCode)
MxDraw 云图开发包提供了极其简便的一键启动方式,您无需手动配置复杂的后台环境:
Windows 系统:直接双击运行 MxDrawCloudServer/Mx3dServer.exe,在弹出的窗口中点击“开始Web服务”。程序会自动启动 1337 端口的 CAD 核心引擎服务(由 Bin/MxDrawServer/Windows/app.js 驱动)。
Linux 系统:在终端执行启动脚本 ./start_demo.sh,该脚本会自动拉起 1337 端口的 CAD 核心服务。
便捷提示:服务启动后,您可以直接在浏览器访问 localhost:1337/servertest。这是一个官方提供的可视化测试页面,您可以在页面上直接点击按钮来测试 DWG 转换、PDF 导出等核心接口,无需编写任何代码。

2. 核心功能与参数详解

(1)获取DWG文件基础数据
读取 DWG 图纸的实体数据、版本、范围等元信息,并输出为标准 JSON 文件,便于前端解析与展示。
命令行调用:

./bin/node mxapp.js getcaddata file=t1.dwg outfile=t1.dwg.json

接口调用:

var data = {
cmd:"getcaddata",
file:"t1.dwg",
outfile:"t1.dwg.json"
};
axios({
method: "post",
url: "http://localhost:1337/users/mxservicecode",
data
}).then((ret) => {
console.log(ret.data)
alert(JSON.stringify(ret.data))
// 输出文件位置:Bin/MxServiceCode/MxServiceCode/t1.dwg.json
}).catch((err)=>{alert("网络错误") })

网页CAD后台处理DWG图纸(MxServiceCode)

(2)后台参数化绘图
无需人工干预,程序打开空白模板,根据预设逻辑执行绘图操作(如绘制特定图形、标注等),并生成新的 DWG 文件。
命令行调用:

./bin/node mxapp.js testParamDraw  outfile=testdraw.dwg debug=1

接口调用:

var data = {
cmd:"getcaddata",
file:"t1.dwg",
outfile:"t1.dwg.json"
};
axios({
method: "post",
url: "http://localhost:1337/users/mxservicecode",
data
}).then((ret) => {
console.log(ret.data)
alert(JSON.stringify(ret.data))
// 输出文件位置:Bin/MxServiceCode/MxServiceCode/t1.dwg.json
}).catch((err)=>{alert("网络错误") })

网页CAD后台处理DWG图纸(MxServiceCode)

(3)根据图框名裁剪 DWG 到 PDF
这是一个非常实用的出图功能。程序会自动在图纸中搜索指定名称的图框(Block),识别其范围,并将图框内的图形内容批量导出为 PDF、图片或其他格式。
命令行调用:

./bin/node mxapp.js frameCut2 file=D:/Test/testcut.dwg tkname="AAA" outtype=.pdf width="5000"    style="max-width:100%"

接口调用:

var data = {
cmd:"frameCut2",
file:"D:/Test/testcut.dwg",
tkname:"1横20200521",
outtype:".pdf",
//colorPolicy:"mono"
//width:"1000"
//height:"1000"
};
axios({
method: "post",
url: "http://localhost:1337/users/mxservicecode",
data
}).then((ret) => {
console.log(ret.data)
alert(JSON.stringify(ret.data))
}).catch((err)=>{alert("网络错误") })

网页CAD后台处理DWG图纸(MxServiceCode)

(4)获取 DWG 文件图层信息
专门用于分析图纸结构,读取 DWG 的图层表(LayerTable),提取所有图层的名称、颜色、线型等属性,并输出图层列表,默认输出文件名为 原文件名_layers.json。
命令行调用:

./bin/node mxapp.js getAllLayer  file="D:/Test/A.dwg"

接口调用:

var data = {
cmd:"getAllLayer",
file:"t1.dwg",
};
axios({
method: "post",
url: "http://localhost:1337/users/mxservicecode",
data
}).then((ret) => {
console.log(ret.data)
alert(JSON.stringify(ret.data))
// 输出文件位置:Bin/MxServiceCode/MxServiceCode/t1.dwg_layers.json
}).catch((err)=>{alert("网络错误") })

网页CAD后台处理DWG图纸(MxServiceCode)

(5)合并图纸
读取多张 DWG 图纸的数据库,并将读取到的数据库合并到目标图纸数据库中,实现图纸的批量合并与拼接。
命令行调用:

./bin/node mxapp.js margeDwg file="D:/Test/mB.dwg" marge_file="D:/Test/mA.dwg"  out_file="D:/Test/mC.dwg" marge_layer="['2306','2307']" debug=1

接口调用:

var data = {
cmd:"margeDwg",
file:"D:/Test/mB.dwg",
marge_file:"['D:/Test/mA.dwg']",
out_file:"D:/Test/mC.dwg",
marge_layer:"['2306','2307']",
};
axios({
method: "post",
url: "http://localhost:1337/users/mxservicecode",
data
}).then((ret) => {
console.log(ret.data)
alert(JSON.stringify(ret.data))
}).catch((err)=>{alert("网络错误") })

网页CAD后台处理DWG图纸(MxServiceCode)

从GC到零成本:Rust内存安全如何重塑Java后端思维!从GC到零成本:Rust内存安全如何重塑Java后端思维!
上一篇
从GC到零成本:Rust内存安全如何重塑Java后端思维!
1723天,1460次提交:canvas-editor富文本编辑器,今天1.0了
下一篇
1723天,1460次提交:canvas-editor富文本编辑器,今天1.0了
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • ljg-skills -
    ljg-skills
    ljg-skills 是李继刚开源的 AI 技能与提示词集合,面向大模型使用者整理了一批可复用的 prompt、角色设定和任务技能模板,适合用于学习提示词设计、搭建个人 AI 工作流和沉淀团队常用智能体能力。
    5037次使用
  • MELO音乐 - AI 音乐生成平台,支持多模态创作能力
    MELO音乐
    MELO音乐是一站式AI视频与音乐制作助手,对标suno, udio的高品质体验。提供伴奏生成、原创写词、无损导出、哼唱识曲、混音变声等全套音频与短视频编辑工具。无论是流行Kpop、电音说唱、民谣古风、摇滚儿歌还是商用轻音乐,MELO为你免费谱曲,轻松做同款!
    4573次使用
  • UniScribe - AI 免费在线音视频转文字平台
    UniScribe
    UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。
    4521次使用
  • 剧云 - 免费 AI 智能中文剧本创作平台
    剧云
    剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。
    4779次使用
  • 万象有声 - AI 一站式有声内容创作平台
    万象有声
    万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单!
    4731次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码