网易首页 > 网易号 > 正文 申请入驻

在线CAD中实现打开CAD图纸的方式

0
分享至

前言

随着云端化数字经济时代的到来,越来越多的用户需要在网页端对图纸进行查看和审批,今天给大家详细讲一下在线的方式打开CAD图纸的方法,示例项目地址:https://demo.mxdraw3d.com:3000/mxcad/

在示例项目中可以直接打开CAD图纸,这依赖于mxcad(https://mxcadx.gitee.io/mxcad_docs/zh/)这个前端库可以读取MxDraw云图开发包(https://help.mxdraw.com/?pid=32)将CAD图纸转换成mxweb格式的文件。有了图纸转换和文件渲染之后, 就可以做到读取和编辑CAD图纸。

原理

首先上传CAD图纸到我们Node服务进行处理,它会调用MxDraw云图开发包将CAD图纸转换成mxweb文件,然后返回给前端对应的访问地址。

该示例项目对应的Node服务, 参考具体的Node代码, 请点击查看该链接了解详情:https://help.mxdraw.com/?pid=115

我们可以直接在开发包找到对应的Node服务源码, 也可以直接使用对应接口, 但是可能它并不能完全满足你的需求,需要自己修改甚至重写,为此我们将详细讲解一下应该如何来实现图纸转换的接口。

后端具体实现

首先我们需要Node环境点击查看安装(https://www.runoob.com/nodejs/nodejs-install-setup.html)

如果你不是使用的Node作为后端开发语言, 那么只需要理解如何转换就好, 然后自行实现。

验证是否安装成功

node -v

下面我们可以直接通过Nodechild_process使用子进程调用云图开发包中的mxcadassembly程序

mxcadassembly程序所在目录

windows目录:MxDrawCloudServer\Bin\MxCAD\Release\mxcadassembly.exe

linux目录:MxDrawCloudServer\Bin\Linux\BinMxCAD\mxcadassembly

const { exec } = require('child_process');
// 如果是要将mxweb格式文件转成服务器 那么 srcpath就是mxweb文件路径 而outname 的后缀名应该是对应图纸的后缀名,如: test.dwg
const param = {
srcpath: "要转换的文件在服务器上的路径",
outpath: "转换后生成的文件在服务器上的目录路径",
outname: "转换后的文件名称"
exec(`"mxcadassembly程序在服务器所在位置" "${JSON.stringify(param)}"`, ()=> {})

如上所知, 我们要将mxweb文件保存为dwg图纸只需要改变srcpath和outname就可以了

将CAD图纸上传到服务器上, 请自行实现,这里建议点击查看(https://help.mxdraw.com/?pid=115)

然后结合云图开发包MxDrawCloudServer\Bin\MxCAD\MxCADSaveFile\server.js文件查看到源码可以非常清晰的知道如何上传CAD实现转换和保存dwg图纸。

最后我们将转换的文件放在了服务器上,当然你也可以上传到oss或者其他云存储上,然后返回对应的访问地址就可以了。

前端具体实现

前端直接调用后端提供的接口上传CAD图纸,等成功转换成mxweb文件后在前端用mxcad打开,打开mxweb文件点击查看参考:https://mxcadx.gitee.io/mxcad_docs/zh/1.%E6%8C%87%E5%8D%97/1.%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8.html#%E5%9F%BA%E6%9C%AC%E7%94%A8%E6%B3%95

这里主要讲解一下如何将目前网页上打开渲染好并且编辑了的mxweb文件保存成CAD图纸。

首先我们需要得到现在修改后的mxweb文件数据,然后上传到服务器,后端将mxweb格式的数据写在一个mxweb格式的文件中,最后使用mxcadassembly程序将mxweb格式文件转换为CAD图纸的文件, 然后返回对应的访问地址。

默认情况下, 我们提供saveFileToUrl来实现保存CAD图纸, 它实际上帮我们将当前的mxweb数据上传到了你指定的一个后端接口中,下面是它的使用方法:

import { MxCpp, MxTools } from "mxcad"
MxCpp.getCurrentMxCAD().saveFileToUrl("http://localhost:3337/mxcad/savefiledwg", (iResult, sserverResult)=> {
/** 这个就是对应接口的返回数据结果 */
console.log(sserverResult)
// 我们可以直接拿到请求结果中携带的CAD图纸的访问地址 下载对应的图纸
// 假设返回结果是filePath
const filePath = JSON.parse(sserverResult).filePath
fetch(filePath).then(async (res)=> {
const blob = await res.blob()
// 默认使用了一些新的特性,如果不支持则会自动降级使用a标签下载
MxTools.saveAsFileDialog({
blob,
filename: "test.dwg",
types: [{
description: "dwg图纸",
accept: {
"application/octet-stream": [".dwg"],
},


http://localhost:3337/mxcad/savefiledwg接口实际就是云图开发包中提供的对应的Node服务。

但是在实际使用时,这种常规的方法并不能完全满足你的需求, 这个时候我们可以自己来实现这个保存dwg的功能,请参考如下代码:

import { MxCpp } from "mxcad"
const mxcad = MxCpp.getCurrentMxCAD()
// 这里直接拿到mxweb数据
mxcad.saveFile(void 0, (data)=> {
let blob: Blob
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
if (isSafari) {
blob = new Blob([data.buffer], { type: "application/octet-stream" });
} else {
blob = new Blob([data.buffer], { type: "application/octet-binary" });
// 这里直接将blob转成file
const file = new File([blob], 'test.mxweb', { type: isSafari ? "application/octet-stream" : "application/octet-binary" })
// 上传文件转CAD图纸
fetch('http://localhost:3337/mxcad/savefiledwg', {
method:'POST',
body: file
}, false, true)

以上代码只是参考代码, 其核心是需要利用云图开发包, 下载好后,它能够最快让你看到实际效果,详情参考文档:https://help.mxdraw.com/?pid=32

前端mxcad文档:https://mxcadx.gitee.io/mxcad_docs/zh/

完整演示在网页打开保存CAD图纸的DEMO

如果下载了云图开发包你阅读了其中前后端源码还是无法理解如何实现打开和保存图纸,在这里给你准备了一个最简完整DEMO 只需要js + html 就可以完整实现网页打开和保存CAD图纸的页面,方便你快速理解如何打开和保存CAD图纸。

首先该DEMO 是一个Node服务, 需要安装Node环境(https://www.runoob.com/nodejs/nodejs-install-setup.html),查看是否安装完成

node -v

然后可以下载我们的demo源码:https://gitee.com/mxcadx/mxdraw-article/blob/master/mxcad打开保存CAD图纸/demo.zip

下载好demo后 解压进入demo目录

执行如下命令:

node app.js

最后控制台会提示访问:http://localhost:3333/

注意:DEMO中的mxcad和mxdraw库是通过CDN方式引入的,如果你发现打开页面后没有CAD图纸显示,可能是你无法访问CDN资源,这时可以选择通过npm安装下载mxcad和mxdraw库 然后引入其中对应的文件:

npm init
npm install mxcad mxdraw

然后将CDN引入的改成本地引入就行。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
台海冲突一触即发!做好最坏万全准备,中国必须抢在美国前面出手

台海冲突一触即发!做好最坏万全准备,中国必须抢在美国前面出手

和风聊历史
2026-06-21 12:52:21
李若彤参观驻港部队,换上军装端起枪,这身板绝了

李若彤参观驻港部队,换上军装端起枪,这身板绝了

落雪听梅a
2026-06-21 14:21:41
未来3-5年,我们或将见证日本的不是衰退,而是"死亡"

未来3-5年,我们或将见证日本的不是衰退,而是"死亡"

瓦伦西亚月亮
2026-06-21 19:28:36
随着日本4-0突尼斯,世界杯死亡之组最新排名:日本反超荷兰登顶

随着日本4-0突尼斯,世界杯死亡之组最新排名:日本反超荷兰登顶

侃球熊弟
2026-06-21 14:04:15
我觉得在没有完成原始积累之前,尽量不要买让自己可以变穷的东西

我觉得在没有完成原始积累之前,尽量不要买让自己可以变穷的东西

流苏晚晴
2026-06-06 17:16:04
连踩中国三条底线,新加坡玩砸,黄循财纳上投名状,外长急飞北京

连踩中国三条底线,新加坡玩砸,黄循财纳上投名状,外长急飞北京

最新声音
2026-06-22 05:45:09
游戏结束,中国增持32万盎司黄金,最大接盘侠被迫现身,美债爆雷

游戏结束,中国增持32万盎司黄金,最大接盘侠被迫现身,美债爆雷

铭记历史呀
2026-06-21 22:44:16
日本队是亚洲之光?4:0仍有可能出局,F组堪称死亡之组

日本队是亚洲之光?4:0仍有可能出局,F组堪称死亡之组

蜜桔娱乐
2026-06-21 15:47:10
委内瑞拉换天五个月后才发现:百姓购买力爆发,国家回血速度加快

委内瑞拉换天五个月后才发现:百姓购买力爆发,国家回血速度加快

掉了颗大白兔糖
2026-06-09 04:30:53
《中餐厅10》黄晓明十季坚守,王俊凯回归开启十年环游之旅

《中餐厅10》黄晓明十季坚守,王俊凯回归开启十年环游之旅

流云随风去远方
2026-06-21 17:48:43
68岁生子的黄维平不瞒了:儿子因酒精中毒已去世,女儿没断绝关系

68岁生子的黄维平不瞒了:儿子因酒精中毒已去世,女儿没断绝关系

水泥土的搞笑
2026-06-22 00:57:06
《活着》:人最顶级的本事,是让自己长时间处在一种极度糟糕、极度混乱、极度没有结果的状态里,却依旧好好吃饭好好生活,不崩盘的能力

《活着》:人最顶级的本事,是让自己长时间处在一种极度糟糕、极度混乱、极度没有结果的状态里,却依旧好好吃饭好好生活,不崩盘的能力

心理观察局
2026-06-21 06:30:03
瑞典媒体:布罗贝像一块会奔跑的混凝土,脖子上肌肉300公斤

瑞典媒体:布罗贝像一块会奔跑的混凝土,脖子上肌肉300公斤

懂球帝
2026-06-21 10:54:11
马宁执法世界杯:广告接到手软,收入千万

马宁执法世界杯:广告接到手软,收入千万

鞭牛士
2026-06-21 12:51:06
21年几位空军子弟看望林豆豆,罕见曝出几张合影,众人身份引热议

21年几位空军子弟看望林豆豆,罕见曝出几张合影,众人身份引热议

搜史君
2026-06-21 06:45:22
小马云要当爸爸了,女友自曝怀孕两个月:小马云首场直播打赏29万

小马云要当爸爸了,女友自曝怀孕两个月:小马云首场直播打赏29万

汉史趣闻
2026-06-19 19:46:44
2-4,奥斯卡双响!足协杯16强诞生:中超13队,中甲1队,中乙2队

2-4,奥斯卡双响!足协杯16强诞生:中超13队,中甲1队,中乙2队

足球大腕
2026-06-21 21:41:07
中蒙达成两百亿目标才两天,矿区遭围堵,美日的反应快得耐人寻味

中蒙达成两百亿目标才两天,矿区遭围堵,美日的反应快得耐人寻味

椰青美食分享
2026-06-21 09:28:20
丁彦皓:《求是》再次定调通过人为推高房价来拉房价与提振消费

丁彦皓:《求是》再次定调通过人为推高房价来拉房价与提振消费

丁彦皓博士聊投资
2026-06-20 20:39:26
王毅外长才刚走,对华作出承诺的蒙古国,转头就向日本表达心意?

王毅外长才刚走,对华作出承诺的蒙古国,转头就向日本表达心意?

春风笑语
2026-06-22 04:12:18
2026-06-22 06:27:00
CAD梦想画图
CAD梦想画图
是一款极速轻量级的CAD软件
609文章数 123关注度
往期回顾 全部

科技要闻

马斯克拿下7800亿元天价薪酬 2028年可兑现

头条要闻

世界第10难求一胜!10人比利时0-0伊朗

头条要闻

世界第10难求一胜!10人比利时0-0伊朗

体育要闻

德国的超级替补,10年前还在工厂上班

娱乐要闻

原来她就是张颂文老婆

财经要闻

“床垫界的特斯拉”破产了

汽车要闻

惊出冷汗!重庆实测奥迪A5L,华为智驾这波操作绝了…

态度原创

本地
艺术
时尚
手机
公开课

本地新闻

龙腾资江 韵动邵阳

艺术要闻

310米!欧盟第一高楼,坐落于波兰

邮报盘点哈兰德奢侈品收藏:33万镑爱马仕包、28万豪华腕表

手机要闻

消息称供应链公司已向苹果首款折叠屏iPhone小批量供货

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版