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

44 lines
No EOL
1.6 KiB
Markdown

## 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.
```mermaid
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
```