mirror of
https://git.mirrors.martin98.com/https://github.com/SoftFever/OrcaSlicer.git
synced 2025-08-06 01:56:03 +08:00
Orca filament library and support cross-vendor/machine filament reuse (#8057)
# Description 1. Implement a centralized Orca filament library. Previously, OrcaSlicer required that filament profiles be contained within a printer vendor's profiles, making it impractical to add printer-vendor-independent filament profiles. With this new implementation, Orca now supports a centralized filament library, accommodating all filament vendors for any printer, or offering specialized versions for specific printer models.  2. Support the reuse of filaments across various vendors and machines Users can now share any personal filament and print configurations across all printers. https://github.com/user-attachments/assets/5c324d07-7bbf-4913-8abf-2506a255759f <!-- > Please provide a summary of the changes made in this PR. Include details such as: > * What issue does this PR address or fix? > * What new features or enhancements does this PR introduce? > * Are there any breaking changes or dependencies that need to be considered? --> # Screenshots/Recordings/Graphs <!-- > Please attach relevant screenshots to showcase the UI changes. > Please attach images that can help explain the changes. --> ## Tests <!-- > Please describe the tests that you have conducted to verify the changes made in this PR. -->
This commit is contained in:
commit
e0faedc891
@ -36,3 +36,4 @@ The guide below takes you through the key calibration tests in Orca - flow rate,
|
|||||||
- [How to build Orca Slicer](./How-to-build)
|
- [How to build Orca Slicer](./How-to-build)
|
||||||
- [Localization and translation guide](Localization_guide)
|
- [Localization and translation guide](Localization_guide)
|
||||||
- [Developer Reference](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/Home.md)
|
- [Developer Reference](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/Home.md)
|
||||||
|
- [How to create profiles](./How-to-create-profiles)
|
180
doc/How-to-create-profiles.md
Normal file
180
doc/How-to-create-profiles.md
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
# 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`
|
||||||
|
4. Process (type `process`). Example: `0.10mm Standard @Orca 3D Fuse1 0.2.json`
|
||||||
|
|
||||||
|
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`
|
||||||
|
- Filament profile: `Generic PLA @Orca 3D Fuse1@`
|
||||||
|
- Process profile: `0.20mm Standard @Orca 3D Fuse1 0.4`
|
||||||
|
|
||||||
|
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`)
|
||||||
|
4. Filament profile: `filament_vendor_name` + `filament_name` + " @" + `vendor_name` + `printer_name`/`printer_variant_name` + `.json`
|
||||||
|
5. Process profile: `layer_height` + `preset_name` + " @" + `vendor_name` + `printer_name`/`printer_variant_name` + `.json` (`preset_name` typically includes "standard," "fine," "fast," "draft," etc.)
|
||||||
|
|
||||||
|
|
||||||
|
A typical file structure for a vendor:
|
||||||
|
```
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
**NOTE 1**: 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.
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
Relationship diagram:
|
||||||
|
```mermaid
|
||||||
|
graph TD;
|
||||||
|
OrcaFilamentLibrary-->Orca_3D_filament;
|
||||||
|
OrcaFilamentLibrary-->Vendor_A_filament;
|
||||||
|
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.
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
|
||||||
|
1. The first step is to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament` folder. The file name should be `Generic PLA-GF @System.json`. Please note that we leave the `compatible_printers` field empty so that it is available for all printers.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFL99",
|
||||||
|
"setting_id": "GFSA05",
|
||||||
|
"name": "Generic PLA-GF @System",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"inherits": "fdm_filament_pla",
|
||||||
|
"filament_type": ["PLA-GF"],
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.96"
|
||||||
|
],
|
||||||
|
"compatible_printers": []
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Register the profile in `resources\profiles\OrcaFilamentLibrary.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "OrcaFilamentLibrary",
|
||||||
|
"version": "02.02.00.04",
|
||||||
|
"force_update": "0",
|
||||||
|
"description": "Orca Filament Library",
|
||||||
|
"filament_list": [
|
||||||
|
// ...
|
||||||
|
{
|
||||||
|
"name": "Generic PLA-GF @System",
|
||||||
|
"sub_path": "filament/Generic PLA-GF @System.json"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
3. The last step is to validate the newly added filament profiles. 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**: 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.`resources\profiles\OrcaFilamentLibrary\filament\brand_name`.
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
Please note that here we must leave the compatible_printers field non-empty, unlike in the global library.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"setting_id": "GFB99_MTC_0",
|
||||||
|
"name": "Generic ABS @MyToolChanger",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"inherits": "Generic ABS @System",
|
||||||
|
"filament_cooling_final_speed": [
|
||||||
|
"3.5"
|
||||||
|
],
|
||||||
|
"filament_cooling_initial_speed": [
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"filament_cooling_moves": [
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"filament_load_time": [
|
||||||
|
"10.5"
|
||||||
|
],
|
||||||
|
"filament_loading_speed": [
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"filament_loading_speed_start": [
|
||||||
|
"50"
|
||||||
|
],
|
||||||
|
"filament_multitool_ramming": [
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"filament_multitool_ramming_flow": [
|
||||||
|
"40"
|
||||||
|
],
|
||||||
|
"filament_stamping_distance": [
|
||||||
|
"45"
|
||||||
|
],
|
||||||
|
"filament_stamping_loading_speed": [
|
||||||
|
"29"
|
||||||
|
],
|
||||||
|
"filament_unload_time": [
|
||||||
|
"8.5"
|
||||||
|
],
|
||||||
|
"filament_unloading_speed": [
|
||||||
|
"100"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"MyToolChanger 0.4 nozzle",
|
||||||
|
"MyToolChanger 0.2 nozzle",
|
||||||
|
"MyToolChanger 0.6 nozzle",
|
||||||
|
"MyToolChanger 0.8 nozzle"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Process Profiles
|
||||||
|
WIP...
|
||||||
|
|
||||||
|
## Printer Profiles
|
||||||
|
WIP...
|
||||||
|
|
||||||
|
## Printer Variant Profiles
|
||||||
|
WIP...
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Custom Printer",
|
"name": "Custom Printer",
|
||||||
"version": "02.02.00.04",
|
"version": "02.02.00.05",
|
||||||
"force_update": "0",
|
"force_update": "0",
|
||||||
"description": "My configurations",
|
"description": "My configurations",
|
||||||
"machine_model_list": [
|
"machine_model_list": [
|
||||||
@ -173,120 +173,44 @@
|
|||||||
],
|
],
|
||||||
"filament_list": [
|
"filament_list": [
|
||||||
{
|
{
|
||||||
"name": "fdm_filament_common",
|
"name": "Generic PLA @MyToolChanger",
|
||||||
"sub_path": "filament/fdm_filament_common.json"
|
"sub_path": "filament/Generic PLA @MyToolChanger.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fdm_filament_pla",
|
"name": "Generic PLA-CF @MyToolChanger",
|
||||||
"sub_path": "filament/fdm_filament_pla.json"
|
"sub_path": "filament/Generic PLA-CF @MyToolChanger.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fdm_filament_tpu",
|
"name": "Generic PETG @MyToolChanger",
|
||||||
"sub_path": "filament/fdm_filament_tpu.json"
|
"sub_path": "filament/Generic PETG @MyToolChanger.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fdm_filament_pet",
|
"name": "Generic ABS @MyToolChanger",
|
||||||
"sub_path": "filament/fdm_filament_pet.json"
|
"sub_path": "filament/Generic ABS @MyToolChanger.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fdm_filament_abs",
|
"name": "Generic TPU @MyToolChanger",
|
||||||
"sub_path": "filament/fdm_filament_abs.json"
|
"sub_path": "filament/Generic TPU @MyToolChanger.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fdm_filament_pc",
|
"name": "Generic ASA @MyToolChanger",
|
||||||
"sub_path": "filament/fdm_filament_pc.json"
|
"sub_path": "filament/Generic ASA @MyToolChanger.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fdm_filament_asa",
|
"name": "Generic PC @MyToolChanger",
|
||||||
"sub_path": "filament/fdm_filament_asa.json"
|
"sub_path": "filament/Generic PC @MyToolChanger.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fdm_filament_pva",
|
"name": "Generic PVA @MyToolChanger",
|
||||||
"sub_path": "filament/fdm_filament_pva.json"
|
"sub_path": "filament/Generic PVA @MyToolChanger.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fdm_filament_pa",
|
"name": "Generic PA @MyToolChanger",
|
||||||
"sub_path": "filament/fdm_filament_pa.json"
|
"sub_path": "filament/Generic PA @MyToolChanger.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "My Generic PLA",
|
"name": "Generic PA-CF @MyToolChanger",
|
||||||
"sub_path": "filament/My Generic PLA.json"
|
"sub_path": "filament/Generic PA-CF @MyToolChanger.json"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PLA-CF",
|
|
||||||
"sub_path": "filament/My Generic PLA-CF.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PETG",
|
|
||||||
"sub_path": "filament/My Generic PETG.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic ABS",
|
|
||||||
"sub_path": "filament/My Generic ABS.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic TPU",
|
|
||||||
"sub_path": "filament/My Generic TPU.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic ASA",
|
|
||||||
"sub_path": "filament/My Generic ASA.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PC",
|
|
||||||
"sub_path": "filament/My Generic PC.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PVA",
|
|
||||||
"sub_path": "filament/My Generic PVA.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PA",
|
|
||||||
"sub_path": "filament/My Generic PA.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PA-CF",
|
|
||||||
"sub_path": "filament/My Generic PA-CF.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PLA @MyToolChanger",
|
|
||||||
"sub_path": "filament/My Generic PLA @MyToolChanger.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PLA-CF @MyToolChanger",
|
|
||||||
"sub_path": "filament/My Generic PLA-CF @MyToolChanger.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PETG @MyToolChanger",
|
|
||||||
"sub_path": "filament/My Generic PETG @MyToolChanger.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic ABS @MyToolChanger",
|
|
||||||
"sub_path": "filament/My Generic ABS @MyToolChanger.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic TPU @MyToolChanger",
|
|
||||||
"sub_path": "filament/My Generic TPU @MyToolChanger.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic ASA @MyToolChanger",
|
|
||||||
"sub_path": "filament/My Generic ASA @MyToolChanger.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PC @MyToolChanger",
|
|
||||||
"sub_path": "filament/My Generic PC @MyToolChanger.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PVA @MyToolChanger",
|
|
||||||
"sub_path": "filament/My Generic PVA @MyToolChanger.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PA @MyToolChanger",
|
|
||||||
"sub_path": "filament/My Generic PA @MyToolChanger.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "My Generic PA-CF @MyToolChanger",
|
|
||||||
"sub_path": "filament/My Generic PA-CF @MyToolChanger.json"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"machine_list": [
|
"machine_list": [
|
||||||
|
@ -1,17 +1,11 @@
|
|||||||
{
|
{
|
||||||
"type": "filament",
|
"type": "filament",
|
||||||
"filament_id": "GFB99",
|
|
||||||
"setting_id": "GFB99_MTC_0",
|
"setting_id": "GFB99_MTC_0",
|
||||||
"name": "My Generic ABS @MyToolChanger",
|
"name": "Generic ABS @MyToolChanger",
|
||||||
|
"renamed_from": "My Generic ABS @MyToolChanger",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"inherits": "fdm_filament_abs",
|
"inherits": "Generic ABS @System",
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.926"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_cooling_final_speed": [
|
"filament_cooling_final_speed": [
|
||||||
"3.5"
|
"3.5"
|
||||||
],
|
],
|
@ -1,17 +1,11 @@
|
|||||||
{
|
{
|
||||||
"type": "filament",
|
"type": "filament",
|
||||||
"filament_id": "GFB98",
|
|
||||||
"setting_id": "GFB98_MTC_0",
|
"setting_id": "GFB98_MTC_0",
|
||||||
"name": "My Generic ASA @MyToolChanger",
|
"name": "Generic ASA @MyToolChanger",
|
||||||
|
"renamed_from": "My Generic ASA @MyToolChanger",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"inherits": "fdm_filament_asa",
|
"inherits": "Generic ASA @System",
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.93"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_cooling_final_speed": [
|
"filament_cooling_final_speed": [
|
||||||
"3.5"
|
"3.5"
|
||||||
],
|
],
|
@ -1,20 +1,11 @@
|
|||||||
{
|
{
|
||||||
"type": "filament",
|
"type": "filament",
|
||||||
"filament_id": "GFN99",
|
|
||||||
"setting_id": "GFN99_MTC_0",
|
"setting_id": "GFN99_MTC_0",
|
||||||
"name": "My Generic PA @MyToolChanger",
|
"name": "Generic PA @MyToolChanger",
|
||||||
|
"renamed_from": "My Generic PA @MyToolChanger",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"inherits": "fdm_filament_pa",
|
"inherits": "Generic PA @System",
|
||||||
"nozzle_temperature_initial_layer": [
|
|
||||||
"280"
|
|
||||||
],
|
|
||||||
"nozzle_temperature": [
|
|
||||||
"280"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_cooling_final_speed": [
|
"filament_cooling_final_speed": [
|
||||||
"3.5"
|
"3.5"
|
||||||
],
|
],
|
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"setting_id": "GFN98_MTC_0",
|
||||||
|
"name": "Generic PA-CF @MyToolChanger",
|
||||||
|
"renamed_from": "My Generic PA-CF @MyToolChanger",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"inherits": "Generic PA-CF @System",
|
||||||
|
"filament_cooling_final_speed": [
|
||||||
|
"3.5"
|
||||||
|
],
|
||||||
|
"filament_cooling_initial_speed": [
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"filament_cooling_moves": [
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"filament_load_time": [
|
||||||
|
"10.5"
|
||||||
|
],
|
||||||
|
"filament_loading_speed": [
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"filament_loading_speed_start": [
|
||||||
|
"50"
|
||||||
|
],
|
||||||
|
"filament_multitool_ramming": [
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"filament_multitool_ramming_flow": [
|
||||||
|
"40"
|
||||||
|
],
|
||||||
|
"filament_stamping_distance": [
|
||||||
|
"45"
|
||||||
|
],
|
||||||
|
"filament_stamping_loading_speed": [
|
||||||
|
"29"
|
||||||
|
],
|
||||||
|
"filament_unload_time": [
|
||||||
|
"8.5"
|
||||||
|
],
|
||||||
|
"filament_unloading_speed": [
|
||||||
|
"100"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"MyToolChanger 0.4 nozzle",
|
||||||
|
"MyToolChanger 0.2 nozzle",
|
||||||
|
"MyToolChanger 0.6 nozzle",
|
||||||
|
"MyToolChanger 0.8 nozzle"
|
||||||
|
]
|
||||||
|
}
|
@ -2,16 +2,11 @@
|
|||||||
"type": "filament",
|
"type": "filament",
|
||||||
"filament_id": "GFC99",
|
"filament_id": "GFC99",
|
||||||
"setting_id": "GFC99_MTC_0",
|
"setting_id": "GFC99_MTC_0",
|
||||||
"name": "My Generic PC @MyToolChanger",
|
"name": "Generic PC @MyToolChanger",
|
||||||
|
"renamed_from": "My Generic PC @MyToolChanger",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"inherits": "fdm_filament_pc",
|
"inherits": "Generic PC @System",
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.94"
|
|
||||||
],
|
|
||||||
"filament_cooling_final_speed": [
|
"filament_cooling_final_speed": [
|
||||||
"3.5"
|
"3.5"
|
||||||
],
|
],
|
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFG99",
|
||||||
|
"setting_id": "GFG99_MTC_0",
|
||||||
|
"name": "Generic PETG @MyToolChanger",
|
||||||
|
"renamed_from": "My Generic PETG @MyToolChanger",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"inherits": "Generic PETG @System",
|
||||||
|
"filament_cooling_final_speed": [
|
||||||
|
"3.5"
|
||||||
|
],
|
||||||
|
"filament_cooling_initial_speed": [
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"filament_cooling_moves": [
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"filament_load_time": [
|
||||||
|
"10.5"
|
||||||
|
],
|
||||||
|
"filament_loading_speed": [
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"filament_loading_speed_start": [
|
||||||
|
"50"
|
||||||
|
],
|
||||||
|
"filament_multitool_ramming": [
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"filament_multitool_ramming_flow": [
|
||||||
|
"40"
|
||||||
|
],
|
||||||
|
"filament_stamping_distance": [
|
||||||
|
"45"
|
||||||
|
],
|
||||||
|
"filament_stamping_loading_speed": [
|
||||||
|
"29"
|
||||||
|
],
|
||||||
|
"filament_unload_time": [
|
||||||
|
"8.5"
|
||||||
|
],
|
||||||
|
"filament_unloading_speed": [
|
||||||
|
"100"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"MyToolChanger 0.4 nozzle",
|
||||||
|
"MyToolChanger 0.2 nozzle",
|
||||||
|
"MyToolChanger 0.6 nozzle",
|
||||||
|
"MyToolChanger 0.8 nozzle"
|
||||||
|
]
|
||||||
|
}
|
@ -2,19 +2,11 @@
|
|||||||
"type": "filament",
|
"type": "filament",
|
||||||
"filament_id": "GFL99",
|
"filament_id": "GFL99",
|
||||||
"setting_id": "GFL99_MTC_0",
|
"setting_id": "GFL99_MTC_0",
|
||||||
"name": "My Generic PLA @MyToolChanger",
|
"name": "Generic PLA @MyToolChanger",
|
||||||
|
"renamed_from": "My Generic PLA @MyToolChanger",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"inherits": "fdm_filament_pla",
|
"inherits": "Generic PLA @System",
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.98"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"slow_down_layer_time": [
|
|
||||||
"8"
|
|
||||||
],
|
|
||||||
"filament_cooling_final_speed": [
|
"filament_cooling_final_speed": [
|
||||||
"3.5"
|
"3.5"
|
||||||
],
|
],
|
@ -2,22 +2,11 @@
|
|||||||
"type": "filament",
|
"type": "filament",
|
||||||
"filament_id": "GFL98",
|
"filament_id": "GFL98",
|
||||||
"setting_id": "GFL98_MTC_0",
|
"setting_id": "GFL98_MTC_0",
|
||||||
"name": "My Generic PLA-CF @MyToolChanger",
|
"name": "Generic PLA-CF @MyToolChanger",
|
||||||
|
"renamed_from": "My Generic PLA-CF @MyToolChanger",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"inherits": "fdm_filament_pla",
|
"inherits": "Generic PLA-CF @System",
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.95"
|
|
||||||
],
|
|
||||||
"filament_type": [
|
|
||||||
"PLA-CF"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"slow_down_layer_time": [
|
|
||||||
"7"
|
|
||||||
],
|
|
||||||
"filament_cooling_final_speed": [
|
"filament_cooling_final_speed": [
|
||||||
"3.5"
|
"3.5"
|
||||||
],
|
],
|
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFS99",
|
||||||
|
"setting_id": "GFS99_MTC_0",
|
||||||
|
"name": "Generic PVA @MyToolChanger",
|
||||||
|
"renamed_from": "My Generic PVA @MyToolChanger",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"inherits": "Generic PVA @System",
|
||||||
|
"filament_cooling_final_speed": [
|
||||||
|
"3.5"
|
||||||
|
],
|
||||||
|
"filament_cooling_initial_speed": [
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"filament_cooling_moves": [
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"filament_load_time": [
|
||||||
|
"10.5"
|
||||||
|
],
|
||||||
|
"filament_loading_speed": [
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"filament_loading_speed_start": [
|
||||||
|
"50"
|
||||||
|
],
|
||||||
|
"filament_multitool_ramming": [
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"filament_multitool_ramming_flow": [
|
||||||
|
"40"
|
||||||
|
],
|
||||||
|
"filament_stamping_distance": [
|
||||||
|
"45"
|
||||||
|
],
|
||||||
|
"filament_stamping_loading_speed": [
|
||||||
|
"29"
|
||||||
|
],
|
||||||
|
"filament_unload_time": [
|
||||||
|
"8.5"
|
||||||
|
],
|
||||||
|
"filament_unloading_speed": [
|
||||||
|
"100"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"MyToolChanger 0.4 nozzle",
|
||||||
|
"MyToolChanger 0.2 nozzle",
|
||||||
|
"MyToolChanger 0.6 nozzle",
|
||||||
|
"MyToolChanger 0.8 nozzle"
|
||||||
|
]
|
||||||
|
}
|
@ -2,10 +2,11 @@
|
|||||||
"type": "filament",
|
"type": "filament",
|
||||||
"filament_id": "GFU99",
|
"filament_id": "GFU99",
|
||||||
"setting_id": "GFU99_MTC_0",
|
"setting_id": "GFU99_MTC_0",
|
||||||
"name": "My Generic TPU @MyToolChanger",
|
"name": "Generic TPU @MyToolChanger",
|
||||||
|
"renamed_from": "My Generic TPU @MyToolChanger",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"inherits": "fdm_filament_tpu",
|
"inherits": "Generic TPU @System",
|
||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"3.2"
|
"3.2"
|
||||||
],
|
],
|
@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFB99",
|
|
||||||
"setting_id": "GFSA04",
|
|
||||||
"name": "My Generic ABS",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_abs",
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.926"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyKlipper 0.4 nozzle",
|
|
||||||
"MyKlipper 0.2 nozzle",
|
|
||||||
"MyKlipper 0.6 nozzle",
|
|
||||||
"MyKlipper 0.8 nozzle",
|
|
||||||
"MyMarlin 0.4 nozzle",
|
|
||||||
"MyRRF 0.4 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFB98",
|
|
||||||
"setting_id": "GFSA04",
|
|
||||||
"name": "My Generic ASA",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_asa",
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.93"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyKlipper 0.4 nozzle",
|
|
||||||
"MyKlipper 0.2 nozzle",
|
|
||||||
"MyKlipper 0.6 nozzle",
|
|
||||||
"MyKlipper 0.8 nozzle",
|
|
||||||
"MyMarlin 0.4 nozzle",
|
|
||||||
"MyRRF 0.4 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,63 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFN98",
|
|
||||||
"setting_id": "GFN98_MTC_0",
|
|
||||||
"name": "My Generic PA-CF @MyToolChanger",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_pa",
|
|
||||||
"filament_type": [
|
|
||||||
"PA-CF"
|
|
||||||
],
|
|
||||||
"nozzle_temperature_initial_layer": [
|
|
||||||
"280"
|
|
||||||
],
|
|
||||||
"nozzle_temperature": [
|
|
||||||
"280"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"8"
|
|
||||||
],
|
|
||||||
"filament_cooling_final_speed": [
|
|
||||||
"3.5"
|
|
||||||
],
|
|
||||||
"filament_cooling_initial_speed": [
|
|
||||||
"10"
|
|
||||||
],
|
|
||||||
"filament_cooling_moves": [
|
|
||||||
"2"
|
|
||||||
],
|
|
||||||
"filament_load_time": [
|
|
||||||
"10.5"
|
|
||||||
],
|
|
||||||
"filament_loading_speed": [
|
|
||||||
"10"
|
|
||||||
],
|
|
||||||
"filament_loading_speed_start": [
|
|
||||||
"50"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming_flow": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"filament_stamping_distance": [
|
|
||||||
"45"
|
|
||||||
],
|
|
||||||
"filament_stamping_loading_speed": [
|
|
||||||
"29"
|
|
||||||
],
|
|
||||||
"filament_unload_time": [
|
|
||||||
"8.5"
|
|
||||||
],
|
|
||||||
"filament_unloading_speed": [
|
|
||||||
"100"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyToolChanger 0.4 nozzle",
|
|
||||||
"MyToolChanger 0.2 nozzle",
|
|
||||||
"MyToolChanger 0.6 nozzle",
|
|
||||||
"MyToolChanger 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFN98",
|
|
||||||
"setting_id": "GFSA04",
|
|
||||||
"name": "My Generic PA-CF",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_pa",
|
|
||||||
"filament_type": [
|
|
||||||
"PA-CF"
|
|
||||||
],
|
|
||||||
"nozzle_temperature_initial_layer": [
|
|
||||||
"280"
|
|
||||||
],
|
|
||||||
"nozzle_temperature": [
|
|
||||||
"280"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"8"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyKlipper 0.4 nozzle",
|
|
||||||
"MyKlipper 0.2 nozzle",
|
|
||||||
"MyKlipper 0.6 nozzle",
|
|
||||||
"MyKlipper 0.8 nozzle",
|
|
||||||
"MyMarlin 0.4 nozzle",
|
|
||||||
"MyRRF 0.4 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFN99",
|
|
||||||
"setting_id": "GFSA04",
|
|
||||||
"name": "My Generic PA",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_pa",
|
|
||||||
"nozzle_temperature_initial_layer": [
|
|
||||||
"280"
|
|
||||||
],
|
|
||||||
"nozzle_temperature": [
|
|
||||||
"280"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyKlipper 0.4 nozzle",
|
|
||||||
"MyKlipper 0.2 nozzle",
|
|
||||||
"MyKlipper 0.6 nozzle",
|
|
||||||
"MyKlipper 0.8 nozzle",
|
|
||||||
"MyMarlin 0.4 nozzle",
|
|
||||||
"MyRRF 0.4 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFC99",
|
|
||||||
"setting_id": "GFSA04",
|
|
||||||
"name": "My Generic PC",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_pc",
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.94"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyKlipper 0.4 nozzle",
|
|
||||||
"MyKlipper 0.2 nozzle",
|
|
||||||
"MyKlipper 0.6 nozzle",
|
|
||||||
"MyKlipper 0.8 nozzle",
|
|
||||||
"MyMarlin 0.4 nozzle",
|
|
||||||
"MyRRF 0.4 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,87 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFG99",
|
|
||||||
"setting_id": "GFG99_MTC_0",
|
|
||||||
"name": "My Generic PETG @MyToolChanger",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_pet",
|
|
||||||
"reduce_fan_stop_start_freq": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"slow_down_for_layer_cooling": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"fan_cooling_layer_time": [
|
|
||||||
"30"
|
|
||||||
],
|
|
||||||
"overhang_fan_speed": [
|
|
||||||
"90"
|
|
||||||
],
|
|
||||||
"overhang_fan_threshold": [
|
|
||||||
"25%"
|
|
||||||
],
|
|
||||||
"fan_max_speed": [
|
|
||||||
"90"
|
|
||||||
],
|
|
||||||
"fan_min_speed": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"slow_down_min_speed": [
|
|
||||||
"10"
|
|
||||||
],
|
|
||||||
"slow_down_layer_time": [
|
|
||||||
"8"
|
|
||||||
],
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.95"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"10"
|
|
||||||
],
|
|
||||||
"filament_start_gcode": [
|
|
||||||
"; filament start gcode\n"
|
|
||||||
],
|
|
||||||
"filament_cooling_final_speed": [
|
|
||||||
"3.5"
|
|
||||||
],
|
|
||||||
"filament_cooling_initial_speed": [
|
|
||||||
"10"
|
|
||||||
],
|
|
||||||
"filament_cooling_moves": [
|
|
||||||
"2"
|
|
||||||
],
|
|
||||||
"filament_load_time": [
|
|
||||||
"10.5"
|
|
||||||
],
|
|
||||||
"filament_loading_speed": [
|
|
||||||
"10"
|
|
||||||
],
|
|
||||||
"filament_loading_speed_start": [
|
|
||||||
"50"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming_flow": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"filament_stamping_distance": [
|
|
||||||
"45"
|
|
||||||
],
|
|
||||||
"filament_stamping_loading_speed": [
|
|
||||||
"29"
|
|
||||||
],
|
|
||||||
"filament_unload_time": [
|
|
||||||
"8.5"
|
|
||||||
],
|
|
||||||
"filament_unloading_speed": [
|
|
||||||
"100"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyToolChanger 0.4 nozzle",
|
|
||||||
"MyToolChanger 0.2 nozzle",
|
|
||||||
"MyToolChanger 0.6 nozzle",
|
|
||||||
"MyToolChanger 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,53 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFG99",
|
|
||||||
"setting_id": "GFSA04",
|
|
||||||
"name": "My Generic PETG",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_pet",
|
|
||||||
"reduce_fan_stop_start_freq": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"slow_down_for_layer_cooling": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"fan_cooling_layer_time": [
|
|
||||||
"30"
|
|
||||||
],
|
|
||||||
"overhang_fan_speed": [
|
|
||||||
"90"
|
|
||||||
],
|
|
||||||
"overhang_fan_threshold": [
|
|
||||||
"25%"
|
|
||||||
],
|
|
||||||
"fan_max_speed": [
|
|
||||||
"90"
|
|
||||||
],
|
|
||||||
"fan_min_speed": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"slow_down_min_speed": [
|
|
||||||
"10"
|
|
||||||
],
|
|
||||||
"slow_down_layer_time": [
|
|
||||||
"8"
|
|
||||||
],
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.95"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"10"
|
|
||||||
],
|
|
||||||
"filament_start_gcode": [
|
|
||||||
"; filament start gcode\n"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyKlipper 0.4 nozzle",
|
|
||||||
"MyKlipper 0.2 nozzle",
|
|
||||||
"MyKlipper 0.6 nozzle",
|
|
||||||
"MyKlipper 0.8 nozzle",
|
|
||||||
"MyMarlin 0.4 nozzle",
|
|
||||||
"MyRRF 0.4 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFL98",
|
|
||||||
"setting_id": "GFSA04",
|
|
||||||
"name": "My Generic PLA-CF",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_pla",
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.95"
|
|
||||||
],
|
|
||||||
"filament_type": [
|
|
||||||
"PLA-CF"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"slow_down_layer_time": [
|
|
||||||
"7"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyKlipper 0.4 nozzle",
|
|
||||||
"MyKlipper 0.2 nozzle",
|
|
||||||
"MyKlipper 0.6 nozzle",
|
|
||||||
"MyKlipper 0.8 nozzle",
|
|
||||||
"MyMarlin 0.4 nozzle",
|
|
||||||
"MyRRF 0.4 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFL99",
|
|
||||||
"setting_id": "GFSA04",
|
|
||||||
"name": "My Generic PLA",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_pla",
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.98"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"slow_down_layer_time": [
|
|
||||||
"8"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyKlipper 0.4 nozzle",
|
|
||||||
"MyKlipper 0.2 nozzle",
|
|
||||||
"MyKlipper 0.6 nozzle",
|
|
||||||
"MyKlipper 0.8 nozzle",
|
|
||||||
"MyMarlin 0.4 nozzle",
|
|
||||||
"MyRRF 0.4 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFS99",
|
|
||||||
"setting_id": "GFS99_MTC_0",
|
|
||||||
"name": "My Generic PVA @MyToolChanger",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_pva",
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.95"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"slow_down_layer_time": [
|
|
||||||
"7"
|
|
||||||
],
|
|
||||||
"slow_down_min_speed": [
|
|
||||||
"10"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyToolChanger 0.4 nozzle",
|
|
||||||
"MyToolChanger 0.2 nozzle",
|
|
||||||
"MyToolChanger 0.6 nozzle",
|
|
||||||
"MyToolChanger 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFS99",
|
|
||||||
"setting_id": "GFSA04",
|
|
||||||
"name": "My Generic PVA",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_pva",
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.95"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"slow_down_layer_time": [
|
|
||||||
"7"
|
|
||||||
],
|
|
||||||
"slow_down_min_speed": [
|
|
||||||
"10"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyKlipper 0.4 nozzle",
|
|
||||||
"MyKlipper 0.2 nozzle",
|
|
||||||
"MyKlipper 0.6 nozzle",
|
|
||||||
"MyKlipper 0.8 nozzle",
|
|
||||||
"MyMarlin 0.4 nozzle",
|
|
||||||
"MyRRF 0.4 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"filament_id": "GFU99",
|
|
||||||
"setting_id": "GFSA04",
|
|
||||||
"name": "My Generic TPU",
|
|
||||||
"from": "system",
|
|
||||||
"instantiation": "true",
|
|
||||||
"inherits": "fdm_filament_tpu",
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"3.2"
|
|
||||||
],
|
|
||||||
"compatible_printers": [
|
|
||||||
"MyKlipper 0.4 nozzle",
|
|
||||||
"MyKlipper 0.2 nozzle",
|
|
||||||
"MyKlipper 0.6 nozzle",
|
|
||||||
"MyKlipper 0.8 nozzle",
|
|
||||||
"MyMarlin 0.4 nozzle",
|
|
||||||
"MyRRF 0.4 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
@ -8,5 +8,5 @@
|
|||||||
"bed_model": "",
|
"bed_model": "",
|
||||||
"bed_texture": "orcaslicer_bed_texture.svg",
|
"bed_texture": "orcaslicer_bed_texture.svg",
|
||||||
"hotend_model": "",
|
"hotend_model": "",
|
||||||
"default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF"
|
"default_materials": "Generic ABS @System;Generic PLA @System;Generic PLA-CF @System;Generic PETG @System;Generic TPU @System;Generic ASA @System;Generic PC @System;Generic PVA @System;Generic PA @System;Generic PA-CF @System"
|
||||||
}
|
}
|
||||||
|
@ -8,5 +8,5 @@
|
|||||||
"bed_model": "",
|
"bed_model": "",
|
||||||
"bed_texture": "orcaslicer_bed_texture.svg",
|
"bed_texture": "orcaslicer_bed_texture.svg",
|
||||||
"hotend_model": "",
|
"hotend_model": "",
|
||||||
"default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF"
|
"default_materials": "Generic ABS @System;Generic PLA @System;Generic PLA-CF @System;Generic PETG @System;Generic TPU @System;Generic ASA @System;Generic PC @System;Generic PVA @System;Generic PA @System;Generic PA-CF @System"
|
||||||
}
|
}
|
||||||
|
@ -8,5 +8,5 @@
|
|||||||
"bed_model": "",
|
"bed_model": "",
|
||||||
"bed_texture": "orcaslicer_bed_texture.svg",
|
"bed_texture": "orcaslicer_bed_texture.svg",
|
||||||
"hotend_model": "",
|
"hotend_model": "",
|
||||||
"default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF"
|
"default_materials": "Generic ABS @System;Generic PLA @System;Generic PLA-CF @System;Generic PETG @System;Generic TPU @System;Generic ASA @System;Generic PC @System;Generic PVA @System;Generic PA @System;Generic PA-CF @System"
|
||||||
}
|
}
|
@ -8,5 +8,5 @@
|
|||||||
"bed_model": "Custom_350_bed.stl",
|
"bed_model": "Custom_350_bed.stl",
|
||||||
"bed_texture": "orcaslicer_bed_texture.svg",
|
"bed_texture": "orcaslicer_bed_texture.svg",
|
||||||
"hotend_model": "",
|
"hotend_model": "",
|
||||||
"default_materials": "My Generic PLA @MyToolChanger;My Generic ABS @MyToolChanger;My Generic PLA-CF @MyToolChanger;My Generic PETG @MyToolChanger;My Generic TPU @MyToolChanger;My Generic ASA @MyToolChanger;My Generic PC @MyToolChanger;My Generic PVA @MyToolChanger;My Generic PA @MyToolChanger;My Generic PA-CF @MyToolChanger"
|
"default_materials": "Generic PLA @MyToolChanger;Generic ABS @MyToolChanger;Generic PLA-CF @MyToolChanger;Generic PETG @MyToolChanger;Generic TPU @MyToolChanger;Generic ASA @MyToolChanger;Generic PC @MyToolChanger;Generic PVA @MyToolChanger;Generic PA @MyToolChanger;Generic PA-CF @MyToolChanger"
|
||||||
}
|
}
|
||||||
|
84
resources/profiles/OrcaFilamentLibrary.json
Normal file
84
resources/profiles/OrcaFilamentLibrary.json
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
{
|
||||||
|
"name": "OrcaFilamentLibrary",
|
||||||
|
"version": "02.02.00.04",
|
||||||
|
"force_update": "0",
|
||||||
|
"description": "Orca Filament Library",
|
||||||
|
"filament_list": [
|
||||||
|
{
|
||||||
|
"name": "fdm_filament_common",
|
||||||
|
"sub_path": "filament/fdm_filament_common.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fdm_filament_pla",
|
||||||
|
"sub_path": "filament/fdm_filament_pla.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fdm_filament_tpu",
|
||||||
|
"sub_path": "filament/fdm_filament_tpu.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fdm_filament_pet",
|
||||||
|
"sub_path": "filament/fdm_filament_pet.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fdm_filament_abs",
|
||||||
|
"sub_path": "filament/fdm_filament_abs.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fdm_filament_pc",
|
||||||
|
"sub_path": "filament/fdm_filament_pc.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fdm_filament_asa",
|
||||||
|
"sub_path": "filament/fdm_filament_asa.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fdm_filament_pva",
|
||||||
|
"sub_path": "filament/fdm_filament_pva.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fdm_filament_pa",
|
||||||
|
"sub_path": "filament/fdm_filament_pa.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Generic PLA @System",
|
||||||
|
"sub_path": "filament/Generic PLA @System.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Generic PLA-CF @System",
|
||||||
|
"sub_path": "filament/Generic PLA-CF @System.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Generic PETG @System",
|
||||||
|
"sub_path": "filament/Generic PETG @System.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Generic ABS @System",
|
||||||
|
"sub_path": "filament/Generic ABS @System.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Generic TPU @System",
|
||||||
|
"sub_path": "filament/Generic TPU @System.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Generic ASA @System",
|
||||||
|
"sub_path": "filament/Generic ASA @System.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Generic PC @System",
|
||||||
|
"sub_path": "filament/Generic PC @System.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Generic PVA @System",
|
||||||
|
"sub_path": "filament/Generic PVA @System.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Generic PA @System",
|
||||||
|
"sub_path": "filament/Generic PA @System.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Generic PA-CF @System",
|
||||||
|
"sub_path": "filament/Generic PA-CF @System.json"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFB99",
|
||||||
|
"setting_id": "GFSA04",
|
||||||
|
"name": "Generic ABS @System",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"renamed_from": "My Generic ABS",
|
||||||
|
"inherits": "fdm_filament_abs",
|
||||||
|
"compatible_printers": []
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFB98",
|
||||||
|
"setting_id": "GFSA04",
|
||||||
|
"name": "Generic ASA @System",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"renamed_from": "My Generic ASA",
|
||||||
|
"inherits": "fdm_filament_asa",
|
||||||
|
"compatible_printers": []
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFN99",
|
||||||
|
"setting_id": "GFSA04",
|
||||||
|
"name": "Generic PA @System",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"renamed_from": "My Generic PA",
|
||||||
|
"inherits": "fdm_filament_pa",
|
||||||
|
"compatible_printers": []
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFN98",
|
||||||
|
"setting_id": "GFSA04",
|
||||||
|
"name": "Generic PA-CF @System",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"renamed_from": "My Generic PA-CF",
|
||||||
|
"inherits": "fdm_filament_pa",
|
||||||
|
"filament_type": [
|
||||||
|
"PA-CF"
|
||||||
|
],
|
||||||
|
"compatible_printers": []
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFC99",
|
||||||
|
"setting_id": "GFSA04",
|
||||||
|
"name": "Generic PC @System",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"renamed_from": "My Generic PC",
|
||||||
|
"inherits": "fdm_filament_pc",
|
||||||
|
"compatible_printers": []
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFG99",
|
||||||
|
"setting_id": "GFSA04",
|
||||||
|
"name": "Generic PETG @System",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"renamed_from": "My Generic PETG",
|
||||||
|
"inherits": "fdm_filament_pet",
|
||||||
|
"compatible_printers": []
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFL99",
|
||||||
|
"setting_id": "GFSA04",
|
||||||
|
"name": "Generic PLA @System",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"renamed_from": "My Generic PLA",
|
||||||
|
"inherits": "fdm_filament_pla",
|
||||||
|
"compatible_printers": []
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFL98",
|
||||||
|
"setting_id": "GFSA04",
|
||||||
|
"name": "Generic PLA-CF @System",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"renamed_from": "My Generic PLA-CF",
|
||||||
|
"inherits": "fdm_filament_pla",
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.95"
|
||||||
|
],
|
||||||
|
"filament_type": [
|
||||||
|
"PLA-CF"
|
||||||
|
],
|
||||||
|
"compatible_printers": []
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFS99",
|
||||||
|
"setting_id": "GFSA04",
|
||||||
|
"name": "Generic PVA @System",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"renamed_from": "My Generic PVA",
|
||||||
|
"inherits": "fdm_filament_pva",
|
||||||
|
"compatible_printers": []
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"filament_id": "GFU99",
|
||||||
|
"setting_id": "GFSA04",
|
||||||
|
"name": "Generic TPU @System",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"renamed_from": "My Generic TPU",
|
||||||
|
"inherits": "fdm_filament_tpu",
|
||||||
|
"compatible_printers": []
|
||||||
|
}
|
@ -4,28 +4,28 @@
|
|||||||
"from": "system",
|
"from": "system",
|
||||||
"instantiation": "false",
|
"instantiation": "false",
|
||||||
"inherits": "fdm_filament_common",
|
"inherits": "fdm_filament_common",
|
||||||
"cool_plate_temp" : [
|
"cool_plate_temp": [
|
||||||
"105"
|
"105"
|
||||||
],
|
],
|
||||||
"eng_plate_temp" : [
|
"eng_plate_temp": [
|
||||||
"105"
|
"105"
|
||||||
],
|
],
|
||||||
"hot_plate_temp" : [
|
"hot_plate_temp": [
|
||||||
"105"
|
"105"
|
||||||
],
|
],
|
||||||
"textured_plate_temp" : [
|
"textured_plate_temp": [
|
||||||
"105"
|
"105"
|
||||||
],
|
],
|
||||||
"cool_plate_temp_initial_layer" : [
|
"cool_plate_temp_initial_layer": [
|
||||||
"105"
|
"105"
|
||||||
],
|
],
|
||||||
"eng_plate_temp_initial_layer" : [
|
"eng_plate_temp_initial_layer": [
|
||||||
"105"
|
"105"
|
||||||
],
|
],
|
||||||
"hot_plate_temp_initial_layer" : [
|
"hot_plate_temp_initial_layer": [
|
||||||
"105"
|
"105"
|
||||||
],
|
],
|
||||||
"textured_plate_temp_initial_layer" : [
|
"textured_plate_temp_initial_layer": [
|
||||||
"105"
|
"105"
|
||||||
],
|
],
|
||||||
"slow_down_for_layer_cooling": [
|
"slow_down_for_layer_cooling": [
|
||||||
@ -37,9 +37,6 @@
|
|||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"30"
|
"30"
|
||||||
],
|
],
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"28.6"
|
|
||||||
],
|
|
||||||
"filament_type": [
|
"filament_type": [
|
||||||
"ABS"
|
"ABS"
|
||||||
],
|
],
|
||||||
@ -84,5 +81,11 @@
|
|||||||
],
|
],
|
||||||
"slow_down_layer_time": [
|
"slow_down_layer_time": [
|
||||||
"3"
|
"3"
|
||||||
|
],
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.926"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"12"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -37,9 +37,6 @@
|
|||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"35"
|
"35"
|
||||||
],
|
],
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"28.6"
|
|
||||||
],
|
|
||||||
"filament_type": [
|
"filament_type": [
|
||||||
"ASA"
|
"ASA"
|
||||||
],
|
],
|
||||||
@ -84,5 +81,11 @@
|
|||||||
],
|
],
|
||||||
"slow_down_layer_time": [
|
"slow_down_layer_time": [
|
||||||
"3"
|
"3"
|
||||||
|
],
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.93"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"12"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -37,9 +37,6 @@
|
|||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"4"
|
"4"
|
||||||
],
|
],
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"8"
|
|
||||||
],
|
|
||||||
"filament_type": [
|
"filament_type": [
|
||||||
"PA"
|
"PA"
|
||||||
],
|
],
|
||||||
@ -49,9 +46,6 @@
|
|||||||
"filament_cost": [
|
"filament_cost": [
|
||||||
"20"
|
"20"
|
||||||
],
|
],
|
||||||
"nozzle_temperature_initial_layer": [
|
|
||||||
"290"
|
|
||||||
],
|
|
||||||
"reduce_fan_stop_start_freq": [
|
"reduce_fan_stop_start_freq": [
|
||||||
"0"
|
"0"
|
||||||
],
|
],
|
||||||
@ -64,9 +58,6 @@
|
|||||||
"overhang_fan_speed": [
|
"overhang_fan_speed": [
|
||||||
"30"
|
"30"
|
||||||
],
|
],
|
||||||
"nozzle_temperature": [
|
|
||||||
"290"
|
|
||||||
],
|
|
||||||
"temperature_vitrification": [
|
"temperature_vitrification": [
|
||||||
"108"
|
"108"
|
||||||
],
|
],
|
||||||
@ -81,5 +72,14 @@
|
|||||||
],
|
],
|
||||||
"slow_down_layer_time": [
|
"slow_down_layer_time": [
|
||||||
"2"
|
"2"
|
||||||
|
],
|
||||||
|
"nozzle_temperature_initial_layer": [
|
||||||
|
"290"
|
||||||
|
],
|
||||||
|
"nozzle_temperature": [
|
||||||
|
"290"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"10"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -37,9 +37,6 @@
|
|||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"30"
|
"30"
|
||||||
],
|
],
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"23.2"
|
|
||||||
],
|
|
||||||
"filament_type": [
|
"filament_type": [
|
||||||
"PC"
|
"PC"
|
||||||
],
|
],
|
||||||
@ -84,5 +81,11 @@
|
|||||||
],
|
],
|
||||||
"slow_down_layer_time": [
|
"slow_down_layer_time": [
|
||||||
"2"
|
"2"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"12"
|
||||||
|
],
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.94"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -28,18 +28,9 @@
|
|||||||
"textured_plate_temp_initial_layer" : [
|
"textured_plate_temp_initial_layer" : [
|
||||||
"80"
|
"80"
|
||||||
],
|
],
|
||||||
"slow_down_for_layer_cooling": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"close_fan_the_first_x_layers": [
|
"close_fan_the_first_x_layers": [
|
||||||
"3"
|
"3"
|
||||||
],
|
],
|
||||||
"fan_cooling_layer_time": [
|
|
||||||
"20"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"25"
|
|
||||||
],
|
|
||||||
"filament_type": [
|
"filament_type": [
|
||||||
"PETG"
|
"PETG"
|
||||||
],
|
],
|
||||||
@ -52,18 +43,6 @@
|
|||||||
"nozzle_temperature_initial_layer": [
|
"nozzle_temperature_initial_layer": [
|
||||||
"255"
|
"255"
|
||||||
],
|
],
|
||||||
"reduce_fan_stop_start_freq": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"fan_max_speed": [
|
|
||||||
"100"
|
|
||||||
],
|
|
||||||
"fan_min_speed": [
|
|
||||||
"20"
|
|
||||||
],
|
|
||||||
"overhang_fan_speed": [
|
|
||||||
"100"
|
|
||||||
],
|
|
||||||
"nozzle_temperature": [
|
"nozzle_temperature": [
|
||||||
"255"
|
"255"
|
||||||
],
|
],
|
||||||
@ -78,5 +57,38 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n"
|
"; filament start gcode\n"
|
||||||
|
],
|
||||||
|
"reduce_fan_stop_start_freq": [
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"slow_down_for_layer_cooling": [
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"fan_cooling_layer_time": [
|
||||||
|
"30"
|
||||||
|
],
|
||||||
|
"overhang_fan_speed": [
|
||||||
|
"90"
|
||||||
|
],
|
||||||
|
"overhang_fan_threshold": [
|
||||||
|
"25%"
|
||||||
|
],
|
||||||
|
"fan_max_speed": [
|
||||||
|
"90"
|
||||||
|
],
|
||||||
|
"fan_min_speed": [
|
||||||
|
"40"
|
||||||
|
],
|
||||||
|
"slow_down_min_speed": [
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"slow_down_layer_time": [
|
||||||
|
"8"
|
||||||
|
],
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.95"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"10"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -7,9 +7,6 @@
|
|||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"100"
|
"100"
|
||||||
],
|
],
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_type": [
|
"filament_type": [
|
||||||
"PLA"
|
"PLA"
|
||||||
],
|
],
|
||||||
@ -19,28 +16,28 @@
|
|||||||
"filament_cost": [
|
"filament_cost": [
|
||||||
"20"
|
"20"
|
||||||
],
|
],
|
||||||
"cool_plate_temp" : [
|
"cool_plate_temp": [
|
||||||
"60"
|
"60"
|
||||||
],
|
],
|
||||||
"eng_plate_temp" : [
|
"eng_plate_temp": [
|
||||||
"60"
|
"60"
|
||||||
],
|
],
|
||||||
"hot_plate_temp" : [
|
"hot_plate_temp": [
|
||||||
"60"
|
"60"
|
||||||
],
|
],
|
||||||
"textured_plate_temp" : [
|
"textured_plate_temp": [
|
||||||
"60"
|
"60"
|
||||||
],
|
],
|
||||||
"cool_plate_temp_initial_layer" : [
|
"cool_plate_temp_initial_layer": [
|
||||||
"60"
|
"60"
|
||||||
],
|
],
|
||||||
"eng_plate_temp_initial_layer" : [
|
"eng_plate_temp_initial_layer": [
|
||||||
"60"
|
"60"
|
||||||
],
|
],
|
||||||
"hot_plate_temp_initial_layer" : [
|
"hot_plate_temp_initial_layer": [
|
||||||
"60"
|
"60"
|
||||||
],
|
],
|
||||||
"textured_plate_temp_initial_layer" : [
|
"textured_plate_temp_initial_layer": [
|
||||||
"60"
|
"60"
|
||||||
],
|
],
|
||||||
"nozzle_temperature_initial_layer": [
|
"nozzle_temperature_initial_layer": [
|
||||||
@ -82,13 +79,19 @@
|
|||||||
"slow_down_min_speed": [
|
"slow_down_min_speed": [
|
||||||
"10"
|
"10"
|
||||||
],
|
],
|
||||||
"slow_down_layer_time": [
|
|
||||||
"4"
|
|
||||||
],
|
|
||||||
"additional_cooling_fan_speed": [
|
"additional_cooling_fan_speed": [
|
||||||
"70"
|
"70"
|
||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n"
|
"; filament start gcode\n"
|
||||||
|
],
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.98"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"12"
|
||||||
|
],
|
||||||
|
"slow_down_layer_time": [
|
||||||
|
"6"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -4,36 +4,33 @@
|
|||||||
"from": "system",
|
"from": "system",
|
||||||
"instantiation": "false",
|
"instantiation": "false",
|
||||||
"inherits": "fdm_filament_common",
|
"inherits": "fdm_filament_common",
|
||||||
"cool_plate_temp" : [
|
"cool_plate_temp": [
|
||||||
"35"
|
"35"
|
||||||
],
|
],
|
||||||
"eng_plate_temp" : [
|
"eng_plate_temp": [
|
||||||
"0"
|
"0"
|
||||||
],
|
],
|
||||||
"hot_plate_temp" : [
|
"hot_plate_temp": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
"textured_plate_temp" : [
|
"textured_plate_temp": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
"cool_plate_temp_initial_layer" : [
|
"cool_plate_temp_initial_layer": [
|
||||||
"35"
|
"35"
|
||||||
],
|
],
|
||||||
"eng_plate_temp_initial_layer" : [
|
"eng_plate_temp_initial_layer": [
|
||||||
"0"
|
"0"
|
||||||
],
|
],
|
||||||
"hot_plate_temp_initial_layer" : [
|
"hot_plate_temp_initial_layer": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
"textured_plate_temp_initial_layer" : [
|
"textured_plate_temp_initial_layer": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"100"
|
"100"
|
||||||
],
|
],
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"15"
|
|
||||||
],
|
|
||||||
"filament_soluble": [
|
"filament_soluble": [
|
||||||
"1"
|
"1"
|
||||||
],
|
],
|
||||||
@ -85,16 +82,22 @@
|
|||||||
"nozzle_temperature_range_high": [
|
"nozzle_temperature_range_high": [
|
||||||
"250"
|
"250"
|
||||||
],
|
],
|
||||||
"slow_down_min_speed": [
|
|
||||||
"10"
|
|
||||||
],
|
|
||||||
"slow_down_layer_time": [
|
|
||||||
"4"
|
|
||||||
],
|
|
||||||
"additional_cooling_fan_speed": [
|
"additional_cooling_fan_speed": [
|
||||||
"70"
|
"70"
|
||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n"
|
"; filament start gcode\n"
|
||||||
|
],
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.95"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"12"
|
||||||
|
],
|
||||||
|
"slow_down_layer_time": [
|
||||||
|
"7"
|
||||||
|
],
|
||||||
|
"slow_down_min_speed": [
|
||||||
|
"10"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -4,36 +4,33 @@
|
|||||||
"from": "system",
|
"from": "system",
|
||||||
"instantiation": "false",
|
"instantiation": "false",
|
||||||
"inherits": "fdm_filament_common",
|
"inherits": "fdm_filament_common",
|
||||||
"cool_plate_temp" : [
|
"cool_plate_temp": [
|
||||||
"30"
|
"30"
|
||||||
],
|
],
|
||||||
"eng_plate_temp" : [
|
"eng_plate_temp": [
|
||||||
"30"
|
"30"
|
||||||
],
|
],
|
||||||
"hot_plate_temp" : [
|
"hot_plate_temp": [
|
||||||
"35"
|
"35"
|
||||||
],
|
],
|
||||||
"textured_plate_temp" : [
|
"textured_plate_temp": [
|
||||||
"35"
|
"35"
|
||||||
],
|
],
|
||||||
"cool_plate_temp_initial_layer" : [
|
"cool_plate_temp_initial_layer": [
|
||||||
"30"
|
"30"
|
||||||
],
|
],
|
||||||
"eng_plate_temp_initial_layer" : [
|
"eng_plate_temp_initial_layer": [
|
||||||
"30"
|
"30"
|
||||||
],
|
],
|
||||||
"hot_plate_temp_initial_layer" : [
|
"hot_plate_temp_initial_layer": [
|
||||||
"35"
|
"35"
|
||||||
],
|
],
|
||||||
"textured_plate_temp_initial_layer" : [
|
"textured_plate_temp_initial_layer": [
|
||||||
"35"
|
"35"
|
||||||
],
|
],
|
||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"100"
|
"100"
|
||||||
],
|
],
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"15"
|
|
||||||
],
|
|
||||||
"filament_type": [
|
"filament_type": [
|
||||||
"TPU"
|
"TPU"
|
||||||
],
|
],
|
||||||
@ -84,5 +81,8 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n"
|
"; filament start gcode\n"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"3.2"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -2,7 +2,7 @@
|
|||||||
var m_ProfileItem;
|
var m_ProfileItem;
|
||||||
|
|
||||||
var FilamentPriority=new Array( "pla","abs","pet","tpu","pc");
|
var FilamentPriority=new Array( "pla","abs","pet","tpu","pc");
|
||||||
var VendorPriority=new Array("bambu lab","bambulab","bbl","kexcelled","polymaker","esun","generic");
|
var VendorPriority=new Array("Orca Built-in","bambu lab","bambulab","bbl","kexcelled","polymaker","esun","Generic");
|
||||||
|
|
||||||
function OnInit()
|
function OnInit()
|
||||||
{
|
{
|
||||||
@ -139,7 +139,7 @@ function SortUI()
|
|||||||
if( fModel=='')
|
if( fModel=='')
|
||||||
{
|
{
|
||||||
// Orca: hide
|
// Orca: hide
|
||||||
bFind=false;
|
bFind=true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -199,7 +199,11 @@ function SortUI()
|
|||||||
let strModel=pFila.attr("model");
|
let strModel=pFila.attr("model");
|
||||||
let strFilalist=pFila.attr("filalist");
|
let strFilalist=pFila.attr("filalist");
|
||||||
|
|
||||||
pFila.attr("model", strModel+fModel);
|
if(strModel == '' || fModel == '')
|
||||||
|
pFila.attr("model", '');
|
||||||
|
else
|
||||||
|
pFila.attr("model", strModel+fModel);
|
||||||
|
|
||||||
pFila.attr("filalist", strFilalist+fWholeName+';');
|
pFila.attr("filalist", strFilalist+fWholeName+';');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,29 +71,6 @@ function SortUI()
|
|||||||
ModelList.push(OneMode);
|
ModelList.push(OneMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
//machine
|
|
||||||
// let HtmlMachine='';
|
|
||||||
//
|
|
||||||
// let nMachine=m_ProfileItem['machine'].length;
|
|
||||||
// for(let n=0;n<nMachine;n++)
|
|
||||||
// {
|
|
||||||
// let OneMachine=m_ProfileItem['machine'][n];
|
|
||||||
//
|
|
||||||
// let sName=OneMachine['name'];
|
|
||||||
// let sModel=OneMachine['model'];
|
|
||||||
//
|
|
||||||
// if( ModelList.in_array(sModel) )
|
|
||||||
// {
|
|
||||||
// HtmlMachine+='<div><input type="checkbox" mode="'+sModel+'" onChange="MachineClick()" />'+sName+'</div>';
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// $('#MachineList .CValues').append(HtmlMachine);
|
|
||||||
// $('#MachineList .CValues input').prop("checked",true);
|
|
||||||
// if(nMachine<=1)
|
|
||||||
// {
|
|
||||||
// $('#MachineList').hide();
|
|
||||||
// }
|
|
||||||
|
|
||||||
//model
|
//model
|
||||||
let HtmlMode='';
|
let HtmlMode='';
|
||||||
@ -131,15 +108,6 @@ function SortUI()
|
|||||||
let fSelect=OneFila['selected'];
|
let fSelect=OneFila['selected'];
|
||||||
let fModel=OneFila['models']
|
let fModel=OneFila['models']
|
||||||
|
|
||||||
//alert( fWholeName+' - '+fShortName+' - '+fVendor+' - '+fType+' - '+fSelect+' - '+fModel );
|
|
||||||
|
|
||||||
// if(OneFila['name'].indexOf("Bambu PA-CF")>=0)
|
|
||||||
// {
|
|
||||||
// alert( fShortName+' - '+fVendor+' - '+fType+' - '+fSelect+' - '+fModel )
|
|
||||||
//
|
|
||||||
// let b=1+2;
|
|
||||||
// }
|
|
||||||
|
|
||||||
let bFind=false;
|
let bFind=false;
|
||||||
//let bCheck=$("#MachineList input:first").prop("checked");
|
//let bCheck=$("#MachineList input:first").prop("checked");
|
||||||
if( fModel=='')
|
if( fModel=='')
|
||||||
@ -204,7 +172,10 @@ function SortUI()
|
|||||||
let strModel=pFila.attr("model");
|
let strModel=pFila.attr("model");
|
||||||
let strFilalist=pFila.attr("filalist");
|
let strFilalist=pFila.attr("filalist");
|
||||||
|
|
||||||
pFila.attr("model", strModel+fModel);
|
if(strModel == '' || fModel == '')
|
||||||
|
pFila.attr("model", '');
|
||||||
|
else
|
||||||
|
pFila.attr("model", strModel+fModel);
|
||||||
pFila.attr("filalist", strFilalist+fWholeName+';');
|
pFila.attr("filalist", strFilalist+fWholeName+';');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,6 +147,8 @@ int main(int argc, char* argv[])
|
|||||||
std::cout << "Validation failed" << std::endl;
|
std::cout << "Validation failed" << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
// Report loaded presets
|
||||||
|
std::cout << "Total loaded vendors: " << preset_bundle->vendors.size() << std::endl;
|
||||||
|
|
||||||
if (generate_user_preset) {
|
if (generate_user_preset) {
|
||||||
generate_custom_presets(preset_bundle, app_config);
|
generate_custom_presets(preset_bundle, app_config);
|
||||||
|
@ -839,8 +839,9 @@ int ConfigBase::load_from_json(const std::string &file, ConfigSubstitutionContex
|
|||||||
}
|
}
|
||||||
else if (!load_inherits_to_config && boost::iequals(it.key(), BBL_JSON_KEY_INHERITS)) {
|
else if (!load_inherits_to_config && boost::iequals(it.key(), BBL_JSON_KEY_INHERITS)) {
|
||||||
key_values.emplace(BBL_JSON_KEY_INHERITS, it.value());
|
key_values.emplace(BBL_JSON_KEY_INHERITS, it.value());
|
||||||
}
|
} else if (boost::iequals(it.key(), ORCA_JSON_KEY_RENAMED_FROM)) {
|
||||||
else {
|
key_values.emplace(ORCA_JSON_KEY_RENAMED_FROM, it.value());
|
||||||
|
} else {
|
||||||
t_config_option_key opt_key = it.key();
|
t_config_option_key opt_key = it.key();
|
||||||
std::string value_str;
|
std::string value_str;
|
||||||
|
|
||||||
|
@ -576,9 +576,10 @@ std::string Preset::label(bool no_alias) const
|
|||||||
|
|
||||||
bool is_compatible_with_print(const PresetWithVendorProfile &preset, const PresetWithVendorProfile &active_print, const PresetWithVendorProfile &active_printer)
|
bool is_compatible_with_print(const PresetWithVendorProfile &preset, const PresetWithVendorProfile &active_print, const PresetWithVendorProfile &active_printer)
|
||||||
{
|
{
|
||||||
if (preset.vendor != nullptr && preset.vendor != active_printer.vendor)
|
// Orca: we allow cross vendor compatibility
|
||||||
// The current profile has a vendor assigned and it is different from the active print's vendor.
|
// if (preset.vendor != nullptr && preset.vendor != active_printer.vendor)
|
||||||
return false;
|
// // The current profile has a vendor assigned and it is different from the active print's vendor.
|
||||||
|
// return false;
|
||||||
auto &condition = preset.preset.compatible_prints_condition();
|
auto &condition = preset.preset.compatible_prints_condition();
|
||||||
auto *compatible_prints = dynamic_cast<const ConfigOptionStrings*>(preset.preset.config.option("compatible_prints"));
|
auto *compatible_prints = dynamic_cast<const ConfigOptionStrings*>(preset.preset.config.option("compatible_prints"));
|
||||||
bool has_compatible_prints = compatible_prints != nullptr && ! compatible_prints->values.empty();
|
bool has_compatible_prints = compatible_prints != nullptr && ! compatible_prints->values.empty();
|
||||||
@ -613,9 +614,19 @@ bool is_compatible_with_parent_printer(const PresetWithVendorProfile& preset, co
|
|||||||
|
|
||||||
bool is_compatible_with_printer(const PresetWithVendorProfile &preset, const PresetWithVendorProfile &active_printer, const DynamicPrintConfig *extra_config)
|
bool is_compatible_with_printer(const PresetWithVendorProfile &preset, const PresetWithVendorProfile &active_printer, const DynamicPrintConfig *extra_config)
|
||||||
{
|
{
|
||||||
if (preset.vendor != nullptr && preset.vendor != active_printer.vendor)
|
// Orca: we allow cross vendor compatibility
|
||||||
// The current profile has a vendor assigned and it is different from the active print's vendor.
|
// if (preset.vendor != nullptr && preset.vendor != active_printer.vendor)
|
||||||
return false;
|
// // The current profile has a vendor assigned and it is different from the active print's vendor.
|
||||||
|
// return false;
|
||||||
|
|
||||||
|
// Orca: check excluded printers
|
||||||
|
if (preset.vendor != nullptr && preset.preset.type == Preset::TYPE_FILAMENT) {
|
||||||
|
const auto& excluded_printers = preset.preset.m_excluded_from;
|
||||||
|
const auto excluded = preset.vendor->name == PresetBundle::ORCA_FILAMENT_LIBRARY &&
|
||||||
|
excluded_printers.find(active_printer.preset.name) != excluded_printers.end();
|
||||||
|
if (excluded)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
auto &condition = preset.preset.compatible_printers_condition();
|
auto &condition = preset.preset.compatible_printers_condition();
|
||||||
auto *compatible_printers = dynamic_cast<const ConfigOptionStrings*>(preset.preset.config.option("compatible_printers"));
|
auto *compatible_printers = dynamic_cast<const ConfigOptionStrings*>(preset.preset.config.option("compatible_printers"));
|
||||||
bool has_compatible_printers = compatible_printers != nullptr && ! compatible_printers->values.empty();
|
bool has_compatible_printers = compatible_printers != nullptr && ! compatible_printers->values.empty();
|
||||||
@ -629,10 +640,9 @@ bool is_compatible_with_printer(const PresetWithVendorProfile &preset, const Pre
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return preset.preset.is_default || active_printer.preset.name.empty() || !has_compatible_printers ||
|
return preset.preset.is_default || active_printer.preset.name.empty() || !has_compatible_printers ||
|
||||||
std::find(compatible_printers->values.begin(), compatible_printers->values.end(), active_printer.preset.name) !=
|
std::find(compatible_printers->values.begin(), compatible_printers->values.end(), active_printer.preset.name) !=
|
||||||
compatible_printers->values.end()
|
compatible_printers->values.end() ||
|
||||||
//BBS
|
(!active_printer.preset.is_system && is_compatible_with_parent_printer(preset, active_printer));
|
||||||
|| (!active_printer.preset.is_system && is_compatible_with_parent_printer(preset, active_printer));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_compatible_with_printer(const PresetWithVendorProfile &preset, const PresetWithVendorProfile &active_printer)
|
bool is_compatible_with_printer(const PresetWithVendorProfile &preset, const PresetWithVendorProfile &active_printer)
|
||||||
@ -1145,7 +1155,7 @@ void PresetCollection::load_presets(
|
|||||||
if (key_values.find("instantiation") != key_values.end())
|
if (key_values.find("instantiation") != key_values.end())
|
||||||
preset.is_visible = key_values["instantiation"] != "false";
|
preset.is_visible = key_values["instantiation"] != "false";
|
||||||
|
|
||||||
//BBS: use inherit config as the base
|
//Orca: find and use the inherit config as the base
|
||||||
Preset* inherit_preset = nullptr;
|
Preset* inherit_preset = nullptr;
|
||||||
ConfigOption* inherits_config = config.option(BBL_JSON_KEY_INHERITS);
|
ConfigOption* inherits_config = config.option(BBL_JSON_KEY_INHERITS);
|
||||||
|
|
||||||
@ -1154,6 +1164,12 @@ void PresetCollection::load_presets(
|
|||||||
ConfigOptionString * option_str = dynamic_cast<ConfigOptionString *> (inherits_config);
|
ConfigOptionString * option_str = dynamic_cast<ConfigOptionString *> (inherits_config);
|
||||||
std::string inherits_value = option_str->value;
|
std::string inherits_value = option_str->value;
|
||||||
inherit_preset = this->find_preset(inherits_value, false, true);
|
inherit_preset = this->find_preset(inherits_value, false, true);
|
||||||
|
// Orca: try to find if the parent preset has been renamed
|
||||||
|
if (inherit_preset == nullptr) {
|
||||||
|
auto it = this->find_preset_renamed(inherits_value);
|
||||||
|
if (it != m_presets.end())
|
||||||
|
inherit_preset = &(*it);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
@ -2123,6 +2139,7 @@ bool PresetCollection::clone_presets(std::vector<Preset const *> const &presets,
|
|||||||
auto &preset = new_presets.back();
|
auto &preset = new_presets.back();
|
||||||
preset.vendor = nullptr;
|
preset.vendor = nullptr;
|
||||||
preset.renamed_from.clear();
|
preset.renamed_from.clear();
|
||||||
|
preset.m_excluded_from.clear();
|
||||||
preset.setting_id.clear();
|
preset.setting_id.clear();
|
||||||
preset.inherits().clear();
|
preset.inherits().clear();
|
||||||
preset.is_default = false;
|
preset.is_default = false;
|
||||||
@ -2251,6 +2268,7 @@ void PresetCollection::save_current_preset(const std::string &new_name, bool det
|
|||||||
preset.inherits().clear();
|
preset.inherits().clear();
|
||||||
preset.alias.clear();
|
preset.alias.clear();
|
||||||
preset.renamed_from.clear();
|
preset.renamed_from.clear();
|
||||||
|
preset.m_excluded_from.clear();
|
||||||
BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": save preset %1% , with detach")%new_name;
|
BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": save preset %1% , with detach")%new_name;
|
||||||
}
|
}
|
||||||
//BBS: add lock logic for sync preset in background
|
//BBS: add lock logic for sync preset in background
|
||||||
@ -2278,6 +2296,7 @@ void PresetCollection::save_current_preset(const std::string &new_name, bool det
|
|||||||
preset.vendor = nullptr;
|
preset.vendor = nullptr;
|
||||||
preset.alias.clear();
|
preset.alias.clear();
|
||||||
preset.renamed_from.clear();
|
preset.renamed_from.clear();
|
||||||
|
preset.m_excluded_from.clear();
|
||||||
preset.setting_id.clear();
|
preset.setting_id.clear();
|
||||||
if (detach) {
|
if (detach) {
|
||||||
// Clear the link to the parent profile.
|
// Clear the link to the parent profile.
|
||||||
@ -2525,6 +2544,17 @@ Preset* PresetCollection::find_preset(const std::string &name, bool first_visibl
|
|||||||
first_visible_if_not_found ? &this->first_visible() : nullptr;
|
first_visible_if_not_found ? &this->first_visible() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Preset* PresetCollection::find_preset2(const std::string& name) const
|
||||||
|
{
|
||||||
|
auto preset = const_cast<PresetCollection*>(this)->find_preset(name, false, true);
|
||||||
|
if (preset == nullptr) {
|
||||||
|
auto _name = get_preset_name_renamed(name);
|
||||||
|
if(_name != nullptr)
|
||||||
|
preset = const_cast<PresetCollection*>(this)->find_preset(*_name, false, true);
|
||||||
|
}
|
||||||
|
return preset;
|
||||||
|
}
|
||||||
|
|
||||||
// Return index of the first visible preset. Certainly at least the '- default -' preset shall be visible.
|
// Return index of the first visible preset. Certainly at least the '- default -' preset shall be visible.
|
||||||
size_t PresetCollection::first_visible_idx() const
|
size_t PresetCollection::first_visible_idx() const
|
||||||
{
|
{
|
||||||
@ -2859,6 +2889,38 @@ void PresetCollection::update_map_alias_to_profile_name()
|
|||||||
//std::sort(m_map_alias_to_profile_name.begin(), m_map_alias_to_profile_name.end(), [](auto &l, auto &r) { return l.first < r.first; });
|
//std::sort(m_map_alias_to_profile_name.begin(), m_map_alias_to_profile_name.end(), [](auto &l, auto &r) { return l.first < r.first; });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PresetCollection::update_library_profile_excluded_from()
|
||||||
|
{
|
||||||
|
// Orca: Collect all filament presets that has empty compatible_printers and belongs to the Orca Filament Library.
|
||||||
|
std::map<std::string, std::set<std::string>*> excluded_froms;
|
||||||
|
for (Preset& preset : m_presets) {
|
||||||
|
if (preset.vendor != nullptr && preset.vendor->name == PresetBundle::ORCA_FILAMENT_LIBRARY) {
|
||||||
|
// check if the preset has empty compatible_printers
|
||||||
|
const auto* compatible_printers = dynamic_cast<const ConfigOptionStrings*>(preset.config.option("compatible_printers"));
|
||||||
|
if (compatible_printers == nullptr || compatible_printers->values.empty())
|
||||||
|
excluded_froms[preset.alias] = &preset.m_excluded_from;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check all presets that has the same alias as the filament presets with empty compatible_printers in Orca Filament Library.
|
||||||
|
for (const Preset& preset : m_presets) {
|
||||||
|
if (preset.vendor == nullptr || preset.vendor->name == PresetBundle::ORCA_FILAMENT_LIBRARY)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const auto* compatible_printers = dynamic_cast<const ConfigOptionStrings*>(preset.config.option("compatible_printers"));
|
||||||
|
// All profiles in concrete vendor profile shouldn't have empty compatible_printers, but here we check it for safety.
|
||||||
|
if (compatible_printers == nullptr || compatible_printers->values.empty())
|
||||||
|
continue;
|
||||||
|
auto itr = excluded_froms.find(preset.alias);
|
||||||
|
if (itr != excluded_froms.end()) {
|
||||||
|
// Add the printer models to the excluded_from list.
|
||||||
|
for (const std::string& printer_name : compatible_printers->values) {
|
||||||
|
itr->second->insert(printer_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void PresetCollection::update_map_system_profile_renamed()
|
void PresetCollection::update_map_system_profile_renamed()
|
||||||
{
|
{
|
||||||
m_map_system_profile_renamed.clear();
|
m_map_system_profile_renamed.clear();
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
#include <string>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
@ -63,7 +64,8 @@
|
|||||||
#define BBL_JSON_KEY_DEFAULT_MATERIALS "default_materials"
|
#define BBL_JSON_KEY_DEFAULT_MATERIALS "default_materials"
|
||||||
#define BBL_JSON_KEY_MODEL_ID "model_id"
|
#define BBL_JSON_KEY_MODEL_ID "model_id"
|
||||||
|
|
||||||
//BBL: json path
|
// Orca extension
|
||||||
|
#define ORCA_JSON_KEY_RENAMED_FROM "renamed_from"
|
||||||
|
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
@ -232,6 +234,11 @@ public:
|
|||||||
// and to match the "inherits" field of user profiles with updated system profiles.
|
// and to match the "inherits" field of user profiles with updated system profiles.
|
||||||
std::vector<std::string> renamed_from;
|
std::vector<std::string> renamed_from;
|
||||||
|
|
||||||
|
// Orca: maintain a list of printer models that are excluded from this preset, designed for filaments without compatible_printer defined
|
||||||
|
// (hence they are visible to all printer models by default) in Orca Filament Library. However, we might have speciliazed filament for
|
||||||
|
// certain printer models defined in the vendor profile as well, in this case we want to hide this generic preset for these printer models.
|
||||||
|
std::set<std::string> m_excluded_from;
|
||||||
|
|
||||||
//BBS
|
//BBS
|
||||||
Semver version; // version of preset
|
Semver version; // version of preset
|
||||||
std::string ini_str; // ini string of preset
|
std::string ini_str; // ini string of preset
|
||||||
@ -595,6 +602,8 @@ public:
|
|||||||
Preset* find_preset(const std::string &name, bool first_visible_if_not_found = false, bool real = false);
|
Preset* find_preset(const std::string &name, bool first_visible_if_not_found = false, bool real = false);
|
||||||
const Preset* find_preset(const std::string &name, bool first_visible_if_not_found = false) const
|
const Preset* find_preset(const std::string &name, bool first_visible_if_not_found = false) const
|
||||||
{ return const_cast<PresetCollection*>(this)->find_preset(name, first_visible_if_not_found); }
|
{ return const_cast<PresetCollection*>(this)->find_preset(name, first_visible_if_not_found); }
|
||||||
|
// Orca: find preset, if not found, keep searching in the renamed history
|
||||||
|
const Preset* find_preset2(const std::string &name) const;
|
||||||
|
|
||||||
size_t first_visible_idx() const;
|
size_t first_visible_idx() const;
|
||||||
// Return index of the first compatible preset. Certainly at least the '- default -' preset shall be compatible.
|
// Return index of the first compatible preset. Certainly at least the '- default -' preset shall be compatible.
|
||||||
@ -718,6 +727,10 @@ protected:
|
|||||||
// Update m_map_system_profile_renamed from loaded system profiles.
|
// Update m_map_system_profile_renamed from loaded system profiles.
|
||||||
void update_map_system_profile_renamed();
|
void update_map_system_profile_renamed();
|
||||||
|
|
||||||
|
// Orca: update m_excluded_from loaded system profiles.
|
||||||
|
void update_library_profile_excluded_from();
|
||||||
|
|
||||||
|
|
||||||
void set_custom_preset_alias(Preset &preset);
|
void set_custom_preset_alias(Preset &preset);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -160,7 +160,12 @@ public:
|
|||||||
// and the system profiles will point to the VendorProfile instances owned by PresetBundle::vendors.
|
// and the system profiles will point to the VendorProfile instances owned by PresetBundle::vendors.
|
||||||
VendorMap vendors;
|
VendorMap vendors;
|
||||||
|
|
||||||
struct ObsoletePresets {
|
// Orca: for OrcaFilamentLibrary
|
||||||
|
std::map<std::string, DynamicPrintConfig> m_config_maps;
|
||||||
|
std::map<std::string, std::string> m_filament_id_maps;
|
||||||
|
|
||||||
|
struct ObsoletePresets
|
||||||
|
{
|
||||||
std::vector<std::string> prints;
|
std::vector<std::string> prints;
|
||||||
std::vector<std::string> sla_prints;
|
std::vector<std::string> sla_prints;
|
||||||
std::vector<std::string> filaments;
|
std::vector<std::string> filaments;
|
||||||
@ -212,9 +217,9 @@ public:
|
|||||||
// Don't do any config substitutions when loading a system profile, perform and report substitutions otherwise.
|
// Don't do any config substitutions when loading a system profile, perform and report substitutions otherwise.
|
||||||
/*std::pair<PresetsConfigSubstitutions, size_t> load_configbundle(
|
/*std::pair<PresetsConfigSubstitutions, size_t> load_configbundle(
|
||||||
const std::string &path, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule);*/
|
const std::string &path, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule);*/
|
||||||
//BBS: add json related logic
|
//Orca: load config bundle from json, pass the base bundle to support cross vendor inheritance
|
||||||
std::pair<PresetsConfigSubstitutions, size_t> load_vendor_configs_from_json(
|
std::pair<PresetsConfigSubstitutions, size_t> load_vendor_configs_from_json(
|
||||||
const std::string &path, const std::string &vendor_name, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule);
|
const std::string &path, const std::string &vendor_name, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule, const PresetBundle* base_bundle = nullptr);
|
||||||
|
|
||||||
// Export a config bundle file containing all the presets and the names of the active presets.
|
// Export a config bundle file containing all the presets and the names of the active presets.
|
||||||
//void export_configbundle(const std::string &path, bool export_system_settings = false, bool export_physical_printers = false);
|
//void export_configbundle(const std::string &path, bool export_system_settings = false, bool export_physical_printers = false);
|
||||||
@ -261,11 +266,13 @@ public:
|
|||||||
std::pair<PresetsConfigSubstitutions, std::string> load_system_filaments_json(ForwardCompatibilitySubstitutionRule compatibility_rule);
|
std::pair<PresetsConfigSubstitutions, std::string> load_system_filaments_json(ForwardCompatibilitySubstitutionRule compatibility_rule);
|
||||||
VendorProfile get_custom_vendor_models() const;
|
VendorProfile get_custom_vendor_models() const;
|
||||||
|
|
||||||
//BBS: add BBL as default
|
//orca: add 'custom' as default
|
||||||
static const char *BBL_BUNDLE;
|
static const char *ORCA_DEFAULT_BUNDLE;
|
||||||
static const char *BBL_DEFAULT_PRINTER_MODEL;
|
static const char *ORCA_DEFAULT_PRINTER_MODEL;
|
||||||
static const char *BBL_DEFAULT_PRINTER_VARIANT;
|
static const char *ORCA_DEFAULT_PRINTER_VARIANT;
|
||||||
static const char *BBL_DEFAULT_FILAMENT;
|
static const char *ORCA_DEFAULT_FILAMENT;
|
||||||
|
static const char *ORCA_FILAMENT_LIBRARY;
|
||||||
|
|
||||||
|
|
||||||
static std::array<Preset::Type, 3> types_list(PrinterTechnology pt) {
|
static std::array<Preset::Type, 3> types_list(PrinterTechnology pt) {
|
||||||
if (pt == ptFFF)
|
if (pt == ptFFF)
|
||||||
|
@ -1262,38 +1262,38 @@ void PrintConfigDef::init_fff_params()
|
|||||||
|
|
||||||
def = this->add("compatible_printers", coStrings);
|
def = this->add("compatible_printers", coStrings);
|
||||||
def->label = L("Compatible machine");
|
def->label = L("Compatible machine");
|
||||||
def->mode = comDevelop;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionStrings());
|
def->set_default_value(new ConfigOptionStrings());
|
||||||
def->cli = ConfigOptionDef::nocli;
|
def->cli = ConfigOptionDef::nocli;
|
||||||
|
|
||||||
//BBS.
|
//BBS.
|
||||||
def = this->add("upward_compatible_machine", coStrings);
|
def = this->add("upward_compatible_machine", coStrings);
|
||||||
def->label = L("upward compatible machine");
|
def->label = L("upward compatible machine");
|
||||||
def->mode = comDevelop;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionStrings());
|
def->set_default_value(new ConfigOptionStrings());
|
||||||
def->cli = ConfigOptionDef::nocli;
|
def->cli = ConfigOptionDef::nocli;
|
||||||
|
|
||||||
def = this->add("compatible_printers_condition", coString);
|
def = this->add("compatible_printers_condition", coString);
|
||||||
def->label = L("Compatible machine condition");
|
def->label = L("Compatible machine condition");
|
||||||
//def->tooltip = L("A boolean expression using the configuration values of an active printer profile. "
|
def->tooltip = L("A boolean expression using the configuration values of an active printer profile. "
|
||||||
// "If this expression evaluates to true, this profile is considered compatible "
|
"If this expression evaluates to true, this profile is considered compatible "
|
||||||
// "with the active printer profile.");
|
"with the active printer profile.");
|
||||||
def->mode = comDevelop;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionString());
|
def->set_default_value(new ConfigOptionString());
|
||||||
def->cli = ConfigOptionDef::nocli;
|
def->cli = ConfigOptionDef::nocli;
|
||||||
|
|
||||||
def = this->add("compatible_prints", coStrings);
|
def = this->add("compatible_prints", coStrings);
|
||||||
def->label = L("Compatible process profiles");
|
def->label = L("Compatible process profiles");
|
||||||
def->mode = comDevelop;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionStrings());
|
def->set_default_value(new ConfigOptionStrings());
|
||||||
def->cli = ConfigOptionDef::nocli;
|
def->cli = ConfigOptionDef::nocli;
|
||||||
|
|
||||||
def = this->add("compatible_prints_condition", coString);
|
def = this->add("compatible_prints_condition", coString);
|
||||||
def->label = L("Compatible process profiles condition");
|
def->label = L("Compatible process profiles condition");
|
||||||
//def->tooltip = L("A boolean expression using the configuration values of an active print profile. "
|
def->tooltip = L("A boolean expression using the configuration values of an active print profile. "
|
||||||
// "If this expression evaluates to true, this profile is considered compatible "
|
"If this expression evaluates to true, this profile is considered compatible "
|
||||||
// "with the active print profile.");
|
"with the active print profile.");
|
||||||
def->mode = comDevelop;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionString());
|
def->set_default_value(new ConfigOptionString());
|
||||||
def->cli = ConfigOptionDef::nocli;
|
def->cli = ConfigOptionDef::nocli;
|
||||||
|
|
||||||
|
@ -123,18 +123,18 @@ BundleMap BundleMap::load()
|
|||||||
const auto vendor_dir = (boost::filesystem::path(Slic3r::data_dir()) / PRESET_SYSTEM_DIR).make_preferred();
|
const auto vendor_dir = (boost::filesystem::path(Slic3r::data_dir()) / PRESET_SYSTEM_DIR).make_preferred();
|
||||||
const auto rsrc_vendor_dir = (boost::filesystem::path(resources_dir()) / "profiles").make_preferred();
|
const auto rsrc_vendor_dir = (boost::filesystem::path(resources_dir()) / "profiles").make_preferred();
|
||||||
|
|
||||||
//BBS: add BBL as default
|
//Orca: add custom as default
|
||||||
//BBS: add json logic for vendor bundle
|
//Orca: add json logic for vendor bundle
|
||||||
auto bbl_bundle_path = (vendor_dir / PresetBundle::BBL_BUNDLE).replace_extension(".json");
|
auto orca_bundle_path = (vendor_dir / PresetBundle::ORCA_DEFAULT_BUNDLE).replace_extension(".json");
|
||||||
auto bbl_bundle_rsrc = false;
|
auto orca_bundle_rsrc = false;
|
||||||
if (!boost::filesystem::exists(bbl_bundle_path)) {
|
if (!boost::filesystem::exists(orca_bundle_path)) {
|
||||||
bbl_bundle_path = (rsrc_vendor_dir / PresetBundle::BBL_BUNDLE).replace_extension(".json");
|
orca_bundle_path = (rsrc_vendor_dir / PresetBundle::ORCA_DEFAULT_BUNDLE).replace_extension(".json");
|
||||||
bbl_bundle_rsrc = true;
|
orca_bundle_rsrc = true;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Bundle bbl_bundle;
|
Bundle bbl_bundle;
|
||||||
if (bbl_bundle.load(std::move(bbl_bundle_path), bbl_bundle_rsrc, true))
|
if (bbl_bundle.load(std::move(orca_bundle_path), orca_bundle_rsrc, true))
|
||||||
res.emplace(PresetBundle::BBL_BUNDLE, std::move(bbl_bundle));
|
res.emplace(PresetBundle::ORCA_DEFAULT_BUNDLE, std::move(bbl_bundle));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load the other bundles in the datadir/vendor directory
|
// Load the other bundles in the datadir/vendor directory
|
||||||
@ -163,10 +163,10 @@ BundleMap BundleMap::load()
|
|||||||
|
|
||||||
Bundle& BundleMap::bbl_bundle()
|
Bundle& BundleMap::bbl_bundle()
|
||||||
{
|
{
|
||||||
//BBS: add BBL as default
|
//Orca: add custom as default
|
||||||
auto it = find(PresetBundle::BBL_BUNDLE);
|
auto it = find(PresetBundle::ORCA_DEFAULT_BUNDLE);
|
||||||
if (it == end()) {
|
if (it == end()) {
|
||||||
throw Slic3r::RuntimeError("ConfigWizard: Internal error in BundleMap: BBL_BUNDLE not loaded");
|
throw Slic3r::RuntimeError("ConfigWizard: Internal error in BundleMap: ORCA_DEFAULT_BUNDLE not loaded");
|
||||||
}
|
}
|
||||||
|
|
||||||
return it->second;
|
return it->second;
|
||||||
@ -625,12 +625,11 @@ std::set<std::string> PagePrinters::get_selected_models()
|
|||||||
|
|
||||||
void PagePrinters::set_run_reason(ConfigWizard::RunReason run_reason)
|
void PagePrinters::set_run_reason(ConfigWizard::RunReason run_reason)
|
||||||
{
|
{
|
||||||
//BBS: add BBL as default
|
//Orca: add custom as default
|
||||||
if (is_primary_printer_page
|
if (is_primary_printer_page
|
||||||
&& (run_reason == ConfigWizard::RR_DATA_EMPTY || run_reason == ConfigWizard::RR_DATA_LEGACY)
|
&& (run_reason == ConfigWizard::RR_DATA_EMPTY || run_reason == ConfigWizard::RR_DATA_LEGACY)
|
||||||
&& printer_pickers.size() > 0
|
&& printer_pickers.size() > 0
|
||||||
&& printer_pickers[0]->vendor_id == PresetBundle::BBL_BUNDLE) {
|
&& printer_pickers[0]->vendor_id == PresetBundle::ORCA_DEFAULT_BUNDLE) {
|
||||||
//BBS: select alll bbs machine by default
|
|
||||||
//printer_pickers[0]->select_one(0, true);
|
//printer_pickers[0]->select_one(0, true);
|
||||||
printer_pickers[0]->select_all(true);
|
printer_pickers[0]->select_all(true);
|
||||||
}
|
}
|
||||||
@ -1941,8 +1940,8 @@ void ConfigWizard::priv::create_3rdparty_pages()
|
|||||||
{
|
{
|
||||||
for (const auto &pair : bundles) {
|
for (const auto &pair : bundles) {
|
||||||
const VendorProfile *vendor = pair.second.vendor_profile;
|
const VendorProfile *vendor = pair.second.vendor_profile;
|
||||||
//BBS: add BBL as default
|
//Orca: add custom as default
|
||||||
if (vendor->id == PresetBundle::BBL_BUNDLE) { continue; }
|
if (vendor->id == PresetBundle::ORCA_DEFAULT_BUNDLE) { continue; }
|
||||||
|
|
||||||
bool is_fff_technology = false;
|
bool is_fff_technology = false;
|
||||||
bool is_sla_technology = false;
|
bool is_sla_technology = false;
|
||||||
|
@ -845,7 +845,7 @@ void GCodeViewer::init(ConfigOptionMode mode, PresetBundle* preset_bundle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (filename.empty()) {
|
if (filename.empty()) {
|
||||||
filename = preset_bundle->get_hotend_model_for_printer_model(PresetBundle::BBL_DEFAULT_PRINTER_MODEL);
|
filename = preset_bundle->get_hotend_model_for_printer_model(PresetBundle::ORCA_DEFAULT_PRINTER_MODEL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4736,7 +4736,7 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg)
|
|||||||
m_sync_update_thread = Slic3r::create_thread(
|
m_sync_update_thread = Slic3r::create_thread(
|
||||||
[this, progressFn, cancelFn, finishFn, t = std::weak_ptr<int>(m_user_sync_token)] {
|
[this, progressFn, cancelFn, finishFn, t = std::weak_ptr<int>(m_user_sync_token)] {
|
||||||
// get setting list, update setting list
|
// get setting list, update setting list
|
||||||
std::string version = preset_bundle->get_vendor_profile_version(PresetBundle::BBL_BUNDLE).to_string();
|
std::string version = preset_bundle->get_vendor_profile_version(PresetBundle::ORCA_DEFAULT_BUNDLE).to_string();
|
||||||
int ret = m_agent->get_setting_list2(version, [this](auto info) {
|
int ret = m_agent->get_setting_list2(version, [this](auto info) {
|
||||||
auto type = info[BBL_JSON_KEY_TYPE];
|
auto type = info[BBL_JSON_KEY_TYPE];
|
||||||
auto name = info[BBL_JSON_KEY_NAME];
|
auto name = info[BBL_JSON_KEY_NAME];
|
||||||
|
@ -2382,7 +2382,6 @@ page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only v
|
|||||||
option.opt.height = 25;//250;
|
option.opt.height = 25;//250;
|
||||||
optgroup->append_single_option_line(option);
|
optgroup->append_single_option_line(option);
|
||||||
|
|
||||||
#if 1
|
|
||||||
page = add_options_page(L("Dependencies"), "custom-gcode_advanced");
|
page = add_options_page(L("Dependencies"), "custom-gcode_advanced");
|
||||||
optgroup = page->new_optgroup(L("Profile dependencies"));
|
optgroup = page->new_optgroup(L("Profile dependencies"));
|
||||||
|
|
||||||
@ -2395,7 +2394,6 @@ page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only v
|
|||||||
optgroup->append_single_option_line(option);
|
optgroup->append_single_option_line(option);
|
||||||
|
|
||||||
build_preset_description_line(optgroup.get());
|
build_preset_description_line(optgroup.get());
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reload current config (aka presets->edited_preset->config) into the UI fields.
|
// Reload current config (aka presets->edited_preset->config) into the UI fields.
|
||||||
@ -3528,14 +3526,6 @@ void TabFilament::build()
|
|||||||
optgroup->append_single_option_line("filament_multitool_ramming_volume");
|
optgroup->append_single_option_line("filament_multitool_ramming_volume");
|
||||||
optgroup->append_single_option_line("filament_multitool_ramming_flow");
|
optgroup->append_single_option_line("filament_multitool_ramming_flow");
|
||||||
|
|
||||||
page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders
|
|
||||||
optgroup = page->new_optgroup(L("Notes"),"note", 0);
|
|
||||||
optgroup->label_width = 0;
|
|
||||||
option = optgroup->get_option("filament_notes");
|
|
||||||
option.opt.full_width = true;
|
|
||||||
option.opt.height = notes_field_height;// 250;
|
|
||||||
optgroup->append_single_option_line(option);
|
|
||||||
#if 1
|
|
||||||
page = add_options_page(L("Dependencies"), "advanced");
|
page = add_options_page(L("Dependencies"), "advanced");
|
||||||
optgroup = page->new_optgroup(L("Profile dependencies"));
|
optgroup = page->new_optgroup(L("Profile dependencies"));
|
||||||
create_line_with_widget(optgroup.get(), "compatible_printers", "", [this](wxWindow* parent) {
|
create_line_with_widget(optgroup.get(), "compatible_printers", "", [this](wxWindow* parent) {
|
||||||
@ -3554,8 +3544,15 @@ void TabFilament::build()
|
|||||||
option.opt.full_width = true;
|
option.opt.full_width = true;
|
||||||
optgroup->append_single_option_line(option);
|
optgroup->append_single_option_line(option);
|
||||||
|
|
||||||
|
page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders
|
||||||
|
optgroup = page->new_optgroup(L("Notes"),"note", 0);
|
||||||
|
optgroup->label_width = 0;
|
||||||
|
option = optgroup->get_option("filament_notes");
|
||||||
|
option.opt.full_width = true;
|
||||||
|
option.opt.height = notes_field_height;// 250;
|
||||||
|
optgroup->append_single_option_line(option);
|
||||||
|
|
||||||
//build_preset_description_line(optgroup.get());
|
//build_preset_description_line(optgroup.get());
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reload current config (aka presets->edited_preset->config) into the UI fields.
|
// Reload current config (aka presets->edited_preset->config) into the UI fields.
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
#include "WebGuideDialog.hpp"
|
#include "WebGuideDialog.hpp"
|
||||||
#include "ConfigWizard.hpp"
|
#include "ConfigWizard.hpp"
|
||||||
|
|
||||||
|
#include <boost/filesystem/operations.hpp>
|
||||||
|
#include <boost/filesystem/path.hpp>
|
||||||
|
#include <boost/iostreams/detail/select.hpp>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "I18N.hpp"
|
#include "I18N.hpp"
|
||||||
#include "libslic3r/AppConfig.hpp"
|
#include "libslic3r/AppConfig.hpp"
|
||||||
|
#include "libslic3r/PresetBundle.hpp"
|
||||||
#include "slic3r/GUI/wxExtensions.hpp"
|
#include "slic3r/GUI/wxExtensions.hpp"
|
||||||
#include "slic3r/GUI/GUI_App.hpp"
|
#include "slic3r/GUI/GUI_App.hpp"
|
||||||
#include "libslic3r_version.h"
|
#include "libslic3r_version.h"
|
||||||
@ -576,13 +580,6 @@ void GuideFrame::OnError(wxWebViewEvent &evt)
|
|||||||
|
|
||||||
void GuideFrame::OnScriptResponseMessage(wxCommandEvent &WXUNUSED(evt))
|
void GuideFrame::OnScriptResponseMessage(wxCommandEvent &WXUNUSED(evt))
|
||||||
{
|
{
|
||||||
// if (!m_response_js.empty())
|
|
||||||
//{
|
|
||||||
// RunScript(m_response_js);
|
|
||||||
//}
|
|
||||||
|
|
||||||
// RunScript("This is a message to Web!");
|
|
||||||
// RunScript("postMessage(\"AABBCCDD\");");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GuideFrame::IsFirstUse()
|
bool GuideFrame::IsFirstUse()
|
||||||
@ -592,30 +589,12 @@ bool GuideFrame::IsFirstUse()
|
|||||||
if (strVal == "1")
|
if (strVal == "1")
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (bbl_bundle_rsrc == true)
|
if (orca_bundle_rsrc == true)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*int GuideFrame::CopyDir(const boost::filesystem::path &from_dir, const boost::filesystem::path &to_dir)
|
|
||||||
{
|
|
||||||
if (!boost::filesystem::is_directory(from_dir)) return -1;
|
|
||||||
// i assume to_dir.parent surely exists
|
|
||||||
if (!boost::filesystem::is_directory(to_dir)) boost::filesystem::create_directory(to_dir);
|
|
||||||
for (auto &dir_entry : boost::filesystem::directory_iterator(from_dir)) {
|
|
||||||
if (!boost::filesystem::is_directory(dir_entry.path())) {
|
|
||||||
std::string em;
|
|
||||||
CopyFileResult cfr = copy_file(dir_entry.path().string(), (to_dir / dir_entry.path().filename()).string(), em, false);
|
|
||||||
if (cfr != SUCCESS) { BOOST_LOG_TRIVIAL(error) << "Error when copying files from " << from_dir << " to " << to_dir << ": " << em; }
|
|
||||||
} else {
|
|
||||||
CopyDir(dir_entry.path(), to_dir / dir_entry.path().filename());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
int GuideFrame::SaveProfile()
|
int GuideFrame::SaveProfile()
|
||||||
{
|
{
|
||||||
// SoftFever: don't collect info
|
// SoftFever: don't collect info
|
||||||
@ -633,77 +612,6 @@ int GuideFrame::SaveProfile()
|
|||||||
|
|
||||||
m_MainPtr->app_config->save();
|
m_MainPtr->app_config->save();
|
||||||
|
|
||||||
//Load BBS Conf
|
|
||||||
/*wxString strConfPath = wxGetApp().app_config->config_path();
|
|
||||||
json jCfg;
|
|
||||||
std::ifstream(w2s(strConfPath)) >> jCfg;
|
|
||||||
|
|
||||||
//model
|
|
||||||
jCfg["models"] = json::array();
|
|
||||||
int nM = m_ProfileJson["model"].size();
|
|
||||||
int nModelChoose = 0;
|
|
||||||
for (int m = 0; m < nM; m++)
|
|
||||||
{
|
|
||||||
json amodel = m_ProfileJson["model"][m];
|
|
||||||
|
|
||||||
amodel["nozzle_diameter"] = amodel["nozzle_selected"];
|
|
||||||
amodel.erase("nozzle_selected");
|
|
||||||
amodel.erase("preview");
|
|
||||||
amodel.erase("sub_path");
|
|
||||||
amodel.erase("cover");
|
|
||||||
amodel.erase("materials");
|
|
||||||
|
|
||||||
std::string ss = amodel["nozzle_diameter"];
|
|
||||||
if (ss.compare("") != 0) {
|
|
||||||
nModelChoose++;
|
|
||||||
jCfg["models"].push_back(amodel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (nModelChoose == 0)
|
|
||||||
jCfg.erase("models");
|
|
||||||
|
|
||||||
if (nModelChoose > 0) {
|
|
||||||
// filament
|
|
||||||
jCfg["filaments"] = json::array();
|
|
||||||
for (auto it = m_ProfileJson["filament"].begin(); it != m_ProfileJson["filament"].end(); ++it) {
|
|
||||||
if (it.value()["selected"] == 1) { jCfg["filaments"].push_back(it.key()); }
|
|
||||||
}
|
|
||||||
|
|
||||||
// Preset
|
|
||||||
jCfg["presets"]["filaments"] = json::array();
|
|
||||||
jCfg["presets"]["filaments"].push_back(jCfg["filaments"][0]);
|
|
||||||
|
|
||||||
std::string PresetMachine = m_ProfileJson["machine"][0]["name"];
|
|
||||||
jCfg["presets"]["machine"] = PresetMachine;
|
|
||||||
|
|
||||||
int nTotal = m_ProfileJson["process"].size();
|
|
||||||
int nSet = nTotal / 2;
|
|
||||||
if (nSet > 0) nSet--;
|
|
||||||
|
|
||||||
std::string sMode = m_ProfileJson["process"][nSet]["name"];
|
|
||||||
jCfg["presets"]["process"] = sMode;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
jCfg["presets"]["filaments"] = json::array();
|
|
||||||
jCfg["presets"]["filaments"].push_back("Default Filament");
|
|
||||||
|
|
||||||
jCfg["presets"]["machine"] = "Default Printer";
|
|
||||||
|
|
||||||
jCfg["presets"]["process"] = "Default Setting";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string sOut = jCfg.dump(4, ' ', false);
|
|
||||||
|
|
||||||
std::ofstream output_file(w2s(strConfPath));
|
|
||||||
output_file << sOut;
|
|
||||||
output_file.close();
|
|
||||||
|
|
||||||
//Copy Profiles
|
|
||||||
if (bbl_bundle_rsrc)
|
|
||||||
{
|
|
||||||
CopyDir(rsrc_vendor_dir,vendor_dir);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
std::string strAll = m_ProfileJson.dump(-1, ' ', false, json::error_handler_t::ignore);
|
std::string strAll = m_ProfileJson.dump(-1, ' ', false, json::error_handler_t::ignore);
|
||||||
|
|
||||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "before save to app_config: "<< std::endl<<strAll;
|
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "before save to app_config: "<< std::endl<<strAll;
|
||||||
@ -881,11 +789,11 @@ bool GuideFrame::apply_config(AppConfig *app_config, PresetBundle *preset_bundle
|
|||||||
variant.clear();
|
variant.clear();
|
||||||
return std::string();
|
return std::string();
|
||||||
};
|
};
|
||||||
// Prusa printers are considered first, then 3rd party.
|
// Orca "custom" printers are considered first, then 3rd party.
|
||||||
if (preferred_model = get_preferred_printer_model(PresetBundle::BBL_BUNDLE, preferred_variant);
|
if (preferred_model = get_preferred_printer_model(PresetBundle::ORCA_DEFAULT_BUNDLE, preferred_variant);
|
||||||
preferred_model.empty()) {
|
preferred_model.empty()) {
|
||||||
for (const auto& bundle : enabled_vendors) {
|
for (const auto& bundle : enabled_vendors) {
|
||||||
if (bundle.first == PresetBundle::BBL_BUNDLE) { continue; }
|
if (bundle.first == PresetBundle::ORCA_DEFAULT_BUNDLE) { continue; }
|
||||||
if (preferred_model = get_preferred_printer_model(bundle.first, preferred_variant);
|
if (preferred_model = get_preferred_printer_model(bundle.first, preferred_variant);
|
||||||
!preferred_model.empty())
|
!preferred_model.empty())
|
||||||
break;
|
break;
|
||||||
@ -962,10 +870,10 @@ bool GuideFrame::run()
|
|||||||
//we install the default here
|
//we install the default here
|
||||||
bool apply_keeped_changes = false;
|
bool apply_keeped_changes = false;
|
||||||
//clear filament section and use default materials
|
//clear filament section and use default materials
|
||||||
app.app_config->set_variant(PresetBundle::BBL_BUNDLE,
|
app.app_config->set_variant(PresetBundle::ORCA_DEFAULT_BUNDLE,
|
||||||
PresetBundle::BBL_DEFAULT_PRINTER_MODEL, PresetBundle::BBL_DEFAULT_PRINTER_VARIANT, "true");
|
PresetBundle::ORCA_DEFAULT_PRINTER_MODEL, PresetBundle::ORCA_DEFAULT_PRINTER_VARIANT, "true");
|
||||||
app.app_config->clear_section(AppConfig::SECTION_FILAMENTS);
|
app.app_config->clear_section(AppConfig::SECTION_FILAMENTS);
|
||||||
app.preset_bundle->load_selections(*app.app_config, {PresetBundle::BBL_DEFAULT_PRINTER_MODEL, PresetBundle::BBL_DEFAULT_PRINTER_VARIANT, PresetBundle::BBL_DEFAULT_FILAMENT, std::string()});
|
app.preset_bundle->load_selections(*app.app_config, {PresetBundle::ORCA_DEFAULT_PRINTER_MODEL, PresetBundle::ORCA_DEFAULT_PRINTER_VARIANT, PresetBundle::ORCA_DEFAULT_FILAMENT, std::string()});
|
||||||
|
|
||||||
app.app_config->set_legacy_datadir(false);
|
app.app_config->set_legacy_datadir(false);
|
||||||
app.update_mode();
|
app.update_mode();
|
||||||
@ -1025,6 +933,8 @@ int GuideFrame::GetFilamentInfo( std::string VendorDirectory, json & pFilaList,
|
|||||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Before Format Inherits Path: VendorDirectory - " << VendorDirectory << ", sub_path - " << FPath;
|
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Before Format Inherits Path: VendorDirectory - " << VendorDirectory << ", sub_path - " << FPath;
|
||||||
wxString strNewFile = wxString::Format("%s%c%s", wxString(VendorDirectory.c_str(), wxConvUTF8), boost::filesystem::path::preferred_separator, FPath);
|
wxString strNewFile = wxString::Format("%s%c%s", wxString(VendorDirectory.c_str(), wxConvUTF8), boost::filesystem::path::preferred_separator, FPath);
|
||||||
boost::filesystem::path inherits_path(w2s(strNewFile));
|
boost::filesystem::path inherits_path(w2s(strNewFile));
|
||||||
|
if (!boost::filesystem::exists(inherits_path))
|
||||||
|
inherits_path = (boost::filesystem::path(m_OrcaFilaLibPath) / boost::filesystem::path(FPath)).make_preferred();
|
||||||
|
|
||||||
//boost::filesystem::path nf(strNewFile.c_str());
|
//boost::filesystem::path nf(strNewFile.c_str());
|
||||||
if (boost::filesystem::exists(inherits_path))
|
if (boost::filesystem::exists(inherits_path))
|
||||||
@ -1066,31 +976,7 @@ int GuideFrame::GetFilamentInfo( std::string VendorDirectory, json & pFilaList,
|
|||||||
int GuideFrame::LoadProfile()
|
int GuideFrame::LoadProfile()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
//wxString ExePath = boost::dll::program_location().parent_path().string();
|
|
||||||
//wxString TargetFolder = ExePath + "\\resources\\profiles\\";
|
|
||||||
//wxString TargetFolderSearch = ExePath + "\\resources\\profiles\\*.json";
|
|
||||||
|
|
||||||
//intptr_t handle;
|
|
||||||
//_finddata_t findData;
|
|
||||||
|
|
||||||
//handle = _findfirst(TargetFolderSearch.mb_str(), &findData); // ???????????
|
|
||||||
//if (handle == -1) { return -1; }
|
|
||||||
|
|
||||||
//do {
|
|
||||||
// if (findData.attrib & _A_SUBDIR && strcmp(findData.name, ".") == 0 && strcmp(findData.name, "..") == 0) // ??????????"."?".."
|
|
||||||
// {
|
|
||||||
// // cout << findData.name << "\t<dir>\n";
|
|
||||||
// } else {
|
|
||||||
// wxString strVendor = wxString(findData.name).BeforeLast('.');
|
|
||||||
// LoadProfileFamily(strVendor, TargetFolder + findData.name);
|
|
||||||
// }
|
|
||||||
|
|
||||||
//} while (_findnext(handle, &findData) == 0); // ???????????
|
|
||||||
|
|
||||||
// BBS: change directories by design
|
|
||||||
//BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", will load config from %1%.") % bbl_bundle_path;
|
|
||||||
m_ProfileJson = json::parse("{}");
|
m_ProfileJson = json::parse("{}");
|
||||||
//m_ProfileJson["configpath"] = Slic3r::data_dir();
|
|
||||||
m_ProfileJson["model"] = json::array();
|
m_ProfileJson["model"] = json::array();
|
||||||
m_ProfileJson["machine"] = json::object();
|
m_ProfileJson["machine"] = json::object();
|
||||||
m_ProfileJson["filament"] = json::object();
|
m_ProfileJson["filament"] = json::object();
|
||||||
@ -1099,76 +985,63 @@ int GuideFrame::LoadProfile()
|
|||||||
vendor_dir = (boost::filesystem::path(Slic3r::data_dir()) / PRESET_SYSTEM_DIR ).make_preferred();
|
vendor_dir = (boost::filesystem::path(Slic3r::data_dir()) / PRESET_SYSTEM_DIR ).make_preferred();
|
||||||
rsrc_vendor_dir = (boost::filesystem::path(resources_dir()) / "profiles").make_preferred();
|
rsrc_vendor_dir = (boost::filesystem::path(resources_dir()) / "profiles").make_preferred();
|
||||||
|
|
||||||
// BBS: add BBL as default
|
// Orca: add custom as default
|
||||||
// BBS: add json logic for vendor bundle
|
// Orca: add json logic for vendor bundle
|
||||||
auto bbl_bundle_path = vendor_dir;
|
orca_bundle_rsrc = true;
|
||||||
bbl_bundle_rsrc = false;
|
|
||||||
if (!boost::filesystem::exists((vendor_dir / PresetBundle::BBL_BUNDLE).replace_extension(".json"))) {
|
|
||||||
bbl_bundle_path = rsrc_vendor_dir;
|
|
||||||
bbl_bundle_rsrc = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// intptr_t handle;
|
// search if there exists a .json file in vendor_dir folder, if exists, set orca_bundle_rsrc to false
|
||||||
//_finddata_t findData;
|
for (const auto& entry : boost::filesystem::directory_iterator(vendor_dir)) {
|
||||||
|
if (!boost::filesystem::is_directory(entry) && boost::iequals(entry.path().extension().string(), ".json") && !boost::iequals(entry.path().stem().string(), PresetBundle::ORCA_FILAMENT_LIBRARY)) {
|
||||||
//handle = _findfirst((bbl_bundle_path / "*.json").make_preferred().string().c_str(), &findData); // ???????????
|
orca_bundle_rsrc = false;
|
||||||
// if (handle == -1) { return -1; }
|
break;
|
||||||
|
}
|
||||||
// do {
|
}
|
||||||
// if (findData.attrib & _A_SUBDIR && strcmp(findData.name, ".") == 0 && strcmp(findData.name, "..") == 0) // ??????????"."?".."
|
|
||||||
// {
|
// load the default filament library first
|
||||||
// // cout << findData.name << "\t<dir>\n";
|
std::set<std::string> loaded_vendors;
|
||||||
// } else {
|
auto filament_library_name = boost::filesystem::path(PresetBundle::ORCA_FILAMENT_LIBRARY).replace_extension(".json");
|
||||||
// wxString strVendor = wxString(findData.name).BeforeLast('.');
|
if (boost::filesystem::exists(vendor_dir / filament_library_name)) {
|
||||||
// LoadProfileFamily(w2s(strVendor), vendor_dir.make_preferred().string() + "\\"+ findData.name);
|
LoadProfileFamily(PresetBundle::ORCA_FILAMENT_LIBRARY, (vendor_dir / filament_library_name).string());
|
||||||
// }
|
m_OrcaFilaLibPath = (vendor_dir / PresetBundle::ORCA_FILAMENT_LIBRARY).string();
|
||||||
|
} else {
|
||||||
//} while (_findnext(handle, &findData) == 0); // ???????????
|
LoadProfileFamily(PresetBundle::ORCA_FILAMENT_LIBRARY, (rsrc_vendor_dir / filament_library_name).string());
|
||||||
|
m_OrcaFilaLibPath = (rsrc_vendor_dir / PresetBundle::ORCA_FILAMENT_LIBRARY).string();
|
||||||
|
}
|
||||||
//load BBL bundle from user data path
|
loaded_vendors.insert(PresetBundle::ORCA_FILAMENT_LIBRARY);
|
||||||
string targetPath = bbl_bundle_path.make_preferred().string();
|
|
||||||
boost::filesystem::path myPath(targetPath);
|
//load custom bundle from user data path
|
||||||
boost::filesystem::directory_iterator endIter;
|
boost::filesystem::directory_iterator endIter;
|
||||||
for (boost::filesystem::directory_iterator iter(myPath); iter != endIter; iter++) {
|
for (boost::filesystem::directory_iterator iter(vendor_dir); iter != endIter; iter++) {
|
||||||
if (boost::filesystem::is_directory(*iter)) {
|
if (!boost::filesystem::is_directory(*iter)) {
|
||||||
//cout << "is dir" << endl;
|
wxString strVendor = from_u8(iter->path().string()).BeforeLast('.');
|
||||||
//cout << iter->path().string() << endl;
|
strVendor = strVendor.AfterLast('\\');
|
||||||
} else {
|
strVendor = strVendor.AfterLast('/');
|
||||||
//cout << "is a file" << endl;
|
|
||||||
//cout << iter->path().string() << endl;
|
wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower();
|
||||||
|
if(strExtension.CmpNoCase("json") != 0 || loaded_vendors.find(w2s(strVendor)) != loaded_vendors.end())
|
||||||
wxString strVendor = from_u8(iter->path().string()).BeforeLast('.');
|
continue;
|
||||||
strVendor = strVendor.AfterLast('\\');
|
|
||||||
strVendor = strVendor.AfterLast('/');
|
LoadProfileFamily(w2s(strVendor), iter->path().string());
|
||||||
wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower();
|
loaded_vendors.insert(w2s(strVendor));
|
||||||
|
|
||||||
if (w2s(strVendor) == PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json") == 0)
|
|
||||||
LoadProfileFamily(w2s(strVendor), iter->path().string());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//string others_targetPath = rsrc_vendor_dir.string();
|
|
||||||
boost::filesystem::directory_iterator others_endIter;
|
boost::filesystem::directory_iterator others_endIter;
|
||||||
for (boost::filesystem::directory_iterator iter(rsrc_vendor_dir); iter != others_endIter; iter++) {
|
for (boost::filesystem::directory_iterator iter(rsrc_vendor_dir); iter != others_endIter; iter++) {
|
||||||
if (boost::filesystem::is_directory(*iter)) {
|
if (!boost::filesystem::is_directory(*iter)) {
|
||||||
//cout << "is dir" << endl;
|
|
||||||
//cout << iter->path().string() << endl;
|
|
||||||
} else {
|
|
||||||
//cout << "is a file" << endl;
|
|
||||||
//cout << iter->path().string() << endl;
|
|
||||||
wxString strVendor = from_u8(iter->path().string()).BeforeLast('.');
|
wxString strVendor = from_u8(iter->path().string()).BeforeLast('.');
|
||||||
strVendor = strVendor.AfterLast('\\');
|
strVendor = strVendor.AfterLast('\\');
|
||||||
strVendor = strVendor.AfterLast('/');
|
strVendor = strVendor.AfterLast('/');
|
||||||
wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower();
|
wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower();
|
||||||
|
if (strExtension.CmpNoCase("json") != 0 || loaded_vendors.find(w2s(strVendor)) != loaded_vendors.end())
|
||||||
|
continue;
|
||||||
|
|
||||||
if (w2s(strVendor) != PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json")==0)
|
LoadProfileFamily(w2s(strVendor), iter->path().string());
|
||||||
LoadProfileFamily(w2s(strVendor), iter->path().string());
|
loaded_vendors.insert(w2s(strVendor));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//LoadProfileFamily(PresetBundle::BBL_BUNDLE, bbl_bundle_path.string());
|
|
||||||
|
|
||||||
const auto enabled_filaments = wxGetApp().app_config->has_section(AppConfig::SECTION_FILAMENTS) ? wxGetApp().app_config->get_section(AppConfig::SECTION_FILAMENTS) : std::map<std::string, std::string>();
|
const auto enabled_filaments = wxGetApp().app_config->has_section(AppConfig::SECTION_FILAMENTS) ? wxGetApp().app_config->get_section(AppConfig::SECTION_FILAMENTS) : std::map<std::string, std::string>();
|
||||||
m_appconfig_new.set_vendors(*wxGetApp().app_config);
|
m_appconfig_new.set_vendors(*wxGetApp().app_config);
|
||||||
@ -1264,185 +1137,6 @@ void StringReplace(string &strBase, string strSrc, string strDes)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath)
|
|
||||||
//{
|
|
||||||
// //wxString strFolder = strFilePath.BeforeLast(boost::filesystem::path::preferred_separator);
|
|
||||||
// boost::filesystem::path file_path(strFilePath);
|
|
||||||
// boost::filesystem::path vendor_dir = boost::filesystem::absolute(file_path.parent_path()/ strVendor).make_preferred();
|
|
||||||
// BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", vendor path %1%.")% vendor_dir.string();
|
|
||||||
// try {
|
|
||||||
//
|
|
||||||
// //wxLogMessage("GUIDE: json_path1 %s", w2s(strFilePath));
|
|
||||||
//
|
|
||||||
// std::string contents;
|
|
||||||
// LoadFile(strFilePath, contents);
|
|
||||||
// //wxLogMessage("GUIDE: json_path1 content: %s", contents);
|
|
||||||
// json jLocal=json::parse(contents);
|
|
||||||
// //wxLogMessage("GUIDE: json_path1 Loaded");
|
|
||||||
//
|
|
||||||
// // BBS:models
|
|
||||||
// json pmodels = jLocal["machine_model_list"];
|
|
||||||
// int nsize = pmodels.size();
|
|
||||||
//
|
|
||||||
// BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", got %1% machine models")%nsize;
|
|
||||||
//
|
|
||||||
// for (int n = 0; n < nsize; n++) {
|
|
||||||
// json OneModel = pmodels.at(n);
|
|
||||||
//
|
|
||||||
// OneModel["model"] = OneModel["name"];
|
|
||||||
// OneModel.erase("name");
|
|
||||||
//
|
|
||||||
// std::string s1 = OneModel["model"];
|
|
||||||
// std::string s2 = OneModel["sub_path"];
|
|
||||||
//
|
|
||||||
// boost::filesystem::path sub_path = boost::filesystem::absolute(vendor_dir / s2).make_preferred();
|
|
||||||
// std::string sub_file = sub_path.string();
|
|
||||||
//
|
|
||||||
// //wxLogMessage("GUIDE: json_path2 %s", w2s(ModelFilePath));
|
|
||||||
// LoadFile(sub_file, contents);
|
|
||||||
// //wxLogMessage("GUIDE: json_path2 content: %s", contents);
|
|
||||||
// json pm=json::parse(contents);
|
|
||||||
// //wxLogMessage("GUIDE: json_path2 loaded");
|
|
||||||
//
|
|
||||||
// OneModel["vendor"] = strVendor;
|
|
||||||
// std::string NozzleOpt = pm["nozzle_diameter"];
|
|
||||||
// StringReplace(NozzleOpt, " ", "");
|
|
||||||
// OneModel["nozzle_diameter"] = NozzleOpt;
|
|
||||||
// OneModel["materials"] = pm["default_materials"];
|
|
||||||
//
|
|
||||||
// //wxString strCoverPath = wxString::Format("%s\\%s\\%s_cover.png", strFolder, strVendor, std::string(s1.mb_str()));
|
|
||||||
// std::string cover_file = s1+"_cover.png";
|
|
||||||
// boost::filesystem::path cover_path = boost::filesystem::absolute(vendor_dir / cover_file).make_preferred();
|
|
||||||
// OneModel["cover"] = cover_path.string();
|
|
||||||
//
|
|
||||||
// OneModel["nozzle_selected"] = "";
|
|
||||||
//
|
|
||||||
// m_ProfileJson["model"].push_back(OneModel);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// // BBS:Machine
|
|
||||||
// json pmachine = jLocal["machine_list"];
|
|
||||||
// nsize = pmachine.size();
|
|
||||||
// BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", got %1% machines")%nsize;
|
|
||||||
// for (int n = 0; n < nsize; n++) {
|
|
||||||
// json OneMachine = pmachine.at(n);
|
|
||||||
//
|
|
||||||
// std::string s1 = OneMachine["name"];
|
|
||||||
// std::string s2 = OneMachine["sub_path"];
|
|
||||||
//
|
|
||||||
// //wxString ModelFilePath = wxString::Format("%s\\%s\\%s", strFolder, strVendor, s2);
|
|
||||||
// boost::filesystem::path sub_path = boost::filesystem::absolute(vendor_dir / s2).make_preferred();
|
|
||||||
// std::string sub_file = sub_path.string();
|
|
||||||
// LoadFile(sub_file, contents);
|
|
||||||
// json pm = json::parse(contents);
|
|
||||||
//
|
|
||||||
// std::string strInstant = pm["instantiation"];
|
|
||||||
// if (strInstant.compare("true") == 0) {
|
|
||||||
// OneMachine["model"] = pm["printer_model"];
|
|
||||||
//
|
|
||||||
// m_ProfileJson["machine"].push_back(OneMachine);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// // BBS:Filament
|
|
||||||
// json pFilament = jLocal["filament_list"];
|
|
||||||
// nsize = pFilament.size();
|
|
||||||
//
|
|
||||||
// int nFalse = 0;
|
|
||||||
// int nModel = 0;
|
|
||||||
// int nFinish = 0;
|
|
||||||
// BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", got %1% filaments")%nsize;
|
|
||||||
// for (int n = 0; n < nsize; n++) {
|
|
||||||
// json OneFF = pFilament.at(n);
|
|
||||||
//
|
|
||||||
// std::string s1 = OneFF["name"];
|
|
||||||
// std::string s2 = OneFF["sub_path"];
|
|
||||||
//
|
|
||||||
// if (!m_ProfileJson["filament"].contains(s1))
|
|
||||||
// {
|
|
||||||
// //wxString ModelFilePath = wxString::Format("%s\\%s\\%s", strFolder, strVendor, s2);
|
|
||||||
// boost::filesystem::path sub_path = boost::filesystem::absolute(vendor_dir / s2).make_preferred();
|
|
||||||
// std::string sub_file = sub_path.string();
|
|
||||||
// LoadFile(sub_file, contents);
|
|
||||||
// json pm = json::parse(contents);
|
|
||||||
//
|
|
||||||
// std::string strInstant = pm["instantiation"];
|
|
||||||
// if (strInstant == "true") {
|
|
||||||
// std::string sV;
|
|
||||||
// std::string sT;
|
|
||||||
//
|
|
||||||
// int nRet = GetFilamentInfo(sub_file, sV, sT);
|
|
||||||
// if (nRet != 0) continue;
|
|
||||||
//
|
|
||||||
// OneFF["vendor"] = sV;
|
|
||||||
// OneFF["type"] = sT;
|
|
||||||
//
|
|
||||||
// OneFF["models"] = "";
|
|
||||||
// OneFF["selected"] = 0;
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// continue;
|
|
||||||
//
|
|
||||||
// } else {
|
|
||||||
// OneFF = m_ProfileJson["filament"][s1];
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// std::string vModel = "";
|
|
||||||
// int nm = m_ProfileJson["model"].size();
|
|
||||||
// int bFind = 0;
|
|
||||||
// for (int m = 0; m < nm; m++) {
|
|
||||||
// std::string strFF = m_ProfileJson["model"][m]["materials"];
|
|
||||||
// strFF = (boost::format(";%1%;")%strFF).str();
|
|
||||||
// std::string strTT = (boost::format(";%1%;")%s1).str();
|
|
||||||
// if (strFF.find(strTT) != std::string::npos) {
|
|
||||||
// std::string sModel = m_ProfileJson["model"][m]["model"];
|
|
||||||
//
|
|
||||||
// vModel = (boost::format("%1%[%2%]")%vModel %sModel).str();
|
|
||||||
// bFind = 1;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// OneFF["models"] = vModel;
|
|
||||||
//
|
|
||||||
// m_ProfileJson["filament"][s1] = OneFF;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// //process
|
|
||||||
// json pProcess = jLocal["process_list"];
|
|
||||||
// nsize = pProcess.size();
|
|
||||||
// BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", got %1% processes")%nsize;
|
|
||||||
// for (int n = 0; n < nsize; n++) {
|
|
||||||
// json OneProcess = pProcess.at(n);
|
|
||||||
//
|
|
||||||
// std::string s2 = OneProcess["sub_path"];
|
|
||||||
// //wxString ModelFilePath = wxString::Format("%s\\%s\\%s", strFolder, strVendor, s2);
|
|
||||||
// boost::filesystem::path sub_path = boost::filesystem::absolute(vendor_dir / s2).make_preferred();
|
|
||||||
// std::string sub_file = sub_path.string();
|
|
||||||
// LoadFile(sub_file, contents);
|
|
||||||
// json pm = json::parse(contents);
|
|
||||||
//
|
|
||||||
// std::string bInstall = pm["instantiation"];
|
|
||||||
// if (bInstall == "true")
|
|
||||||
// {
|
|
||||||
// m_ProfileJson["process"].push_back(OneProcess);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// catch(nlohmann::detail::parse_error &err) {
|
|
||||||
// BOOST_LOG_TRIVIAL(error) << __FUNCTION__<< ": parse "<<strFilePath <<" got a nlohmann::detail::parse_error, reason = " << err.what();
|
|
||||||
// return -1;
|
|
||||||
// }
|
|
||||||
// catch (std::exception &e) {
|
|
||||||
// // wxMessageBox(e.what(), "", MB_OK);
|
|
||||||
// //wxLogMessage("GUIDE: LoadFamily Error: %s", e.what());
|
|
||||||
// BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": parse " << strFilePath << " got exception: " << e.what();
|
|
||||||
// return -1;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return 0;
|
|
||||||
//}
|
|
||||||
|
|
||||||
int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath)
|
int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath)
|
||||||
{
|
{
|
||||||
// wxString strFolder = strFilePath.BeforeLast(boost::filesystem::path::preferred_separator);
|
// wxString strFolder = strFilePath.BeforeLast(boost::filesystem::path::preferred_separator);
|
||||||
@ -1531,7 +1225,7 @@ int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath
|
|||||||
|
|
||||||
// BBS:Filament
|
// BBS:Filament
|
||||||
json pFilament = jLocal["filament_list"];
|
json pFilament = jLocal["filament_list"];
|
||||||
json tFilaList = json::object();
|
json tFilaList = m_OrcaFilaList;
|
||||||
nsize = pFilament.size();
|
nsize = pFilament.size();
|
||||||
|
|
||||||
for (int n = 0; n < nsize; n++) {
|
for (int n = 0; n < nsize; n++) {
|
||||||
@ -1604,6 +1298,8 @@ int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(strVendor == PresetBundle::ORCA_FILAMENT_LIBRARY)
|
||||||
|
m_OrcaFilaList = tFilaList;
|
||||||
|
|
||||||
// process
|
// process
|
||||||
json pProcess = jLocal["process_list"];
|
json pProcess = jLocal["process_list"];
|
||||||
|
@ -103,7 +103,7 @@ private:
|
|||||||
|
|
||||||
wxString m_SectionName;
|
wxString m_SectionName;
|
||||||
|
|
||||||
bool bbl_bundle_rsrc;
|
bool orca_bundle_rsrc;
|
||||||
boost::filesystem::path vendor_dir;
|
boost::filesystem::path vendor_dir;
|
||||||
boost::filesystem::path rsrc_vendor_dir;
|
boost::filesystem::path rsrc_vendor_dir;
|
||||||
|
|
||||||
@ -115,6 +115,9 @@ private:
|
|||||||
bool InstallNetplugin;
|
bool InstallNetplugin;
|
||||||
bool network_plugin_ready {false};
|
bool network_plugin_ready {false};
|
||||||
|
|
||||||
|
json m_OrcaFilaList;
|
||||||
|
std::string m_OrcaFilaLibPath;
|
||||||
|
|
||||||
#if wxUSE_WEBVIEW_IE
|
#if wxUSE_WEBVIEW_IE
|
||||||
wxMenuItem *m_script_object_el;
|
wxMenuItem *m_script_object_el;
|
||||||
wxMenuItem *m_script_date_el;
|
wxMenuItem *m_script_date_el;
|
||||||
|
@ -1071,8 +1071,7 @@ bool PresetUpdater::priv::install_bundles_rsrc(std::vector<std::string> bundles,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//BBS: refine preset update logic
|
// Orca: copy/update the vendor profiles from resource to system folder
|
||||||
// Install indicies from resources. Only installs those that are either missing or older than in resources.
|
|
||||||
void PresetUpdater::priv::check_installed_vendor_profiles() const
|
void PresetUpdater::priv::check_installed_vendor_profiles() const
|
||||||
{
|
{
|
||||||
BOOST_LOG_TRIVIAL(info) << "[Orca Updater]:Checking whether the profile from resource is newer";
|
BOOST_LOG_TRIVIAL(info) << "[Orca Updater]:Checking whether the profile from resource is newer";
|
||||||
@ -1080,8 +1079,9 @@ void PresetUpdater::priv::check_installed_vendor_profiles() const
|
|||||||
AppConfig *app_config = GUI::wxGetApp().app_config;
|
AppConfig *app_config = GUI::wxGetApp().app_config;
|
||||||
const auto enabled_vendors = app_config->vendors();
|
const auto enabled_vendors = app_config->vendors();
|
||||||
|
|
||||||
//BBS: refine the init check logic
|
|
||||||
std::vector<std::string> bundles;
|
std::vector<std::string> bundles;
|
||||||
|
// Orca: always install filament library
|
||||||
|
bundles.push_back(PresetBundle::ORCA_FILAMENT_LIBRARY);
|
||||||
for (auto &dir_entry : boost::filesystem::directory_iterator(rsrc_path)) {
|
for (auto &dir_entry : boost::filesystem::directory_iterator(rsrc_path)) {
|
||||||
const auto &path = dir_entry.path();
|
const auto &path = dir_entry.path();
|
||||||
std::string file_path = path.string();
|
std::string file_path = path.string();
|
||||||
@ -1111,11 +1111,11 @@ void PresetUpdater::priv::check_installed_vendor_profiles() const
|
|||||||
fs::remove_all(path_of_vendor);
|
fs::remove_all(path_of_vendor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((vendor_name == PresetBundle::BBL_BUNDLE) || (enabled_vendors.find(vendor_name) != enabled_vendors.end())) {//if vendor has no file, copy it from resource for BBL
|
else if ((vendor_name == PresetBundle::ORCA_DEFAULT_BUNDLE) || (enabled_vendors.find(vendor_name) != enabled_vendors.end())) {//if vendor has no file, copy it from resource for ORCA_DEFAULT_BUNDLE
|
||||||
bundles.push_back(vendor_name);
|
bundles.push_back(vendor_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((vendor_name == PresetBundle::BBL_BUNDLE) || (enabled_vendors.find(vendor_name) != enabled_vendors.end())) { //always update configs from resource to vendor for BBL
|
else if ((vendor_name == PresetBundle::ORCA_DEFAULT_BUNDLE) || (enabled_vendors.find(vendor_name) != enabled_vendors.end())) { //always update configs from resource to vendor for ORCA_DEFAULT_BUNDLE
|
||||||
bundles.push_back(vendor_name);
|
bundles.push_back(vendor_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user