mirror of
https://git.mirrors.martin98.com/https://github.com/SoftFever/OrcaSlicer.git
synced 2025-08-05 15:40:37 +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)
|
||||
- [Localization and translation guide](Localization_guide)
|
||||
- [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",
|
||||
"version": "02.02.00.04",
|
||||
"version": "02.02.00.05",
|
||||
"force_update": "0",
|
||||
"description": "My configurations",
|
||||
"machine_model_list": [
|
||||
@ -173,120 +173,44 @@
|
||||
],
|
||||
"filament_list": [
|
||||
{
|
||||
"name": "fdm_filament_common",
|
||||
"sub_path": "filament/fdm_filament_common.json"
|
||||
"name": "Generic PLA @MyToolChanger",
|
||||
"sub_path": "filament/Generic PLA @MyToolChanger.json"
|
||||
},
|
||||
{
|
||||
"name": "fdm_filament_pla",
|
||||
"sub_path": "filament/fdm_filament_pla.json"
|
||||
"name": "Generic PLA-CF @MyToolChanger",
|
||||
"sub_path": "filament/Generic PLA-CF @MyToolChanger.json"
|
||||
},
|
||||
{
|
||||
"name": "fdm_filament_tpu",
|
||||
"sub_path": "filament/fdm_filament_tpu.json"
|
||||
"name": "Generic PETG @MyToolChanger",
|
||||
"sub_path": "filament/Generic PETG @MyToolChanger.json"
|
||||
},
|
||||
{
|
||||
"name": "fdm_filament_pet",
|
||||
"sub_path": "filament/fdm_filament_pet.json"
|
||||
"name": "Generic ABS @MyToolChanger",
|
||||
"sub_path": "filament/Generic ABS @MyToolChanger.json"
|
||||
},
|
||||
{
|
||||
"name": "fdm_filament_abs",
|
||||
"sub_path": "filament/fdm_filament_abs.json"
|
||||
"name": "Generic TPU @MyToolChanger",
|
||||
"sub_path": "filament/Generic TPU @MyToolChanger.json"
|
||||
},
|
||||
{
|
||||
"name": "fdm_filament_pc",
|
||||
"sub_path": "filament/fdm_filament_pc.json"
|
||||
"name": "Generic ASA @MyToolChanger",
|
||||
"sub_path": "filament/Generic ASA @MyToolChanger.json"
|
||||
},
|
||||
{
|
||||
"name": "fdm_filament_asa",
|
||||
"sub_path": "filament/fdm_filament_asa.json"
|
||||
"name": "Generic PC @MyToolChanger",
|
||||
"sub_path": "filament/Generic PC @MyToolChanger.json"
|
||||
},
|
||||
{
|
||||
"name": "fdm_filament_pva",
|
||||
"sub_path": "filament/fdm_filament_pva.json"
|
||||
"name": "Generic PVA @MyToolChanger",
|
||||
"sub_path": "filament/Generic PVA @MyToolChanger.json"
|
||||
},
|
||||
{
|
||||
"name": "fdm_filament_pa",
|
||||
"sub_path": "filament/fdm_filament_pa.json"
|
||||
"name": "Generic PA @MyToolChanger",
|
||||
"sub_path": "filament/Generic PA @MyToolChanger.json"
|
||||
},
|
||||
{
|
||||
"name": "My Generic PLA",
|
||||
"sub_path": "filament/My Generic PLA.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"
|
||||
"name": "Generic PA-CF @MyToolChanger",
|
||||
"sub_path": "filament/Generic PA-CF @MyToolChanger.json"
|
||||
}
|
||||
],
|
||||
"machine_list": [
|
||||
|
@ -1,17 +1,11 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"filament_id": "GFB99",
|
||||
"setting_id": "GFB99_MTC_0",
|
||||
"name": "My Generic ABS @MyToolChanger",
|
||||
"name": "Generic ABS @MyToolChanger",
|
||||
"renamed_from": "My Generic ABS @MyToolChanger",
|
||||
"from": "system",
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_filament_abs",
|
||||
"filament_flow_ratio": [
|
||||
"0.926"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"12"
|
||||
],
|
||||
"inherits": "Generic ABS @System",
|
||||
"filament_cooling_final_speed": [
|
||||
"3.5"
|
||||
],
|
@ -1,17 +1,11 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"filament_id": "GFB98",
|
||||
"setting_id": "GFB98_MTC_0",
|
||||
"name": "My Generic ASA @MyToolChanger",
|
||||
"name": "Generic ASA @MyToolChanger",
|
||||
"renamed_from": "My Generic ASA @MyToolChanger",
|
||||
"from": "system",
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_filament_asa",
|
||||
"filament_flow_ratio": [
|
||||
"0.93"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"12"
|
||||
],
|
||||
"inherits": "Generic ASA @System",
|
||||
"filament_cooling_final_speed": [
|
||||
"3.5"
|
||||
],
|
@ -1,20 +1,11 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"filament_id": "GFN99",
|
||||
"setting_id": "GFN99_MTC_0",
|
||||
"name": "My Generic PA @MyToolChanger",
|
||||
"name": "Generic PA @MyToolChanger",
|
||||
"renamed_from": "My Generic PA @MyToolChanger",
|
||||
"from": "system",
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_filament_pa",
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"280"
|
||||
],
|
||||
"nozzle_temperature": [
|
||||
"280"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"12"
|
||||
],
|
||||
"inherits": "Generic PA @System",
|
||||
"filament_cooling_final_speed": [
|
||||
"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",
|
||||
"filament_id": "GFC99",
|
||||
"setting_id": "GFC99_MTC_0",
|
||||
"name": "My Generic PC @MyToolChanger",
|
||||
"name": "Generic PC @MyToolChanger",
|
||||
"renamed_from": "My Generic PC @MyToolChanger",
|
||||
"from": "system",
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_filament_pc",
|
||||
"filament_max_volumetric_speed": [
|
||||
"12"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"0.94"
|
||||
],
|
||||
"inherits": "Generic PC @System",
|
||||
"filament_cooling_final_speed": [
|
||||
"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",
|
||||
"filament_id": "GFL99",
|
||||
"setting_id": "GFL99_MTC_0",
|
||||
"name": "My Generic PLA @MyToolChanger",
|
||||
"name": "Generic PLA @MyToolChanger",
|
||||
"renamed_from": "My Generic PLA @MyToolChanger",
|
||||
"from": "system",
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_filament_pla",
|
||||
"filament_flow_ratio": [
|
||||
"0.98"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"12"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"8"
|
||||
],
|
||||
"inherits": "Generic PLA @System",
|
||||
"filament_cooling_final_speed": [
|
||||
"3.5"
|
||||
],
|
@ -2,22 +2,11 @@
|
||||
"type": "filament",
|
||||
"filament_id": "GFL98",
|
||||
"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",
|
||||
"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"
|
||||
],
|
||||
"inherits": "Generic PLA-CF @System",
|
||||
"filament_cooling_final_speed": [
|
||||
"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",
|
||||
"filament_id": "GFU99",
|
||||
"setting_id": "GFU99_MTC_0",
|
||||
"name": "My Generic TPU @MyToolChanger",
|
||||
"name": "Generic TPU @MyToolChanger",
|
||||
"renamed_from": "My Generic TPU @MyToolChanger",
|
||||
"from": "system",
|
||||
"instantiation": "true",
|
||||
"inherits": "fdm_filament_tpu",
|
||||
"inherits": "Generic TPU @System",
|
||||
"filament_max_volumetric_speed": [
|
||||
"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_texture": "orcaslicer_bed_texture.svg",
|
||||
"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_texture": "orcaslicer_bed_texture.svg",
|
||||
"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_texture": "orcaslicer_bed_texture.svg",
|
||||
"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_texture": "orcaslicer_bed_texture.svg",
|
||||
"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",
|
||||
"instantiation": "false",
|
||||
"inherits": "fdm_filament_common",
|
||||
"cool_plate_temp" : [
|
||||
"cool_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"eng_plate_temp" : [
|
||||
"eng_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"hot_plate_temp" : [
|
||||
"hot_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"textured_plate_temp" : [
|
||||
"textured_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"cool_plate_temp_initial_layer" : [
|
||||
"cool_plate_temp_initial_layer": [
|
||||
"105"
|
||||
],
|
||||
"eng_plate_temp_initial_layer" : [
|
||||
"eng_plate_temp_initial_layer": [
|
||||
"105"
|
||||
],
|
||||
"hot_plate_temp_initial_layer" : [
|
||||
"hot_plate_temp_initial_layer": [
|
||||
"105"
|
||||
],
|
||||
"textured_plate_temp_initial_layer" : [
|
||||
"textured_plate_temp_initial_layer": [
|
||||
"105"
|
||||
],
|
||||
"slow_down_for_layer_cooling": [
|
||||
@ -37,9 +37,6 @@
|
||||
"fan_cooling_layer_time": [
|
||||
"30"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"28.6"
|
||||
],
|
||||
"filament_type": [
|
||||
"ABS"
|
||||
],
|
||||
@ -84,5 +81,11 @@
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"3"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"0.926"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"12"
|
||||
]
|
||||
}
|
||||
}
|
@ -37,9 +37,6 @@
|
||||
"fan_cooling_layer_time": [
|
||||
"35"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"28.6"
|
||||
],
|
||||
"filament_type": [
|
||||
"ASA"
|
||||
],
|
||||
@ -84,5 +81,11 @@
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"3"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"0.93"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"12"
|
||||
]
|
||||
}
|
@ -37,9 +37,6 @@
|
||||
"fan_cooling_layer_time": [
|
||||
"4"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"8"
|
||||
],
|
||||
"filament_type": [
|
||||
"PA"
|
||||
],
|
||||
@ -49,9 +46,6 @@
|
||||
"filament_cost": [
|
||||
"20"
|
||||
],
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"290"
|
||||
],
|
||||
"reduce_fan_stop_start_freq": [
|
||||
"0"
|
||||
],
|
||||
@ -64,9 +58,6 @@
|
||||
"overhang_fan_speed": [
|
||||
"30"
|
||||
],
|
||||
"nozzle_temperature": [
|
||||
"290"
|
||||
],
|
||||
"temperature_vitrification": [
|
||||
"108"
|
||||
],
|
||||
@ -81,5 +72,14 @@
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"2"
|
||||
],
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"290"
|
||||
],
|
||||
"nozzle_temperature": [
|
||||
"290"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"10"
|
||||
]
|
||||
}
|
@ -37,9 +37,6 @@
|
||||
"fan_cooling_layer_time": [
|
||||
"30"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"23.2"
|
||||
],
|
||||
"filament_type": [
|
||||
"PC"
|
||||
],
|
||||
@ -84,5 +81,11 @@
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"2"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"12"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"0.94"
|
||||
]
|
||||
}
|
@ -28,18 +28,9 @@
|
||||
"textured_plate_temp_initial_layer" : [
|
||||
"80"
|
||||
],
|
||||
"slow_down_for_layer_cooling": [
|
||||
"1"
|
||||
],
|
||||
"close_fan_the_first_x_layers": [
|
||||
"3"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"20"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"25"
|
||||
],
|
||||
"filament_type": [
|
||||
"PETG"
|
||||
],
|
||||
@ -52,18 +43,6 @@
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"255"
|
||||
],
|
||||
"reduce_fan_stop_start_freq": [
|
||||
"1"
|
||||
],
|
||||
"fan_max_speed": [
|
||||
"100"
|
||||
],
|
||||
"fan_min_speed": [
|
||||
"20"
|
||||
],
|
||||
"overhang_fan_speed": [
|
||||
"100"
|
||||
],
|
||||
"nozzle_temperature": [
|
||||
"255"
|
||||
],
|
||||
@ -78,5 +57,38 @@
|
||||
],
|
||||
"filament_start_gcode": [
|
||||
"; 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": [
|
||||
"100"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"12"
|
||||
],
|
||||
"filament_type": [
|
||||
"PLA"
|
||||
],
|
||||
@ -19,28 +16,28 @@
|
||||
"filament_cost": [
|
||||
"20"
|
||||
],
|
||||
"cool_plate_temp" : [
|
||||
"cool_plate_temp": [
|
||||
"60"
|
||||
],
|
||||
"eng_plate_temp" : [
|
||||
"eng_plate_temp": [
|
||||
"60"
|
||||
],
|
||||
"hot_plate_temp" : [
|
||||
"hot_plate_temp": [
|
||||
"60"
|
||||
],
|
||||
"textured_plate_temp" : [
|
||||
"textured_plate_temp": [
|
||||
"60"
|
||||
],
|
||||
"cool_plate_temp_initial_layer" : [
|
||||
"cool_plate_temp_initial_layer": [
|
||||
"60"
|
||||
],
|
||||
"eng_plate_temp_initial_layer" : [
|
||||
"eng_plate_temp_initial_layer": [
|
||||
"60"
|
||||
],
|
||||
"hot_plate_temp_initial_layer" : [
|
||||
"hot_plate_temp_initial_layer": [
|
||||
"60"
|
||||
],
|
||||
"textured_plate_temp_initial_layer" : [
|
||||
"textured_plate_temp_initial_layer": [
|
||||
"60"
|
||||
],
|
||||
"nozzle_temperature_initial_layer": [
|
||||
@ -82,13 +79,19 @@
|
||||
"slow_down_min_speed": [
|
||||
"10"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"4"
|
||||
],
|
||||
"additional_cooling_fan_speed": [
|
||||
"70"
|
||||
],
|
||||
"filament_start_gcode": [
|
||||
"; 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",
|
||||
"instantiation": "false",
|
||||
"inherits": "fdm_filament_common",
|
||||
"cool_plate_temp" : [
|
||||
"cool_plate_temp": [
|
||||
"35"
|
||||
],
|
||||
"eng_plate_temp" : [
|
||||
"eng_plate_temp": [
|
||||
"0"
|
||||
],
|
||||
"hot_plate_temp" : [
|
||||
"hot_plate_temp": [
|
||||
"45"
|
||||
],
|
||||
"textured_plate_temp" : [
|
||||
"textured_plate_temp": [
|
||||
"45"
|
||||
],
|
||||
"cool_plate_temp_initial_layer" : [
|
||||
"cool_plate_temp_initial_layer": [
|
||||
"35"
|
||||
],
|
||||
"eng_plate_temp_initial_layer" : [
|
||||
"eng_plate_temp_initial_layer": [
|
||||
"0"
|
||||
],
|
||||
"hot_plate_temp_initial_layer" : [
|
||||
"hot_plate_temp_initial_layer": [
|
||||
"45"
|
||||
],
|
||||
"textured_plate_temp_initial_layer" : [
|
||||
"textured_plate_temp_initial_layer": [
|
||||
"45"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"100"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"15"
|
||||
],
|
||||
"filament_soluble": [
|
||||
"1"
|
||||
],
|
||||
@ -85,16 +82,22 @@
|
||||
"nozzle_temperature_range_high": [
|
||||
"250"
|
||||
],
|
||||
"slow_down_min_speed": [
|
||||
"10"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"4"
|
||||
],
|
||||
"additional_cooling_fan_speed": [
|
||||
"70"
|
||||
],
|
||||
"filament_start_gcode": [
|
||||
"; 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",
|
||||
"instantiation": "false",
|
||||
"inherits": "fdm_filament_common",
|
||||
"cool_plate_temp" : [
|
||||
"cool_plate_temp": [
|
||||
"30"
|
||||
],
|
||||
"eng_plate_temp" : [
|
||||
"eng_plate_temp": [
|
||||
"30"
|
||||
],
|
||||
"hot_plate_temp" : [
|
||||
"hot_plate_temp": [
|
||||
"35"
|
||||
],
|
||||
"textured_plate_temp" : [
|
||||
"textured_plate_temp": [
|
||||
"35"
|
||||
],
|
||||
"cool_plate_temp_initial_layer" : [
|
||||
"cool_plate_temp_initial_layer": [
|
||||
"30"
|
||||
],
|
||||
"eng_plate_temp_initial_layer" : [
|
||||
"eng_plate_temp_initial_layer": [
|
||||
"30"
|
||||
],
|
||||
"hot_plate_temp_initial_layer" : [
|
||||
"hot_plate_temp_initial_layer": [
|
||||
"35"
|
||||
],
|
||||
"textured_plate_temp_initial_layer" : [
|
||||
"textured_plate_temp_initial_layer": [
|
||||
"35"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"100"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"15"
|
||||
],
|
||||
"filament_type": [
|
||||
"TPU"
|
||||
],
|
||||
@ -84,5 +81,8 @@
|
||||
],
|
||||
"filament_start_gcode": [
|
||||
"; filament start gcode\n"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"3.2"
|
||||
]
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
var m_ProfileItem;
|
||||
|
||||
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()
|
||||
{
|
||||
@ -139,7 +139,7 @@ function SortUI()
|
||||
if( fModel=='')
|
||||
{
|
||||
// Orca: hide
|
||||
bFind=false;
|
||||
bFind=true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -199,7 +199,11 @@ function SortUI()
|
||||
let strModel=pFila.attr("model");
|
||||
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+';');
|
||||
}
|
||||
|
||||
|
@ -71,30 +71,7 @@ function SortUI()
|
||||
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
|
||||
let HtmlMode='';
|
||||
nMode=ModelList.length;
|
||||
@ -131,15 +108,6 @@ function SortUI()
|
||||
let fSelect=OneFila['selected'];
|
||||
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 bCheck=$("#MachineList input:first").prop("checked");
|
||||
if( fModel=='')
|
||||
@ -204,7 +172,10 @@ function SortUI()
|
||||
let strModel=pFila.attr("model");
|
||||
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+';');
|
||||
}
|
||||
|
||||
|
@ -147,6 +147,8 @@ int main(int argc, char* argv[])
|
||||
std::cout << "Validation failed" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
// Report loaded presets
|
||||
std::cout << "Total loaded vendors: " << preset_bundle->vendors.size() << std::endl;
|
||||
|
||||
if (generate_user_preset) {
|
||||
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)) {
|
||||
key_values.emplace(BBL_JSON_KEY_INHERITS, it.value());
|
||||
}
|
||||
else {
|
||||
} else if (boost::iequals(it.key(), ORCA_JSON_KEY_RENAMED_FROM)) {
|
||||
key_values.emplace(ORCA_JSON_KEY_RENAMED_FROM, it.value());
|
||||
} else {
|
||||
t_config_option_key opt_key = it.key();
|
||||
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)
|
||||
{
|
||||
if (preset.vendor != nullptr && preset.vendor != active_printer.vendor)
|
||||
// The current profile has a vendor assigned and it is different from the active print's vendor.
|
||||
return false;
|
||||
// Orca: we allow cross vendor compatibility
|
||||
// if (preset.vendor != nullptr && preset.vendor != active_printer.vendor)
|
||||
// // 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 *compatible_prints = dynamic_cast<const ConfigOptionStrings*>(preset.preset.config.option("compatible_prints"));
|
||||
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)
|
||||
{
|
||||
if (preset.vendor != nullptr && preset.vendor != active_printer.vendor)
|
||||
// The current profile has a vendor assigned and it is different from the active print's vendor.
|
||||
return false;
|
||||
// Orca: we allow cross vendor compatibility
|
||||
// if (preset.vendor != nullptr && preset.vendor != active_printer.vendor)
|
||||
// // 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 *compatible_printers = dynamic_cast<const ConfigOptionStrings*>(preset.preset.config.option("compatible_printers"));
|
||||
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 ||
|
||||
std::find(compatible_printers->values.begin(), compatible_printers->values.end(), active_printer.preset.name) !=
|
||||
compatible_printers->values.end()
|
||||
//BBS
|
||||
|| (!active_printer.preset.is_system && is_compatible_with_parent_printer(preset, active_printer));
|
||||
std::find(compatible_printers->values.begin(), compatible_printers->values.end(), active_printer.preset.name) !=
|
||||
compatible_printers->values.end() ||
|
||||
(!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)
|
||||
@ -1145,7 +1155,7 @@ void PresetCollection::load_presets(
|
||||
if (key_values.find("instantiation") != key_values.end())
|
||||
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;
|
||||
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);
|
||||
std::string inherits_value = option_str->value;
|
||||
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 {
|
||||
;
|
||||
}
|
||||
@ -2123,6 +2139,7 @@ bool PresetCollection::clone_presets(std::vector<Preset const *> const &presets,
|
||||
auto &preset = new_presets.back();
|
||||
preset.vendor = nullptr;
|
||||
preset.renamed_from.clear();
|
||||
preset.m_excluded_from.clear();
|
||||
preset.setting_id.clear();
|
||||
preset.inherits().clear();
|
||||
preset.is_default = false;
|
||||
@ -2251,6 +2268,7 @@ void PresetCollection::save_current_preset(const std::string &new_name, bool det
|
||||
preset.inherits().clear();
|
||||
preset.alias.clear();
|
||||
preset.renamed_from.clear();
|
||||
preset.m_excluded_from.clear();
|
||||
BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": save preset %1% , with detach")%new_name;
|
||||
}
|
||||
//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.alias.clear();
|
||||
preset.renamed_from.clear();
|
||||
preset.m_excluded_from.clear();
|
||||
preset.setting_id.clear();
|
||||
if (detach) {
|
||||
// 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;
|
||||
}
|
||||
|
||||
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.
|
||||
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; });
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
m_map_system_profile_renamed.clear();
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
#include <deque>
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
#include <functional>
|
||||
@ -63,7 +64,8 @@
|
||||
#define BBL_JSON_KEY_DEFAULT_MATERIALS "default_materials"
|
||||
#define BBL_JSON_KEY_MODEL_ID "model_id"
|
||||
|
||||
//BBL: json path
|
||||
// Orca extension
|
||||
#define ORCA_JSON_KEY_RENAMED_FROM "renamed_from"
|
||||
|
||||
|
||||
namespace Slic3r {
|
||||
@ -232,6 +234,11 @@ public:
|
||||
// and to match the "inherits" field of user profiles with updated system profiles.
|
||||
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
|
||||
Semver version; // version 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);
|
||||
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); }
|
||||
// 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;
|
||||
// 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.
|
||||
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);
|
||||
|
||||
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.
|
||||
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> sla_prints;
|
||||
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.
|
||||
/*std::pair<PresetsConfigSubstitutions, size_t> load_configbundle(
|
||||
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(
|
||||
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.
|
||||
//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);
|
||||
VendorProfile get_custom_vendor_models() const;
|
||||
|
||||
//BBS: add BBL as default
|
||||
static const char *BBL_BUNDLE;
|
||||
static const char *BBL_DEFAULT_PRINTER_MODEL;
|
||||
static const char *BBL_DEFAULT_PRINTER_VARIANT;
|
||||
static const char *BBL_DEFAULT_FILAMENT;
|
||||
//orca: add 'custom' as default
|
||||
static const char *ORCA_DEFAULT_BUNDLE;
|
||||
static const char *ORCA_DEFAULT_PRINTER_MODEL;
|
||||
static const char *ORCA_DEFAULT_PRINTER_VARIANT;
|
||||
static const char *ORCA_DEFAULT_FILAMENT;
|
||||
static const char *ORCA_FILAMENT_LIBRARY;
|
||||
|
||||
|
||||
static std::array<Preset::Type, 3> types_list(PrinterTechnology pt) {
|
||||
if (pt == ptFFF)
|
||||
|
@ -1262,38 +1262,38 @@ void PrintConfigDef::init_fff_params()
|
||||
|
||||
def = this->add("compatible_printers", coStrings);
|
||||
def->label = L("Compatible machine");
|
||||
def->mode = comDevelop;
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionStrings());
|
||||
def->cli = ConfigOptionDef::nocli;
|
||||
|
||||
//BBS.
|
||||
def = this->add("upward_compatible_machine", coStrings);
|
||||
def->label = L("upward compatible machine");
|
||||
def->mode = comDevelop;
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionStrings());
|
||||
def->cli = ConfigOptionDef::nocli;
|
||||
|
||||
def = this->add("compatible_printers_condition", coString);
|
||||
def->label = L("Compatible machine condition");
|
||||
//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 "
|
||||
// "with the active printer profile.");
|
||||
def->mode = comDevelop;
|
||||
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 "
|
||||
"with the active printer profile.");
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionString());
|
||||
def->cli = ConfigOptionDef::nocli;
|
||||
|
||||
def = this->add("compatible_prints", coStrings);
|
||||
def->label = L("Compatible process profiles");
|
||||
def->mode = comDevelop;
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionStrings());
|
||||
def->cli = ConfigOptionDef::nocli;
|
||||
|
||||
def = this->add("compatible_prints_condition", coString);
|
||||
def->label = L("Compatible process profiles condition");
|
||||
//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 "
|
||||
// "with the active print profile.");
|
||||
def->mode = comDevelop;
|
||||
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 "
|
||||
"with the active print profile.");
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionString());
|
||||
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 rsrc_vendor_dir = (boost::filesystem::path(resources_dir()) / "profiles").make_preferred();
|
||||
|
||||
//BBS: add BBL as default
|
||||
//BBS: add json logic for vendor bundle
|
||||
auto bbl_bundle_path = (vendor_dir / PresetBundle::BBL_BUNDLE).replace_extension(".json");
|
||||
auto bbl_bundle_rsrc = false;
|
||||
if (!boost::filesystem::exists(bbl_bundle_path)) {
|
||||
bbl_bundle_path = (rsrc_vendor_dir / PresetBundle::BBL_BUNDLE).replace_extension(".json");
|
||||
bbl_bundle_rsrc = true;
|
||||
//Orca: add custom as default
|
||||
//Orca: add json logic for vendor bundle
|
||||
auto orca_bundle_path = (vendor_dir / PresetBundle::ORCA_DEFAULT_BUNDLE).replace_extension(".json");
|
||||
auto orca_bundle_rsrc = false;
|
||||
if (!boost::filesystem::exists(orca_bundle_path)) {
|
||||
orca_bundle_path = (rsrc_vendor_dir / PresetBundle::ORCA_DEFAULT_BUNDLE).replace_extension(".json");
|
||||
orca_bundle_rsrc = true;
|
||||
}
|
||||
{
|
||||
Bundle bbl_bundle;
|
||||
if (bbl_bundle.load(std::move(bbl_bundle_path), bbl_bundle_rsrc, true))
|
||||
res.emplace(PresetBundle::BBL_BUNDLE, std::move(bbl_bundle));
|
||||
if (bbl_bundle.load(std::move(orca_bundle_path), orca_bundle_rsrc, true))
|
||||
res.emplace(PresetBundle::ORCA_DEFAULT_BUNDLE, std::move(bbl_bundle));
|
||||
}
|
||||
|
||||
// Load the other bundles in the datadir/vendor directory
|
||||
@ -163,10 +163,10 @@ BundleMap BundleMap::load()
|
||||
|
||||
Bundle& BundleMap::bbl_bundle()
|
||||
{
|
||||
//BBS: add BBL as default
|
||||
auto it = find(PresetBundle::BBL_BUNDLE);
|
||||
//Orca: add custom as default
|
||||
auto it = find(PresetBundle::ORCA_DEFAULT_BUNDLE);
|
||||
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;
|
||||
@ -625,12 +625,11 @@ std::set<std::string> PagePrinters::get_selected_models()
|
||||
|
||||
void PagePrinters::set_run_reason(ConfigWizard::RunReason run_reason)
|
||||
{
|
||||
//BBS: add BBL as default
|
||||
//Orca: add custom as default
|
||||
if (is_primary_printer_page
|
||||
&& (run_reason == ConfigWizard::RR_DATA_EMPTY || run_reason == ConfigWizard::RR_DATA_LEGACY)
|
||||
&& printer_pickers.size() > 0
|
||||
&& printer_pickers[0]->vendor_id == PresetBundle::BBL_BUNDLE) {
|
||||
//BBS: select alll bbs machine by default
|
||||
&& printer_pickers[0]->vendor_id == PresetBundle::ORCA_DEFAULT_BUNDLE) {
|
||||
//printer_pickers[0]->select_one(0, true);
|
||||
printer_pickers[0]->select_all(true);
|
||||
}
|
||||
@ -1941,8 +1940,8 @@ void ConfigWizard::priv::create_3rdparty_pages()
|
||||
{
|
||||
for (const auto &pair : bundles) {
|
||||
const VendorProfile *vendor = pair.second.vendor_profile;
|
||||
//BBS: add BBL as default
|
||||
if (vendor->id == PresetBundle::BBL_BUNDLE) { continue; }
|
||||
//Orca: add custom as default
|
||||
if (vendor->id == PresetBundle::ORCA_DEFAULT_BUNDLE) { continue; }
|
||||
|
||||
bool is_fff_technology = false;
|
||||
bool is_sla_technology = false;
|
||||
|
@ -845,7 +845,7 @@ void GCodeViewer::init(ConfigOptionMode mode, PresetBundle* preset_bundle)
|
||||
}
|
||||
|
||||
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(
|
||||
[this, progressFn, cancelFn, finishFn, t = std::weak_ptr<int>(m_user_sync_token)] {
|
||||
// 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) {
|
||||
auto type = info[BBL_JSON_KEY_TYPE];
|
||||
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;
|
||||
optgroup->append_single_option_line(option);
|
||||
|
||||
#if 1
|
||||
page = add_options_page(L("Dependencies"), "custom-gcode_advanced");
|
||||
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);
|
||||
|
||||
build_preset_description_line(optgroup.get());
|
||||
#endif
|
||||
}
|
||||
|
||||
// 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_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");
|
||||
optgroup = page->new_optgroup(L("Profile dependencies"));
|
||||
create_line_with_widget(optgroup.get(), "compatible_printers", "", [this](wxWindow* parent) {
|
||||
@ -3554,8 +3544,15 @@ void TabFilament::build()
|
||||
option.opt.full_width = true;
|
||||
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());
|
||||
#endif
|
||||
}
|
||||
|
||||
// Reload current config (aka presets->edited_preset->config) into the UI fields.
|
||||
|
@ -1,9 +1,13 @@
|
||||
#include "WebGuideDialog.hpp"
|
||||
#include "ConfigWizard.hpp"
|
||||
|
||||
#include <boost/filesystem/operations.hpp>
|
||||
#include <boost/filesystem/path.hpp>
|
||||
#include <boost/iostreams/detail/select.hpp>
|
||||
#include <string.h>
|
||||
#include "I18N.hpp"
|
||||
#include "libslic3r/AppConfig.hpp"
|
||||
#include "libslic3r/PresetBundle.hpp"
|
||||
#include "slic3r/GUI/wxExtensions.hpp"
|
||||
#include "slic3r/GUI/GUI_App.hpp"
|
||||
#include "libslic3r_version.h"
|
||||
@ -576,13 +580,6 @@ void GuideFrame::OnError(wxWebViewEvent &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()
|
||||
@ -592,30 +589,12 @@ bool GuideFrame::IsFirstUse()
|
||||
if (strVal == "1")
|
||||
return false;
|
||||
|
||||
if (bbl_bundle_rsrc == true)
|
||||
if (orca_bundle_rsrc == 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()
|
||||
{
|
||||
// SoftFever: don't collect info
|
||||
@ -633,77 +612,6 @@ int GuideFrame::SaveProfile()
|
||||
|
||||
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);
|
||||
|
||||
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();
|
||||
return std::string();
|
||||
};
|
||||
// Prusa printers are considered first, then 3rd party.
|
||||
if (preferred_model = get_preferred_printer_model(PresetBundle::BBL_BUNDLE, preferred_variant);
|
||||
// Orca "custom" printers are considered first, then 3rd party.
|
||||
if (preferred_model = get_preferred_printer_model(PresetBundle::ORCA_DEFAULT_BUNDLE, preferred_variant);
|
||||
preferred_model.empty()) {
|
||||
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);
|
||||
!preferred_model.empty())
|
||||
break;
|
||||
@ -962,10 +870,10 @@ bool GuideFrame::run()
|
||||
//we install the default here
|
||||
bool apply_keeped_changes = false;
|
||||
//clear filament section and use default materials
|
||||
app.app_config->set_variant(PresetBundle::BBL_BUNDLE,
|
||||
PresetBundle::BBL_DEFAULT_PRINTER_MODEL, PresetBundle::BBL_DEFAULT_PRINTER_VARIANT, "true");
|
||||
app.app_config->set_variant(PresetBundle::ORCA_DEFAULT_BUNDLE,
|
||||
PresetBundle::ORCA_DEFAULT_PRINTER_MODEL, PresetBundle::ORCA_DEFAULT_PRINTER_VARIANT, "true");
|
||||
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.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;
|
||||
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));
|
||||
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());
|
||||
if (boost::filesystem::exists(inherits_path))
|
||||
@ -1066,31 +976,7 @@ int GuideFrame::GetFilamentInfo( std::string VendorDirectory, json & pFilaList,
|
||||
int GuideFrame::LoadProfile()
|
||||
{
|
||||
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["configpath"] = Slic3r::data_dir();
|
||||
m_ProfileJson["model"] = json::array();
|
||||
m_ProfileJson["machine"] = 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();
|
||||
rsrc_vendor_dir = (boost::filesystem::path(resources_dir()) / "profiles").make_preferred();
|
||||
|
||||
// BBS: add BBL as default
|
||||
// BBS: add json logic for vendor bundle
|
||||
auto bbl_bundle_path = vendor_dir;
|
||||
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;
|
||||
}
|
||||
// Orca: add custom as default
|
||||
// Orca: add json logic for vendor bundle
|
||||
orca_bundle_rsrc = true;
|
||||
|
||||
// intptr_t handle;
|
||||
//_finddata_t findData;
|
||||
|
||||
//handle = _findfirst((bbl_bundle_path / "*.json").make_preferred().string().c_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(w2s(strVendor), vendor_dir.make_preferred().string() + "\\"+ findData.name);
|
||||
// }
|
||||
|
||||
//} while (_findnext(handle, &findData) == 0); // ???????????
|
||||
|
||||
|
||||
//load BBL bundle from user data path
|
||||
string targetPath = bbl_bundle_path.make_preferred().string();
|
||||
boost::filesystem::path myPath(targetPath);
|
||||
boost::filesystem::directory_iterator endIter;
|
||||
for (boost::filesystem::directory_iterator iter(myPath); iter != endIter; 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('.');
|
||||
strVendor = strVendor.AfterLast('\\');
|
||||
strVendor = strVendor.AfterLast('/');
|
||||
wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower();
|
||||
|
||||
if (w2s(strVendor) == PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json") == 0)
|
||||
LoadProfileFamily(w2s(strVendor), iter->path().string());
|
||||
// search if there exists a .json file in vendor_dir folder, if exists, set orca_bundle_rsrc to false
|
||||
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)) {
|
||||
orca_bundle_rsrc = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// load the default filament library first
|
||||
std::set<std::string> loaded_vendors;
|
||||
auto filament_library_name = boost::filesystem::path(PresetBundle::ORCA_FILAMENT_LIBRARY).replace_extension(".json");
|
||||
if (boost::filesystem::exists(vendor_dir / filament_library_name)) {
|
||||
LoadProfileFamily(PresetBundle::ORCA_FILAMENT_LIBRARY, (vendor_dir / filament_library_name).string());
|
||||
m_OrcaFilaLibPath = (vendor_dir / PresetBundle::ORCA_FILAMENT_LIBRARY).string();
|
||||
} else {
|
||||
LoadProfileFamily(PresetBundle::ORCA_FILAMENT_LIBRARY, (rsrc_vendor_dir / filament_library_name).string());
|
||||
m_OrcaFilaLibPath = (rsrc_vendor_dir / PresetBundle::ORCA_FILAMENT_LIBRARY).string();
|
||||
}
|
||||
loaded_vendors.insert(PresetBundle::ORCA_FILAMENT_LIBRARY);
|
||||
|
||||
//load custom bundle from user data path
|
||||
boost::filesystem::directory_iterator endIter;
|
||||
for (boost::filesystem::directory_iterator iter(vendor_dir); iter != endIter; iter++) {
|
||||
if (!boost::filesystem::is_directory(*iter)) {
|
||||
wxString strVendor = from_u8(iter->path().string()).BeforeLast('.');
|
||||
strVendor = strVendor.AfterLast('\\');
|
||||
strVendor = strVendor.AfterLast('/');
|
||||
|
||||
wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower();
|
||||
if(strExtension.CmpNoCase("json") != 0 || loaded_vendors.find(w2s(strVendor)) != loaded_vendors.end())
|
||||
continue;
|
||||
|
||||
LoadProfileFamily(w2s(strVendor), iter->path().string());
|
||||
loaded_vendors.insert(w2s(strVendor));
|
||||
}
|
||||
}
|
||||
|
||||
//string others_targetPath = rsrc_vendor_dir.string();
|
||||
boost::filesystem::directory_iterator others_endIter;
|
||||
for (boost::filesystem::directory_iterator iter(rsrc_vendor_dir); iter != others_endIter; 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;
|
||||
if (!boost::filesystem::is_directory(*iter)) {
|
||||
wxString strVendor = from_u8(iter->path().string()).BeforeLast('.');
|
||||
strVendor = strVendor.AfterLast('\\');
|
||||
strVendor = strVendor.AfterLast('/');
|
||||
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>();
|
||||
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)
|
||||
{
|
||||
// wxString strFolder = strFilePath.BeforeLast(boost::filesystem::path::preferred_separator);
|
||||
@ -1531,7 +1225,7 @@ int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath
|
||||
|
||||
// BBS:Filament
|
||||
json pFilament = jLocal["filament_list"];
|
||||
json tFilaList = json::object();
|
||||
json tFilaList = m_OrcaFilaList;
|
||||
nsize = pFilament.size();
|
||||
|
||||
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
|
||||
json pProcess = jLocal["process_list"];
|
||||
|
@ -103,7 +103,7 @@ private:
|
||||
|
||||
wxString m_SectionName;
|
||||
|
||||
bool bbl_bundle_rsrc;
|
||||
bool orca_bundle_rsrc;
|
||||
boost::filesystem::path vendor_dir;
|
||||
boost::filesystem::path rsrc_vendor_dir;
|
||||
|
||||
@ -115,6 +115,9 @@ private:
|
||||
bool InstallNetplugin;
|
||||
bool network_plugin_ready {false};
|
||||
|
||||
json m_OrcaFilaList;
|
||||
std::string m_OrcaFilaLibPath;
|
||||
|
||||
#if wxUSE_WEBVIEW_IE
|
||||
wxMenuItem *m_script_object_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
|
||||
// Install indicies from resources. Only installs those that are either missing or older than in resources.
|
||||
// Orca: copy/update the vendor profiles from resource to system folder
|
||||
void PresetUpdater::priv::check_installed_vendor_profiles() const
|
||||
{
|
||||
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;
|
||||
const auto enabled_vendors = app_config->vendors();
|
||||
|
||||
//BBS: refine the init check logic
|
||||
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)) {
|
||||
const auto &path = dir_entry.path();
|
||||
std::string file_path = path.string();
|
||||
@ -1111,11 +1111,11 @@ void PresetUpdater::priv::check_installed_vendor_profiles() const
|
||||
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);
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user