mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-06 06:27:33 -06:00
Wiki + Readme: MD security and improvements (#9807)
* Wiki + Readme: MD, security and improvements Standardized MD GitHub Wiki format Removed outdated and malicious links Modularized calibrations Suggested calibration order added Minor bug fixes Image improvements and corrections Added winget commands Completed previous WIPs Added new WIPs Removed obsolete references Visual Changes Co-Authored-By: Noisyfox <timemanager.rick@gmail.com> Co-Authored-By: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com> Co-Authored-By: Nico Domino <7415984+ndom91@users.noreply.github.com> Co-Authored-By: Martin Ulmschneider <7497782+mulmschneider@users.noreply.github.com> Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com> * MD Indentation + images update --------- Co-authored-by: Noisyfox <timemanager.rick@gmail.com> Co-authored-by: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com> Co-authored-by: Nico Domino <7415984+ndom91@users.noreply.github.com> Co-authored-by: Martin Ulmschneider <7497782+mulmschneider@users.noreply.github.com> Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
This commit is contained in:
parent
0242e9462b
commit
4e59b0abc6
44 changed files with 1192 additions and 690 deletions
|
@ -1,10 +1,13 @@
|
|||
# Guide: Develop Profiles for OrcaSlicer
|
||||
|
||||
## Introduction
|
||||
|
||||
This guide will help you develop profiles for OrcaSlicer.
|
||||
|
||||
## High-level Overview
|
||||
|
||||
OrcaSlicer uses JSON files to store profiles. There are four types of profiles:
|
||||
|
||||
1. Printer model (type `machine_model`). Example: `Orca 3D Fuse1.json`
|
||||
2. Printer variant (type `machine`). Example: `Orca 3D Fuse1 0.2 nozzle.json`
|
||||
3. Filament (type `filament`). Example: `Generic PLA @Orca 3D Fuse1@.json`
|
||||
|
@ -15,6 +18,7 @@ Additionally, there is an overall meta file for each vendor (`Orca 3D.json`).
|
|||
For easier understanding, let's consider a scenario with a printer manufacturer called `Orca 3D`. The manufacturer offers one printer model called `Fuse 1`, which supports 0.2/0.4/0.6/0.8mm nozzles and common market filaments.
|
||||
|
||||
In this case:
|
||||
|
||||
- Vendor profile: `Orca 3D`
|
||||
- Printer profile: `Orca 3D Fuse1`
|
||||
- Printer variant profile: `Orca 3D Fuse1 0.4 nozzle`
|
||||
|
@ -23,6 +27,7 @@ In this case:
|
|||
|
||||
The profile name should be same as the filename without the `.json` extension in principal.
|
||||
Naming conventions:
|
||||
|
||||
1. Vendor profile: `vendor_name.json`
|
||||
2. Printer profile: `vendor_name` + `printer_name` + `.json`
|
||||
3. Printer variant profile: `vendor_name` + `printer_variant_name` + `.json` (where `printer_variant_name` typically includes `printer_name` + `nozzle_diameter`)
|
||||
|
@ -33,39 +38,43 @@ Naming conventions:
|
|||
|
||||
Profiles should be structured in the following way under the OrcaSlicer installation directory:
|
||||
|
||||
```
|
||||
```plaintext
|
||||
resources\profiles\
|
||||
- Orca 3D.json
|
||||
- Orca 3D\
|
||||
- machine\
|
||||
- Orca 3D Fuse1.json
|
||||
- Orca 3D Fuse1 0.2 nozzle.json
|
||||
- Orca 3D Fuse1 0.4 nozzle.json
|
||||
- process\
|
||||
- 0.10mm Standard @Orca 3D Fuse1 0.2.json
|
||||
- 0.20mm Standard @Orca 3D Fuse1 0.4.json
|
||||
- filament\
|
||||
- Generic PLA @Orca 3D Fuse1@.json
|
||||
├── Orca 3D.json
|
||||
└── Orca 3D\
|
||||
├── machine\
|
||||
│ ├── Orca 3D Fuse1.json
|
||||
│ ├── Orca 3D Fuse1 0.2 nozzle.json
|
||||
│ └── Orca 3D Fuse1 0.4 nozzle.json
|
||||
├── process\
|
||||
│ ├── 0.10mm Standard @Orca 3D Fuse1 0.2.json
|
||||
│ └── 0.20mm Standard @Orca 3D Fuse1 0.4.json
|
||||
└── filament\
|
||||
└── Generic PLA @Orca 3D Fuse1@.json
|
||||
```
|
||||
|
||||
**⚠️ NOTE 1**: Use short vendor names in filenames to avoid excessive length.
|
||||
> [!TIP]
|
||||
> Use short vendor names in filenames to avoid excessive length.
|
||||
|
||||
**⚠️ NOTE 2**: Filament profiles are **optional**. Create them only if the vendor has specifically tuned profiles for the given printer. See [Filament profiles](#filament-profiles) for details.
|
||||
> [!NOTE]
|
||||
> Filament profiles are **optional**. Create them only if the vendor has specifically tuned profiles for the given printer. See [Filament profiles](#filament-profiles) for details.
|
||||
|
||||
Template files for profiles are available in:
|
||||
|
||||
```
|
||||
```shell
|
||||
OrcaSlicer\resources\profiles_template\Template
|
||||
```
|
||||
|
||||
These templates can be used as a starting point for new printer, filament, and process profiles.
|
||||
|
||||
## Filament Profiles
|
||||
|
||||
OrcaSlicer features a global filament library called `OrcaFilamentLibrary`, which is automatically available for all printers. It includes generic filaments like `Generic PLA @System` and `Generic ABS @System` etc.
|
||||
|
||||
Printer vendors can override specific filaments in the global library for certain printer models by creating new filament profiles.
|
||||
Printer vendors can override specific filaments in the global library for certain printer models by creating new filament profiles.
|
||||
|
||||
Relationship diagram:
|
||||
|
||||
```mermaid
|
||||
graph TD;
|
||||
OrcaFilamentLibrary-->Orca_3D_filament;
|
||||
|
@ -73,9 +82,11 @@ graph TD;
|
|||
OrcaFilamentLibrary-->Vendor_B_filament;
|
||||
```
|
||||
|
||||
**NOTE**: Create new filament profiles only if you have truly specifically tuned the filament for the given printer. Otherwise, use the global library. The global library has a better chance to receive optimizations and updates from OrcaSlicer contributors, which will benefit users of all printers.
|
||||
> [!Important]
|
||||
> Create new filament profiles only if you have truly specifically tuned the filament for the given printer. Otherwise, use the global library. The global library has a better chance to receive optimizations and updates from OrcaSlicer contributors, which will benefit users of all printers.
|
||||
|
||||
### Adding Filament Profiles to the Global Library
|
||||
|
||||
In this section, we will discuss how to add a new filament profile into the global library.
|
||||
If you want to add a new generic profile into the global library, you need to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament` folder. If a base type already exists in the global library, you can use this file as a base profile by inheriting it.
|
||||
The following sample JSON file shows how to create a new generic filament profile `Generic PLA-GF @System` in the global library.
|
||||
|
@ -117,11 +128,13 @@ The following sample JSON file shows how to create a new generic filament profil
|
|||
}
|
||||
```
|
||||
|
||||
3. The last step is to validate the newly added filament profiles.
|
||||
3. The last step is to validate the newly added filament profiles see [Validate Profiles](#validate-profiles).
|
||||
|
||||
**⚠️ NOTE 1**: If the filament is compatible with AMS, ensure that the `filament_id` value **does not exceed 8 characters** to maintain AMS compatibility.
|
||||
> [!NOTE]
|
||||
> If the filament is compatible with AMS, ensure that the `filament_id` value **does not exceed 8 characters** to maintain AMS compatibility.
|
||||
|
||||
### Adding Filament Profiles to Printer Vendor Library
|
||||
|
||||
In this section, we will discuss how to add a new filament profile for a certain vendor.
|
||||
If you want to add a new filament profile, whether it's a brand new profile or a specialized version of a global filament profile for a given printer, you need to create a new file in the `resources\profiles\vendor_name\filament` folder. If a base type already exists in the global library, you can use this file as a base profile by inheriting it.
|
||||
Below is a sample JSON file showing how to create a specialized `Generic ABS` filament profile for the ToolChanger printer.
|
||||
|
@ -180,22 +193,23 @@ Please note that here we must leave the compatible_printers field non-empty, unl
|
|||
}
|
||||
```
|
||||
|
||||
**⚠️ NOTE 1**: If the filament is compatible with AMS, ensure that the `filament_id` value **does not exceed 8 characters** to maintain AMS compatibility.
|
||||
> [!NOTE]
|
||||
> If the filament is compatible with AMS, ensure that the `filament_id` value **does not exceed 8 characters** to maintain AMS compatibility.
|
||||
|
||||
## Process Profiles
|
||||
|
||||
Process profiles define print quality and behavior. They follow a structure similar to filament profiles:
|
||||
|
||||
* A common base file, e.g., `fdm_process_common.json`, acts as the parent.
|
||||
* Vendor-specific process profiles should inherit from the base using the `inherits` field.
|
||||
* Profiles are stored under:
|
||||
- A common base file, e.g., `fdm_process_common.json`, acts as the parent.
|
||||
- Vendor-specific process profiles should inherit from the base using the `inherits` field.
|
||||
- Profiles are stored under:
|
||||
|
||||
```
|
||||
```shell
|
||||
resources\profiles\vendor_name\process\
|
||||
```
|
||||
|
||||
* **There are no global process profiles**.
|
||||
* Each process profile includes a `"compatible_printers"` field with an array of compatible printer variant names.
|
||||
- **There are no global process profiles**.
|
||||
- Each process profile includes a `"compatible_printers"` field with an array of compatible printer variant names.
|
||||
|
||||
Example:
|
||||
|
||||
|
@ -214,17 +228,17 @@ Example:
|
|||
|
||||
## Printer Model Profiles
|
||||
|
||||
* Printer model profiles (type `machine_model`) describe the general printer information.
|
||||
* Example fields: `nozzle_diameter`, `bed_model`, `bed_texture`, `model_id`, etc.
|
||||
* Stored in:
|
||||
- Printer model profiles (type `machine_model`) describe the general printer information.
|
||||
- Example fields: `nozzle_diameter`, `bed_model`, `bed_texture`, `model_id`, etc.
|
||||
- Stored in:
|
||||
|
||||
```
|
||||
```shell
|
||||
resources\profiles\vendor_name\machine\
|
||||
```
|
||||
|
||||
* Each vendor's folder may contain an image named:
|
||||
- Each vendor's folder may contain an image named:
|
||||
|
||||
```
|
||||
```shell
|
||||
[machine_model_list.name]_cover.png
|
||||
```
|
||||
|
||||
|
@ -248,10 +262,10 @@ Example model profile:
|
|||
|
||||
## Printer Variant Profiles
|
||||
|
||||
* Printer variants (type `machine`) define specific nozzle configurations and mechanical details.
|
||||
* Each variant must inherit from a common base like `fdm_machine_common.json`.
|
||||
* Must list the compatible nozzle diameter in the `nozzle_diameter` array.
|
||||
* Example fields include `printer_model`, `printer_variant`, `default_print_profile`, `printable_area`, etc.
|
||||
- Printer variants (type `machine`) define specific nozzle configurations and mechanical details.
|
||||
- Each variant must inherit from a common base like `fdm_machine_common.json`.
|
||||
- Must list the compatible nozzle diameter in the `nozzle_diameter` array.
|
||||
- Example fields include `printer_model`, `printer_variant`, `default_print_profile`, `printable_area`, etc.
|
||||
|
||||
Example variant profile:
|
||||
|
||||
|
@ -275,8 +289,8 @@ Example variant profile:
|
|||
|
||||
## Models
|
||||
|
||||
* The `model` directory under the vendor folder is intended to behave similarly to `machine` profiles.
|
||||
* Used for additional printer-related 3D models or definitions, stored at:
|
||||
- The `model` directory under the vendor folder is intended to behave similarly to `machine` profiles.
|
||||
- Used for additional printer-related 3D models or definitions, stored at:
|
||||
|
||||
```
|
||||
resources\profiles\vendor_name\model\
|
||||
|
@ -325,19 +339,21 @@ Example:
|
|||
|
||||
You can validate your profiles using both the **OrcaSlicer profile validator** and the **Python validation script**. These tools are designed to check different aspects of the profiles, so both should be executed and pass without errors to ensure full compatibility.
|
||||
|
||||
**✅ Recommendation**: Always run **both** the OrcaSlicer validator and the Python script to ensure all aspects of the profiles are valid.
|
||||
> [!NOTE]
|
||||
> **✅ Recommendation**: Always run **both** the OrcaSlicer validator and the Python script to ensure all aspects of the profiles are valid.
|
||||
|
||||
### 1. OrcaSlicer Profile Validator
|
||||
|
||||
You can run OrcaSlicer to verify if the filament you just added is available and usable. You can also use the [Orca profile validator](https://github.com/SoftFever/Orca_tools/releases/tag/1) tool to help debug any errors.
|
||||
|
||||
**⚠️ NOTE 1**: You need to delete the `%appdata%/OrcaSlicer/system` folder to force OrcaSlicer to reload your latest changes.
|
||||
> [!IMPORTANT]
|
||||
> You need to delete the `%appdata%/OrcaSlicer/system` folder to force OrcaSlicer to reload your lastest changes.
|
||||
|
||||
The process is the same if you want to add a new brand filament profile into the global library. You need to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament\brand_name` folder. The only difference is that you should put the file into the brand's own subfolder.
|
||||
|
||||
#### Usage
|
||||
|
||||
```
|
||||
```shell
|
||||
-h [ --help ] help
|
||||
-p [ --path ] arg profile folder
|
||||
-v [ --vendor ] arg Vendor name. Optional, all profiles present in the folder will be validated if not specified
|
||||
|
@ -346,13 +362,13 @@ The process is the same if you want to add a new brand filament profile into the
|
|||
|
||||
#### Example
|
||||
|
||||
```
|
||||
```shell
|
||||
./OrcaSlicer_profile_validator -p ~/codes/OrcaSlicer/resources/profiles -l 2 -v Custom
|
||||
```
|
||||
|
||||
#### Sample result with errors
|
||||
|
||||
```
|
||||
```shell
|
||||
PS D:\codes\OrcaSlicer> ."D:/codes/OrcaSlicer/build/src/Release/OrcaSlicer_profile_validator.exe" --path d:\codes\OrcaSlicer\resources\profiles -l 2 -v Custom
|
||||
[2024-02-28 21:23:06.102138] [0x0000a4e8] [error] Slic3r::ConfigBase::load_from_json: parse d:\codes\OrcaSlicer\resources\profiles/Custom/machine/fdm_klipper_common.json got a nlohmann::detail::parse_error, reason = [json.exception.parse_error.101] parse error at line 9, column 38: syntax error while parsing object - unexpected string literal; expected '}'
|
||||
...
|
||||
|
@ -361,12 +377,13 @@ Validation failed
|
|||
|
||||
#### Sample result with success
|
||||
|
||||
```
|
||||
```shell
|
||||
PS D:\codes\OrcaSlicer\build\src\RelWithDebInfo> ."D:/codes/OrcaSlicer/build/src/Release/OrcaSlicer_profile_validator.exe" --path d:\codes\OrcaSlicer\resources\profiles -l 2 -v Custom
|
||||
Validation completed successfully
|
||||
```
|
||||
|
||||
**⚠️ NOTE 2**: Use `OrcaSlicer_profile_validator` on Ubuntu and `OrcaSlicer_profile_validator.exe` on Windows.
|
||||
> [!WARNING]
|
||||
> Use `OrcaSlicer_profile_validator` on Ubuntu and `OrcaSlicer_profile_validator.exe` on Windows.
|
||||
|
||||
---
|
||||
|
||||
|
@ -380,7 +397,7 @@ In addition to the Orca validator, you should run the `orca_extra_profile_check.
|
|||
|
||||
#### Example command
|
||||
|
||||
```bash
|
||||
```shell
|
||||
python ./orca_extra_profile_check.py
|
||||
```
|
||||
|
||||
|
@ -392,7 +409,7 @@ You can also enable or disable specific checks:
|
|||
|
||||
#### Sample usage with all checks enabled
|
||||
|
||||
```bash
|
||||
```shell
|
||||
python ./orca_extra_profile_check.py --vendor="vendor_name" --check-filaments --check-materials
|
||||
```
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue