OrcaSlicer 切片安装配置手册 目录耗材预设文件bambustudio导出命令20个切片工具bambustudio 切片orca-slicer介绍orca-slicer下载编译linux安装缩放自动切片导出预设包打印机预设包导出json导出耗材自动切片带进度耗材预设文件Polymaker Filament Presetsbambustudio导出命令bambu-studio.exe --slice 0 --allow-newer-file --load-settings printer.json --load-filaments basic.json --export-3mf output.gcode.3mf myy.3mf20个切片工具(9 封私信) 20个最好的3D打印切片工具【slicer】 - 知乎bambustudio 切片三个json文件添加keytype: machine,type: filament,如果你之后还想用工艺预设process对应的 JSON 里则要写jsontype: process,T65535orca-slicer介绍OrcaSlicer CLI 的设计本身就是打印机无关的它通过加载不同的机器配置文件来适配不同的打印机。orca-slicer下载https://github.com/OrcaSlicer/OrcaSlicer/releases编译./build_linux.sh -u rm -rf deps/build ./build_linux.sh -dsilinux安装sudo apt install flatpak sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo flatpak install --user ./OrcaSlicer-Linux-flatpak_V2.4.2_x86_64.flatpaklinux安装2flatpak uninstall com.orcaslicer.OrcaSlicer flatpak install --user flathub com.orcaslicer.OrcaSlicer官方只有arm64版本的。https://orcaslicers.co/download/缩放orca-slicer.exe --slice 0 --scale 1.5 --export-3mf cyh.3mf test_output.3mf自动切片orca-slicer.exe --slice 0 --export-3mf test_output.3mf cyh.3mfE:\soft\OrcaSlicer_Windows_V2.4.2_x64_portable\orca-slicer.exe --slice 0 --load-settings 机器配置.json;工艺配置.json --load-filaments 耗材配置.json --export-3mf 输出.gcode.3mf 模型文件.3mf关键参数说明--slice 00 表示切片所有盘。--load-settings加载机器和工艺配置多个文件用分号隔开。--load-filaments加载耗材配置。--export-3mf导出包含 G-code 的 3MF 文件。导出预设包打印机预设包导出json保存下来的是一个打包文件比如.orca_printer你需要把它解压就能得到里面独立的machine.json、process.json、filament.json文件。导出耗材不过默认配置不一定匹配你用的具体耗材。更稳妥的做法是从 GUI 导出一份打开 OrcaSlicer选好耗材比如 Bambu PLA Basic在耗材设置页点Save/Export导出成 JSON把文件放到你方便调用的位置自动切片带进度import os import sys import json import threading import subprocess from typing import Callable, Dict class OrcaSlicerRunner: def __init__( self, stl_path: str, printer_json: str, process_json: str, filament_json: str, out_3mf: str, pipe_path: str /tmp/orca_progress.pipe, ): self.stl_path stl_path self.printer_json printer_json self.process_json process_json self.filament_json filament_json self.out_3mf out_3mf self.pipe_path pipe_path self.proc: subprocess.Popen | None None self.done_event threading.Event() self.success: bool False def _pipe_reader(self, on_progress: Callable[[Dict], None]): 子线程读取FIFO管道解析Orca输出 try: with open(self.pipe_path, r) as fifo: for line in fifo: line line.strip() if not line: continue try: msg json.loads(line) on_progress(msg) # 切片完成标记 if msg.get(message) All done, Success or msg.get(plate_percent) 100: self.success True self.done_event.set() break elif msg.get(type) error: self.success False self.done_event.set() break except json.JSONDecodeError: continue except Exception as e: print(f管道读取异常: {e}, filesys.stderr) self.success False self.done_event.set() def run_async(self, on_progress: Callable[[Dict], None]): 异步启动切片不阻塞主线程进度回调由子线程触发 # 清理旧管道 if os.path.exists(self.pipe_path): os.unlink(self.pipe_path) # 创建命名管道 FIFO os.mkfifo(self.pipe_path, mode0o600) # flatpak orca-slicer 完整命令 cmd [ flatpak, run, --user, --filesystem/data/lbg/project/orcaslicer, --filesystem/tmp, --commandorca-slicer, com.orcaslicer.OrcaSlicer, --debug, 4, --logfile, /tmp/orca_cli.log, --slice, 0, --load-settings, self.printer_json, --load-settings, self.process_json, --load-filaments, self.filament_json, --export-3mf, self.out_3mf, --pipe, self.pipe_path, self.stl_path ] print(启动Orca切片命令) print( .join(cmd)) # 启动管道读取线程 reader_thread threading.Thread( targetself._pipe_reader, args(on_progress,), daemonTrue ) reader_thread.start() # 启动 orca-slicer 子进程 self.proc subprocess.Popen( cmd, stdoutsubprocess.PIPE, stderrsubprocess.PIPE, textTrue ) # 单独线程等待子进程退出防止僵尸进程 def wait_proc(): stdout, stderr self.proc.communicate() retcode self.proc.returncode print(fOrca进程退出码: {retcode}) if stdout: print(fstdout:\n{stdout}) if stderr: print(fstderr:\n{stderr}) self.done_event.set() threading.Thread(targetwait_proc, daemonTrue).start() return self def wait(self, timeoutNone) - bool: 阻塞等待切片完成返回是否成功 self.done_event.wait(timeouttimeout) # 清理管道 if os.path.exists(self.pipe_path): os.unlink(self.pipe_path) return self.success # ---------------- 示例入口 ---------------- if __name__ __main__: # 路径改成你自己的 runner OrcaSlicerRunner( stl_path/data/lbg/project/orcaslicer/ccc.stl, printer_json/data/lbg/project/orcaslicer/printer_full.json, process_json/data/lbg/project/orcaslicer/process_full.json, filament_json/data/lbg/project/orcaslicer/filament_full.json, out_3mf/data/lbg/project/orcaslicer/ccc_os.gcode.3mf, pipe_path/tmp/orca_progress.pipe ) # 进度回调函数每次Orca输出进度都会调用 def progress_callback(msg: dict): print(f[Orca进度] {msg}) if msg.get(type) progress: pct msg[progress] print(f当前切片进度: {pct:.1f}%) # 异步启动切片主线程可以继续做别的工作 runner.run_async(on_progressprogress_callback) print(✅ 切片任务已后台启动主线程继续执行其他任务...) # 这里写你切片过程中要并行跑的业务代码 import time cnt 0 while not runner.done_event.is_set(): print(fmain thread... time {cnt} s) time.sleep(1) cnt 1 # # 等待完成也可以不用wait由回调触发后续任务 ok runner.wait() if ok: print( 切片成功后续业务开始执行上传/推送到P2S等) # 切片完成后的逻辑写在这里 # e.g. send_to_bambu(), copy gcode, 数据库更新 else: print(❌ 切片失败请查看 /tmp/orca_cli.log)