Compare commits

...

15 Commits

Author SHA1 Message Date
SoftFever
1eb54c49a6 revert changes for min_layer_height check, there was legacy config on user's machine that won't pass this check. (why?) 2022-12-20 11:41:11 +08:00
SoftFever
49982a4497 change version to 1.4.0 official
Signed-off-by: SoftFever <103989404+SoftFever@users.noreply.github.com>
2022-12-20 11:35:55 +08:00
SoftFever
57b4f3cf68 change default wall loop to 3
Signed-off-by: SoftFever <103989404+SoftFever@users.noreply.github.com>
2022-12-20 11:32:54 +08:00
SoftFever
92360f75ed remove redundant send button for 3rd printers
Signed-off-by: SoftFever <103989404+SoftFever@users.noreply.github.com>
2022-12-20 11:27:40 +08:00
SoftFever
daf5384b5a Add Layer Time/Layer time(Log).
Main logic is ported from SuperSlicer

Signed-off-by: SoftFever <103989404+SoftFever@users.noreply.github.com>
2022-12-19 23:58:24 +08:00
SoftFever
3d8eca022f temporary disable assert on Mac 2022-12-19 23:57:35 +08:00
chunmao.guo
78f6c429c1 FIX: [STUDIO-1800] enable_user_preset_folder before load preset
Change-Id: I3b877db994440359e56aa2fa13d13b1d9a98f978
2022-12-19 19:34:08 +08:00
SoftFever
030063c8d5 Skip AMS filaments for 3rd party printers 2022-12-18 20:32:56 +08:00
SoftFever
71fb7a9f84 add G92 E0 for Prusa priters 2022-12-18 18:39:30 +08:00
SoftFever
8ef935e886 add G92 E0 for Prusa priters 2022-12-18 18:38:44 +08:00
SoftFever
7c11aeba96 add Prusa MINI+ 2022-12-18 16:12:32 +08:00
SoftFever
85f774a72d fix max layer height issue when open the app for the first time 2022-12-18 11:51:25 +08:00
SoftFever
0e64b47f9d expose bed_exclude_area feature to thirdparty printer 2022-12-18 10:30:41 +08:00
SoftFever
32364ee7ee fix a small ui issue 2022-12-18 10:30:15 +08:00
SoftFever
c08fc0c5dc Change layer height checking logic.
max min layer height should be compared against `Layer height limits` parameter instead of hardcoded value
2022-12-17 16:05:49 +08:00
43 changed files with 282 additions and 59 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "Anycubic",
"version": "01.02.00.05",
"version": "01.04.00.00",
"force_update": "0",
"description": "Anycubic configurations",
"machine_model_list": [

View File

@@ -48,7 +48,7 @@
"overhang_3_4_speed": "30",
"overhang_4_4_speed": "10",
"inner_wall_line_width": "0.45",
"wall_loops": "2",
"wall_loops": "3",
"print_settings_id": "",
"raft_layers": "0",
"seam_position": "aligned",

View File

@@ -1,7 +1,7 @@
{
"name": "Bambulab",
"url": "http://www.bambulab.com/Parameters/vendor/BBL.json",
"version": "01.04.00.14",
"version": "01.04.00.15",
"force_update": "0",
"description": "the initial version of BBL configurations",
"machine_model_list": [

View File

@@ -6,7 +6,7 @@
"inherits": "fdm_process_bbl_common",
"layer_height": "0.3",
"initial_layer_print_height": "0.3",
"wall_loops": "2",
"wall_loops": "3",
"bottom_shell_layers": "3",
"top_shell_layers": "3",
"bridge_flow": "1",

View File

@@ -6,7 +6,7 @@
"inherits": "fdm_process_bbl_common",
"layer_height": "0.4",
"initial_layer_print_height": "0.4",
"wall_loops": "2",
"wall_loops": "3",
"bottom_shell_layers": "3",
"top_shell_layers": "3",
"bridge_flow": "1",

View File

@@ -56,7 +56,7 @@
"only_one_wall_top": "1",
"inner_wall_line_width": "0.45",
"inner_wall_speed": "150",
"wall_loops": "2",
"wall_loops": "3",
"print_settings_id": "",
"raft_layers": "0",
"seam_position": "aligned",

View File

@@ -31,7 +31,7 @@
"detect_overhang_wall": "0",
"reduce_infill_retraction": "0",
"filename_format": "{input_filename_base}.gcode",
"wall_loops": "2",
"wall_loops": "3",
"inner_wall_line_width": "0.45",
"inner_wall_speed": "40",
"print_settings_id": "",

View File

@@ -1,6 +1,6 @@
{
"name": "Creality",
"version": "01.04.00.00",
"version": "01.04.00.01",
"force_update": "0",
"description": "Creality configurations",
"machine_model_list": [

View File

@@ -31,7 +31,7 @@
"detect_overhang_wall": "0",
"reduce_infill_retraction": "0",
"filename_format": "{input_filename_base}.gcode",
"wall_loops": "2",
"wall_loops": "3",
"inner_wall_line_width": "0.45",
"inner_wall_speed": "40",
"print_settings_id": "",

View File

@@ -1,12 +1,16 @@
{
"name": "Prusa",
"version": "01.02.00.03",
"version": "01.04.00.10",
"force_update": "0",
"description": "Prusa configurations",
"machine_model_list": [
{
"name": "Prusa MK3S",
"sub_path": "machine/Prusa MK3S.json"
},
{
"name": "Prusa MINI",
"sub_path": "machine/Prusa MINI.json"
}
],
"process_list": [
@@ -17,6 +21,10 @@
{
"name": "0.20mm Standard @MK3S",
"sub_path": "process/0.20mm Standard @MK3S.json"
},
{
"name": "0.20mm Standard @MINI",
"sub_path": "process/0.20mm Standard @MINI.json"
}
],
"filament_list": [
@@ -105,6 +113,10 @@
{
"name": "Prusa MK3S 0.4 nozzle",
"sub_path": "machine/Prusa MK3S 0.4 nozzle.json"
},
{
"name": "Prusa MINI 0.4 nozzle",
"sub_path": "machine/Prusa MINI 0.4 nozzle.json"
}
]
}

View File

@@ -13,6 +13,7 @@
"12"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
"Prusa MK3S 0.4 nozzle",
"Prusa MINI 0.4 nozzle"
]
}

View File

@@ -13,6 +13,7 @@
"12"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
"Prusa MK3S 0.4 nozzle",
"Prusa MINI 0.4 nozzle"
]
}

View File

@@ -19,6 +19,7 @@
"8"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
"Prusa MK3S 0.4 nozzle",
"Prusa MINI 0.4 nozzle"
]
}

View File

@@ -16,6 +16,7 @@
"12"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
"Prusa MK3S 0.4 nozzle",
"Prusa MINI 0.4 nozzle"
]
}

View File

@@ -13,6 +13,7 @@
"0.94"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
"Prusa MK3S 0.4 nozzle",
"Prusa MINI 0.4 nozzle"
]
}

View File

@@ -43,6 +43,7 @@
"; filament start gcode\n"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
"Prusa MK3S 0.4 nozzle",
"Prusa MINI 0.4 nozzle"
]
}

View File

@@ -19,6 +19,7 @@
"7"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
"Prusa MK3S 0.4 nozzle",
"Prusa MINI 0.4 nozzle"
]
}

View File

@@ -16,6 +16,7 @@
"8"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
"Prusa MK3S 0.4 nozzle",
"Prusa MINI 0.4 nozzle"
]
}

View File

@@ -19,6 +19,7 @@
"20"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
"Prusa MK3S 0.4 nozzle",
"Prusa MINI 0.4 nozzle"
]
}

View File

@@ -10,6 +10,7 @@
"3.2"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
"Prusa MK3S 0.4 nozzle",
"Prusa MINI 0.4 nozzle"
]
}

View File

@@ -0,0 +1,84 @@
{
"type": "machine",
"setting_id": "GM003",
"name": "Prusa MINI 0.4 nozzle",
"from": "system",
"instantiation": "true",
"inherits": "fdm_machine_common",
"printer_model": "Prusa MINI",
"default_filament_profile": [
"Prusa Generic PLA"
],
"default_print_profile": "0.20mm Standard @MINI",
"nozzle_diameter": [
"0.4"
],
"bed_exclude_area": [
"0x0"
],
"printable_area": [
"0x0",
"180x0",
"180x180",
"0x180"
],
"machine_max_acceleration_extruding": [
"1250",
"2000"
],
"machine_max_acceleration_x": [
"2500",
"2000"
],
"machine_max_acceleration_y": [
"2500",
"2000"
],
"machine_max_acceleration_z": [
"400",
"200"
],
"machine_max_jerk_e": [
"10",
"2.5"
],
"machine_max_jerk_x": [
"8",
"9"
],
"machine_max_jerk_y": [
"8",
"9"
],
"machine_max_speed_e": [
"80",
"25"
],
"machine_max_speed_x": [
"180",
"200"
],
"machine_max_speed_y": [
"180",
"200"
],
"retraction_length": [
"3.2"
],
"retraction_minimum_travel": [
"1.5"
],
"retraction_speed": [
"70"
],
"printable_height": "180",
"machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S170 ; set extruder temp for bed leveling\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nM109 R170 ; wait for bed leveling temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM204 T1250 ; set travel acceleration\nG28 ; home all without mesh bed level\nG29 ; mesh bed leveling \nM204 T[machine_max_acceleration_travel] ; restore travel acceleration\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nG92 E0\nG1 Y-2 X179 F2400\nG1 Z3 F720\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\n\n; intro line\nG1 X170 F1000\nG1 Z0.2 F720\nG1 X110 E8 F900\nG1 X40 E10 F700\nG92 E0\n\nM221 S95 ; set flow",
"machine_end_gcode": "G1 E-1 F2100 ; retract\n{if max_layer_z < 180}G1 Z{min(max_layer_z+2, 180)} F720 ; Move print head up{endif}\nG1 X178 Y178 F4200 ; park print head\n{if max_layer_z < 180}G1 Z{min(max_layer_z+30, 180)} F720 ; Move print head further up{endif}\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow\nM900 K0 ; reset LA\nM84 ; disable motors",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
"scan_first_layer": "0",
"machine_load_filament_time": "17",
"machine_unload_filament_time": "16",
"nozzle_type": "hardened_steel",
"auxiliary_fan": "0"
}

View File

@@ -0,0 +1,12 @@
{
"type": "machine_model",
"name": "Prusa MINI",
"model_id": "MINI",
"nozzle_diameter": "0.4",
"machine_tech": "FFF",
"family": "Prusa",
"bed_model": "",
"bed_texture": "mini.svg",
"hotend_model": "bbl-3dp-hotend.stl",
"default_materials": "Prusa Generic ABS;Prusa Generic PLA;Prusa Generic PLA-CF;Prusa Generic PETG;Prusa Generic TPU;Prusa Generic ASA;Prusa Generic PC;Prusa Generic PVA;Prusa Generic PA;Prusa Generic PA-CF"
}

View File

@@ -25,7 +25,8 @@
"printable_height": "210",
"machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S170 ; set extruder temp for bed leveling\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nM109 R170 ; wait for bed leveling temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM204 T1250 ; set travel acceleration\nG28 ; home all without mesh bed level\nG29 ; mesh bed leveling \nM204 T[machine_max_acceleration_travel] ; restore travel acceleration\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nG92 E0\nG1 Y-2 X179 F2400\nG1 Z3 F720\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\n\n; intro line\nG1 X170 F1000\nG1 Z0.2 F720\nG1 X110 E8 F900\nG1 X40 E10 F700\nG92 E0\n\nM221 S95 ; set flow",
"machine_end_gcode": "G1 E-1 F2100 ; retract\n{if max_layer_z < 210}G1 Z{min(max_layer_z+2, 210)} F720 ; Move print head up{endif}\nG1 X178 Y178 F4200 ; park print head\n{if max_layer_z < 210}G1 Z{min(max_layer_z+30, 210)} F720 ; Move print head further up{endif}\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow\nM900 K0 ; reset LA\nM84 ; disable motors",
"layer_change_gcode": "",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
"scan_first_layer": "0",
"machine_load_filament_time": "17",
"machine_unload_filament_time": "16",

View File

@@ -0,0 +1,32 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="180.5mm" height="180.6mm" viewBox="0 0 511.7 512">
<title>MINI_bed_texture</title>
<path d="M510.6,510.9" transform="translate(0.4 0.4)" style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"/>
<path d="M.4,510.9" transform="translate(0.4 0.4)" style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"/>
<line x1="511" y1="511.3" x2="511" y2="0.8" style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"/>
<path d="M.4.4" transform="translate(0.4 0.4)" style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"/>
<path d="M510.6.4" transform="translate(0.4 0.4)" style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"/>
<line x1="0.8" y1="0.8" x2="0.8" y2="511.3" style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"/>
<line x1="0.8" y1="511.3" x2="0.8" y2="0.8" style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"/>
<line x1="511" y1="0.8" x2="511" y2="511.3" style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"/>
<line x1="0.8" y1="511.3" x2="511" y2="511.3" style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"/>
<line x1="0.8" y1="0.8" x2="511" y2="0.8" style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"/>
<g>
<path d="M277.3,489.1c4.6,0,7.4,2.8,7.4,8.1s-2.9,8.1-7.4,8.1-7.4-2.9-7.4-8.1S272.9,489.1,277.3,489.1Zm3.7,8.1c0-3.8-1.5-5.7-3.7-5.7s-3.8,1.9-3.8,5.7,1.3,5.6,3.8,5.6S281,500.9,281,497.2Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M293.1,499h-2.5v6h-3.3V489.3h6.1a7.3,7.3,0,0,1,3.2.6,4.1,4.1,0,0,1,2.6,4,4.4,4.4,0,0,1-3.1,4.3h0l3.5,6.8H296Zm-.1-2.4c1.5,0,2.7-.7,2.7-2.5a2.4,2.4,0,0,0-2.7-2.5h-2.4v5Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M302,489.3h3.4V505H302Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M311.6,497.2c0,4,1.4,5.6,3.8,5.6s3.4-1.3,3.6-3.5V499h-3.7v-2.4h6.8V505h-2.6v-2.2h-.1a5,5,0,0,1-4.6,2.5c-4.4,0-6.8-3.1-6.8-7.9s3-8.3,7.4-8.3,6.1,1.7,6.4,4.9h-3.4a2.8,2.8,0,0,0-3-2.5C313,491.5,311.6,493.5,311.6,497.2Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M325.1,489.3h3.4V505h-3.4Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M331.7,489.3h3.7l5,8.5a16.8,16.8,0,0,1,1.2,2.3h0V489.3h3.1V505h-3.5l-5.3-8.7a12.8,12.8,0,0,1-1.1-2.4h-.1V505h-3Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M356.8,501.5H351l-1.1,3.5h-3.2l5.4-15.7h3.8l5.6,15.7h-3.6Zm-3.5-7.1-1.5,4.6H356l-1.5-4.5c-.4-1.4-.6-2.3-.6-2.3h0A15.3,15.3,0,0,1,353.3,494.4Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M363.4,489.3h3.4v13h6.8V505H363.4Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M384,499.6V505h-3.4V489.3h5.5c3.4,0,6,1.4,6,5s-2.8,5.3-6.3,5.3Zm2-2.5a2.5,2.5,0,0,0,2.8-2.7c0-1.9-1.1-2.7-2.8-2.7h-2v5.4Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M400.1,499h-2.4v6h-3.4V489.3h6.1a7.3,7.3,0,0,1,3.2.6,3.9,3.9,0,0,1,2.6,4,4.5,4.5,0,0,1-3,4.3h0l3.5,6.8H403Zm-.1-2.4c1.5,0,2.8-.7,2.8-2.5a2.4,2.4,0,0,0-2.7-2.5h-2.4v5Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M408.7,489.3H412v9.1a5.6,5.6,0,0,0,.6,3.2,3.6,3.6,0,0,0,5,0c.6-.8.5-2.1.5-3.2v-9.1h3.3v10.2c0,3.9-2.5,5.8-6.4,5.8s-6.3-1.8-6.3-5.8Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M432.4,493.5a2,2,0,0,0-2.3-2c-1.5,0-2.4.8-2.4,1.9s.6,1.7,2.1,1.9l2.4.5c2.8.5,4.1,2,4.1,4.3s-2.3,5.2-6.3,5.2-6.1-1.9-6.2-4.8h3.5a2.5,2.5,0,0,0,2.8,2.3c1.9,0,2.7-.9,2.7-2.1s-.5-1.7-2.2-2l-2.3-.4c-2.4-.5-4.1-1.9-4.1-4.4s2.2-4.8,5.9-4.8,5.7,2,5.8,4.4Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M447.4,501.5h-5.7l-1.2,3.5h-3.2l5.5-15.7h3.7l5.6,15.7h-3.5Zm-3.5-7.1-1.4,4.6h4.1l-1.4-4.5a11.3,11.3,0,0,1-.6-2.3h-.1A15.3,15.3,0,0,1,443.9,494.4Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M458.7,489.3h4.9l2.8,8.4a15.7,15.7,0,0,1,.7,2.3h0l.7-2.3,2.8-8.4h4.9V505h-3.3V492.7h-.1a26.9,26.9,0,0,1-1,3.3l-2.9,9h-2.5l-2.9-9a26.9,26.9,0,0,1-1-3.3h0V505h-3.1Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M478.6,489.3H482V505h-3.4Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M485.2,489.3h3.7l5,8.5a16.8,16.8,0,0,1,1.2,2.3h0V489.3h3.1V505h-3.5l-5.3-8.7a12.8,12.8,0,0,1-1.1-2.4h-.1V505h-3Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
<path d="M501.3,489.3h3.4V505h-3.4Z" transform="translate(0.4 0.4)" style="fill: #fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

View File

@@ -0,0 +1,26 @@
{
"type": "process",
"setting_id": "MINI-1",
"name": "0.20mm Standard @MINI",
"from": "system",
"instantiation": "true",
"inherits": "fdm_process_common",
"initial_layer_speed": "20",
"initial_layer_infill_speed": "25",
"gap_infill_speed": "40",
"bridge_speed": "25",
"default_jerk": "8",
"initial_layer_acceleration": "700",
"inner_wall_speed": "50",
"internal_solid_infill_speed": "140",
"is_custom_defined": "0",
"outer_wall_speed": "40",
"overhang_2_4_speed": "30",
"print_settings_id": "MINI - Copy",
"sparse_infill_speed": "140",
"top_surface_speed": "40",
"travel_speed": "150",
"compatible_printers": [
"Prusa MINI 0.4 nozzle"
]
}

View File

@@ -48,7 +48,7 @@
"overhang_3_4_speed": "30",
"overhang_4_4_speed": "10",
"inner_wall_line_width": "0.45",
"wall_loops": "2",
"wall_loops": "3",
"print_settings_id": "",
"raft_layers": "0",
"seam_position": "aligned",

View File

@@ -1,6 +1,6 @@
{
"name": "Voron",
"version": "01.04.00.00",
"version": "01.04.00.01",
"force_update": "0",
"description": "Voron configurations",
"machine_model_list": [

View File

@@ -31,7 +31,7 @@
"detect_overhang_wall": "0",
"reduce_infill_retraction": "0",
"filename_format": "{input_filename_base}.gcode",
"wall_loops": "2",
"wall_loops": "3",
"inner_wall_line_width": "0.45",
"inner_wall_speed": "40",
"print_settings_id": "",

View File

@@ -51,7 +51,7 @@
"overhang_3_4_speed": "30",
"overhang_4_4_speed": "10",
"inner_wall_line_width": "0.45",
"wall_loops": "2",
"wall_loops": "3",
"print_settings_id": "",
"raft_layers": "0",
"seam_position": "aligned",

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -236,7 +236,7 @@ else ()
set(BIN_RESOURCES_DIR "${CMAKE_CURRENT_BINARY_DIR}/../resources")
endif ()
if (CMAKE_MACOSX_BUNDLE)
set(BIN_RESOURCES_DIR "${CMAKE_CURRENT_BINARY_DIR}/${BIN_CONF_DIR}/BambuStudio.app/Contents/Resources")
set(BIN_RESOURCES_DIR "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/BambuStudio.app/Contents/Resources")
set(MACOSX_BUNDLE_ICON_FILE Icon.icns)
set(MACOSX_BUNDLE_BUNDLE_NAME "Bambu Studio")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${SLIC3R_VERSION})

View File

@@ -58,7 +58,8 @@ void ExtrusionPath::polygons_covered_by_spacing(Polygons &out, const float scale
// Instantiating the Flow class to get the line spacing.
// Don't know the nozzle diameter, setting to zero. It shall not matter it shall be optimized out by the compiler.
bool bridge = is_bridge(this->role());
assert(! bridge || this->width == this->height);
// SoftFever: TODO Mac trigger assersion errors
// assert(! bridge || this->width == this->height);
auto flow = bridge ? Flow::bridging_flow(this->width, 0.f) : Flow(this->width, this->height, 0.f);
polygons_append(out, offset(this->polyline, 0.5f * float(flow.scaled_spacing()) + scaled_epsilon));
}

View File

@@ -1425,6 +1425,17 @@ void GCodeProcessor::finalize(bool post_process)
update_estimated_times_stats();
//update times for results
for (size_t i = 0; i < m_result.moves.size(); i++) {
//field layer_duration contains the layer id for the move in which the layer_duration has to be set.
size_t layer_id = size_t(m_result.moves[i].layer_duration);
std::vector<float>& layer_times = m_result.print_statistics.modes[static_cast<size_t>(PrintEstimatedStatistics::ETimeMode::Normal)].layers_times;
if (layer_times.size() > layer_id - 1 && layer_id > 0)
m_result.moves[i].layer_duration = layer_times[layer_id - 1];
else
m_result.moves[i].layer_duration = 0;
}
#if ENABLE_GCODE_VIEWER_DATA_CHECKING
std::cout << "\n";
m_mm3_per_mm_compare.output();
@@ -3891,6 +3902,7 @@ void GCodeProcessor::store_move_vertex(EMoveType type, EMovePathType path_type)
m_fan_speed,
m_extruder_temps[m_extruder_id],
static_cast<float>(m_result.moves.size()),
static_cast<float>(m_layer_id), //layer_duration: set later
//BBS: add arc move related data
path_type,
Vec3f(m_arc_center(0, 0) + m_x_offset, m_arc_center(1, 0) + m_y_offset, m_arc_center(2, 0)) + m_extruder_offsets[m_extruder_id],

View File

@@ -117,6 +117,8 @@ namespace Slic3r {
float fan_speed{ 0.0f }; // percentage
float temperature{ 0.0f }; // Celsius degrees
float time{ 0.0f }; // s
float layer_duration{ 0.0f }; // s (layer id before finalize)
//BBS: arc move related data
EMovePathType move_path_type{ EMovePathType::Noop_move };

View File

@@ -173,10 +173,11 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con
return;
// layer_height shouldn't be equal to zero
auto gpreset = GUI::wxGetApp().preset_bundle->printers.get_edited_preset();
if (config->opt_float("layer_height") < EPSILON)
{
const wxString msg_text = _(L("Too small layer height.\nReset to 0.2"));
MessageDialog dialog(m_msg_dlg_parent, msg_text,"", wxICON_WARNING | wxOK);
MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK);
DynamicPrintConfig new_conf = *config;
is_msg_dlg_already_exist = true;
dialog.ShowModal();
@@ -186,14 +187,15 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con
}
//BBS: limite the max layer_herght
if (config->opt_float("layer_height") > 0.6 + EPSILON)
auto max_lh = gpreset.config.opt_float("max_layer_height",0);
if (max_lh > 0.2 && config->opt_float("layer_height") > max_lh+ EPSILON)
{
const wxString msg_text = _(L("Too large layer height.\nReset to 0.2"));
const wxString msg_text = wxString::Format(L"Too large layer height.\nReset to %0.3f", max_lh);
MessageDialog dialog(nullptr, msg_text, "", wxICON_WARNING | wxOK);
DynamicPrintConfig new_conf = *config;
is_msg_dlg_already_exist = true;
dialog.ShowModal();
new_conf.set_key_value("layer_height", new ConfigOptionFloat(0.2));
new_conf.set_key_value("layer_height", new ConfigOptionFloat(max_lh));
apply(config, &new_conf);
is_msg_dlg_already_exist = false;
}

View File

@@ -75,6 +75,10 @@ static std::string get_view_type_string(GCodeViewer::EViewType view_type)
return _u8L("Tool");
else if (view_type == GCodeViewer::EViewType::ColorPrint)
return _u8L("Filament");
else if (view_type == GCodeViewer::EViewType::LayerTime)
return _u8L("Layer Time");
else if (view_type == GCodeViewer::EViewType::LayerTimeLog)
return _u8L("Layer Time (log)");
return "";
}
@@ -210,7 +214,7 @@ bool GCodeViewer::Path::matches(const GCodeProcessorResult::MoveVertex& move) co
return type == move.type && extruder_id == move.extruder_id && cp_color_id == move.cp_color_id && role == move.extrusion_role &&
move.position.z() <= sub_paths.front().first.position.z() && feedrate == move.feedrate && fan_speed == move.fan_speed &&
height == round_to_bin(move.height) && width == round_to_bin(move.width) &&
matches_percent(volumetric_rate, move.volumetric_rate(), 0.05f);
matches_percent(volumetric_rate, move.volumetric_rate(), 0.05f) && layer_time == move.layer_duration;
}
case EMoveType::Travel: {
return type == move.type && feedrate == move.feedrate && extruder_id == move.extruder_id && cp_color_id == move.cp_color_id;
@@ -244,7 +248,7 @@ void GCodeViewer::TBuffer::add_path(const GCodeProcessorResult::MoveVertex& move
paths.push_back({ move.type, move.extrusion_role, move.delta_extruder,
round_to_bin(move.height), round_to_bin(move.width),
move.feedrate, move.fan_speed, move.temperature,
move.volumetric_rate(), move.extruder_id, move.cp_color_id, { { endpoint, endpoint } } });
move.volumetric_rate(), move.layer_duration, move.extruder_id, move.cp_color_id, { { endpoint, endpoint } } });
}
GCodeViewer::Color GCodeViewer::Extrusions::Range::get_color_at(float value) const
@@ -270,6 +274,17 @@ GCodeViewer::Color GCodeViewer::Extrusions::Range::get_color_at(float value) con
return ret;
}
float GCodeViewer::Extrusions::Range::step_size(bool is_log) const {
if (is_log)
{
float min_range = min;
if (min_range == 0)
min_range = 0.001f;
return (std::log(max / min_range) / (static_cast<float>(Range_Colors.size()) - 1.0f));
} else
return (max - min) / (static_cast<float>(Range_Colors.size()) - 1.0f);
}
GCodeViewer::SequentialRangeCap::~SequentialRangeCap() {
if (ibo > 0)
glsafe(::glDeleteBuffers(1, &ibo));
@@ -361,6 +376,8 @@ void GCodeViewer::SequentialView::Marker::render(int canvas_width, int canvas_he
std::string width = ImGui::ColorMarkerStart + _u8L("Width: ") + ImGui::ColorMarkerEnd;
std::string speed = ImGui::ColorMarkerStart + _u8L("Speed: ") + ImGui::ColorMarkerEnd;
std::string flow = ImGui::ColorMarkerStart + _u8L("Flow: ") + ImGui::ColorMarkerEnd;
std::string layer_time = ImGui::ColorMarkerStart + _u8L("Layer Time: ") + ImGui::ColorMarkerEnd;
std::string layer_time_log = ImGui::ColorMarkerStart + _u8L("Layer Time (log): ") + ImGui::ColorMarkerEnd;
std::string fanspeed = ImGui::ColorMarkerStart + _u8L("Fan Speed: ") + ImGui::ColorMarkerEnd;
std::string temperature = ImGui::ColorMarkerStart + _u8L("Temperature: ") + ImGui::ColorMarkerEnd;
const float item_size = imgui.calc_text_size("X: 000.000 ").x;
@@ -372,6 +389,8 @@ void GCodeViewer::SequentialView::Marker::render(int canvas_width, int canvas_he
view_type == EViewType::Width ||
view_type == EViewType::Feedrate ||
view_type == EViewType::VolumetricRate ||
view_type == EViewType::LayerTime ||
view_type == EViewType::LayerTimeLog ||
view_type == EViewType::FanSpeed ||
view_type == EViewType::Temperature)
{
@@ -900,6 +919,8 @@ void GCodeViewer::update_by_mode(ConfigOptionMode mode)
view_type_items.push_back(EViewType::Height);
view_type_items.push_back(EViewType::Width);
view_type_items.push_back(EViewType::VolumetricRate);
view_type_items.push_back(EViewType::LayerTime);
view_type_items.push_back(EViewType::LayerTimeLog);
view_type_items.push_back(EViewType::FanSpeed);
view_type_items.push_back(EViewType::Temperature);
if (mode == ConfigOptionMode::comDevelop) {
@@ -1135,6 +1156,9 @@ void GCodeViewer::refresh(const GCodeProcessorResult& gcode_result, const std::v
m_extrusions.ranges.temperature.update_from(curr.temperature);
if (curr.extrusion_role != erCustom || is_visible(erCustom))
m_extrusions.ranges.volumetric_rate.update_from(round_to_bin(curr.volumetric_rate()));
if (curr.layer_duration > 0.f)
m_extrusions.ranges.layer_duration.update_from(curr.layer_duration);
[[fallthrough]];
}
case EMoveType::Travel:
@@ -3194,6 +3218,8 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool
case EViewType::Feedrate: { color = m_extrusions.ranges.feedrate.get_color_at(path.feedrate); break; }
case EViewType::FanSpeed: { color = m_extrusions.ranges.fan_speed.get_color_at(path.fan_speed); break; }
case EViewType::Temperature: { color = m_extrusions.ranges.temperature.get_color_at(path.temperature); break; }
case EViewType::LayerTime: { color = m_extrusions.ranges.layer_duration.get_color_at(path.layer_time); break; }
case EViewType::LayerTimeLog: { color = m_extrusions.ranges.layer_duration.get_color_at(path.layer_time); break; }
case EViewType::VolumetricRate: { color = m_extrusions.ranges.volumetric_rate.get_color_at(path.volumetric_rate); break; }
case EViewType::Tool: { color = m_tools.m_tool_colors[path.extruder_id]; break; }
case EViewType::ColorPrint: {
@@ -4211,7 +4237,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv
};
auto append_range = [append_item](const Extrusions::Range& range, unsigned int decimals) {
auto append_range = [append_item](const Extrusions::Range& range, unsigned int decimals, bool is_log = false) {
auto append_range_item = [append_item](int i, float value, unsigned int decimals) {
char buf[1024];
::sprintf(buf, "%.*f", decimals, value);
@@ -4226,9 +4252,14 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv
append_range_item(0, range.min, decimals);
}
else {
const float step_size = range.step_size();
const float step_size = range.step_size(is_log);
for (int i = static_cast<int>(Range_Colors.size()) - 1; i >= 0; --i) {
append_range_item(i, range.min + static_cast<float>(i) * step_size, decimals);
if (!is_log)
append_range_item(i, range.min + static_cast<float>(i) * step_size, decimals);
else
append_range_item(i, std::exp(std::log(range.min) + static_cast<float>(i) * step_size),decimals);
}
}
};
@@ -4455,6 +4486,9 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv
case EViewType::FanSpeed: { imgui.title(_u8L("Fan Speed (%)")); break; }
case EViewType::Temperature: { imgui.title(_u8L("Temperature (°C)")); break; }
case EViewType::VolumetricRate: { imgui.title(_u8L("Volumetric flow rate (mm³/s)")); break; }
case EViewType::LayerTime: { imgui.title(_u8L("Layer Time")); break; }
case EViewType::LayerTimeLog: { imgui.title(_u8L("Layer Time (log)")); break; }
case EViewType::Tool:
{
// calculate used filaments data
@@ -4592,6 +4626,8 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv
}
case EViewType::FanSpeed: { append_range(m_extrusions.ranges.fan_speed, 0); break; }
case EViewType::Temperature: { append_range(m_extrusions.ranges.temperature, 0); break; }
case EViewType::LayerTime: { append_range(m_extrusions.ranges.layer_duration, true); break; }
case EViewType::LayerTimeLog: { append_range(m_extrusions.ranges.layer_duration, true, true); break; }
case EViewType::VolumetricRate: { append_range(m_extrusions.ranges.volumetric_rate, 2); break; }
case EViewType::Tool:
{

View File

@@ -216,6 +216,7 @@ class GCodeViewer
float fan_speed{ 0.0f };
float temperature{ 0.0f };
float volumetric_rate{ 0.0f };
float layer_time{ 0.0f };
unsigned char extruder_id{ 0 };
unsigned char cp_color_id{ 0 };
std::vector<Sub_Path> sub_paths;
@@ -409,7 +410,7 @@ class GCodeViewer
}
void reset() { min = FLT_MAX; max = -FLT_MAX; count = 0; }
float step_size() const { return (max - min) / (static_cast<float>(Range_Colors.size()) - 1.0f); }
float step_size(bool is_log = false) const;
Color get_color_at(float value) const;
};
@@ -427,7 +428,8 @@ class GCodeViewer
Range volumetric_rate;
// Color mapping by extrusion temperature.
Range temperature;
// Color mapping by layer time.
Range layer_duration;
void reset() {
height.reset();
width.reset();
@@ -435,6 +437,7 @@ class GCodeViewer
fan_speed.reset();
volumetric_rate.reset();
temperature.reset();
layer_duration.reset();
}
};
@@ -712,6 +715,8 @@ public:
Tool,
ColorPrint,
FilamentId,
LayerTime,
LayerTimeLog,
Count
};

View File

@@ -2327,7 +2327,11 @@ bool GUI_App::on_init_inner()
copy_network_if_available();
on_init_network();
//BBS if load user preset failed
if (app_config->get("sync_user_preset") == "true" && m_agent && m_agent->is_user_login()) {
enable_user_preset_folder(true);
}
// BBS if load user preset failed
//if (loaded_preset_result != 0) {
try {
// Enable all substitutions (in both user and system profiles), but log the substitutions in user profiles only.

View File

@@ -1476,20 +1476,7 @@ wxBoxSizer* MainFrame::create_side_tools()
p->Dismiss();
});
// upload only
SideButton* upload_gcode_btn = new SideButton(p, _L("Send"), "");
upload_gcode_btn->SetCornerRadius(0);
upload_gcode_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
m_print_btn->SetLabel(_L("Send"));
m_print_select = eUploadGcode;
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
p->Dismiss();
});
p->append_button(send_gcode_btn);
p->append_button(upload_gcode_btn);
p->append_button(export_gcode_btn);
}
else {

View File

@@ -1033,8 +1033,7 @@ void PlaterPresetComboBox::update()
//if (i + 1 == m_collection->num_default_presets())
// set_label_marker(Append(separator(L("System presets")), wxNullBitmap));
}
if (m_type == Preset::TYPE_FILAMENT)
if (m_type == Preset::TYPE_FILAMENT && m_preset_bundle->printers.get_edited_preset().is_bbl_vendor_preset(m_preset_bundle))
add_ams_filaments(into_u8(selected_user_preset), true);
//BBS: add project embedded preset logic
@@ -1262,7 +1261,7 @@ void TabPresetComboBox::update()
// set_label_marker(Append(separator(L("System presets")), wxNullBitmap));
}
if (m_type == Preset::TYPE_FILAMENT)
if (m_type == Preset::TYPE_FILAMENT && m_preset_bundle->printers.get_edited_preset().is_bbl_vendor_preset(m_preset_bundle))
add_ams_filaments(into_u8(selected));
//BBS: add project embedded preset logic

View File

@@ -1827,8 +1827,6 @@ void TabPrint::build()
optgroup = page->new_optgroup(L("Infill"), L"param_infill");
optgroup->append_single_option_line("sparse_infill_density");
optgroup->append_single_option_line("sparse_infill_pattern", "fill-patterns#infill types and their properties of sparse");
optgroup->append_single_option_line("top_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface");
optgroup->append_single_option_line("bottom_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface");
optgroup->append_single_option_line("filter_out_gap_fill");
optgroup = page->new_optgroup(L("Advanced"), L"param_advanced");
@@ -3487,7 +3485,7 @@ void TabPrinter::toggle_options()
// SoftFever: hide BBL specific settings
for (auto el :
{"scan_first_layer", "machine_load_filament_time",
"machine_unload_filament_time", "nozzle_type", "bed_exclude_area"})
"machine_unload_filament_time", "nozzle_type"})
toggle_line(el, is_BBL_printer);
}

View File

@@ -10,5 +10,5 @@ endif()
if(NOT DEFINED BBL_INTERNAL_TESTING)
set(BBL_INTERNAL_TESTING "1")
endif()
set(SoftFever_VERSION "1.4.0 beta3")
set(SoftFever_VERSION "1.4.0")
set(SLIC3R_VERSION "01.04.00.17")