executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
prepare-print-modelExport + optimize 3D models for FDM/SLA printing: STL/3MF export, mesh integrity verify, wall thickness check, support gen, slicing. Use → CAD/ modeling export for 3D print, verify STL/3MF printable before slice, troubleshoot fail-to-slice models, optimize part orientation for strength/ finish, convert formats preserving printability.
Independent GitHub snapshot · Automated classification · Original documentation governs
Export + optimize 3D models for additive manufacturing. CAD/modeling export → mesh repair → printability analysis → support gen → slicer config. Ensures models manifold, adequate wall thickness, properly oriented for strength + quality.
fdm, sla, sls)pla, petg, abs, standard-resin)cura, prusaslicer, orcaslicer, chitubox)Export 3D model in suitable format:
FDM/SLA: If starting from CAD (Fusion 360, SolidWorks) Export as: STL (binary) or 3MF Resolution: High (triangle count sufficient for detail) Units: mm (verify scale)
Example export settings: STL: Binary format, refinement 0.1mm 3MF: Include color/material data if using multi-material printer
→ Model exported w/ appropriate resolution (0.1mm chord tolerance for mech parts, 0.05mm for organic).
If err: check model fully defined (no construction geometry), no missing faces, all components visible.
Mesh manifold + printable:
# Install mesh repair tools if needed
# sudo apt install meshlab admesh
# Check STL file for errors
admesh --check model.stl
# Look for:
# - Non-manifold edges: 0 (every edge connects exactly 2 faces)
# - Holes: 0
# - Backwards/inverted normals: 0
# - Degenerate facets: 0
Common issues:
→ Report shows 0 errors, or errors repairable.
If err: repair mesh auto or manual:
# Automatic repair with admesh
admesh --write-binary-stl=model_fixed.stl \
--exact \
--nearby \
--remove-unconnected \
--fill-holes \
--normal-directions \
model.stl
# Or use meshlab GUI for manual inspection/repair
meshlab model.stl
# Filters → Cleaning and Repairing → Remove Duplicate Vertices
# Filters → Cleaning and Repairing → Remove Duplicate Faces
# Filters → Normals → Re-Orient all faces coherently
Auto repair fails → return to source, fix modeling errors (coincident vertices, open edges, overlapping bodies).
Verify min wall thickness for process:
Min wall thickness by process:
| Process | Min Wall | Recommended Min | Structural Parts |
|---|---|---|---|
| FDM (0.4mm nozzle) | 0.8mm | 1.2mm | 2.4mm+ |
| FDM (0.6mm nozzle) | 1.2mm | 1.8mm | 3.6mm+ |
| SLA (standard) | 0.4mm | 0.8mm | 2.0mm+ |
| SLA (engineering) | 0.6mm | 1.2mm | 2.5mm+ |
| SLS (nylon) | 0.7mm | 1.0mm | 2.0mm+ |
Check wall thickness visually in slicer:
For precise measurement, use CAD software:
→ All walls meet min thickness for process. Thin walls flagged.
If err: return to CAD + thicken, or:
Pick orientation → optimize strength, finish, support usage:
Decision matrix:
Strength:
Surface finish:
Min supports:
Load direction analysis:
If part experiences:
- Tensile load along axis → print with layers perpendicular to axis
- Compressive load → layers can be parallel (less critical)
- Bending moment → layers perpendicular to neutral axis
- Shear → avoid layer interfaces parallel to shear direction
→ Orientation chosen w/ explicit rationale for strength, finish, or support tradeoffs.
If err: no orientation satisfies all → prioritize: functional strength → dimensional accuracy → surface finish → support min.
Auto or manual supports for overhangs:
Support angle thresholds:
Support types:
Tree supports (FDM, recommended):
Linear supports (FDM, traditional):
Heavy supports (SLA):
Interface layers:
In slicer (PrusaSlicer example): Print Settings → Support material
→ Supports gen'd for all overhangs > threshold, preview shows no floating geometry.
If err: auto supports inadequate:
Set process-appropriate params:
FDM layer heights:
SLA layer heights:
Key params by process:
FDM:
layer_height: 0.2mm
line_width: 0.4mm (= nozzle diameter)
perimeters: 3-4 (structural), 2 (cosmetic)
top_bottom_layers: 5 (0.2mm layers = 1mm solid)
infill_percentage: 20% (cosmetic), 40-60% (functional)
infill_pattern: gyroid (FDM), grid (basic)
print_speed: 50mm/s perimeter, 80mm/s infill
temperature: material-specific (see select-print-material skill)
SLA:
layer_height: 0.05mm
bottom_layers: 6-8 (strong bed adhesion)
exposure_time: material-specific (2-8s per layer)
bottom_exposure_time: 30-60s
lift_speed: 60-80mm/min
retract_speed: 150-180mm/min
→ Profile w/ process-appropriate defaults, modified for material/model reqs.
If err: unsure → start w/ slicer's default "Standard Quality" profile for material, iterate.
Inspect sliced G-code:
In slicer:
Red flags:
→ Continuous perimeters, proper infill, clean travels, no obvious defects.
If err: adjust slicer + re-slice. Common fixes:
Save G-code w/ descriptive name:
# Naming convention:
# <part_name>_<material>_<layer_height>_<profile>.gcode
# Example: bracket_petg_0.2mm_standard.gcode
# Verify G-code:
grep "^;PRINT_TIME:" model.gcode # Check estimated time
grep "^;Filament used:" model.gcode # Check material usage
head -n 50 model.gcode | grep "^M104\|^M140" # Verify temperatures
# Expected first layer temp:
# M140 S85 (bed temp for PETG)
# M104 S245 (hotend temp for PETG)
Pre-print checklist:
→ G-code saved w/ embedded metadata, temps verified, time/material reasonable.
If err: print time excessive (>12 hrs):