OpenSCAD 渲染服务

这是一个基于Node.js和OpenSCAD的3D模型参数化渲染服务,允许上传SCAD文件,修改参数,并渲染为3MF格式。

API 接口文档

POST /api/extract-params

从SCAD文件中提取参数定义。

请求参数

参数名 类型 描述
scadFile File SCAD文件(multipart/form-data)

响应示例

{
  "success": true,
  "filename": "example.scad",
  "params": [
    {
      "name": "height",
      "defaultValue": 10,
      "type": "range",
      "min": 0,
      "max": 100,
      "step": 1
    }
  ]
}
POST /api/render

渲染SCAD文件为3MF格式。

请求参数

参数名 类型 描述
scadFile File SCAD文件(multipart/form-data)
params String 参数JSON字符串(例如:{"height": 20, "width": 30})

响应

直接下载3MF文件

POST /api/batch-render

使用多组参数批量渲染模型。

请求参数

参数名 类型 描述
scadFile File SCAD文件(multipart/form-data)
paramSets String 参数集合JSON数组字符串(例如:[{"height": 10}, {"height": 20}])

响应示例

{
  "success": true,
  "batchId": "1234567890",
  "totalJobs": 2,
  "results": [
    {
      "index": 0,
      "filename": "model_1.3mf",
      "params": {"height": 10}
    },
    {
      "index": 1,
      "filename": "model_2.3mf",
      "params": {"height": 20}
    }
  ]
}

SCAD参数标记指南

为了让参数提取器正确识别参数,请遵循以下约定:

可配置参数

全局变量会被自动识别为可配置参数:

// 简单参数(会被识别)
rows = 3; // [1:10] 收纳盒行数
cols = 3; // [1:10] 收纳盒列数
hole_size = 25; // [10:50] 孔洞尺寸
radius = 2.5; // [0:5] 圆角半径

排除计算参数

以下几种方式可以排除不需要暴露的计算参数:

1. 使用@computed注释

// 计算参数(不会被识别为可配置选项)
base_length = cols * hole_size + (cols + 1) * hole_spacing; // @computed 底座长度

2. 使用下划线前缀

// 下划线前缀表示内部变量
_base_width = rows * hole_size + (rows + 1) * hole_spacing;

3. 使用函数代替变量

// 使用函数计算
function calc_base_height() = base_height - base_thickness;

参数分组

可以使用Customizer格式对参数进行分组:

/* [基本设置] */
rows = 3; // [1:10] 收纳盒行数
cols = 3; // [1:10] 收纳盒列数

/* [高级设置] */
hole_spacing = 3; // [1:10] 孔洞间距

下载示例SCAD文件,查看完整参数标记示例:

下载基础示例 下载口红收纳盒示例

测试接口

参数提取测试


    

渲染测试 (Render)

批量渲染测试 (Batch Render)