Maker.js 完整指南用 JavaScript 矢量绘图驱动激光切割【免费下载链接】maker.js⚙ 2D vector line drawing and shape modeling for CNC and laser cutters.项目地址: https://gitcode.com/gh_mirrors/ma/maker.jsMaker.js 是一个面向 CNC 与激光切割的 JavaScript 库把 2D 矢量绘图和形状建模写进代码。读完本文你能在浏览器或 Node.js 里用十几行代码生成参数化图形并导出 DXF、SVG、PDF 交给切割机。核心卖点是纯代码建模改一个参数整张图纸跟着变不用重画。Maker.js 生成的名片设计导出后直接可切浏览器与 Node 双端安装浏览器引入三步跑通一行脚本即可加载全局拿到makerjs对象script srchttps://cdn.jsdelivr.net/npm/makerjs0/target/js/browser.maker.js/script适合在网页里边调边看改参数立即刷新 SVG 预览。npm 集成三步走npm install makerjsconst makerjs require(makerjs); const fs require(fs); const svg makerjs.exporter.toSVG(new makerjs.models.Ring(50, 46)); fs.writeFileSync(ring.svg, svg);参数化、批量出图、接入 CI 这类任务都放 Node 侧更顺手。四个核心概念一张表说清概念一句话说明路径 Path一段直线、圆弧或圆是绘图的最小几何单元模型 Model一组路径加嵌套子模型组成完整图形的树状结构图层 Layer按刀具或颜色给路径分组决定切割机的执行顺序链 Chain首尾相接的路径序列闭合链才是一条可执行的切割轮廓实战生成一张激光切割通风网格第一步建立外框用 120×80 的圆角矩形作底板轮廓const frame new makerjs.models.RoundRectangle(120, 80, 10);第二步循环铺孔5 列 3 行、等间距的圆孔全部由循环生成const holes {}; for (let col 0; col 5; col) { for (let row 0; row 3; row) { holes[h col _ row] makerjs.model.moveRelative( new makerjs.models.Ring(6, 6), [20 col * 20, 20 row * 20]); } }第三步按图层组装外框和孔洞分进两个图层切割机可分刀执行const grid { layers: { cut_outer: { models: { frame } }, cut_inner: { models: holes } } };四种格式一次导出const dxf makerjs.exporter.toDXF(grid); // 交给切割软件 const svg makerjs.exporter.toSVG(grid); // 网页预览与归档 const { PDFDocument } require(pdfkit); const doc new PDFDocument(); // PDF 需 PDFKit 文档实例 makerjs.exporter.toPDF(doc, grid); doc.pipe(require(fs).createWriteStream(grid.pdf)).end();DXF 与 SVG 同步返回字符串PDF 走 PDFKit 的文档流Node 里落盘最方便。三个常见问题与对应解法两个形状重叠了怎么办用布尔运算合并// 会改动两个入参需要保留原图就传克隆 const merged makerjs.combine.union(box, tab); const overlapped makerjs.combine.intersection(box, tab); const pierced makerjs.combine.subtract(box, tab);union 取并集、intersection 取交集、subtract 用前者减掉后者。尖角在切割处炸边怎么办给路径转角批量加圆角或直接用带圆角的模型makerjs.model.fillet(model, 3); // 转角圆角 const plate new makerjs.models.RoundRectangle(100, 60, 8);上机前怎么确认实际尺寸用测量接口取包围盒const box makerjs.measure.modelExtents(model); // 返回 low 与 high const width box.high[0] - box.low[0];内置模型速查名称用途适用场景Rectangle直角矩形轮廓底板、框体Ring同心圆环孔洞、垫圈Polygon正多边形六角螺母、支架Star星形轮廓装饰件、吊饰BoltCircle按角度均布的孔阵列法兰、安装座Text字体转轮廓路径铭牌、标签避坑清单全图统一按毫米输入units设为makerjs.unitType.Millimeter别混用英寸激光切割的刀缝会吃掉 0.10.3mm配合件尺寸提前加补偿量圆角半径不超过短边长度的一半超过会被自动截断图纸变形布尔运算会改动入参模型想保留原图请先克隆再运算Text 依赖 opentype.js 解析字体Node 下需单独安装并传入字体文件上机前用 SVG 预览确认所有轮廓闭合开环路径无法执行切割SVG 预览与链检查// 调样式快速排查描边加粗、换色开环路径一眼可见 const view makerjs.exporter.toSVG(model, { strokeWidth: 0.3, stroke: blue });// 统计闭合链数量应与预期刀数一致 const chains makerjs.model.findChains(model); console.log(轮廓数量, chains.length);链的数量对不上通常意味着有路径重叠或断开先修模型再谈优化。延伸阅读官方文档docs/参数化网格示例源码ventgrid.ts建议先把上面的通风网格改出一组自己的参数再照着 ventgrid 的例子把模型抽成带默认参数的可复用函数。文档里的 working-with-chains 与 exporting 两节能在你开始做复杂装配体之前省下不少排错时间。【免费下载链接】maker.js⚙ 2D vector line drawing and shape modeling for CNC and laser cutters.项目地址: https://gitcode.com/gh_mirrors/ma/maker.js创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考