Compare commits

..
52 Commits
Author SHA1 Message Date
SoftFever 4a288c617c refactor global to plate translation 2023-04-17 00:12:57 +08:00
SoftFever e74d366791 fix bed mesh for multi plate 2023-04-16 22:06:37 +08:00
SoftFever 656101dc79 set default filament_colors in app config 2023-04-16 21:54:33 +08:00
SoftFever 661e79ca8c tweak name pos 2023-04-16 17:02:19 +08:00
SoftFever 1852dec00e Merge pull request #760 from CoryCharlton/main
Revert the default filament color change
2023-04-16 16:40:22 +08:00
Cory Charlton 60adc6c5dc Merge pull request #1 from CoryCharlton/CoryCharlton-issue-759
Revert the default filament color change
2023-04-15 11:11:05 -07:00
Cory Charlton 35725a23e6 Revert the default filament color change
In commit https://github.com/SoftFever/OrcaSlicer/commit/c7dbf848a62b56ea83fa5cc169b961f31d42b979# the default filament color was changed. This reverts that change in order to implement #759
2023-04-15 11:10:10 -07:00
SoftFever 44df0d8308 1.6.2-beta 2023-04-16 00:39:20 +08:00
SoftFever e7ee0effa2 FLSun V400 2023-04-15 23:25:31 +08:00
SoftFever d4b59ff52b optimized image size 2023-04-15 23:25:13 +08:00
SoftFever 7f12c18a4a support custom bed texture and model
#83
#685
#695
2023-04-15 01:37:46 +08:00
SoftFever 9671cdfc68 increase nozzle_diameter limitation
#752
2023-04-15 01:19:30 +08:00
SoftFever 8127f27d79 fix build error on Windows 2023-04-14 00:57:34 +08:00
SoftFever f5d82ee906 fix wrong object polygon for non-first plates
#668
2023-04-13 19:51:00 +08:00
SoftFever 099ed10144 Fix Windows icon res 2023-04-12 17:05:23 +08:00
SoftFever c25ac3829f Merge branch 'main' into feature/delta 2023-04-11 23:16:20 +08:00
SoftFever a731241e9c fix crash when undo/redo 2023-04-11 23:12:56 +08:00
SoftFever b8c79d029a fix patch 2023-04-10 23:54:22 +08:00
SoftFever 75567f3c3c update deps 2023-04-10 23:53:46 +08:00
SoftFever 65e397767c optimized plate name location 2023-04-10 22:54:06 +08:00
SoftFever 07d048ef36 USE_PRIVATE_FONTS 2023-04-10 20:44:20 +08:00
SoftFever ef3614a21a optimize icon position for circle bed 2023-04-10 18:55:14 +08:00
SoftFever 4976e4f91f Merge pull request #665 from hliebscher/lang_de_fix
fix typo
2023-04-10 17:47:28 +08:00
SoftFever ab6a77ddf3 Merge pull request #663 from hliebscher/j1
Add Snapmaker J1
2023-04-10 17:46:49 +08:00
SoftFever cb22560d38 fix an issue that time estimation is written twice for 3rd party printers 2023-04-10 11:44:53 +08:00
SoftFever 87ba3263cc fix default bed triangles and check_outside & intersect_instance 2023-04-09 22:16:36 +08:00
SoftFever 0d20f13196 Revert "wip"
This reverts commit 35d8c101fb.
2023-04-08 10:45:42 +08:00
SoftFever 1dec3fe9cb Merge branch 'main' into feature/delta 2023-04-08 09:21:35 +08:00
Heiko Liebscher 793b6d2006 fix asa and petg 2023-04-07 23:29:44 +02:00
SoftFever 3f7ed3829c Fix top/bottom flow rate bug #680 2023-04-07 22:15:50 +08:00
SoftFever 35d8c101fb wip 2023-04-07 13:40:17 +08:00
SoftFever 094611a17c del old model 2023-04-07 11:14:18 +08:00
SoftFever 5c9012b967 Merge branch 'main' into SoftFever
# Conflicts:
#	.github/workflows/build_linux.yml
#	src/slic3r/GUI/GUI_Factories.cpp
2023-04-07 11:12:04 +08:00
Heiko Liebscher 5a2606a289 j1 idex filament start end code 2023-04-06 16:30:00 +02:00
SoftFever 17d6e63cf9 bump up version 1.6.1 2023-04-06 16:59:24 +08:00
Heiko Liebscher 078f240995 fix typo 2023-04-06 10:09:27 +02:00
Heiko Liebscher 970d31c058 fix version 2023-04-06 09:59:33 +02:00
SoftFever 0c8b596c48 update klipper config 2023-04-06 15:52:32 +08:00
SoftFever f983610827 enable aux part cooling fan by default for Bambulab P1P 2023-04-06 15:42:35 +08:00
SoftFever 23165b8f3e fix Malformed command issue for Klipper 2023-04-06 15:39:02 +08:00
SoftFever 5d1c36c7d4 update OrcaCube v2 2023-04-06 15:38:08 +08:00
Heiko Liebscher d9cdafbaa0 fix filename 2023-04-06 08:47:53 +02:00
Heiko Liebscher 5c439c4acc fix typo 2023-04-05 22:37:31 +02:00
Heiko Liebscher 81a0edbf3f fix profile 2023-04-05 19:53:14 +02:00
Heiko Liebscher be71e50be7 fix j1 pla settings 2023-04-05 17:52:31 +02:00
Heiko Liebscher da558a8aea set version 1.5 2023-04-05 16:33:20 +02:00
SoftFever 4446ae86ec try fix linux cicd 2023-04-05 22:03:19 +08:00
SoftFever 7d582a9455 add Orca Cube V1 2023-04-05 21:43:36 +08:00
SoftFever 0ab05bacb7 Merge branch 'main' into SoftFever 2023-04-05 21:42:24 +08:00
Heiko Liebscher f9f2148cf8 j1 id fix 2023-04-05 11:26:41 +02:00
Heiko Liebscher f0f1608b5a add texture svg 2023-04-05 09:42:33 +02:00
Heiko Liebscher 8c1e7eeb35 first add j1 2023-03-30 09:34:23 +02:00
109 changed files with 2712 additions and 175 deletions
+2 -2
View File
@@ -20,11 +20,11 @@ jobs:
- run: mkdir ${{ github.workspace }}/deps/build/OrcaSlicer_dep - run: mkdir ${{ github.workspace }}/deps/build/OrcaSlicer_dep
- name: download deps - name: download deps
shell: powershell shell: powershell
run: '(new-object System.Net.WebClient).DownloadFile("https://github.com/SoftFever/FileSharing/releases/download/OrcaSlicer_deps_Mar/OrcaSlicer_dep_12Mar2023.zip", "$env:temp\OrcaSlicer_dep_12Mar2023.zip")' run: '(new-object System.Net.WebClient).DownloadFile("https://github.com/SoftFever/FileSharing/releases/download/OrcaSlicer_deps_Mar/OrcaSlicer_dep_10April2023.zip", "$env:temp\OrcaSlicer_dep_10April2023.zip")'
- name: extract deps - name: extract deps
working-directory: ${{ github.workspace }}/deps/build working-directory: ${{ github.workspace }}/deps/build
shell: cmd shell: cmd
run: '"C:/Program Files/7-Zip/7z.exe" x %temp%\OrcaSlicer_dep_12Mar2023.zip' run: '"C:/Program Files/7-Zip/7z.exe" x %temp%\OrcaSlicer_dep_10April2023.zip'
- run: dir "${{ github.workspace }}\deps\build\OrcaSlicer_dep" - run: dir "${{ github.workspace }}\deps\build\OrcaSlicer_dep"
+11
View File
@@ -59,6 +59,17 @@ Prebuilt binaries are available through the [github releases page](https://githu
- run `BuildLinux.sh -udisr` - run `BuildLinux.sh -udisr`
# Note:
If you're running Klipper, it's recommended to add the following configuration to your `printer.cfg` file.
```
# Enable object exclusion
[exclude_object]
# Enable arcs support
[gcode_arcs]
resolution: 0.1
```
# License # License
Orca Slicer is licensed under the GNU Affero General Public License, version 3. Orca Slicer is based on Bambu Studio by BambuLab. Orca Slicer is licensed under the GNU Affero General Public License, version 3. Orca Slicer is based on Bambu Studio by BambuLab.
+2 -4
View File
@@ -1,15 +1,13 @@
set(_wx_git_tag v3.1.5) set(_wx_git_tag v3.1.5)
set(_wx_toolkit "") set(_wx_toolkit "")
if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1")
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(_gtk_ver 2) set(_gtk_ver 2)
if (DEP_WX_GTK3) if (DEP_WX_GTK3)
set(_gtk_ver 3) set(_gtk_ver 3)
endif () endif ()
set(_wx_toolkit "-DwxBUILD_TOOLKIT=gtk${_gtk_ver}") set(_wx_toolkit "-DwxBUILD_TOOLKIT=gtk${_gtk_ver}")
set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1")
else ()
set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=0")
endif() endif()
if (MSVC) if (MSVC)
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

@@ -23,7 +23,7 @@
"bridge_no_support": "0", "bridge_no_support": "0",
"draft_shield": "disabled", "draft_shield": "disabled",
"elefant_foot_compensation": "0", "elefant_foot_compensation": "0",
"enable_arc_fitting": "1",
"outer_wall_line_width": "0.4", "outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill", "wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4", "line_width": "0.4",
@@ -23,7 +23,7 @@
"bridge_no_support": "0", "bridge_no_support": "0",
"draft_shield": "disabled", "draft_shield": "disabled",
"elefant_foot_compensation": "0", "elefant_foot_compensation": "0",
"enable_arc_fitting": "1",
"outer_wall_line_width": "0.4", "outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill", "wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4", "line_width": "0.4",
@@ -23,7 +23,7 @@
"bridge_no_support": "0", "bridge_no_support": "0",
"draft_shield": "disabled", "draft_shield": "disabled",
"elefant_foot_compensation": "0", "elefant_foot_compensation": "0",
"enable_arc_fitting": "1",
"outer_wall_line_width": "0.4", "outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill", "wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4", "line_width": "0.4",
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "Bambulab", "name": "Bambulab",
"url": "http://www.bambulab.com/Parameters/vendor/BBL.json", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json",
"version": "01.06.00.01", "version": "01.06.00.02",
"force_update": "0", "force_update": "0",
"description": "the initial version of BBL configurations", "description": "the initial version of BBL configurations",
"machine_model_list": [ "machine_model_list": [
@@ -30,7 +30,7 @@
"machine_unload_filament_time": "28", "machine_unload_filament_time": "28",
"nozzle_type": "stainless_steel", "nozzle_type": "stainless_steel",
"nozzle_hrc": "20", "nozzle_hrc": "20",
"auxiliary_fan": "0", "auxiliary_fan": "1",
"upward_compatible_machine":[ "upward_compatible_machine":[
"Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 0.4 nozzle",
"Bambu Lab X1 Carbon 0.4 nozzle" "Bambu Lab X1 Carbon 0.4 nozzle"
+110
View File
@@ -0,0 +1,110 @@
{
"name": "FLSun",
"version": "01.06.00.00",
"force_update": "0",
"description": "FLSun configurations",
"machine_model_list": [
{
"name": "FLSun V400",
"sub_path": "machine/FLSun V400.json"
}
],
"process_list": [
{
"name": "fdm_process_common",
"sub_path": "process/fdm_process_common.json"
},
{
"name": "0.20mm Standard @FLSun",
"sub_path": "process/0.20mm Standard @FLSun.json"
}
],
"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": "FLSun Generic PLA",
"sub_path": "filament/FLSun Generic PLA.json"
},
{
"name": "FLSun Generic PLA-CF",
"sub_path": "filament/FLSun Generic PLA-CF.json"
},
{
"name": "FLSun Generic PETG",
"sub_path": "filament/FLSun Generic PETG.json"
},
{
"name": "FLSun Generic ABS",
"sub_path": "filament/FLSun Generic ABS.json"
},
{
"name": "FLSun Generic TPU",
"sub_path": "filament/FLSun Generic TPU.json"
},
{
"name": "FLSun Generic ASA",
"sub_path": "filament/FLSun Generic ASA.json"
},
{
"name": "FLSun Generic PC",
"sub_path": "filament/FLSun Generic PC.json"
},
{
"name": "FLSun Generic PVA",
"sub_path": "filament/FLSun Generic PVA.json"
},
{
"name": "FLSun Generic PA",
"sub_path": "filament/FLSun Generic PA.json"
},
{
"name": "FLSun Generic PA-CF",
"sub_path": "filament/FLSun Generic PA-CF.json"
}
],
"machine_list": [
{
"name": "fdm_machine_common",
"sub_path": "machine/fdm_machine_common.json"
},
{
"name": "FLSun V400 0.4 nozzle",
"sub_path": "machine/FLSun V400 0.4 nozzle.json"
}
]
}
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

@@ -0,0 +1,18 @@
{
"type": "filament",
"filament_id": "GFB99",
"setting_id": "GFSA04",
"name": "FLSun Generic ABS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.926"
],
"filament_max_volumetric_speed": [
"12"
],
"compatible_printers": [
"FLSun V400 0.4 nozzle"
]
}
@@ -0,0 +1,18 @@
{
"type": "filament",
"filament_id": "GFB98",
"setting_id": "GFSA04",
"name": "FLSun Generic ASA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_asa",
"filament_flow_ratio": [
"0.93"
],
"filament_max_volumetric_speed": [
"12"
],
"compatible_printers": [
"FLSun V400 0.4 nozzle"
]
}
@@ -0,0 +1,24 @@
{
"type": "filament",
"filament_id": "GFN98",
"setting_id": "GFSA04",
"name": "FLSun 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": [
"FLSun V400 0.4 nozzle"
]
}
@@ -0,0 +1,21 @@
{
"type": "filament",
"filament_id": "GFN99",
"setting_id": "GFSA04",
"name": "FLSun 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": [
"FLSun V400 0.4 nozzle"
]
}
@@ -0,0 +1,18 @@
{
"type": "filament",
"filament_id": "GFC99",
"setting_id": "GFSA04",
"name": "FLSun Generic PC",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pc",
"filament_max_volumetric_speed": [
"12"
],
"filament_flow_ratio": [
"0.94"
],
"compatible_printers": [
"FLSun V400 0.4 nozzle"
]
}
@@ -0,0 +1,48 @@
{
"type": "filament",
"filament_id": "GFG99",
"setting_id": "GFSA04",
"name": "FLSun 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": [
"FLSun V400 0.4 nozzle"
]
}
@@ -0,0 +1,24 @@
{
"type": "filament",
"filament_id": "GFL98",
"setting_id": "GFSA04",
"name": "FLSun 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": [
"FLSun V400 0.4 nozzle"
]
}
@@ -0,0 +1,21 @@
{
"type": "filament",
"filament_id": "GFL99",
"setting_id": "GFSA04",
"name": "FLSun 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": [
"FLSun V400 0.4 nozzle"
]
}
@@ -0,0 +1,24 @@
{
"type": "filament",
"filament_id": "GFS99",
"setting_id": "GFSA04",
"name": "FLSun 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": [
"FLSun V400 0.4 nozzle"
]
}
@@ -0,0 +1,15 @@
{
"type": "filament",
"filament_id": "GFU99",
"setting_id": "GFSA04",
"name": "FLSun Generic TPU",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_tpu",
"filament_max_volumetric_speed": [
"3.2"
],
"compatible_printers": [
"FLSun V400 0.4 nozzle"
]
}
@@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_abs",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"105"
],
"eng_plate_temp" : [
"105"
],
"hot_plate_temp" : [
"105"
],
"cool_plate_temp_initial_layer" : [
"105"
],
"eng_plate_temp_initial_layer" : [
"105"
],
"hot_plate_temp_initial_layer" : [
"105"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"30"
],
"filament_max_volumetric_speed": [
"28.6"
],
"filament_type": [
"ABS"
],
"filament_density": [
"1.04"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"260"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_max_speed": [
"80"
],
"fan_min_speed": [
"10"
],
"overhang_fan_threshold": [
"25%"
],
"overhang_fan_speed": [
"80"
],
"nozzle_temperature": [
"260"
],
"temperature_vitrification": [
"110"
],
"nozzle_temperature_range_low": [
"240"
],
"nozzle_temperature_range_high": [
"270"
],
"slow_down_min_speed": [
"10"
],
"slow_down_layer_time": [
"3"
]
}
@@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_asa",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"105"
],
"eng_plate_temp" : [
"105"
],
"hot_plate_temp" : [
"105"
],
"cool_plate_temp_initial_layer" : [
"105"
],
"eng_plate_temp_initial_layer" : [
"105"
],
"hot_plate_temp_initial_layer" : [
"105"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"35"
],
"filament_max_volumetric_speed": [
"28.6"
],
"filament_type": [
"ASA"
],
"filament_density": [
"1.04"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"260"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_max_speed": [
"80"
],
"fan_min_speed": [
"10"
],
"overhang_fan_threshold": [
"25%"
],
"overhang_fan_speed": [
"80"
],
"nozzle_temperature": [
"260"
],
"temperature_vitrification": [
"110"
],
"nozzle_temperature_range_low": [
"240"
],
"nozzle_temperature_range_high": [
"270"
],
"slow_down_min_speed": [
"10"
],
"slow_down_layer_time": [
"3"
]
}
@@ -0,0 +1,138 @@
{
"type": "filament",
"name": "fdm_filament_common",
"from": "system",
"instantiation": "false",
"cool_plate_temp" : [
"60"
],
"eng_plate_temp" : [
"60"
],
"hot_plate_temp" : [
"60"
],
"cool_plate_temp_initial_layer" : [
"60"
],
"eng_plate_temp_initial_layer" : [
"60"
],
"hot_plate_temp_initial_layer" : [
"60"
],
"overhang_fan_threshold": [
"95%"
],
"overhang_fan_speed": [
"100"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"filament_end_gcode": [
"; filament end gcode \n"
],
"filament_flow_ratio": [
"1"
],
"reduce_fan_stop_start_freq": [
"0"
],
"fan_cooling_layer_time": [
"60"
],
"filament_cost": [
"0"
],
"filament_density": [
"0"
],
"filament_deretraction_speed": [
"nil"
],
"filament_diameter": [
"1.75"
],
"filament_max_volumetric_speed": [
"0"
],
"filament_minimal_purge_on_wipe_tower": [
"15"
],
"filament_retraction_minimum_travel": [
"nil"
],
"filament_retract_before_wipe": [
"nil"
],
"filament_retract_when_changing_layer": [
"nil"
],
"filament_retraction_length": [
"nil"
],
"filament_z_hop": [
"nil"
],
"filament_z_hop_types": [
"nil"
],
"filament_retract_restart_extra": [
"nil"
],
"filament_retraction_speed": [
"nil"
],
"filament_settings_id": [
""
],
"filament_soluble": [
"0"
],
"filament_type": [
"PLA"
],
"filament_vendor": [
"Generic"
],
"filament_wipe": [
"nil"
],
"filament_wipe_distance": [
"nil"
],
"bed_type": [
"Cool Plate"
],
"nozzle_temperature_initial_layer": [
"200"
],
"full_fan_speed_layer": [
"0"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"35"
],
"slow_down_min_speed": [
"10"
],
"slow_down_layer_time": [
"8"
],
"filament_start_gcode": [
"; Filament gcode\n"
],
"nozzle_temperature": [
"200"
],
"temperature_vitrification": [
"100"
]
}
@@ -0,0 +1,79 @@
{
"type": "filament",
"name": "fdm_filament_pa",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"0"
],
"eng_plate_temp" : [
"100"
],
"hot_plate_temp" : [
"100"
],
"cool_plate_temp_initial_layer" : [
"0"
],
"eng_plate_temp_initial_layer" : [
"100"
],
"hot_plate_temp_initial_layer" : [
"100"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"4"
],
"filament_max_volumetric_speed": [
"8"
],
"filament_type": [
"PA"
],
"filament_density": [
"1.04"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"290"
],
"reduce_fan_stop_start_freq": [
"0"
],
"fan_max_speed": [
"60"
],
"fan_min_speed": [
"0"
],
"overhang_fan_speed": [
"30"
],
"nozzle_temperature": [
"290"
],
"temperature_vitrification": [
"108"
],
"nozzle_temperature_range_low": [
"270"
],
"nozzle_temperature_range_high": [
"300"
],
"slow_down_min_speed": [
"10"
],
"slow_down_layer_time": [
"2"
]
}
@@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_pc",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"0"
],
"eng_plate_temp" : [
"110"
],
"hot_plate_temp" : [
"110"
],
"cool_plate_temp_initial_layer" : [
"0"
],
"eng_plate_temp_initial_layer" : [
"110"
],
"hot_plate_temp_initial_layer" : [
"110"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"30"
],
"filament_max_volumetric_speed": [
"23.2"
],
"filament_type": [
"PC"
],
"filament_density": [
"1.04"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"270"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_max_speed": [
"60"
],
"fan_min_speed": [
"10"
],
"overhang_fan_threshold": [
"25%"
],
"overhang_fan_speed": [
"60"
],
"nozzle_temperature": [
"280"
],
"temperature_vitrification": [
"140"
],
"nozzle_temperature_range_low": [
"260"
],
"nozzle_temperature_range_high": [
"280"
],
"slow_down_min_speed": [
"10"
],
"slow_down_layer_time": [
"2"
]
}
@@ -0,0 +1,76 @@
{
"type": "filament",
"name": "fdm_filament_pet",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"60"
],
"eng_plate_temp" : [
"0"
],
"hot_plate_temp" : [
"80"
],
"cool_plate_temp_initial_layer" : [
"60"
],
"eng_plate_temp_initial_layer" : [
"0"
],
"hot_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"
],
"filament_density": [
"1.27"
],
"filament_cost": [
"30"
],
"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"
],
"temperature_vitrification": [
"80"
],
"nozzle_temperature_range_low": [
"220"
],
"nozzle_temperature_range_high": [
"260"
],
"filament_start_gcode": [
"; filament start gcode\n"
]
}
@@ -0,0 +1,88 @@
{
"type": "filament",
"name": "fdm_filament_pla",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"fan_cooling_layer_time": [
"100"
],
"filament_max_volumetric_speed": [
"12"
],
"filament_type": [
"PLA"
],
"filament_density": [
"1.24"
],
"filament_cost": [
"20"
],
"cool_plate_temp" : [
"35"
],
"eng_plate_temp" : [
"0"
],
"hot_plate_temp" : [
"45"
],
"cool_plate_temp_initial_layer" : [
"35"
],
"eng_plate_temp_initial_layer" : [
"0"
],
"hot_plate_temp_initial_layer" : [
"45"
],
"nozzle_temperature_initial_layer": [
"220"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_for_layer_cooling": [
"1"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"100"
],
"overhang_fan_speed": [
"100"
],
"overhang_fan_threshold": [
"50%"
],
"close_fan_the_first_x_layers": [
"1"
],
"nozzle_temperature": [
"220"
],
"temperature_vitrification": [
"60"
],
"nozzle_temperature_range_low": [
"190"
],
"nozzle_temperature_range_high": [
"230"
],
"slow_down_min_speed": [
"10"
],
"slow_down_layer_time": [
"4"
],
"additional_cooling_fan_speed": [
"70"
],
"filament_start_gcode": [
"; filament start gcode\n"
]
}
@@ -0,0 +1,94 @@
{
"type": "filament",
"name": "fdm_filament_pva",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"35"
],
"eng_plate_temp" : [
"0"
],
"hot_plate_temp" : [
"45"
],
"cool_plate_temp_initial_layer" : [
"35"
],
"eng_plate_temp_initial_layer" : [
"0"
],
"hot_plate_temp_initial_layer" : [
"45"
],
"fan_cooling_layer_time": [
"100"
],
"filament_max_volumetric_speed": [
"15"
],
"filament_soluble": [
"1"
],
"filament_is_support": [
"1"
],
"filament_type": [
"PVA"
],
"filament_density": [
"1.24"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"220"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_for_layer_cooling": [
"1"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"100"
],
"overhang_fan_speed": [
"100"
],
"overhang_fan_threshold": [
"50%"
],
"close_fan_the_first_x_layers": [
"1"
],
"nozzle_temperature": [
"220"
],
"temperature_vitrification": [
"50"
],
"nozzle_temperature_range_low": [
"190"
],
"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"
]
}
@@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_tpu",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"30"
],
"eng_plate_temp" : [
"30"
],
"hot_plate_temp" : [
"35"
],
"cool_plate_temp_initial_layer" : [
"30"
],
"eng_plate_temp_initial_layer" : [
"30"
],
"hot_plate_temp_initial_layer" : [
"35"
],
"fan_cooling_layer_time": [
"100"
],
"filament_max_volumetric_speed": [
"15"
],
"filament_type": [
"TPU"
],
"filament_density": [
"1.24"
],
"filament_cost": [
"20"
],
"filament_retraction_length": [
"0.4"
],
"nozzle_temperature_initial_layer": [
"240"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_for_layer_cooling": [
"1"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"100"
],
"overhang_fan_speed": [
"100"
],
"additional_cooling_fan_speed": [
"70"
],
"close_fan_the_first_x_layers": [
"1"
],
"nozzle_temperature": [
"240"
],
"temperature_vitrification": [
"60"
],
"nozzle_temperature_range_low": [
"200"
],
"nozzle_temperature_range_high": [
"250"
],
"filament_start_gcode": [
"; filament start gcode\n"
]
}
@@ -0,0 +1,99 @@
{
"type": "machine",
"setting_id": "GM003",
"name": "FLSun V400 0.4 nozzle",
"from": "system",
"instantiation": "true",
"inherits": "fdm_machine_common",
"printer_model": "FLSun V400",
"default_print_profile": "0.20mm Standard @FLSun",
"gcode_flavor": "klipper",
"nozzle_diameter": [
"0.4"
],
"bed_exclude_area": [
"0x0"
],
"printable_area": [
"149.429x13.0734",
"147.721x26.0472",
"144.889x38.8229",
"140.954x51.303",
"135.946x63.3927",
"129.904x75",
"122.873x86.0365",
"114.907x96.4181",
"106.066x106.066",
"96.4181x114.907",
"86.0365x122.873",
"75x129.904",
"63.3927x135.946",
"51.303x140.954",
"38.8229x144.889",
"26.0472x147.721",
"13.0734x149.429",
"9.18485e-15x150",
"-13.0734x149.429",
"-26.0472x147.721",
"-38.8229x144.889",
"-51.303x140.954",
"-63.3927x135.946",
"-75x129.904",
"-86.0365x122.873",
"-96.4181x114.907",
"-106.066x106.066",
"-114.907x96.4181",
"-122.873x86.0365",
"-129.904x75",
"-135.946x63.3927",
"-140.954x51.303",
"-144.889x38.8229",
"-147.721x26.0472",
"-149.429x13.0734",
"-150x1.83697e-14",
"-149.429x-13.0734",
"-147.721x-26.0472",
"-144.889x-38.8229",
"-140.954x-51.303",
"-135.946x-63.3927",
"-129.904x-75",
"-122.873x-86.0365",
"-114.907x-96.4181",
"-106.066x-106.066",
"-96.4181x-114.907",
"-86.0365x-122.873",
"-75x-129.904",
"-63.3927x-135.946",
"-51.303x-140.954",
"-38.8229x-144.889",
"-26.0472x-147.721",
"-13.0734x-149.429",
"-2.75546e-14x-150",
"13.0734x-149.429",
"26.0472x-147.721",
"38.8229x-144.889",
"51.303x-140.954",
"63.3927x-135.946",
"75x-129.904",
"86.0365x-122.873",
"96.4181x-114.907",
"106.066x-106.066",
"114.907x-96.4181",
"122.873x-86.0365",
"129.904x-75",
"135.946x-63.3927",
"140.954x-51.303",
"144.889x-38.8229",
"147.721x-26.0472",
"149.429x-13.0734",
"150x-3.67394e-14"
],
"printable_height": "410",
"machine_end_gcode": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 E-1 F300\nG1 Z+0.5 F6000\nG28 \nG90 ;absolute positioning",
"machine_start_gcode": "G21\nG90\nM82\nM107 T0\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer] T0\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer] T0\nG28\nG1 F3000 Z1\nG1 X-150 Y0 Z0.4\nG92 E0\nG3 X0 Y-130 I150 Z0.3 E30 F2000\nG92 E0",
"layer_change_gcode": "",
"scan_first_layer": "0",
"nozzle_type": "hardened_steel",
"auxiliary_fan": "0"
}
@@ -0,0 +1,12 @@
{
"type": "machine_model",
"name": "FLSun V400",
"model_id": "FLSun_V400",
"nozzle_diameter": "0.4",
"machine_tech": "FFF",
"family": "FLSun",
"bed_model": "",
"bed_texture": "V400.svg",
"hotend_model": "",
"default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF"
}
@@ -0,0 +1,139 @@
{
"type": "machine",
"name": "fdm_machine_common",
"from": "system",
"instantiation": "false",
"gcode_flavor": "marlin",
"machine_start_gcode": "",
"machine_end_gcode": "",
"extruder_colour": [
"#018001"
],
"extruder_offset": [
"0x0"
],
"machine_max_acceleration_e": [
"5000",
"5000"
],
"machine_max_acceleration_extruding": [
"2000",
"2000"
],
"machine_max_acceleration_retracting": [
"5000",
"5000"
],
"machine_max_acceleration_travel": [
"3000",
"3000"
],
"machine_max_acceleration_x": [
"2000",
"2000"
],
"machine_max_acceleration_y": [
"2000",
"2000"
],
"machine_max_acceleration_z": [
"300",
"200"
],
"machine_max_speed_e": [
"25",
"25"
],
"machine_max_speed_x": [
"300",
"200"
],
"machine_max_speed_y": [
"300",
"200"
],
"machine_max_speed_z": [
"12",
"12"
],
"machine_max_jerk_e": [
"2.5",
"2.5"
],
"machine_max_jerk_x": [
"9",
"9"
],
"machine_max_jerk_y": [
"9",
"9"
],
"machine_max_jerk_z": [
"0.2",
"0.4"
],
"machine_min_extruding_rate": [
"0",
"0"
],
"machine_min_travel_rate": [
"0",
"0"
],
"max_layer_height": [
"0.3"
],
"min_layer_height": [
"0.08"
],
"printable_height": "250",
"extruder_clearance_radius": "65",
"extruder_clearance_height_to_rod": "36",
"extruder_clearance_height_to_lid": "140",
"nozzle_diameter": [
"0.4"
],
"printer_settings_id": "",
"printer_technology": "FFF",
"printer_variant": "0.4",
"retraction_minimum_travel": [
"1"
],
"retract_before_wipe": [
"70%"
],
"retract_when_changing_layer": [
"1"
],
"retraction_length": [
"0.8"
],
"retract_length_toolchange": [
"2"
],
"z_hop": [
"0.4"
],
"retract_restart_extra": [
"0"
],
"retract_restart_extra_toolchange": [
"0"
],
"retraction_speed": [
"30"
],
"deretraction_speed": [
"30"
],
"silent_mode": "0",
"single_extruder_multi_material": "1",
"change_filament_gcode": "",
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
"machine_pause_gcode": "M400 U1\n",
"wipe": [
"1"
],
"z_hop_types": "Normal Lift"
}
@@ -0,0 +1,20 @@
{
"type": "process",
"setting_id": "GP004",
"name": "0.20mm Standard @FLSun",
"from": "system",
"instantiation": "true",
"inherits": "fdm_process_common",
"initial_layer_speed": "40",
"initial_layer_infill_speed": "50",
"outer_wall_speed": "35",
"inner_wall_speed": "60",
"sparse_infill_speed": "200",
"internal_solid_infill_speed": "200",
"top_surface_speed": "50",
"gap_infill_speed": "40",
"travel_speed": "180",
"compatible_printers": [
"FLSun V400 0.4 nozzle"
]
}
@@ -0,0 +1,108 @@
{
"type": "process",
"name": "fdm_process_common",
"from": "system",
"instantiation": "false",
"adaptive_layer_height": "0",
"reduce_crossing_wall": "0",
"max_travel_detour_distance": "0",
"bottom_surface_pattern": "monotonic",
"bottom_shell_thickness": "0",
"bridge_speed": "50",
"brim_width": "5",
"brim_object_gap": "0.1",
"compatible_printers": [],
"compatible_printers_condition": "",
"print_sequence": "by layer",
"default_acceleration": "1000",
"initial_layer_acceleration": "500",
"top_surface_acceleration": "800",
"travel_acceleration": "1000",
"inner_wall_acceleration": "900",
"outer_wall_acceleration": "700",
"bridge_no_support": "0",
"draft_shield": "disabled",
"elefant_foot_compensation": "0",
"outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4",
"infill_direction": "45",
"sparse_infill_density": "15%",
"sparse_infill_pattern": "grid",
"initial_layer_line_width": "0.5",
"initial_layer_print_height": "0.2",
"infill_combination": "0",
"sparse_infill_line_width": "0.45",
"infill_wall_overlap": "25%",
"interface_shells": "0",
"ironing_flow": "10%",
"ironing_spacing": "0.15",
"ironing_speed": "30",
"ironing_type": "no ironing",
"reduce_infill_retraction": "1",
"filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode",
"detect_overhang_wall": "1",
"overhang_1_4_speed": "0",
"overhang_2_4_speed": "50",
"overhang_3_4_speed": "30",
"overhang_4_4_speed": "10",
"inner_wall_line_width": "0.45",
"wall_loops": "3",
"print_settings_id": "",
"raft_layers": "0",
"seam_position": "aligned",
"skirt_distance": "2",
"skirt_height": "1",
"skirt_loops": "0",
"minimum_sparse_infill_area": "15",
"internal_solid_infill_line_width": "0.4",
"spiral_mode": "0",
"standby_temperature_delta": "-5",
"enable_support": "0",
"resolution": "0.012",
"support_type": "normal(auto)",
"support_on_build_plate_only": "0",
"support_top_z_distance": "0.2",
"support_filament": "0",
"support_line_width": "0.4",
"support_interface_loop_pattern": "0",
"support_interface_filament": "0",
"support_interface_top_layers": "2",
"support_interface_bottom_layers": "2",
"support_interface_spacing": "0.5",
"support_interface_speed": "80",
"support_base_pattern": "rectilinear",
"support_base_pattern_spacing": "2.5",
"support_speed": "150",
"support_threshold_angle": "30",
"support_object_xy_distance": "0.35",
"tree_support_branch_angle": "30",
"tree_support_wall_count": "0",
"tree_support_with_infill": "0",
"detect_thin_wall": "0",
"top_surface_pattern": "monotonic",
"top_surface_line_width": "0.4",
"top_shell_thickness": "0.8",
"enable_prime_tower": "1",
"wipe_tower_no_sparse_layers": "0",
"prime_tower_width": "35",
"xy_hole_compensation": "0",
"xy_contour_compensation": "0",
"layer_height": "0.2",
"bottom_shell_layers": "3",
"top_shell_layers": "4",
"bridge_flow": "1",
"initial_layer_speed": "45",
"initial_layer_infill_speed": "45",
"outer_wall_speed": "45",
"inner_wall_speed": "80",
"sparse_infill_speed": "150",
"internal_solid_infill_speed": "150",
"top_surface_speed": "50",
"gap_infill_speed": "30",
"travel_speed": "200",
"enable_arc_fitting": "0",
"exclude_object" : "0"
}
@@ -23,7 +23,7 @@
"bridge_no_support": "0", "bridge_no_support": "0",
"draft_shield": "disabled", "draft_shield": "disabled",
"elefant_foot_compensation": "0", "elefant_foot_compensation": "0",
"enable_arc_fitting": "1", "enable_arc_fitting": "0",
"outer_wall_line_width": "0.4", "outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill", "wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4", "line_width": "0.4",
@@ -24,7 +24,7 @@
"bridge_no_support": "0", "bridge_no_support": "0",
"draft_shield": "disabled", "draft_shield": "disabled",
"elefant_foot_compensation": "0", "elefant_foot_compensation": "0",
"enable_arc_fitting": "1",
"outer_wall_line_width": "0.4", "outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill", "wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4", "line_width": "0.4",
+60
View File
@@ -11,6 +11,10 @@
{ {
"name": "Snapmaker A350", "name": "Snapmaker A350",
"sub_path": "machine/Snapmaker A350.json" "sub_path": "machine/Snapmaker A350.json"
},
{
"name": "Snapmaker J1",
"sub_path": "machine/Snapmaker J1.json"
} }
], ],
"process_list": [ "process_list": [
@@ -21,6 +25,14 @@
{ {
"name": "0.20mm Standard @Snapmaker", "name": "0.20mm Standard @Snapmaker",
"sub_path": "process/0.20mm Standard @Snapmaker.json" "sub_path": "process/0.20mm Standard @Snapmaker.json"
},
{
"name": "0.20mm 0.4 Standard @Snapmaker J1",
"sub_path": "process/0.20mm 0.4 Standard @Snapmaker J1.json"
},
{
"name": "0.20mm 0.6 Standard @Snapmaker J1",
"sub_path": "process/0.20mm 0.6 Standard @Snapmaker J1.json"
} }
], ],
"filament_list": [ "filament_list": [
@@ -99,6 +111,46 @@
{ {
"name": "Snapmaker Generic PA-CF", "name": "Snapmaker Generic PA-CF",
"sub_path": "filament/Snapmaker Generic PA-CF.json" "sub_path": "filament/Snapmaker Generic PA-CF.json"
},
{
"name": "Snapmaker J1 PLA",
"sub_path": "filament/Snapmaker J1 PLA.json"
},
{
"name": "Snapmaker J1 PLA-CF",
"sub_path": "filament/Snapmaker J1 PLA-CF.json"
},
{
"name": "Snapmaker J1 PETG",
"sub_path": "filament/Snapmaker J1 PETG.json"
},
{
"name": "Snapmaker J1 ABS",
"sub_path": "filament/Snapmaker J1 ABS.json"
},
{
"name": "Snapmaker J1 TPU",
"sub_path": "filament/Snapmaker J1 TPU.json"
},
{
"name": "Snapmaker J1 ASA",
"sub_path": "filament/Snapmaker J1 ASA.json"
},
{
"name": "Snapmaker J1 PC",
"sub_path": "filament/Snapmaker J1 PC.json"
},
{
"name": "Snapmaker J1 PVA",
"sub_path": "filament/Snapmaker J1 PVA.json"
},
{
"name": "Snapmaker J1 PA",
"sub_path": "filament/Snapmaker J1 PA.json"
},
{
"name": "Snapmaker J1 PA-CF",
"sub_path": "filament/Snapmaker J1 PA-CF.json"
} }
], ],
"machine_list": [ "machine_list": [
@@ -113,6 +165,14 @@
{ {
"name": "Snapmaker A350 0.4 nozzle", "name": "Snapmaker A350 0.4 nozzle",
"sub_path": "machine/Snapmaker A350 0.4 nozzle.json" "sub_path": "machine/Snapmaker A350 0.4 nozzle.json"
},
{
"name": "Snapmaker J1 0.4 nozzle",
"sub_path": "machine/Snapmaker J1 0.4 nozzle.json"
},
{
"name": "Snapmaker J1 0.6 nozzle",
"sub_path": "machine/Snapmaker J1 0.6 nozzle.json"
} }
] ]
} }
+186
View File
@@ -0,0 +1,186 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" sodipodi:docname="j1 (googliola).svg" inkscape:export-ydpi="96" inkscape:export-xdpi="96" inkscape:export-filename="j1.svg" xml:space="preserve" id="svg5" version="1.1" viewBox="0 0 300 200" height="200mm" width="300mm" inkscape:version="1.2.2 (732a01da63, 2022-12-09)">
<defs id="defs2">
<clipPath id="clipPath16">
<path d="M 0,858.9 H 1207.6 V 0 H 0 Z" id="path362"/>
</clipPath>
</defs>
<g inkscape:label="GridCartesian:X30:Y20" id="g15224" style="display:inline">
<g inkscape:label="MajorXGridlines" id="g15076" style="display:inline">
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 10,0 V 200" inkscape:label="MajorXDiv1" id="path15018"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 20,0 V 200" inkscape:label="MajorXDiv2" id="path15020"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 30,0 V 200" inkscape:label="MajorXDiv3" id="path15022"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 40,0 V 200" inkscape:label="MajorXDiv4" id="path15024"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 50,0 V 200" inkscape:label="MajorXDiv5" id="path15026"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 60,0 V 200" inkscape:label="MajorXDiv6" id="path15028"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 70,0 V 200" inkscape:label="MajorXDiv7" id="path15030"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 80,0 V 200" inkscape:label="MajorXDiv8" id="path15032"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 90,0 V 200" inkscape:label="MajorXDiv9" id="path15034"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 100,0 V 200" inkscape:label="MajorXDiv10" id="path15036"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 110,0 V 200" inkscape:label="MajorXDiv11" id="path15038"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 120,0 V 200" inkscape:label="MajorXDiv12" id="path15040"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 130,0 V 200" inkscape:label="MajorXDiv13" id="path15042"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 140,0 V 200" inkscape:label="MajorXDiv14" id="path15044"/>
<path style="display:inline;fill:#00112b;stroke:#0066ff;stroke-width:0.258;stroke-dasharray:1.548, 0.258;stroke-dashoffset:0;stroke-opacity:1" d="M 160,10 V 200" inkscape:label="COPYLINE" id="path15048"/>
<path style="fill:none;stroke:#ff0000;stroke-width:0.265;stroke-dasharray:1.59, 0.265;stroke-dashoffset:0;stroke-opacity:1" d="M 150,0 V 190" inkscape:label="MIRRORLINE" id="path15046" sodipodi:nodetypes="cc"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 170,0 V 200" inkscape:label="MajorXDiv17" id="path15050"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 180,0 V 200" inkscape:label="MajorXDiv18" id="path15052"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 190,0 V 200" inkscape:label="MajorXDiv19" id="path15054"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 200,0 V 200" inkscape:label="MajorXDiv20" id="path15056"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 210,0 V 200" inkscape:label="MajorXDiv21" id="path15058"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 220,0 V 200" inkscape:label="MajorXDiv22" id="path15060"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 230,0 V 200" inkscape:label="MajorXDiv23" id="path15062"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 240,0 V 200" inkscape:label="MajorXDiv24" id="path15064"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 250,0 V 200" inkscape:label="MajorXDiv25" id="path15066"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 260,0 V 200" inkscape:label="MajorXDiv26" id="path15068"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 270,0 V 200" inkscape:label="MajorXDiv27" id="path15070"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 280,0 V 200" inkscape:label="MajorXDiv28" id="path15072"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 290,0 V 200" inkscape:label="MajorXDiv29" id="path15074"/>
<g aria-label="MIRROR" id="text16399" style="font-size:10.5833px;line-height:1.25;letter-spacing:0px;word-spacing:0px;display:inline;stroke-width:0.264583" inkscape:label="MIRROR" inkscape:transform-center-x="-0.23386084">
<path d="m 143.06355,193.62239 h 0.51849 l 0.65629,1.75011 0.65973,-1.75011 h 0.51849 v 2.57176 h -0.33934 v -2.25826 l -0.66318,1.76389 h -0.34968 l -0.66318,-1.76389 v 2.25826 h -0.33762 z" style="font-size:3.52778px;-inkscape-font-specification:'sans-serif, Normal';fill:#ff0000" id="path17403"/>
<path d="m 146.10729,193.62239 h 0.34796 v 2.57176 h -0.34796 z" style="font-size:3.52778px;-inkscape-font-specification:'sans-serif, Normal';fill:#ff0000" id="path17405"/>
<path d="m 148.36728,194.98837 q 0.11196,0.0379 0.21704,0.16192 0.10679,0.12402 0.21359,0.34106 l 0.35313,0.7028 h -0.3738 l -0.329,-0.65973 q -0.12747,-0.25839 -0.24805,-0.34279 -0.11886,-0.0844 -0.32556,-0.0844 h -0.37896 v 1.08693 h -0.34796 v -2.57176 h 0.78548 q 0.44098,0 0.65802,0.18431 0.21704,0.18431 0.21704,0.55638 0,0.24288 -0.11369,0.40308 -0.11197,0.1602 -0.32728,0.22221 z m -0.87161,-1.08004 v 0.91295 h 0.43752 q 0.2515,0 0.37896,-0.11541 0.1292,-0.11713 0.1292,-0.34279 0,-0.22565 -0.1292,-0.33934 -0.12746,-0.11541 -0.37896,-0.11541 z" style="font-size:3.52778px;-inkscape-font-specification:'sans-serif, Normal';fill:#ff0000" id="path17407"/>
<path d="m 150.81846,194.98837 q 0.11197,0.0379 0.21704,0.16192 0.1068,0.12402 0.2136,0.34106 l 0.35312,0.7028 h -0.37379 l -0.32901,-0.65973 q -0.12747,-0.25839 -0.24804,-0.34279 -0.11886,-0.0844 -0.32557,-0.0844 h -0.37896 v 1.08693 h -0.34795 v -2.57176 h 0.78548 q 0.44097,0 0.65801,0.18431 0.21705,0.18431 0.21705,0.55638 0,0.24288 -0.11369,0.40308 -0.11197,0.1602 -0.32729,0.22221 z m -0.87161,-1.08004 v 0.91295 h 0.43753 q 0.25149,0 0.37896,-0.11541 0.12919,-0.11713 0.12919,-0.34279 0,-0.22565 -0.12919,-0.33934 -0.12747,-0.11541 -0.37896,-0.11541 z" style="font-size:3.52778px;-inkscape-font-specification:'sans-serif, Normal';fill:#ff0000" id="path17409"/>
<path d="m 153.09395,193.85838 q -0.37896,0 -0.60289,0.28249 -0.22221,0.2825 -0.22221,0.76998 0,0.48576 0.22221,0.76826 0.22393,0.2825 0.60289,0.2825 0.37896,0 0.59945,-0.2825 0.22221,-0.2825 0.22221,-0.76826 0,-0.48748 -0.22221,-0.76998 -0.22049,-0.28249 -0.59945,-0.28249 z m 0,-0.2825 q 0.54088,0 0.86472,0.36346 0.32384,0.36173 0.32384,0.97151 0,0.60806 -0.32384,0.97152 -0.32384,0.36174 -0.86472,0.36174 -0.5426,0 -0.86816,-0.36174 -0.32384,-0.36173 -0.32384,-0.97152 0,-0.60978 0.32384,-0.97151 0.32556,-0.36346 0.86816,-0.36346 z" style="font-size:3.52778px;-inkscape-font-specification:'sans-serif, Normal';fill:#ff0000" id="path17411"/>
<path d="m 156.0464,194.98837 q 0.11196,0.0379 0.21704,0.16192 0.1068,0.12402 0.2136,0.34106 l 0.35312,0.7028 h -0.37379 l -0.32901,-0.65973 q -0.12747,-0.25839 -0.24805,-0.34279 -0.11885,-0.0844 -0.32556,-0.0844 h -0.37896 v 1.08693 h -0.34796 v -2.57176 h 0.78549 q 0.44097,0 0.65801,0.18431 0.21704,0.18431 0.21704,0.55638 0,0.24288 -0.11369,0.40308 -0.11196,0.1602 -0.32728,0.22221 z m -0.87161,-1.08004 v 0.91295 h 0.43753 q 0.25149,0 0.37896,-0.11541 0.12919,-0.11713 0.12919,-0.34279 0,-0.22565 -0.12919,-0.33934 -0.12747,-0.11541 -0.37896,-0.11541 z" style="font-size:3.52778px;-inkscape-font-specification:'sans-serif, Normal';fill:#ff0000" id="path17413"/>
</g>
<g aria-label="COPY" id="text16407" style="font-size:10.5833px;line-height:1.25;letter-spacing:0px;word-spacing:0px;display:inline;fill:#0066ff;stroke-width:0.264583" inkscape:label="COPY" inkscape:transform-center-x="0.54570313" inkscape:transform-center-y="0.66145834">
<path d="m 157.69645,3.740946 v 0.3669029 q -0.1757,-0.1636422 -0.37552,-0.244602 -0.19809,-0.08096 -0.42202,-0.08096 -0.44097,0 -0.67524,0.2704401 -0.23427,0.2687176 -0.23427,0.7785921 0,0.5081519 0.23427,0.7785921 0.23427,0.2687176 0.67524,0.2687176 0.22393,0 0.42202,-0.08096 0.19982,-0.08096 0.37552,-0.2446019 v 0.3634578 q -0.18259,0.1240235 -0.38757,0.1860353 -0.20326,0.062012 -0.43064,0.062012 -0.58394,0 -0.91984,-0.3565676 -0.3359,-0.3582902 -0.3359,-0.9766852 0,-0.6201176 0.3359,-0.9766852 0.3359,-0.3582902 0.91984,-0.3582902 0.23082,0 0.43408,0.062012 0.20498,0.060289 0.38413,0.1825902 z" style="font-size:3.52778px;-inkscape-font-specification:'sans-serif, Normal'" id="path17394"/>
<path d="m 159.27775,3.7788421 q -0.37896,0 -0.60289,0.282498 -0.22221,0.282498 -0.22221,0.7699793 0,0.4857588 0.22221,0.7682568 0.22393,0.282498 0.60289,0.282498 0.37896,0 0.59945,-0.282498 0.22221,-0.282498 0.22221,-0.7682568 0,-0.4874813 -0.22221,-0.7699793 -0.22049,-0.282498 -0.59945,-0.282498 z m 0,-0.2824981 q 0.54088,0 0.86472,0.3634578 0.32384,0.3617353 0.32384,0.9715176 0,0.6080598 -0.32384,0.9715176 -0.32384,0.3617352 -0.86472,0.3617352 -0.5426,0 -0.86816,-0.3617352 -0.32384,-0.3617353 -0.32384,-0.9715176 0,-0.6097823 0.32384,-0.9715176 0.32556,-0.3634578 0.86816,-0.3634578 z" style="font-size:3.52778px;-inkscape-font-specification:'sans-serif, Normal'" id="path17396"/>
<path d="m 161.35859,3.828796 v 0.9663499 h 0.43753 q 0.24288,0 0.37551,-0.1257461 0.13264,-0.1257461 0.13264,-0.3582902 0,-0.2308215 -0.13264,-0.3565676 -0.13263,-0.125746 -0.37551,-0.125746 z m -0.34796,-0.2859431 h 0.78549 q 0.43236,0 0.65284,0.1963705 0.22221,0.1946481 0.22221,0.5718862 0,0.3806833 -0.22221,0.5753314 -0.22048,0.194648 -0.65284,0.194648 h -0.43753 v 1.0335293 h -0.34796 z" style="font-size:3.52778px;-inkscape-font-specification:'sans-serif, Normal'" id="path17398"/>
<path d="m 162.70734,3.5428529 h 0.3738 l 0.71313,1.057645 0.70797,-1.057645 h 0.37379 l -0.9095,1.3470332 v 1.2247322 h -0.34968 V 4.8898861 Z" style="font-size:3.52778px;-inkscape-font-specification:'sans-serif, Normal'" id="path17400"/>
</g>
</g>
<g inkscape:label="MajorYGridlines" id="g15116" style="display:inline">
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,10 H 300" inkscape:label="MajorYDiv1" id="path15078"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,20 H 300" inkscape:label="MajorYDiv2" id="path15080"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,30 H 300" inkscape:label="MajorYDiv3" id="path15082"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,40 H 300" inkscape:label="MajorYDiv4" id="path15084"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,50 H 300" inkscape:label="MajorYDiv5" id="path15086"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,60 H 300" inkscape:label="MajorYDiv6" id="path15088"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,70 H 300" inkscape:label="MajorYDiv7" id="path15090"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,80 H 300" inkscape:label="MajorYDiv8" id="path15092"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,90 H 300" inkscape:label="MajorYDiv9" id="path15094"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,100 H 300" inkscape:label="MajorYDiv10" id="path15096"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,110 H 300" inkscape:label="MajorYDiv11" id="path15098"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,120 H 300" inkscape:label="MajorYDiv12" id="path15100"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,130 H 300" inkscape:label="MajorYDiv13" id="path15102"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,140 H 300" inkscape:label="MajorYDiv14" id="path15104"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,150 H 300" inkscape:label="MajorYDiv15" id="path15106"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,160 H 300" inkscape:label="MajorYDiv16" id="path15108"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,170 H 300" inkscape:label="MajorYDiv17" id="path15110"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,180 H 300" inkscape:label="MajorYDiv18" id="path15112"/>
<path style="fill:none;stroke:#000000;stroke-width:0.264583" d="M 0,190 H 300" inkscape:label="MajorYDiv19" id="path15114"/>
</g>
<g inkscape:label="SubMinorXGridlines" id="g15178" style="display:none">
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 5,0 V 200" inkscape:label="SubminorXDiv0:0:1" id="path15118"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 15,0 V 200" inkscape:label="SubminorXDiv1:0:1" id="path15120"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 25,0 V 200" inkscape:label="SubminorXDiv2:0:1" id="path15122"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 35,0 V 200" inkscape:label="SubminorXDiv3:0:1" id="path15124"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 45,0 V 200" inkscape:label="SubminorXDiv4:0:1" id="path15126"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 55,0 V 200" inkscape:label="SubminorXDiv5:0:1" id="path15128"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 65,0 V 200" inkscape:label="SubminorXDiv6:0:1" id="path15130"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 75,0 V 200" inkscape:label="SubminorXDiv7:0:1" id="path15132"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 85,0 V 200" inkscape:label="SubminorXDiv8:0:1" id="path15134"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 95,0 V 200" inkscape:label="SubminorXDiv9:0:1" id="path15136"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 105,0 V 200" inkscape:label="SubminorXDiv10:0:1" id="path15138"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 115,0 V 200" inkscape:label="SubminorXDiv11:0:1" id="path15140"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 125,0 V 200" inkscape:label="SubminorXDiv12:0:1" id="path15142"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 135,0 V 200" inkscape:label="SubminorXDiv13:0:1" id="path15144"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 145,0 V 200" inkscape:label="SubminorXDiv14:0:1" id="path15146"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 155,0 V 200" inkscape:label="SubminorXDiv15:0:1" id="path15148"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 165,0 V 200" inkscape:label="SubminorXDiv16:0:1" id="path15150"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 175,0 V 200" inkscape:label="SubminorXDiv17:0:1" id="path15152"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 185,0 V 200" inkscape:label="SubminorXDiv18:0:1" id="path15154"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 195,0 V 200" inkscape:label="SubminorXDiv19:0:1" id="path15156"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 205,0 V 200" inkscape:label="SubminorXDiv20:0:1" id="path15158"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 215,0 V 200" inkscape:label="SubminorXDiv21:0:1" id="path15160"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 225,0 V 200" inkscape:label="SubminorXDiv22:0:1" id="path15162"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 235,0 V 200" inkscape:label="SubminorXDiv23:0:1" id="path15164"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 245,0 V 200" inkscape:label="SubminorXDiv24:0:1" id="path15166"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 255,0 V 200" inkscape:label="SubminorXDiv25:0:1" id="path15168"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 265,0 V 200" inkscape:label="SubminorXDiv26:0:1" id="path15170"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 275,0 V 200" inkscape:label="SubminorXDiv27:0:1" id="path15172"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 285,0 V 200" inkscape:label="SubminorXDiv28:0:1" id="path15174"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 295,0 V 200" inkscape:label="SubminorXDiv29:0:1" id="path15176"/>
</g>
<g inkscape:label="SubMinorYGridlines" id="g15220" style="display:none">
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,5 H 300" inkscape:label="SubminorXDiv0:0:1" id="path15180"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,15 H 300" inkscape:label="SubminorXDiv1:0:1" id="path15182"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,25 H 300" inkscape:label="SubminorXDiv2:0:1" id="path15184"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,35 H 300" inkscape:label="SubminorXDiv3:0:1" id="path15186"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,45 H 300" inkscape:label="SubminorXDiv4:0:1" id="path15188"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,55 H 300" inkscape:label="SubminorXDiv5:0:1" id="path15190"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,65 H 300" inkscape:label="SubminorXDiv6:0:1" id="path15192"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,75 H 300" inkscape:label="SubminorXDiv7:0:1" id="path15194"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,85 H 300" inkscape:label="SubminorXDiv8:0:1" id="path15196"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,95 H 300" inkscape:label="SubminorXDiv9:0:1" id="path15198"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,105 H 300" inkscape:label="SubminorXDiv10:0:1" id="path15200"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,115 H 300" inkscape:label="SubminorXDiv11:0:1" id="path15202"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,125 H 300" inkscape:label="SubminorXDiv12:0:1" id="path15204"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,135 H 300" inkscape:label="SubminorXDiv13:0:1" id="path15206"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,145 H 300" inkscape:label="SubminorXDiv14:0:1" id="path15208"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,155 H 300" inkscape:label="SubminorXDiv15:0:1" id="path15210"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,165 H 300" inkscape:label="SubminorXDiv16:0:1" id="path15212"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,175 H 300" inkscape:label="SubminorXDiv17:0:1" id="path15214"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,185 H 300" inkscape:label="SubminorXDiv18:0:1" id="path15216"/>
<path style="fill:none;stroke:#000000;stroke-width:0.079375" d="M 0,195 H 300" inkscape:label="SubminorXDiv19:0:1" id="path15218"/>
</g>
<rect x="0" y="0" width="300" height="200" style="fill:none;stroke:#000000;stroke-width:3.67183e-17" inkscape:label="Border" id="rect15222"/>
</g>
<g inkscape:groupmode="layer" id="layer3" inkscape:label="Snapmaker | J1" style="display:inline">
<rect style="fill:#ffffff;stroke-width:0.154526" id="rect527" width="0.78233474" height="10.43113" x="279.55826" y="186.86078"/>
<g aria-label="J1" id="text611" style="font-size:9.813px;line-height:1.25;font-family:'Heiti SC';-inkscape-font-specification:'Heiti SC';display:inline;fill:#ffffff;stroke-width:0.229992">
<path d="m 287.28671,193.04701 q 0,0.99111 -0.157,1.47195 -0.1472,0.48083 -0.58878,0.77522 -0.43178,0.28458 -0.94205,0.28458 -0.50046,0 -0.93224,-0.15701 -0.42196,-0.15701 -1.00092,-0.65747 l 0.4514,-0.66728 q 0.56915,0.41214 0.86354,0.54952 0.29439,0.13739 0.56915,0.13739 0.28458,0 0.52009,-0.20608 0.23551,-0.20607 0.29439,-0.5299 0.0687,-0.33364 0.0687,-1.03036 v -4.79856 h 0.85373 z" id="path3063"/>
<path d="m 291.33947,195.40213 h -0.83411 v -6.35883 h -1.16774 l 0.51027,-0.82429 h 1.49158 z" id="path3065"/>
</g>
<g clip-path="url(#clipPath16)" id="g17284" transform="matrix(0.08049864,0,0,-0.08049864,199.09857,227.00105)" style="display:inline;fill:#ffffff">
<g transform="translate(363.26,466.65)" id="g17250" style="fill:#ffffff">
<path d="m 0,0 c -20.922,0 -37.883,-16.96 -37.883,-37.883 v -37.213 h 15.153 v 37.213 h -0.002 c 0,12.555 10.178,22.733 22.732,22.733 12.555,0 22.732,-10.178 22.732,-22.733 h -0.003 v -37.213 h 15.154 v 37.213 C 37.883,-16.96 20.922,0 0,0" fill="#3f3b3a" id="path17248" style="fill:#ffffff"/>
</g>
<g transform="translate(445.58,406.04)" id="g17254" style="fill:#ffffff">
<path d="m 0,0 c -12.554,0 -22.73,10.177 -22.73,22.729 0,12.554 10.176,22.73 22.73,22.73 12.553,0 22.729,-10.176 22.729,-22.73 C 22.729,10.177 12.553,0 0,0 M 22.729,58.244 V 53.037 C 16.398,57.792 8.529,60.612 0,60.612 c -20.923,0 -37.883,-16.96 -37.883,-37.883 0,-20.922 16.96,-37.882 37.883,-37.882 8.529,0 16.398,2.82 22.729,7.576 v -6.906 h 15.154 v 72.727 z" fill="#3f3b3a" id="path17252" style="fill:#ffffff"/>
</g>
<g transform="translate(532.26,406.04)" id="g17258" style="fill:#ffffff">
<path d="m 0,0 c -12.553,0 -22.729,10.177 -22.729,22.729 0,12.554 10.176,22.73 22.729,22.73 12.553,0 22.73,-10.176 22.73,-22.73 C 22.73,10.177 12.553,0 0,0 m 0,60.612 c -20.922,0 -37.882,-16.96 -37.882,-37.883 v -69.2 h 15.153 v 38.894 c 6.331,-4.756 14.2,-7.576 22.729,-7.576 20.922,0 37.883,16.96 37.883,37.882 0,20.923 -16.961,37.883 -37.883,37.883" fill="#3f3b3a" id="path17256" style="fill:#ffffff"/>
</g>
<g transform="translate(734.31,398.46)" id="g17262" style="fill:#ffffff">
<path d="m 0,0 c -16.737,0 -30.306,13.568 -30.306,30.306 0,16.737 13.569,30.306 30.306,30.306 16.737,0 30.306,-13.569 30.306,-30.306 C 30.306,13.568 16.737,0 0,0 M 30.306,65.82 V 53.037 C 23.394,62.237 12.393,68.188 0,68.188 c -20.922,0 -37.883,-16.959 -37.883,-37.882 0,-20.922 16.961,-37.883 37.883,-37.883 12.393,0 23.394,5.952 30.306,15.152 V -6.907 h 7.577 V 65.82 Z" fill="#3f3b3a" id="path17260" style="fill:#ffffff"/>
</g>
<g transform="translate(691.21,436.81)" id="g17266" style="fill:#ffffff">
<path d="m 0,0 c -0.25,16.522 -13.713,29.841 -30.294,29.841 -11.414,0 -21.35,-6.312 -26.519,-15.634 -5.168,9.322 -15.104,15.634 -26.517,15.634 -16.582,0 -30.045,-13.319 -30.295,-29.841 h -0.012 v -45.255 h 7.577 v 44.79 c 0,12.553 10.176,22.729 22.73,22.729 12.553,0 22.729,-10.176 22.729,-22.729 v -44.79 h 7.577 v 44.79 c 0,12.553 10.176,22.729 22.73,22.729 12.553,0 22.73,-10.176 22.73,-22.729 v -44.79 H 0.012 V 0 Z" fill="#3f3b3a" id="path17264" style="fill:#ffffff"/>
</g>
<g transform="translate(856.21,455.02)" id="g17270" style="fill:#ffffff">
<path d="M 0,0 C 13.382,7.726 30.204,4.078 39.292,-7.935 L -12.777,-37.997 C -18.635,-24.118 -13.384,-7.727 0,0 m 45.088,-30.903 c -1.362,-8.745 -6.52,-16.819 -14.782,-21.589 -13.384,-7.727 -30.203,-4.079 -39.294,7.934 L 49.691,-10.68 C 49.175,-9.54 48.6,-8.413 47.96,-7.305 37.499,10.814 14.331,17.022 -3.789,6.561 -21.907,-3.9 -28.115,-27.069 -17.655,-45.188 c 10.461,-18.119 33.631,-24.327 51.749,-13.865 12.12,6.997 18.901,19.681 18.937,32.735 z" fill="#3f3b3a" id="path17268" style="fill:#ffffff"/>
</g>
<g transform="translate(839.22,466.66)" id="g17274" style="fill:#ffffff">
<path d="m 0,0 h -10.716 l -37.79,-37.79 v 70.377 h -7.577 v -107.69 h 7.577 v 26.598 l 5.422,5.421 32.02,-32.019 H -0.35 l -37.376,37.376 z" fill="#3f3b3a" id="path17272" style="fill:#ffffff"/>
</g>
<g transform="translate(917.36,428.77)" id="g17278" style="fill:#ffffff">
<path d="m 0,0 c 0,-0.02 0.003,-0.039 0.003,-0.059 v -37.154 h 7.575 v 37.154 h 10e-4 c 0,0.02 -10e-4,0.039 -10e-4,0.059 0,16.738 13.568,30.306 30.306,30.306 v 7.577 C 16.962,37.883 0,20.923 0,0" fill="#3f3b3a" id="path17276" style="fill:#ffffff"/>
</g>
<g transform="translate(280.65,437.38)" id="g17282" style="fill:#ffffff">
<path d="m 0,0 c -6.641,1.159 -10.845,4.978 -10.218,8.245 0.893,4.658 8.079,5.869 17.803,6.172 12.995,0.405 23.732,-4.078 23.732,-4.078 0,0 3.992,9.327 5.511,12.872 -11.468,5.271 -23.392,6.442 -29.098,6.442 -19.827,0 -35.061,-10.557 -35.061,-22.404 0,-12.88 15.262,-21.176 29.965,-22.574 12.015,-1.144 19.391,-5.593 18.967,-9.818 -0.374,-3.73 -6.558,-5.581 -13.394,-5.903 -5.915,-0.279 -17.31,-0.045 -29.296,4.451 -0.87,-2.064 -4.12,-9.767 -5.504,-13.048 3.022,-1.511 18.332,-8.378 38.223,-6.51 18.771,1.762 29.949,14.058 28.603,24.009 C 37.597,-2.648 11.585,-2.022 0,0" fill="#3f3b3a" id="path17280" style="fill:#ffffff"/>
</g>
</g>
</g>
<g inkscape:label="Icons" inkscape:groupmode="layer" id="layer1" style="display:inline" transform="translate(0.39999965,-2.4459998)">
<path sodipodi:type="star" style="fill:none;fill-opacity:1;stroke:#ffff00;stroke-width:0.264999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path1349" sodipodi:sides="3" sodipodi:cx="39.555885" sodipodi:cy="333.11758" sodipodi:r1="12.85258" sodipodi:r2="6.42629" sodipodi:arg1="2.6179939" sodipodi:arg2="3.6651914" inkscape:flatsided="true" inkscape:rounded="0" inkscape:randomized="0" d="M 28.425224,339.54387 39.555886,320.265 50.686546,339.54387 Z" inkscape:transform-center-y="-2.4767285" transform="matrix(0.77080989,0,0,0.77080989,-11.733546,-62.159169)"/>
<path sodipodi:type="star" style="fill:none;fill-opacity:1;stroke:#ffff00;stroke-width:0.264999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path1349-1" sodipodi:sides="3" sodipodi:cx="74.701828" sodipodi:cy="333.11758" sodipodi:r1="12.85258" sodipodi:r2="6.4262905" sodipodi:arg1="2.6179939" sodipodi:arg2="3.6651914" inkscape:flatsided="true" inkscape:rounded="0" inkscape:randomized="0" d="M 63.571167,339.54387 74.701828,320.265 85.832489,339.54387 Z" inkscape:transform-center-y="-2.4767285" transform="matrix(0.77080989,0,0,0.77080989,-11.733546,-62.159169)"/>
<path sodipodi:type="star" style="fill:none;fill-opacity:1;stroke:#ffff00;stroke-width:0.264999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path1349-1-3" sodipodi:sides="3" sodipodi:cx="111.45139" sodipodi:cy="333.11758" sodipodi:r1="12.85258" sodipodi:r2="6.4262905" sodipodi:arg1="2.6179939" sodipodi:arg2="3.6651914" inkscape:flatsided="true" inkscape:rounded="0" inkscape:randomized="0" d="m 100.32073,339.54387 11.13066,-19.27887 11.13066,19.27887 z" inkscape:transform-center-y="-2.4767285" transform="matrix(0.77080989,0,0,0.77080989,-11.733546,-62.159169)"/>
<path style="fill:none;stroke:#ffff00;stroke-width:0.40005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 44.86076,190.94921 c -0.607012,0.83768 -1.213985,1.6753 -1.2169,2.44625 -0.0029,0.77095 0.597978,1.47503 0.767817,2.01212 0.169839,0.53708 -0.09115,0.90733 -0.352123,1.27754" id="path1396" inkscape:path-effect="#path-effect1398" inkscape:original-d="m 44.86076,190.94921 c -0.606771,0.83785 -1.213745,1.67547 -1.820923,2.51287 0.601121,0.70432 1.202014,1.4084 1.802715,2.11228 -0.260801,0.37047 -0.521796,0.74071 -0.782998,1.11076"/>
<path style="fill:none;stroke:#ffff00;stroke-width:0.40005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 46.061612,190.95887 c -0.607012,0.83768 -1.21398,1.67529 -1.216898,2.44625 -0.0029,0.77095 0.597971,1.47502 0.767813,2.01211 0.169841,0.53709 -0.09115,0.90734 -0.352121,1.27755" id="path1396-6" inkscape:path-effect="#path-effect1417" inkscape:original-d="m 46.061612,190.95887 c -0.606771,0.83785 -1.213745,1.67546 -1.820924,2.51287 0.601122,0.70432 1.202014,1.40839 1.802716,2.11228 -0.260801,0.37047 -0.521796,0.74071 -0.782998,1.11076"/>
<path style="fill:none;stroke:#ffff00;stroke-width:0.40005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 47.463723,190.94066 c -0.607007,0.83767 -1.21398,1.67529 -1.216898,2.44625 -0.0029,0.77095 0.597971,1.47502 0.767813,2.01211 0.169841,0.53709 -0.09114,0.90733 -0.352121,1.27755" id="path1396-7" inkscape:path-effect="#path-effect1426" inkscape:original-d="m 47.463723,190.94066 c -0.606771,0.83784 -1.213745,1.67546 -1.820924,2.51287 0.601122,0.70432 1.202014,1.40839 1.802716,2.11228 -0.260801,0.37047 -0.521796,0.7407 -0.782998,1.11076"/>
<path style="fill:none;stroke:#ffff00;stroke-width:0.40005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 41.874445,197.72306 h 7.647882" id="path1428"/>
<path style="fill:none;stroke:#ffff00;stroke-width:0.293709px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 73.497594,193.31026 c -0.198163,0.41818 -0.396244,0.83619 -0.618617,0.78533 -0.222372,-0.0509 -0.469255,-0.57083 -0.716102,-0.82171 -0.246847,-0.25088 -0.493717,-0.23232 -0.66669,-0.1487 -0.172973,0.0836 -0.271732,0.23218 -0.213909,0.36223 0.05782,0.13004 0.271769,0.24145 0.423902,0.4226 0.152134,0.18115 0.242663,0.43186 0.349605,0.96111 0.106942,0.52924 0.230379,1.33701 0.753087,1.79183 0.522707,0.45482 1.444396,0.55696 2.042911,0.34494 0.598514,-0.21202 0.874186,-0.73823 1.149928,-1.26457" id="path1434" inkscape:path-effect="#path-effect1436" inkscape:original-d="m 73.497594,193.31026 c -0.197813,0.41835 -0.395895,0.83636 -0.594271,1.25409 -0.246613,-0.51967 -0.493488,-1.03964 -0.740648,-1.5599 -0.246613,0.019 -0.493496,0.0374 -0.740656,0.0557 -0.09845,0.14888 -0.197227,0.29744 -0.296261,0.44569 0.214255,0.11178 0.428216,0.22316 0.6419,0.33426 0.09082,0.251 0.181333,0.50172 0.271572,0.7521 0.12373,0.80812 0.24716,1.6159 0.37032,2.42339 0.921996,0.10246 1.843685,0.2046 2.765103,0.30643 0.275988,-0.52597 0.551653,-1.05218 0.827056,-1.5787" sodipodi:nodetypes="cccccccccc"/>
<path style="fill:none;stroke:#ffff00;stroke-width:0.293709px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 76.19798,195.31224 c 0.31925,-0.47948 0.638551,-0.95904 0.761367,-1.3079 0.122817,-0.34885 0.04895,-0.5673 -0.0817,-0.64121 -0.130652,-0.0739 -0.318041,-0.003 -0.516785,0.2169 -0.198743,0.2198 -0.408593,0.58818 -0.618376,0.95645" id="path1442" inkscape:path-effect="#path-effect1444" inkscape:original-d="m 76.19798,195.31224 c 0.319586,-0.47926 0.638886,-0.95882 0.957916,-1.4387 -0.07354,-0.21812 -0.147448,-0.43655 -0.221584,-0.65531 -0.187161,0.0714 -0.374568,0.14237 -0.562275,0.21309 -0.209576,0.3687 -0.419421,0.73709 -0.629551,1.10516" sodipodi:nodetypes="ccccc"/>
<path style="fill:none;stroke:#ffff00;stroke-width:0.293709px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 75.625839,194.75097 c 0.427245,-0.70531 0.854505,-1.41064 0.970243,-1.81734 0.115737,-0.4067 -0.0805,-0.51463 -0.237262,-0.49903 -0.156767,0.0156 -0.273621,0.15486 -0.466514,0.4778 -0.192894,0.32293 -0.461778,0.82941 -0.73061,1.3358" id="path1442-1" inkscape:path-effect="#path-effect1463" inkscape:original-d="m 75.625839,194.75097 c 0.427576,-0.70511 0.854843,-1.41044 1.281941,-2.11627 -0.196024,-0.10766 -0.392265,-0.21557 -0.588821,-0.32384 -0.116585,0.1396 -0.23344,0.27887 -0.35058,0.41783 -0.268627,0.50682 -0.537501,1.01331 -0.806683,1.51951" sodipodi:nodetypes="ccccc"/>
<path style="fill:none;stroke:#ffff00;stroke-width:0.322939px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 75.161665,194.2482 c 0.481946,-0.8587 0.963986,-1.71756 1.084052,-2.22574 0.120065,-0.50817 -0.122202,-0.66556 -0.334468,-0.61383 -0.212265,0.0517 -0.393863,0.31261 -0.608715,0.71081 -0.214852,0.39819 -0.462807,0.93338 -0.710675,1.46838" id="path1442-4" inkscape:path-effect="#path-effect1472" inkscape:original-d="m 75.161665,194.2482 c 0.482296,-0.8585 0.964329,-1.71737 1.446163,-2.57667 -0.242112,-0.15714 -0.48437,-0.31454 -0.727067,-0.47233 -0.181449,0.26138 -0.363036,0.52228 -0.545009,0.78299 -0.247723,0.5356 -0.495677,1.07079 -0.743893,1.60563" sodipodi:nodetypes="ccccc"/>
<path style="fill:none;stroke:#ffff00;stroke-width:0.293709px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 74.591805,193.58782 c 0.292958,-0.63399 0.58592,-1.26799 0.680949,-1.68074 0.09503,-0.41275 -0.0082,-0.60404 -0.162225,-0.65713 -0.154047,-0.0531 -0.358771,0.0325 -0.582389,0.32275 -0.223619,0.29023 -0.465799,0.78467 -0.708062,1.27928" id="path1487" inkscape:path-effect="#path-effect1489" inkscape:original-d="m 74.591805,193.58782 c 0.293309,-0.63383 0.58627,-1.26783 0.87907,-1.9024 -0.103049,-0.19111 -0.206215,-0.38243 -0.309742,-0.57412 -0.204473,0.086 -0.409223,0.17154 -0.614266,0.25685 -0.241996,0.49495 -0.726789,1.48383 -0.726789,1.48383" sodipodi:nodetypes="ccccc"/>
<path style="fill:none;stroke:#ffff00;stroke-width:0.340061;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 76.762344,196.16538 -3.740817,-3.75884 v 0" id="path1491"/>
<g aria-label="!" id="text1642" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.875px;line-height:1.25;font-family:Amiri;-inkscape-font-specification:Amiri;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none" transform="matrix(0.77080989,0,0,0.77080989,-11.733546,-62.159169)">
<path d="m 38.868313,336.48727 q -0.255799,-0.26355 -0.255799,-0.61236 0,-0.34882 0.255799,-0.58911 0.26355,-0.24805 0.612366,-0.24805 0.348815,0 0.589111,0.24805 0.248047,0.24029 0.248047,0.58911 0,0.34881 -0.248047,0.61236 -0.240296,0.2558 -0.589111,0.2558 -0.348816,0 -0.612366,-0.2558 z m 0.116272,-10.20868 q 0.217041,-0.27905 0.558105,-0.27905 0.341065,0 0.511597,0.27905 0.170532,0.27906 0.170532,0.62012 0,1.65882 -0.542602,7.00733 -0.09302,0.18603 -0.248047,0.20153 -0.147278,-0.062 -0.201538,-0.17053 -0.465088,-5.34851 -0.465088,-7.03833 0,-0.34106 0.217041,-0.62012 z" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.875px;font-family:Amiri;-inkscape-font-specification:Amiri;fill:#ffff00;fill-opacity:1;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none" id="path1644"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 35 KiB

@@ -0,0 +1,25 @@
{
"type": "filament",
"filament_id": "GFB99",
"setting_id": "GFSX04",
"name": "Snapmaker J1 ABS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.926"
],
"filament_max_volumetric_speed": [
"12"
],
"compatible_printers": [
"Snapmaker J1 0.4 nozzle",
"Snapmaker J1 0.6 nozzle"
],
"filament_end_gcode": [
"; ====================================\n;END Gcode for filament T[current_extruder] \nG92 E0\nG1 F600 E-6 ;retract\n{if current_extruder == 0}G0 X-20 F12000 {endif} ;\n{if current_extruder == 1}G0 X350 F12000 {endif} ;\nM106 S0 ; Lüfter aus\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 0}T1 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 1}T0 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n;END gcode for filament T[current_extruder] (Ende) \n; ====================================="
],
"filament_start_gcode": [
"; ====================================\n; START gcode for filament T[current_extruder]\nM900 T[current_extruder] K0.054\nG1 F600 E5.5 \nM106 S255 ;Lüfter an\n; START gcode for filament T[current_extruder] (Ende)\n; ===================================="
]
}
@@ -0,0 +1,25 @@
{
"type": "filament",
"filament_id": "GFB98",
"setting_id": "GFSX04",
"name": "Snapmaker J1 ASA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_asa",
"filament_flow_ratio": [
"0.93"
],
"filament_max_volumetric_speed": [
"12"
],
"compatible_printers": [
"Snapmaker J1 0.4 nozzle",
"Snapmaker J1 0.6 nozzle"
],
"filament_end_gcode": [
"; ====================================\n;END Gcode for filament T[current_extruder] \nG92 E0\nG1 F600 E-6 ;retract\n{if current_extruder == 0}G0 X-20 F12000 {endif} ;\n{if current_extruder == 1}G0 X350 F12000 {endif} ;\nM106 S0 ; Lüfter aus\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 0}T1 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 1}T0 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n;END gcode for filament T[current_extruder] (Ende) \n; ====================================="
],
"filament_start_gcode": [
"; ====================================\n; START gcode for filament T[current_extruder]\nM900 T[current_extruder] K0.054\nG1 F600 E5.5 \nM106 S255 ;Lüfter an\n; START gcode for filament T[current_extruder] (Ende)\n; ===================================="
]
}
@@ -0,0 +1,25 @@
{
"type": "filament",
"filament_id": "GFN98",
"setting_id": "GFSX04",
"name": "Snapmaker J1 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": [
"Snapmaker J1 0.4 nozzle",
"Snapmaker J1 0.6 nozzle"
]
}
@@ -0,0 +1,28 @@
{
"type": "filament",
"filament_id": "GFN99",
"setting_id": "GFSX04",
"name": "Snapmaker J1 PA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pa",
"nozzle_temperature_initial_layer": [
"280"
],
"nozzle_temperature": [
"280"
],
"filament_max_volumetric_speed": [
"12"
],
"compatible_printers": [
"Snapmaker J1 0.4 nozzle",
"Snapmaker J1 0.6 nozzle"
],
"filament_end_gcode": [
"; ====================================\n;END Gcode for filament T[current_extruder] \nG92 E0\nG1 F600 E-6 ;retract\n{if current_extruder == 0}G0 X-20 F12000 {endif} ;\n{if current_extruder == 1}G0 X350 F12000 {endif} ;\nM106 S0 ; Lüfter aus\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 0}T1 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 1}T0 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n;END gcode for filament T[current_extruder] (Ende) \n; ====================================="
],
"filament_start_gcode": [
"; ====================================\n; START gcode for filament T[current_extruder]\nM900 T[current_extruder] K0.054\nG1 F600 E5.5 \nM106 S255 ;Lüfter an\n; START gcode for filament T[current_extruder] (Ende)\n; ===================================="
]
}
@@ -0,0 +1,25 @@
{
"type": "filament",
"filament_id": "GFC99",
"setting_id": "GFSX04",
"name": "Snapmaker J1 PC",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pc",
"filament_max_volumetric_speed": [
"12"
],
"filament_flow_ratio": [
"0.94"
],
"compatible_printers": [
"Snapmaker J1 0.4 nozzle",
"Snapmaker J1 0.6 nozzle"
],
"filament_end_gcode": [
"; ====================================\n;END Gcode for filament T[current_extruder] \nG92 E0\nG1 F600 E-6 ;retract\n{if current_extruder == 0}G0 X-20 F12000 {endif} ;\n{if current_extruder == 1}G0 X350 F12000 {endif} ;\nM106 S0 ; Lüfter aus\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 0}T1 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 1}T0 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n;END gcode for filament T[current_extruder] (Ende) \n; ====================================="
],
"filament_start_gcode": [
"; ====================================\n; START gcode for filament T[current_extruder]\nM900 T[current_extruder] K0.054\nG1 F600 E5.5 \nM106 S255 ;Lüfter an\n; START gcode for filament T[current_extruder] (Ende)\n; ===================================="
]
}
@@ -0,0 +1,64 @@
{
"type": "filament",
"filament_id": "GFG99",
"setting_id": "GFSX04",
"name": "Snapmaker J1 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"
],
"nozzle_temperature_initial_layer": [
"245"
],
"nozzle_temperature": [
"245"
],
"nozzle_temperature_range_high": [
"250"
],
"filament_start_gcode": [
"; filament start gcode\n"
],
"compatible_printers": [
"Snapmaker J1 0.4 nozzle",
"Snapmaker J1 0.6 nozzle"
],
"filament_end_gcode": [
"; ====================================\n;END Gcode for filament T[current_extruder] \nG92 E0\nG1 F600 E-6 ;retract\n{if current_extruder == 0}G0 X-20 F12000 {endif} ;\n{if current_extruder == 1}G0 X350 F12000 {endif} ;\nM106 S0 ; Lüfter aus\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 0}T1 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 1}T0 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n;END gcode for filament T[current_extruder] (Ende) \n; ====================================="
],
"filament_start_gcode": [
"; ====================================\n; START gcode for filament T[current_extruder]\nM900 T[current_extruder] K0.054\nG1 F600 E5.5 \nM106 S255 ;Lüfter an\n; START gcode for filament T[current_extruder] (Ende)\n; ===================================="
]
}
@@ -0,0 +1,31 @@
{
"type": "filament",
"filament_id": "GFL98",
"setting_id": "GFSX04",
"name": "Snapmaker J1 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": [
"Snapmaker J1 0.4 nozzle",
"Snapmaker J1 0.6 nozzle"
],
"filament_end_gcode": [
"; ====================================\n;END Gcode for filament T[current_extruder] \nG92 E0\nG1 F600 E-6 ;retract\n{if current_extruder == 0}G0 X-20 F12000 {endif} ;\n{if current_extruder == 1}G0 X350 F12000 {endif} ;\nM106 S0 ; Lüfter aus\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 0}T1 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 1}T0 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n;END gcode for filament T[current_extruder] (Ende) \n; ====================================="
],
"filament_start_gcode": [
"; ====================================\n; START gcode for filament T[current_extruder]\nM900 T[current_extruder] K0.054\nG1 F600 E5.5 \nM106 S255 ;Lüfter an\n; START gcode for filament T[current_extruder] (Ende)\n; ===================================="
]
}
@@ -0,0 +1,34 @@
{
"type": "filament",
"filament_id": "GFL99",
"setting_id": "GFSX04",
"name": "Snapmaker J1 PLA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pla",
"filament_flow_ratio": [
"0.92"
],
"filament_max_volumetric_speed": [
"12"
],
"slow_down_layer_time": [
"8"
],
"nozzle_temperature_initial_layer": [
"205"
],
"nozzle_temperature": [
"200"
],
"compatible_printers": [
"Snapmaker J1 0.4 nozzle",
"Snapmaker J1 0.6 nozzle"
],
"filament_end_gcode": [
"; ====================================\n;END Gcode for filament T[current_extruder] \nG92 E0\nG1 F600 E-6 ;retract\n{if current_extruder == 0}G0 X-20 F12000 {endif} ;\n{if current_extruder == 1}G0 X350 F12000 {endif} ;\nM106 S0 ; Lüfter aus\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 0}T1 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 1}T0 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n;END gcode for filament T[current_extruder] (Ende) \n; ====================================="
],
"filament_start_gcode": [
"; ====================================\n; START gcode for filament T[current_extruder]\nM900 T[current_extruder] K0.054\nG1 F600 E5.5 \nM106 S255 ;Lüfter an\n; START gcode for filament T[current_extruder] (Ende)\n; ===================================="
]
}
@@ -0,0 +1,31 @@
{
"type": "filament",
"filament_id": "GFS99",
"setting_id": "GFSX04",
"name": "Snapmaker J1 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": [
"Snapmaker J1 0.4 nozzle",
"Snapmaker J1 0.6 nozzle"
],
"filament_end_gcode": [
"; ====================================\n;END Gcode for filament T[current_extruder] \nG92 E0\nG1 F600 E-6 ;retract\n{if current_extruder == 0}G0 X-20 F12000 {endif} ;\n{if current_extruder == 1}G0 X350 F12000 {endif} ;\nM106 S0 ; Lüfter aus\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 0}T1 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 1}T0 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n;END gcode for filament T[current_extruder] (Ende) \n; ====================================="
],
"filament_start_gcode": [
"; ====================================\n; START gcode for filament T[current_extruder]\nM900 T[current_extruder] K0.054\nG1 F600 E5.5 \nM106 S255 ;Lüfter an\n; START gcode for filament T[current_extruder] (Ende)\n; ===================================="
]
}
@@ -0,0 +1,28 @@
{
"type": "filament",
"filament_id": "GFU99",
"setting_id": "GFSX04",
"name": "Snapmaker J1 TPU",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_tpu",
"filament_max_volumetric_speed": [
"3.2"
],
"nozzle_temperature": [
"220"
],
"nozzle_temperature_initial_layer": [
"220"
],
"compatible_printers": [
"Snapmaker J1 0.4 nozzle",
"Snapmaker J1 0.6 nozzle"
],
"filament_end_gcode": [
"; ====================================\n;END Gcode for filament T[current_extruder] \nG92 E0\nG1 F600 E-6 ;retract\n{if current_extruder == 0}G0 X-20 F12000 {endif} ;\n{if current_extruder == 1}G0 X350 F12000 {endif} ;\nM106 S0 ; Lüfter aus\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 0}T1 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n{if has_wipe_tower and total_toolchanges > 0 and current_extruder == 1}T0 \nG0 X{wipe_tower_x[0]} Y{wipe_tower_y[0]} F{travel_speed*60}{endif} ;\n;END gcode for filament T[current_extruder] (Ende) \n; ====================================="
],
"filament_start_gcode": [
"; ====================================\n; START gcode for filament T[current_extruder]\nM900 T[current_extruder] K0.054\nG1 F600 E5.5 \nM106 S255 ;Lüfter an\n; START gcode for filament T[current_extruder] (Ende)\n; ===================================="
]
}
@@ -0,0 +1,69 @@
{
"type": "machine",
"setting_id": "GM010",
"name": "Snapmaker J1 0.4 nozzle",
"from": "system",
"instantiation": "true",
"inherits": "fdm_machine_common",
"printer_model": "Snapmaker J1",
"default_print_profile": "0.20mm 0.4 Standard @Snapmaker J1",
"retraction_minimum_travel": [
"3"
],
"thumbnails": [
"400x400"
],
"z_hop_types": [
"Auto Lift"
],
"z_lift_type": [
"SpiralLift"
],
"nozzle_diameter": [
"0.4"
],
"bed_exclude_area": [
"0x0"
],
"printable_area": [
"0x0",
"324x0",
"324x200",
"0x200"
],
"printable_height": "200",
"machine_start_gcode": ";***** Snapmaker J1\n;***** Update : 20221222\n;***** Printer : [printer_preset]\n;***** Profile : [print_preset]\nM593 P1 X F35.7 \nM593 P1 Y F33.7 \nM355 S1 P16 ;------------OPTIONAL ;dim led \nM83 ;absolute extrusion mode\nM140 S[first_layer_bed_temperature] ;Start Warming Bed\nT[initial_extruder] ;switch to initial extruder\n{if total_toolchanges < 1}; Preheat one extruder (just one used)\nM104 S160 ;preheat nozzle\n{else}; Preheat both extruders used\nM104 S160 T0 ;preheat T0\nM104 S160 T1 ;preheat T1\n{endif}\nG28 ; home all axes\nG90 ;absolute positioning\nG1 Z0.8 F1800\nM201 X5000 Y5000 Z500 E5000\nM205 V5\nM900 T0 K0.02\nM900 T1 K0.02\nM190 S[first_layer_bed_temperature] ; C3 W2 Wait For Bed Temperature\n{if total_toolchanges < 1}; Heat one extruder\nM104 S[first_layer_temperature]\nM109 S[first_layer_temperature] ;Wait for Hotend Temperature\n{else}; Heat both extruders\nM104 T0 S{first_layer_temperature[0]}\nM104 T1 S{first_layer_temperature[1]}\nM109 T0 S{first_layer_temperature[0]} ;Wait for Hotend Temperature\nM109 T1 S{first_layer_temperature[1]} ;Wait for Hotend Temperature\n{endif}\n;\n{if 1==1} ;-----------OPTIONAL ;led effect\n M355 S1 P32\n G4 S1\n M355 S1 P48\n G4 S1\n M355 S1 P64\n G4 S1\n M355 S1 P96\n G4 S1\n M355 S1 P128\n G4 S1\n M355 S1 P255\n{endif}\n;\nG92 E0\n;\n{if total_toolchanges > 0 or initial_extruder == 0}; Purge line T0\nT0\nG92 E0\nG1 F1200 X5 Z0.5\nG1 F600 X100 E20\nG1 F600 Z2\nG92 E0\nG1 F1200 E-6\nG0 X-20 F12000 ; park T0\n{endif}\n{if total_toolchanges > 0 or initial_extruder == 1}; Purge line T1\nT1\nG92 E0\nG1 F1200 X295 Z0.5\nG1 F600 X200 E20\nG1 F600 Z2\nG92 E0\nG1 F1200 E-6\nG0 X350 F12000 ; park T1 (old 345)\n{endif}\n;End Start Gcode J1\n",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_num]\n",
"machine_end_gcode": ";End GCode J1 begin\nM140 S0 ;heated bed heater off \nG90 ;absolute positioning\nG92 E0\n;\nG1 E-6 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n;\nM104 S0 T0 ;extruder heater off\nM104 S0 T1 ;extruder heater off\n;\nG1 Z200 F1500 ;move bed down\nG0 Y10 F3000 ;so the head is out of the way\nM84 ;steppers off\nM355 S1 P16 ;------------OPTIONAL ;dim led \nM107\n;End of Gcode\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/Snapmaker2Slic3rPostProcessor)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n;",
"change_filament_gcode": ";Change Filament",
"machine_max_acceleration_e": [
"6000",
"5000"
],
"machine_max_acceleration_extruding": [
"5000",
"2000"
],
"machine_max_acceleration_retracting": [
"6000",
"5000"
],
"machine_max_acceleration_x": [
"5000",
"2000"
],
"machine_max_acceleration_y": [
"5000",
"2000"
],
"machine_max_speed_e": [
"60",
"25"
],
"max_layer_height": [
"0.30"
],
"scan_first_layer": "0",
"nozzle_type": "hardened_steel",
"auxiliary_fan": "0"
}
@@ -0,0 +1,69 @@
{
"type": "machine",
"setting_id": "GM011",
"name": "Snapmaker J1 0.6 nozzle",
"from": "system",
"instantiation": "true",
"inherits": "fdm_machine_common",
"printer_model": "Snapmaker J1",
"default_print_profile": "0.20mm 0.6 Standard @Snapmaker J1",
"retraction_minimum_travel": [
"3"
],
"thumbnails": [
"400x400"
],
"z_hop_types": [
"Auto Lift"
],
"z_lift_type": [
"SpiralLift"
],
"nozzle_diameter": [
"0.6"
],
"bed_exclude_area": [
"0x0"
],
"printable_area": [
"0x0",
"324x0",
"324x200",
"0x200"
],
"printable_height": "200",
"machine_start_gcode": ";***** Snapmaker J1\n;***** Update : 20221222\n;***** Printer : [printer_preset]\n;***** Profile : [print_preset]\nM593 P1 X F35.7 \nM593 P1 Y F33.7 \nM355 S1 P16 ;------------OPTIONAL ;dim led \nM83 ;absolute extrusion mode\nM140 S[first_layer_bed_temperature] ;Start Warming Bed\nT[initial_extruder] ;switch to initial extruder\n{if total_toolchanges < 1}; Preheat one extruder (just one used)\nM104 S160 ;preheat nozzle\n{else}; Preheat both extruders used\nM104 S160 T0 ;preheat T0\nM104 S160 T1 ;preheat T1\n{endif}\nG28 ; home all axes\nG90 ;absolute positioning\nG1 Z0.8 F1800\nM201 X5000 Y5000 Z500 E5000\nM205 V5\nM900 T0 K0.02\nM900 T1 K0.02\nM190 S[first_layer_bed_temperature] ; C3 W2 Wait For Bed Temperature\n{if total_toolchanges < 1}; Heat one extruder\nM104 S[first_layer_temperature]\nM109 S[first_layer_temperature] ;Wait for Hotend Temperature\n{else}; Heat both extruders\nM104 T0 S{first_layer_temperature[0]}\nM104 T1 S{first_layer_temperature[1]}\nM109 T0 S{first_layer_temperature[0]} ;Wait for Hotend Temperature\nM109 T1 S{first_layer_temperature[1]} ;Wait for Hotend Temperature\n{endif}\n;\n{if 1==1} ;-----------OPTIONAL ;led effect\n M355 S1 P32\n G4 S1\n M355 S1 P48\n G4 S1\n M355 S1 P64\n G4 S1\n M355 S1 P96\n G4 S1\n M355 S1 P128\n G4 S1\n M355 S1 P255\n{endif}\n;\nG92 E0\n;\n{if total_toolchanges > 0 or initial_extruder == 0}; Purge line T0\nT0\nG92 E0\nG1 F1200 X5 Z0.5\nG1 F600 X100 E20\nG1 F600 Z2\nG92 E0\nG1 F1200 E-6\nG0 X-20 F12000 ; park T0\n{endif}\n{if total_toolchanges > 0 or initial_extruder == 1}; Purge line T1\nT1\nG92 E0\nG1 F1200 X295 Z0.5\nG1 F600 X200 E20\nG1 F600 Z2\nG92 E0\nG1 F1200 E-6\nG0 X350 F12000 ; park T1 (old 345)\n{endif}\n;End Start Gcode J1\n",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_num]\n",
"machine_end_gcode": ";End GCode J1 begin\nM140 S0 ;heated bed heater off \nG90 ;absolute positioning\nG92 E0\n;\nG1 E-6 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n;\nM104 S0 T0 ;extruder heater off\nM104 S0 T1 ;extruder heater off\n;\nG1 Z200 F1500 ;move bed down\nG0 Y10 F3000 ;so the head is out of the way\nM84 ;steppers off\nM355 S1 P16 ;------------OPTIONAL ;dim led \nM107\n;End of Gcode\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/Snapmaker2Slic3rPostProcessor)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n;",
"change_filament_gcode": ";Change Filament",
"machine_max_acceleration_e": [
"6000",
"5000"
],
"machine_max_acceleration_extruding": [
"5000",
"2000"
],
"machine_max_acceleration_retracting": [
"6000",
"5000"
],
"machine_max_acceleration_x": [
"5000",
"2000"
],
"machine_max_acceleration_y": [
"5000",
"2000"
],
"machine_max_speed_e": [
"60",
"25"
],
"max_layer_height": [
"0.40"
],
"scan_first_layer": "0",
"nozzle_type": "hardened_steel",
"auxiliary_fan": "0"
}
@@ -0,0 +1,12 @@
{
"type": "machine_model",
"name": "Snapmaker J1",
"model_id": "SnapmakerJ1",
"nozzle_diameter": "0.4;0,6",
"machine_tech": "FFF",
"family": "Snapmaker",
"bed_model": "",
"bed_texture": "j1_texture.svg",
"hotend_model": "hotend.stl",
"default_materials": "Snapmaker J1 ABS;Snapmaker J1 PLA;Snapmaker J1 PLA-CF;Snapmaker J1 PETG;Snapmaker J1 TPU;Snapmaker J1 ASA;Snapmaker J1 PC;Snapmaker J1 PVA;Snapmaker J1 PA;Snapmaker J1 PA-CF"
}
@@ -0,0 +1,80 @@
{
"type": "process",
"setting_id": "GP040",
"name": "0.20mm 0.4 Standard @Snapmaker J1",
"from": "system",
"instantiation": "true",
"inherits": "fdm_process_common",
"bottom_shell_layers": "4",
"bridge_acceleration": "60%",
"brim_type": "no_brim",
"default_acceleration": "5000",
"default_jerk": "3",
"elefant_foot_compensation": "0.1",
"enable_arc_fitting": "1",
"enable_support": "1",
"filename_format": "{input_filename_base}_{layer_height}mm_J1_{print_time}.gcode",
"flush_into_infill": "1",
"gap_infill_speed": "80",
"gcode_comments": "1",
"infill_jerk": "3",
"initial_layer_acceleration": "1000",
"initial_layer_infill_speed": "40",
"initial_layer_jerk": "1",
"initial_layer_speed": "35",
"initial_layer_travel_speed": "50%",
"inner_wall_acceleration": "2000",
"inner_wall_jerk": "3",
"inner_wall_line_width": "0.44",
"inner_wall_speed": "120",
"internal_solid_infill_line_width": "0.45",
"internal_solid_infill_speed": "160",
"is_custom_defined": "0",
"layer_height": "0.25",
"line_width": "0.44",
"max_travel_detour_distance": "3",
"only_one_wall_top": "1",
"outer_wall_acceleration": "2000",
"outer_wall_jerk": "2",
"outer_wall_line_width": "0.42",
"outer_wall_speed": "100",
"overhang_1_4_speed": "50",
"overhang_2_4_speed": "30",
"overhang_3_4_speed": "20",
"post_process": [
"/Users/hliebscher/smfix_bs-darwin-arm64",
"\n/Users/hliebscher/j1x2",
"\n"
],
"precise_outer_wall": "1",
"prime_tower_brim_width": "1",
"prime_tower_width": "10",
"prime_volume": "2",
"print_settings_id": "0.4 0.25mm Normal S2J2 Parts",
"reduce_crossing_wall": "1",
"skirt_loops": "2",
"small_perimeter_speed": "80%",
"small_perimeter_threshold": "6",
"sparse_infill_density": "35%",
"sparse_infill_line_width": "0.44",
"sparse_infill_pattern": "adaptivecubic",
"sparse_infill_speed": "130",
"support_interface_top_layers": "0",
"support_line_width": "0.45",
"support_speed": "100",
"support_top_z_distance": "0",
"support_type": "normal(manual)",
"thick_bridges": "1",
"top_shell_thickness": "0",
"top_surface_acceleration": "1000",
"top_surface_jerk": "1",
"top_surface_speed": "60",
"travel_acceleration": "2500",
"travel_jerk": "9",
"travel_speed": "150",
"tree_support_wall_count": "2",
"xy_hole_compensation": "0.08",
"compatible_printers": [
"Snapmaker J1 0.4 nozzle"
]
}
@@ -0,0 +1,80 @@
{
"type": "process",
"setting_id": "GP041",
"name": "0.20mm 0.6 Standard @Snapmaker J1",
"from": "system",
"instantiation": "true",
"inherits": "fdm_process_common",
"bottom_shell_layers": "4",
"bridge_acceleration": "60%",
"brim_type": "no_brim",
"default_acceleration": "5000",
"default_jerk": "3",
"elefant_foot_compensation": "0.1",
"enable_arc_fitting": "1",
"enable_support": "1",
"filename_format": "{input_filename_base}_{layer_height}mm_J1_{print_time}.gcode",
"flush_into_infill": "1",
"gap_infill_speed": "80",
"gcode_comments": "1",
"infill_jerk": "3",
"initial_layer_acceleration": "1000",
"initial_layer_infill_speed": "40",
"initial_layer_jerk": "1",
"initial_layer_speed": "35",
"initial_layer_travel_speed": "50%",
"inner_wall_acceleration": "2000",
"inner_wall_jerk": "3",
"inner_wall_line_width": "0.64",
"inner_wall_speed": "120",
"internal_solid_infill_line_width": "0.65",
"internal_solid_infill_speed": "160",
"is_custom_defined": "0",
"layer_height": "0.25",
"line_width": "0.64",
"max_travel_detour_distance": "3",
"only_one_wall_top": "1",
"outer_wall_acceleration": "2000",
"outer_wall_jerk": "2",
"outer_wall_line_width": "0.62",
"outer_wall_speed": "100",
"overhang_1_4_speed": "50",
"overhang_2_4_speed": "30",
"overhang_3_4_speed": "20",
"post_process": [
"/Users/hliebscher/smfix_bs-darwin-arm64",
"\n/Users/hliebscher/j1x1",
"\n"
],
"precise_outer_wall": "1",
"prime_tower_brim_width": "1",
"prime_tower_width": "10",
"prime_volume": "2",
"print_settings_id": "0.6 0.25mm Normal S2J2 Parts",
"reduce_crossing_wall": "1",
"skirt_loops": "2",
"small_perimeter_speed": "80%",
"small_perimeter_threshold": "6",
"sparse_infill_density": "35%",
"sparse_infill_line_width": "0.64",
"sparse_infill_pattern": "adaptivecubic",
"sparse_infill_speed": "130",
"support_interface_top_layers": "0",
"support_line_width": "0.65",
"support_speed": "100",
"support_top_z_distance": "0",
"support_type": "normal(manual)",
"thick_bridges": "1",
"top_shell_thickness": "0",
"top_surface_acceleration": "1000",
"top_surface_jerk": "1",
"top_surface_speed": "60",
"travel_acceleration": "2500",
"travel_jerk": "9",
"travel_speed": "150",
"tree_support_wall_count": "2",
"xy_hole_compensation": "0.08",
"compatible_printers": [
"Snapmaker J1 0.6 nozzle"
]
}
@@ -23,7 +23,6 @@
"bridge_no_support": "0", "bridge_no_support": "0",
"draft_shield": "disabled", "draft_shield": "disabled",
"elefant_foot_compensation": "0", "elefant_foot_compensation": "0",
"enable_arc_fitting": "1",
"outer_wall_line_width": "0.4", "outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill", "wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4", "line_width": "0.4",
@@ -20,7 +20,7 @@
"bridge_no_support": "0", "bridge_no_support": "0",
"draft_shield": "disabled", "draft_shield": "disabled",
"elefant_foot_compensation": "0", "elefant_foot_compensation": "0",
"enable_arc_fitting": "1", "enable_arc_fitting": "0",
"outer_wall_line_width": "0.4", "outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill", "wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4", "line_width": "0.4",
@@ -21,7 +21,7 @@
"bridge_no_support": "0", "bridge_no_support": "0",
"draft_shield": "disabled", "draft_shield": "disabled",
"elefant_foot_compensation": "0", "elefant_foot_compensation": "0",
"enable_arc_fitting": "1", "enable_arc_fitting": "0",
"outer_wall_line_width": "0.4", "outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill", "wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4", "line_width": "0.4",
@@ -21,7 +21,7 @@
"bridge_no_support": "0", "bridge_no_support": "0",
"draft_shield": "disabled", "draft_shield": "disabled",
"elefant_foot_compensation": "0", "elefant_foot_compensation": "0",
"enable_arc_fitting": "1", "enable_arc_fitting": "0",
"outer_wall_line_width": "0.4", "outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill", "wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4", "line_width": "0.4",
@@ -20,7 +20,6 @@
"bridge_no_support": "0", "bridge_no_support": "0",
"draft_shield": "disabled", "draft_shield": "disabled",
"elefant_foot_compensation": "0", "elefant_foot_compensation": "0",
"enable_arc_fitting": "1",
"outer_wall_line_width": "0.4", "outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill", "wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4", "line_width": "0.4",
@@ -24,7 +24,6 @@
"bridge_no_support": "0", "bridge_no_support": "0",
"draft_shield": "disabled", "draft_shield": "disabled",
"elefant_foot_compensation": "0", "elefant_foot_compensation": "0",
"enable_arc_fitting": "1",
"outer_wall_line_width": "0.4", "outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill", "wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4", "line_width": "0.4",
+1 -1
View File
@@ -98,7 +98,7 @@ var LangText={
"t9":"Weiter", "t9":"Weiter",
"t10":"Druckerauswahl", "t10":"Druckerauswahl",
"t11":"Alle", "t11":"Alle",
"t12":"Alles leeren", "t12":"Keinen",
"t13":"mm Düse", "t13":"mm Düse",
"t14":"Filamentauswahl", "t14":"Filamentauswahl",
"t15":"Drucker", "t15":"Drucker",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 914 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 914 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 914 KiB

After

Width:  |  Height:  |  Size: 39 KiB

+3 -3
View File
@@ -103,8 +103,8 @@ endif()
# Create a slic3r executable # Create a slic3r executable
# Process mainfests for various platforms. # Process mainfests for various platforms.
set(MACOSX_BUNDLE_COPYRIGHT "Copyright(C) 2022-2023 Li Jiang All Rights Reserved") set(MACOSX_BUNDLE_COPYRIGHT "Copyright(C) 2022-2023 Li Jiang All Rights Reserved")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/BambuStudio.rc.in ${CMAKE_CURRENT_BINARY_DIR}/BambuStudio.rc @ONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/OrcaSlicer.rc.in ${CMAKE_CURRENT_BINARY_DIR}/OrcaSlicer.rc @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/BambuStudio.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/BambuStudio.manifest @ONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/OrcaSlicer.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/OrcaSlicer.manifest @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/osx/Info.plist.in ${CMAKE_CURRENT_BINARY_DIR}/Info.plist @ONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/osx/Info.plist.in ${CMAKE_CURRENT_BINARY_DIR}/Info.plist @ONLY)
if (WIN32) if (WIN32)
add_library(OrcaSlicer SHARED BambuStudio.cpp BambuStudio.hpp BaseException.cpp BaseException.h StackWalker.cpp StackWalker.h) add_library(OrcaSlicer SHARED BambuStudio.cpp BambuStudio.hpp BaseException.cpp BaseException.h StackWalker.cpp StackWalker.h)
@@ -166,7 +166,7 @@ if (WIN32)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -municode") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -municode")
endif() endif()
add_executable(OrcaSlicer_app_gui WIN32 BambuStudio_app_msvc.cpp ${CMAKE_CURRENT_BINARY_DIR}/BambuStudio.rc) add_executable(OrcaSlicer_app_gui WIN32 BambuStudio_app_msvc.cpp ${CMAKE_CURRENT_BINARY_DIR}/OrcaSlicer.rc)
# Generate debug symbols even in release mode. # Generate debug symbols even in release mode.
if(MSVC) if(MSVC)
target_link_options(OrcaSlicer_app_gui PUBLIC "$<$<CONFIG:RELEASE>:/DEBUG>") target_link_options(OrcaSlicer_app_gui PUBLIC "$<$<CONFIG:RELEASE>:/DEBUG>")
+4
View File
@@ -310,6 +310,10 @@ void AppConfig::set_defaults()
// } // }
// #endif // #endif
if (get("presets", "filament_colors").empty()) {
set_str("presets", "filament_colors", "#F2754E");
}
// Remove legacy window positions/sizes // Remove legacy window positions/sizes
erase("app", "main_frame_maximized"); erase("app", "main_frame_maximized");
erase("app", "main_frame_pos"); erase("app", "main_frame_pos");
+20
View File
@@ -70,6 +70,26 @@ public:
return ! (this->max(0) < other.min(0) || this->min(0) > other.max(0) || return ! (this->max(0) < other.min(0) || this->min(0) > other.max(0) ||
this->max(1) < other.min(1) || this->min(1) > other.max(1)); this->max(1) < other.min(1) || this->min(1) > other.max(1));
} }
PointClass operator[](size_t idx) const {
switch (idx) {
case 0:
return min;
break;
case 1:
return PointClass(max(0), min(1));
break;
case 2:
return max;
break;
case 3:
return PointClass(min(0), max(1));
break;
default:
return PointClass();
break;
}
return PointClass();
}
bool operator==(const BoundingBoxBase<PointClass> &rhs) { return this->min == rhs.min && this->max == rhs.max; } bool operator==(const BoundingBoxBase<PointClass> &rhs) { return this->min == rhs.min && this->max == rhs.max; }
bool operator!=(const BoundingBoxBase<PointClass> &rhs) { return ! (*this == rhs); } bool operator!=(const BoundingBoxBase<PointClass> &rhs) { return ! (*this == rhs); }
friend std::ostream &operator<<(std::ostream &os, const BoundingBoxBase &bbox) friend std::ostream &operator<<(std::ostream &os, const BoundingBoxBase &bbox)
+24 -24
View File
@@ -24,7 +24,7 @@ BuildVolume::BuildVolume(const std::vector<Vec2d> &printable_area, const double
if (printable_area.size() >= 4 && std::abs((m_area - double(m_bbox.size().x()) * double(m_bbox.size().y()))) < sqr(SCALED_EPSILON)) { if (printable_area.size() >= 4 && std::abs((m_area - double(m_bbox.size().x()) * double(m_bbox.size().y()))) < sqr(SCALED_EPSILON)) {
// Square print bed, use the bounding box for collision detection. // Square print bed, use the bounding box for collision detection.
m_type = Type::Rectangle; m_type = BuildVolume_Type::Rectangle;
m_circle.center = 0.5 * (m_bbox.min.cast<double>() + m_bbox.max.cast<double>()); m_circle.center = 0.5 * (m_bbox.min.cast<double>() + m_bbox.max.cast<double>());
m_circle.radius = 0.5 * m_bbox.size().cast<double>().norm(); m_circle.radius = 0.5 * m_bbox.size().cast<double>().norm();
} else if (printable_area.size() > 3) { } else if (printable_area.size() > 3) {
@@ -52,16 +52,16 @@ BuildVolume::BuildVolume(const std::vector<Vec2d> &printable_area, const double
prev = p; prev = p;
} }
if (is_circle) { if (is_circle) {
m_type = Type::Circle; m_type = BuildVolume_Type::Circle;
m_circle.center = scaled<double>(m_circle.center); m_circle.center = scaled<double>(m_circle.center);
m_circle.radius = scaled<double>(m_circle.radius); m_circle.radius = scaled<double>(m_circle.radius);
} }
} }
if (printable_area.size() >= 3 && m_type == Type::Invalid) { if (printable_area.size() >= 3 && m_type == BuildVolume_Type::Invalid) {
// Circle check is not used for Convex / Custom shapes, fill it with something reasonable. // Circle check is not used for Convex / Custom shapes, fill it with something reasonable.
m_circle = Geometry::smallest_enclosing_circle_welzl(m_convex_hull.points); m_circle = Geometry::smallest_enclosing_circle_welzl(m_convex_hull.points);
m_type = (m_convex_hull.area() - m_area) < sqr(SCALED_EPSILON) ? Type::Convex : Type::Custom; m_type = (m_convex_hull.area() - m_area) < sqr(SCALED_EPSILON) ? BuildVolume_Type::Convex : BuildVolume_Type::Custom;
// Initialize the top / bottom decomposition for inside convex polygon check. Do it with two different epsilons applied. // Initialize the top / bottom decomposition for inside convex polygon check. Do it with two different epsilons applied.
auto convex_decomposition = [](const Polygon &in, double epsilon) { auto convex_decomposition = [](const Polygon &in, double epsilon) {
Polygon src = expand(in, float(epsilon)).front(); Polygon src = expand(in, float(epsilon)).front();
@@ -272,7 +272,7 @@ BuildVolume::ObjectState object_state_templ(const indexed_triangle_set &its, con
BuildVolume::ObjectState BuildVolume::object_state(const indexed_triangle_set& its, const Transform3f& trafo, bool may_be_below_bed, bool ignore_bottom) const BuildVolume::ObjectState BuildVolume::object_state(const indexed_triangle_set& its, const Transform3f& trafo, bool may_be_below_bed, bool ignore_bottom) const
{ {
switch (m_type) { switch (m_type) {
case Type::Rectangle: case BuildVolume_Type::Rectangle:
{ {
BoundingBox3Base<Vec3d> build_volume = this->bounding_volume().inflated(SceneEpsilon); BoundingBox3Base<Vec3d> build_volume = this->bounding_volume().inflated(SceneEpsilon);
if (m_max_print_height == 0.0) if (m_max_print_height == 0.0)
@@ -285,20 +285,20 @@ BuildVolume::ObjectState BuildVolume::object_state(const indexed_triangle_set& i
//FIXME This test does NOT correctly interprets intersection of a non-convex object with a rectangular build volume. //FIXME This test does NOT correctly interprets intersection of a non-convex object with a rectangular build volume.
return object_state_templ(its, trafo, may_be_below_bed, [build_volumef](const Vec3f &pt) { return build_volumef.contains(pt); }); return object_state_templ(its, trafo, may_be_below_bed, [build_volumef](const Vec3f &pt) { return build_volumef.contains(pt); });
} }
case Type::Circle: case BuildVolume_Type::Circle:
{ {
Geometry::Circlef circle { unscaled<float>(m_circle.center), unscaled<float>(m_circle.radius + SceneEpsilon) }; Geometry::Circlef circle { unscaled<float>(m_circle.center), unscaled<float>(m_circle.radius + SceneEpsilon) };
return m_max_print_height == 0.0 ? return m_max_print_height == 0.0 ?
object_state_templ(its, trafo, may_be_below_bed, [circle](const Vec3f &pt) { return circle.contains(to_2d(pt)); }) : object_state_templ(its, trafo, may_be_below_bed, [circle](const Vec3f &pt) { return circle.contains(to_2d(pt)); }) :
object_state_templ(its, trafo, may_be_below_bed, [circle, z = m_max_print_height + SceneEpsilon](const Vec3f &pt) { return pt.z() < z && circle.contains(to_2d(pt)); }); object_state_templ(its, trafo, may_be_below_bed, [circle, z = m_max_print_height + SceneEpsilon](const Vec3f &pt) { return pt.z() < z && circle.contains(to_2d(pt)); });
} }
case Type::Convex: case BuildVolume_Type::Convex:
//FIXME doing test on convex hull until we learn to do test on non-convex polygons efficiently. //FIXME doing test on convex hull until we learn to do test on non-convex polygons efficiently.
case Type::Custom: case BuildVolume_Type::Custom:
return m_max_print_height == 0.0 ? return m_max_print_height == 0.0 ?
object_state_templ(its, trafo, may_be_below_bed, [this](const Vec3f &pt) { return Geometry::inside_convex_polygon(m_top_bottom_convex_hull_decomposition_scene, to_2d(pt).cast<double>()); }) : object_state_templ(its, trafo, may_be_below_bed, [this](const Vec3f &pt) { return Geometry::inside_convex_polygon(m_top_bottom_convex_hull_decomposition_scene, to_2d(pt).cast<double>()); }) :
object_state_templ(its, trafo, may_be_below_bed, [this, z = m_max_print_height + SceneEpsilon](const Vec3f &pt) { return pt.z() < z && Geometry::inside_convex_polygon(m_top_bottom_convex_hull_decomposition_scene, to_2d(pt).cast<double>()); }); object_state_templ(its, trafo, may_be_below_bed, [this, z = m_max_print_height + SceneEpsilon](const Vec3f &pt) { return pt.z() < z && Geometry::inside_convex_polygon(m_top_bottom_convex_hull_decomposition_scene, to_2d(pt).cast<double>()); });
case Type::Invalid: case BuildVolume_Type::Invalid:
default: default:
return ObjectState::Inside; return ObjectState::Inside;
} }
@@ -306,7 +306,7 @@ BuildVolume::ObjectState BuildVolume::object_state(const indexed_triangle_set& i
BuildVolume::ObjectState BuildVolume::volume_state_bbox(const BoundingBoxf3& volume_bbox, bool ignore_bottom) const BuildVolume::ObjectState BuildVolume::volume_state_bbox(const BoundingBoxf3& volume_bbox, bool ignore_bottom) const
{ {
assert(m_type == Type::Rectangle); assert(m_type == BuildVolume_Type::Rectangle);
BoundingBox3Base<Vec3d> build_volume = this->bounding_volume().inflated(SceneEpsilon); BoundingBox3Base<Vec3d> build_volume = this->bounding_volume().inflated(SceneEpsilon);
if (m_max_print_height == 0.0) if (m_max_print_height == 0.0)
build_volume.max.z() = std::numeric_limits<double>::max(); build_volume.max.z() = std::numeric_limits<double>::max();
@@ -325,7 +325,7 @@ bool BuildVolume::all_paths_inside(const GCodeProcessorResult& paths, const Boun
static constexpr const double epsilon = BedEpsilon; static constexpr const double epsilon = BedEpsilon;
switch (m_type) { switch (m_type) {
case Type::Rectangle: case BuildVolume_Type::Rectangle:
{ {
BoundingBox3Base<Vec3d> build_volume = this->bounding_volume().inflated(epsilon); BoundingBox3Base<Vec3d> build_volume = this->bounding_volume().inflated(epsilon);
if (m_max_print_height == 0.0) if (m_max_print_height == 0.0)
@@ -334,7 +334,7 @@ bool BuildVolume::all_paths_inside(const GCodeProcessorResult& paths, const Boun
build_volume.min.z() = -std::numeric_limits<double>::max(); build_volume.min.z() = -std::numeric_limits<double>::max();
return build_volume.contains(paths_bbox); return build_volume.contains(paths_bbox);
} }
case Type::Circle: case BuildVolume_Type::Circle:
{ {
const Vec2f c = unscaled<float>(m_circle.center); const Vec2f c = unscaled<float>(m_circle.center);
const float r = unscaled<double>(m_circle.radius) + epsilon; const float r = unscaled<double>(m_circle.radius) + epsilon;
@@ -345,9 +345,9 @@ bool BuildVolume::all_paths_inside(const GCodeProcessorResult& paths, const Boun
std::all_of(paths.moves.begin(), paths.moves.end(), [move_valid, c, r2, z = m_max_print_height + epsilon](const GCodeProcessorResult::MoveVertex& move) std::all_of(paths.moves.begin(), paths.moves.end(), [move_valid, c, r2, z = m_max_print_height + epsilon](const GCodeProcessorResult::MoveVertex& move)
{ return ! move_valid(move) || ((to_2d(move.position) - c).squaredNorm() <= r2 && move.position.z() <= z); }); { return ! move_valid(move) || ((to_2d(move.position) - c).squaredNorm() <= r2 && move.position.z() <= z); });
} }
case Type::Convex: case BuildVolume_Type::Convex:
//FIXME doing test on convex hull until we learn to do test on non-convex polygons efficiently. //FIXME doing test on convex hull until we learn to do test on non-convex polygons efficiently.
case Type::Custom: case BuildVolume_Type::Custom:
return m_max_print_height == 0.0 ? return m_max_print_height == 0.0 ?
std::all_of(paths.moves.begin(), paths.moves.end(), [move_valid, this](const GCodeProcessorResult::MoveVertex &move) std::all_of(paths.moves.begin(), paths.moves.end(), [move_valid, this](const GCodeProcessorResult::MoveVertex &move)
{ return ! move_valid(move) || Geometry::inside_convex_polygon(m_top_bottom_convex_hull_decomposition_bed, to_2d(move.position).cast<double>()); }) : { return ! move_valid(move) || Geometry::inside_convex_polygon(m_top_bottom_convex_hull_decomposition_bed, to_2d(move.position).cast<double>()); }) :
@@ -375,7 +375,7 @@ bool BuildVolume::all_paths_inside_vertices_and_normals_interleaved(const std::v
assert(paths.size() % 6 == 0); assert(paths.size() % 6 == 0);
static constexpr const double epsilon = BedEpsilon; static constexpr const double epsilon = BedEpsilon;
switch (m_type) { switch (m_type) {
case Type::Rectangle: case BuildVolume_Type::Rectangle:
{ {
BoundingBox3Base<Vec3d> build_volume = this->bounding_volume().inflated(epsilon); BoundingBox3Base<Vec3d> build_volume = this->bounding_volume().inflated(epsilon);
if (m_max_print_height == 0.0) if (m_max_print_height == 0.0)
@@ -384,7 +384,7 @@ bool BuildVolume::all_paths_inside_vertices_and_normals_interleaved(const std::v
build_volume.min.z() = -std::numeric_limits<double>::max(); build_volume.min.z() = -std::numeric_limits<double>::max();
return build_volume.contains(paths_bbox.min().cast<double>()) && build_volume.contains(paths_bbox.max().cast<double>()); return build_volume.contains(paths_bbox.min().cast<double>()) && build_volume.contains(paths_bbox.max().cast<double>());
} }
case Type::Circle: case BuildVolume_Type::Circle:
{ {
const Vec2f c = unscaled<float>(m_circle.center); const Vec2f c = unscaled<float>(m_circle.center);
const float r = unscaled<double>(m_circle.radius) + float(epsilon); const float r = unscaled<double>(m_circle.radius) + float(epsilon);
@@ -393,9 +393,9 @@ bool BuildVolume::all_paths_inside_vertices_and_normals_interleaved(const std::v
all_inside_vertices_normals_interleaved(paths, [c, r2](Vec3f p) { return (to_2d(p) - c).squaredNorm() <= r2; }) : all_inside_vertices_normals_interleaved(paths, [c, r2](Vec3f p) { return (to_2d(p) - c).squaredNorm() <= r2; }) :
all_inside_vertices_normals_interleaved(paths, [c, r2, z = m_max_print_height + epsilon](Vec3f p) { return (to_2d(p) - c).squaredNorm() <= r2 && p.z() <= z; }); all_inside_vertices_normals_interleaved(paths, [c, r2, z = m_max_print_height + epsilon](Vec3f p) { return (to_2d(p) - c).squaredNorm() <= r2 && p.z() <= z; });
} }
case Type::Convex: case BuildVolume_Type::Convex:
//FIXME doing test on convex hull until we learn to do test on non-convex polygons efficiently. //FIXME doing test on convex hull until we learn to do test on non-convex polygons efficiently.
case Type::Custom: case BuildVolume_Type::Custom:
return m_max_print_height == 0.0 ? return m_max_print_height == 0.0 ?
all_inside_vertices_normals_interleaved(paths, [this](Vec3f p) { return Geometry::inside_convex_polygon(m_top_bottom_convex_hull_decomposition_bed, to_2d(p).cast<double>()); }) : all_inside_vertices_normals_interleaved(paths, [this](Vec3f p) { return Geometry::inside_convex_polygon(m_top_bottom_convex_hull_decomposition_bed, to_2d(p).cast<double>()); }) :
all_inside_vertices_normals_interleaved(paths, [this, z = m_max_print_height + epsilon](Vec3f p) { return Geometry::inside_convex_polygon(m_top_bottom_convex_hull_decomposition_bed, to_2d(p).cast<double>()) && p.z() <= z; }); all_inside_vertices_normals_interleaved(paths, [this, z = m_max_print_height + epsilon](Vec3f p) { return Geometry::inside_convex_polygon(m_top_bottom_convex_hull_decomposition_bed, to_2d(p).cast<double>()) && p.z() <= z; });
@@ -404,15 +404,15 @@ bool BuildVolume::all_paths_inside_vertices_and_normals_interleaved(const std::v
} }
} }
std::string_view BuildVolume::type_name(Type type) std::string_view BuildVolume::type_name(BuildVolume_Type type)
{ {
using namespace std::literals; using namespace std::literals;
switch (type) { switch (type) {
case Type::Invalid: return "Invalid"sv; case BuildVolume_Type::Invalid: return "Invalid"sv;
case Type::Rectangle: return "Rectangle"sv; case BuildVolume_Type::Rectangle: return "Rectangle"sv;
case Type::Circle: return "Circle"sv; case BuildVolume_Type::Circle: return "Circle"sv;
case Type::Convex: return "Convex"sv; case BuildVolume_Type::Convex: return "Convex"sv;
case Type::Custom: return "Custom"sv; case BuildVolume_Type::Custom: return "Custom"sv;
} }
// make visual studio happy // make visual studio happy
assert(false); assert(false);
+11 -12
View File
@@ -12,13 +12,7 @@
namespace Slic3r { namespace Slic3r {
struct GCodeProcessorResult; struct GCodeProcessorResult;
enum class BuildVolume_Type : unsigned char {
// For collision detection of objects and G-code (extrusion paths) against the build volume.
class BuildVolume
{
public:
enum class Type : unsigned char
{
// Not set yet or undefined. // Not set yet or undefined.
Invalid, Invalid,
// Rectangular print bed. Most common, cheap to work with. // Rectangular print bed. Most common, cheap to work with.
@@ -29,7 +23,12 @@ public:
Convex, Convex,
// Some non convex shape. // Some non convex shape.
Custom Custom
}; };
// For collision detection of objects and G-code (extrusion paths) against the build volume.
class BuildVolume
{
public:
// Initialized to empty, all zeros, Invalid. // Initialized to empty, all zeros, Invalid.
BuildVolume() {} BuildVolume() {}
@@ -41,11 +40,11 @@ public:
double printable_height() const { return m_max_print_height; } double printable_height() const { return m_max_print_height; }
// Derived data // Derived data
Type type() const { return m_type; } BuildVolume_Type type() const { return m_type; }
// Format the type for console output. // Format the type for console output.
static std::string_view type_name(Type type); static std::string_view type_name(BuildVolume_Type type);
std::string_view type_name() const { return type_name(m_type); } std::string_view type_name() const { return type_name(m_type); }
bool valid() const { return m_type != Type::Invalid; } bool valid() const { return m_type != BuildVolume_Type::Invalid; }
// Same as printable_area(), but scaled coordinates. // Same as printable_area(), but scaled coordinates.
const Polygon& polygon() const { return m_polygon; } const Polygon& polygon() const { return m_polygon; }
// Bounding box of polygon(), scaled. // Bounding box of polygon(), scaled.
@@ -101,7 +100,7 @@ private:
double m_max_print_height { 0.f }; double m_max_print_height { 0.f };
// Derived values. // Derived values.
Type m_type { Type::Invalid }; BuildVolume_Type m_type { BuildVolume_Type::Invalid };
// Geometry of the print bed, scaled copy of m_bed_shape. // Geometry of the print bed, scaled copy of m_bed_shape.
Polygon m_polygon; Polygon m_polygon;
// Scaled snug bounding box around m_polygon. // Scaled snug bounding box around m_polygon.
+1 -1
View File
@@ -1308,7 +1308,7 @@ void ConfigBase::save_to_json(const std::string &file, const std::string &name,
{ {
const ConfigOption* opt = this->option(opt_key); const ConfigOption* opt = this->option(opt_key);
if ( opt->is_scalar() ) { if ( opt->is_scalar() ) {
if (opt->type() == coString) if (opt->type() == coString && (opt_key != "bed_custom_texture" && opt_key != "bed_custom_model"))
//keep \n, \r, \t //keep \n, \r, \t
j[opt_key] = (dynamic_cast<const ConfigOptionString *>(opt))->value; j[opt_key] = (dynamic_cast<const ConfigOptionString *>(opt))->value;
else else
+29 -16
View File
@@ -1500,7 +1500,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
file.write_format("; HEADER_BLOCK_START\n"); file.write_format("; HEADER_BLOCK_START\n");
// Write information on the generator. // Write information on the generator.
file.write_format("; generated by %s on %s\n", Slic3r::header_slic3r_generated().c_str(), Slic3r::Utils::local_timestamp().c_str()); file.write_format("; generated by %s on %s\n", Slic3r::header_slic3r_generated().c_str(), Slic3r::Utils::local_timestamp().c_str());
//BBS: total estimated printing time if (is_bbl_printers)
file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Estimated_Printing_Time_Placeholder).c_str()); file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Estimated_Printing_Time_Placeholder).c_str());
//BBS: total layer number //BBS: total layer number
file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Total_Layer_Number_Placeholder).c_str()); file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Total_Layer_Number_Placeholder).c_str());
@@ -1730,7 +1730,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
auto pts = std::make_unique<ConfigOptionPoints>(); auto pts = std::make_unique<ConfigOptionPoints>();
pts->values.reserve(print.first_layer_convex_hull().size()); pts->values.reserve(print.first_layer_convex_hull().size());
for (const Point& pt : print.first_layer_convex_hull().points) for (const Point& pt : print.first_layer_convex_hull().points)
pts->values.emplace_back(unscale(pt) - Vec2d(print.get_plate_origin().x(), print.get_plate_origin().y())); pts->values.emplace_back(print.translate_to_print_space(pt));
BoundingBoxf bbox(pts->values); BoundingBoxf bbox(pts->values);
m_placeholder_parser.set("first_layer_print_convex_hull", pts.release()); m_placeholder_parser.set("first_layer_print_convex_hull", pts.release());
m_placeholder_parser.set("first_layer_print_min", new ConfigOptionFloats({bbox.min.x(), bbox.min.y()})); m_placeholder_parser.set("first_layer_print_min", new ConfigOptionFloats({bbox.min.x(), bbox.min.y()}));
@@ -2662,12 +2662,16 @@ namespace Skirt {
} // namespace Skirt } // namespace Skirt
inline std::string get_instance_name(const PrintObject *object, const PrintInstance &inst) { inline std::string get_instance_name(const PrintObject *object, size_t inst_id) {
return (boost::format("%1%_id_%2%_copy_%3%") % object->model_object()->name % object->get_id() % inst.id).str(); auto obj_name = object->model_object()->name;
// replace space in obj_name with '-'
std::replace(obj_name.begin(), obj_name.end(), ' ', '_');
return (boost::format("%1%_id_%2%_copy_%3%") % obj_name % object->get_id() % inst_id).str();
} }
inline std::string get_instance_name(const PrintObject *object, size_t inst_id) { inline std::string get_instance_name(const PrintObject *object, const PrintInstance &inst) {
return (boost::format("%1%_id_%2%_copy_%3%") % object->model_object()->name % object->get_id() % inst_id).str(); return get_instance_name(object, inst.id);
} }
// In sequential mode, process_layer is called once per each object and its copy, // In sequential mode, process_layer is called once per each object and its copy,
@@ -3870,7 +3874,13 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description,
} }
// calculate extrusion length per distance unit // calculate extrusion length per distance unit
const auto _mm3_per_mm = path.mm3_per_mm * this->config().print_flow_ratio; auto _mm3_per_mm = path.mm3_per_mm * this->config().print_flow_ratio;
if (path.role() == erTopSolidInfill)
_mm3_per_mm *= m_config.top_solid_infill_flow_ratio;
else if (path.role() == erBottomSurface)
_mm3_per_mm *= m_config.bottom_solid_infill_flow_ratio;
double e_per_mm = m_writer.extruder()->e_per_mm3() * _mm3_per_mm; double e_per_mm = m_writer.extruder()->e_per_mm3() * _mm3_per_mm;
double min_speed = double(m_config.slow_down_min_speed.get_at(m_writer.extruder()->id())); double min_speed = double(m_config.slow_down_min_speed.get_at(m_writer.extruder()->id()));
@@ -4606,31 +4616,34 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z)
return gcode; return gcode;
} }
inline std::string polygon_to_string(const Polygon &polygon) { inline std::string polygon_to_string(const Polygon &polygon, Print *print) {
std::ostringstream gcode; std::ostringstream gcode;
gcode << "["; gcode << "[";
for (const Point &p : polygon.points) { for (const Point &p : polygon.points) {
gcode << "[" << unscaled(p.x()) << "," << unscaled(p.y()) << "],"; const auto v = print->translate_to_print_space(p);
gcode << "[" << v.x() << "," << v.y() << "],";
} }
gcode << "[" << unscaled(polygon.points.front().x()) << "," << unscaled(polygon.points.front().y()) << "]"; const auto first_v = print->translate_to_print_space(polygon.points.front());
gcode << "[" << first_v.x() << "," << first_v.y() << "]";
gcode << "]"; gcode << "]";
return gcode.str(); return gcode.str();
} }
// this function iterator PrintObject and assign a seqential id to each object. // this function iterator PrintObject and assign a seqential id to each object.
// this id is used to generate unique object id for each object. // this id is used to generate unique object id for each object.
std::string GCode::set_object_info(Print* print) { std::string GCode::set_object_info(Print *print) {
std::ostringstream gcode; std::ostringstream gcode;
size_t object_id = 0; size_t object_id = 0;
for (PrintObject* object : print->objects()) { for (PrintObject *object : print->objects()) {
object->set_id(object_id++); object->set_id(object_id++);
size_t inst_id = 0; size_t inst_id = 0;
for (PrintInstance &inst : object->instances()) { for (PrintInstance &inst : object->instances()) {
inst.id = inst_id++; inst.id = inst_id++;
if (this->config().exclude_object && print->config().gcode_flavor.value == gcfKlipper) { if (this->config().exclude_object && print->config().gcode_flavor.value == gcfKlipper) {
auto bbox = inst.get_bounding_box(); auto bbox = inst.get_bounding_box();
gcode << "EXCLUDE_OBJECT_DEFINE NAME=" << get_instance_name(object, inst) auto center = print->translate_to_print_space(Vec2d(bbox.center().x(), bbox.center().y()));
<< " CENTER=" << bbox.center().x() << "," << bbox.center().y() gcode << "EXCLUDE_OBJECT_DEFINE NAME=" << get_instance_name(object, inst) << " CENTER=" << center.x()
<< " POLYGON=" << polygon_to_string(inst.get_convex_hull_2d()) << "\n"; << "," << center.y() << " POLYGON=" << polygon_to_string(inst.get_convex_hull_2d(), print)
<< "\n";
} }
} }
} }
+9
View File
@@ -1945,6 +1945,15 @@ std::vector<Point> Print::first_layer_wipe_tower_corners(bool check_wipe_tower_e
return corners; return corners;
} }
//SoftFever
Vec2d Print::translate_to_print_space(const Vec2d &point) const {
//const BoundingBoxf bed_bbox(config().printable_area.values);
return Vec2d(point(0) - m_origin(0), point(1) - m_origin(1));
}
Vec2d Print::translate_to_print_space(const Point &point) const {
return Vec2d(unscaled(point.x()) - m_origin(0), unscaled(point.y()) - m_origin(1));
}
void Print::finalize_first_layer_convex_hull() void Print::finalize_first_layer_convex_hull()
{ {
append(m_first_layer_convex_hull.points, m_skirt_convex_hull); append(m_first_layer_convex_hull.points, m_skirt_convex_hull);
+3
View File
@@ -750,6 +750,9 @@ public:
const CalibMode calib_mode() const { return m_calib_params.mode; } const CalibMode calib_mode() const { return m_calib_params.mode; }
void set_calib_params(const Calib_Params& params); void set_calib_params(const Calib_Params& params);
const Calib_Params& calib_params() const { return m_calib_params; } const Calib_Params& calib_params() const { return m_calib_params; }
Vec2d translate_to_print_space(const Vec2d &point) const;
// scaled point
Vec2d translate_to_print_space(const Point &point) const;
protected: protected:
// Invalidates the step, and its depending steps in Print. // Invalidates the step, and its depending steps in Print.
bool invalidate_step(PrintStep step); bool invalidate_step(PrintStep step);
+2 -2
View File
@@ -1228,7 +1228,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("Default filament color"); def->tooltip = L("Default filament color");
def->gui_type = ConfigOptionDef::GUIType::color; def->gui_type = ConfigOptionDef::GUIType::color;
def->mode = comAdvanced; def->mode = comAdvanced;
def->set_default_value(new ConfigOptionStrings{"#F2754E"}); def->set_default_value(new ConfigOptionStrings{""});
def = this->add("filament_colour", coStrings); def = this->add("filament_colour", coStrings);
def->label = L("Color"); def->label = L("Color");
@@ -2184,7 +2184,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("Diameter of nozzle"); def->tooltip = L("Diameter of nozzle");
def->sidetext = L("mm"); def->sidetext = L("mm");
def->mode = comAdvanced; def->mode = comAdvanced;
def->max = 1.8; def->max = 100;
def->set_default_value(new ConfigOptionFloats { 0.4 }); def->set_default_value(new ConfigOptionFloats { 0.4 });
def = this->add("host_type", coEnum); def = this->add("host_type", coEnum);
+2 -8
View File
@@ -22,15 +22,10 @@ Flow PrintRegion::flow(const PrintObject &object, FlowRole role, double layer_he
{ {
const PrintConfig &print_config = object.print()->config(); const PrintConfig &print_config = object.print()->config();
ConfigOptionFloat config_width; ConfigOptionFloat config_width;
double flow_ratio = 1.0;
// Get extrusion width from configuration. // Get extrusion width from configuration.
// (might be an absolute value, or a percent value, or zero for auto) // (might be an absolute value, or a percent value, or zero for auto)
if (first_layer) { if (first_layer && print_config.initial_layer_line_width.value > 0) {
if(role != frExternalPerimeter)
flow_ratio = m_config.bottom_solid_infill_flow_ratio;
if(print_config.initial_layer_line_width.value > 0) {
config_width = print_config.initial_layer_line_width; config_width = print_config.initial_layer_line_width;
}
} else if (role == frExternalPerimeter) { } else if (role == frExternalPerimeter) {
config_width = m_config.outer_wall_line_width; config_width = m_config.outer_wall_line_width;
} else if (role == frPerimeter) { } else if (role == frPerimeter) {
@@ -41,7 +36,6 @@ Flow PrintRegion::flow(const PrintObject &object, FlowRole role, double layer_he
config_width = m_config.internal_solid_infill_line_width; config_width = m_config.internal_solid_infill_line_width;
} else if (role == frTopSolidInfill) { } else if (role == frTopSolidInfill) {
config_width = m_config.top_surface_line_width; config_width = m_config.top_surface_line_width;
flow_ratio = m_config.top_solid_infill_flow_ratio;
} else { } else {
throw Slic3r::InvalidArgument("Unknown role"); throw Slic3r::InvalidArgument("Unknown role");
} }
@@ -52,7 +46,7 @@ Flow PrintRegion::flow(const PrintObject &object, FlowRole role, double layer_he
// Get the configured nozzle_diameter for the extruder associated to the flow role requested. // Get the configured nozzle_diameter for the extruder associated to the flow role requested.
// Here this->extruder(role) - 1 may underflow to MAX_INT, but then the get_at() will follback to zero'th element, so everything is all right. // Here this->extruder(role) - 1 may underflow to MAX_INT, but then the get_at() will follback to zero'th element, so everything is all right.
auto nozzle_diameter = float(print_config.nozzle_diameter.get_at(this->extruder(role) - 1)); auto nozzle_diameter = float(print_config.nozzle_diameter.get_at(this->extruder(role) - 1));
return Flow::new_from_config_width(role, config_width, nozzle_diameter, float(layer_height)).with_flow_ratio(flow_ratio); return Flow::new_from_config_width(role, config_width, nozzle_diameter, float(layer_height));
} }
coordf_t PrintRegion::nozzle_dmr_avg(const PrintConfig &print_config) const coordf_t PrintRegion::nozzle_dmr_avg(const PrintConfig &print_config) const
@@ -6,13 +6,13 @@ PRODUCTVERSION @SLIC3R_VERSION@
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "CompanyName", "Bambu Research" VALUE "CompanyName", "SoftFever"
VALUE "FileDescription", "@SLIC3R_APP_NAME@ G-code Viewer" VALUE "FileDescription", "@SLIC3R_APP_NAME@ G-code Viewer"
VALUE "FileVersion", "@SLIC3R_BUILD_ID@" VALUE "FileVersion", "@SLIC3R_BUILD_ID@"
VALUE "ProductName", "@SLIC3R_APP_NAME@ G-code Viewer" VALUE "ProductName", "@SLIC3R_APP_NAME@ G-code Viewer"
VALUE "ProductVersion", "@SLIC3R_BUILD_ID@" VALUE "ProductVersion", "@SLIC3R_BUILD_ID@"
VALUE "InternalName", "@SLIC3R_APP_NAME@ G-code Viewer" VALUE "InternalName", "@SLIC3R_APP_NAME@ G-code Viewer"
VALUE "LegalCopyright", "Copyright(C) 2021-2023 Lunkuo All Rights Reserved" VALUE "LegalCopyright", ""
VALUE "OriginalFilename", "bambu-gcodeviewer.exe" VALUE "OriginalFilename", "bambu-gcodeviewer.exe"
} }
} }
@@ -22,4 +22,4 @@ PRODUCTVERSION @SLIC3R_VERSION@
} }
} }
2 ICON "@SLIC3R_RESOURCES_DIR@/images/BambuStudio-gcodeviewer.ico" 2 ICON "@SLIC3R_RESOURCES_DIR@/images/BambuStudio-gcodeviewer.ico"
1 24 "BambuStudio.manifest" 1 24 "OrcaSlicer.manifest"
@@ -6,13 +6,13 @@ PRODUCTVERSION @SLIC3R_VERSION@
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "CompanyName", "Bambu Research" VALUE "CompanyName", "SoftFever"
VALUE "FileDescription", "@SLIC3R_APP_NAME@" VALUE "FileDescription", "@SLIC3R_APP_NAME@"
VALUE "FileVersion", "@SLIC3R_BUILD_ID@" VALUE "FileVersion", "@SLIC3R_BUILD_ID@"
VALUE "ProductName", "@SLIC3R_APP_NAME@" VALUE "ProductName", "@SLIC3R_APP_NAME@"
VALUE "ProductVersion", "@SLIC3R_BUILD_ID@" VALUE "ProductVersion", "@SLIC3R_BUILD_ID@"
VALUE "InternalName", "@SLIC3R_APP_NAME@" VALUE "InternalName", "@SLIC3R_APP_NAME@"
VALUE "LegalCopyright", "Copyright(C) 2021-2023 Lunkuo All Rights Reserved" VALUE "LegalCopyright", ""
VALUE "OriginalFilename", "orca-slicer.exe" VALUE "OriginalFilename", "orca-slicer.exe"
} }
} }
@@ -21,5 +21,5 @@ PRODUCTVERSION @SLIC3R_VERSION@
VALUE "Translation", 0x409, 1252 VALUE "Translation", 0x409, 1252
} }
} }
2 ICON "@SLIC3R_RESOURCES_DIR@/images/BambuStudio.ico" 2 ICON "@SLIC3R_RESOURCES_DIR@/images/OrcaSlicer.ico"
1 24 "BambuStudio.manifest" 1 24 "OrcaSlicer.manifest"
+3 -4
View File
@@ -338,7 +338,6 @@ void Bed3D::render_internal(GLCanvas3D& canvas, bool bottom, float scale_factor,
if (show_axes) if (show_axes)
render_axes(); render_axes();
glsafe(::glEnable(GL_DEPTH_TEST)); glsafe(::glEnable(GL_DEPTH_TEST));
m_model.set_color(-1, m_is_dark ? DEFAULT_MODEL_COLOR_DARK : DEFAULT_MODEL_COLOR); m_model.set_color(-1, m_is_dark ? DEFAULT_MODEL_COLOR_DARK : DEFAULT_MODEL_COLOR);
@@ -631,9 +630,9 @@ GeometryBuffer Bed3D::update_bed_triangles() const
BoundingBoxf3 build_volume; BoundingBoxf3 build_volume;
if (!m_build_volume.valid()) return new_triangles; if (!m_build_volume.valid()) return new_triangles;
auto bed_ext = get_extents(m_bed_shape);
(*model_offset_ptr)(0) = m_build_volume.bounding_volume2d().min.x(); (*model_offset_ptr)(0) = m_build_volume.bounding_volume2d().min.x() - bed_ext.min.x();
(*model_offset_ptr)(1) = m_build_volume.bounding_volume2d().min.y(); (*model_offset_ptr)(1) = m_build_volume.bounding_volume2d().min.y() - bed_ext.min.y();
(*model_offset_ptr)(2) = -0.41 + GROUND_Z; (*model_offset_ptr)(2) = -0.41 + GROUND_Z;
std::vector<Vec2d> new_bed_shape; std::vector<Vec2d> new_bed_shape;
+3
View File
@@ -131,6 +131,9 @@ public:
// Was the model generated procedurally? // Was the model generated procedurally?
bool is_custom() const { return m_type == Type::Custom; } bool is_custom() const { return m_type == Type::Custom; }
// get the bed shape type
BuildVolume_Type get_build_volume_type() const { return m_build_volume.type(); }
// Bounding box around the print bed, axes and model, for rendering. // Bounding box around the print bed, axes and model, for rendering.
const BoundingBoxf3& extended_bounding_box() const { return m_extended_bounding_box; } const BoundingBoxf3& extended_bounding_box() const { return m_extended_bounding_box; }
+4 -4
View File
@@ -1414,14 +1414,14 @@ bool GLVolumeCollection::check_outside_state(const BuildVolume &build_volume, Mo
state = BuildVolume::ObjectState::Below; state = BuildVolume::ObjectState::Below;
else { else {
switch (plate_build_volume.type()) { switch (plate_build_volume.type()) {
case BuildVolume::Type::Rectangle: case BuildVolume_Type::Rectangle:
//FIXME this test does not evaluate collision of a build volume bounding box with non-convex objects. //FIXME this test does not evaluate collision of a build volume bounding box with non-convex objects.
state = plate_build_volume.volume_state_bbox(bb); state = plate_build_volume.volume_state_bbox(bb);
break; break;
case BuildVolume::Type::Circle: case BuildVolume_Type::Circle:
case BuildVolume::Type::Convex: case BuildVolume_Type::Convex:
//FIXME doing test on convex hull until we learn to do test on non-convex polygons efficiently. //FIXME doing test on convex hull until we learn to do test on non-convex polygons efficiently.
case BuildVolume::Type::Custom: case BuildVolume_Type::Custom:
state = plate_build_volume.object_state(volume_convex_mesh(*volume).its, volume->world_matrix().cast<float>(), volume_sinking(*volume)); state = plate_build_volume.object_state(volume_convex_mesh(*volume).its, volume->world_matrix().cast<float>(), volume_sinking(*volume));
break; break;
default: default:
+13 -14
View File
@@ -56,7 +56,6 @@ void BedShape::append_option_line(ConfigOptionsGroupShp optgroup, Parameter para
def.max = 1073.5; def.max = 1073.5;
def.label = get_option_label(param); def.label = get_option_label(param);
def.tooltip = L("Distance of the 0,0 G-code coordinate from the front left corner of the rectangle."); def.tooltip = L("Distance of the 0,0 G-code coordinate from the front left corner of the rectangle.");
def.readonly = true;
key = "rect_origin"; key = "rect_origin";
break; break;
case Parameter::Diameter: case Parameter::Diameter:
@@ -89,11 +88,11 @@ wxString BedShape::get_name(PageType type)
BedShape::PageType BedShape::get_page_type() BedShape::PageType BedShape::get_page_type()
{ {
switch (m_build_volume.type()) { switch (m_build_volume.type()) {
case BuildVolume::Type::Rectangle: case BuildVolume_Type::Rectangle:
case BuildVolume::Type::Invalid: return PageType::Rectangle; case BuildVolume_Type::Invalid: return PageType::Rectangle;
case BuildVolume::Type::Circle: return PageType::Circle; case BuildVolume_Type::Circle: return PageType::Circle;
case BuildVolume::Type::Convex: case BuildVolume_Type::Convex:
case BuildVolume::Type::Custom: return PageType::Custom; case BuildVolume_Type::Custom: return PageType::Custom;
} }
// make visual studio happy // make visual studio happy
assert(false); assert(false);
@@ -104,7 +103,7 @@ wxString BedShape::get_full_name_with_params()
{ {
wxString out = _L("Shape") + ": " + get_name(this->get_page_type()); wxString out = _L("Shape") + ": " + get_name(this->get_page_type());
switch (m_build_volume.type()) { switch (m_build_volume.type()) {
case BuildVolume::Type::Circle: case BuildVolume_Type::Circle:
out += "\n" + _L(get_option_label(Parameter::Diameter)) + ": [" + double_to_string(2. * unscaled<double>(m_build_volume.circle().radius)) + "]"; out += "\n" + _L(get_option_label(Parameter::Diameter)) + ": [" + double_to_string(2. * unscaled<double>(m_build_volume.circle().radius)) + "]";
break; break;
default: default:
@@ -119,7 +118,7 @@ wxString BedShape::get_full_name_with_params()
void BedShape::apply_optgroup_values(ConfigOptionsGroupShp optgroup) void BedShape::apply_optgroup_values(ConfigOptionsGroupShp optgroup)
{ {
switch (m_build_volume.type()) { switch (m_build_volume.type()) {
case BuildVolume::Type::Circle: case BuildVolume_Type::Circle:
optgroup->set_value("diameter", double_to_string(2. * unscaled<double>(m_build_volume.circle().radius))); optgroup->set_value("diameter", double_to_string(2. * unscaled<double>(m_build_volume.circle().radius)));
break; break;
default: default:
@@ -170,12 +169,12 @@ void BedShapeDialog::on_dpi_changed(const wxRect &suggested_rect)
const std::string BedShapePanel::NONE = "None"; const std::string BedShapePanel::NONE = "None";
const std::string BedShapePanel::EMPTY_STRING = ""; const std::string BedShapePanel::EMPTY_STRING = "";
void BedShapePanel::build_panel(const ConfigOptionPoints& default_pt, const ConfigOptionString& custom_texture, const ConfigOptionString& custom_model) void BedShapePanel::build_panel(const ConfigOptionPoints& default_pt, const std::string& custom_texture, const std::string& custom_model)
{ {
wxGetApp().UpdateDarkUI(this); wxGetApp().UpdateDarkUI(this);
m_shape = default_pt.values; m_shape = default_pt.values;
m_custom_texture = custom_texture.value.empty() ? NONE : custom_texture.value; m_custom_texture = custom_texture.empty() ? NONE : custom_texture;
m_custom_model = custom_model.value.empty() ? NONE : custom_model.value; m_custom_model = custom_model.empty() ? NONE : custom_model;
auto sbsizer = new wxStaticBoxSizer(wxVERTICAL, this, _L("Shape")); auto sbsizer = new wxStaticBoxSizer(wxVERTICAL, this, _L("Shape"));
sbsizer->GetStaticBox()->SetFont(wxGetApp().bold_font()); sbsizer->GetStaticBox()->SetFont(wxGetApp().bold_font());
@@ -192,9 +191,9 @@ void BedShapePanel::build_panel(const ConfigOptionPoints& default_pt, const Conf
BedShape::append_option_line(optgroup, BedShape::Parameter::RectOrigin); BedShape::append_option_line(optgroup, BedShape::Parameter::RectOrigin);
activate_options_page(optgroup); activate_options_page(optgroup);
// optgroup = init_shape_options_page(BedShape::get_name(BedShape::PageType::Circle)); optgroup = init_shape_options_page(BedShape::get_name(BedShape::PageType::Circle));
// BedShape::append_option_line(optgroup, BedShape::Parameter::Diameter); BedShape::append_option_line(optgroup, BedShape::Parameter::Diameter);
// activate_options_page(optgroup); activate_options_page(optgroup);
optgroup = init_shape_options_page(BedShape::get_name(BedShape::PageType::Custom)); optgroup = init_shape_options_page(BedShape::get_name(BedShape::PageType::Custom));
+2 -2
View File
@@ -35,7 +35,7 @@ struct BedShape
BedShape(const ConfigOptionPoints& points); BedShape(const ConfigOptionPoints& points);
bool is_custom() { return m_build_volume.type() == BuildVolume::Type::Convex || m_build_volume.type() == BuildVolume::Type::Custom; } bool is_custom() { return m_build_volume.type() == BuildVolume_Type::Convex || m_build_volume.type() == BuildVolume_Type::Custom; }
static void append_option_line(ConfigOptionsGroupShp optgroup, Parameter param); static void append_option_line(ConfigOptionsGroupShp optgroup, Parameter param);
static wxString get_name(PageType type); static wxString get_name(PageType type);
@@ -63,7 +63,7 @@ class BedShapePanel : public wxPanel
public: public:
BedShapePanel(wxWindow* parent) : wxPanel(parent, wxID_ANY), m_custom_texture(NONE), m_custom_model(NONE) {} BedShapePanel(wxWindow* parent) : wxPanel(parent, wxID_ANY), m_custom_texture(NONE), m_custom_model(NONE) {}
void build_panel(const ConfigOptionPoints& default_pt, const ConfigOptionString& custom_texture, const ConfigOptionString& custom_model); void build_panel(const ConfigOptionPoints& default_pt, const std::string& custom_texture, const std::string& custom_model);
// Returns the resulting bed shape polygon. This value will be stored to the ini file. // Returns the resulting bed shape polygon. This value will be stored to the ini file.
const std::vector<Vec2d>& get_shape() const { return m_shape; } const std::vector<Vec2d>& get_shape() const { return m_shape; }
+5 -5
View File
@@ -116,7 +116,7 @@ RetinaHelper::~RetinaHelper() {}
float RetinaHelper::get_scale_factor() { return float(m_window->GetContentScaleFactor()); } float RetinaHelper::get_scale_factor() { return float(m_window->GetContentScaleFactor()); }
#endif // __WXGTK3__ #endif // __WXGTK3__
// Fixed the collision between BuildVolume::Type::Convex and macro Convex defined inside /usr/include/X11/X.h that is included by WxWidgets 3.0. // Fixed the collision between BuildVolume_Type::Convex and macro Convex defined inside /usr/include/X11/X.h that is included by WxWidgets 3.0.
#if defined(__linux__) && defined(Convex) #if defined(__linux__) && defined(Convex)
#undef Convex #undef Convex
#endif #endif
@@ -6542,22 +6542,22 @@ void GLCanvas3D::_render_objects(GLVolumeCollection::ERenderType type, bool with
if (const BuildVolume &build_volume = m_bed.build_volume(); build_volume.valid()) { if (const BuildVolume &build_volume = m_bed.build_volume(); build_volume.valid()) {
switch (build_volume.type()) { switch (build_volume.type()) {
case BuildVolume::Type::Rectangle: { case BuildVolume_Type::Rectangle: {
const BoundingBox3Base<Vec3d> bed_bb = build_volume.bounding_volume().inflated(BuildVolume::SceneEpsilon); const BoundingBox3Base<Vec3d> bed_bb = build_volume.bounding_volume().inflated(BuildVolume::SceneEpsilon);
m_volumes.set_print_volume({ 0, // Rectangle m_volumes.set_print_volume({ 0, // Rectangle
{ float(bed_bb.min.x()), float(bed_bb.min.y()), float(bed_bb.max.x()), float(bed_bb.max.y()) }, { float(bed_bb.min.x()), float(bed_bb.min.y()), float(bed_bb.max.x()), float(bed_bb.max.y()) },
{ 0.0f, float(build_volume.printable_height()) } }); { 0.0f, float(build_volume.printable_height()) } });
break; break;
} }
case BuildVolume::Type::Circle: { case BuildVolume_Type::Circle: {
m_volumes.set_print_volume({ 1, // Circle m_volumes.set_print_volume({ 1, // Circle
{ unscaled<float>(build_volume.circle().center.x()), unscaled<float>(build_volume.circle().center.y()), unscaled<float>(build_volume.circle().radius + BuildVolume::SceneEpsilon), 0.0f }, { unscaled<float>(build_volume.circle().center.x()), unscaled<float>(build_volume.circle().center.y()), unscaled<float>(build_volume.circle().radius + BuildVolume::SceneEpsilon), 0.0f },
{ 0.0f, float(build_volume.printable_height() + BuildVolume::SceneEpsilon) } }); { 0.0f, float(build_volume.printable_height() + BuildVolume::SceneEpsilon) } });
break; break;
} }
default: default:
case BuildVolume::Type::Convex: case BuildVolume_Type::Convex:
case BuildVolume::Type::Custom: { case BuildVolume_Type::Custom: {
m_volumes.set_print_volume({ static_cast<int>(type), m_volumes.set_print_volume({ static_cast<int>(type),
{ -FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX }, { -FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX },
{ -FLT_MAX, FLT_MAX } } { -FLT_MAX, FLT_MAX } }
+1 -1
View File
@@ -488,7 +488,7 @@ wxMenu* MenuFactory::append_submenu_add_generic(wxMenu* menu, ModelVolumeType ty
std::vector<boost::filesystem::path> input_files; std::vector<boost::filesystem::path> input_files;
std::string file_name = item; std::string file_name = item;
if (file_name == "Orca Cube") if (file_name == "Orca Cube")
file_name = "OrcaCube_v1.3mf"; file_name = "OrcaCube_v2.3mf";
else if (file_name == "3DBenchy") else if (file_name == "3DBenchy")
file_name = "3DBenchy.stl"; file_name = "3DBenchy.stl";
else if (file_name == "Autodesk FDM Test") else if (file_name == "Autodesk FDM Test")
+1 -1
View File
@@ -3286,7 +3286,7 @@ ObjectTableDialog::ObjectTableDialog(wxWindow* parent, Plater* platerObj, Model
auto m_main_sizer = new wxBoxSizer(wxVERTICAL); auto m_main_sizer = new wxBoxSizer(wxVERTICAL);
// icon // icon
std::string icon_path = (boost::format("%1%/images/BambuStudio.ico") % resources_dir()).str(); std::string icon_path = (boost::format("%1%/images/OrcaSlicer.ico") % resources_dir()).str();
SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO)); SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO));
//top line //top line

Some files were not shown because too many files have changed in this diff Show More