397{
398 ConfigOptionDef* def;
399
400
402 def = this->
add(
"avoid_crossing_curled_overhangs",
coBool);
403 def->label =
L(
"Avoid crossing curled overhangs (Experimental)");
404
405 def->tooltip =
L(
"Plan travel moves such that the extruder avoids areas where the filament may be curled up. "
406 "This is mostly happening on steeper rounded overhangs and may cause a crash with the nozzle. "
407 "This feature slows down both the print and the G-code generation.");
410
411 def = this->
add(
"avoid_crossing_perimeters",
coBool);
412 def->label =
L(
"Avoid crossing perimeters");
413 def->tooltip =
L(
"Optimize travel moves in order to minimize the crossing of perimeters. "
414 "This is mostly useful with Bowden extruders which suffer from oozing. "
415 "This feature slows down both the print and the G-code generation.");
418
420 def->label =
L(
"Avoid crossing perimeters - Max detour length");
421 def->category =
L(
"Layers and Perimeters");
422 def->tooltip =
L(
"The maximum detour length for avoid crossing perimeters. "
423 "If the detour is longer than this value, avoid crossing perimeters is not applied for this travel path. "
424 "Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path.");
425 def->sidetext =
L(
"mm or % (zero to disable)");
426 def->min = 0;
427 def->max_literal = 1000;
429 def->set_default_value(new ConfigOptionFloatOrPercent(0., false));
430
431 def = this->
add(
"bed_temperature",
coInts);
432 def->label =
L(
"Other layers");
433 def->tooltip =
L(
"Bed temperature for layers after the first one. "
434 "Set this to zero to disable bed temperature control commands in the output.");
435 def->sidetext =
L(
"°C");
436 def->full_label =
L(
"Bed temperature");
437 def->min = 0;
438 def->max = 300;
440
442 def->label =
L(
"Before layer change G-code");
443 def->tooltip =
L(
"This custom code is inserted at every layer change, right before the Z move. "
444 "Note that you can use placeholder variables for all Slic3r settings as well "
445 "as [layer_num] and [layer_z].");
446 def->multiline = true;
447 def->full_width = true;
448 def->height = 5;
450 def->set_default_value(new ConfigOptionString(""));
451
452 def = this->
add(
"between_objects_gcode",
coString);
453 def->label =
L(
"Between objects G-code");
454 def->tooltip =
L(
"This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want.");
455 def->multiline = true;
456 def->full_width = true;
457 def->height = 12;
459 def->set_default_value(new ConfigOptionString(""));
460
461 def = this->
add(
"bottom_solid_layers",
coInt);
462
463 def->label =
L_CONTEXT(
"Bottom",
"Layers");
464 def->category =
L(
"Layers and Perimeters");
465 def->tooltip =
L(
"Number of solid layers to generate on bottom surfaces.");
466 def->full_label =
L(
"Bottom solid layers");
467 def->min = 0;
468 def->set_default_value(new ConfigOptionInt(3));
469
470 def = this->
add(
"bottom_solid_min_thickness",
coFloat);
471 def->label =
L_CONTEXT(
"Bottom",
"Layers");
472 def->category =
L(
"Layers and Perimeters");
473 def->tooltip =
L(
"The number of bottom solid layers is increased above bottom_solid_layers if necessary to satisfy "
474 "minimum thickness of bottom shell.");
475 def->full_label =
L(
"Minimum bottom shell thickness");
476 def->sidetext =
L(
"mm");
477 def->min = 0;
479
480 def = this->
add(
"bridge_acceleration",
coFloat);
481 def->label =
L(
"Bridge");
482 def->tooltip =
L(
"This is the acceleration your printer will use for bridges. "
483 "Set zero to disable acceleration control for bridges.");
484 def->sidetext =
L(
"mm/s²");
485 def->min = 0;
488
490 def->label =
L(
"Bridging angle");
491 def->category =
L(
"Infill");
492 def->tooltip =
L(
"Bridging angle override. If left to zero, the bridging angle will be calculated "
493 "automatically. Otherwise the provided angle will be used for all bridges. "
494 "Use 180° for zero angle.");
495 def->sidetext =
L(
"°");
496 def->min = 0;
499
500 def = this->
add(
"bridge_fan_speed",
coInts);
501 def->label =
L(
"Bridges fan speed");
502 def->tooltip =
L(
"This fan speed is enforced during all bridges and overhangs.");
503 def->sidetext =
L(
"%");
504 def->min = 0;
505 def->max = 100;
508
509 def = this->
add(
"bridge_flow_ratio",
coFloat);
510 def->label =
L(
"Bridge flow ratio");
511 def->category =
L(
"Advanced");
512 def->tooltip =
L(
"This factor affects the amount of plastic for bridging. "
513 "You can decrease it slightly to pull the extrudates and prevent sagging, "
514 "although default settings are usually good and you should experiment "
515 "with cooling (use a fan) before tweaking this.");
516 def->min = 0;
517 def->max = 2;
520
522 def->label =
L(
"Bridges");
523 def->category =
L(
"Speed");
524 def->tooltip =
L(
"Speed for printing bridges.");
525 def->sidetext =
L(
"mm/s");
526 def->aliases = { "bridge_feed_rate" };
527 def->min = 0;
530
531 def = this->
add(
"enable_dynamic_overhang_speeds",
coBool);
532 def->label =
L(
"Enable dynamic overhang speeds");
533 def->category =
L(
"Speed");
534 def->tooltip =
L(
"This setting enables dynamic speed control on overhangs.");
537
538
539 auto overhang_speed_setting_description =
L(
"Overhang size is expressed as a percentage of overlap of the extrusion with the previous layer: "
540 "100% would be full overlap (no overhang), while 0% represents full overhang (floating extrusion, bridge). "
541 "Speeds for overhang sizes in between are calculated via linear interpolation. "
542 "If set as percentage, the speed is calculated over the external perimeter speed.");
543
545 def->label =
L(
"speed for 0% overlap (bridge)");
546 def->category =
L(
"Speed");
547 def->tooltip = overhang_speed_setting_description;
548 def->sidetext =
L(
"mm/s or %");
549 def->min = 0;
551 def->set_default_value(new ConfigOptionFloatOrPercent(15, false));
552
554 def->label =
L(
"speed for 25% overlap");
555 def->category =
L(
"Speed");
556 def->tooltip = overhang_speed_setting_description;
557 def->sidetext =
L(
"mm/s or %");
558 def->min = 0;
560 def->set_default_value(new ConfigOptionFloatOrPercent(15, false));
561
563 def->label =
L(
"speed for 50% overlap");
564 def->category =
L(
"Speed");
565 def->tooltip = overhang_speed_setting_description;
566 def->sidetext =
L(
"mm/s or %");
567 def->min = 0;
569 def->set_default_value(new ConfigOptionFloatOrPercent(20, false));
570
572 def->label =
L(
"speed for 75% overlap");
573 def->category =
L(
"Speed");
574 def->tooltip = overhang_speed_setting_description;
575 def->sidetext =
L(
"mm/s or %");
576 def->min = 0;
578 def->set_default_value(new ConfigOptionFloatOrPercent(25, false));
579
580 def = this->
add(
"enable_dynamic_fan_speeds",
coBools);
581 def->label =
L(
"Enable dynamic fan speeds");
582 def->tooltip =
L(
"This setting enables dynamic fan speed control on overhangs.");
585
586
587 auto fan_speed_setting_description =
L(
"Overhang size is expressed as a percentage of overlap of the extrusion with the previous layer: "
588 "100% would be full overlap (no overhang), while 0% represents full overhang (floating extrusion, bridge). "
589 "Fan speeds for overhang sizes in between are calculated via linear interpolation.");
590
591 def = this->
add(
"overhang_fan_speed_0",
coInts);
592 def->label =
L(
"speed for 0% overlap (bridge)");
593 def->tooltip = fan_speed_setting_description;
594 def->sidetext =
L(
"%");
595 def->min = 0;
596 def->max = 100;
599
600 def = this->
add(
"overhang_fan_speed_1",
coInts);
601 def->label =
L(
"speed for 25% overlap");
602 def->tooltip = fan_speed_setting_description;
603 def->sidetext =
L(
"%");
604 def->min = 0;
605 def->max = 100;
608
609 def = this->
add(
"overhang_fan_speed_2",
coInts);
610 def->label =
L(
"speed for 50% overlap");
611 def->tooltip = fan_speed_setting_description;
612 def->sidetext =
L(
"%");
613 def->min = 0;
614 def->max = 100;
617
618 def = this->
add(
"overhang_fan_speed_3",
coInts);
619 def->label =
L(
"speed for 75% overlap");
620 def->tooltip = fan_speed_setting_description;
621 def->sidetext =
L(
"%");
622 def->min = 0;
623 def->max = 100;
626
628 def->label =
L(
"Brim width");
629 def->category =
L(
"Skirt and brim");
630 def->tooltip =
L(
"The horizontal width of the brim that will be printed around each object on the first layer. "
631 "When raft is used, no brim is generated (use raft_first_layer_expansion).");
632 def->sidetext =
L(
"mm");
633 def->min = 0;
634 def->max = 200;
637
639 def->label =
L(
"Brim type");
640 def->category =
L(
"Skirt and brim");
641 def->tooltip =
L(
"The places where the brim will be printed around each object on the first layer.");
643 {
"no_brim",
L(
"No brim") },
644 {
"outer_only",
L(
"Outer brim only") },
645 {
"inner_only",
L(
"Inner brim only") },
646 {
"outer_and_inner",
L(
"Outer and inner brim") }
647 });
649 def->set_default_value(
new ConfigOptionEnum<BrimType>(
btOuterOnly));
650
652 def->label =
L(
"Brim separation gap");
653 def->category =
L(
"Skirt and brim");
654 def->tooltip =
L(
"Offset of brim from the printed object. The offset is applied after the elephant foot compensation.");
655 def->sidetext =
L(
"mm");
656 def->min = 0;
659
661 def->label =
L(
"Colorprint height");
662 def->tooltip =
L(
"Heights at which a filament change is to occur.");
664
666 def->label =
L(
"Compatible printers");
668 def->set_default_value(new ConfigOptionStrings());
670
671 def = this->
add(
"compatible_printers_condition",
coString);
672 def->label =
L(
"Compatible printers condition");
673 def->tooltip =
L(
"A boolean expression using the configuration values of an active printer profile. "
674 "If this expression evaluates to true, this profile is considered compatible "
675 "with the active printer profile.");
677 def->set_default_value(new ConfigOptionString());
679
681 def->label =
L(
"Compatible print profiles");
683 def->set_default_value(new ConfigOptionStrings());
685
686 def = this->
add(
"compatible_prints_condition",
coString);
687 def->label =
L(
"Compatible print profiles condition");
688 def->tooltip =
L(
"A boolean expression using the configuration values of an active print profile. "
689 "If this expression evaluates to true, this profile is considered compatible "
690 "with the active print profile.");
692 def->set_default_value(new ConfigOptionString());
694
695
696
697 def = this->
add(
"compatible_printers_condition_cummulative",
coStrings);
698 def->set_default_value(new ConfigOptionStrings());
700 def = this->
add(
"compatible_prints_condition_cummulative",
coStrings);
701 def->set_default_value(new ConfigOptionStrings());
703
704 def = this->
add(
"complete_objects",
coBool);
705 def->label =
L(
"Complete individual objects");
706 def->tooltip =
L(
"When printing multiple objects or copies, this feature will complete "
707 "each object before moving onto next one (and starting it from its bottom layer). "
708 "This feature is useful to avoid the risk of ruined prints. "
709 "Slic3r should warn and prevent you from extruder collisions, but beware.");
712
714 def->label =
L(
"Enable auto cooling");
715 def->tooltip =
L(
"This flag enables the automatic cooling logic that adjusts print speed "
716 "and fan speed according to layer printing time.");
718
719 def = this->
add(
"cooling_tube_retraction",
coFloat);
720 def->label =
L(
"Cooling tube position");
721 def->tooltip =
L(
"Distance of the center-point of the cooling tube from the extruder tip.");
722 def->sidetext =
L(
"mm");
723 def->min = 0;
726
727 def = this->
add(
"cooling_tube_length",
coFloat);
728 def->label =
L(
"Cooling tube length");
729 def->tooltip =
L(
"Length of the cooling tube to limit space for cooling moves inside it.");
730 def->sidetext =
L(
"mm");
731 def->min = 0;
734
735 def = this->
add(
"default_acceleration",
coFloat);
736 def->label =
L(
"Default");
737 def->tooltip =
L(
"This is the acceleration your printer will be reset to after "
738 "the role-specific acceleration values are used (perimeter/infill). "
739 "Set zero to prevent resetting acceleration at all.");
740 def->sidetext =
L(
"mm/s²");
741 def->min = 0;
744
746 def->label =
L(
"Default filament profile");
747 def->tooltip =
L(
"Default filament profile associated with the current printer profile. "
748 "On selection of the current printer profile, this filament profile will be activated.");
749 def->set_default_value(new ConfigOptionStrings());
751
752 def = this->
add(
"default_print_profile",
coString);
753 def->label =
L(
"Default print profile");
754 def->tooltip =
L(
"Default print profile associated with the current printer profile. "
755 "On selection of the current printer profile, this print profile will be activated.");
756 def->set_default_value(new ConfigOptionString());
758
759 def = this->
add(
"disable_fan_first_layers",
coInts);
760 def->label =
L(
"Disable fan for the first");
761 def->tooltip =
L(
"You can set this to a positive value to disable fan at all "
762 "during the first layers, so that it does not make adhesion worse.");
763 def->sidetext =
L(
"layers");
764 def->min = 0;
765 def->max = 1000;
768
769 def = this->
add(
"dont_support_bridges",
coBool);
770 def->label =
L(
"Don't support bridges");
771 def->category =
L(
"Support material");
772 def->tooltip =
L(
"Experimental option for preventing support material from being generated "
773 "under bridged areas.");
776
777 def = this->
add(
"duplicate_distance",
coFloat);
778 def->label =
L(
"Distance between copies");
779 def->tooltip =
L(
"Distance used for the auto-arrange feature of the plater.");
780 def->sidetext =
L(
"mm");
781 def->aliases = { "multiply_distance" };
782 def->min = 0;
784
786 def->label =
L(
"End G-code");
787 def->tooltip =
L(
"This end procedure is inserted at the end of the output file. "
788 "Note that you can use placeholder variables for all PrusaSlicer settings.");
789 def->multiline = true;
790 def->full_width = true;
791 def->height = 12;
793 def->set_default_value(new ConfigOptionString("M104 S0 ; turn off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n"));
794
796 def->label =
L(
"End G-code");
797 def->tooltip =
L(
"This end procedure is inserted at the end of the output file, before the printer end gcode (and "
798 "before any toolchange from this filament in case of multimaterial printers). "
799 "Note that you can use placeholder variables for all PrusaSlicer settings. "
800 "If you have multiple extruders, the gcode is processed in extruder order.");
801 def->multiline = true;
802 def->full_width = true;
803 def->height = 120;
805 def->set_default_value(new ConfigOptionStrings { "; Filament-specific end gcode \n;END gcode for filament\n" });
806
807 auto def_top_fill_pattern = def = this->
add(
"top_fill_pattern",
coEnum);
808 def->label =
L(
"Top fill pattern");
809 def->category =
L(
"Infill");
810 def->tooltip =
L(
"Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells.");
811 def->cli = "top-fill-pattern|external-fill-pattern|solid-fill-pattern";
813 {
"rectilinear",
L(
"Rectilinear") },
814 {
"monotonic",
L(
"Monotonic") },
815 {
"monotoniclines",
L(
"Monotonic Lines") },
816 {
"alignedrectilinear",
L(
"Aligned Rectilinear") },
817 {
"concentric",
L(
"Concentric") },
818 {
"hilbertcurve",
L(
"Hilbert Curve") },
819 {
"archimedeanchords",
L(
"Archimedean Chords") },
820 {
"octagramspiral",
L(
"Octagram Spiral") }
821 });
822
823
824 def->aliases = { "solid_fill_pattern", "external_fill_pattern" };
825 def->set_default_value(
new ConfigOptionEnum<InfillPattern>(
ipMonotonic));
826
827 def = this->
add(
"bottom_fill_pattern",
coEnum);
828 def->label =
L(
"Bottom fill pattern");
829 def->category =
L(
"Infill");
830 def->tooltip =
L(
"Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells.");
831 def->cli = "bottom-fill-pattern|external-fill-pattern|solid-fill-pattern";
833 def->aliases = def_top_fill_pattern->aliases;
834 def->set_default_value(
new ConfigOptionEnum<InfillPattern>(
ipMonotonic));
835
837 def->label =
L(
"External perimeters");
838 def->category =
L(
"Extrusion Width");
839 def->tooltip =
L(
"Set this to a non-zero value to set a manual extrusion width for external perimeters. "
840 "If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. "
841 "If expressed as percentage (for example 200%), it will be computed over layer height.");
842 def->sidetext =
L(
"mm or %");
843 def->min = 0;
844 def->max_literal = 50;
846 def->set_default_value(new ConfigOptionFloatOrPercent(0, false));
847
849 def->label =
L(
"External perimeters");
850 def->category =
L(
"Speed");
851 def->tooltip =
L(
"This separate setting will affect the speed of external perimeters (the visible ones). "
852 "If expressed as percentage (for example: 80%) it will be calculated "
853 "on the perimeters speed setting above. Set to zero for auto.");
854 def->sidetext =
L(
"mm/s or %");
855 def->ratio_over = "perimeter_speed";
856 def->min = 0;
858 def->set_default_value(new ConfigOptionFloatOrPercent(50, true));
859
860 def = this->
add(
"external_perimeters_first",
coBool);
861 def->label =
L(
"External perimeters first");
862 def->category =
L(
"Layers and Perimeters");
863 def->tooltip =
L(
"Print contour perimeters from the outermost one to the innermost one "
864 "instead of the default inverse order.");
867
868 def = this->
add(
"extra_perimeters",
coBool);
869 def->label =
L(
"Extra perimeters if needed");
870 def->category =
L(
"Layers and Perimeters");
871 def->tooltip =
L(
"Add more perimeters when needed for avoiding gaps in sloping walls. "
872 "Slic3r keeps adding perimeters, until more than 70% of the loop immediately above "
873 "is supported.");
876
877 def = this->
add(
"extra_perimeters_on_overhangs",
coBool);
878 def->label =
L(
"Extra perimeters on overhangs (Experimental)");
879 def->category =
L(
"Layers and Perimeters");
880 def->tooltip =
L(
"Detect overhang areas where bridges cannot be anchored, and fill them with "
881 "extra perimeter paths. These paths are anchored to the nearby non-overhang area when possible.");
884
886 def->label =
L(
"Extruder");
887 def->category =
L(
"Extruders");
888 def->tooltip =
L(
"The extruder to use (unless more specific extruder settings are specified). "
889 "This value overrides perimeter and infill extruders, but not the support extruders.");
890 def->min = 0;
892 {
L(
"default"),
"1",
"2",
"3",
"4",
"5" });
893
894 def = this->
add(
"extruder_clearance_height",
coFloat);
895 def->label =
L(
"Height");
896 def->tooltip =
L(
"Set this to the vertical distance between your nozzle tip and (usually) the X carriage rods. "
897 "In other words, this is the height of the clearance cylinder around your extruder, "
898 "and it represents the maximum depth the extruder can peek before colliding with "
899 "other printed objects.");
900 def->sidetext =
L(
"mm");
901 def->min = 0;
904
905 def = this->
add(
"extruder_clearance_radius",
coFloat);
906 def->label =
L(
"Radius");
907 def->tooltip =
L(
"Set this to the clearance radius around your extruder. "
908 "If the extruder is not centered, choose the largest value for safety. "
909 "This setting is used to check for collisions and to display the graphical preview "
910 "in the plater.");
911 def->sidetext =
L(
"mm");
912 def->min = 0;
915
917 def->label =
L(
"Extruder Color");
918 def->tooltip =
L(
"This is only used in the Slic3r interface as a visual help.");
920
921 def->set_default_value(new ConfigOptionStrings { "" });
922
924 def->label =
L(
"Extruder offset");
925 def->tooltip =
L(
"If your firmware doesn't handle the extruder displacement you need the G-code "
926 "to take it into account. This option lets you specify the displacement of each extruder "
927 "with respect to the first one. It expects positive coordinates (they will be subtracted "
928 "from the XY coordinate).");
929 def->sidetext =
L(
"mm");
931 def->set_default_value(
new ConfigOptionPoints {
Vec2d(0,0) });
932
934 def->label =
L(
"Extrusion axis");
935 def->tooltip =
L(
"Use this option to set the axis letter associated to your printer's extruder "
936 "(usually E but some printers use A).");
937 def->set_default_value(new ConfigOptionString("E"));
938
940 def->label =
L(
"Extrusion multiplier");
941 def->tooltip =
L(
"This factor changes the amount of flow proportionally. You may need to tweak "
942 "this setting to get nice surface finish and correct single wall widths. "
943 "Usual values are between 0.9 and 1.1. If you think you need to change this more, "
944 "check filament diameter and your firmware E steps.");
945 def->max = 2;
948
950 def->label =
L(
"Default extrusion width");
951 def->category =
L(
"Extrusion Width");
952 def->tooltip =
L(
"Set this to a non-zero value to allow a manual extrusion width. "
953 "If left to zero, Slic3r derives extrusion widths from the nozzle diameter "
954 "(see the tooltips for perimeter extrusion width, infill extrusion width etc). "
955 "If expressed as percentage (for example: 230%), it will be computed over layer height.");
956 def->sidetext =
L(
"mm or %");
957 def->min = 0;
958 def->max = 1000;
959 def->max_literal = 50;
961 def->set_default_value(new ConfigOptionFloatOrPercent(0, false));
962
964 def->label =
L(
"Keep fan always on");
965 def->tooltip =
L(
"If this is enabled, fan will never be disabled and will be kept running at least "
966 "at its minimum speed. Useful for PLA, harmful for ABS.");
968
969 def = this->
add(
"fan_below_layer_time",
coInts);
970 def->label =
L(
"Enable fan if layer print time is below");
971 def->tooltip =
L(
"If layer print time is estimated below this number of seconds, fan will be enabled "
972 "and its speed will be calculated by interpolating the minimum and maximum speeds.");
973 def->sidetext =
L(
"approximate seconds");
974 def->min = 0;
975 def->max = 1000;
978
980 def->label =
L(
"Color");
981 def->tooltip =
L(
"This is only used in the Slic3r interface as a visual help.");
983 def->set_default_value(new ConfigOptionStrings { "#29B2B2" });
984
986 def->label =
L(
"Filament notes");
987 def->tooltip =
L(
"You can put your notes regarding the filament here.");
988 def->multiline = true;
989 def->full_width = true;
990 def->height = 13;
992 def->set_default_value(new ConfigOptionStrings { "" });
993
994 def = this->
add(
"filament_max_volumetric_speed",
coFloats);
995 def->label =
L(
"Max volumetric speed");
996 def->tooltip =
L(
"Maximum volumetric speed allowed for this filament. Limits the maximum volumetric "
997 "speed of a print to the minimum of print and filament volumetric speed. "
998 "Set to zero for no limit.");
999 def->sidetext =
L(
"mm³/s");
1000 def->min = 0;
1003
1004 def = this->
add(
"filament_loading_speed",
coFloats);
1005 def->label =
L(
"Loading speed");
1006 def->tooltip =
L(
"Speed used for loading the filament on the wipe tower.");
1007 def->sidetext =
L(
"mm/s");
1008 def->min = 0;
1011
1012 def = this->
add(
"filament_loading_speed_start",
coFloats);
1013 def->label =
L(
"Loading speed at the start");
1014 def->tooltip =
L(
"Speed used at the very beginning of loading phase.");
1015 def->sidetext =
L(
"mm/s");
1016 def->min = 0;
1019
1020 def = this->
add(
"filament_unloading_speed",
coFloats);
1021 def->label =
L(
"Unloading speed");
1022 def->tooltip =
L(
"Speed used for unloading the filament on the wipe tower (does not affect "
1023 " initial part of unloading just after ramming).");
1024 def->sidetext =
L(
"mm/s");
1025 def->min = 0;
1028
1029 def = this->
add(
"filament_unloading_speed_start",
coFloats);
1030 def->label =
L(
"Unloading speed at the start");
1031 def->tooltip =
L(
"Speed used for unloading the tip of the filament immediately after ramming.");
1032 def->sidetext =
L(
"mm/s");
1033 def->min = 0;
1036
1037 def = this->
add(
"filament_toolchange_delay",
coFloats);
1038 def->label =
L(
"Delay after unloading");
1039 def->tooltip =
L(
"Time to wait after the filament is unloaded. "
1040 "May help to get reliable toolchanges with flexible materials "
1041 "that may need more time to shrink to original dimensions.");
1042 def->sidetext =
L(
"s");
1043 def->min = 0;
1046
1047 def = this->
add(
"filament_cooling_moves",
coInts);
1048 def->label =
L(
"Number of cooling moves");
1049 def->tooltip =
L(
"Filament is cooled by being moved back and forth in the "
1050 "cooling tubes. Specify desired number of these moves.");
1051 def->max = 0;
1052 def->max = 20;
1055
1056 def = this->
add(
"filament_cooling_initial_speed",
coFloats);
1057 def->label =
L(
"Speed of the first cooling move");
1058 def->tooltip =
L(
"Cooling moves are gradually accelerating beginning at this speed.");
1059 def->sidetext =
L(
"mm/s");
1060 def->min = 0;
1063
1064 def = this->
add(
"filament_minimal_purge_on_wipe_tower",
coFloats);
1065 def->label =
L(
"Minimal purge on wipe tower");
1066 def->tooltip =
L(
"After a tool change, the exact position of the newly loaded filament inside "
1067 "the nozzle may not be known, and the filament pressure is likely not yet stable. "
1068 "Before purging the print head into an infill or a sacrificial object, Slic3r will always prime "
1069 "this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably.");
1070 def->sidetext =
L(
"mm³");
1071 def->min = 0;
1074
1075 def = this->
add(
"filament_cooling_final_speed",
coFloats);
1076 def->label =
L(
"Speed of the last cooling move");
1077 def->tooltip =
L(
"Cooling moves are gradually accelerating towards this speed.");
1078 def->sidetext =
L(
"mm/s");
1079 def->min = 0;
1082
1084 def->label =
L(
"Filament load time");
1085 def->tooltip =
L(
"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator.");
1086 def->sidetext =
L(
"s");
1087 def->min = 0;
1090
1091 def = this->
add(
"filament_ramming_parameters",
coStrings);
1092 def->label =
L(
"Ramming parameters");
1093 def->tooltip =
L(
"This string is edited by RammingDialog and contains ramming specific parameters.");
1095 def->set_default_value(new ConfigOptionStrings { "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0|"
1096 " 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" });
1097
1098 def = this->
add(
"filament_unload_time",
coFloats);
1099 def->label =
L(
"Filament unload time");
1100 def->tooltip =
L(
"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator.");
1101 def->sidetext =
L(
"s");
1102 def->min = 0;
1105
1107 def->label =
L(
"Diameter");
1108 def->tooltip =
L(
"Enter your filament diameter here. Good precision is required, so use a caliper "
1109 "and do multiple measurements along the filament, then compute the average.");
1110 def->sidetext =
L(
"mm");
1111 def->min = 0;
1113
1115 def->label =
L(
"Density");
1116 def->tooltip =
L(
"Enter your filament density here. This is only for statistical information. "
1117 "A decent way is to weigh a known length of filament and compute the ratio "
1118 "of the length to volume. Better is to calculate the volume directly through displacement.");
1119 def->sidetext =
L(
"g/cm³");
1120 def->min = 0;
1122
1124 def->label =
L(
"Filament type");
1125 def->tooltip =
L(
"The filament material type for use in custom G-codes.");
1126 def->gui_flags = "show_value";
1128 "PLA",
1129 "PET",
1130 "ABS",
1131 "ASA",
1132 "FLEX",
1133 "HIPS",
1134 "EDGE",
1135 "NGEN",
1136 "PA",
1137 "NYLON",
1138 "PVA",
1139 "PC",
1140 "PP",
1141 "PEI",
1142 "PEEK",
1143 "PEKK",
1144 "POM",
1145 "PSU",
1146 "PVDF",
1147 "SCAFF"
1148 });
1150 def->set_default_value(new ConfigOptionStrings { "PLA" });
1151
1152 def = this->
add(
"filament_soluble",
coBools);
1153 def->label =
L(
"Soluble material");
1154 def->tooltip =
L(
"Soluble material is most likely used for a soluble support.");
1157
1159 def->label =
L(
"Cost");
1160 def->tooltip =
L(
"Enter your filament cost per kg here. This is only for statistical information.");
1161 def->sidetext =
L(
"money/kg");
1162 def->min = 0;
1164
1165 def = this->
add(
"filament_spool_weight",
coFloats);
1166 def->label =
L(
"Spool weight");
1167 def->tooltip =
L(
"Enter weight of the empty filament spool. "
1168 "One may weigh a partially consumed filament spool before printing and one may compare the measured weight "
1169 "with the calculated weight of the filament with the spool to find out whether the amount "
1170 "of filament on the spool is sufficient to finish the print.");
1171 def->sidetext =
L(
"g");
1172 def->min = 0;
1174
1176 def->set_default_value(new ConfigOptionStrings { "" });
1178
1180 def->set_default_value(
new ConfigOptionString(
L(
"(Unknown)")));
1182
1184 def->label =
L(
"Fill angle");
1185 def->category =
L(
"Infill");
1186 def->tooltip =
L(
"Default base angle for infill orientation. Cross-hatching will be applied to this. "
1187 "Bridges will be infilled using the best direction Slic3r can detect, so this setting "
1188 "does not affect them.");
1189 def->sidetext =
L(
"°");
1190 def->min = 0;
1191 def->max = 360;
1194
1196 def->gui_flags = "show_value";
1197 def->label =
L(
"Fill density");
1198 def->category =
L(
"Infill");
1199 def->tooltip =
L(
"Density of internal infill, expressed in the range 0% - 100%.");
1200 def->sidetext =
L(
"%");
1201 def->min = 0;
1202 def->max = 100;
1204 { "0", "0%" },
1205 { "5", "5%" },
1206 { "10", "10%" },
1207 { "15", "15%" },
1208 { "20", "20%" },
1209 { "25", "25%" },
1210 { "30", "30%" },
1211 { "40", "40%" },
1212 { "50", "50%" },
1213 { "60", "60%" },
1214 { "70", "70%" },
1215 { "80", "80%" },
1216 { "90", "90%" },
1217 { "100", "100%" }
1218 });
1219 def->set_default_value(new ConfigOptionPercent(20));
1220
1221 def = this->
add(
"fill_pattern",
coEnum);
1222 def->label =
L(
"Fill pattern");
1223 def->category =
L(
"Infill");
1224 def->tooltip =
L(
"Fill pattern for general low-density infill.");
1226 {
"rectilinear",
L(
"Rectilinear") },
1227 {
"alignedrectilinear",
L(
"Aligned Rectilinear") },
1228 {
"grid",
L(
"Grid") },
1229 {
"triangles",
L(
"Triangles")},
1230 {
"stars",
L(
"Stars")},
1231 {
"cubic",
L(
"Cubic")},
1232 {
"line",
L(
"Line")},
1233 {
"concentric",
L(
"Concentric")},
1234 {
"honeycomb",
L(
"Honeycomb")},
1235 {
"3dhoneycomb",
L(
"3D Honeycomb")},
1236 {
"gyroid",
L(
"Gyroid")},
1237 {
"hilbertcurve",
L(
"Hilbert Curve")},
1238 {
"archimedeanchords",
L(
"Archimedean Chords")},
1239 {
"octagramspiral",
L(
"Octagram Spiral")},
1240 {
"adaptivecubic",
L(
"Adaptive Cubic")},
1241 {
"supportcubic",
L(
"Support Cubic")},
1242 {
"lightning",
L(
"Lightning")}
1243 });
1244 def->set_default_value(
new ConfigOptionEnum<InfillPattern>(
ipStars));
1245
1246 def = this->
add(
"first_layer_acceleration",
coFloat);
1247 def->label =
L(
"First layer");
1248 def->tooltip =
L(
"This is the acceleration your printer will use for first layer. Set zero "
1249 "to disable acceleration control for first layer.");
1250 def->sidetext =
L(
"mm/s²");
1251 def->min = 0;
1254
1255 def = this->
add(
"first_layer_acceleration_over_raft",
coFloat);
1256 def->label =
L(
"First object layer over raft interface");
1257 def->tooltip =
L(
"This is the acceleration your printer will use for first layer of object above raft interface. Set zero "
1258 "to disable acceleration control for first layer of object above raft interface.");
1259 def->sidetext =
L(
"mm/s²");
1260 def->min = 0;
1263
1264 def = this->
add(
"first_layer_bed_temperature",
coInts);
1265 def->label =
L(
"First layer");
1266 def->full_label =
L(
"First layer bed temperature");
1267 def->tooltip =
L(
"Heated build plate temperature for the first layer. Set this to zero to disable "
1268 "bed temperature control commands in the output.");
1269 def->sidetext =
L(
"°C");
1270 def->max = 0;
1271 def->max = 300;
1273
1275 def->label =
L(
"First layer");
1276 def->category =
L(
"Extrusion Width");
1277 def->tooltip =
L(
"Set this to a non-zero value to set a manual extrusion width for first layer. "
1278 "You can use this to force fatter extrudates for better adhesion. If expressed "
1279 "as percentage (for example 120%) it will be computed over first layer height. "
1280 "If set to zero, it will use the default extrusion width.");
1281 def->sidetext =
L(
"mm or %");
1282 def->ratio_over = "first_layer_height";
1283 def->min = 0;
1284 def->max_literal = 50;
1286 def->set_default_value(new ConfigOptionFloatOrPercent(200, true));
1287
1289 def->label =
L(
"First layer height");
1290 def->category =
L(
"Layers and Perimeters");
1291 def->tooltip =
L(
"When printing with very low layer heights, you might still want to print a thicker "
1292 "bottom layer to improve adhesion and tolerance for non perfect build plates.");
1293 def->sidetext =
L(
"mm");
1294 def->min = 0;
1295 def->ratio_over = "layer_height";
1296 def->set_default_value(new ConfigOptionFloatOrPercent(0.35, false));
1297
1299 def->label =
L(
"First layer speed");
1300 def->tooltip =
L(
"If expressed as absolute value in mm/s, this speed will be applied to all the print moves "
1301 "of the first layer, regardless of their type. If expressed as a percentage "
1302 "(for example: 40%) it will scale the default speeds.");
1303 def->sidetext =
L(
"mm/s or %");
1304 def->min = 0;
1305 def->max_literal = 20;
1307 def->set_default_value(new ConfigOptionFloatOrPercent(30, false));
1308
1310 def->label =
L(
"Speed of object first layer over raft interface");
1311 def->tooltip =
L(
"If expressed as absolute value in mm/s, this speed will be applied to all the print moves "
1312 "of the first object layer above raft interface, regardless of their type. If expressed as a percentage "
1313 "(for example: 40%) it will scale the default speeds.");
1314 def->sidetext =
L(
"mm/s or %");
1315 def->min = 0;
1317 def->set_default_value(new ConfigOptionFloatOrPercent(30, false));
1318
1319 def = this->
add(
"first_layer_temperature",
coInts);
1320 def->label =
L(
"First layer");
1321 def->full_label =
L(
"First layer nozzle temperature");
1322 def->tooltip =
L(
"Nozzle temperature for the first layer. If you want to control temperature manually "
1323 "during print, set this to zero to disable temperature control commands in the output G-code.");
1324 def->sidetext =
L(
"°C");
1325 def->min = 0;
1328
1329 def = this->
add(
"full_fan_speed_layer",
coInts);
1330 def->label =
L(
"Full fan speed at layer");
1331 def->tooltip =
L(
"Fan speed will be ramped up linearly from zero at layer \"disable_fan_first_layers\" "
1332 "to maximum at layer \"full_fan_speed_layer\". "
1333 "\"full_fan_speed_layer\" will be ignored if lower than \"disable_fan_first_layers\", in which case "
1334 "the fan will be running at maximum allowed speed at layer \"disable_fan_first_layers\" + 1.");
1335 def->min = 0;
1336 def->max = 1000;
1339
1341 def->label =
L(
"Fuzzy Skin");
1342 def->category =
L(
"Fuzzy Skin");
1343 def->tooltip =
L(
"Fuzzy skin type.");
1345 {
"none",
L(
"None") },
1346 {
"external",
L(
"Outside walls") },
1347 {
"all",
L(
"All walls") }
1348 });
1351
1352 def = this->
add(
"fuzzy_skin_thickness",
coFloat);
1353 def->label =
L(
"Fuzzy skin thickness");
1354 def->category =
L(
"Fuzzy Skin");
1355 def->tooltip =
L(
"The maximum distance that each skin point can be offset (both ways), "
1356 "measured perpendicular to the perimeter wall.");
1357 def->sidetext =
L(
"mm");
1358 def->min = 0;
1361
1362 def = this->
add(
"fuzzy_skin_point_dist",
coFloat);
1363 def->label =
L(
"Fuzzy skin point distance");
1364 def->category =
L(
"Fuzzy Skin");
1365 def->tooltip =
L(
"Perimeters will be split into multiple segments by inserting Fuzzy skin points. "
1366 "Lowering the Fuzzy skin point distance will increase the number of randomly offset points on the perimeter wall.");
1367 def->sidetext =
L(
"mm");
1368 def->min = 0;
1371
1372 def = this->
add(
"gap_fill_enabled",
coBool);
1373 def->label =
L(
"Fill gaps");
1374 def->category =
L(
"Layers and Perimeters");
1375 def->tooltip =
L(
"Enables filling of gaps between perimeters and between the inner most perimeters and infill.");
1378
1380 def->label =
L(
"Gap fill");
1381 def->category =
L(
"Speed");
1382 def->tooltip =
L(
"Speed for filling small gaps using short zigzag moves. Keep this reasonably low "
1383 "to avoid too much shaking and resonance issues. Set zero to disable gaps filling.");
1384 def->sidetext =
L(
"mm/s");
1385 def->min = 0;
1388
1389 def = this->
add(
"gcode_comments",
coBool);
1390 def->label =
L(
"Verbose G-code");
1391 def->tooltip =
L(
"Enable this to get a commented G-code file, with each line explained by a descriptive text. "
1392 "If you print from SD card, the additional weight of the file could make your firmware "
1393 "slow down.");
1396
1397 def = this->
add(
"gcode_flavor",
coEnum);
1398 def->label =
L(
"G-code flavor");
1399 def->tooltip =
L(
"Some G/M-code commands, including temperature control and others, are not universal. "
1400 "Set this option to your printer's firmware to get a compatible output. "
1401 "The \"No extrusion\" flavor prevents PrusaSlicer from exporting any extrusion value at all.");
1403 { "reprap", "RepRap/Sprinter" },
1404 { "reprapfirmware", "RepRapFirmware" },
1405 { "repetier", "Repetier" },
1406 { "teacup", "Teacup" },
1407 { "makerware", "MakerWare (MakerBot)" },
1408 { "marlin", "Marlin (legacy)" },
1409 { "marlin2", "Marlin 2" },
1410 { "klipper", "Klipper" },
1411 { "sailfish", "Sailfish (MakerBot)" },
1412 { "mach3", "Mach3/LinuxCNC" },
1413 { "machinekit", "Machinekit" },
1414 { "smoothie", "Smoothie" },
1415 {
"no-extrusion",
L(
"No extrusion") }
1416 });
1419
1420 def = this->
add(
"gcode_label_objects",
coBool);
1421 def->label =
L(
"Label objects");
1422 def->tooltip =
L(
"Enable this to add comments into the G-Code labeling print moves with what object they belong to,"
1423 " which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with "
1424 "Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill.");
1427
1429 def->label =
L(
"G-code substitutions");
1430 def->tooltip =
L(
"Find / replace patterns in G-code lines and substitute them.");
1432 def->set_default_value(new ConfigOptionStrings());
1433
1434 def = this->
add(
"high_current_on_filament_swap",
coBool);
1435 def->label =
L(
"High extruder current on filament swap");
1436 def->tooltip =
L(
"It may be beneficial to increase the extruder motor current during the filament exchange"
1437 " sequence to allow for rapid ramming feed rates and to overcome resistance when loading"
1438 " a filament with an ugly shaped tip.");
1441
1442 def = this->
add(
"infill_acceleration",
coFloat);
1443 def->label =
L(
"Infill");
1444 def->tooltip =
L(
"This is the acceleration your printer will use for infill. Set zero to disable "
1445 "acceleration control for infill.");
1446 def->sidetext =
L(
"mm/s²");
1447 def->min = 0;
1450
1451 def = this->
add(
"solid_infill_acceleration",
coFloat);
1452 def->label =
L(
"Solid infill");
1453 def->tooltip =
L(
"This is the acceleration your printer will use for solid infill. Set zero to use "
1454 "the value for infill.");
1455 def->sidetext =
L(
"mm/s²");
1456 def->min = 0;
1459
1460 def = this->
add(
"top_solid_infill_acceleration",
coFloat);
1461 def->label =
L(
"Top solid infill");
1462 def->tooltip =
L(
"This is the acceleration your printer will use for top solid infill. Set zero to use "
1463 "the value for solid infill.");
1464 def->sidetext =
L(
"mm/s²");
1465 def->min = 0;
1468
1469 def = this->
add(
"travel_acceleration",
coFloat);
1470 def->label =
L(
"Travel");
1471 def->tooltip =
L(
"This is the acceleration your printer will use for travel moves. Set zero to disable "
1472 "acceleration control for travel.");
1473 def->sidetext =
L(
"mm/s²");
1474 def->min = 0;
1477
1478 def = this->
add(
"infill_every_layers",
coInt);
1479 def->label =
L(
"Combine infill every");
1480 def->category =
L(
"Infill");
1481 def->tooltip =
L(
"This feature allows to combine infill and speed up your print by extruding thicker "
1482 "infill layers while preserving thin perimeters, thus accuracy.");
1483 def->sidetext =
L(
"layers");
1484 def->full_label =
L(
"Combine infill every n layers");
1485 def->min = 1;
1487 def->set_default_value(new ConfigOptionInt(1));
1488
1490 def->label =
L(
"Length of the infill anchor");
1491 def->category =
L(
"Advanced");
1492 def->tooltip =
L(
"Connect an infill line to an internal perimeter with a short segment of an additional perimeter. "
1493 "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. "
1494 "PrusaSlicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment "
1495 "shorter than infill_anchor_max is found, the infill line is connected to a perimeter segment at just one side "
1496 "and the length of the perimeter segment taken is limited to this parameter, but no longer than anchor_length_max. "
1497 "Set this parameter to zero to disable anchoring perimeters connected to a single infill line.");
1498 def->sidetext =
L(
"mm or %");
1499 def->ratio_over = "infill_extrusion_width";
1500 def->max_literal = 1000;
1502 {
"0",
L(
"0 (no open anchors)") },
1506 {
"10",
L(
"10 mm") },
1507 {
"1000",
L(
"1000 (unlimited)") }
1508 });
1510 def->set_default_value(new ConfigOptionFloatOrPercent(600, true));
1511
1513 def->label =
L(
"Maximum length of the infill anchor");
1514 def->category = def_infill_anchor_min->category;
1515 def->tooltip =
L(
"Connect an infill line to an internal perimeter with a short segment of an additional perimeter. "
1516 "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. "
1517 "PrusaSlicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment "
1518 "shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side "
1519 "and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. "
1520 "Set this parameter to zero to disable anchoring.");
1521 def->sidetext = def_infill_anchor_min->sidetext;
1522 def->ratio_over = def_infill_anchor_min->ratio_over;
1523 def->max_literal = def_infill_anchor_min->max_literal;
1525 {
"0",
L(
"0 (not anchored)") },
1529 {
"10",
L(
"10 mm") },
1530 {
"1000",
L(
"1000 (unlimited)") }
1531 });
1532 def->mode = def_infill_anchor_min->mode;
1533 def->set_default_value(new ConfigOptionFloatOrPercent(50, false));
1534
1535 def = this->
add(
"infill_extruder",
coInt);
1536 def->label =
L(
"Infill extruder");
1537 def->category =
L(
"Extruders");
1538 def->tooltip =
L(
"The extruder to use when printing infill.");
1539 def->min = 1;
1541 def->set_default_value(new ConfigOptionInt(1));
1542
1544 def->label =
L(
"Infill");
1545 def->category =
L(
"Extrusion Width");
1546 def->tooltip =
L(
"Set this to a non-zero value to set a manual extrusion width for infill. "
1547 "If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. "
1548 "You may want to use fatter extrudates to speed up the infill and make your parts stronger. "
1549 "If expressed as percentage (for example 90%) it will be computed over layer height.");
1550 def->sidetext =
L(
"mm or %");
1551 def->min = 0;
1552 def->max_literal = 50;
1554 def->set_default_value(new ConfigOptionFloatOrPercent(0, false));
1555
1556 def = this->
add(
"infill_first",
coBool);
1557 def->label =
L(
"Infill before perimeters");
1558 def->tooltip =
L(
"This option will switch the print order of perimeters and infill, making the latter first.");
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1572 def->label =
L(
"Infill/perimeters overlap");
1573 def->category =
L(
"Advanced");
1574 def->tooltip =
L(
"This setting applies an additional overlap between infill and perimeters for better bonding. "
1575 "Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed "
1576 "as percentage (example: 15%) it is calculated over perimeter extrusion width.");
1577 def->sidetext =
L(
"mm or %");
1578 def->ratio_over = "perimeter_extrusion_width";
1580 def->set_default_value(new ConfigOptionFloatOrPercent(25, true));
1581
1583 def->label =
L(
"Infill");
1584 def->category =
L(
"Speed");
1585 def->tooltip =
L(
"Speed for printing the internal fill. Set to zero for auto.");
1586 def->sidetext =
L(
"mm/s");
1587 def->aliases = { "print_feed_rate", "infill_feed_rate" };
1588 def->min = 0;
1591
1593 def->label =
L(
"Inherits profile");
1594 def->tooltip =
L(
"Name of the profile, from which this profile inherits.");
1595 def->full_width = true;
1596 def->height = 5;
1597 def->set_default_value(new ConfigOptionString());
1599
1600
1601
1603 def->set_default_value(new ConfigOptionStrings());
1605
1606 def = this->
add(
"interface_shells",
coBool);
1607 def->label =
L(
"Interface shells");
1608 def->tooltip =
L(
"Force the generation of solid shells between adjacent materials/volumes. "
1609 "Useful for multi-extruder prints with translucent materials or manual soluble "
1610 "support material.");
1611 def->category =
L(
"Layers and Perimeters");
1614
1615 def = this->
add(
"mmu_segmented_region_max_width",
coFloat);
1616 def->label =
L(
"Maximum width of a segmented region");
1617 def->tooltip =
L(
"Maximum width of a segmented region. Zero disables this feature.");
1618 def->sidetext =
L(
"mm (zero to disable)");
1619 def->min = 0;
1620 def->category =
L(
"Advanced");
1623
1625 def->label =
L(
"Enable ironing");
1626 def->tooltip =
L(
"Enable ironing of the top layers with the hot print head for smooth surface");
1627 def->category =
L(
"Ironing");
1630
1631 def = this->
add(
"ironing_type",
coEnum);
1632 def->label =
L(
"Ironing Type");
1633 def->category =
L(
"Ironing");
1634 def->tooltip =
L(
"Ironing Type");
1636 {
"top",
L(
"All top surfaces") },
1637 {
"topmost",
L(
"Topmost surface only") },
1638 {
"solid",
L(
"All solid surfaces") }
1639 });
1642
1644 def->label =
L(
"Flow rate");
1645 def->category =
L(
"Ironing");
1646 def->tooltip =
L(
"Percent of a flow rate relative to object's normal layer height.");
1647 def->sidetext =
L(
"%");
1648 def->ratio_over = "layer_height";
1649 def->min = 0;
1651 def->set_default_value(new ConfigOptionPercent(15));
1652
1654 def->label =
L(
"Spacing between ironing passes");
1655 def->category =
L(
"Ironing");
1656 def->tooltip =
L(
"Distance between ironing lines");
1657 def->sidetext =
L(
"mm");
1658 def->min = 0;
1661
1663 def->label =
L(
"Ironing");
1664 def->category =
L(
"Speed");
1665 def->tooltip =
L(
"Ironing");
1666 def->sidetext =
L(
"mm/s");
1667 def->min = 0;
1670
1672 def->label =
L(
"After layer change G-code");
1673 def->tooltip =
L(
"This custom code is inserted at every layer change, right after the Z move "
1674 "and before the extruder moves to the first layer point. Note that you can use "
1675 "placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z].");
1676 def->cli = "after-layer-gcode|layer-gcode";
1677 def->multiline = true;
1678 def->full_width = true;
1679 def->height = 5;
1681 def->set_default_value(new ConfigOptionString(""));
1682
1683 def = this->
add(
"remaining_times",
coBool);
1684 def->label =
L(
"Supports remaining times");
1685 def->tooltip =
L(
"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute"
1686 " intervals into the G-code to let the firmware show accurate remaining time."
1687 " As of now only the Prusa i3 MK3 firmware recognizes M73."
1688 " Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode.");
1691
1693 def->label =
L(
"Supports stealth mode");
1694 def->tooltip =
L(
"The firmware supports stealth mode");
1697
1698 def = this->
add(
"machine_limits_usage",
coEnum);
1699 def->label =
L(
"How to apply limits");
1700 def->full_label =
L(
"Purpose of Machine Limits");
1701 def->category =
L(
"Machine limits");
1702 def->tooltip =
L(
"How to apply the Machine Limits");
1704 {
"emit_to_gcode",
L(
"Emit to G-code") },
1705 {
"time_estimate_only",
L(
"Use for time estimate") },
1706 {
"ignore",
L(
"Ignore") }
1707 });
1710
1711 {
1712 struct AxisDefault {
1713 std::string name;
1714 std::vector<double> max_feedrate;
1715 std::vector<double> max_acceleration;
1716 std::vector<double> max_jerk;
1717 };
1718 std::vector<AxisDefault> axes {
1719
1720 { "x", { 500., 200. }, { 9000., 1000. }, { 10. , 10. } },
1721 { "y", { 500., 200. }, { 9000., 1000. }, { 10. , 10. } },
1722 { "z", { 12., 12. }, { 500., 200. }, { 0.2, 0.4 } },
1723 { "e", { 120., 120. }, { 10000., 5000. }, { 2.5, 2.5 } }
1724 };
1725 for (const AxisDefault &axis : axes) {
1726 std::string axis_upper = boost::to_upper_copy<std::string>(axis.name);
1727
1728 def = this->
add(
"machine_max_feedrate_" + axis.name,
coFloats);
1729 def->full_label = (boost::format("Maximum feedrate %1%") % axis_upper).str();
1730 (
void)
L(
"Maximum feedrate X");
1731 (
void)
L(
"Maximum feedrate Y");
1732 (
void)
L(
"Maximum feedrate Z");
1733 (
void)
L(
"Maximum feedrate E");
1734 def->category =
L(
"Machine limits");
1735 def->tooltip = (boost::format("Maximum feedrate of the %1% axis") % axis_upper).str();
1736 (
void)
L(
"Maximum feedrate of the X axis");
1737 (
void)
L(
"Maximum feedrate of the Y axis");
1738 (
void)
L(
"Maximum feedrate of the Z axis");
1739 (
void)
L(
"Maximum feedrate of the E axis");
1740 def->sidetext =
L(
"mm/s");
1741 def->min = 0;
1744
1745 def = this->
add(
"machine_max_acceleration_" + axis.name,
coFloats);
1746 def->full_label = (boost::format("Maximum acceleration %1%") % axis_upper).str();
1747 (
void)
L(
"Maximum acceleration X");
1748 (
void)
L(
"Maximum acceleration Y");
1749 (
void)
L(
"Maximum acceleration Z");
1750 (
void)
L(
"Maximum acceleration E");
1751 def->category =
L(
"Machine limits");
1752 def->tooltip = (boost::format("Maximum acceleration of the %1% axis") % axis_upper).str();
1753 (
void)
L(
"Maximum acceleration of the X axis");
1754 (
void)
L(
"Maximum acceleration of the Y axis");
1755 (
void)
L(
"Maximum acceleration of the Z axis");
1756 (
void)
L(
"Maximum acceleration of the E axis");
1757 def->sidetext =
L(
"mm/s²");
1758 def->min = 0;
1761
1762 def = this->
add(
"machine_max_jerk_" + axis.name,
coFloats);
1763 def->full_label = (boost::format("Maximum jerk %1%") % axis_upper).str();
1764 (
void)
L(
"Maximum jerk X");
1765 (
void)
L(
"Maximum jerk Y");
1766 (
void)
L(
"Maximum jerk Z");
1767 (
void)
L(
"Maximum jerk E");
1768 def->category =
L(
"Machine limits");
1769 def->tooltip = (boost::format("Maximum jerk of the %1% axis") % axis_upper).str();
1770 (
void)
L(
"Maximum jerk of the X axis");
1771 (
void)
L(
"Maximum jerk of the Y axis");
1772 (
void)
L(
"Maximum jerk of the Z axis");
1773 (
void)
L(
"Maximum jerk of the E axis");
1774 def->sidetext =
L(
"mm/s");
1775 def->min = 0;
1778 }
1779 }
1780
1781
1782 def = this->
add(
"machine_min_extruding_rate",
coFloats);
1783 def->full_label =
L(
"Minimum feedrate when extruding");
1784 def->category =
L(
"Machine limits");
1785 def->tooltip =
L(
"Minimum feedrate when extruding (M205 S)");
1786 def->sidetext =
L(
"mm/s");
1787 def->min = 0;
1790
1791
1792 def = this->
add(
"machine_min_travel_rate",
coFloats);
1793 def->full_label =
L(
"Minimum travel feedrate");
1794 def->category =
L(
"Machine limits");
1795 def->tooltip =
L(
"Minimum travel feedrate (M205 T)");
1796 def->sidetext =
L(
"mm/s");
1797 def->min = 0;
1800
1801
1802 def = this->
add(
"machine_max_acceleration_extruding",
coFloats);
1803 def->full_label =
L(
"Maximum acceleration when extruding");
1804 def->category =
L(
"Machine limits");
1805 def->tooltip =
L(
"Maximum acceleration when extruding");
1806 def->sidetext =
L(
"mm/s²");
1807 def->min = 0;
1810
1811
1812
1813 def = this->
add(
"machine_max_acceleration_retracting",
coFloats);
1814 def->full_label =
L(
"Maximum acceleration when retracting");
1815 def->category =
L(
"Machine limits");
1816 def->tooltip =
L(
"Maximum acceleration when retracting.\n\n"
1817 "Not used for RepRapFirmware, which does not support it.");
1818 def->sidetext =
L(
"mm/s²");
1819 def->min = 0;
1822
1823
1824 def = this->
add(
"machine_max_acceleration_travel",
coFloats);
1825 def->full_label =
L(
"Maximum acceleration for travel moves");
1826 def->category =
L(
"Machine limits");
1827 def->tooltip =
L(
"Maximum acceleration for travel moves.");
1828 def->sidetext =
L(
"mm/s²");
1829 def->min = 0;
1832
1833 def = this->
add(
"max_fan_speed",
coInts);
1834 def->label =
L(
"Max");
1835 def->tooltip =
L(
"This setting represents the maximum speed of your fan.");
1836 def->sidetext =
L(
"%");
1837 def->min = 0;
1838 def->max = 100;
1841
1843 def->label =
L(
"Max");
1844 def->tooltip =
L(
"This is the highest printable layer height for this extruder, used to cap "
1845 "the variable layer height and support layer height. Maximum recommended layer height "
1846 "is 75% of the extrusion width to achieve reasonable inter-layer adhesion. "
1847 "If set to 0, layer height is limited to 75% of the nozzle diameter.");
1848 def->sidetext =
L(
"mm");
1849 def->min = 0;
1852
1854 def->label =
L(
"Max print speed");
1855 def->tooltip =
L(
"When setting other speed settings to 0 Slic3r will autocalculate the optimal speed "
1856 "in order to keep constant extruder pressure. This experimental setting is used "
1857 "to set the highest print speed you want to allow.");
1858 def->sidetext =
L(
"mm/s");
1859 def->min = 1;
1862
1863 def = this->
add(
"max_volumetric_speed",
coFloat);
1864 def->label =
L(
"Max volumetric speed");
1865 def->tooltip =
L(
"This experimental setting is used to set the maximum volumetric speed your "
1866 "extruder supports.");
1867 def->sidetext =
L(
"mm³/s");
1868 def->min = 0;
1871
1872 def = this->
add(
"max_volumetric_extrusion_rate_slope_positive",
coFloat);
1873 def->label =
L(
"Max volumetric slope positive");
1874 def->tooltip =
L(
"This experimental setting is used to limit the speed of change in extrusion rate "
1875 "for a transition from lower speed to higher speed. "
1876 "A value of 1.8 mm³/s² ensures, that a change from the extrusion rate "
1877 "of 1.8 mm³/s (0.45 mm extrusion width, 0.2 mm extrusion height, feedrate 20 mm/s) "
1878 "to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds.");
1879 def->sidetext =
L(
"mm³/s²");
1880 def->min = 0;
1883
1884 def = this->
add(
"max_volumetric_extrusion_rate_slope_negative",
coFloat);
1885 def->label =
L(
"Max volumetric slope negative");
1886 def->tooltip =
L(
"This experimental setting is used to limit the speed of change in extrusion rate "
1887 "for a transition from higher speed to lower speed. "
1888 "A value of 1.8 mm³/s² ensures, that a change from the extrusion rate "
1889 "of 5.4 mm³/s (0.45 mm extrusion width, 0.2 mm extrusion height, feedrate 60 mm/s) "
1890 "to 1.8 mm³/s (feedrate 20 mm/s) will take at least 2 seconds.");
1891 def->sidetext =
L(
"mm³/s²");
1892 def->min = 0;
1895
1896 def = this->
add(
"min_fan_speed",
coInts);
1897 def->label =
L(
"Min");
1898 def->tooltip =
L(
"This setting represents the minimum PWM your fan needs to work.");
1899 def->sidetext =
L(
"%");
1900 def->min = 0;
1901 def->max = 100;
1904
1906 def->label =
L(
"Min");
1907 def->tooltip =
L(
"This is the lowest printable layer height for this extruder and limits "
1908 "the resolution for variable layer height. Typical values are between 0.05 mm and 0.1 mm.");
1909 def->sidetext =
L(
"mm");
1910 def->min = 0;
1913
1915 def->label =
L(
"Min print speed");
1916 def->tooltip =
L(
"Slic3r will not scale speed down below this speed.");
1917 def->sidetext =
L(
"mm/s");
1918 def->min = 0;
1921
1922 def = this->
add(
"min_skirt_length",
coFloat);
1923 def->label =
L(
"Minimal filament extrusion length");
1924 def->tooltip =
L(
"Generate no less than the number of skirt loops required to consume "
1925 "the specified amount of filament on the bottom layer. For multi-extruder machines, "
1926 "this minimum applies to each extruder.");
1927 def->sidetext =
L(
"mm");
1928 def->min = 0;
1931
1933 def->label =
L(
"Configuration notes");
1934 def->tooltip =
L(
"You can put here your personal notes. This text will be added to the G-code "
1935 "header comments.");
1936 def->multiline = true;
1937 def->full_width = true;
1938 def->height = 13;
1940 def->set_default_value(new ConfigOptionString(""));
1941
1943 def->label =
L(
"Nozzle diameter");
1944 def->tooltip =
L(
"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)");
1945 def->sidetext =
L(
"mm");
1947
1949 def->label =
L(
"Host Type");
1950 def->tooltip =
L(
"Slic3r can upload G-code files to a printer host. This field must contain "
1951 "the kind of the host.");
1953 { "prusalink", "PrusaLink" },
1954 { "prusaconnect", "PrusaConnect" },
1955 { "octoprint", "OctoPrint" },
1956 { "moonraker", "Klipper (via Moonraker)" },
1957 { "duet", "Duet" },
1958 { "flashair", "FlashAir" },
1959 { "astrobox", "AstroBox" },
1960 { "repetier", "Repetier" },
1961 { "mks", "MKS" }
1962 });
1965 def->set_default_value(
new ConfigOptionEnum<PrintHostType>(
htPrusaLink));
1966
1967 def = this->
add(
"only_retract_when_crossing_perimeters",
coBool);
1968 def->label =
L(
"Only retract when crossing perimeters");
1969 def->tooltip =
L(
"Disables retraction when the travel path does not exceed the upper layer's perimeters "
1970 "(and thus any ooze will be probably invisible).");
1973
1974 def = this->
add(
"ooze_prevention",
coBool);
1975 def->label =
L(
"Enable");
1976
1977 def->tooltip =
L(
"This option will drop the temperature of the inactive extruders to prevent oozing.");
1980
1981 def = this->
add(
"output_filename_format",
coString);
1982 def->label =
L(
"Output filename format");
1983 def->tooltip =
L(
"You can use all configuration options as variables inside this template. "
1984 "For example: [layer_height], [fill_density] etc. You can also use [timestamp], "
1985 "[year], [month], [day], [hour], [minute], [second], [version], [input_filename], "
1986 "[input_filename_base], [default_output_extension].");
1987 def->full_width = true;
1989 def->set_default_value(new ConfigOptionString("[input_filename_base].gcode"));
1990
1992 def->label =
L(
"Detect bridging perimeters");
1993 def->category =
L(
"Layers and Perimeters");
1994 def->tooltip =
L(
"Experimental option to adjust flow for overhangs (bridge flow will be used), "
1995 "to apply bridge speed to them and enable fan.");
1998
1999 def = this->
add(
"parking_pos_retraction",
coFloat);
2000 def->label =
L(
"Filament parking position");
2001 def->tooltip =
L(
"Distance of the extruder tip from the position where the filament is parked "
2002 "when unloaded. This should match the value in printer firmware.");
2003 def->sidetext =
L(
"mm");
2004 def->min = 0;
2007
2008 def = this->
add(
"extra_loading_move",
coFloat);
2009 def->label =
L(
"Extra loading distance");
2010 def->tooltip =
L(
"When set to zero, the distance the filament is moved from parking position during load "
2011 "is exactly the same as it was moved back during unload. When positive, it is loaded further, "
2012 " if negative, the loading move is shorter than unloading.");
2013 def->sidetext =
L(
"mm");
2016
2017 def = this->
add(
"perimeter_acceleration",
coFloat);
2018 def->label =
L(
"Perimeters");
2019 def->tooltip =
L(
"This is the acceleration your printer will use for perimeters. "
2020 "Set zero to disable acceleration control for perimeters.");
2021 def->sidetext =
L(
"mm/s²");
2024
2025 def = this->
add(
"external_perimeter_acceleration",
coFloat);
2026 def->label =
L(
"External perimeters");
2027 def->tooltip =
L(
"This is the acceleration your printer will use for external perimeters. "
2028 "Set zero to use the value for perimeters.");
2029 def->sidetext =
L(
"mm/s²");
2032
2033 def = this->
add(
"perimeter_extruder",
coInt);
2034 def->label =
L(
"Perimeter extruder");
2035 def->category =
L(
"Extruders");
2036 def->tooltip =
L(
"The extruder to use when printing perimeters and brim. First extruder is 1.");
2037 def->aliases = { "perimeters_extruder" };
2038 def->min = 1;
2040 def->set_default_value(new ConfigOptionInt(1));
2041
2043 def->label =
L(
"Perimeters");
2044 def->category =
L(
"Extrusion Width");
2045 def->tooltip =
L(
"Set this to a non-zero value to set a manual extrusion width for perimeters. "
2046 "You may want to use thinner extrudates to get more accurate surfaces. "
2047 "If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. "
2048 "If expressed as percentage (for example 200%) it will be computed over layer height.");
2049 def->sidetext =
L(
"mm or %");
2050 def->aliases = { "perimeters_extrusion_width" };
2051 def->min = 0;
2052 def->max_literal = 50;
2054 def->set_default_value(new ConfigOptionFloatOrPercent(0, false));
2055
2057 def->label =
L(
"Perimeters");
2058 def->category =
L(
"Speed");
2059 def->tooltip =
L(
"Speed for perimeters (contours, aka vertical shells). Set to zero for auto.");
2060 def->sidetext =
L(
"mm/s");
2061 def->aliases = { "perimeter_feed_rate" };
2062 def->min = 0;
2065
2066 def = this->
add(
"perimeters",
coInt);
2067 def->label =
L(
"Perimeters");
2068 def->category =
L(
"Layers and Perimeters");
2069 def->tooltip =
L(
"This option sets the number of perimeters to generate for each layer. "
2070 "Note that Slic3r may increase this number automatically when it detects "
2071 "sloping surfaces which benefit from a higher number of perimeters "
2072 "if the Extra Perimeters option is enabled.");
2073 def->sidetext =
L(
"(minimum)");
2074 def->aliases = { "perimeter_offsets" };
2075 def->min = 0;
2076 def->max = 10000;
2077 def->set_default_value(new ConfigOptionInt(3));
2078
2080 def->label =
L(
"Post-processing scripts");
2081 def->tooltip =
L(
"If you want to process the output G-code through custom scripts, "
2082 "just list their absolute paths here. Separate multiple scripts with a semicolon. "
2083 "Scripts will be passed the absolute path to the G-code file as the first argument, "
2084 "and they can access the Slic3r config settings by reading environment variables.");
2085 def->gui_flags = "serialized";
2086 def->multiline = true;
2087 def->full_width = true;
2088 def->height = 6;
2090 def->set_default_value(new ConfigOptionStrings());
2091
2093 def->label =
L(
"Printer type");
2094 def->tooltip =
L(
"Type of the printer.");
2095 def->set_default_value(new ConfigOptionString());
2097
2099 def->label =
L(
"Printer notes");
2100 def->tooltip =
L(
"You can put your notes regarding the printer here.");
2101 def->multiline = true;
2102 def->full_width = true;
2103 def->height = 13;
2105 def->set_default_value(new ConfigOptionString(""));
2106
2108 def->label =
L(
"Printer vendor");
2109 def->tooltip =
L(
"Name of the printer vendor.");
2110 def->set_default_value(new ConfigOptionString());
2112
2114 def->label =
L(
"Printer variant");
2115 def->tooltip =
L(
"Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter.");
2116 def->set_default_value(new ConfigOptionString());
2118
2120 def->set_default_value(new ConfigOptionString(""));
2122
2124 def->set_default_value(new ConfigOptionString(""));
2126
2127 def = this->
add(
"physical_printer_settings_id",
coString);
2128 def->set_default_value(new ConfigOptionString(""));
2130
2131 def = this->
add(
"raft_contact_distance",
coFloat);
2132 def->label =
L(
"Raft contact Z distance");
2133 def->category =
L(
"Support material");
2134 def->tooltip =
L(
"The vertical distance between object and raft. Ignored for soluble interface.");
2135 def->sidetext =
L(
"mm");
2136 def->min = 0;
2139
2141 def->label =
L(
"Raft expansion");
2142 def->category =
L(
"Support material");
2143 def->tooltip =
L(
"Expansion of the raft in XY plane for better stability.");
2144 def->sidetext =
L(
"mm");
2145 def->min = 0;
2148
2149 def = this->
add(
"raft_first_layer_density",
coPercent);
2150 def->label =
L(
"First layer density");
2151 def->category =
L(
"Support material");
2152 def->tooltip =
L(
"Density of the first raft or support layer.");
2153 def->sidetext =
L(
"%");
2154 def->min = 10;
2155 def->max = 100;
2157 def->set_default_value(new ConfigOptionPercent(90));
2158
2159 def = this->
add(
"raft_first_layer_expansion",
coFloat);
2160 def->label =
L(
"First layer expansion");
2161 def->category =
L(
"Support material");
2162 def->tooltip =
L(
"Expansion of the first raft or support layer to improve adhesion to print bed.");
2163 def->sidetext =
L(
"mm");
2164 def->min = 0;
2167
2168 def = this->
add(
"raft_layers",
coInt);
2169 def->label =
L(
"Raft layers");
2170 def->category =
L(
"Support material");
2171 def->tooltip =
L(
"The object will be raised by this number of layers, and support material "
2172 "will be generated under it.");
2173 def->sidetext =
L(
"layers");
2174 def->min = 0;
2176 def->set_default_value(new ConfigOptionInt(0));
2177
2179 def->label =
L(
"Slice resolution");
2180 def->tooltip =
L(
"Minimum detail resolution, used to simplify the input file for speeding up "
2181 "the slicing job and reducing memory usage. High-resolution models often carry "
2182 "more detail than printers can render. Set to zero to disable any simplification "
2183 "and use full resolution from input.");
2184 def->sidetext =
L(
"mm");
2185 def->min = 0;
2188
2189 def = this->
add(
"gcode_resolution",
coFloat);
2190 def->label =
L(
"G-code resolution");
2191 def->tooltip =
L(
"Maximum deviation of exported G-code paths from their full resolution counterparts. "
2192 "Very high resolution G-code requires huge amount of RAM to slice and preview, "
2193 "also a 3D printer may stutter not being able to process a high resolution G-code in a timely manner. "
2194 "On the other hand, a low resolution G-code will produce a low poly effect and because "
2195 "the G-code reduction is performed at each layer independently, visible artifacts may be produced.");
2196 def->sidetext =
L(
"mm");
2197 def->min = 0;
2200
2201 def = this->
add(
"retract_before_travel",
coFloats);
2202 def->label =
L(
"Minimum travel after retraction");
2203 def->tooltip =
L(
"Retraction is not triggered when travel moves are shorter than this length.");
2204 def->sidetext =
L(
"mm");
2207
2209 def->label =
L(
"Retract amount before wipe");
2210 def->tooltip =
L(
"With bowden extruders, it may be wise to do some amount of quick retract "
2211 "before doing the wipe movement.");
2212 def->sidetext =
L(
"%");
2215
2216 def = this->
add(
"retract_layer_change",
coBools);
2217 def->label =
L(
"Retract on layer change");
2218 def->tooltip =
L(
"This flag enforces a retraction whenever a Z move is done.");
2221
2223 def->label =
L(
"Length");
2224 def->full_label =
L(
"Retraction Length");
2225 def->tooltip =
L(
"When retraction is triggered, filament is pulled back by the specified amount "
2226 "(the length is measured on raw filament, before it enters the extruder).");
2227 def->sidetext =
L(
"mm (zero to disable)");
2229
2230 def = this->
add(
"retract_length_toolchange",
coFloats);
2231 def->label =
L(
"Length");
2232 def->full_label =
L(
"Retraction Length (Toolchange)");
2233 def->tooltip =
L(
"When retraction is triggered before changing tool, filament is pulled back "
2234 "by the specified amount (the length is measured on raw filament, before it enters "
2235 "the extruder).");
2236 def->sidetext =
L(
"mm (zero to disable)");
2239
2241 def->label =
L(
"Lift Z");
2242 def->tooltip =
L(
"If you set this to a positive value, Z is quickly raised every time a retraction "
2243 "is triggered. When using multiple extruders, only the setting for the first extruder "
2244 "will be considered.");
2245 def->sidetext =
L(
"mm");
2247
2249 def->label =
L(
"Above Z");
2250 def->full_label =
L(
"Only lift Z above");
2251 def->tooltip =
L(
"If you set this to a positive value, Z lift will only take place above the specified "
2252 "absolute Z. You can tune this setting for skipping lift on the first layers.");
2253 def->sidetext =
L(
"mm");
2256
2258 def->label =
L(
"Below Z");
2259 def->full_label =
L(
"Only lift Z below");
2260 def->tooltip =
L(
"If you set this to a positive value, Z lift will only take place below "
2261 "the specified absolute Z. You can tune this setting for limiting lift "
2262 "to the first layers.");
2263 def->sidetext =
L(
"mm");
2266
2267 def = this->
add(
"retract_restart_extra",
coFloats);
2268 def->label =
L(
"Extra length on restart");
2269 def->tooltip =
L(
"When the retraction is compensated after the travel move, the extruder will push "
2270 "this additional amount of filament. This setting is rarely needed.");
2271 def->sidetext =
L(
"mm");
2274
2275 def = this->
add(
"retract_restart_extra_toolchange",
coFloats);
2276 def->label =
L(
"Extra length on restart");
2277 def->tooltip =
L(
"When the retraction is compensated after changing tool, the extruder will push "
2278 "this additional amount of filament.");
2279 def->sidetext =
L(
"mm");
2282
2284 def->label =
L(
"Retraction Speed");
2285 def->full_label =
L(
"Retraction Speed");
2286 def->tooltip =
L(
"The speed for retractions (it only applies to the extruder motor).");
2287 def->sidetext =
L(
"mm/s");
2290
2292 def->label =
L(
"Deretraction Speed");
2293 def->full_label =
L(
"Deretraction Speed");
2294 def->tooltip =
L(
"The speed for loading of a filament into extruder after retraction "
2295 "(it only applies to the extruder motor). If left to zero, the retraction speed is used.");
2296 def->sidetext =
L(
"mm/s");
2299
2300 def = this->
add(
"seam_position",
coEnum);
2301 def->label =
L(
"Seam position");
2302 def->category =
L(
"Layers and Perimeters");
2303 def->tooltip =
L(
"Position of perimeters starting points.");
2305 {
"random",
L(
"Random") },
2306 {
"nearest",
L(
"Nearest") },
2307 {
"aligned",
L(
"Aligned") },
2308 {
"rear",
L(
"Rear") }
2309 });
2311 def->set_default_value(
new ConfigOptionEnum<SeamPosition>(
spAligned));
2312
2313 def = this->
add(
"staggered_inner_seams",
coBool);
2314 def->label =
L(
"Staggered inner seams");
2315
2316 def->tooltip =
L(
"This option causes the inner seams to be shifted backwards based on their depth, forming a zigzag pattern.");
2319
2320#if 0
2321 def = this->
add(
"seam_preferred_direction",
coFloat);
2322
2323 def->label =
L(
"Direction");
2324 def->sidetext =
L(
"°");
2325 def->full_label =
L(
"Preferred direction of the seam");
2326 def->tooltip =
L(
"Seam preferred direction");
2327 def->min = 0;
2328 def->max = 360;
2330
2331 def = this->
add(
"seam_preferred_direction_jitter",
coFloat);
2332
2333 def->label =
L(
"Jitter");
2334 def->sidetext =
L(
"°");
2335 def->full_label =
L(
"Seam preferred direction jitter");
2336 def->tooltip =
L(
"Preferred direction of the seam - jitter");
2337 def->min = 0;
2338 def->max = 360;
2340#endif
2341
2343 def->label =
L(
"Distance from brim/object");
2344 def->tooltip =
L(
"Distance between skirt and brim (when draft shield is not used) or objects.");
2345 def->sidetext =
L(
"mm");
2346 def->min = 0;
2348
2349 def = this->
add(
"skirt_height",
coInt);
2350 def->label =
L(
"Skirt height");
2351 def->tooltip =
L(
"Height of skirt expressed in layers.");
2352 def->sidetext =
L(
"layers");
2354 def->set_default_value(new ConfigOptionInt(1));
2355
2356 def = this->
add(
"draft_shield",
coEnum);
2357 def->label =
L(
"Draft shield");
2358 def->tooltip =
L(
"With draft shield active, the skirt will be printed skirt_distance from the object, possibly intersecting brim.\n"
2359 "Enabled = skirt is as tall as the highest printed object.\n"
2360 "Limited = skirt is as tall as specified by skirt_height.\n"
2361 "This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft.");
2363 {
"disabled",
L(
"Disabled") },
2364 {
"limited",
L(
"Limited") },
2365 {
"enabled",
L(
"Enabled") }
2366 });
2368 def->set_default_value(
new ConfigOptionEnum<DraftShield>(
dsDisabled));
2369
2371 def->label =
L(
"Loops (minimum)");
2372 def->full_label =
L(
"Skirt Loops");
2373 def->tooltip =
L(
"Number of loops for the skirt. If the Minimum Extrusion Length option is set, "
2374 "the number of loops might be greater than the one configured here. Set this to zero "
2375 "to disable skirt completely.");
2376 def->min = 0;
2378 def->set_default_value(new ConfigOptionInt(1));
2379
2380 def = this->
add(
"slowdown_below_layer_time",
coInts);
2381 def->label =
L(
"Slow down if layer print time is below");
2382 def->tooltip =
L(
"If layer print time is estimated below this number of seconds, print moves "
2383 "speed will be scaled down to extend duration to this value.");
2384 def->sidetext =
L(
"approximate seconds");
2385 def->min = 0;
2386 def->max = 1000;
2389
2391 def->label =
L(
"Small perimeters");
2392 def->category =
L(
"Speed");
2393 def->tooltip =
L(
"This separate setting will affect the speed of perimeters having radius <= 6.5mm "
2394 "(usually holes). If expressed as percentage (for example: 80%) it will be calculated "
2395 "on the perimeters speed setting above. Set to zero for auto.");
2396 def->sidetext =
L(
"mm/s or %");
2397 def->ratio_over = "perimeter_speed";
2398 def->min = 0;
2400 def->set_default_value(new ConfigOptionFloatOrPercent(15, false));
2401
2402 def = this->
add(
"solid_infill_below_area",
coFloat);
2403 def->label =
L(
"Solid infill threshold area");
2404 def->category =
L(
"Infill");
2405 def->tooltip =
L(
"Force solid infill for regions having a smaller area than the specified threshold.");
2406 def->sidetext =
L(
"mm²");
2407 def->min = 0;
2410
2411 def = this->
add(
"solid_infill_extruder",
coInt);
2412 def->label =
L(
"Solid infill extruder");
2413 def->category =
L(
"Extruders");
2414 def->tooltip =
L(
"The extruder to use when printing solid infill.");
2415 def->min = 1;
2417 def->set_default_value(new ConfigOptionInt(1));
2418
2419 def = this->
add(
"solid_infill_every_layers",
coInt);
2420 def->label =
L(
"Solid infill every");
2421 def->category =
L(
"Infill");
2422 def->tooltip =
L(
"This feature allows to force a solid layer every given number of layers. "
2423 "Zero to disable. You can set this to any value (for example 9999); "
2424 "Slic3r will automatically choose the maximum possible number of layers "
2425 "to combine according to nozzle diameter and layer height.");
2426 def->sidetext =
L(
"layers");
2427 def->min = 0;
2429 def->set_default_value(new ConfigOptionInt(0));
2430
2432 def->label =
L(
"Solid infill");
2433 def->category =
L(
"Extrusion Width");
2434 def->tooltip =
L(
"Set this to a non-zero value to set a manual extrusion width for infill for solid surfaces. "
2435 "If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. "
2436 "If expressed as percentage (for example 90%) it will be computed over layer height.");
2437 def->sidetext =
L(
"mm or %");
2438 def->min = 0;
2439 def->max_literal = 50;
2441 def->set_default_value(new ConfigOptionFloatOrPercent(0, false));
2442
2444 def->label =
L(
"Solid infill");
2445 def->category =
L(
"Speed");
2446 def->tooltip =
L(
"Speed for printing solid regions (top/bottom/internal horizontal shells). "
2447 "This can be expressed as a percentage (for example: 80%) over the default "
2448 "infill speed above. Set to zero for auto.");
2449 def->sidetext =
L(
"mm/s or %");
2450 def->ratio_over = "infill_speed";
2451 def->aliases = { "solid_infill_feed_rate" };
2452 def->min = 0;
2454 def->set_default_value(new ConfigOptionFloatOrPercent(20, false));
2455
2456 def = this->
add(
"solid_layers",
coInt);
2457 def->label =
L(
"Solid layers");
2458 def->tooltip =
L(
"Number of solid layers to generate on top and bottom surfaces.");
2459 def->shortcut.push_back("top_solid_layers");
2460 def->shortcut.push_back("bottom_solid_layers");
2461 def->min = 0;
2462
2463 def = this->
add(
"solid_min_thickness",
coFloat);
2464 def->label =
L(
"Minimum thickness of a top / bottom shell");
2465 def->tooltip =
L(
"Minimum thickness of a top / bottom shell");
2466 def->shortcut.push_back("top_solid_min_thickness");
2467 def->shortcut.push_back("bottom_solid_min_thickness");
2468 def->min = 0;
2469
2471 def->label =
L(
"Spiral vase");
2472 def->tooltip =
L(
"This feature will raise Z gradually while printing a single-walled object "
2473 "in order to remove any visible seam. This option requires a single perimeter, "
2474 "no infill, no top solid layers and no support material. You can still set "
2475 "any number of bottom solid layers as well as skirt/brim loops. "
2476 "It won't work when printing more than one single object.");
2478
2479 def = this->
add(
"standby_temperature_delta",
coInt);
2480 def->label =
L(
"Temperature variation");
2481
2482 def->tooltip =
L(
"Temperature difference to be applied when an extruder is not active. "
2483 "The value is not used when 'idle_temperature' in filament settings "
2484 "is defined.");
2485 def->sidetext = "∆°C";
2489 def->set_default_value(new ConfigOptionInt(-5));
2490
2491 def = this->
add(
"autoemit_temperature_commands",
coBool);
2492 def->label =
L(
"Emit temperature commands automatically");
2493 def->tooltip =
L(
"When enabled, PrusaSlicer will check whether your Custom Start G-Code contains M104 or M190. "
2494 "If so, the temperatures will not be emitted automatically so you're free to customize "
2495 "the order of heating commands and other custom actions. Note that you can use "
2496 "placeholder variables for all PrusaSlicer settings, so you can put "
2497 "a \"M109 S[first_layer_temperature]\" command wherever you want.\n"
2498 "If your Custom Start G-Code does NOT contain M104 or M190, "
2499 "PrusaSlicer will execute the Start G-Code after bed reached its target temperature "
2500 "and extruder just started heating.\n\n"
2501 "When disabled, PrusaSlicer will NOT emit commands to heat up extruder and bed, "
2502 "leaving both to Custom Start G-Code.");
2505
2507 def->label =
L(
"Start G-code");
2508 def->tooltip =
L(
"This start procedure is inserted at the beginning, possibly prepended by "
2509 "temperature-changing commands. See 'autoemit_temperature_commands'.");
2510 def->multiline = true;
2511 def->full_width = true;
2512 def->height = 12;
2514 def->set_default_value(new ConfigOptionString("G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n"));
2515
2517 def->label =
L(
"Start G-code");
2518 def->tooltip =
L(
"This start procedure is inserted at the beginning, after any printer start gcode (and "
2519 "after any toolchange to this filament in case of multi-material printers). "
2520 "This is used to override settings for a specific filament. If PrusaSlicer detects "
2521 "M104, M109, M140 or M190 in your custom codes, such commands will "
2522 "not be prepended automatically so you're free to customize the order "
2523 "of heating commands and other custom actions. Note that you can use placeholder variables "
2524 "for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command "
2525 "wherever you want. If you have multiple extruders, the gcode is processed "
2526 "in extruder order.");
2527 def->multiline = true;
2528 def->full_width = true;
2529 def->height = 12;
2531 def->set_default_value(new ConfigOptionStrings { "; Filament gcode\n" });
2532
2534 def->label =
L(
"Color change G-code");
2535 def->tooltip =
L(
"This G-code will be used as a code for the color change");
2536 def->multiline = true;
2537 def->full_width = true;
2538 def->height = 12;
2540 def->set_default_value(new ConfigOptionString("M600"));
2541
2543 def->label =
L(
"Pause Print G-code");
2544 def->tooltip =
L(
"This G-code will be used as a code for the pause print");
2545 def->multiline = true;
2546 def->full_width = true;
2547 def->height = 12;
2549 def->set_default_value(new ConfigOptionString("M601"));
2550
2551 def = this->
add(
"template_custom_gcode",
coString);
2552 def->label =
L(
"Custom G-code");
2553 def->tooltip =
L(
"This G-code will be used as a custom code");
2554 def->multiline = true;
2555 def->full_width = true;
2556 def->height = 12;
2558 def->set_default_value(new ConfigOptionString(""));
2559
2560 def = this->
add(
"single_extruder_multi_material",
coBool);
2561 def->label =
L(
"Single Extruder Multi Material");
2562 def->tooltip =
L(
"The printer multiplexes filaments into a single hot end.");
2565
2566 def = this->
add(
"single_extruder_multi_material_priming",
coBool);
2567 def->label =
L(
"Prime all printing extruders");
2568 def->tooltip =
L(
"If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print.");
2571
2572 def = this->
add(
"wipe_tower_no_sparse_layers",
coBool);
2573 def->label =
L(
"No sparse layers (EXPERIMENTAL)");
2574 def->tooltip =
L(
"If enabled, the wipe tower will not be printed on layers with no toolchanges. "
2575 "On layers with a toolchange, extruder will travel downward to print the wipe tower. "
2576 "User is responsible for ensuring there is no collision with the print.");
2579
2580 def = this->
add(
"slice_closing_radius",
coFloat);
2581 def->label =
L(
"Slice gap closing radius");
2582 def->category =
L(
"Advanced");
2583 def->tooltip =
L(
"Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. "
2584 "The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low.");
2585 def->sidetext =
L(
"mm");
2586 def->min = 0;
2589
2590 def = this->
add(
"slicing_mode",
coEnum);
2591 def->label =
L(
"Slicing Mode");
2592 def->category =
L(
"Advanced");
2593 def->tooltip =
L(
"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model.");
2595 {
"regular",
L(
"Regular") },
2596 {
"even_odd",
L(
"Even-odd") },
2597 {
"close_holes",
L(
"Close holes") }
2598 });
2601
2602 def = this->
add(
"support_material",
coBool);
2603 def->label =
L(
"Generate support material");
2604 def->category =
L(
"Support material");
2605 def->tooltip =
L(
"Enable support material generation.");
2607
2608 def = this->
add(
"support_material_auto",
coBool);
2609 def->label =
L(
"Auto generated supports");
2610 def->category =
L(
"Support material");
2611 def->tooltip =
L(
"If checked, supports will be generated automatically based on the overhang threshold value."\
2612 " If unchecked, supports will be generated inside the \"Support Enforcer\" volumes only.");
2615
2617 def->label =
L(
"XY separation between an object and its support");
2618 def->category =
L(
"Support material");
2619 def->tooltip =
L(
"XY separation between an object and its support. If expressed as percentage "
2620 "(for example 50%), it will be calculated over external perimeter width.");
2621 def->sidetext =
L(
"mm or %");
2622 def->ratio_over = "external_perimeter_extrusion_width";
2623 def->min = 0;
2624 def->max_literal = 10;
2626
2627 def->set_default_value(new ConfigOptionFloatOrPercent(50, true));
2628
2629 def = this->
add(
"support_material_angle",
coFloat);
2630 def->label =
L(
"Pattern angle");
2631 def->category =
L(
"Support material");
2632 def->tooltip =
L(
"Use this setting to rotate the support material pattern on the horizontal plane.");
2633 def->sidetext =
L(
"°");
2634 def->min = 0;
2635 def->max = 359;
2638
2639 def = this->
add(
"support_material_buildplate_only",
coBool);
2640 def->label =
L(
"Support on build plate only");
2641 def->category =
L(
"Support material");
2642 def->tooltip =
L(
"Only create support if it lies on a build plate. Don't create support on a print.");
2645
2646 def = this->
add(
"support_material_contact_distance",
coFloat);
2647 def->label =
L(
"Top contact Z distance");
2648 def->category =
L(
"Support material");
2649 def->tooltip =
L(
"The vertical distance between object and support material interface. "
2650 "Setting this to 0 will also prevent Slic3r from using bridge flow and speed "
2651 "for the first object layer.");
2652 def->sidetext =
L(
"mm");
2653
2655 {
"0",
L(
"0 (soluble)") },
2656 {
"0.1",
L(
"0.1 (detachable)") },
2657 {
"0.2",
L(
"0.2 (detachable)") }
2658 });
2661
2662 def = this->
add(
"support_material_bottom_contact_distance",
coFloat);
2663 def->label =
L(
"Bottom contact Z distance");
2664 def->category =
L(
"Support material");
2665 def->tooltip =
L(
"The vertical distance between the object top surface and the support material interface. "
2666 "If set to zero, support_material_contact_distance will be used for both top and bottom contact Z distances.");
2667 def->sidetext =
L(
"mm");
2668
2670
2671 {
"0",
L(
"Same as top") },
2672 { "0.1", "0.1" },
2673 { "0.2", "0.2" }
2674 });
2677
2678 def = this->
add(
"support_material_enforce_layers",
coInt);
2679 def->label =
L(
"Enforce support for the first");
2680 def->category =
L(
"Support material");
2681 def->tooltip =
L(
"Generate support material for the specified number of layers counting from bottom, "
2682 "regardless of whether normal support material is enabled or not and regardless "
2683 "of any angle threshold. This is useful for getting more adhesion of objects "
2684 "having a very thin or poor footprint on the build plate.");
2685 def->sidetext =
L(
"layers");
2686 def->full_label =
L(
"Enforce support for the first n layers");
2687 def->min = 0;
2689 def->set_default_value(new ConfigOptionInt(0));
2690
2691 def = this->
add(
"support_material_extruder",
coInt);
2692 def->label =
L(
"Support material/raft/skirt extruder");
2693 def->category =
L(
"Extruders");
2694 def->tooltip =
L(
"The extruder to use when printing support material, raft and skirt "
2695 "(1+, 0 to use the current extruder to minimize tool changes).");
2696 def->min = 0;
2698 def->set_default_value(new ConfigOptionInt(1));
2699
2701 def->label =
L(
"Support material");
2702 def->category =
L(
"Extrusion Width");
2703 def->tooltip =
L(
"Set this to a non-zero value to set a manual extrusion width for support material. "
2704 "If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. "
2705 "If expressed as percentage (for example 90%) it will be computed over layer height.");
2706 def->sidetext =
L(
"mm or %");
2707 def->min = 0;
2708 def->max_literal = 50;
2710 def->set_default_value(new ConfigOptionFloatOrPercent(0, false));
2711
2712 def = this->
add(
"support_material_interface_contact_loops",
coBool);
2713 def->label =
L(
"Interface loops");
2714 def->category =
L(
"Support material");
2715 def->tooltip =
L(
"Cover the top contact layer of the supports with loops. Disabled by default.");
2718
2719 def = this->
add(
"support_material_interface_extruder",
coInt);
2720 def->label =
L(
"Support material/raft interface extruder");
2721 def->category =
L(
"Extruders");
2722 def->tooltip =
L(
"The extruder to use when printing support material interface "
2723 "(1+, 0 to use the current extruder to minimize tool changes). This affects raft too.");
2724 def->min = 0;
2726 def->set_default_value(new ConfigOptionInt(1));
2727
2728 def = this->
add(
"support_material_interface_layers",
coInt);
2729 def->label =
L(
"Top interface layers");
2730 def->category =
L(
"Support material");
2731 def->tooltip =
L(
"Number of interface layers to insert between the object(s) and support material.");
2732 def->sidetext =
L(
"layers");
2733 def->min = 0;
2735 {
"0",
L(
"0 (off)") },
2736 {
"1",
L(
"1 (light)") },
2737 {
"2",
L(
"2 (default)") },
2738 {
"3",
L(
"3 (heavy)") }
2739 });
2741 def->set_default_value(new ConfigOptionInt(3));
2742
2743 def = this->
add(
"support_material_bottom_interface_layers",
coInt);
2744 def->label =
L(
"Bottom interface layers");
2745 def->category =
L(
"Support material");
2746 def->tooltip =
L(
"Number of interface layers to insert between the object(s) and support material. "
2747 "Set to -1 to use support_material_interface_layers");
2748 def->sidetext =
L(
"layers");
2749 def->min = -1;
2751
2752 {
"-1",
L(
"Same as top") },
2753 {
"0",
L(
"0 (off)") },
2754 {
"1",
L(
"1 (light)") },
2755 {
"2",
L(
"2 (default)") },
2756 {
"3",
L(
"3 (heavy)") }
2757 });
2759 def->set_default_value(new ConfigOptionInt(-1));
2760
2761 def = this->
add(
"support_material_closing_radius",
coFloat);
2762 def->label =
L(
"Closing radius");
2763 def->category =
L(
"Support material");
2764 def->tooltip =
L(
"For snug supports, the support regions will be merged using morphological closing operation."
2765 " Gaps smaller than the closing radius will be filled in.");
2766 def->sidetext =
L(
"mm");
2767 def->min = 0;
2770
2771 def = this->
add(
"support_material_interface_spacing",
coFloat);
2772 def->label =
L(
"Interface pattern spacing");
2773 def->category =
L(
"Support material");
2774 def->tooltip =
L(
"Spacing between interface lines. Set zero to get a solid interface.");
2775 def->sidetext =
L(
"mm");
2776 def->min = 0;
2779
2781 def->label =
L(
"Support material interface");
2782 def->category =
L(
"Support material");
2783 def->tooltip =
L(
"Speed for printing support material interface layers. If expressed as percentage "
2784 "(for example 50%) it will be calculated over support material speed.");
2785 def->sidetext =
L(
"mm/s or %");
2786 def->ratio_over = "support_material_speed";
2787 def->min = 0;
2789 def->set_default_value(new ConfigOptionFloatOrPercent(100, true));
2790
2791 def = this->
add(
"support_material_pattern",
coEnum);
2792 def->label =
L(
"Pattern");
2793 def->category =
L(
"Support material");
2794 def->tooltip =
L(
"Pattern used to generate support material.");
2796 {
"rectilinear",
L(
"Rectilinear") },
2797 {
"rectilinear-grid",
L(
"Rectilinear grid") },
2798 {
"honeycomb",
L(
"Honeycomb") }
2799 });
2801 def->set_default_value(
new ConfigOptionEnum<SupportMaterialPattern>(
smpRectilinear));
2802
2803 def = this->
add(
"support_material_interface_pattern",
coEnum);
2804 def->label =
L(
"Interface pattern");
2805 def->category =
L(
"Support material");
2806 def->tooltip =
L(
"Pattern used to generate support material interface. "
2807 "Default pattern for non-soluble support interface is Rectilinear, "
2808 "while default pattern for soluble support interface is Concentric.");
2810 {
"auto",
L(
"Default") },
2811 {
"rectilinear",
L(
"Rectilinear") },
2812 {
"concentric",
L(
"Concentric") }
2813 });
2815 def->set_default_value(
new ConfigOptionEnum<SupportMaterialInterfacePattern>(
smipRectilinear));
2816
2817 def = this->
add(
"support_material_spacing",
coFloat);
2818 def->label =
L(
"Pattern spacing");
2819 def->category =
L(
"Support material");
2820 def->tooltip =
L(
"Spacing between support material lines.");
2821 def->sidetext =
L(
"mm");
2822 def->min = 0;
2825
2826 def = this->
add(
"support_material_speed",
coFloat);
2827 def->label =
L(
"Support material");
2828 def->category =
L(
"Support material");
2829 def->tooltip =
L(
"Speed for printing support material.");
2830 def->sidetext =
L(
"mm/s");
2831 def->min = 0;
2834
2835 def = this->
add(
"support_material_style",
coEnum);
2836 def->label =
L(
"Style");
2837 def->category =
L(
"Support material");
2838 def->tooltip =
L(
"Style and shape of the support towers. Projecting the supports into a regular grid "
2839 "will create more stable supports, while snug support towers will save material and reduce "
2840 "object scarring.");
2842 {
"grid",
L(
"Grid") },
2843 {
"snug",
L(
"Snug") },
2844 {
"organic",
L(
"Organic") }
2845 });
2847 def->set_default_value(
new ConfigOptionEnum<SupportMaterialStyle>(
smsGrid));
2848
2849 def = this->
add(
"support_material_synchronize_layers",
coBool);
2850 def->label =
L(
"Synchronize with object layers");
2851 def->category =
L(
"Support material");
2852
2853 def->tooltip =
L(
"Synchronize support layers with the object print layers. This is useful "
2854 "with multi-material printers, where the extruder switch is expensive. "
2855 "This option is only available when top contact Z distance is set to zero.");
2858
2859 def = this->
add(
"support_material_threshold",
coInt);
2860 def->label =
L(
"Overhang threshold");
2861 def->category =
L(
"Support material");
2862 def->tooltip =
L(
"Support material will not be generated for overhangs whose slope angle "
2863 "(90° = vertical) is above the given threshold. In other words, this value "
2864 "represent the most horizontal slope (measured from the horizontal plane) "
2865 "that you can print without support material. Set to zero for automatic detection "
2866 "(recommended).");
2867 def->sidetext =
L(
"°");
2868 def->min = 0;
2869 def->max = 90;
2871 def->set_default_value(new ConfigOptionInt(0));
2872
2873 def = this->
add(
"support_material_with_sheath",
coBool);
2874 def->label =
L(
"With sheath around the support");
2875 def->category =
L(
"Support material");
2876 def->tooltip =
L(
"Add a sheath (a single perimeter line) around the base support. This makes "
2877 "the support more reliable, but also more difficult to remove.");
2880
2881 def = this->
add(
"support_tree_angle",
coFloat);
2882 def->label =
L(
"Maximum Branch Angle");
2883 def->category =
L(
"Support material");
2884
2885 def->tooltip =
L(
"The maximum angle of the branches, when the branches have to avoid the model. "
2886 "Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach.");
2887 def->sidetext =
L(
"°");
2888 def->min = 0;
2889 def->max = 85;
2892
2893 def = this->
add(
"support_tree_angle_slow",
coFloat);
2894 def->label =
L(
"Preferred Branch Angle");
2895 def->category =
L(
"Support material");
2896
2897 def->tooltip =
L(
"The preferred angle of the branches, when they do not have to avoid the model. "
2898 "Use a lower angle to make them more vertical and more stable. Use a higher angle for branches to merge faster.");
2899 def->sidetext =
L(
"°");
2900 def->min = 10;
2901 def->max = 85;
2904
2905 def = this->
add(
"support_tree_tip_diameter",
coFloat);
2906 def->label =
L(
"Tip Diameter");
2907 def->category =
L(
"Support material");
2908
2909 def->tooltip =
L(
"Branch tip diameter for organic supports.");
2910 def->sidetext =
L(
"mm");
2911 def->min = 0.1f;
2912 def->max = 100.f;
2915
2916 def = this->
add(
"support_tree_branch_diameter",
coFloat);
2917 def->label =
L(
"Branch Diameter");
2918 def->category =
L(
"Support material");
2919
2920 def->tooltip =
L(
"The diameter of the thinnest branches of organic support. Thicker branches are more sturdy. "
2921 "Branches towards the base will be thicker than this.");
2922 def->sidetext =
L(
"mm");
2923 def->min = 0.1f;
2924 def->max = 100.f;
2927
2928 def = this->
add(
"support_tree_branch_diameter_angle",
coFloat);
2929
2930 def->label =
L(
"Branch Diameter Angle");
2931 def->category =
L(
"Support material");
2932
2933 def->tooltip =
L(
"The angle of the branches' diameter as they gradually become thicker towards the bottom. "
2934 "An angle of 0 will cause the branches to have uniform thickness over their length. "
2935 "A bit of an angle can increase stability of the organic support.");
2936 def->sidetext =
L(
"°");
2937 def->min = 0;
2938 def->max = 15;
2941
2942 def = this->
add(
"support_tree_branch_diameter_double_wall",
coFloat);
2943 def->label =
L(
"Branch Diameter with double walls");
2944 def->category =
L(
"Support material");
2945
2946 def->tooltip =
L(
"Branches with area larger than the area of a circle of this diameter will be printed with double walls for stability. "
2947 "Set this value to zero for no double walls.");
2948 def->sidetext =
L(
"mm");
2949 def->min = 0;
2950 def->max = 100.f;
2953
2954
2955
2956
2957 def = this->
add(
"support_tree_branch_distance",
coFloat);
2958
2959 def->label =
L(
"Branch Distance");
2960 def->category =
L(
"Support material");
2961
2962 def->tooltip =
L(
"How far apart the branches need to be when they touch the model. "
2963 "Making this distance small will cause the tree support to touch the model at more points, "
2964 "causing better overhang but making support harder to remove.");
2967
2969 def->label =
L(
"Branch Density");
2970 def->category =
L(
"Support material");
2971
2972 def->tooltip =
L(
"Adjusts the density of the support structure used to generate the tips of the branches. "
2973 "A higher value results in better overhangs but the supports are harder to remove, "
2974 "thus it is recommended to enable top support interfaces instead of a high branch density value "
2975 "if dense interfaces are needed.");
2976 def->sidetext =
L(
"%");
2977 def->min = 5;
2978 def->max_literal = 35;
2980 def->set_default_value(new ConfigOptionPercent(15));
2981
2983 def->label =
L(
"Other layers");
2984 def->tooltip =
L(
"Nozzle temperature for layers after the first one. Set this to zero to disable "
2985 "temperature control commands in the output G-code.");
2986 def->sidetext =
L(
"°C");
2987 def->full_label =
L(
"Nozzle temperature");
2988 def->min = 0;
2991
2992 def = this->
add(
"thick_bridges",
coBool);
2993 def->label =
L(
"Thick bridges");
2994 def->category =
L(
"Layers and Perimeters");
2995 def->tooltip =
L(
"If enabled, bridges are more reliable, can bridge longer distances, but may look worse. "
2996 "If disabled, bridges look better but are reliable just for shorter bridged distances.");
2999
3001 def->label =
L(
"Detect thin walls");
3002 def->category =
L(
"Layers and Perimeters");
3003 def->tooltip =
L(
"Detect single-width walls (parts where two extrusions don't fit and we need "
3004 "to collapse them into a single trace).");
3007
3009 def->label =
L(
"Threads");
3010 def->tooltip =
L(
"Threads are used to parallelize long-running tasks. Optimal threads number "
3011 "is slightly above the number of available cores/processors.");
3012 def->readonly = true;
3013 def->min = 1;
3014 {
3015 int threads = (unsigned int)boost::thread::hardware_concurrency();
3016 def->set_default_value(new ConfigOptionInt(threads > 0 ? threads : 2));
3018 }
3019
3021 def->label =
L(
"Tool change G-code");
3022 def->tooltip =
L(
"This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings "
3023 "as well as {toolchange_z}, {previous_extruder} and {next_extruder} can be used. When a tool-changing command "
3024 "which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. "
3025 "It is therefore possible to script custom behaviour both before and after the toolchange.");
3026 def->multiline = true;
3027 def->full_width = true;
3028 def->height = 5;
3030 def->set_default_value(new ConfigOptionString(""));
3031
3033 def->label =
L(
"Top solid infill");
3034 def->category =
L(
"Extrusion Width");
3035 def->tooltip =
L(
"Set this to a non-zero value to set a manual extrusion width for infill for top surfaces. "
3036 "You may want to use thinner extrudates to fill all narrow regions and get a smoother finish. "
3037 "If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. "
3038 "If expressed as percentage (for example 90%) it will be computed over layer height.");
3039 def->sidetext =
L(
"mm or %");
3040 def->min = 0;
3041 def->max_literal = 50;
3043 def->set_default_value(new ConfigOptionFloatOrPercent(0, false));
3044
3046 def->label =
L(
"Top solid infill");
3047 def->category =
L(
"Speed");
3048 def->tooltip =
L(
"Speed for printing top solid layers (it only applies to the uppermost "
3049 "external layers and not to their internal solid layers). You may want "
3050 "to slow down this to get a nicer surface finish. This can be expressed "
3051 "as a percentage (for example: 80%) over the solid infill speed above. "
3052 "Set to zero for auto.");
3053 def->sidetext =
L(
"mm/s or %");
3054 def->ratio_over = "solid_infill_speed";
3055 def->min = 0;
3057 def->set_default_value(new ConfigOptionFloatOrPercent(15, false));
3058
3059 def = this->
add(
"top_solid_layers",
coInt);
3060
3061 def->label =
L_CONTEXT(
"Top",
"Layers");
3062 def->category =
L(
"Layers and Perimeters");
3063 def->tooltip =
L(
"Number of solid layers to generate on top surfaces.");
3064 def->full_label =
L(
"Top solid layers");
3065 def->min = 0;
3066 def->set_default_value(new ConfigOptionInt(3));
3067
3068 def = this->
add(
"top_solid_min_thickness",
coFloat);
3069 def->label =
L_CONTEXT(
"Top",
"Layers");
3070 def->category =
L(
"Layers and Perimeters");
3071 def->tooltip =
L(
"The number of top solid layers is increased above top_solid_layers if necessary to satisfy "
3072 "minimum thickness of top shell."
3073 " This is useful to prevent pillowing effect when printing with variable layer height.");
3074 def->full_label =
L(
"Minimum top shell thickness");
3075 def->sidetext =
L(
"mm");
3076 def->min = 0;
3078
3080 def->label =
L(
"Travel");
3081 def->tooltip =
L(
"Speed for travel moves (jumps between distant extrusion points).");
3082 def->sidetext =
L(
"mm/s");
3083 def->aliases = { "travel_feed_rate" };
3084 def->min = 1;
3087
3089 def->label =
L(
"Z travel");
3090 def->tooltip =
L(
"Speed for movements along the Z axis.\nWhen set to zero, the value "
3091 "is ignored and regular travel speed is used instead.");
3092 def->sidetext =
L(
"mm/s");
3093 def->min = 0;
3096
3097 def = this->
add(
"use_firmware_retraction",
coBool);
3098 def->label =
L(
"Use firmware retraction");
3099 def->tooltip =
L(
"This experimental setting uses G10 and G11 commands to have the firmware "
3100 "handle the retraction. This is only supported in recent Marlin.");
3103
3104 def = this->
add(
"use_relative_e_distances",
coBool);
3105 def->label =
L(
"Use relative E distances");
3106 def->tooltip =
L(
"If your firmware requires relative E values, check this, "
3107 "otherwise leave it unchecked. Most firmwares use absolute values.");
3110
3111 def = this->
add(
"use_volumetric_e",
coBool);
3112 def->label =
L(
"Use volumetric E");
3113 def->tooltip =
L(
"This experimental setting uses outputs the E values in cubic millimeters "
3114 "instead of linear millimeters. If your firmware doesn't already know "
3115 "filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' "
3116 "in your start G-code in order to turn volumetric mode on and use the filament "
3117 "diameter associated to the filament selected in Slic3r. This is only supported "
3118 "in recent Marlin.");
3121
3122 def = this->
add(
"variable_layer_height",
coBool);
3123 def->label =
L(
"Enable variable layer height feature");
3124 def->tooltip =
L(
"Some printers or printer setups may have difficulties printing "
3125 "with a variable layer height. Enabled by default.");
3128
3130 def->label =
L(
"Wipe while retracting");
3131 def->tooltip =
L(
"This flag will move the nozzle while retracting to minimize the possible blob "
3132 "on leaky extruders.");
3135
3137 def->label =
L(
"Enable");
3138 def->tooltip =
L(
"Multi material printers may need to prime or purge extruders on tool changes. "
3139 "Extrude the excess material into the wipe tower.");
3142
3143 def = this->
add(
"wiping_volumes_extruders",
coFloats);
3144 def->label =
L(
"Purging volumes - load/unload volumes");
3145 def->tooltip =
L(
"This vector saves required volumes to change from/to each tool used on the "
3146 "wipe tower. These values are used to simplify creation of the full purging "
3147 "volumes below.");
3148 def->set_default_value(
new ConfigOptionFloats { 70., 70., 70., 70., 70., 70., 70., 70., 70., 70. });
3149
3150 def = this->
add(
"wiping_volumes_matrix",
coFloats);
3151 def->label =
L(
"Purging volumes - matrix");
3152 def->tooltip =
L(
"This matrix describes volumes (in cubic milimetres) required to purge the"
3153 " new filament on the wipe tower for any given pair of tools.");
3155 140., 0., 140., 140., 140.,
3156 140., 140., 0., 140., 140.,
3157 140., 140., 140., 0., 140.,
3158 140., 140., 140., 140., 0. });
3159
3161 def->label =
L(
"Position X");
3162 def->tooltip =
L(
"X coordinate of the left front corner of a wipe tower");
3163 def->sidetext =
L(
"mm");
3166
3168 def->label =
L(
"Position Y");
3169 def->tooltip =
L(
"Y coordinate of the left front corner of a wipe tower");
3170 def->sidetext =
L(
"mm");
3173
3174 def = this->
add(
"wipe_tower_width",
coFloat);
3175 def->label =
L(
"Width");
3176 def->tooltip =
L(
"Width of a wipe tower");
3177 def->sidetext =
L(
"mm");
3180
3181 def = this->
add(
"wipe_tower_rotation_angle",
coFloat);
3182 def->label =
L(
"Wipe tower rotation angle");
3183 def->tooltip =
L(
"Wipe tower rotation angle with respect to x-axis.");
3184 def->sidetext =
L(
"°");
3187
3188 def = this->
add(
"wipe_tower_brim_width",
coFloat);
3189 def->label =
L(
"Wipe tower brim width");
3190 def->tooltip =
L(
"Wipe tower brim width");
3191 def->sidetext =
L(
"mm");
3193 def->min = 0.;
3195
3196 def = this->
add(
"wipe_tower_cone_angle",
coFloat);
3197 def->label =
L(
"Stabilization cone apex angle");
3198 def->tooltip =
L(
"Angle at the apex of the cone that is used to stabilize the wipe tower. "
3199 "Larger angle means wider base.");
3200 def->sidetext =
L(
"°");
3202 def->min = 0.;
3203 def->max = 90.;
3205
3206 def = this->
add(
"wipe_tower_extra_spacing",
coPercent);
3207 def->label =
L(
"Wipe tower purge lines spacing");
3208 def->tooltip =
L(
"Spacing of purge lines on the wipe tower.");
3209 def->sidetext =
L(
"%");
3211 def->min = 100.;
3212 def->max = 300.;
3213 def->set_default_value(new ConfigOptionPercent(100.));
3214
3215 def = this->
add(
"wipe_into_infill",
coBool);
3216 def->category =
L(
"Wipe options");
3217 def->label =
L(
"Wipe into this object's infill");
3218 def->tooltip =
L(
"Purging after toolchange will be done inside this object's infills. "
3219 "This lowers the amount of waste but may result in longer print time "
3220 " due to additional travel moves.");
3222
3223 def = this->
add(
"wipe_into_objects",
coBool);
3224 def->category =
L(
"Wipe options");
3225 def->label =
L(
"Wipe into this object");
3226 def->tooltip =
L(
"Object will be used to purge the nozzle after a toolchange to save material "
3227 "that would otherwise end up in the wipe tower and decrease print time. "
3228 "Colours of the objects will be mixed as a result.");
3230
3231 def = this->
add(
"wipe_tower_bridging",
coFloat);
3232 def->label =
L(
"Maximal bridging distance");
3233 def->tooltip =
L(
"Maximal distance between supports on sparse infill sections.");
3234 def->sidetext =
L(
"mm");
3237
3238 def = this->
add(
"wipe_tower_extruder",
coInt);
3239 def->label =
L(
"Wipe tower extruder");
3240 def->category =
L(
"Extruders");
3241 def->tooltip =
L(
"The extruder to use when printing perimeter of the wipe tower. "
3242 "Set to 0 to use the one that is available (non-soluble would be preferred).");
3243 def->min = 0;
3245 def->set_default_value(new ConfigOptionInt(0));
3246
3247 def = this->
add(
"solid_infill_every_layers",
coInt);
3248 def->label =
L(
"Solid infill every");
3249 def->category =
L(
"Infill");
3250 def->tooltip =
L(
"This feature allows to force a solid layer every given number of layers. "
3251 "Zero to disable. You can set this to any value (for example 9999); "
3252 "Slic3r will automatically choose the maximum possible number of layers "
3253 "to combine according to nozzle diameter and layer height.");
3254 def->sidetext =
L(
"layers");
3255 def->min = 0;
3257 def->set_default_value(new ConfigOptionInt(0));
3258
3259 def = this->
add(
"xy_size_compensation",
coFloat);
3260 def->label =
L(
"XY Size Compensation");
3261 def->category =
L(
"Advanced");
3262 def->tooltip =
L(
"The object will be grown/shrunk in the XY plane by the configured value "
3263 "(negative = inwards, positive = outwards). This might be useful "
3264 "for fine-tuning hole sizes.");
3265 def->sidetext =
L(
"mm");
3268
3270 def->label =
L(
"Z offset");
3271 def->tooltip =
L(
"This value will be added (or subtracted) from all the Z coordinates "
3272 "in the output G-code. It is used to compensate for bad Z endstop position: "
3273 "for example, if your endstop zero actually leaves the nozzle 0.3mm far "
3274 "from the print bed, set this to -0.3 (or fix your endstop).");
3275 def->sidetext =
L(
"mm");
3278
3279 def = this->
add(
"perimeter_generator",
coEnum);
3280 def->label =
L(
"Perimeter generator");
3281 def->category =
L(
"Layers and Perimeters");
3282 def->tooltip =
L(
"Classic perimeter generator produces perimeters with constant extrusion width and for "
3283 "very thin areas is used gap-fill. "
3284 "Arachne engine produces perimeters with variable extrusion width. "
3285 "This setting also affects the Concentric infill.");
3287 {
"classic",
L(
"Classic") },
3288 {
"arachne",
L(
"Arachne") }
3289 });
3292
3294 def->label =
L(
"Perimeter transition length");
3295 def->category =
L(
"Advanced");
3296 def->tooltip =
L(
"When transitioning between different numbers of perimeters as the part becomes "
3297 "thinner, a certain amount of space is allotted to split or join the perimeter segments. "
3298 "If expressed as a percentage (for example 100%), it will be computed based on the nozzle diameter.");
3299 def->sidetext =
L(
"mm or %");
3301 def->min = 0;
3302 def->set_default_value(new ConfigOptionFloatOrPercent(100, true));
3303
3305 def->label =
L(
"Perimeter transitioning filter margin");
3306 def->category =
L(
"Advanced");
3307 def->tooltip =
L(
"Prevent transitioning back and forth between one extra perimeter and one less. This "
3308 "margin extends the range of extrusion widths which follow to [Minimum perimeter width "
3309 "- margin, 2 * Minimum perimeter width + margin]. Increasing this margin "
3310 "reduces the number of transitions, which reduces the number of extrusion "
3311 "starts/stops and travel time. However, large extrusion width variation can lead to "
3312 "under- or overextrusion problems. "
3313 "If expressed as a percentage (for example 25%), it will be computed based on the nozzle diameter.");
3314 def->sidetext =
L(
"mm or %");
3316 def->min = 0;
3317 def->set_default_value(new ConfigOptionFloatOrPercent(25, true));
3318
3319 def = this->
add(
"wall_transition_angle",
coFloat);
3320 def->label =
L(
"Perimeter transitioning threshold angle");
3321 def->category =
L(
"Advanced");
3322 def->tooltip =
L(
"When to create transitions between even and odd numbers of perimeters. A wedge shape with"
3323 " an angle greater than this setting will not have transitions and no perimeters will be "
3324 "printed in the center to fill the remaining space. Reducing this setting reduces "
3325 "the number and length of these center perimeters, but may leave gaps or overextrude.");
3326 def->sidetext =
L(
"°");
3328 def->min = 1.;
3329 def->max = 59.;
3331
3332 def = this->
add(
"wall_distribution_count",
coInt);
3333 def->label =
L(
"Perimeter distribution count");
3334 def->category =
L(
"Advanced");
3335 def->tooltip =
L(
"The number of perimeters, counted from the center, over which the variation needs to be "
3336 "spread. Lower values mean that the outer perimeters don't change in width.");
3338 def->min = 1;
3339 def->set_default_value(new ConfigOptionInt(1));
3340
3342 def->label =
L(
"Minimum feature size");
3343 def->category =
L(
"Advanced");
3344 def->tooltip =
L(
"Minimum thickness of thin features. Model features that are thinner than this value will "
3345 "not be printed, while features thicker than the Minimum feature size will be widened to "
3346 "the Minimum perimeter width. "
3347 "If expressed as a percentage (for example 25%), it will be computed based on the nozzle diameter.");
3348 def->sidetext =
L(
"mm or %");
3350 def->min = 0;
3351 def->set_default_value(new ConfigOptionFloatOrPercent(25, true));
3352
3354 def->label =
L(
"Minimum perimeter width");
3355 def->category =
L(
"Advanced");
3356 def->tooltip =
L(
"Width of the perimeter that will replace thin features (according to the Minimum feature size) "
3357 "of the model. If the Minimum perimeter width is thinner than the thickness of the feature,"
3358 " the perimeter will become as thick as the feature itself. "
3359 "If expressed as a percentage (for example 85%), it will be computed based on the nozzle diameter.");
3360 def->sidetext =
L(
"mm or %");
3362 def->min = 0;
3363 def->set_default_value(new ConfigOptionFloatOrPercent(85, true));
3364
3365
3366 for (const char *opt_key : {
3367
3368 "retract_length", "retract_lift", "retract_lift_above", "retract_lift_below", "retract_speed", "deretract_speed", "retract_restart_extra", "retract_before_travel",
3369
3370 "retract_layer_change", "wipe",
3371
3372 "retract_before_wipe"}) {
3373 auto it_opt =
options.find(opt_key);
3374 assert(it_opt !=
options.end());
3375 def = this->
add_nullable(std::string(
"filament_") + opt_key, it_opt->second.type);
3376 def->label = it_opt->second.label;
3377 def->full_label = it_opt->second.full_label;
3378 def->tooltip = it_opt->second.tooltip;
3379 def->sidetext = it_opt->second.sidetext;
3380 def->mode = it_opt->second.mode;
3381 switch (def->type) {
3385 default: assert(false);
3386 }
3387 }
3388}
ConfigOptionDef * add_nullable(const t_config_option_key &opt_key, ConfigOptionType type)
Definition Config.cpp:299
Definition clonable_ptr.hpp:28
typedef void(GLAPIENTRYP _GLUfuncptr)(void)
const int max_temp
Definition PrintConfig.cpp:231
GCodeFlavor
Definition PrintConfig.hpp:34
@ gcfRepRapSprinter
Definition PrintConfig.hpp:35
@ comSimple
Definition Config.hpp:198
BrimType
Definition PrintConfig.hpp:117
@ btOuterOnly
Definition PrintConfig.hpp:119
InfillPattern
Definition PrintConfig.hpp:60
@ ipStars
Definition PrintConfig.hpp:61
@ ipMonotonic
Definition PrintConfig.hpp:61
SeamPosition
Definition PrintConfig.hpp:97
@ spAligned
Definition PrintConfig.hpp:98
SupportMaterialInterfacePattern
Definition PrintConfig.hpp:93
@ smipRectilinear
Definition PrintConfig.hpp:94
SlicingMode
Definition PrintConfig.hpp:76
ConfigOptionPercentsTempl< true > ConfigOptionPercentsNullable
Definition Config.hpp:1009
ConfigOptionPercentsTempl< false > ConfigOptionPercents
Definition Config.hpp:1008
PrintHostType
Definition PrintConfig.hpp:46
@ htPrusaLink
Definition PrintConfig.hpp:47
ConfigOptionFloatsTempl< true > ConfigOptionFloatsNullable
Definition Config.hpp:717
SupportMaterialPattern
Definition PrintConfig.hpp:85
@ smpRectilinear
Definition PrintConfig.hpp:86
FuzzySkinType
Definition PrintConfig.hpp:54
ConfigOptionBoolsTempl< true > ConfigOptionBoolsNullable
Definition Config.hpp:1492
ConfigOptionBoolsTempl< false > ConfigOptionBools
Definition Config.hpp:1491
IroningType
Definition PrintConfig.hpp:68
SupportMaterialStyle
Definition PrintConfig.hpp:89
@ smsGrid
Definition PrintConfig.hpp:90
ConfigOptionFloatsTempl< false > ConfigOptionFloats
Definition Config.hpp:716
ConfigOptionIntsTempl< false > ConfigOptionInts
Definition Config.hpp:844
@ coBools
Definition Config.hpp:192
@ coPercents
Definition Config.hpp:178
@ coFloats
Definition Config.hpp:166
ConfigOptionEnum< MachineLimitsUsage >
Definition PrintConfig.hpp:634
MachineLimitsUsage
Definition PrintConfig.hpp:39
DraftShield
Definition PrintConfig.hpp:124
@ dsDisabled
Definition PrintConfig.hpp:125
PerimeterGeneratorType
Definition PrintConfig.hpp:129
#define L_CONTEXT(s, context)
Definition I18N.hpp:22