OrcaSlicer/CLAUDE.md
2025-07-26 15:08:48 +08:00

4.1 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Overview

OrcaSlicer is an open-source 3D slicer application forked from Bambu Studio, built using C++ with wxWidgets for the GUI and CMake as the build system. The project uses a modular architecture with separate libraries for core slicing functionality, GUI components, and platform-specific code.

Build Commands

Building on macOS

# Build everything (dependencies and slicer)
./build_release_macos.sh

# Build only dependencies
./build_release_macos.sh -d

# Build only slicer (after deps are built)
./build_release_macos.sh -s

# Use Ninja generator for faster builds
./build_release_macos.sh -x

# Build for specific architecture
./build_release_macos.sh -a arm64    # or x86_64

Building on Linux

# Build everything
./build_linux.sh

# Check system resources first (build requires 10GB+ RAM and disk)
./build_linux.sh -r    # skip resource checks

Build System

  • Uses CMake with minimum version 3.13
  • Primary build directory: build/
  • Dependencies are built in deps/build/
  • The build process is split into dependency building and main application building

Testing

Tests are located in the tests/ directory and can be run via CMake/CTest after building.

Architecture

Core Libraries

  • libslic3r/: Core slicing engine and algorithms

    • Contains the main slicing logic, geometry processing, G-code generation
    • Platform-independent slicing functionality
    • Key classes: Print, PrintObject, Layer, GCode, Config
  • src/slic3r/: Main application framework

    • GUI application entry points and main loops
    • Integration between libslic3r and the GUI

GUI Components

  • Built with wxWidgets framework
  • Located primarily in src/slic3r/GUI/
  • Main application class: GUI_App
  • Uses OpenGL for 3D visualization

Key Modules

  • 3MF Format Support: src/libslic3r/Format/3mf.cpp - 3MF file format reading/writing
  • G-code Processing: src/libslic3r/GCode/ - G-code generation and processing
  • Geometry: src/libslic3r/Geometry.cpp - 2D/3D geometry operations
  • Print Configuration: src/libslic3r/PrintConfig.cpp - Print settings and presets
  • Model Handling: src/libslic3r/Model.cpp - 3D model representation and manipulation

External Dependencies

  • Clipper: 2D polygon clipping operations
  • libigl: Geometry processing library
  • OpenVDB: Voxel data structures (optional)
  • TBB: Threading Building Blocks for parallelization
  • wxWidgets: Cross-platform GUI toolkit
  • OpenGL: 3D graphics rendering

File Organization

Configuration and Profiles

  • resources/profiles/: Printer and material profiles organized by manufacturer
  • resources/printers/: Printer-specific configurations and G-code templates

Internationalization

  • localization/i18n/: Translation files
  • resources/i18n/: Runtime language resources

Platform-Specific Code

  • Platform abstractions in src/libslic3r/Platform.cpp
  • macOS-specific utilities in src/libslic3r/MacUtils.mm

Development Workflow

Code Style

  • C++17 standard
  • Use existing patterns found in libslic3r for consistency
  • Follow existing naming conventions (PascalCase for classes, snake_case for functions)

Common Tasks

  • Adding new print settings: Extend PrintConfig.cpp and related GUI components
  • Modifying slicing algorithms: Work in libslic3r/ core modules
  • GUI changes: Modify components in src/slic3r/GUI/
  • Adding printer support: Add profiles in resources/profiles/

Dependencies Management

Dependencies are managed through CMake and built separately from the main application. The deps/ directory contains dependency build configurations.

Important Notes

  • The codebase is large and complex - use search tools to navigate effectively
  • Many algorithms are performance-critical - consider computational complexity
  • The project maintains backward compatibility with various file formats
  • Cross-platform compatibility is important (Windows, macOS, Linux)
  • The GUI uses a custom theming system supporting light/dark modes