Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在线三维CAD中创建三维建筑墙体(在线建模CAD软件)

在线三维CAD中创建三维建筑墙体(在线建模CAD软件)

原创
作者头像
梦想云图网页CAD
发布于 2024-10-09 07:01:56
发布于 2024-10-09 07:01:56
2270
举报
文章被收录于专栏:网页CAD网页CAD

一、前言

1.本文将介绍如何使用mxcad3d来创建建筑墙体模型。该工具提供了丰富的三维建模功能和便捷的API,首先通过npm包管理器来新建测试项目并引入mxcad包,所以需要先安装Node.js,里面自带了npm包管理器 以及包含在npm包管理器中的npx工具 (用于启动运行我们的测试项目),Node.js下载和安装教程

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

二、新建测试项目

1.在合适的位置创建本次教程的测试项目文件夹Test3dWall ,并在Test3dWall 文件夹中打开cmd命令行工具 ,依次输入以下指令来初始化项目并引入mxcad包。新建项目的方法,依次输入以下操作命令,如下图:

npm init -y npm install vite -D npm install mxcad@latest

2. 使用VS CODE打开新建的测试项目文件夹(VS CODE是一款好用的集成开发工具,如何安装这里不再赘述,下载地址:https://code.visualstudio.com/Download

3.打开项目后,在项目目录下新建一个index.html文件以及一个src目录,然后在src目录下新建一个index.ts文件 并编写最基本的代码:

index.html

代码语言:txt
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vite use mxcad</title>
</head>
<body>
    <div style="height: 800px; overflow: hidden;"> <canvas id="myCanvas"></canvas></div>
    <script type="module" src="./src/index.ts"></script>
</body>
</html>

src/index.ts

代码语言:txt
AI代码解释
复制
import { MxCAD3DObject } from "mxcad"
// 创建mxcad3d对象
const mxcad3d = new MxCAD3DObject()
// 初始化mxcad3d对象
mxcad3d.create({
    // canvas元素的css选择器字符串(示例中是id选择器),或canvas元素对象
    canvas: "#myCanvas",
    // 获取加载wasm相关文件(wasm/js/worker.js)路径位置
    locateFile: (fileName)=> new URL(`/node_modules/mxcad/dist/wasm/3d/${fileName}`, import.meta.url).href,
})
// 初始化完成
mxcad3d.on("init", ()=>{
    console.log("初始化完成");
});

三、运行测试

1.新建终端

2.开启服务

3.打开网页,查看效果

四、编写绘制建筑墙体的代码

1.墙体的二维平面设计图:

2.index.html中添加一个按钮(以下是index.html完整代码)

代码语言:txt
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vite use mxcad</title>
</head>
<body>
    <div style="height: 800px; overflow: hidden;"> <canvas id="myCanvas"></canvas></div>
    <script type="module" src="./src/index.ts"></script>
    <button>绘制建筑墙体</button>
</body>
</html>

3.src/index.ts中添加绘制墙体的代码,给按钮添加点击事件来触发绘制墙体的代码执行,以下是src/index.ts完整代码:

代码语言:txt
AI代码解释
复制
import { MxCAD3DObject, Mx3dGePoint, Mx3dMkPolygon, Mx3dMkFace, Mx3dMkPrism, Mx3dGeVec, Mx3dGeColor, MdGe } from "mxcad"
// 创建mxcad3d对象
const mxcad3d = new MxCAD3DObject()
// 初始化mxcad3d对象
mxcad3d.create({
    // canvas元素的css选择器字符串(示例中是id选择器),或canvas元素对象
    canvas: "#myCanvas",
    // 获取加载wasm相关文件(wasm/js/worker.js)路径位置
    locateFile: (fileName)=> new URL(`/node_modules/mxcad/dist/wasm/3d/${fileName}`, import.meta.url).href,
})
// 初始化完成
mxcad3d.on("init", ()=>{
    console.log("初始化完成");
});
function funDrawWall(){
  // 外墙轮廓
  const wallOutterPts: Mx3dGePoint[] = [];
  wallOutterPts.push(new Mx3dGePoint(0, 0, 0));
  wallOutterPts.push(new Mx3dGePoint(0, 4480, 0));
  wallOutterPts.push(new Mx3dGePoint(5480, 4480, 0));
  wallOutterPts.push(new Mx3dGePoint(5480, 0, 0));
  const wallOutterPolygon = new Mx3dMkPolygon();
  wallOutterPts.forEach((pt) => {
    wallOutterPolygon.Add(pt);
  });
  wallOutterPolygon.Close();
  const wallOutterWire = wallOutterPolygon.Wire();
  const wallOutterMkFace = new Mx3dMkFace(wallOutterWire);
  const wallOutterFace = wallOutterMkFace.Face();
  // 内墙轮廓
  const wallInnerPts: Mx3dGePoint[] = [];
  wallInnerPts.push(new Mx3dGePoint(240, 240, 0));
  wallInnerPts.push(new Mx3dGePoint(240, 4240, 0));
  wallInnerPts.push(new Mx3dGePoint(5240, 4240, 0));
  wallInnerPts.push(new Mx3dGePoint(5240, 240, 0));
  const wallInnerPolygon = new Mx3dMkPolygon();
  wallInnerPts.forEach((pt) => {
    wallInnerPolygon.Add(pt);
  });
  wallInnerPolygon.Close();
  const wallInnerWire = wallInnerPolygon.Wire();
  const wallInnerMkFace = new Mx3dMkFace(wallInnerWire);
  const wallInnerFace = wallInnerMkFace.Face();
  // 墙体截面
  const wallFace = wallOutterFace.cut(wallInnerFace);
  // 拉伸墙体
  const wallMkPrism = new Mx3dMkPrism(wallFace, new Mx3dGeVec(0, 0, 3000));
  let wall = wallMkPrism.Shape();
  // 开窗洞
  const winPts: Mx3dGePoint[] = [];
  winPts.push(new Mx3dGePoint(1990, 4240, 1000));
  winPts.push(new Mx3dGePoint(1990, 4240, 2200));
  winPts.push(new Mx3dGePoint(3490, 4240, 2200));
  winPts.push(new Mx3dGePoint(3490, 4240, 1000));
  const winPolygon = new Mx3dMkPolygon();
  winPts.forEach((pt) => {
    winPolygon.Add(pt);
  });
  winPolygon.Close();
  const winWire = winPolygon.Wire();
  const winMkFace = new Mx3dMkFace(winWire);
  const winFace = winMkFace.Face();
  const winMkPrism = new Mx3dMkPrism(winFace, new Mx3dGeVec(0, 240, 0));
  const win = winMkPrism.Shape();
  // 开门洞
  const doorPts: Mx3dGePoint[] = [];
  doorPts.push(new Mx3dGePoint(5240, 1160, 0));
  doorPts.push(new Mx3dGePoint(5240, 1160, 2000));
  doorPts.push(new Mx3dGePoint(5240, 360, 2000));
  doorPts.push(new Mx3dGePoint(5240, 360, 0));
  const doorPolygon = new Mx3dMkPolygon();
  doorPts.forEach((pt) => {
    doorPolygon.Add(pt);
  });
  doorPolygon.Close();
  const doorWire = doorPolygon.Wire();
  const doorMkFace = new Mx3dMkFace(doorWire);
  const doorFace = doorMkFace.Face();
  const doorMkPrism = new Mx3dMkPrism(doorFace, new Mx3dGeVec(240, 0, 0));
  const door = doorMkPrism.Shape();
  wall = wall.cut(win).cut(door);
  // 准备一个棕色
  const brownColor = new Mx3dGeColor(MdGe.MxNameOfColor.Color_NOC_BROWN);
  // 先清除视图中的模型
  mxcad3d.removeAll();
  // 获取视图文档
  const doc = mxcad3d.getDocument();
  // 文档中创建一个标签用于存储墙体形状
  const wallLabel = doc.addShapeLabel();
  // 墙体形状放入文档标签中
  wallLabel.setShape(wall);
  // 给墙体设置为棕色
  wallLabel.setColor(brownColor);
  // 更新显示视图
  mxcad3d.update();
}
// 给button添加点击事件,点击后调用drawRoundRectPipe函数,进行圆角方管的绘制
// 立即执行函数
(function addEventToButton(){
  const btn = document.querySelector("button");
  if (btn) {
    btn.addEventListener("click", () => {
      funDrawWall();
    });
  }
})() 

4. 重新查看运行效果

5. 本次教程最后完成的完整测试项目压缩包下载地址为:https://gitee.com/mxcadx/mxcad_docs/tree/master/examples3D/Test3dWall.7z

压缩包下载解压后需要在项目目录下打开cmd命令行,然后在命令行中执行npm install来安装依赖,然后再按照本教程中的方式来运行项目查看效果。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
(web 3d cad sdk)在线三维CAD中创建一个装配体的方法
在网页CAD中有些相同的零件可以只建一个模型实例,其余用到的地方均为实例的引用,然后将引用组合起来形成装配体。mxcad3d提供了丰富的三维建模功能和便捷的API,接下来聊一下如何利用mxcad3d来创建小车装配体模型。
梦想云图网页CAD
2024/10/16
1010
(web 3d cad sdk)在线三维CAD中创建一个装配体的方法
(网页三维CAD)二维CAD图转三维的实现方法
网页CAD中经常有这样的需求:将二维的CAD图纸通过转换为三维的形状(如将平面二维的图形向上拉伸一定的高度),进而进行三维展示的效果,本文以将平面二维的图形向上拉伸一定的高度为例,实现二维CAD图形转三维图形。
梦想云图网页CAD
2024/08/16
1860
(网页三维CAD)二维CAD图转三维的实现方法
(Vue3结合ThreeJS开发3D)在线三维CAD中绘制窗户模型
本文使用mxcad3d在网页中创建一个简单的三维窗户模型,mxcad3d提供了丰富的三维建模功能和便捷的API,使得创建各种三维模型变得简单方便,最终效果如下图:
梦想云图网页CAD
2024/10/30
2600
(Vue3结合ThreeJS开发3D)在线三维CAD中绘制窗户模型
网页三维CAD参数化建模开发框架的搭建教程
mxcad3d是基于mxdraw的基础上,使用TypeScript和C++语言开发的一个网页三维CAD参数化建模框架,我们为开发者提供了丰富的参数化建模的开发接口,用户可以高效、便捷的对基本图元进行创建、同时丰富的JS开发接口方便了用户实现复杂的模型创建和CAD二次开发,网页测试DEMO链接如下:https://demo.mxdraw3d.com:3000/mxcad3d/。
梦想云图网页CAD
2024/07/19
1860
网页三维CAD参数化建模开发框架的搭建教程
在线三维CAD中加载和保存STEP模型
1. 在网页CAD中进行三维建模的时候经常需要导入和导出STEP格式的三维模型文件,本文将介绍如何使用`mxcad3d`来导入导出STEP三维模型。
梦想云图网页CAD
2024/12/10
2440
在线三维CAD中加载和保存STEP模型
VUE前端3D CAD创建一个三维管道模型的详细教程
在网页CAD中进行三维建模是一项有趣的任务。本文将介绍如何利用mxcad3d来创建三维管道模型。该工具提供了一系列三维建模功能的API,使得建立复杂的管道结构变得简单直观。
梦想云图网页CAD
2024/09/05
2360
VUE前端3D CAD创建一个三维管道模型的详细教程
WEB CAD绘制墙体和(在线CAD SDK开发室内设计软件)
室内平面图中墙体是最重要的图形之一,其中砖墙、混凝土墙、钢架墙、隔墙、隔热墙等类型的墙在设计图中均有不同的表现方式,墙体的用途一般可以分为一般墙、虚墙、卫生隔断、阳台挡板、矮墙等,根据不同的需求绘制对应的墙体能够增强建筑设计的专业性和准确性。下面我们将介绍如何使用mxcad实现基础墙体功能,并展示其实践运用效果。
梦想云图网页CAD
2024/12/26
1490
WEB CAD绘制墙体和(在线CAD SDK开发室内设计软件)
(在线cad制图)在线CAD中配置属性的使用教程
Mxcad SDK 能够在线预览编辑CAD图纸,用户可根据项目需求选择不同的实现方式,如通过Vite、CDN、webpack分别使用mxcad。如果不清楚mxcad实现在线预览编辑CAD图纸的方法,可参考mxcad开发文档:https://www.mxdraw3d.com/mxcad_docs/zh/。
梦想云图网页CAD
2025/04/07
3030
(在线cad制图)在线CAD中配置属性的使用教程
在线CAD绘制门和窗(网页端编辑DWG SDK)
Mxcad是使用TypeScript、C++语言开发的一个网页CAD底层平台,它为用户提供了丰富的开发接口,此框架功能丰富、使用简易高效,可帮助大家在网页二开与自己专业相关的网页CAD应用。我们以家装行业为例,介绍mxcad如何快速实现墙体、单开门、标准窗等实体,并实现这些实体之间的联动。
梦想云图网页CAD
2025/01/07
2570
在线CAD绘制门和窗(网页端编辑DWG SDK)
(在线预览CAD图纸)在线CAD调用内部弹框的方法
在 MxCAD APP 二次开发的过程中,为了沿用项目内部的样式保持项目的统一性,我们提供了调用项目内部弹框的接口。用户可根据自己的具体需求按照下面文档介绍的步骤来操作调用项目内部的弹框。
梦想云图网页CAD
2025/03/08
2490
(在线预览CAD图纸)在线CAD调用内部弹框的方法
在线CAD二次开发块表的详细教程(WEB预览cad插件)
在DWG数据库中,所有图块都存放在块表McDbBlockTable()中,块表中每一条记录称为图块记录对象McDbBlockTableRecord(),图块记录中存放着所有实体数据,用户可以通过改变图块的属性设置来修改其对应着的实体数据。
梦想云图网页CAD
2024/06/18
3060
在线CAD二次开发块表的详细教程(WEB预览cad插件)
(网页系统集成DWG编辑功能)通过上下文对象MxPluginContext修改UI界面
在之前的文章中,我们已经提到过如何通过手动修改配置文件的方式去设置云图开发包内 MxCAD 项目中的UI配置。如有不清楚的地方查看[网页CAD二次开发修改UI配置的方法]。
梦想云图网页CAD
2025/02/25
2010
(网页系统集成DWG编辑功能)通过上下文对象MxPluginContext修改UI界面
网页CAD二次开发(在线CAD SDK)用到的数学库
在CAD二次开发中, 正确的使用数学库是十分重要的, 我们不需要会很多数学知识, 只要会普通的四则运算和调用mxcad提供的api即可,通过[快速入门]了解了打开图纸后,如果要对图形进行处理,就需要各种计算, mxcad提供了一些类来参与计算或者表示一些数据结构,相关的API查询如下:
梦想云图网页CAD
2024/06/20
2170
网页CAD二次开发(在线CAD SDK)用到的数学库
(H5前端CAD)在线CAD如何实现图形识别功能(真正国产CAD)
CAD图形识别功能可帮助用户快速识别和提取CAD图纸中的各种图形,从而加速设计过程。​可应用在识别与分类阶段,自动识别图纸中的不同元素,通过特定特征进行区分,减少了手动分类的工作量;也可应用在数量统计阶段,统计图纸中各种构件的数量用于预算;还可运用在图纸定位和应用阶段,快速定位图纸上的特定元素,便于快速查找和修改。
梦想云图网页CAD
2024/09/29
3220
(H5前端CAD)在线CAD如何实现图形识别功能(真正国产CAD)
(二维CAD图纸网页编辑)在线CAD实现多重引线功能
本章介绍如何利用 mxcad 插件实现在CAD图纸中箭头引注的功能,该功能中用户点击画布确定箭头起点,再次连续点击画布确定箭头引线顶点及终点位置。
梦想云图网页CAD
2024/10/23
1410
(二维CAD图纸网页编辑)在线CAD实现多重引线功能
(JS编辑DWG文件)网页CAD插件二开形位公差标注
形位公差是指对零件几何要素的形状误差和位置误差所允许的最大变动量,它与传统的尺寸公差不同,不仅关注长度或直径等线性尺寸的变化,还关注零件的几何特性是否符合设计意图。在本篇文章中我们将介绍如何通过mxcad插件根据形位公差的特性来实现形位公差标注功能。
梦想云图网页CAD
2025/07/23
1670
(JS编辑DWG文件)网页CAD插件二开形位公差标注
(html端编辑DWG)网页CAD中如何二开测量圆、测量面积功能
本章将介绍如何利用mxcad插件实现在CAD图纸中测量圆和测量面积的功能,用户点击目标圆对象将自动标记出这个圆的半径、面积值和周长值,同时可以自定义选择标注文字的位置,测量圆功能能够快速掌握目标圆对象的数据信息,方便统计工程量。 测量面积功能(多边形、矩形)以多边形的每一个顶点来确定多边形的形状和位置,通过点击矩形的量角点来确定矩形的大小和位置,也可以自定义标注文字的位置。
梦想云图网页CAD
2024/09/23
2160
(html端编辑DWG)网页CAD中如何二开测量圆、测量面积功能
(在线CAD)WEB前端实现CAD绘制焊接符号
在工程制图和制造领域,焊接符号(Welding Symbols)是用于表示焊缝类型、尺寸、位置以及工艺要求的标准化图形语言。广泛应用于机械设计、钢结构、船舶制造、压力容器等行业中,帮助技术人员理解焊接意图。
梦想云图网页CAD
2025/06/18
1490
(在线CAD)WEB前端实现CAD绘制焊接符号
WEB CAD实现粗糙度标注功能
‌表面粗糙度符号是机械制图中的重要标注符号,用于表示零件表面的微观不平度。它的基本形式是一个三角形,尖端从材料外垂直指向被标注的表面。符号的尖端必须从材料外垂直指向被标注的表面,标注可以注在尺寸界线上、轮廓线上、延长线上或代号中‌。在本篇文章中我们将通过解析表面粗糙度符号,调用mxcad二次开发实现粗糙度标注功能。
梦想云图网页CAD
2025/05/28
1740
WEB CAD实现粗糙度标注功能
(在线编辑DWG)WEB CAD多行文本扩展
在最新版本的 mxcad 插件中,我们提供了一个名为MxCADMText的自定义编辑器实体类,用于在CAD中渲染和管理富文本编辑器。基于该类,我们可以将富文本编辑器中的强大功能转移实现在我们的MxCAD项目中,目前我们的在线demo中已经更新了多行文本编辑器的相关功能。
梦想云图网页CAD
2025/04/30
1620
(在线编辑DWG)WEB CAD多行文本扩展
推荐阅读
相关推荐
(web 3d cad sdk)在线三维CAD中创建一个装配体的方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档