首页 > 其他分享 >网页三维CAD参数化建模开发框架的搭建教程

网页三维CAD参数化建模开发框架的搭建教程

时间:2024-07-15 09:22:42浏览次数:9  
标签:教程 const mxcad3d 建模 mxcad canvas new 方块 CAD

前言

mxcad3d是基于mxdraw的基础上,使用TypeScript和C++语言开发的一个网页三维CAD参数化建模框架,我们为开发者提供了丰富的参数化建模的开发接口,用户可以高效、便捷的对基本图元进行创建、同时丰富的JS开发接口方便了用户实现复杂的模型创建和CAD二次开发,网页测试DEMO链接如下:https://demo.mxdraw3d.com:3000/mxcad3d/

功能简介

参数化创建:方块、圆柱、圆锥、球体、圆环、楔形、拉伸、旋转体、放样、管道等。

几何运算: 形位变换、平移、缩放、旋转、镜像。

布尔运算:交集、差集、并集、相交轮廓。

倒角运算:圆角、斜角。

几何绘线:直线、圆、椭圆、双曲线、抛物线、B样条曲线、Bezier曲线等的绘制。

几何绘面:平面、B样条曲面、Bezier曲面的创建。

支持格式

step/stp,iges/igs,stl,obj,vrml/wrl,gltf等格式文件。

程序、运行

新建项目、安装依赖

首先,在某路径下新建一个文件夹TestMxCad3D作为项目文件夹,在TestMxCad3D 目录中打开cmd命令行程序运行以下命令来初始化项目并安装 vite和 mxcad。

npm init -y

npm install vite -D

npm install mxcad@latest

新建index.html文件

然后,在项目根目录下新建index.html文件,并绘制canvas画布,参考代码如下:

<!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;"> <canvas id="myCanvas"></canvas></div>
</body>
</html>

新建index.ts文件

在src目录下新建index.ts文件(vite默认支持ts),代码如下:

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("初始化完成");
});

index.html中引入index.ts

mxcad3d中的create()方法需要等canvas元素在页面加载完成后才能调用,因此需要将 script 标签放在 body 标签内部,让浏览器先完成HTML页面的解析,再下载并执行script标签中的代码。

<!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>

启动网页服务、运行网页

完成以上步骤后,运行下面的命令启动项目,输入命令:npx vite,打开网页.如下图:

以上代码会创建一个MxCAD3DObjectl类型的对象mxcad3d,并在初始化完成后输出一条消息,mxcad3d代表的是一个文档视图对象,能把创建的模型数据保存到文档,并且显示到视图上。此时你将会在浏览器中看到一个三维视图窗口,如下图:

绘制方块

要在视图中绘制一个方块,可以通过以下代码实现:

import { MxCAD3DObject, Mx3dMkBox, Mx3dGePoint } from "mxcad"
// 创建按钮
function createButton(text: string, fn: (...args) => void) {
    const button = document.createElement("button");
    button.innerText = text;
    document.body.appendChild(button);
    button.onclick = fn;
}
/**
 * 绘制方块
 */
function drawBox()
{
    // 获取文档
    const doc = mxcad3d.getDocument();
    const pt1 = new Mx3dGePoint(5, 5, 5);
    const pt2 = new Mx3dGePoint(15, 15, 15);
    // 构造BOX
    const boxMaker = new Mx3dMkBox(pt1, pt2);
    // 获取拓扑形状
    const boxShape = boxMaker.Shape();
    // 文档中创建一个标签
    const boxLabel = doc.addShapeLabel();
    // 添加拓扑形状到标签中
    boxLabel.setShape(boxShape);
    // 更新显示(会更新canvas中显示的模型)
    mxcad3d.update();
}
// 创建mxcad3d示例对象
const mxcad3d = new MxCAD3DObject()
// 初始化
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("初始化完成");
    createButton("绘制方块", drawBox);
});

以上代码新增了一个名为drawBox的函数,该函数会在画布中绘制一个方块。通过创建一个按钮,并在按钮的单击事件中调用drawBox函数,可以触发方块的绘制。

通过以上步骤,你可以在浏览器中看到一个带有三维视图窗口的页面,点击"绘制方块"按钮,即可在视图中绘制一个方块,如下图所示:

mxcad3d提供了强大的功能和灵活的开发接口,通过这些接口能够创建更多复杂的三维模型。

标签:教程,const,mxcad3d,建模,mxcad,canvas,new,方块,CAD
From: https://www.cnblogs.com/yzy0224/p/18302426

相关文章

  • Windows版PostgreSQL数据库下载及安装教程(关系型数据库管理系统)
    前言PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统(RDBMS)。PostgreSQL最初设想于1986年,当时被叫做BerkleyPostgresProject。该项目一直到1994年都处于演进和修改中,直到开发人员AndrewYu和JollyChen在Postgres中添加了一个SQL(StructuredQuery......
  • CAD、GIS与Three.js如何完美结合,实现2D与3D数据可视化的无限可能
    现状AutoCAD是全球最流行的CAD软件之一,其生成的DWG文件格式已经成为二维绘图的事实标准格式。然而,由于AutoCAD使用的是私有文件格式,这些文件只能在支持该格式的CAD软件中编辑和查看。这为希望将AutoCAD图纸发布到Web上,并在Web平台上进行应用开发(如数据展示和GIS分析)的用户带来了......
  • Unraid 连接雷迪司 H1000M UPS 教程
    前言上周六租住的小区更换电表,由于本人未注意贴在楼下的通知,直到断电时往去楼下咨询更换电表的工作人员才知晓通知已经提前一周下达。强制断电对NAS的硬盘影响是致命的,于是当机立断购入了雷迪司的这款NAS备用电源。选择这款备用电源的原因主要是便宜,Unraid和TheNetwork......
  • Python爬虫教程第二篇:进阶技巧与实战案例
    Python爬虫教程第二篇:进阶技巧与实战案例在上一篇教程中,我们学习了Python爬虫的基础概念、基本流程以及一个简单的入门实践案例。本篇教程将带领大家进一步探索Python爬虫的进阶技巧,并提供一个实战案例,帮助大家提升爬虫技能。一、进阶技巧处理JavaScript渲染的页面在We......
  • 6-1构建模型的3种方法
    可以使用以下三种方式构建模型:1.继承nn.Module基类构建自定义模型2.使用nn.Sequential按层顺序构建模型3.继承nn.Module基类构建模型并辅助应用模型容器进行封装(nn.Sequentail,nn.ModuleList,nn.ModuleDict)其中第一种方式最为常见,第二种方式最简单,第三种方式最为灵活也较为......
  • Linux Vim最全面的教程
    前言Vim是一款强大的文本编辑器,广泛用于Linux系统中。其强大的功能和灵活的配置使得它成为许多开发者和系统管理员的首选工具。本文旨在提供一份最全面的Vim教程,帮助你从基础到高级,全面掌握这款编辑器。目录Vim简介Vim的安装基本操作常用命令高级功能配置Vim插件管理实用......
  • LivePortrait 数字人:开源的图生视频模型,本地部署和专业视频制作详细教程
    看到上面面部表情动态图片,是不是感觉挺有有意思?它就是通过快手、中科大和复旦大学联合研发的图生视频开源大模型LivePortrait(灵动人像)生成的视频。通过LivePortrait大模型,我们只需要一张人脸正面图片和一段文字或音频,即可制作专业的视频内容,例如产品介绍、教学课程、趣味视频等......
  • 《昇思25天学习打卡营第3天|初学教程/张量 Tensor》
    文章目录张量Tensor内积(InnerProduct)外积(OuterProduct)线性映射(LinearMapping)笛卡儿积(CartesianProduct)创建张量张量的属性张量索引张量运算Tensor与NumPy转换稀疏张量CSRTensorCOOTensor张量Tensor张量(Tensor)是一个可用来表示在一些矢量、标量和其他张量之......
  • 2024辽宁省数学建模C题【改性生物碳对水中洛克沙胂和砷离子的吸附】原创论文分享
    大家好呀,从发布赛题一直到现在,总算完成了2024年辽宁省大学数学建模竞赛C题改性生物碳对水中洛克沙胂和砷离子的吸附完整的成品论文。本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。C题论文共47页,一些修改......
  • 2024辽宁省数学建模B题【钢铁产品质量优化】原创论文分享
    大家好呀,从发布赛题一直到现在,总算完成了2024年辽宁省大学数学建模竞赛B题钢铁产品质量优化完整的成品论文。本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。B题论文共47页,一些修改说明9页,正文33页,附录5页......