OrcaSlicer/doc/developer-reference/slicing-hierarchy.md
Ian Bassi 33dc7bc1f2
Some checks are pending
Build all / Build All (push) Waiting to run
Build all / Flatpak (push) Waiting to run
Publish docs to Wiki / Publish docs to Wiki (push) Waiting to run
Wiki Update part 4 (#9872)
* How to wiki

* Local images + pressure-advance realocation

* fill patterns WIP

+ Patch Until they fix this: https://github.com/orgs/community/discussions/118296

* Wiki images update 8fff1ca

Updated images with new style from commit 8fff1ca (pr: #9797)

* Internal Wiki Links + standardization

* Update Flow Calibration image

Co-Authored-By: Dowsha3d <216038220+dowsha3d@users.noreply.github.com>

* Seam wiki merge

* Updated Wiki Home

* MD Final lines

* How to index

---------

Co-authored-by: Dowsha3d <216038220+dowsha3d@users.noreply.github.com>
2025-06-13 23:09:05 +08:00

1.6 KiB

Slicing Call Hierarchy

The Slicing logic is not the easiest to locate in the code base. Below is a flow diagram of function calls that are made after clicking the Slice Plate button in the UI. Most of the processing happens in different threads. Note the calls after BackgroundSlicingProcess::start(), but this is how you can find the slicing logic.

flowchart TD
    A["Slice plate"] --> B["void Plater::priv::on_action_slice_plate(SimpleEvent&)"]
    B --> C["void Plater::reslice()"]
    C --> D["bool Plater::priv::restart_background_process(unsigned int state)"]
    D --> E["bool BackgroundSlicingProcess::start()"]
    E --> F["void BackgroundSlicingProcess::thread_proc_safe_seh_throw()"]
    F --> G["unsigned long BackgroundSlicingProcess::thread_proc_safe_seh()"]
    G --> H["void BackgroundSlicingProcess::thread_proc_safe()"]
    H --> I["void BackgroundSlicingProcess::thread_proc()"]
    I --> J["void BackgroundSlicingProcess::call_process_seh_throw(std::exception_ptr &ex)"]
    J --> K["unsigned long BackgroundSlicingProcess::call_process_seh(std::exception_ptr &ex)"]
    K --> L["void BackgroundSlicingProcess::call_process(std::exception_ptr &ex)"]
    L --> M["void BackgroundSlicingProcess::process_fff()"]
    M --> N["void Print::process(long long *time_cost_with_cache, bool use_cache)"]
    N --> O["void PrintObject::make_perimeters()"]
    O --> P["void PrintObject::slice()"]

    %% Labels for libraries
    subgraph G1 [libSlic3r_gui]
        B
        C
        D
        E
        F
        G
        H
        I
        J
        K
        L
        M
    end

    subgraph G2 [libSlic3r]
        N
        O
        P
    end