Skip to main content

gcode

Generate, inspect, dry-run, and statically validate plain FDM `.gcode` from 3D mesh files by orchestrating real slicer CLIs. Use when Codex needs to slice `.stl`, `.obj`, unsliced `.3mf`, `.ply`, `.glb`, or `.gltf` into printer-profiled G-code, discover local slicer backends, inspect whether a mesh is slice-ready, or validate generated G-code before any printer-specific handoff.

설치로 이동

소스 정보

저장소
autonomous-ai/openharness
최근 소스 활동
2026년 9월 17일 03:35
감지된 SKILL.md 언어
영어
스타
822
포크
67

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
6 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
gcode
description
Generate, inspect, dry-run, and statically validate plain FDM `.gcode` from 3D mesh files by orchestrating real slicer CLIs. Use when Codex needs to slice `.stl`, `.obj`, unsliced `.3mf`, `.ply`, `.glb`, or `.gltf` into printer-profiled G-code, discover local slicer backends, inspect whether a mesh is slice-ready, or validate generated G-code before any printer-specific handoff.
# G-code Provenance: maintained in [earthtojake/text-to-cad](https://github.com/earthtojake/text-to-cad). Use the installed local skill files as the runtime source of truth; the repository link is only for provenance and release review. Use this skill for plain `.gcode` generation from mesh files. It is printer-agnostic and never uploads, starts, or packages print jobs. ## Workflow 1. Confirm the input is a supported mesh: `.stl`, `.obj`, unsliced `.3mf`, `.ply`, `.glb`, or `.gltf`. 2. Require an explicit printer/profile wrapper JSON. Do not invent real-printer profiles. 3. Discover slicer backends when the backend is unknown: ```bash python scripts/gcode_tool.py discover ``` 4. Inspect the input: ```bash python scripts/gcode_tool.py inspect --input path/to/model.stl --json ``` 5. Dry-run the slicer command before executing: ```bash python scripts/gcode_tool.py slice \ --input path/to/model.stl \ --output /tmp/model.gcode \ --profile path/to/profile.json \ --backend auto \ --dry-run ``` 6. Execute only after the dry-run command and profile are appropriate: ```bash python scripts/gcode_tool.py slice \ --input path/to/model.stl \ --output /tmp/model.gcode \ --profile path/to/profile.json \ --backend auto \ --execute ``` 7. Validate the generated G-code: ```bash python scripts/gcode_tool.py validate \ --gcode /tmp/model.gcode \ --profile path/to/profile.json \ --json ``` ## Profile Contract Every slice requires a wrapper profile JSON with an absolute native slicer profile path: ```json { "backend": "orcaslicer", "native_config": "/absolute/path/to/native-slicer-profile", "machine": { "name": "Example Printer", "bed_size_mm": [180, 180], "z_height_mm": 180, "motion_bounds_mm": { "x": [0, 180], "y": [0, 180], "z": [0, 180] } }, "filament": { "type": "PLA", "nozzle_temp_c": 220, "bed_temp_c": 65 } } ``` The wrapper supplies validation bounds and backend selection. `machine.motion_bounds_mm` is optional; omit it for the default `0..bed_size` and `0..z_height` bounds, or set it from a native printer profile when start/end G-code intentionally uses safe wipe/purge positions outside the printable area. The native slicer profile remains the source of detailed process, printer, and filament behavior. For OrcaSlicer, use `native_settings` and `native_filaments` when the real profile is split across machine, process, and filament JSON files. Keep `native_config` as an absolute path to the primary native profile for compatibility: ```json { "backend": "orcaslicer", "native_config": "/absolute/path/to/machine-or-process.json", "native_settings": [ "/absolute/path/to/machine.json", "/absolute/path/to/process.json" ], "native_filaments": [ "/absolute/path/to/filament.json" ], "machine": { "name": "Example Printer", "bed_size_mm": [180, 180], "z_height_mm": 180 }, "filament": { "type": "PLA", "nozzle_temp_c": 220, "bed_temp_c": 65 } } ``` ## Backends And Inputs Preferred slicer backend order is `orcaslicer`, `prusa-slicer`, then `curaengine`. Prefer installing OrcaSlicer when no preferred backend is available; on macOS use `brew install --cask orcaslicer` and then rerun `discover`. The helper checks both `PATH` and the usual `/Applications/OrcaSlicer.app` cask location. Bambu Studio may be reported by discovery as available but is not preferred because its CLI export path has shown macOS instability. Pass `.stl`, `.obj`, and unsliced `.3mf` directly to the slicer. Convert `.ply`, `.glb`, and `.gltf` to temporary STL at execution time with optional `trimesh`; if `trimesh` is unavailable, ask the user to install it or provide `.stl`, `.obj`, or unsliced `.3mf`. Reject `.step`, `.stp`, `.dxf`, `.svg`, `.urdf`, and `.sdf` in v1. `inspect` and `slice` fail with a structured `remediation` object naming the skill and command that produce a sliceable mesh; use it instead of inferring a conversion workflow: - `.step`, `.stp`: boundary-representation CAD, not a mesh. Export an STL sidecar with `$cad` (`cadgen stl build <input.step> <output>.stl` — the door takes the STEP document; a model script is refused, run `python <model>.py` first), then slice the exported `.stl` here. - `.dxf`, `.svg`: 2D drawings with no 2D-to-mesh conversion in this toolchain. Model the 3D solid in `$cad` as a `@step` model script and export an STL sidecar, then slice that. If the part is a flat cut rather than a print, use `$sendcutsend` instead of this skill. - `.urdf`, `.sdf`: robot descriptions that reference per-link mesh files. Slice the referenced `.stl`/`.obj` meshes one at a time; regenerate stale or missing ones from the owning CAD source with `$cad` first. Use `$urdf` or `$sdf` for the robot description itself. Read `references/slicer-backends.md` when backend behavior, profile expectations, or source links matter. ## Validation Always validate generated G-code before handing it to printer-specific workflows. The validator checks for non-empty content, temperature commands, movement commands, extrusion moves, XYZ bounds, and unknown command warnings. Read `references/gcode-validation.md` when interpreting validation output or deciding whether a warning is acceptable. ## Bambu Boundary This skill generates plain `.gcode` only. It does not create Bambu `.gcode.3mf` archives and does not contact printers. For Bambu upload/start workflows, hand off the validated plain `.gcode` to `$bambu-labs`. Let `$bambu-labs` choose the printer-specific LAN handoff, such as an A1 Mini template project or an explicitly enabled bambox project package.
GitHub에서 보기