小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
GNU General Public License v2.0
20
最近更新:7天前

连接 MCP 到主要的 3D 打印机 API(Orca、Bambu、OctoPrint、Klipper、Duet、Repetier、Prusa、Creality)。控制打印、监控状态,并执行高级 STL 操作,如缩放、旋转、截面编辑和底座扩展。包括切片和可视化。

MCP 3D 打印服务器

npm 版本
许可证: GPL-2.0
TypeScript
维护
欢迎 PR
Node.js 版本
下载量
GitHub 星标

✨ 最新功能 / 重要更新(截至上一次会话)
  • Bambu .3mf 打印: 添加了专门用于 Bambu Lab 打印机的 print_3mf 工具。该工具上传 .3mf 文件并通过 MQTT 根据 OpenBambuAPI 规范直接发送打印命令。
  • 直接 MQTT 通信(Bambu): 重构了 Bambu 命令处理(print_3mf, cancelJob),使用直接 MQTT(TLS 端口 8883),而不是仅依赖 bambu-js 进行命令操作。
  • .3mf 文件解析: 实现了一个解析器(src/3mf_parser.ts),用于读取 .3mf 文件中的元数据和 Bambu 特定的切片设置(从 project_settings.config 中)。
  • Bambu 预设资源: 添加了对读取 Bambu Studio 预设文件(machine, filament, process)的支持,作为 MCP 资源(例如 preset://bambu/process/MyPreset),如果设置了 BAMBU_STUDIO_CONFIG_PATH
  • OrcaSlicer 集成: 添加了通过其命令行界面使用 OrcaSlicer 的支持,用于 slice_stl 工具。
  • 新的 STL 操作工具: 添加了 merge_vertices, center_model, 和 lay_flat 工具,用于使用 three.js 进行基本模型准备。
  • 配置更新: 添加了 BAMBU_STUDIO_CONFIG_PATH 环境变量以加载预设。
  • FTP 使用说明: 文档中确认了当前 Bambu 文件操作通过 bambu-js 使用可能不安全的 FTP。
🗺️ 路线图 / TODO
  • 实现功能对等: 提升 OctoPrint、Klipper、Duet、Repetier、Prusa Connect 和 Creality Cloud 的功能(状态细节、文件操作、直接打印、预设处理等),达到与 Bambu 实现计划相同的稳健性。
  • 实现完整的 Bambu MQTT 状态: 重构 getStatus 以订阅 MQTT 报告并维持实时状态。
  • 实现稳健的 AMS 映射: 替换占位逻辑;正确解析并使用来自 .3mf 切片器配置或用户覆盖的 AMS 映射,以用于 MQTT 打印命令。
  • 实现 .3mf 打印覆盖:print_3mf 工具添加逻辑以处理用户提供的覆盖(例如校准标志),并通过 MQTT/G-code 处理常见的切片器设置(如果可行)。
  • 计算 MD5 哈希: 添加逻辑以计算并包含 .3mf 文件的 MD5 哈希值在 MQTT 打印命令中(可选但协议推荐)。
  • 重构 Bambu 文件操作: 如果可能/稳定,研究使用直接 MQTT 方法替换 bambu-js FTP 操作(getFiles, uploadFile),或为 bambu-js 贡献 FTPS 支持。
  • 添加预设发现逻辑: 改进预设资源列表(目前基于潜在文件名列出,可以解析索引文件(如果存在))。
  • 扩展 .3mf 支持: 为其他适用的打印机类型添加 .3mf 打印支持。
  • 错误处理和报告: 增强 MQTT 错误处理和打印进度/完成的报告。
  • 测试: 对所有新的 Bambu 功能进行彻底的运行时测试。
点击展开目录

目录

描述

这是一个允许 MCP 用户连接到以下 3D 打印机 API 端点的服务器:

  • OctoPrint
  • Klipper (Moonraker)
  • Duet
  • Repetier
  • Bambu Labs
  • Prusa Connect
  • Creality/Ender

该服务器是一个模型上下文协议(MCP)服务器,用于将 Claude 与 3D 打印机管理系统连接起来。它允许 MCP 通过各种打印机管理系统的 API 与 3D 打印机交互,例如 OctoPrint、Klipper(通过 Moonraker)、Duet、Repetier 和 Bambu Labs 打印机。

资源使用说明: 该 MCP 服务器包括高级的 3D 模型操作功能,在处理大型 STL 文件时可能会占用大量内存。请参阅“限制和注意事项”部分以获取有关内存使用和性能的重要信息。

功能

  • 获取打印机状态(温度、打印进度等)
  • 列出打印机上的文件
  • 上传 G-code 文件到打印机
  • 开始、取消和监控打印任务
  • 设置打印机温度
  • 高级 STL 文件操作:
    • 扩展底座以提高附着力
    • 统一或沿特定轴缩放模型
    • 绕任意轴旋转模型
    • 平移(移动)模型
    • 修改 STL 文件的特定部分(顶部、底部、中心或自定义)
  • 全面的 STL 分析,提供详细的模型信息
  • 生成多角度的 STL 文件 SVG 可视化
  • 实时报告长时间操作的进度
  • 错误处理和详细诊断
  • 切片 STL 文件以生成 G-code
  • 确认 G-code 文件中的温度设置
  • 完整的端到端工作流程,从 STL 修改到打印
  • 在 Bambu Lab 打印机上直接打印 .3mf 文件(通过 MQTT 命令)
  • 读取 Bambu Studio 预设文件(打印机、耗材、过程)作为资源

安装

先决条件

  • Node.js 18 或更高版本
  • npm 或 yarn

从 npm 安装

bash 复制代码
npm install -g mcp-3d-printer-server

从源代码安装

bash 复制代码
git clone https://github.com/dmontgomery40/mcp-3d-printer-server.git
cd mcp-3d-printer-server
npm install
npm link  # 使命令全局可用

使用 Docker 运行

您还可以使用 Docker 和 Docker Compose 在容器化环境中运行服务器。

  1. 确保已安装 Docker 和 Docker Compose。
  2. .env.example 复制为 .env 并配置您的设置。
  3. 构建并运行容器:
    bash 复制代码
    docker-compose up --build -d

在 Docker 中使用切片器

请注意,默认的 Docker 设置无法直接使用主机上安装的切片器。由于主机和容器之间的操作系统和库差异,将切片器可执行文件直接从主机挂载到容器是不可靠的。

推荐的方法是在 Docker 镜像内部安装您喜欢的切片器。这使得容器自给自足。

为此,您需要修改 Dockerfile。以下是如何添加 PrusaSlicer 或 OrcaSlicer 的概念示例(具体命令可能因切片器、其依赖项和当前 Alpine 包而异):

dockerfile 复制代码
# ... 其他 Dockerfile 命令 ...

# 示例:安装 PrusaSlicer 或 OrcaSlicer(根据需要调整命令)
# 首先检查 Alpine 包仓库(例如,apk add prusaslicer 或 apk add orcaslicer)
# 如果不可用,下载并手动安装(例如 AppImage):
# RUN apk add --no-cache fuse # AppImages 可能需要 FUSE
# RUN wget https://example.com/path/to/OrcaSlicer_Linux_Vxxxx.AppImage -O /usr/local/bin/orcaslicer && \
#     chmod +x /usr/local/bin/orcaslicer

# 在 docker-compose.yml 或运行时相应地设置 SLICER_PATH 环境变量
# 已安装可执行文件的示例:
ENV SLICER_PATH=/usr/local/bin/orcaslicer 

# ... 其余 Dockerfile ...

修改 Dockerfile 后,重新构建镜像(docker-compose build)。您还需要确保 .env 文件或 docker-compose.yml 中的 SLICER_PATH 环境变量指向容器内的正确路径(例如 /usr/local/bin/orcaslicer)。同时设置 SLICER_TYPEorcaslicer

对于未预先包含特定切片器表示歉意,但由于有多种切片器(PrusaSlicer、OrcaSlicer、Cura 等)和配置可用,预先安装一个会不必要地增加许多用户的镜像大小。如果某个特定切片器成为非常普遍的需求,我当然会在未来的版本中考虑添加官方支持。

配置

在运行服务器的目录中创建一个 .env 文件或设置环境变量:

env 复制代码
# 打印机管理系统认证所需
API_KEY=your_api_key_here

# 默认打印机连接设置
PRINTER_HOST=localhost
PRINTER_PORT=80 # 非 Bambu HTTP API 的端口
PRINTER_TYPE=octoprint  # 选项:octoprint, klipper, duet, repetier, bambu, prusa, creality

# 可选:临时文件目录
TEMP_DIR=/path/to/temp/dir

# Bambu Labs 特定配置
BAMBU_SERIAL=your_printer_serial # Bambu 必需
BAMBU_TOKEN=your_access_token    # Bambu 必需

# 切片器配置(用于 slice_stl 工具)
SLICER_TYPE=prusaslicer  # 选项:prusaslicer, cura, slic3r, orcaslicer
SLICER_PATH=/path/to/slicer/executable
SLICER_PROFILE=/path/to/slicer/profile

# 可选:Bambu Studio 用户配置目录路径(用于加载预设)
# macOS 示例:/Users/your_user/Library/Application Support/BambuStudio/user/YOUR_USER_ID
# Windows 示例:C:\Users\your_user\AppData\Roaming\BambuStudio\user\YOUR_USER_ID
# Linux 示例:/home/your_user/.config/BambuStudio/user/YOUR_USER_ID
BAMBU_STUDIO_CONFIG_PATH=

与 Claude Desktop 一起使用

  1. 编辑您的 Claude Desktop 配置文件:
json 复制代码
{
  "mcpServers": {
    "3dprint": {
      "command": "mcp-3d-printer-server",
      "env": {
        "API_KEY": "your_api_key_here",
        "PRINTER_HOST": "your_printer_ip",
        "PRINTER_TYPE": "octoprint"
      }
    }
  }
}
  1. 对于 Bambu Labs 打印机:
json 复制代码
{
  "mcpServers": {
    "3dprint": {
      "command": "mcp-3d-printer-server",
      "env": {
        "PRINTER_HOST": "your_printer_ip",
        "PRINTER_TYPE": "bambu",
        "BAMBU_SERIAL": "your_printer_serial",
        "BAMBU_TOKEN": "your_access_token"
      }
    }
  }
}
  1. 重启 Claude Desktop
  2. 通过 Claude 连接到您的打印机

支持的打印机管理系统

OctoPrint

OctoPrint 是一个流行的 3D 打印机 Web 界面。它提供了用于控制打印机的 REST API。

  • 默认端口:80(http)或 443(https)
  • 认证:需要 API 密钥

Klipper(通过 Moonraker)

Klipper 是一种与 Moonraker API 服务器配合使用的 3D 打印机固件。

  • 默认端口:7125
  • 认证:取决于您的 Moonraker 配置

Duet

Duet 是一款带有自己 Web 界面(DuetWebControl)的 3D 打印机控制板。

  • 默认端口:80(http)或 443(https)
  • 认证:取决于您的 Duet 配置

Repetier

Repetier-Server 是一种 3D 打印机主机软件。

  • 默认端口:3344
  • 认证:需要 API 密钥

Bambu Labs

Bambu Lab 打印机使用 MQTT 进行状态和控制,使用 FTP 进行文件操作。

  • 认证:需要序列号和访问令牌(设置 BAMBU_SERIALBAMBU_TOKEN
  • 要求:打印机必须在同一网络上或启用云连接
  • 兼容:X1C、P1S、P1P、A1 和其他 Bambu Lab 打印机

查找您的 Bambu 打印机序列号和访问令牌

要连接到您的 Bambu Lab 打印机,您需要两样东西:

  1. 打印机序列号

    • 查看打印机背面或底部的标签,上面有一个序列号(通常以“01P”或“01A”开头,后跟数字/字母)
    • 或者,打开 Bambu Studio,连接到您的打印机,进入设备 > 设备管理,并查看打印机信息
  2. 访问令牌

    • 访问令牌是直接连接到打印机所需的安全代码
    • 对于 P1 系列打印机:进入触摸屏,选择设置 > 网络 > LAN 模式,您将看到访问码
    • 对于 X1 系列打印机:进入触摸屏,选择设置 > 网络 > LAN 模式,并启用 LAN 模式以查看访问码
    • 对于 A1 Mini:使用 Bambu Handy 应用连接到您的打印机,然后进入设置 > 网络 > LAN 模式

注意:如果您的打印机不在同一本地网络上或找不到访问令牌,您可能需要更新打印机的固件到最新版本以启用 LAN 模式。

Bambu 通信说明(MQTT & FTP)

  • MQTT: 该服务器基于社区发现(例如 OpenBambuAPI)使用本地 MQTT 协议(端口 8883,TLS)发送命令,例如开始打印和取消任务。
  • FTP: 文件列表和上传目前依赖于打印机上运行的 FTP 服务器(通过 bambu-js 库助手)。注意:此 FTP 连接可能基于当前库的限制,是不安全的(纯 FTP)。请了解您的网络安全情况后再使用。

Prusa Connect

Prusa Connect 是 Prusa 自己的基于云的解决方案,用于管理他们的打印机。

  • 默认端口:80(http)或 443(https)
  • 认证:需要 API 密钥
  • 兼容:Prusa MK4、Prusa Mini、Prusa XL 和其他具有 Prusa Connect 功能的 Prusa 打印机

设置 Prusa Connect

  1. 确保您的 Prusa 打印机已更新到最新固件
  2. 将您的打印机连接到 Wi-Fi 网络
  3. 创建 Prusa Connect 帐户并注册您的打印机
  4. 从 Prusa Connect Web 界面的设置 > API 访问下生成 API 密钥

Creality Cloud

Creality Cloud 是 Creality 的打印机管理系统。

  • 默认端口:80(http)或 443(https)
  • 认证:需要 Bearer 令牌
  • 兼容:Ender 系列、CR 系列和其他具有网络功能的 Creality 打印机

设置 Creality Cloud

  1. 在您的移动设备上安装 Creality Cloud 应用
  2. 创建帐户并添加您的打印机
  3. 启用打印机的本地网络访问
  4. 从 Creality Cloud 应用的设置 > 开发者选项下生成令牌

可用工具

点击展开 STL 操作工具

STL 操作工具

内存使用警告:以下 STL 操作工具将整个 3D 模型加载到内存中。对于大型或复杂的 STL 文件(>10MB),这些操作可能会消耗大量内存。在 MCP 环境中使用这些工具时,请注意内存限制。

get_stl_info

获取 STL 文件的详细信息,包括尺寸、顶点数量和边界框。

json 复制代码
{
  "stl_path": "/path/to/file.stl"
}

extend_stl_base

按指定的数量扩展 STL 文件的底座。

json 复制代码
{
  "stl_path": "/path/to/file.stl",
  "extension_inches": 2
}

scale_stl

统一或沿特定轴缩放 STL 模型。

json 复制代码
{
  "stl_path": "/path/to/file.stl",
  "scale_factor": 1.5
}

或者非均匀缩放:

json 复制代码
{
  "stl_path": "/path/to/file.stl",
  "scale_x": 1.2,
  "scale_y": 1.0,
  "scale_z": 1.5
}

rotate_stl

绕特定轴(以度为单位)旋转 STL 模型。

json 复制代码
{
  "stl_path": "/path/to/file.stl",
  "rotate_x": 45,
  "rotate_y": 0,
  "rotate_z": 90
}

translate_stl

沿特定轴(以毫米为单位)移动 STL 模型。

json 复制代码
{
  "stl_path": "/path/to/file.stl",
  "translate_x": 10,
  "translate_y": 5,
  "translate_z": 0
}

merge_vertices

合并距离小于指定公差的顶点。有助于关闭小缝隙,并可能稍微简化网格。

json 复制代码
{
  "stl_path": "/path/to/model.stl",
  "tolerance": 0.01 // 可选,默认 = 0.01mm
}

center_model

平移模型,使其边界框的中心位于世界原点(0,0,0)。

json 复制代码
{
  "stl_path": "/path/to/model.stl"
}

lay_flat

尝试识别模型的最大平面(如果不是已经直接朝上或朝下),并旋转模型,使该面朝下位于 XY 平面上(Z=0)。适用于定向模型以便打印。

json 复制代码
{
  "stl_path": "/path/to/model.stl"
}

modify_stl_section

对 STL 文件的选定部分应用特定转换。这允许对模型的特定部分进行详细修改。

json 复制代码
{
  "stl_path": "/path/to/file.stl",
  "section": "top",
  "transformation_type": "scale",
  "value_x": 1.5,
  "value_y": 1.5, 
  "value_z": 1.5
}

对于自定义部分边界:

json 复制代码
{
  "stl_path": "/path/to/file.stl",
  "section": "custom",
  "transformation_type": "rotate",
  "value_x": 0,
  "value_y": 0, 
  "value_z": 45,
  "custom_min_x": -10,
  "custom_min_y": 0,
  "custom_min_z": -10,
  "custom_max_x": 10,
  "custom_max_y": 20,
  "custom_max_z": 10
}

generate_stl_visualization

从多个角度(前视图、侧视图、顶视图和等距视图)生成 STL 文件的 SVG 可视化。

json 复制代码
{
  "stl_path": "/path/to/file.stl",
  "width": 400,
  "height": 400
}

slice_stl

切片 STL 文件以生成 G-code。

json 复制代码
{
  "stl_path": "/path/to/file.stl",
  "slicer_type": "prusaslicer",
  "slicer_path": "/path/to/prusaslicer",
  "slicer_profile": "/path/to/profile.ini"
}

confirm_temperatures

确认 G-code 文件中的温度设置。

json 复制代码
{
  "gcode_path": "/path/to/file.gcode",
  "extruder_temp": 200,
  "bed_temp": 60
}

process_and_print_stl

处理 STL 文件(扩展底座),切片,确认温度,并开始打印。

json 复制代码
{
  "stl_path": "/path/to/file.stl",
  "extension_inches": 2,
  "extruder_temp": 200,
  "bed_temp": 60,
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY"
}

注意:自动定向以优化打印(最小化支撑等)是一项复杂任务,通常由切片器 GUI(如 OrcaSlicer 或 PrusaSlicer)处理,并未在此服务器中实现。

点击展开打印机控制工具

打印机控制工具

get_printer_status

获取 3D 打印机的当前状态。

json 复制代码
{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY"
}

对于 Bambu 打印机,目前仅确认 MQTT 连接。

list_printer_files

列出打印机上可用的文件。

json 复制代码
{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY"
}

对于 Bambu 打印机,通过 FTP 列出 gcodes 目录中的文件。

upload_gcode

上传 G-code 文件到打印机。

json 复制代码
{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY",
  "filename": "my_print.gcode",
  "gcode": "G28\nG1 X100 Y100 Z10 F3000\n...",
  "print": true
}

对于 Bambu 打印机,通过 FTP 上传到 gcodes 目录。无法自动开始打印。

start_print

开始打印打印机上已有的文件。

json 复制代码
{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY",
  "filename": "my_print.gcode"
}

不推荐用于 Bambu 打印机。 对于 Bambu .3mf 文件,请使用 print_3mf

cancel_print

取消当前打印任务。

json 复制代码
{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY"
}

对于 Bambu 打印机,通过 MQTT 发送 stop_print 命令。

set_printer_temperature

设置打印机组件的温度。

json 复制代码
{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY",
  "component": "extruder",
  "temperature": 200
}

不支持通过直接 MQTT 命令为 Bambu 打印机设置。

点击展开 Bambu 特定工具

Bambu 特定工具

通过 FTP 将 .3mf 文件上传到 Bambu 打印机,并通过 MQTT 命令启动打印任务。允许覆盖一些打印参数,例如 AMS 映射。

json 复制代码
{
  "three_mf_path": "/path/to/your_model.3mf",
  "host": "your_bambu_ip", // 如果默认设置,则可选
  "bambu_serial": "YOUR_SERIAL", // 如果默认设置,则可选
  "bambu_token": "YOUR_TOKEN", // 如果默认设置,则可选
  // 可选覆盖:
  "use_ams": true, // 默认:true
  "ams_mapping": [0, 1, 2, 3], // AMS 插槽索引数组
  "bed_leveling": true, // 默认:true
  "flow_calibration": false, // 默认:false
  "vibration_calibration": false, // 默认:false
  "timelapse": false // 默认:false
}

注意:通过此工具覆盖切片器设置(例如层高或温度)不受打印机的 MQTT 命令支持。在生成 .3mf 文件之前应用这些更改。

可用资源

点击展开打印机资源

打印机资源

  • printer://{host}/status - 3D 打印机的当前状态(目前对 Bambu 有限)
  • printer://{host}/files - 3D 打印机上可用的文件列表(Bambu 使用 FTP)
  • printer://{host}/file/{filename} - 特定 G-code 文件的内容(仅检查 Bambu 是否存在)
点击展开 Bambu 预设资源

Bambu 预设资源

如果 BAMBU_STUDIO_CONFIG_PATH 环境变量设置为您的 Bambu Studio 用户设置目录,您可以读取保存的预设。

  • preset://bambu/machine/{preset_name} - 读取机器预设文件(例如 Bambu Lab P1S 0.4 nozzle.json
  • preset://bambu/filament/{preset_name} - 读取耗材预设文件(例如 Generic PLA.json
  • preset://bambu/process/{preset_name} - 读取过程预设文件(例如 0.20mm Standard @BBL P1S.json

示例用法:
"读取我的 Bambu 过程预设 '0.16mm Optimal @BBL P1S' 的内容"
(Claude 会调用 ReadResource 并传入 preset://bambu/process/0.16mm%20Optimal%20%40BBL%20P1S

Claude 示例命令

以下是连接 MCP 服务器后可以提供给 Claude 的一些示例命令:

打印机控制

  • “我的 3D 打印机当前状态是什么?”
  • “给我看看打印机上的文件列表。”
  • “上传这个 G-code 到我的打印机:[G-code 内容]”
  • “开始打印名为 'benchy.gcode' 的文件。”
  • “取消当前打印任务。”
  • “将挤出机温度设置为 200°C。”
  • “将热床温度设置为 60°C。”

STL 操作和打印

  • “把这个 STL 文件的底座延长 2 英寸,然后发送到切片器并在我的打印机上排队。”
  • “将 model.stl 的底座延长 1.5 英寸。”
  • “将这个 STL 文件按 150% 统一缩放。”
  • “将 model.stl 的宽度增加一倍,但保持高度不变。”
  • “将这个模型绕 Z 轴旋转 90 度。”
  • “将这个 STL 模型向上移动 5mm 以在其下方创建间隙。”
  • “能否只修改模型的顶部部分,使其大 20%?”
  • “分析这个 STL 文件并告诉我它的尺寸和详细信息。”
  • “生成这个 STL 文件的可视化,让我看看它的样子。”
  • “从不同角度创建我的模型的 SVG 可视化。”
  • “使这个模型的底座更宽而不改变其高度。”
  • “使用 PrusaSlicer 切片修改后的 STL 文件。”
  • “确认 G-code 中的温度是否为挤出机 200°C 和热床 60°C。”
  • “处理这个 STL 文件,将底座延长 2 英寸,切片,并开始打印,但首先要确认温度。”
  • “在 Bambu 打印机上打印 ~/Downloads/my_model.3mf。”
  • “使用 AMS 插槽 0 和 2 将 ~/Desktop/calibration_cube.3mf 上传到 Bambu 打印机,并关闭热床调平。”
  • “取消我的 Bambu P1S 上的打印任务。”
  • “我的 Bambu 耗材预设 'Generic PETG' 的设置是什么?”
  • “显示我的 Bambu 过程预设。”

Bambu Lab 打印机限制

由于 Bambu Lab 打印机 API 的性质,存在一些限制:

  1. 开始打印:开始打印需要 3MF 项目文件路径、gcode 文件名、打印名称和 MD5 哈希值。此服务器中的简化 API 尚未完全支持此功能。

  2. 温度控制:Bambu API 不提供直接方法来设置温度。这需要自定义 G-code 命令。

  3. 文件管理:文件必须上传到打印机的“gcodes”目录。

  4. FTP 安全性:文件操作目前使用打印机的 FTP 服务器,可能是不安全的(纯 FTP)。

  5. 参数覆盖:只有 MQTT project_file 命令支持的参数可以通过 print_3mf 工具覆盖(例如 AMS 使用、校准标志)。切片器设置(如层高或温度)不能通过此命令在打印时更改。

  6. 状态更新:通过 MQTT 进行完整的实时状态监控需要进一步实现。

限制和注意事项

内存使用

  • 大型 STL 文件:处理大型或复杂的 STL 文件可能会消耗大量内存。在操作过程中,整个 STL 几何体被加载到内存中。
  • 多重操作:顺序运行多个 STL 操作(尤其是大文件)可能会导致内存累积,如果垃圾回收没有及时跟上。
  • MCP 环境:由于这是作为 MCP 服务器运行,请注意 Claude 的 MCP 环境有内存限制。对非常大的 STL 文件进行复杂操作可能会导致内存不足问题。

STL 操作限制

  • 部分修改:部分修改功能在较简单的几何体上效果最佳。复杂或非流形网格可能会产生意外结果。
  • 底座扩展:底座扩展算法通过在模型下方添加新几何体来工作。对于底部复杂的模型,结果可能不完美。
  • 错误处理:虽然我们增加了健壮的错误处理,但某些边缘情况下的复杂 STL 文件仍可能引起问题。

可视化限制

  • SVG 表示:SVG 可视化是简化的示意图表示,不是真正的 3D 渲染。
  • 复杂模型:对于非常复杂的模型,可视化可能无法准确表示所有细节。

性能考虑

  • 切片操作:外部切片器进程可能会消耗大量 CPU,并且对于复杂模型可能需要相当长的时间。
  • 进度报告:对于大文件,进度更新可能在某些处理阶段显得停滞。

测试建议

  • 从小型 STL 文件(<10MB)开始测试功能
  • 处理大文件时监控内存使用情况
  • 在简单几何体上测试修改,然后再尝试复杂几何体
  • 考虑在具有至少 4GB 可用 RAM 的系统上运行较大的操作

徽章

徽章 描述
npm 版本 npm 上的当前包版本
许可证: GPL-2.0 该项目