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

(网页三维CAD)在线3D CAD中创建一个三维管道模型的方法

0
分享至

前言

在网页CAD中进行三维建模是一项有趣的任务。本文将介绍如何利用mxcad3d来创建三维管道模型。该工具提供了一系列三维建模功能的API,使得建立复杂的管道结构变得简单直观。

更详细教程关注公Z号:梦想云图网页CAD。

安装

在此之前,需要先安装mxcad包,如下图:

本次教程我们新建一个Test3dPipe目录,然后在此目录中按照官方入门教程进行初始化项目,最后使用VS Code打开这个项目,如下图:

代码编写及效果展示

1.添加绘制按钮

在index.html文件中添加一个按钮,用于点击后绘制管道,如下图:

2.编写绘制管道的函数

2.1本教程演示如何创建一个圆角方管,以下是在index.ts绘制圆角方管的函数代码,先导入需要用到的模块,代码如下:

// 从mxcad中导入需要用到的模块
import { MxCAD3DObject, MdGe, Mx3dAlgoFillet2d, Mx3dGeColor, Mx3dGeCSYSR, Mx3dGeDir, Mx3dGeMaterial, Mx3dGeomCircle,
Mx3dGePlane, Mx3dGePoint, Mx3dMkFace, Mx3dMkPipe, Mx3dShapeDownCast, Mx3dShapeEdge,
Mx3dShapeFace, Mx3dShapeWire, Mx3dWireTool } from "mxcad"

2.2编写绘制管道的函数,代码如下:

functiondrawRoundRectPipe() {
// 管道用到的颜色材质
constgrayColor =newMx3dGeColor(MdGe.MxNameOfColor.Color_NOC_GRAY25);
constmat =newMx3dGeMaterial(MdGe.MxNameOfMaterial.Material_NOM_Steel);
// 管道的路径,由直线和圆弧构成,必须C1连续。
letwire:Mx3dShapeWire;
{
constpt1 =newMx3dGePoint(0,0,0);
constpt2 =newMx3dGePoint(0,0,85);
// 直线段
constedge1 =newMx3dShapeEdge(pt1,pt2);
constfilletCsysr1 =newMx3dGeCSYSR(newMx3dGePoint(15,0,85),newMx3dGeDir(0,-1,0),newMx3dGeDir(0,0,1));
constfillet1 =newMx3dGeomCircle(filletCsysr1,15);
// 圆弧
constedge2 =fillet1.Edge(0,Math.PI/2);
constpt3 =newMx3dGePoint(15,0,100);
constpt4 =newMx3dGePoint(85,0,100);
// 直线段
constedge3 =newMx3dShapeEdge(pt3,pt4);
constfilletCsysr2 =newMx3dGeCSYSR(newMx3dGePoint(85,15,100),newMx3dGeDir(0,0,1),newMx3dGeDir(0,-1,0));
constfillet2 =newMx3dGeomCircle(filletCsysr2,15);
// 圆弧
constedge4 =fillet2.Edge(0,Math.PI/2);
constpt5 =newMx3dGePoint(100,15,100);
constpt6 =newMx3dGePoint(100,85,100);
// 直线段
constedge5 =newMx3dShapeEdge(pt5,pt6);
constfilletCsysr3 =newMx3dGeCSYSR(newMx3dGePoint(100,85,115),newMx3dGeDir(1,0,0),newMx3dGeDir(0,0,-1));
constfillet3 =newMx3dGeomCircle(filletCsysr3,15);
// 圆弧
constedge6 =fillet3.Edge(0,Math.PI/2);
constpt7 =newMx3dGePoint(100,100,115);
constpt8 =newMx3dGePoint(100,100,200);
// 直线段
constedge7 =newMx3dShapeEdge(pt7,pt8);
constshape =Mx3dWireTool.ConnectEdgesToWires([edge1,edge2,edge3,edge4,edge5,edge6,edge7],1e-6,false)[0];
// 得到最后连接组合而成的管道路径
wire =Mx3dShapeDownCast.Wire(shape);
}
// 管道横截面形状,由一个内圆角方形和外圆角方形之间构成的区域
letfaceRoundRect:Mx3dShapeFace;
{
constpts:Mx3dGePoint[] =[];
constpt1 =newMx3dGePoint(0,0,0);
constpt2 =newMx3dGePoint(0,10,0);
constpt3 =newMx3dGePoint(10,10,0);
constpt4 =newMx3dGePoint(10,0,0);
pts.push(pt2);
pts.push(pt3);
pts.push(pt4);
pts.push(pt1);
// 四条直线段构成正方形
constedges:Mx3dShapeEdge[] =[];
constedge1 =newMx3dShapeEdge(pt1,pt2);
constedge2 =newMx3dShapeEdge(pt2,pt3);
constedge3 =newMx3dShapeEdge(pt3,pt4);
constedge4 =newMx3dShapeEdge(pt4,pt1);
edges.push(edge1);
edges.push(edge2);
edges.push(edge3);
edges.push(edge4);
// 四条直线段,循环进行二维倒圆角,圆角放入arcs数组。
constarcs:Mx3dShapeEdge[] =[];
for(leti =0;i {
// 矩形所在平面,默认构造就是在XOY平面(右手系)
constpln =newMx3dGePlane();
// 二维倒圆角算法对象
constf2d =newMx3dAlgoFillet2d();
if(i // 初始化时,传入两条要进行倒圆角的直线段,以及他们所在的平面(必须是在同一平面)
f2d.Init(edges[i],edges[i +1],pln);
// 执行倒圆角算法,圆角半径为2
f2d.Perform(2);
// Result方法返回倒圆角算法在所在点执行倒圆角后的圆弧段,Result方法传入第一个参数是要执行倒圆角的点,因为我们当前是两个直线段倒圆角,所以就只有在这两个直线段的交点或延长后的交点倒圆角,只有这个一个交点,所以这里就传入这个交点,如果不是两直线段倒圆角,比如一个直线段和一个圆弧,他们就可能有两个交点,这时就要指定要返回哪个交点处倒圆角的结果了。第二个参数和第三个参数分别传入参与倒圆角的两条直线段,Result方法会将这两个参数修改为倒圆角之后改变过后的两条直线段。
arcs.push(f2d.Result(pts[i],edges[i],edges[i +1]));
}
else{
f2d.Init(edges[i],edges[0],pln);
f2d.Perform(2);
arcs.push(f2d.Result(pts[i],edges[i],edges[0]));
}
}
// 连接所有的直线段和圆弧
constwireOuterShape =Mx3dWireTool.ConnectEdgesToWires([...edges,...arcs],1e-6,false)[0];
// 外圈
constwireOuter =Mx3dShapeDownCast.Wire(wireOuterShape);
// 内圈
constwireInner =wireOuter.Scaled(newMx3dGePoint(5,5,0),0.8);
// 内圈方向要进行个反向
wireInner.reverse();
// 生成内外圈之间构成的环面
constfaceMaker =newMx3dMkFace(wireOuter,true);
faceMaker.Add(wireInner);
faceRoundRect =faceMaker.Face();
// 移动到中心位置和管道路径起点一致
faceRoundRect.TranslateByVec(-5,-5,0);
}
// 通过路径和截面生成管道形状
constpipe =newMx3dMkPipe(wire,faceRoundRect);
constpipeShape =pipe.Shape();
// 给pipeShape设置材质颜色,放入模型文档并显示
mxcad3d.removeAll();
constdoc =mxcad3d.getDocument();
constpipeShapeLabel =doc.addShapeLabel();
pipeShapeLabel.setShape(pipeShape);
pipeShapeLabel.setMaterial(mat);
pipeShapeLabel.setColor(grayColor);
mxcad3d.update();
}

2.3然后给绘制按钮添加点击事件,触发绘制管道函数的调用,代码如下:

// 给button添加点击事件,点击后调用drawRoundRectPipe函数,进行圆角方管的绘制
// 立即执行函数
(functionaddEventToButton(){
constbtn =document.querySelector("button");
if(btn) {
btn.addEventListener("click",() => {
drawRoundRectPipe();
});
}
})()

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

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.

相关推荐
热点推荐
7月10日俄乌最新:安卡拉峰会发出的信号

7月10日俄乌最新:安卡拉峰会发出的信号

西楼饮月
2026-07-10 19:00:05
大瓜!苏州打小三事件发酵!网友发问:明知道见不得人的事,还敢到处招摇过市

大瓜!苏州打小三事件发酵!网友发问:明知道见不得人的事,还敢到处招摇过市

火山詩话
2026-07-10 10:19:01
闺蜜借走我6万手表去宴会,回来告诉我丢了,我故意跟她说:表是假的。三天后,她竟然还我手表,还多给2万,这哑巴亏你咽得下去吗?

闺蜜借走我6万手表去宴会,回来告诉我丢了,我故意跟她说:表是假的。三天后,她竟然还我手表,还多给2万,这哑巴亏你咽得下去吗?

可读
2026-07-11 00:37:35
消息人士:美国、伊朗、巴基斯坦与卡塔尔将举行四方通话

消息人士:美国、伊朗、巴基斯坦与卡塔尔将举行四方通话

财联社
2026-07-11 03:05:19
穆里尼奥没看错人!皇马王牌世界杯隐身,全场摆烂坑惨摩洛哥

穆里尼奥没看错人!皇马王牌世界杯隐身,全场摆烂坑惨摩洛哥

奶盖熊本熊
2026-07-10 07:11:42
最新预报!台风“巴威”将穿过江苏!江苏局地暴雨

最新预报!台风“巴威”将穿过江苏!江苏局地暴雨

新浪财经
2026-07-10 11:37:27
7月9日汪小菲台北直播坦诚表态!终于公开小玥儿回京上学真实安排

7月9日汪小菲台北直播坦诚表态!终于公开小玥儿回京上学真实安排

陈意小可爱
2026-07-10 19:50:49
弃用阿森纳王牌!英格兰名宿硬刚图赫尔!世界杯战挪威别再上他

弃用阿森纳王牌!英格兰名宿硬刚图赫尔!世界杯战挪威别再上他

澜归序
2026-07-11 03:02:21
印尼没想到!中企撤场连块铁皮都没留!普拉后悔,它成最大捡漏王

印尼没想到!中企撤场连块铁皮都没留!普拉后悔,它成最大捡漏王

泪满过眼
2026-07-10 19:56:31
穆里尼奥眼光太毒!8000 万新星世界杯露馅,亲手断送皇马之路

穆里尼奥眼光太毒!8000 万新星世界杯露馅,亲手断送皇马之路

奶盖熊本熊
2026-07-11 00:54:14
台风“巴威”降雨时间表来了!强降雨将覆盖十余省区市,降雨具有一定极端性

台风“巴威”降雨时间表来了!强降雨将覆盖十余省区市,降雨具有一定极端性

大象新闻
2026-07-10 18:50:13
连续两次被驱逐拒不离境!意大利28岁华人小伙这次被“硬核”押送遣返

连续两次被驱逐拒不离境!意大利28岁华人小伙这次被“硬核”押送遣返

意大利华人网0039
2026-07-11 03:46:35
34岁皇马门神捂脸痛哭!连续神扑后拉伤肌肉 被迫下场或告别世界杯

34岁皇马门神捂脸痛哭!连续神扑后拉伤肌肉 被迫下场或告别世界杯

风过乡
2026-07-11 04:53:09
韩国顶流李钟硕与IU官宣分手!四年顶配恋情画上句号

韩国顶流李钟硕与IU官宣分手!四年顶配恋情画上句号

喜欢历史的阿繁
2026-07-10 15:34:14
江苏考生理科651分放弃985,填报江警已录取,本人回应很坚定

江苏考生理科651分放弃985,填报江警已录取,本人回应很坚定

育学笔谈
2026-07-10 21:59:47
美国发布针对伊朗的新制裁措施

美国发布针对伊朗的新制裁措施

澎湃新闻
2026-07-11 03:04:03
7 月 13 日下周一,A 股真要大变天?

7 月 13 日下周一,A 股真要大变天?

风风顺
2026-07-11 02:20:04
英国想不通:连夜“抢回”中国买的钢厂,每天却倒贴上百万

英国想不通:连夜“抢回”中国买的钢厂,每天却倒贴上百万

混沌录
2026-07-10 22:49:20
荷兰大臣开门见山:先了结安世半导体,再谈光刻机全面合作

荷兰大臣开门见山:先了结安世半导体,再谈光刻机全面合作

老头的传奇色彩
2026-07-10 19:12:36
发现世界杯8强全是邻国 [旺柴]

发现世界杯8强全是邻国 [旺柴]

假装在纽约
2026-07-10 11:17:27
2026-07-11 06:07:00
CAD梦想画图
CAD梦想画图
是一款极速轻量级的CAD软件
611文章数 123关注度
往期回顾 全部

科技要闻

中国开启可回收火箭时代

头条要闻

世界杯-西班牙2-1比利时将战法国 梅里诺连场绝杀

头条要闻

世界杯-西班牙2-1比利时将战法国 梅里诺连场绝杀

体育要闻

法国VS摩洛哥:谁才是臭外地的?

娱乐要闻

韩国顶流李钟硕与IU官宣分手!

财经要闻

一封举报信 引发小红书IPO合规考验

汽车要闻

吉利银河TT:C级纯电轿跑新玩家 此TT非彼TT

态度原创

房产
家居
旅游
亲子
军事航空

房产要闻

重磅学校规划曝光!西海岸教育,正强得可怕!

家居要闻

2026建博会(广州) 公装联探展交流活动

旅游要闻

山东周末游|探沂蒙文韵

亲子要闻

儿子跟女儿都好

军事要闻

以色列:已做好打击伊朗的准备

无障碍浏览 进入关怀版