diff --git a/Build.PL b/Build.PL
index 31ec9cf82..e006d11eb 100644
--- a/Build.PL
+++ b/Build.PL
@@ -40,10 +40,7 @@ if ($gui) {
Socket 2.016
);
%recommends = qw(
- Growl::GNTP 0.15
Wx::GLCanvas 0
- LWP::UserAgent 0
- Net::Bonjour 0
);
if ($^O eq 'MSWin32') {
$recommends{"Win32::TieRegistry"} = 0;
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 43d7dee70..cb3d6dfd6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,12 +42,31 @@ message("PATH: $ENV{PATH}")
message("PERL5LIB: $ENV{PERL5LIB}")
find_package(Perl REQUIRED)
+# CMAKE_PREFIX_PATH is used to point CMake to the remaining dependencies (Boost, TBB, ...)
+# We pick it from environment if it is not defined in another way
+if(NOT DEFINED CMAKE_PREFIX_PATH)
+ if(DEFINED ENV{CMAKE_PREFIX_PATH})
+ set(CMAKE_PREFIX_PATH "$ENV{CMAKE_PREFIX_PATH}")
+ endif()
+endif()
+
add_subdirectory(xs)
-enable_testing ()
get_filename_component(PERL_BIN_PATH "${PERL_EXECUTABLE}" DIRECTORY)
-add_test (NAME xs COMMAND "${PERL_EXECUTABLE}" ${PERL_BIN_PATH}/prove -I ${PROJECT_SOURCE_DIR}/local-lib/lib/perl5 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/xs)
-add_test (NAME integration COMMAND "${PERL_EXECUTABLE}" ${PERL_BIN_PATH}/prove WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
+if (MSVC)
+ # By default the startup project in MSVC is the 'ALL_BUILD' cmake-created project,
+ # but we want 'slic3r' as the startup one because debugging run command is associated with it.
+ # (Unfortunatelly it cannot be associated with ALL_BUILD using CMake.)
+ # Note: For some reason this needs to be set in the top-level CMakeLists.txt
+ set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT XS)
+ set(PERL_PROVE "${PERL_BIN_PATH}/prove.bat")
+else ()
+ set(PERL_PROVE "${PERL_BIN_PATH}/prove")
+endif ()
+
+enable_testing ()
+add_test (NAME xs COMMAND "${PERL_EXECUTABLE}" ${PERL_PROVE} -I ${PROJECT_SOURCE_DIR}/local-lib/lib/perl5 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/xs)
+add_test (NAME integration COMMAND "${PERL_EXECUTABLE}" ${PERL_PROVE} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
install(PROGRAMS slic3r.pl DESTINATION bin RENAME slic3r-prusa3d)
diff --git a/cmake/modules/FindCURL.cmake b/cmake/modules/FindCURL.cmake
new file mode 100644
index 000000000..b8724858c
--- /dev/null
+++ b/cmake/modules/FindCURL.cmake
@@ -0,0 +1,59 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# FindCURL
+# --------
+#
+# Find curl
+#
+# Find the native CURL headers and libraries.
+#
+# ::
+#
+# CURL_INCLUDE_DIRS - where to find curl/curl.h, etc.
+# CURL_LIBRARIES - List of libraries when using curl.
+# CURL_FOUND - True if curl found.
+# CURL_VERSION_STRING - the version of curl found (since CMake 2.8.8)
+
+# Look for the header file.
+find_path(CURL_INCLUDE_DIR NAMES curl/curl.h)
+mark_as_advanced(CURL_INCLUDE_DIR)
+
+# Look for the library (sorted from most current/relevant entry to least).
+find_library(CURL_LIBRARY NAMES
+ curl
+ # Windows MSVC Makefile:
+ libcurl_a
+ # Windows MSVC prebuilts:
+ curllib
+ libcurl_imp
+ curllib_static
+ # Windows older "Win32 - MSVC" prebuilts (libcurl.lib, e.g. libcurl-7.15.5-win32-msvc.zip):
+ libcurl
+)
+mark_as_advanced(CURL_LIBRARY)
+
+if(CURL_INCLUDE_DIR)
+ foreach(_curl_version_header curlver.h curl.h)
+ if(EXISTS "${CURL_INCLUDE_DIR}/curl/${_curl_version_header}")
+ file(STRINGS "${CURL_INCLUDE_DIR}/curl/${_curl_version_header}" curl_version_str REGEX "^#define[\t ]+LIBCURL_VERSION[\t ]+\".*\"")
+
+ string(REGEX REPLACE "^#define[\t ]+LIBCURL_VERSION[\t ]+\"([^\"]*)\".*" "\\1" CURL_VERSION_STRING "${curl_version_str}")
+ unset(curl_version_str)
+ break()
+ endif()
+ endforeach()
+endif()
+
+find_package_handle_standard_args(CURL
+ REQUIRED_VARS CURL_LIBRARY CURL_INCLUDE_DIR
+ VERSION_VAR CURL_VERSION_STRING)
+
+if(CURL_FOUND)
+ set(CURL_LIBRARIES ${CURL_LIBRARY})
+ set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR})
+
+ message(STATUS " Curl libraries: = ${CURL_LIBRARIES}")
+ message(STATUS " Curl include dirs: = ${CURL_INCLUDE_DIRS}")
+endif()
diff --git a/cmake/msvc/xs.wperl64d.props b/cmake/msvc/xs.wperl64d.props
new file mode 100644
index 000000000..b604a56e2
--- /dev/null
+++ b/cmake/msvc/xs.wperl64d.props
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ $(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(FxCopDir);$(PATH);c:\wperl64d\bin\;
+
+
+
+
+
+ C:\wperl64d\bin\perl.exe
+ slic3r.pl
+ WindowsLocalDebugger
+ ..\..
+
+
diff --git a/doc/How to build - UNIX.md b/doc/How to build - UNIX.md
new file mode 100644
index 000000000..77ce54419
--- /dev/null
+++ b/doc/How to build - UNIX.md
@@ -0,0 +1,2 @@
+# Building Slic3r PE on Linux/UNIX
+
diff --git a/doc/How to build - Windows.md b/doc/How to build - Windows.md
new file mode 100644
index 000000000..104720b34
--- /dev/null
+++ b/doc/How to build - Windows.md
@@ -0,0 +1,92 @@
+# Building Slic3r PE on Microsoft Windows
+
+The currently supported way of building Slic3r PE on Windows is with MS Visual Studio 2013
+using our Perl binary distribution (compiled from official Perl sources).
+You can use the free [Visual Studio 2013 Community Edition](https://www.visualstudio.com/vs/older-downloads/).
+
+Other setups (such as mingw + Strawberry Perl) _may_ work, but we cannot guarantee this will work
+and cannot provide guidance.
+
+
+### Geting the dependencies
+
+First, download and upnack our Perl + wxWidgets binary distribution:
+
+ - 32 bit, release mode: [wperl32-5.24.0-2018-03-02.7z](https://bintray.com/vojtechkral/Slic3r-PE/download_file?file_path=wperl32-5.24.0-2018-03-02.7z)
+ - 64 bit, release mode: [wperl64-5.24.0-2018-03-02.7z](https://bintray.com/vojtechkral/Slic3r-PE/download_file?file_path=wperl64-5.24.0-2018-03-02.7z)
+ - 64 bit, release mode + debug symbols: [wperl64d-5.24.0-2018-03-02.7z](https://bintray.com/vojtechkral/Slic3r-PE/download_file?file_path=wperl64d-5.24.0-2018-03-02.7z)
+
+It is recommended to unpack this package into `C:\`.
+
+Apart from wxWidgets and Perl, you will also need additional dependencies:
+
+ - Boost
+ - Intel TBB
+ - libcurl
+
+We have prepared a binary package of the listed libraries:
+
+ - 32 bit: [slic3r-destdir-32.7z](https://bintray.com/vojtechkral/Slic3r-PE/download_file?file_path=slic3r-destdir-32.7z)
+ - 64 bit: [slic3r-destdir-64.7z](https://bintray.com/vojtechkral/Slic3r-PE/download_file?file_path=slic3r-destdir-64.7z)
+
+It is recommended you unpack this package into `C:\local\` as the environment
+setup script expects it there.
+
+Alternatively you can also compile the additional dependencies yourself.
+There is a [powershell script](./deps-build/windows/slic3r-makedeps.ps1) which automates this process.
+
+### Building Slic3r PE
+
+Once the dependencies are set up in their respective locations,
+go to the `wperl*` directory extracted earlier and launch the `cmdline.lnk` file
+which opens a command line prompt with appropriate environment variables set up.
+
+In this command line, `cd` into the directory with Slic3r sources
+and use these commands to build the Slic3r from the command line:
+
+ perl Build.PL
+ perl Build.PL --gui
+ mkdir build
+ cd build
+ cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release
+ nmake
+ cd ..
+ perl slic3r.pl
+
+The above commands use `nmake` Makefiles.
+You may also build Slic3r PE with other build tools:
+
+
+### Building with Visual Studio
+
+To build and debug Slic3r PE with Visual Studio (64 bits), replace the `cmake` command with:
+
+ cmake .. -G "Visual Studio 12 Win64" -DCMAKE_CONFIGURATION_TYPES=RelWithDebInfo
+
+For the 32-bit variant, use:
+
+ cmake .. -G "Visual Studio 12" -DCMAKE_CONFIGURATION_TYPES=RelWithDebInfo
+
+After `cmake` has finished, go to the build directory and open the `Slic3r.sln` solution file.
+This should open Visual Studio and load the Slic3r solution containing all the projects.
+Make sure you use Visual Studio 2013 to open the solution.
+
+You can then use the usual Visual Studio controls to build Slic3r (Hit `F5` to build and run with debugger).
+If you want to run or debug Slic3r from within Visual Studio, make sure the `XS` project is activated.
+It should be set as the Startup project by CMake by default, but you might want to check anyway.
+There are multiple projects in the Slic3r solution, but only the `XS` project is configured with the right
+commands to run and debug Slic3r.
+
+The above cmake commands generate Visual Studio project files with the `RelWithDebInfo` configuration only.
+If you also want to use the `Release` configuration, you can generate Visual Studio projects with:
+
+ -DCMAKE_CONFIGURATION_TYPES=Release;RelWithDebInfo
+
+(The `Debug` configuration is not supported as of now.)
+
+### Building with ninja
+
+To use [Ninja](https://ninja-build.org/), replace the `cmake` and `nmake` commands with:
+
+ cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release
+ ninja
diff --git a/doc/deps-build/unix-static/Makefile b/doc/deps-build/unix-static/Makefile
new file mode 100644
index 000000000..21740bc53
--- /dev/null
+++ b/doc/deps-build/unix-static/Makefile
@@ -0,0 +1,135 @@
+
+#
+# This makefile downloads, configures and builds Slic3r PE dependencies for Unix.
+# (That is, all dependencies except perl + wxWidgets.)
+# The libraries are installed in DESTDIR, which you can customize like so:
+#
+# DESTDIR=foo/bar make
+#
+# The default DESTDIR is ~/slic3r-destdir
+# If the DESTDIR doesn't exits, the makefile tries to create it
+#
+# To pass the DESTDIR path along to cmake, set the use CMAKE_PREFIX_PATH variable
+# and set it to $DESTDIR/usr/local
+#
+# You can also customize the NPROC variable in the same way to configure the number
+# of cores the build process uses. By default this is set to what the `nproc` command says.
+#
+
+
+DESTDIR ?= $(HOME)/slic3r-destdir
+NPROC ?= $(shell nproc)
+
+
+BOOST = boost_1_66_0
+TBB_SHA = a0dc9bf76d0120f917b641ed095360448cabc85b
+TBB = tbb-$(TBB_SHA)
+OPENSSL = openssl-OpenSSL_1_1_0g
+CURL = curl-7.58.0
+
+.PHONY: all destdir boost libcurl libopenssl libtbb
+
+all: destdir boost libtbb libcurl
+ @echo
+ @echo "All done!"
+ @echo
+
+destdir:
+ mkdir -p $(DESTDIR)
+
+
+
+boost: $(BOOST).tar.gz
+ tar -zxvf $(BOOST).tar.gz
+ cd $(BOOST) && ./bootstrap.sh --with-libraries=system,filesystem,thread,log,locale,regex --prefix=$(DESTDIR)/usr/local
+ cd $(BOOST) && ./b2 \
+ -j $(NPROC) \
+ link=static \
+ variant=release \
+ threading=multi \
+ boost.locale.icu=off \
+ cxxflags=-fPIC cflags=-fPIC \
+ install
+
+$(BOOST).tar.gz:
+ curl -L -o $@ https://dl.bintray.com/boostorg/release/1.66.0/source/$@
+
+
+
+libtbb: $(TBB).tar.gz
+ tar -zxvf $(TBB).tar.gz
+ mkdir -p $(TBB)/mybuild
+ cd $(TBB)/mybuild && cmake .. -DTBB_BUILD_SHARED=OFF -DTBB_BUILD_TESTS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+ $(MAKE) -C $(TBB)/mybuild -j$(NPROC)
+ $(MAKE) -C $(TBB)/mybuild install DESTDIR=$(DESTDIR)
+
+$(TBB).tar.gz:
+ curl -L -o $@ https://github.com/wjakob/tbb/archive/$(TBB_SHA).tar.gz
+
+
+# Note: libcurl build system seems to be a bit wonky about finding openssl (cf. #2378).
+# It seems that currently the only working option is to set a prefix in the openssl build
+# and use the `--with-ssl=...` option in libcurl.
+# Additionally, pkg-config needs to be installed and openssl libs need to NOT be installed on the build system.
+
+libopenssl: $(OPENSSL).tar.gz
+ tar -zxvf $(OPENSSL).tar.gz
+ cd $(OPENSSL) && ./config --prefix=$(DESTDIR)/usr/local no-shared no-ssl3-method no-dynamic-engine '-Wa,--noexecstack'
+ $(MAKE) -C $(OPENSSL) depend
+ $(MAKE) -C $(OPENSSL) -j$(NPROC)
+ $(MAKE) -C $(OPENSSL) install_sw
+
+$(OPENSSL).tar.gz:
+ curl -L -o $@ 'https://github.com/openssl/openssl/archive/OpenSSL_1_1_0g.tar.gz'
+
+
+
+libcurl: libopenssl $(CURL).tar.gz
+ tar -zxvf $(CURL).tar.gz
+ cd $(CURL) && ./configure \
+ --enable-static \
+ --disable-shared \
+ --with-ssl=$(DESTDIR)/usr/local \
+ --with-pic \
+ --enable-ipv6 \
+ --enable-versioned-symbols \
+ --enable-threaded-resolver \
+ --with-random=/dev/urandom \
+ --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt \
+ --disable-ldap \
+ --disable-ldaps \
+ --disable-manual \
+ --disable-rtsp \
+ --disable-dict \
+ --disable-telnet \
+ --disable-pop3 \
+ --disable-imap \
+ --disable-smb \
+ --disable-smtp \
+ --disable-gopher \
+ --disable-crypto-auth \
+ --without-gssapi \
+ --without-libpsl \
+ --without-libidn2 \
+ --without-gnutls \
+ --without-polarssl \
+ --without-mbedtls \
+ --without-cyassl \
+ --without-nss \
+ --without-axtls \
+ --without-brotli \
+ --without-libmetalink \
+ --without-libssh \
+ --without-libssh2 \
+ --without-librtmp \
+ --without-nghttp2 \
+ --without-zsh-functions-dir
+ $(MAKE) -C $(CURL) -j$(NPROC)
+ $(MAKE) -C $(CURL) install DESTDIR=$(DESTDIR)
+
+$(CURL).tar.gz:
+ curl -L -o $@ https://curl.haxx.se/download/$@
+
+
+clean:
+ rm -rf $(BOOST) $(BOOST).tar.gz $(TBB) $(TBB).tar.gz $(OPENSSL) $(OPENSSL).tar.gz $(CURL) $(CURL).tar.gz
diff --git a/doc/deps-build/windows/slic3r-makedeps.ps1 b/doc/deps-build/windows/slic3r-makedeps.ps1
new file mode 100644
index 000000000..8b39cae30
--- /dev/null
+++ b/doc/deps-build/windows/slic3r-makedeps.ps1
@@ -0,0 +1,141 @@
+#!powershell
+#
+# This script downloads, configures and builds Slic3r PE dependencies for Unix.
+# (That is, all dependencies except perl + wxWidgets.)
+#
+# To use this script, launch the Visual Studio command line,
+# `cd` into the directory containing this script and use this command:
+#
+# powershell .\slic3r-makedeps.ps1
+#
+# The dependencies will be downloaded and unpacked into the current dir.
+# This script WILL NOT try to guess the build architecture (64 vs 32 bits),
+# it will by default build the 64-bit variant. To build the 32-bit variant, use:
+#
+# powershell .\slic3r-makedeps.ps1 -b32
+#
+# Built libraries are installed into $destdir,
+# which by default is C:\local\slic3r-destdir-$bits
+# You can customize the $destdir using:
+#
+# powershell .\slic3r-makedeps.ps1 -destdir C:\foo\bar
+#
+# To pass the $destdir path along to cmake, set the use CMAKE_PREFIX_PATH variable
+# and set it to $destdir\usr\local
+#
+# Script requirements: PowerShell 3.0, .NET 4.5
+#
+
+
+param(
+ [switch]$b32 = $false,
+ [string]$destdir = ""
+)
+
+if ($destdir -eq "") {
+ $destdir = "C:\local\slic3r-destdir-" + ('32', '64')[!$b32]
+}
+
+$BOOST = 'boost_1_63_0'
+$CURL = 'curl-7.28.0'
+$TBB_SHA = 'a0dc9bf76d0120f917b641ed095360448cabc85b'
+$TBB = "tbb-$TBB_SHA"
+
+
+try
+{
+
+
+# Set up various settings and utilities:
+[Environment]::CurrentDirectory = Get-Location
+$NPROC = (Get-WmiObject -class Win32_processor).NumberOfLogicalProcessors
+Add-Type -A System.IO.Compression.FileSystem
+# This fxies SSL/TLS errors, credit goes to Ansible; see their `win_get_url.ps1` file
+$security_protcols = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::SystemDefault
+if ([Net.SecurityProtocolType].GetMember('Tls11').Count -gt 0) {
+ $security_protcols = $security_protcols -bor [Net.SecurityProtocolType]::Tls11
+}
+if ([Net.SecurityProtocolType].GetMember('Tls12').Count -gt 0) {
+ $security_protcols = $security_protcols -bor [Net.SecurityProtocolType]::Tls12
+}
+[Net.ServicePointManager]::SecurityProtocol = $security_protcols
+$webclient = New-Object System.Net.WebClient
+
+
+# Ensure DESTDIR exists:
+mkdir $destdir -ea 0
+mkdir "$destdir\usr\local" -ea 0
+
+
+# Download sources:
+echo 'Downloading sources ...'
+if (!(Test-Path "$BOOST.zip")) { $webclient.DownloadFile("https://dl.bintray.com/boostorg/release/1.63.0/source/$BOOST.zip", "$BOOST.zip") }
+if (!(Test-Path "$TBB.zip")) { $webclient.DownloadFile("https://github.com/wjakob/tbb/archive/$TBB_SHA.zip", "$TBB.zip") }
+if (!(Test-Path "$CURL.zip")) { $webclient.DownloadFile("https://curl.haxx.se/download/$CURL.zip", ".\$CURL.zip") }
+
+
+# Unpack sources:
+echo 'Unpacking ...'
+if (!(Test-Path $BOOST)) { [IO.Compression.ZipFile]::ExtractToDirectory("$BOOST.zip", '.') }
+if (!(Test-Path $TBB)) { [IO.Compression.ZipFile]::ExtractToDirectory("$TBB.zip", '.') }
+if (!(Test-Path $CURL)) { [IO.Compression.ZipFile]::ExtractToDirectory("$CURL.zip", '.') }
+
+
+# Build libraries:
+echo 'Building ...'
+
+# Build boost
+pushd "$BOOST"
+.\bootstrap
+$adr_mode = ('32', '64')[!$b32]
+.\b2 `
+ -j "$NPROC" `
+ --with-system `
+ --with-filesystem `
+ --with-thread `
+ --with-log `
+ --with-locale `
+ --with-regex `
+ "--prefix=$destdir/usr/local" `
+ "address-model=$adr_mode" `
+ toolset=msvc-12.0 `
+ link=static `
+ variant=release `
+ threading=multi `
+ boost.locale.icu=off `
+ install
+popd
+
+# Build TBB
+pushd "$TBB"
+mkdir 'mybuild' -ea 0
+cd 'mybuild'
+$generator = ('Visual Studio 12', 'Visual Studio 12 Win64')[!$b32]
+cmake .. `
+ -G "$generator" `
+ -DCMAKE_CONFIGURATION_TYPES=Release `
+ -DTBB_BUILD_SHARED=OFF `
+ -DTBB_BUILD_TESTS=OFF "-DCMAKE_INSTALL_PREFIX:PATH=$destdir\usr\local"
+msbuild /P:Configuration=Release INSTALL.vcxproj
+popd
+
+# Build libcurl:
+pushd "$CURL\winbuild"
+$machine = ("x86", "x64")[!$b32]
+nmake /f Makefile.vc mode=static VC=12 GEN_PDB=yes DEBUG=no "MACHINE=$machine"
+Copy-Item -R -Force ..\builds\libcurl-*-winssl\include\* "$destdir\usr\local\include\"
+Copy-Item -R -Force ..\builds\libcurl-*-winssl\lib\* "$destdir\usr\local\lib\"
+popd
+
+
+echo ""
+echo "All done!"
+echo ""
+
+
+}
+catch [Exception]
+{
+ # This prints errors in a verbose manner
+ echo $_.Exception|format-list -force
+}
diff --git a/lib/Slic3r/GUI.pm b/lib/Slic3r/GUI.pm
index 7a3b30a6b..2bb5c9e4a 100644
--- a/lib/Slic3r/GUI.pm
+++ b/lib/Slic3r/GUI.pm
@@ -34,7 +34,6 @@ use Slic3r::GUI::SystemInfo;
use Wx::Locale gettext => 'L';
our $have_OpenGL = eval "use Slic3r::GUI::3DScene; 1";
-our $have_LWP = eval "use LWP::UserAgent; 1";
use Wx 0.9901 qw(:bitmap :dialog :icon :id :misc :systemsettings :toplevelwindow :filedialog :font);
use Wx::Event qw(EVT_IDLE EVT_COMMAND EVT_MENU);
@@ -117,6 +116,8 @@ sub OnInit {
}
eval { $self->{preset_bundle}->load_selections($self->{app_config}) };
$run_wizard = 1 if $self->{preset_bundle}->has_defauls_only;
+
+ Slic3r::GUI::set_preset_bundle($self->{preset_bundle});
# application frame
Wx::Image::FindHandlerType(wxBITMAP_TYPE_PNG) || Wx::Image::AddHandler(Wx::PNGHandler->new);
diff --git a/lib/Slic3r/GUI/3DScene.pm b/lib/Slic3r/GUI/3DScene.pm
index f9e9e668d..75a154281 100644
--- a/lib/Slic3r/GUI/3DScene.pm
+++ b/lib/Slic3r/GUI/3DScene.pm
@@ -68,6 +68,7 @@ __PACKAGE__->mk_accessors( qw(_quat _dirty init
_zoom
_legend_enabled
+ _warning_enabled
_apply_zoom_to_volumes_filter
) );
@@ -142,6 +143,7 @@ sub new {
$self->_sphi(45);
$self->_zoom(1);
$self->_legend_enabled(0);
+ $self->_warning_enabled(0);
$self->use_plain_shader(0);
$self->_apply_zoom_to_volumes_filter(0);
@@ -217,7 +219,12 @@ sub new {
sub set_legend_enabled {
my ($self, $value) = @_;
- $self->_legend_enabled($value);
+ $self->_legend_enabled($value);
+}
+
+sub set_warning_enabled {
+ my ($self, $value) = @_;
+ $self->_warning_enabled($value);
}
sub Destroy {
@@ -400,6 +407,10 @@ sub mouse_event {
$self->Refresh;
$self->Update;
} else {
+ # The mouse_to_3d gets the Z coordinate from the Z buffer at the screen coordinate $pos->x,y,
+ # an converts the screen space coordinate to unscaled object space.
+ my $pos3d = ($volume_idx == -1) ? undef : $self->mouse_to_3d(@$pos);
+
# Select volume in this 3D canvas.
# Don't deselect a volume if layer editing is enabled. We want the object to stay selected
# during the scene manipulation.
@@ -427,9 +438,6 @@ sub mouse_event {
if ($volume_idx != -1) {
if ($e->LeftDown && $self->enable_moving) {
- # The mouse_to_3d gets the Z coordinate from the Z buffer at the screen coordinate $pos->x,y,
- # an converts the screen space coordinate to unscaled object space.
- my $pos3d = $self->mouse_to_3d(@$pos);
# Only accept the initial position, if it is inside the volume bounding box.
my $volume_bbox = $self->volumes->[$volume_idx]->transformed_bounding_box;
$volume_bbox->offset(1.);
@@ -948,6 +956,9 @@ sub mulquats {
sub mouse_to_3d {
my ($self, $x, $y, $z) = @_;
+ return unless $self->GetContext;
+ $self->SetCurrent($self->GetContext);
+
my @viewport = glGetIntegerv_p(GL_VIEWPORT); # 4 items
my @mview = glGetDoublev_p(GL_MODELVIEW_MATRIX); # 16 items
my @proj = glGetDoublev_p(GL_PROJECTION_MATRIX); # 16 items
@@ -1296,11 +1307,16 @@ sub Render {
}
glEnable(GL_LIGHTING);
-
+
# draw objects
if (! $self->use_plain_shader) {
$self->draw_volumes;
} elsif ($self->UseVBOs) {
+ if ($self->enable_picking) {
+ $self->mark_volumes_for_layer_height;
+ $self->volumes->set_print_box($self->bed_bounding_box->x_min, $self->bed_bounding_box->y_min, 0.0, $self->bed_bounding_box->x_max, $self->bed_bounding_box->y_max, $self->{config}->get('max_print_height'));
+ $self->volumes->update_outside_state($self->{config}, 0);
+ }
$self->{plain_shader}->enable if $self->{plain_shader};
$self->volumes->render_VBOs;
$self->{plain_shader}->disable;
@@ -1327,6 +1343,9 @@ sub Render {
glDisable(GL_BLEND);
}
+ # draw warning message
+ $self->draw_warning;
+
# draw gcode preview legend
$self->draw_legend;
@@ -1345,36 +1364,10 @@ sub draw_volumes {
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
- my $z_cursor_relative = $self->_variable_layer_thickness_bar_mouse_cursor_z_relative;
foreach my $volume_idx (0..$#{$self->volumes}) {
my $volume = $self->volumes->[$volume_idx];
- my $shader_active = 0;
- my $object_id = int($volume->select_group_id / 1000000);
- if ($self->layer_editing_enabled && ! $fakecolor && $volume->selected && $self->{layer_height_edit_shader} &&
- $volume->has_layer_height_texture && $object_id < $self->{print}->object_count) {
- # Update the height texture if the ModelObject::layer_height_texture is invalid.
- $volume->generate_layer_height_texture($self->{print}->get_object($object_id), 0);
- $self->{layer_height_edit_shader}->enable;
- $self->{layer_height_edit_shader}->set_uniform('z_to_texture_row', $volume->layer_height_texture_z_to_row_id);
- $self->{layer_height_edit_shader}->set_uniform('z_texture_row_to_normalized', 1. / $volume->layer_height_texture_height);
- $self->{layer_height_edit_shader}->set_uniform('z_cursor', $volume->bounding_box->z_max * $z_cursor_relative);
- $self->{layer_height_edit_shader}->set_uniform('z_cursor_band_width', $self->{layer_height_edit_band_width});
- glBindTexture(GL_TEXTURE_2D, $self->{layer_preview_z_texture_id});
-# glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_LEVEL, 0);
-# glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1);
- glTexImage2D_c(GL_TEXTURE_2D, 0, GL_RGBA8, $volume->layer_height_texture_width, $volume->layer_height_texture_height,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
- glTexImage2D_c(GL_TEXTURE_2D, 1, GL_RGBA8, $volume->layer_height_texture_width / 2, $volume->layer_height_texture_height / 2,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
-# glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-# glPixelStorei(GL_UNPACK_ROW_LENGTH, $self->{layer_preview_z_texture_width});
- glTexSubImage2D_c(GL_TEXTURE_2D, 0, 0, 0, $volume->layer_height_texture_width, $volume->layer_height_texture_height,
- GL_RGBA, GL_UNSIGNED_BYTE, $volume->layer_height_texture_data_ptr_level0);
- glTexSubImage2D_c(GL_TEXTURE_2D, 1, 0, 0, $volume->layer_height_texture_width / 2, $volume->layer_height_texture_height / 2,
- GL_RGBA, GL_UNSIGNED_BYTE, $volume->layer_height_texture_data_ptr_level1);
- $shader_active = 1;
- } elsif ($fakecolor) {
+ if ($fakecolor) {
# Object picking mode. Render the object with a color encoding the object index.
my $r = ($volume_idx & 0x000000FF) >> 0;
my $g = ($volume_idx & 0x0000FF00) >> 8;
@@ -1389,11 +1382,6 @@ sub draw_volumes {
}
$volume->render;
-
- if ($shader_active) {
- glBindTexture(GL_TEXTURE_2D, 0);
- $self->{layer_height_edit_shader}->disable;
- }
}
glDisableClientState(GL_NORMAL_ARRAY);
glDisable(GL_BLEND);
@@ -1408,6 +1396,22 @@ sub draw_volumes {
glDisableClientState(GL_VERTEX_ARRAY);
}
+sub mark_volumes_for_layer_height {
+ my ($self) = @_;
+
+ foreach my $volume_idx (0..$#{$self->volumes}) {
+ my $volume = $self->volumes->[$volume_idx];
+ my $object_id = int($volume->select_group_id / 1000000);
+ if ($self->layer_editing_enabled && $volume->selected && $self->{layer_height_edit_shader} &&
+ $volume->has_layer_height_texture && $object_id < $self->{print}->object_count) {
+ $volume->set_layer_height_texture_data($self->{layer_preview_z_texture_id}, $self->{layer_height_edit_shader}->shader_program_id,
+ $self->{print}->get_object($object_id), $self->_variable_layer_thickness_bar_mouse_cursor_z_relative, $self->{layer_height_edit_band_width});
+ } else {
+ $volume->reset_layer_height_texture_data();
+ }
+ }
+}
+
sub _load_image_set_texture {
my ($self, $file_name) = @_;
# Load a PNG with an alpha channel.
@@ -1599,31 +1603,65 @@ sub draw_active_object_annotations {
sub draw_legend {
my ($self) = @_;
- if ($self->_legend_enabled)
- {
- # If the legend texture has not been loaded into the GPU, do it now.
- my $tex_id = Slic3r::GUI::_3DScene::finalize_legend_texture;
- if ($tex_id > 0)
- {
- my $tex_w = Slic3r::GUI::_3DScene::get_legend_texture_width;
- my $tex_h = Slic3r::GUI::_3DScene::get_legend_texture_height;
- if (($tex_w > 0) && ($tex_h > 0))
- {
- glDisable(GL_DEPTH_TEST);
- glPushMatrix();
- glLoadIdentity();
-
- my ($cw, $ch) = $self->GetSizeWH;
-
- my $l = (-0.5 * $cw) / $self->_zoom;
- my $t = (0.5 * $ch) / $self->_zoom;
- my $r = $l + $tex_w / $self->_zoom;
- my $b = $t - $tex_h / $self->_zoom;
- $self->_render_texture($tex_id, $l, $r, $b, $t);
+ if (!$self->_legend_enabled) {
+ return;
+ }
- glPopMatrix();
- glEnable(GL_DEPTH_TEST);
- }
+ # If the legend texture has not been loaded into the GPU, do it now.
+ my $tex_id = Slic3r::GUI::_3DScene::finalize_legend_texture;
+ if ($tex_id > 0)
+ {
+ my $tex_w = Slic3r::GUI::_3DScene::get_legend_texture_width;
+ my $tex_h = Slic3r::GUI::_3DScene::get_legend_texture_height;
+ if (($tex_w > 0) && ($tex_h > 0))
+ {
+ glDisable(GL_DEPTH_TEST);
+ glPushMatrix();
+ glLoadIdentity();
+
+ my ($cw, $ch) = $self->GetSizeWH;
+
+ my $l = (-0.5 * $cw) / $self->_zoom;
+ my $t = (0.5 * $ch) / $self->_zoom;
+ my $r = $l + $tex_w / $self->_zoom;
+ my $b = $t - $tex_h / $self->_zoom;
+ $self->_render_texture($tex_id, $l, $r, $b, $t);
+
+ glPopMatrix();
+ glEnable(GL_DEPTH_TEST);
+ }
+ }
+}
+
+sub draw_warning {
+ my ($self) = @_;
+
+ if (!$self->_warning_enabled) {
+ return;
+ }
+
+ # If the warning texture has not been loaded into the GPU, do it now.
+ my $tex_id = Slic3r::GUI::_3DScene::finalize_warning_texture;
+ if ($tex_id > 0)
+ {
+ my $tex_w = Slic3r::GUI::_3DScene::get_warning_texture_width;
+ my $tex_h = Slic3r::GUI::_3DScene::get_warning_texture_height;
+ if (($tex_w > 0) && ($tex_h > 0))
+ {
+ glDisable(GL_DEPTH_TEST);
+ glPushMatrix();
+ glLoadIdentity();
+
+ my ($cw, $ch) = $self->GetSizeWH;
+
+ my $l = (-0.5 * $tex_w) / $self->_zoom;
+ my $t = (-0.5 * $ch + $tex_h) / $self->_zoom;
+ my $r = $l + $tex_w / $self->_zoom;
+ my $b = $t - $tex_h / $self->_zoom;
+ $self->_render_texture($tex_id, $l, $r, $b, $t);
+
+ glPopMatrix();
+ glEnable(GL_DEPTH_TEST);
}
}
}
@@ -1692,57 +1730,77 @@ sub _vertex_shader_Gouraud {
return <<'VERTEX';
#version 110
-#define INTENSITY_CORRECTION 0.7
+#define INTENSITY_CORRECTION 0.6
-#define LIGHT_TOP_DIR -0.6/1.31, 0.6/1.31, 1./1.31
+// normalized values for (-0.6/1.31, 0.6/1.31, 1./1.31)
+const vec3 LIGHT_TOP_DIR = vec3(-0.4574957, 0.4574957, 0.7624929);
#define LIGHT_TOP_DIFFUSE (0.8 * INTENSITY_CORRECTION)
-#define LIGHT_TOP_SPECULAR (0.5 * INTENSITY_CORRECTION)
-#define LIGHT_TOP_SHININESS 50.
+#define LIGHT_TOP_SPECULAR (0.25 * INTENSITY_CORRECTION)
+#define LIGHT_TOP_SHININESS 200.0
-#define LIGHT_FRONT_DIR 1./1.43, 0.2/1.43, 1./1.43
+// normalized values for (1./1.43, 0.2/1.43, 1./1.43)
+const vec3 LIGHT_FRONT_DIR = vec3(0.6985074, 0.1397015, 0.6985074);
#define LIGHT_FRONT_DIFFUSE (0.3 * INTENSITY_CORRECTION)
-#define LIGHT_FRONT_SPECULAR (0.0 * INTENSITY_CORRECTION)
-#define LIGHT_FRONT_SHININESS 50.
+//#define LIGHT_FRONT_SPECULAR (0.0 * INTENSITY_CORRECTION)
+//#define LIGHT_FRONT_SHININESS 5.0
#define INTENSITY_AMBIENT 0.3
-varying float intensity_specular;
-varying float intensity_tainted;
+const vec3 ZERO = vec3(0.0, 0.0, 0.0);
+
+struct PrintBoxDetection
+{
+ vec3 min;
+ vec3 max;
+ // xyz contains the offset, if w == 1.0 detection needs to be performed
+ vec4 volume_origin;
+};
+
+uniform PrintBoxDetection print_box;
+
+// x = tainted, y = specular;
+varying vec2 intensity;
+
+varying vec3 delta_box_min;
+varying vec3 delta_box_max;
void main()
{
- vec3 eye, normal, lightDir, viewVector, halfVector;
- float NdotL, NdotHV;
+ vec3 eye = -normalize((gl_ModelViewMatrix * gl_Vertex).xyz);
- eye = vec3(0., 0., 1.);
-
- // First transform the normal into eye space and normalize the result.
- normal = normalize(gl_NormalMatrix * gl_Normal);
+ // First transform the normal into camera space and normalize the result.
+ vec3 normal = normalize(gl_NormalMatrix * gl_Normal);
// Now normalize the light's direction. Note that according to the OpenGL specification, the light is stored in eye space.
// Also since we're talking about a directional light, the position field is actually direction.
- lightDir = vec3(LIGHT_TOP_DIR);
- halfVector = normalize(lightDir + eye);
+ vec3 halfVector = normalize(LIGHT_TOP_DIR + eye);
// Compute the cos of the angle between the normal and lights direction. The light is directional so the direction is constant for every vertex.
// Since these two are normalized the cosine is the dot product. We also need to clamp the result to the [0,1] range.
- NdotL = max(dot(normal, lightDir), 0.0);
+ float NdotL = max(dot(normal, LIGHT_TOP_DIR), 0.0);
- intensity_tainted = INTENSITY_AMBIENT + NdotL * LIGHT_TOP_DIFFUSE;
- intensity_specular = 0.;
+ intensity.x = INTENSITY_AMBIENT + NdotL * LIGHT_TOP_DIFFUSE;
+ intensity.y = 0.0;
if (NdotL > 0.0)
- intensity_specular = LIGHT_TOP_SPECULAR * pow(max(dot(normal, halfVector), 0.0), LIGHT_TOP_SHININESS);
+ intensity.y += LIGHT_TOP_SPECULAR * pow(max(dot(normal, halfVector), 0.0), LIGHT_TOP_SHININESS);
- // Perform the same lighting calculation for the 2nd light source.
- lightDir = vec3(LIGHT_FRONT_DIR);
-// halfVector = normalize(lightDir + eye);
- NdotL = max(dot(normal, lightDir), 0.0);
- intensity_tainted += NdotL * LIGHT_FRONT_DIFFUSE;
+ // Perform the same lighting calculation for the 2nd light source (no specular applied).
+ NdotL = max(dot(normal, LIGHT_FRONT_DIR), 0.0);
+ intensity.x += NdotL * LIGHT_FRONT_DIFFUSE;
- // compute the specular term if NdotL is larger than zero
-// if (NdotL > 0.0)
-// intensity_specular += LIGHT_FRONT_SPECULAR * pow(max(dot(normal, halfVector), 0.0), LIGHT_FRONT_SHININESS);
+ // compute deltas for out of print volume detection (world coordinates)
+ if (print_box.volume_origin.w == 1.0)
+ {
+ vec3 v = gl_Vertex.xyz + print_box.volume_origin.xyz;
+ delta_box_min = v - print_box.min;
+ delta_box_max = v - print_box.max;
+ }
+ else
+ {
+ delta_box_min = ZERO;
+ delta_box_max = ZERO;
+ }
gl_Position = ftransform();
}
@@ -1754,16 +1812,25 @@ sub _fragment_shader_Gouraud {
return <<'FRAGMENT';
#version 110
-varying float intensity_specular;
-varying float intensity_tainted;
+const vec3 ZERO = vec3(0.0, 0.0, 0.0);
+
+// x = tainted, y = specular;
+varying vec2 intensity;
+
+varying vec3 delta_box_min;
+varying vec3 delta_box_max;
uniform vec4 uniform_color;
void main()
{
- gl_FragColor =
- vec4(intensity_specular, intensity_specular, intensity_specular, 0.) + uniform_color * intensity_tainted;
- gl_FragColor.a = uniform_color.a;
+ gl_FragColor = vec4(intensity.y, intensity.y, intensity.y, 0.0) + uniform_color * intensity.x;
+
+ // if the fragment is outside the print volume darken it and set it as transparent
+ if (any(lessThan(delta_box_min, ZERO)) || any(greaterThan(delta_box_max, ZERO)))
+ gl_FragColor = vec4(mix(gl_FragColor.xyz, ZERO, 0.5), 0.5 * uniform_color.a);
+ else
+ gl_FragColor.a = uniform_color.a;
}
FRAGMENT
@@ -1828,6 +1895,7 @@ void main() {
// compute the specular term into spec
// intensity_specular += LIGHT_FRONT_SPECULAR * pow(max(dot(h,normal), 0.0), LIGHT_FRONT_SHININESS);
}
+
gl_FragColor = max(
vec4(intensity_specular, intensity_specular, intensity_specular, 0.) + uniform_color * intensity_tainted,
INTENSITY_AMBIENT * uniform_color);
@@ -1840,61 +1908,55 @@ sub _vertex_shader_variable_layer_height {
return <<'VERTEX';
#version 110
-#define LIGHT_TOP_DIR 0., 1., 0.
-#define LIGHT_TOP_DIFFUSE 0.2
-#define LIGHT_TOP_SPECULAR 0.3
-#define LIGHT_TOP_SHININESS 50.
+#define INTENSITY_CORRECTION 0.6
-#define LIGHT_FRONT_DIR 0., 0., 1.
-#define LIGHT_FRONT_DIFFUSE 0.5
-#define LIGHT_FRONT_SPECULAR 0.3
-#define LIGHT_FRONT_SHININESS 50.
+const vec3 LIGHT_TOP_DIR = vec3(-0.4574957, 0.4574957, 0.7624929);
+#define LIGHT_TOP_DIFFUSE (0.8 * INTENSITY_CORRECTION)
+#define LIGHT_TOP_SPECULAR (0.25 * INTENSITY_CORRECTION)
+#define LIGHT_TOP_SHININESS 200.0
-#define INTENSITY_AMBIENT 0.1
+const vec3 LIGHT_FRONT_DIR = vec3(0.6985074, 0.1397015, 0.6985074);
+#define LIGHT_FRONT_DIFFUSE (0.3 * INTENSITY_CORRECTION)
+//#define LIGHT_FRONT_SPECULAR (0.0 * INTENSITY_CORRECTION)
+//#define LIGHT_FRONT_SHININESS 5.0
+
+#define INTENSITY_AMBIENT 0.3
uniform float z_to_texture_row;
-varying float intensity_specular;
-varying float intensity_tainted;
+
+// x = tainted, y = specular;
+varying vec2 intensity;
+
varying float object_z;
void main()
{
- vec3 eye, normal, lightDir, viewVector, halfVector;
- float NdotL, NdotHV;
+ vec3 eye = -normalize((gl_ModelViewMatrix * gl_Vertex).xyz);
-// eye = gl_ModelViewMatrixInverse[3].xyz;
- eye = vec3(0., 0., 1.);
-
- // First transform the normal into eye space and normalize the result.
- normal = normalize(gl_NormalMatrix * gl_Normal);
+ // First transform the normal into camera space and normalize the result.
+ vec3 normal = normalize(gl_NormalMatrix * gl_Normal);
// Now normalize the light's direction. Note that according to the OpenGL specification, the light is stored in eye space.
// Also since we're talking about a directional light, the position field is actually direction.
- lightDir = vec3(LIGHT_TOP_DIR);
- halfVector = normalize(lightDir + eye);
+ vec3 halfVector = normalize(LIGHT_TOP_DIR + eye);
// Compute the cos of the angle between the normal and lights direction. The light is directional so the direction is constant for every vertex.
// Since these two are normalized the cosine is the dot product. We also need to clamp the result to the [0,1] range.
- NdotL = max(dot(normal, lightDir), 0.0);
+ float NdotL = max(dot(normal, LIGHT_TOP_DIR), 0.0);
- intensity_tainted = INTENSITY_AMBIENT + NdotL * LIGHT_TOP_DIFFUSE;
- intensity_specular = 0.;
+ intensity.x = INTENSITY_AMBIENT + NdotL * LIGHT_TOP_DIFFUSE;
+ intensity.y = 0.0;
-// if (NdotL > 0.0)
-// intensity_specular = LIGHT_TOP_SPECULAR * pow(max(dot(normal, halfVector), 0.0), LIGHT_TOP_SHININESS);
-
- // Perform the same lighting calculation for the 2nd light source.
- lightDir = vec3(LIGHT_FRONT_DIR);
- halfVector = normalize(lightDir + eye);
- NdotL = max(dot(normal, lightDir), 0.0);
- intensity_tainted += NdotL * LIGHT_FRONT_DIFFUSE;
-
- // compute the specular term if NdotL is larger than zero
if (NdotL > 0.0)
- intensity_specular += LIGHT_FRONT_SPECULAR * pow(max(dot(normal, halfVector), 0.0), LIGHT_FRONT_SHININESS);
+ intensity.y += LIGHT_TOP_SPECULAR * pow(max(dot(normal, halfVector), 0.0), LIGHT_TOP_SHININESS);
+ // Perform the same lighting calculation for the 2nd light source (no specular)
+ NdotL = max(dot(normal, LIGHT_FRONT_DIR), 0.0);
+
+ intensity.x += NdotL * LIGHT_FRONT_DIFFUSE;
+
// Scaled to widths of the Z texture.
- object_z = gl_Vertex.z / gl_Vertex.w;
+ object_z = gl_Vertex.z;
gl_Position = ftransform();
}
@@ -1913,13 +1975,14 @@ uniform sampler2D z_texture;
// Scaling from the Z texture rows coordinate to the normalized texture row coordinate.
uniform float z_to_texture_row;
uniform float z_texture_row_to_normalized;
-
-varying float intensity_specular;
-varying float intensity_tainted;
-varying float object_z;
uniform float z_cursor;
uniform float z_cursor_band_width;
+// x = tainted, y = specular;
+varying vec2 intensity;
+
+varying float object_z;
+
void main()
{
float object_z_row = z_to_texture_row * object_z;
@@ -1938,15 +2001,12 @@ void main()
float lod = clamp(0.5 * log2(max(dx_vtc*dx_vtc, dy_vtc*dy_vtc)), 0., 1.);
// Sample the Z texture. Texture coordinates are normalized to <0, 1>.
vec4 color =
- (1. - lod) * texture2D(z_texture, vec2(z_texture_col, z_texture_row_to_normalized * (z_texture_row + 0.5 )), -10000.) +
- lod * texture2D(z_texture, vec2(z_texture_col, z_texture_row_to_normalized * (z_texture_row * 2. + 1.)), 10000.);
+ mix(texture2D(z_texture, vec2(z_texture_col, z_texture_row_to_normalized * (z_texture_row + 0.5 )), -10000.),
+ texture2D(z_texture, vec2(z_texture_col, z_texture_row_to_normalized * (z_texture_row * 2. + 1.)), 10000.), lod);
+
// Mix the final color.
gl_FragColor =
- vec4(intensity_specular, intensity_specular, intensity_specular, 1.) +
- (1. - z_blend) * intensity_tainted * color +
- z_blend * vec4(1., 1., 0., 0.);
- // and reset the transparency.
- gl_FragColor.a = 1.;
+ vec4(intensity.y, intensity.y, intensity.y, 1.0) + intensity.x * mix(color, vec4(1.0, 1.0, 0.0, 1.0), z_blend);
}
FRAGMENT
diff --git a/lib/Slic3r/GUI/MainFrame.pm b/lib/Slic3r/GUI/MainFrame.pm
index 572bdac32..4868ed7e2 100644
--- a/lib/Slic3r/GUI/MainFrame.pm
+++ b/lib/Slic3r/GUI/MainFrame.pm
@@ -25,10 +25,6 @@ our $last_config;
our $VALUE_CHANGE_EVENT = Wx::NewEventType;
# 2) To inform about a preset selection change or a "modified" status change.
our $PRESETS_CHANGED_EVENT = Wx::NewEventType;
-# 3) To inform about a click on Browse button
-our $BUTTON_BROWSE_EVENT = Wx::NewEventType;
-# 4) To inform about a click on Test button
-our $BUTTON_TEST_EVENT = Wx::NewEventType;
sub new {
my ($class, %params) = @_;
@@ -169,61 +165,7 @@ sub _init_tabpanel {
}
}
});
- # The following event is emited by the C++ Tab implementation ,
- # when the Browse button was clicked
- EVT_COMMAND($self, -1, $BUTTON_BROWSE_EVENT, sub {
- my ($self, $event) = @_;
- my $msg = $event->GetString;
- print "BUTTON_BROWSE_EVENT: ", $msg, "\n";
-
- # look for devices
- my $entries;
- {
- my $res = Net::Bonjour->new('http');
- $res->discover;
- $entries = [ $res->entries ];
- }
- if (@{$entries}) {
- my $dlg = Slic3r::GUI::BonjourBrowser->new($self, $entries);
- my $tab = Slic3r::GUI::get_preset_tab("printer");
- $tab->load_key_value('octoprint_host', $dlg->GetValue . ":" . $dlg->GetPort)
- if $dlg->ShowModal == wxID_OK;
- } else {
- Wx::MessageDialog->new($self, L('No Bonjour device found'), L('Device Browser'), wxOK | wxICON_INFORMATION)->ShowModal;
- }
- });
- # The following event is emited by the C++ Tab implementation ,
- # when the Test button was clicked
- EVT_COMMAND($self, -1, $BUTTON_TEST_EVENT, sub {
- my ($self, $event) = @_;
- my $msg = $event->GetString;
- print "BUTTON_TEST_EVENT: ", $msg, "\n";
-
- my $ua = LWP::UserAgent->new;
- $ua->timeout(10);
-
- my $config = Slic3r::GUI::get_preset_tab("printer")->get_config;
- my $res = $ua->get(
- "http://" . $config->octoprint_host . "/api/version",
- 'X-Api-Key' => $config->octoprint_apikey,
- );
- if ($res->is_success) {
- Slic3r::GUI::show_info($self, L("Connection to OctoPrint works correctly."), _L("Success!"));
- } else {
- Slic3r::GUI::show_error($self,
- L("I wasn't able to connect to OctoPrint (") . $res->status_line .
- L("). Check hostname and OctoPrint version (at least 1.1.0 is required)."));
- }
- });
- # A variable to inform C++ Tab implementation about disabling of Browse button
- $self->{is_disabled_button_browse} = (!eval "use Net::Bonjour; 1") ? 1 : 0 ;
- # A variable to inform C++ Tab implementation about user_agent
- $self->{is_user_agent} = (eval "use LWP::UserAgent; 1") ? 1 : 0 ;
- Slic3r::GUI::create_preset_tabs(wxTheApp->{preset_bundle}, $self->{no_controller},
- $self->{is_disabled_button_browse},
- $self->{is_user_agent},
- $VALUE_CHANGE_EVENT, $PRESETS_CHANGED_EVENT,
- $BUTTON_BROWSE_EVENT, $BUTTON_TEST_EVENT);
+ Slic3r::GUI::create_preset_tabs($self->{no_controller}, $VALUE_CHANGE_EVENT, $PRESETS_CHANGED_EVENT);
$self->{options_tabs} = {};
for my $tab_name (qw(print filament printer)) {
$self->{options_tabs}{$tab_name} = Slic3r::GUI::get_preset_tab("$tab_name");
@@ -409,7 +351,7 @@ sub _init_menubar {
wxTheApp->about;
});
}
-
+
# menubar
# assign menubar to frame after appending items, otherwise special items
# will not be handled correctly
@@ -424,6 +366,7 @@ sub _init_menubar {
# (Select application language from the list of installed languages)
Slic3r::GUI::add_debug_menu($menubar, $self->{lang_ch_event});
$menubar->Append($helpMenu, L("&Help"));
+ # Add an optional debug menu. In production code, the add_debug_menu() call should do nothing.
$self->SetMenuBar($menubar);
}
}
diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm
index 5cedfbb08..8a533f28d 100644
--- a/lib/Slic3r/GUI/Plater.pm
+++ b/lib/Slic3r/GUI/Plater.pm
@@ -8,7 +8,6 @@ use utf8;
use File::Basename qw(basename dirname);
use List::Util qw(sum first max);
use Slic3r::Geometry qw(X Y Z scale unscale deg2rad rad2deg);
-use LWP::UserAgent;
use threads::shared qw(shared_clone);
use Wx qw(:button :colour :cursor :dialog :filedialog :keycode :icon :font :id :listctrl :misc
:panel :sizer :toolbar :window wxTheApp :notebook :combobox wxNullBitmap);
@@ -52,9 +51,10 @@ sub new {
my $self = $class->SUPER::new($parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
$self->{config} = Slic3r::Config::new_from_defaults_keys([qw(
bed_shape complete_objects extruder_clearance_radius skirts skirt_distance brim_width variable_layer_height
- serial_port serial_speed octoprint_host octoprint_apikey
+ serial_port serial_speed octoprint_host octoprint_apikey octoprint_cafile
nozzle_diameter single_extruder_multi_material
wipe_tower wipe_tower_x wipe_tower_y wipe_tower_width wipe_tower_per_color_wipe extruder_colour filament_colour
+ max_print_height
)]);
# C++ Slic3r::Model with Perl extensions in Slic3r/Model.pm
$self->{model} = Slic3r::Model->new;
@@ -113,6 +113,7 @@ sub new {
$self->{canvas3D}->set_on_decrease_objects(sub { $self->decrease() });
$self->{canvas3D}->set_on_remove_object(sub { $self->remove() });
$self->{canvas3D}->set_on_instances_moved($on_instances_moved);
+ $self->{canvas3D}->use_plain_shader(1);
$self->{canvas3D}->set_on_wipe_tower_moved(sub {
my ($new_pos_3f) = @_;
my $cfg = Slic3r::Config->new;
@@ -389,9 +390,12 @@ sub new {
});
});
$presets->Add($text, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL | wxRIGHT, 4);
- $presets->Add($choice, 1, wxALIGN_CENTER_VERTICAL | wxEXPAND | wxBOTTOM, 0);
+ $presets->Add($choice, 1, wxALIGN_CENTER_VERTICAL | wxEXPAND | wxBOTTOM, 1);
}
}
+
+ my $frequently_changed_parameters_sizer = Wx::BoxSizer->new(wxHORIZONTAL);
+ Slic3r::GUI::add_frequently_changed_parameters($self, $frequently_changed_parameters_sizer, $presets);
my $object_info_sizer;
{
@@ -473,14 +477,15 @@ sub new {
my $right_sizer = Wx::BoxSizer->new(wxVERTICAL);
$right_sizer->Add($presets, 0, wxEXPAND | wxTOP, 10) if defined $presets;
+ $right_sizer->Add($frequently_changed_parameters_sizer, 0, wxEXPAND | wxTOP, 10) if defined $frequently_changed_parameters_sizer;
$right_sizer->Add($buttons_sizer, 0, wxEXPAND | wxBOTTOM, 5);
$right_sizer->Add($self->{list}, 1, wxEXPAND, 5);
$right_sizer->Add($object_info_sizer, 0, wxEXPAND, 0);
$right_sizer->Add($print_info_sizer, 0, wxEXPAND, 0);
# Callback for showing / hiding the print info box.
$self->{"print_info_box_show"} = sub {
- if ($right_sizer->IsShown(4) != $_[0]) {
- $right_sizer->Show(4, $_[0]);
+ if ($right_sizer->IsShown(5) != $_[0]) {
+ $right_sizer->Show(5, $_[0]);
$self->Layout
}
};
@@ -1458,8 +1463,13 @@ sub on_export_completed {
wxTheApp->notify($message);
$self->do_print if $do_print;
+
# Send $self->{send_gcode_file} to OctoPrint.
- $self->send_gcode if $send_gcode;
+ if ($send_gcode) {
+ my $op = Slic3r::OctoPrint->new($self->{config});
+ $op->send_gcode($self->GetId(), $PROGRESS_BAR_EVENT, $ERROR_EVENT, $self->{send_gcode_file});
+ }
+
$self->{print_file} = undef;
$self->{send_gcode_file} = undef;
$self->{"print_info_cost"}->SetLabel(sprintf("%.2f" , $self->{print}->total_cost));
@@ -1488,45 +1498,6 @@ sub do_print {
my $filament_names = wxTheApp->{preset_bundle}->filament_presets;
$filament_stats = { map { $filament_names->[$_] => $filament_stats->{$_} } keys %$filament_stats };
$printer_panel->load_print_job($self->{print_file}, $filament_stats);
-
- $self->GetFrame->select_tab(1);
-}
-
-# Send $self->{send_gcode_file} to OctoPrint.
-#FIXME Currently this call blocks the UI. Make it asynchronous.
-sub send_gcode {
- my ($self) = @_;
-
- $self->statusbar->StartBusy;
-
- my $ua = LWP::UserAgent->new;
- $ua->timeout(180);
-
- my $res = $ua->post(
- "http://" . $self->{config}->octoprint_host . "/api/files/local",
- Content_Type => 'form-data',
- 'X-Api-Key' => $self->{config}->octoprint_apikey,
- Content => [
- file => [
- # On Windows, the path has to be encoded in local code page for perl to be able to open it.
- Slic3r::encode_path($self->{send_gcode_file}),
- # Remove the UTF-8 flag from the perl string, so the LWP::UserAgent can insert
- # the UTF-8 encoded string into the request as a byte stream.
- Slic3r::path_to_filename_raw($self->{send_gcode_file})
- ],
- print => $self->{send_gcode_file_print} ? 1 : 0,
- ],
- );
-
- $self->statusbar->StopBusy;
-
- if ($res->is_success) {
- $self->statusbar->SetStatusText(L("G-code file successfully uploaded to the OctoPrint server"));
- } else {
- my $message = L("Error while uploading to the OctoPrint server: ") . $res->status_line;
- Slic3r::GUI::show_error($self, $message);
- $self->statusbar->SetStatusText($message);
- }
}
sub export_stl {
@@ -1771,6 +1742,8 @@ sub on_config_change {
$update_scheduled = 1;
my $extruder_colors = $config->get('extruder_colour');
$self->{preview3D}->set_number_extruders(scalar(@{$extruder_colors}));
+ } elsif ($opt_key eq 'max_print_height') {
+ $update_scheduled = 1;
}
}
@@ -1968,6 +1941,7 @@ sub selection_changed {
$self->{object_info_manifold_warning_icon}->SetToolTipString($message);
} else {
$self->{object_info_manifold}->SetLabel(L("Yes"));
+ $self->{object_info_manifold_warning_icon}->Hide;
}
} else {
$self->{object_info_facets}->SetLabel($object->facets);
diff --git a/lib/Slic3r/GUI/Plater/3D.pm b/lib/Slic3r/GUI/Plater/3D.pm
index 1c123e741..37e1321ae 100644
--- a/lib/Slic3r/GUI/Plater/3D.pm
+++ b/lib/Slic3r/GUI/Plater/3D.pm
@@ -8,6 +8,8 @@ use Wx qw(:misc :pen :brush :sizer :font :cursor :keycode wxTAB_TRAVERSAL);
use Wx::Event qw(EVT_KEY_DOWN EVT_CHAR);
use base qw(Slic3r::GUI::3DScene Class::Accessor);
+use Wx::Locale gettext => 'L';
+
__PACKAGE__->mk_accessors(qw(
on_arrange on_rotate_object_left on_rotate_object_right on_scale_object_uniformly
on_remove_object on_increase_objects on_decrease_objects));
@@ -208,6 +210,19 @@ sub reload_scene {
$self->{model}->bounding_box->z_max, $self->UseVBOs);
}
}
+
+ # checks for geometry outside the print volume to render it accordingly
+ if (scalar @{$self->volumes} > 0)
+ {
+ if (!$self->{model}->fits_print_volume($self->{config})) {
+ $self->set_warning_enabled(1);
+ Slic3r::GUI::_3DScene::generate_warning_texture(L("Detected object outside print volume"));
+ } else {
+ $self->set_warning_enabled(0);
+ $self->volumes->update_outside_state($self->{config}, 1);
+ Slic3r::GUI::_3DScene::reset_warning_texture();
+ }
+ }
}
sub update_bed_size {
diff --git a/lib/Slic3r/GUI/Plater/3DPreview.pm b/lib/Slic3r/GUI/Plater/3DPreview.pm
index d86615218..8f3fa49f5 100644
--- a/lib/Slic3r/GUI/Plater/3DPreview.pm
+++ b/lib/Slic3r/GUI/Plater/3DPreview.pm
@@ -253,19 +253,19 @@ sub new {
# sets colors for gcode preview extrusion roles
my @extrusion_roles_colors = (
- 'Perimeter' => 'FFA500',
- 'External perimeter' => 'FFFF66',
+ 'Perimeter' => 'FFFF66',
+ 'External perimeter' => 'FFA500',
'Overhang perimeter' => '0000FF',
- 'Internal infill' => 'FF0000',
- 'Solid infill' => 'CD00CD',
- 'Top solid infill' => 'FF3333',
+ 'Internal infill' => 'B1302A',
+ 'Solid infill' => 'D732D7',
+ 'Top solid infill' => 'FF1A1A',
'Bridge infill' => '9999FF',
'Gap fill' => 'FFFFFF',
- 'Skirt' => '7F0000',
+ 'Skirt' => '845321',
'Support material' => '00FF00',
'Support material interface' => '008000',
'Wipe tower' => 'B3E3AB',
- 'Custom' => 'FFFF00',
+ 'Custom' => '28CC94',
);
$self->gcode_preview_data->set_extrusion_paths_colors(\@extrusion_roles_colors);
diff --git a/lib/Slic3r/Test.pm b/lib/Slic3r/Test.pm
index 53d6d1024..6471ae123 100644
--- a/lib/Slic3r/Test.pm
+++ b/lib/Slic3r/Test.pm
@@ -7,7 +7,6 @@ require Exporter;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(_eq);
-use IO::Scalar;
use List::Util qw(first);
use Slic3r::Geometry qw(epsilon X Y Z);
diff --git a/resources/icons/action_undo.png b/resources/icons/action_undo.png
new file mode 100644
index 000000000..866ae9773
Binary files /dev/null and b/resources/icons/action_undo.png differ
diff --git a/resources/icons/arrow_undo.png b/resources/icons/arrow_undo.png
new file mode 100644
index 000000000..6972c5e59
Binary files /dev/null and b/resources/icons/arrow_undo.png differ
diff --git a/resources/localization/Slic3rPE.pot b/resources/localization/Slic3rPE.pot
index b70c92257..0282e7aae 100644
--- a/resources/localization/Slic3rPE.pot
+++ b/resources/localization/Slic3rPE.pot
@@ -1,419 +1,389 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: Slic3rPE\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-02-28 13:53+0100\n"
+"POT-Creation-Date: 2018-03-14 15:32+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:39
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:39
msgid "Shape"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:46
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:46
msgid "Rectangular"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:50
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1191
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:408
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:50 xs/src/slic3r/GUI/Tab.cpp:1270
+#: lib/Slic3r/GUI/Plater.pm:411
msgid "Size"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:51
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:51
msgid "Size in X and Y of the rectangular plate."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:57
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:57
msgid "Origin"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:58
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:58
msgid ""
"Distance of the 0,0 G-code coordinate from the front left corner of the "
"rectangle."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:62
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:62
msgid "Circular"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:65
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:129
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:200
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:211
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:325
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:336
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:355
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:434
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:781
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:801
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:860
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:878
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:896
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1044
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1052
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1094
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1103
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1113
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1121
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1129
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1215
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1421
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1491
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1527
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1704
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1711
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1718
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1727
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1737
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1747
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:65 xs/src/libslic3r/PrintConfig.cpp:129
+#: xs/src/libslic3r/PrintConfig.cpp:200 xs/src/libslic3r/PrintConfig.cpp:211
+#: xs/src/libslic3r/PrintConfig.cpp:325 xs/src/libslic3r/PrintConfig.cpp:336
+#: xs/src/libslic3r/PrintConfig.cpp:355 xs/src/libslic3r/PrintConfig.cpp:434
+#: xs/src/libslic3r/PrintConfig.cpp:781 xs/src/libslic3r/PrintConfig.cpp:801
+#: xs/src/libslic3r/PrintConfig.cpp:860 xs/src/libslic3r/PrintConfig.cpp:878
+#: xs/src/libslic3r/PrintConfig.cpp:896 xs/src/libslic3r/PrintConfig.cpp:1051
+#: xs/src/libslic3r/PrintConfig.cpp:1059 xs/src/libslic3r/PrintConfig.cpp:1101
+#: xs/src/libslic3r/PrintConfig.cpp:1110 xs/src/libslic3r/PrintConfig.cpp:1120
+#: xs/src/libslic3r/PrintConfig.cpp:1128 xs/src/libslic3r/PrintConfig.cpp:1136
+#: xs/src/libslic3r/PrintConfig.cpp:1222 xs/src/libslic3r/PrintConfig.cpp:1428
+#: xs/src/libslic3r/PrintConfig.cpp:1498 xs/src/libslic3r/PrintConfig.cpp:1534
+#: xs/src/libslic3r/PrintConfig.cpp:1711 xs/src/libslic3r/PrintConfig.cpp:1718
+#: xs/src/libslic3r/PrintConfig.cpp:1725 xs/src/libslic3r/PrintConfig.cpp:1734
+#: xs/src/libslic3r/PrintConfig.cpp:1744 xs/src/libslic3r/PrintConfig.cpp:1754
msgid "mm"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:66
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:431
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:66 xs/src/libslic3r/PrintConfig.cpp:431
msgid "Diameter"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:67
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:67
msgid ""
"Diameter of the print bed. It is assumed that origin (0,0) is located in the "
"center."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:71
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:150
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:92
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:71
+#: xs/src/libslic3r/GCode/PreviewData.cpp:150
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:92
msgid "Custom"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:75
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:75
msgid "Load shape from STL..."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:120
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:120
msgid "Settings"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:298
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:298
msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:315
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:315
msgid "Error! "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:324
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:324
msgid "The selected file contains no geometry."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:328
+#: xs/src/slic3r/GUI/BedShapeDialog.cpp:328
msgid ""
"The selected file contains several disjoint areas. This is not supported."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.hpp:42
+#: xs/src/slic3r/GUI/BedShapeDialog.hpp:42
msgid "Bed Shape"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:224
+#: xs/src/slic3r/GUI/GUI.cpp:234
msgid "Array of language names and identifiers should have the same size."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:235
+#: xs/src/slic3r/GUI/GUI.cpp:245
msgid "Select the language"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:235
+#: xs/src/slic3r/GUI/GUI.cpp:245
msgid "Language"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:300
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:170
+#: xs/src/slic3r/GUI/GUI.cpp:312 xs/src/libslic3r/PrintConfig.cpp:170
msgid "Default"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:325
+#: xs/src/slic3r/GUI/GUI.cpp:337
msgid "Change Application Language"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:332
+#: xs/src/slic3r/GUI/GUI.cpp:344
msgid "Application will be restarted"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:332
+#: xs/src/slic3r/GUI/GUI.cpp:344
msgid "Attention!"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:339
+#: xs/src/slic3r/GUI/GUI.cpp:351
msgid "&Localization"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:488
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:470
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1300
+#: xs/src/slic3r/GUI/GUI.cpp:494 lib/Slic3r/GUI/MainFrame.pm:465
+#: lib/Slic3r/GUI/Plater.pm:1304
msgid "Error"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:493
+#: xs/src/slic3r/GUI/GUI.cpp:499
msgid "Notice"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:498
+#: xs/src/slic3r/GUI/GUI.cpp:504
msgid "GLUquadricObjPtr | Attempt to free unreferenced scalar"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:500
+#: xs/src/slic3r/GUI/GUI.cpp:506
msgid "Warning"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:50
-msgid "Save current "
+#: xs/src/slic3r/GUI/GUI.cpp:655
+msgid "Support"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:51
-msgid "Delete this preset"
+#: xs/src/slic3r/GUI/GUI.cpp:658
+msgid "Select what kind of support do you need"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:313
-msgid "Layers and perimeters"
+#: xs/src/slic3r/GUI/GUI.cpp:659 xs/src/libslic3r/GCode/PreviewData.cpp:137
+msgid "None"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:314
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:777
-msgid "Layer height"
+#: xs/src/slic3r/GUI/GUI.cpp:660 xs/src/libslic3r/PrintConfig.cpp:1415
+msgid "Support on build plate only"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:318
-msgid "Vertical shells"
+#: xs/src/slic3r/GUI/GUI.cpp:661
+msgid "Everywhere"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:329
-msgid "Horizontal shells"
-msgstr ""
-
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:330
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1314
-msgid "Solid layers"
-msgstr ""
-
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:335
-msgid "Quality (slower slicing)"
-msgstr ""
-
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:342
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:356
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:449
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:452
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:831
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1113
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:107
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:208
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:736
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1733
-msgid "Advanced"
-msgstr ""
-
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:346
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:347
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:664
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:87
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:247
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:488
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:502
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:540
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:681
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:691
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:709
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:727
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:746
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1263
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1280
-msgid "Infill"
-msgstr ""
-
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:352
-msgid "Reducing printing time"
-msgstr ""
-
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:364
-msgid "Skirt and brim"
-msgstr ""
-
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:365
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:146
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:88
-msgid "Skirt"
-msgstr ""
-
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:371
+#: xs/src/slic3r/GUI/GUI.cpp:673 xs/src/slic3r/GUI/Tab.cpp:441
msgid "Brim"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:374
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:375
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:191
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1030
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1380
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1387
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1399
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1409
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1417
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1432
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1453
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1464
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1480
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1489
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1498
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1509
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1525
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1533
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1534
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1543
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1551
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1565
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:147
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:89
+#: xs/src/slic3r/GUI/GUI.cpp:675
+msgid ""
+"This flag enables the brim that will be printed around each object on the "
+"first layer."
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:57
+msgid "Save current "
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:58
+msgid "Delete this preset"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:383
+msgid "Layers and perimeters"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:384 xs/src/libslic3r/PrintConfig.cpp:777
+msgid "Layer height"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:388
+msgid "Vertical shells"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:399
+msgid "Horizontal shells"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:400 xs/src/libslic3r/PrintConfig.cpp:1321
+msgid "Solid layers"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:405
+msgid "Quality (slower slicing)"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:412 xs/src/slic3r/GUI/Tab.cpp:426
+#: xs/src/slic3r/GUI/Tab.cpp:519 xs/src/slic3r/GUI/Tab.cpp:522
+#: xs/src/slic3r/GUI/Tab.cpp:905 xs/src/slic3r/GUI/Tab.cpp:1191
+#: xs/src/libslic3r/PrintConfig.cpp:107 xs/src/libslic3r/PrintConfig.cpp:208
+#: xs/src/libslic3r/PrintConfig.cpp:736 xs/src/libslic3r/PrintConfig.cpp:1740
+msgid "Advanced"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:416 xs/src/slic3r/GUI/Tab.cpp:417
+#: xs/src/slic3r/GUI/Tab.cpp:735 xs/src/libslic3r/PrintConfig.cpp:87
+#: xs/src/libslic3r/PrintConfig.cpp:247 xs/src/libslic3r/PrintConfig.cpp:488
+#: xs/src/libslic3r/PrintConfig.cpp:502 xs/src/libslic3r/PrintConfig.cpp:540
+#: xs/src/libslic3r/PrintConfig.cpp:681 xs/src/libslic3r/PrintConfig.cpp:691
+#: xs/src/libslic3r/PrintConfig.cpp:709 xs/src/libslic3r/PrintConfig.cpp:727
+#: xs/src/libslic3r/PrintConfig.cpp:746 xs/src/libslic3r/PrintConfig.cpp:1270
+#: xs/src/libslic3r/PrintConfig.cpp:1287
+msgid "Infill"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:422
+msgid "Reducing printing time"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:434
+msgid "Skirt and brim"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:435 xs/src/libslic3r/GCode/PreviewData.cpp:146
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:88
+msgid "Skirt"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:444 xs/src/slic3r/GUI/Tab.cpp:445
+#: xs/src/libslic3r/PrintConfig.cpp:191 xs/src/libslic3r/PrintConfig.cpp:1037
+#: xs/src/libslic3r/PrintConfig.cpp:1387 xs/src/libslic3r/PrintConfig.cpp:1394
+#: xs/src/libslic3r/PrintConfig.cpp:1406 xs/src/libslic3r/PrintConfig.cpp:1416
+#: xs/src/libslic3r/PrintConfig.cpp:1424 xs/src/libslic3r/PrintConfig.cpp:1439
+#: xs/src/libslic3r/PrintConfig.cpp:1460 xs/src/libslic3r/PrintConfig.cpp:1471
+#: xs/src/libslic3r/PrintConfig.cpp:1487 xs/src/libslic3r/PrintConfig.cpp:1496
+#: xs/src/libslic3r/PrintConfig.cpp:1505 xs/src/libslic3r/PrintConfig.cpp:1516
+#: xs/src/libslic3r/PrintConfig.cpp:1532 xs/src/libslic3r/PrintConfig.cpp:1540
+#: xs/src/libslic3r/PrintConfig.cpp:1541 xs/src/libslic3r/PrintConfig.cpp:1550
+#: xs/src/libslic3r/PrintConfig.cpp:1558 xs/src/libslic3r/PrintConfig.cpp:1572
+#: xs/src/libslic3r/GCode/PreviewData.cpp:147
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:89
msgid "Support material"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:380
+#: xs/src/slic3r/GUI/Tab.cpp:450
msgid "Raft"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:384
+#: xs/src/slic3r/GUI/Tab.cpp:454
msgid "Options for support material and raft"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:398
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:118
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:278
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:635
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:747
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:979
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1201
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1251
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1302
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1625
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:71
+#: xs/src/slic3r/GUI/Tab.cpp:468 xs/src/libslic3r/PrintConfig.cpp:118
+#: xs/src/libslic3r/PrintConfig.cpp:278 xs/src/libslic3r/PrintConfig.cpp:635
+#: xs/src/libslic3r/PrintConfig.cpp:747 xs/src/libslic3r/PrintConfig.cpp:986
+#: xs/src/libslic3r/PrintConfig.cpp:1208 xs/src/libslic3r/PrintConfig.cpp:1258
+#: xs/src/libslic3r/PrintConfig.cpp:1309 xs/src/libslic3r/PrintConfig.cpp:1632
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:71
msgid "Speed"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:399
+#: xs/src/slic3r/GUI/Tab.cpp:469
msgid "Speed for print moves"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:411
+#: xs/src/slic3r/GUI/Tab.cpp:481
msgid "Speed for non-print moves"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:414
+#: xs/src/slic3r/GUI/Tab.cpp:484
msgid "Modifiers"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:417
+#: xs/src/slic3r/GUI/Tab.cpp:487
msgid "Acceleration control (advanced)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:424
+#: xs/src/slic3r/GUI/Tab.cpp:494
msgid "Autospeed (advanced)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:430
+#: xs/src/slic3r/GUI/Tab.cpp:500
msgid "Multiple Extruders"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:431
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:966
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:308
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:702
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:958
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1272
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1445
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1471
+#: xs/src/slic3r/GUI/Tab.cpp:501 xs/src/slic3r/GUI/Tab.cpp:1040
+#: xs/src/libslic3r/PrintConfig.cpp:308 xs/src/libslic3r/PrintConfig.cpp:702
+#: xs/src/libslic3r/PrintConfig.cpp:965 xs/src/libslic3r/PrintConfig.cpp:1279
+#: xs/src/libslic3r/PrintConfig.cpp:1452 xs/src/libslic3r/PrintConfig.cpp:1478
msgid "Extruders"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:438
+#: xs/src/slic3r/GUI/Tab.cpp:508
msgid "Ooze prevention"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:442
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:149
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:91
+#: xs/src/slic3r/GUI/Tab.cpp:512 xs/src/libslic3r/GCode/PreviewData.cpp:149
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:91
msgid "Wipe tower"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:453
+#: xs/src/slic3r/GUI/Tab.cpp:523
msgid "Extrusion width"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:463
+#: xs/src/slic3r/GUI/Tab.cpp:533
msgid "Overlap"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:466
+#: xs/src/slic3r/GUI/Tab.cpp:536
msgid "Flow"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:469
+#: xs/src/slic3r/GUI/Tab.cpp:539
msgid "Other"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:476
+#: xs/src/slic3r/GUI/Tab.cpp:546
msgid "Output options"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:477
+#: xs/src/slic3r/GUI/Tab.cpp:547
msgid "Sequential printing"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:479
+#: xs/src/slic3r/GUI/Tab.cpp:549
msgid "Extruder clearance (mm)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:488
+#: xs/src/slic3r/GUI/Tab.cpp:558
msgid "Output file"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:494
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1001
+#: xs/src/slic3r/GUI/Tab.cpp:564 xs/src/libslic3r/PrintConfig.cpp:1008
msgid "Post-processing scripts"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:500
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:501
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:859
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:860
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1156
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1157
+#: xs/src/slic3r/GUI/Tab.cpp:570 xs/src/slic3r/GUI/Tab.cpp:571
+#: xs/src/slic3r/GUI/Tab.cpp:933 xs/src/slic3r/GUI/Tab.cpp:934
+#: xs/src/slic3r/GUI/Tab.cpp:1234 xs/src/slic3r/GUI/Tab.cpp:1235
msgid "Notes"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:507
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:867
+#: xs/src/slic3r/GUI/Tab.cpp:577 xs/src/slic3r/GUI/Tab.cpp:941
msgid "Dependencies"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:508
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:868
+#: xs/src/slic3r/GUI/Tab.cpp:578 xs/src/slic3r/GUI/Tab.cpp:942
msgid "Profile dependencies"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:509
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:869
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1668
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:143
+#: xs/src/slic3r/GUI/Tab.cpp:579 xs/src/slic3r/GUI/Tab.cpp:943
+#: xs/src/slic3r/GUI/Tab.cpp:1746 xs/src/libslic3r/PrintConfig.cpp:143
msgid "Compatible printers"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:533
-#, no-c-format
+#: xs/src/slic3r/GUI/Tab.cpp:603
+#, possible-c-format
msgid ""
"The Spiral Vase mode requires:\n"
"- one perimeter\n"
@@ -425,11 +395,11 @@ msgid ""
"Shall I adjust those settings in order to enable Spiral Vase?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:540
+#: xs/src/slic3r/GUI/Tab.cpp:610
msgid "Spiral Vase"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:560
+#: xs/src/slic3r/GUI/Tab.cpp:630
msgid ""
"The Wipe Tower currently supports only:\n"
"- first layer height 0.2mm\n"
@@ -438,13 +408,12 @@ msgid ""
"Shall I adjust those settings in order to enable the Wipe Tower?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:564
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:585
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:602
+#: xs/src/slic3r/GUI/Tab.cpp:634 xs/src/slic3r/GUI/Tab.cpp:656
+#: xs/src/slic3r/GUI/Tab.cpp:673
msgid "Wipe Tower"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:581
+#: xs/src/slic3r/GUI/Tab.cpp:652
msgid ""
"The Wipe Tower currently supports the non-soluble supports only\n"
"if they are printed with the current extruder without triggering a tool "
@@ -455,7 +424,7 @@ msgid ""
"Shall I adjust those settings in order to enable the Wipe Tower?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:599
+#: xs/src/slic3r/GUI/Tab.cpp:670
msgid ""
"For the Wipe Tower to work with the soluble supports, the support layers\n"
"need to be synchronized with the object layers.\n"
@@ -463,7 +432,7 @@ msgid ""
"Shall I synchronize support layers in order to enable the Wipe Tower?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:617
+#: xs/src/slic3r/GUI/Tab.cpp:688
msgid ""
"Supports work better, if the following feature is enabled:\n"
"- Detect bridging perimeters\n"
@@ -471,351 +440,356 @@ msgid ""
"Shall I adjust those settings for supports?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:620
+#: xs/src/slic3r/GUI/Tab.cpp:691
msgid "Support Generator"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:662
+#: xs/src/slic3r/GUI/Tab.cpp:733
msgid "The "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:662
-#, no-c-format
+#: xs/src/slic3r/GUI/Tab.cpp:733
+#, possible-c-format
msgid ""
" infill pattern is not supposed to work at 100% density.\n"
"\n"
"Shall I switch to rectilinear fill pattern?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:786
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:787
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:368
+#: xs/src/slic3r/GUI/Tab.cpp:860 xs/src/slic3r/GUI/Tab.cpp:861
+#: lib/Slic3r/GUI/Plater.pm:368
msgid "Filament"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:794
+#: xs/src/slic3r/GUI/Tab.cpp:868
msgid "Temperature "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:795
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1234
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:307
+#: xs/src/slic3r/GUI/Tab.cpp:869 xs/src/slic3r/GUI/Tab.cpp:1313
+#: xs/src/libslic3r/PrintConfig.cpp:307
msgid "Extruder"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:800
+#: xs/src/slic3r/GUI/Tab.cpp:874
msgid "Bed"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:805
+#: xs/src/slic3r/GUI/Tab.cpp:879
msgid "Cooling"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:806
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:922
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1695
+#: xs/src/slic3r/GUI/Tab.cpp:880 xs/src/libslic3r/PrintConfig.cpp:929
+#: xs/src/libslic3r/PrintConfig.cpp:1702
msgid "Enable"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:817
+#: xs/src/slic3r/GUI/Tab.cpp:891
msgid "Fan settings"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:818
+#: xs/src/slic3r/GUI/Tab.cpp:892
msgid "Fan speed"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:826
+#: xs/src/slic3r/GUI/Tab.cpp:900
msgid "Cooling thresholds"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:832
+#: xs/src/slic3r/GUI/Tab.cpp:906
msgid "Filament properties"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:836
+#: xs/src/slic3r/GUI/Tab.cpp:910
msgid "Print speed override"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:846
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1119
+#: xs/src/slic3r/GUI/Tab.cpp:920 xs/src/slic3r/GUI/Tab.cpp:1197
msgid "Custom G-code"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:847
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1120
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1342
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1357
+#: xs/src/slic3r/GUI/Tab.cpp:921 xs/src/slic3r/GUI/Tab.cpp:1198
+#: xs/src/libslic3r/PrintConfig.cpp:1349 xs/src/libslic3r/PrintConfig.cpp:1364
msgid "Start G-code"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:853
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1126
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:217
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:227
+#: xs/src/slic3r/GUI/Tab.cpp:927 xs/src/slic3r/GUI/Tab.cpp:1204
+#: xs/src/libslic3r/PrintConfig.cpp:217 xs/src/libslic3r/PrintConfig.cpp:227
msgid "End G-code"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:937
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:11
+#: xs/src/slic3r/GUI/Tab.cpp:1011 xs/src/slic3r/GUI/Preferences.cpp:11
msgid "General"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:938
+#: xs/src/slic3r/GUI/Tab.cpp:1012
msgid "Size and coordinates"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:940
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:34
+#: xs/src/slic3r/GUI/Tab.cpp:1014 xs/src/libslic3r/PrintConfig.cpp:34
msgid "Bed shape"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:942
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1637
+#: xs/src/slic3r/GUI/Tab.cpp:1016 xs/src/slic3r/GUI/Tab.cpp:1715
msgid " Set "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:962
+#: xs/src/slic3r/GUI/Tab.cpp:1036
msgid "Capabilities"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:967
+#: xs/src/slic3r/GUI/Tab.cpp:1041
msgid "Number of extruders of the printer."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:989
+#: xs/src/slic3r/GUI/Tab.cpp:1063
msgid "USB/Serial connection"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:990
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1193
+#: xs/src/slic3r/GUI/Tab.cpp:1064 xs/src/libslic3r/PrintConfig.cpp:1200
msgid "Serial port"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:995
+#: xs/src/slic3r/GUI/Tab.cpp:1069
msgid "Rescan serial ports"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1004
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1072
+#: xs/src/slic3r/GUI/Tab.cpp:1078 xs/src/slic3r/GUI/Tab.cpp:1125
msgid "Test"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1017
+#: xs/src/slic3r/GUI/Tab.cpp:1091
msgid "Connection to printer works correctly."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1017
+#: xs/src/slic3r/GUI/Tab.cpp:1091 xs/src/slic3r/GUI/Tab.cpp:1135
msgid "Success!"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1020
+#: xs/src/slic3r/GUI/Tab.cpp:1094
msgid "Connection failed."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1032
+#: xs/src/slic3r/GUI/Tab.cpp:1106
msgid "OctoPrint upload"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1035
+#: xs/src/slic3r/GUI/Tab.cpp:1109 xs/src/slic3r/GUI/Tab.cpp:1156
msgid " Browse "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1110
+#: xs/src/slic3r/GUI/Tab.cpp:1135 lib/Slic3r/GUI/MainFrame.pm:209
+msgid "Connection to OctoPrint works correctly."
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:1138
+msgid "Could not connect to OctoPrint"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:1138
+msgid "Note: OctoPrint version at least 1.1.0 is required."
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:1162
+msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:1163
+msgid "Open CA certificate file"
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:1177
+msgid ""
+"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-"
+"signed certificate."
+msgstr ""
+
+#: xs/src/slic3r/GUI/Tab.cpp:1188
msgid "Firmware"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1132
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:48
+#: xs/src/slic3r/GUI/Tab.cpp:1210 xs/src/libslic3r/PrintConfig.cpp:48
msgid "Before layer change G-code"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1138
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:766
+#: xs/src/slic3r/GUI/Tab.cpp:1216 xs/src/libslic3r/PrintConfig.cpp:766
msgid "After layer change G-code"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1144
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1602
+#: xs/src/slic3r/GUI/Tab.cpp:1222 xs/src/libslic3r/PrintConfig.cpp:1609
msgid "Tool change G-code"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1150
+#: xs/src/slic3r/GUI/Tab.cpp:1228
msgid "Between objects G-code (for sequential printing)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1187
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:400
+#: xs/src/slic3r/GUI/Tab.cpp:1266 xs/src/libslic3r/GCode/PreviewData.cpp:400
#, possible-c-format
msgid "Extruder %d"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1194
+#: xs/src/slic3r/GUI/Tab.cpp:1273
msgid "Layer height limits"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1199
+#: xs/src/slic3r/GUI/Tab.cpp:1278
msgid "Position (for multi-extruder printers)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1202
+#: xs/src/slic3r/GUI/Tab.cpp:1281
msgid "Retraction"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1205
+#: xs/src/slic3r/GUI/Tab.cpp:1284
msgid "Only lift Z"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1218
+#: xs/src/slic3r/GUI/Tab.cpp:1297
msgid ""
"Retraction when tool is disabled (advanced settings for multi-extruder "
"setups)"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1222
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:150
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2125
+#: xs/src/slic3r/GUI/Tab.cpp:1301 lib/Slic3r/GUI/Plater.pm:150
+#: lib/Slic3r/GUI/Plater.pm:2095
msgid "Preview"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1312
+#: xs/src/slic3r/GUI/Tab.cpp:1386
msgid ""
"The Wipe option is not available when using the Firmware Retraction mode.\n"
"\n"
"Shall I disable it in order to enable Firmware Retraction?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1314
+#: xs/src/slic3r/GUI/Tab.cpp:1388
msgid "Firmware Retraction"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1469
+#: xs/src/slic3r/GUI/Tab.cpp:1547
msgid "Default "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1469
+#: xs/src/slic3r/GUI/Tab.cpp:1547
msgid " preset"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1470
+#: xs/src/slic3r/GUI/Tab.cpp:1548
msgid " preset\n"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1488
+#: xs/src/slic3r/GUI/Tab.cpp:1566
msgid ""
"\n"
"\n"
"is not compatible with printer\n"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1488
+#: xs/src/slic3r/GUI/Tab.cpp:1566
msgid ""
"\n"
"\n"
"and it has the following unsaved changes:"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1489
+#: xs/src/slic3r/GUI/Tab.cpp:1567
msgid ""
"\n"
"\n"
"has the following unsaved changes:"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1491
+#: xs/src/slic3r/GUI/Tab.cpp:1569
msgid ""
"\n"
"\n"
"Discard changes and continue anyway?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1492
+#: xs/src/slic3r/GUI/Tab.cpp:1570
msgid "Unsaved Changes"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1560
+#: xs/src/slic3r/GUI/Tab.cpp:1638
msgid "The supplied name is empty. It can't be saved."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1580
+#: xs/src/slic3r/GUI/Tab.cpp:1658
msgid "remove"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1580
+#: xs/src/slic3r/GUI/Tab.cpp:1658
msgid "delete"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1581
+#: xs/src/slic3r/GUI/Tab.cpp:1659
msgid "Are you sure you want to "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1581
+#: xs/src/slic3r/GUI/Tab.cpp:1659
msgid " the selected preset?"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1582
+#: xs/src/slic3r/GUI/Tab.cpp:1660
msgid "Remove"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1582
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:178
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:196
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2021
+#: xs/src/slic3r/GUI/Tab.cpp:1660 lib/Slic3r/GUI/Plater.pm:178
+#: lib/Slic3r/GUI/Plater.pm:196 lib/Slic3r/GUI/Plater.pm:1991
msgid "Delete"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1583
+#: xs/src/slic3r/GUI/Tab.cpp:1661
msgid " Preset"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1636
+#: xs/src/slic3r/GUI/Tab.cpp:1714
msgid "All"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1667
+#: xs/src/slic3r/GUI/Tab.cpp:1745
msgid "Select the printers this profile is compatible with."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1751
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1645
+#: xs/src/slic3r/GUI/Tab.cpp:1834 lib/Slic3r/GUI/MainFrame.pm:509
+#: lib/Slic3r/GUI/Plater.pm:1615
msgid "Save "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1751
+#: xs/src/slic3r/GUI/Tab.cpp:1834
msgid " as:"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1785
+#: xs/src/slic3r/GUI/Tab.cpp:1868
msgid ""
"The supplied name is not valid; the following characters are not allowed:"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1788
+#: xs/src/slic3r/GUI/Tab.cpp:1871
msgid "The supplied name is not available."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:182
+#: xs/src/slic3r/GUI/Tab.hpp:185
msgid "Print Settings"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:202
+#: xs/src/slic3r/GUI/Tab.hpp:205
msgid "Filament Settings"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:228
+#: xs/src/slic3r/GUI/Tab.hpp:226
msgid "Printer Settings"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:248
+#: xs/src/slic3r/GUI/Tab.hpp:240
msgid "Save preset"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Field.cpp:42
+#: xs/src/slic3r/GUI/Field.cpp:59
msgid "default"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:26
+#: xs/src/slic3r/GUI/PresetHints.cpp:27
#, possible-c-format
msgid ""
"If estimated layer time is below ~%ds, fan will run at %d%% and print speed "
@@ -823,7 +797,7 @@ msgid ""
"speed will never be reduced below %dmm/s)."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:30
+#: xs/src/slic3r/GUI/PresetHints.cpp:31
#, possible-c-format
msgid ""
"\n"
@@ -831,330 +805,355 @@ msgid ""
"proportionally decreasing speed between %d%% and %d%%."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:34
+#: xs/src/slic3r/GUI/PresetHints.cpp:35
msgid ""
"\n"
"During the other layers, fan "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:36
+#: xs/src/slic3r/GUI/PresetHints.cpp:37
msgid "Fan "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:41
+#: xs/src/slic3r/GUI/PresetHints.cpp:42
#, possible-c-format
msgid "will always run at %d%% "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:44
+#: xs/src/slic3r/GUI/PresetHints.cpp:45
#, possible-c-format
msgid "except for the first %d layers"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:48
+#: xs/src/slic3r/GUI/PresetHints.cpp:49
msgid "except for the first layer"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:50
+#: xs/src/slic3r/GUI/PresetHints.cpp:51
msgid "will be turned off."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:151
+#: xs/src/slic3r/GUI/PresetHints.cpp:152
msgid "external perimeters"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:160
+#: xs/src/slic3r/GUI/PresetHints.cpp:161
msgid "perimeters"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:169
+#: xs/src/slic3r/GUI/PresetHints.cpp:170
msgid "infill"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:179
+#: xs/src/slic3r/GUI/PresetHints.cpp:180
msgid "solid infill"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:187
+#: xs/src/slic3r/GUI/PresetHints.cpp:188
msgid "top solid infill"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:198
+#: xs/src/slic3r/GUI/PresetHints.cpp:199
msgid "support"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:208
+#: xs/src/slic3r/GUI/PresetHints.cpp:209
msgid "support interface"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:214
+#: xs/src/slic3r/GUI/PresetHints.cpp:215
msgid "First layer volumetric"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:214
+#: xs/src/slic3r/GUI/PresetHints.cpp:215
msgid "Bridging volumetric"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:214
+#: xs/src/slic3r/GUI/PresetHints.cpp:215
msgid "Volumetric"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:215
+#: xs/src/slic3r/GUI/PresetHints.cpp:216
msgid " flow rate is maximized "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:218
+#: xs/src/slic3r/GUI/PresetHints.cpp:219
msgid "by the print profile maximum"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:219
+#: xs/src/slic3r/GUI/PresetHints.cpp:220
msgid "when printing "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:220
+#: xs/src/slic3r/GUI/PresetHints.cpp:221
msgid " with a volumetric rate "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:224
+#: xs/src/slic3r/GUI/PresetHints.cpp:225
#, possible-c-format
msgid "%3.2f mm³/s"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:226
+#: xs/src/slic3r/GUI/PresetHints.cpp:227
#, possible-c-format
msgid " at filament speed %3.2f mm/s."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:245
+#: xs/src/slic3r/GUI/PresetHints.cpp:246
msgid ""
"Recommended object thin wall thickness: Not available due to invalid layer "
"height."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:262
+#: xs/src/slic3r/GUI/PresetHints.cpp:263
#, possible-c-format
msgid "Recommended object thin wall thickness for layer height %.2f and "
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:269
+#: xs/src/slic3r/GUI/PresetHints.cpp:270
#, possible-c-format
msgid "%d lines: %.2lf mm"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.hpp:17
+#: xs/src/slic3r/GUI/Preferences.hpp:17
msgid "Preferences"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:27
+#: xs/src/slic3r/GUI/Preferences.cpp:27
msgid "Remember output directory"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:29
+#: xs/src/slic3r/GUI/Preferences.cpp:29
msgid ""
"If this is enabled, Slic3r will prompt the last output directory instead of "
"the one containing the input files."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:35
+#: xs/src/slic3r/GUI/Preferences.cpp:35
msgid "Auto-center parts"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:37
+#: xs/src/slic3r/GUI/Preferences.cpp:37
msgid ""
"If this is enabled, Slic3r will auto-center objects around the print bed "
"center."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:43
+#: xs/src/slic3r/GUI/Preferences.cpp:43
msgid "Background processing"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:45
+#: xs/src/slic3r/GUI/Preferences.cpp:45
msgid ""
"If this is enabled, Slic3r will pre-process objects as soon as they're "
"loaded in order to save time when exporting G-code."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:51
+#: xs/src/slic3r/GUI/Preferences.cpp:51
msgid "Disable USB/serial connection"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:53
+#: xs/src/slic3r/GUI/Preferences.cpp:53
msgid ""
"Disable communication with the printer over a serial / USB cable. This "
"simplifies the user interface in case the printer is never attached to the "
"computer."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:59
+#: xs/src/slic3r/GUI/Preferences.cpp:59
msgid "Suppress \" - default - \" presets"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:61
+#: xs/src/slic3r/GUI/Preferences.cpp:61
msgid ""
"Suppress \" - default - \" presets in the Print / Filament / Printer "
"selections once there are any other valid presets available."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:67
+#: xs/src/slic3r/GUI/Preferences.cpp:67
msgid "Show incompatible print and filament presets"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:69
+#: xs/src/slic3r/GUI/Preferences.cpp:69
msgid ""
"When checked, the print and filament presets are shown in the preset editor "
"even if they are marked as incompatible with the active printer"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:75
+#: xs/src/slic3r/GUI/Preferences.cpp:75
msgid "Use legacy OpenGL 1.1 rendering"
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:77
+#: xs/src/slic3r/GUI/Preferences.cpp:77
msgid ""
"If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may "
"try to check this checkbox. This will disable the layer height editing and "
"anti aliasing, so it is likely better to upgrade your graphics driver."
msgstr ""
-#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:101
+#: xs/src/slic3r/GUI/Preferences.cpp:101
msgid "You need to restart Slic3r to make the changes effective."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:26
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:53
+msgid "Network lookup"
+msgstr ""
+
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:66
+msgid "Address"
+msgstr ""
+
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:67
+msgid "Hostname"
+msgstr ""
+
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:68
+msgid "Service name"
+msgstr ""
+
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:69
+msgid "OctoPrint version"
+msgstr ""
+
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:187
+msgid "Searching for devices"
+msgstr ""
+
+#: xs/src/slic3r/GUI/BonjourDialog.cpp:194
+msgid "Finished."
+msgstr ""
+
+#: xs/src/slic3r/Utils/OctoPrint.cpp:53
+msgid "G-code file successfully uploaded to the OctoPrint server"
+msgstr ""
+
+#: xs/src/slic3r/Utils/OctoPrint.cpp:67
+msgid "Error while uploading to the OctoPrint server"
+msgstr ""
+
+#: xs/src/slic3r/Utils/OctoPrint.cpp:102
+msgid "Invalid API key"
+msgstr ""
+
+#: xs/src/libslic3r/PrintConfig.cpp:26
msgid "Avoid crossing perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:27
+#: xs/src/libslic3r/PrintConfig.cpp:27
msgid ""
"Optimize travel moves in order to minimize the crossing of perimeters. This "
"is mostly useful with Bowden extruders which suffer from oozing. This "
"feature slows down both the print and the G-code generation."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:38
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1572
+#: xs/src/libslic3r/PrintConfig.cpp:38 xs/src/libslic3r/PrintConfig.cpp:1579
msgid "Other layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:39
+#: xs/src/libslic3r/PrintConfig.cpp:39
msgid ""
"Bed temperature for layers after the first one. Set this to zero to disable "
"bed temperature control commands in the output."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:42
+#: xs/src/libslic3r/PrintConfig.cpp:42
msgid "Bed temperature"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:49
+#: xs/src/libslic3r/PrintConfig.cpp:49
msgid ""
"This custom code is inserted at every layer change, right before the Z move. "
"Note that you can use placeholder variables for all Slic3r settings as well "
"as [layer_num] and [layer_z]."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:59
+#: xs/src/libslic3r/PrintConfig.cpp:59
msgid "Between objects G-code"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:60
+#: xs/src/libslic3r/PrintConfig.cpp:60
msgid ""
"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."
+"variables for all Slic3r settings, so you can put a \"M109 "
+"S[first_layer_temperature]\" command wherever you want."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:68
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:370
+#: xs/src/libslic3r/PrintConfig.cpp:68 lib/Slic3r/GUI/MainFrame.pm:364
msgid "Bottom"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:69
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:239
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:290
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:298
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:604
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:762
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:778
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:941
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:989
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1152
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1583
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1639
+#: xs/src/libslic3r/PrintConfig.cpp:69 xs/src/libslic3r/PrintConfig.cpp:239
+#: xs/src/libslic3r/PrintConfig.cpp:290 xs/src/libslic3r/PrintConfig.cpp:298
+#: xs/src/libslic3r/PrintConfig.cpp:604 xs/src/libslic3r/PrintConfig.cpp:762
+#: xs/src/libslic3r/PrintConfig.cpp:778 xs/src/libslic3r/PrintConfig.cpp:948
+#: xs/src/libslic3r/PrintConfig.cpp:996 xs/src/libslic3r/PrintConfig.cpp:1159
+#: xs/src/libslic3r/PrintConfig.cpp:1590 xs/src/libslic3r/PrintConfig.cpp:1646
msgid "Layers and Perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:70
+#: xs/src/libslic3r/PrintConfig.cpp:70
msgid "Number of solid layers to generate on bottom surfaces."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:72
+#: xs/src/libslic3r/PrintConfig.cpp:72
msgid "Bottom solid layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:77
+#: xs/src/libslic3r/PrintConfig.cpp:77
msgid "Bridge"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:78
+#: xs/src/libslic3r/PrintConfig.cpp:78
msgid ""
"This is the acceleration your printer will use for bridges. Set zero to "
"disable acceleration control for bridges."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:80
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:174
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:576
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:684
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:952
+#: xs/src/libslic3r/PrintConfig.cpp:80 xs/src/libslic3r/PrintConfig.cpp:174
+#: xs/src/libslic3r/PrintConfig.cpp:576 xs/src/libslic3r/PrintConfig.cpp:684
+#: xs/src/libslic3r/PrintConfig.cpp:959
msgid "mm/s²"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:86
+#: xs/src/libslic3r/PrintConfig.cpp:86
msgid "Bridging angle"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:88
+#: xs/src/libslic3r/PrintConfig.cpp:88
msgid ""
"Bridging angle override. If left to zero, the bridging angle will be "
"calculated automatically. Otherwise the provided angle will be used for all "
"bridges. Use 180° for zero angle."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:91
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:492
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1170
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1181
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1401
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1557
+#: xs/src/libslic3r/PrintConfig.cpp:91 xs/src/libslic3r/PrintConfig.cpp:492
+#: xs/src/libslic3r/PrintConfig.cpp:1177 xs/src/libslic3r/PrintConfig.cpp:1188
+#: xs/src/libslic3r/PrintConfig.cpp:1408 xs/src/libslic3r/PrintConfig.cpp:1564
msgid "°"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:97
+#: xs/src/libslic3r/PrintConfig.cpp:97
msgid "Bridges fan speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:98
+#: xs/src/libslic3r/PrintConfig.cpp:98
msgid "This fan speed is enforced during all bridges and overhangs."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:99
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:504
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:789
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:850
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1060
+#: xs/src/libslic3r/PrintConfig.cpp:99 xs/src/libslic3r/PrintConfig.cpp:504
+#: xs/src/libslic3r/PrintConfig.cpp:789 xs/src/libslic3r/PrintConfig.cpp:850
+#: xs/src/libslic3r/PrintConfig.cpp:1067
msgid "%"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:106
+#: xs/src/libslic3r/PrintConfig.cpp:106
msgid "Bridge flow ratio"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:108
+#: xs/src/libslic3r/PrintConfig.cpp:108
msgid ""
"This factor affects the amount of plastic for bridging. You can decrease it "
"slightly to pull the extrudates and prevent sagging, although default "
@@ -1162,64 +1161,59 @@ msgid ""
"before tweaking this."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:117
+#: xs/src/libslic3r/PrintConfig.cpp:117
msgid "Bridges"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:119
+#: xs/src/libslic3r/PrintConfig.cpp:119
msgid "Speed for printing bridges."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:120
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:638
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:749
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:811
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:868
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:981
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1137
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1146
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1536
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1649
+#: xs/src/libslic3r/PrintConfig.cpp:120 xs/src/libslic3r/PrintConfig.cpp:638
+#: xs/src/libslic3r/PrintConfig.cpp:749 xs/src/libslic3r/PrintConfig.cpp:811
+#: xs/src/libslic3r/PrintConfig.cpp:868 xs/src/libslic3r/PrintConfig.cpp:988
+#: xs/src/libslic3r/PrintConfig.cpp:1144 xs/src/libslic3r/PrintConfig.cpp:1153
+#: xs/src/libslic3r/PrintConfig.cpp:1543 xs/src/libslic3r/PrintConfig.cpp:1656
msgid "mm/s"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:127
+#: xs/src/libslic3r/PrintConfig.cpp:127
msgid "Brim width"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:128
+#: xs/src/libslic3r/PrintConfig.cpp:128
msgid ""
"Horizontal width of the brim that will be printed around each object on the "
"first layer."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:135
+#: xs/src/libslic3r/PrintConfig.cpp:135
msgid "Clip multi-part objects"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:136
+#: xs/src/libslic3r/PrintConfig.cpp:136
msgid ""
"When printing multi-material objects, this settings will make slic3r to clip "
"the overlapping object parts one by the other (2nd part will be clipped by "
"the 1st, 3rd part will be clipped by the 1st and 2nd etc)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:147
+#: xs/src/libslic3r/PrintConfig.cpp:147
msgid "Compatible printers condition"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:148
+#: xs/src/libslic3r/PrintConfig.cpp:148
msgid ""
"A boolean expression using the configuration values of an active printer "
"profile. If this expression evaluates to true, this profile is considered "
"compatible with the active printer profile."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:154
+#: xs/src/libslic3r/PrintConfig.cpp:154
msgid "Complete individual objects"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:155
+#: xs/src/libslic3r/PrintConfig.cpp:155
msgid ""
"When printing multiple objects or copies, this feature will complete each "
"object before moving onto next one (and starting it from its bottom layer). "
@@ -1227,78 +1221,75 @@ msgid ""
"warn and prevent you from extruder collisions, but beware."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:163
+#: xs/src/libslic3r/PrintConfig.cpp:163
msgid "Enable auto cooling"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:164
+#: xs/src/libslic3r/PrintConfig.cpp:164
msgid ""
"This flag enables the automatic cooling logic that adjusts print speed and "
"fan speed according to layer printing time."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:171
+#: xs/src/libslic3r/PrintConfig.cpp:171
msgid ""
"This is the acceleration your printer will be reset to after the role-"
"specific acceleration values are used (perimeter/infill). Set zero to "
"prevent resetting acceleration at all."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:180
+#: xs/src/libslic3r/PrintConfig.cpp:180
msgid "Disable fan for the first"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:181
+#: xs/src/libslic3r/PrintConfig.cpp:181
msgid ""
"You can set this to a positive value to disable fan at all during the first "
"layers, so that it does not make adhesion worse."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:183
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:694
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1033
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1224
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1285
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1437
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1482
+#: xs/src/libslic3r/PrintConfig.cpp:183 xs/src/libslic3r/PrintConfig.cpp:694
+#: xs/src/libslic3r/PrintConfig.cpp:1040 xs/src/libslic3r/PrintConfig.cpp:1231
+#: xs/src/libslic3r/PrintConfig.cpp:1292 xs/src/libslic3r/PrintConfig.cpp:1444
+#: xs/src/libslic3r/PrintConfig.cpp:1489
msgid "layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:190
+#: xs/src/libslic3r/PrintConfig.cpp:190
msgid "Don't support bridges"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:192
+#: xs/src/libslic3r/PrintConfig.cpp:192
msgid ""
"Experimental option for preventing support material from being generated "
"under bridged areas."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:198
+#: xs/src/libslic3r/PrintConfig.cpp:198
msgid "Distance between copies"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:199
+#: xs/src/libslic3r/PrintConfig.cpp:199
msgid "Distance used for the auto-arrange feature of the plater."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:207
+#: xs/src/libslic3r/PrintConfig.cpp:207
msgid "Elephant foot compensation"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:209
+#: xs/src/libslic3r/PrintConfig.cpp:209
msgid ""
"The first layer will be shrunk in the XY plane by the configured value to "
"compensate for the 1st layer squish aka an Elephant Foot effect."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:218
+#: xs/src/libslic3r/PrintConfig.cpp:218
msgid ""
"This end procedure is inserted at the end of the output file. Note that you "
"can use placeholder variables for all Slic3r settings."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:228
+#: xs/src/libslic3r/PrintConfig.cpp:228
msgid ""
"This end procedure is inserted at the end of the output file, before the "
"printer end gcode. Note that you can use placeholder variables for all "
@@ -1306,43 +1297,38 @@ msgid ""
"extruder order."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:238
+#: xs/src/libslic3r/PrintConfig.cpp:238
msgid "Ensure vertical shell thickness"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:240
+#: xs/src/libslic3r/PrintConfig.cpp:240
msgid ""
"Add solid infill near sloping surfaces to guarantee the vertical shell "
"thickness (top+bottom solid layers)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:246
+#: xs/src/libslic3r/PrintConfig.cpp:246
msgid "Top/bottom fill pattern"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:248
+#: xs/src/libslic3r/PrintConfig.cpp:248
msgid ""
"Fill pattern for top/bottom infill. This only affects the external visible "
"layer, and not its adjacent solid shells."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:267
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:277
+#: xs/src/libslic3r/PrintConfig.cpp:267 xs/src/libslic3r/PrintConfig.cpp:277
msgid "External perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:268
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:377
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:592
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:710
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:967
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1292
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1454
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1614
+#: xs/src/libslic3r/PrintConfig.cpp:268 xs/src/libslic3r/PrintConfig.cpp:377
+#: xs/src/libslic3r/PrintConfig.cpp:592 xs/src/libslic3r/PrintConfig.cpp:710
+#: xs/src/libslic3r/PrintConfig.cpp:974 xs/src/libslic3r/PrintConfig.cpp:1299
+#: xs/src/libslic3r/PrintConfig.cpp:1461 xs/src/libslic3r/PrintConfig.cpp:1621
msgid "Extrusion Width"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:269
+#: xs/src/libslic3r/PrintConfig.cpp:269
msgid ""
"Set this to a non-zero value to set a manual extrusion width for external "
"perimeters. If left zero, default extrusion width will be used if set, "
@@ -1350,67 +1336,60 @@ msgid ""
"(for example 200%), it will be computed over layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:272
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:597
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:715
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:972
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1296
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1458
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1619
+#: xs/src/libslic3r/PrintConfig.cpp:272 xs/src/libslic3r/PrintConfig.cpp:597
+#: xs/src/libslic3r/PrintConfig.cpp:715 xs/src/libslic3r/PrintConfig.cpp:979
+#: xs/src/libslic3r/PrintConfig.cpp:1303 xs/src/libslic3r/PrintConfig.cpp:1465
+#: xs/src/libslic3r/PrintConfig.cpp:1626
msgid "mm or % (leave 0 for default)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:279
+#: xs/src/libslic3r/PrintConfig.cpp:279
msgid ""
"This separate setting will affect the speed of external perimeters (the "
"visible ones). If expressed as percentage (for example: 80%) it will be "
"calculated on the perimeters speed setting above. Set to zero for auto."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:282
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:619
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1255
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1306
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1501
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1631
+#: xs/src/libslic3r/PrintConfig.cpp:282 xs/src/libslic3r/PrintConfig.cpp:619
+#: xs/src/libslic3r/PrintConfig.cpp:1262 xs/src/libslic3r/PrintConfig.cpp:1313
+#: xs/src/libslic3r/PrintConfig.cpp:1508 xs/src/libslic3r/PrintConfig.cpp:1638
msgid "mm/s or %"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:289
+#: xs/src/libslic3r/PrintConfig.cpp:289
msgid "External perimeters first"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:291
+#: xs/src/libslic3r/PrintConfig.cpp:291
msgid ""
"Print contour perimeters from the outermost one to the innermost one instead "
"of the default inverse order."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:297
+#: xs/src/libslic3r/PrintConfig.cpp:297
msgid "Extra perimeters if needed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:299
-#, no-c-format
+#: xs/src/libslic3r/PrintConfig.cpp:299
+#, possible-c-format
msgid ""
"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r "
"keeps adding perimeters, until more than 70% of the loop immediately above "
"is supported."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:309
+#: xs/src/libslic3r/PrintConfig.cpp:309
msgid ""
"The extruder to use (unless more specific extruder settings are specified). "
"This value overrides perimeter and infill extruders, but not the support "
"extruders."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:320
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:69
+#: xs/src/libslic3r/PrintConfig.cpp:320 lib/Slic3r/GUI/Plater/3DPreview.pm:69
msgid "Height"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:321
+#: xs/src/libslic3r/PrintConfig.cpp:321
msgid ""
"Set this to the vertical distance between your nozzle tip and (usually) the "
"X carriage rods. In other words, this is the height of the clearance "
@@ -1418,31 +1397,30 @@ msgid ""
"extruder can peek before colliding with other printed objects."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:331
+#: xs/src/libslic3r/PrintConfig.cpp:331
msgid "Radius"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:332
+#: xs/src/libslic3r/PrintConfig.cpp:332
msgid ""
"Set this to the clearance radius around your extruder. If the extruder is "
"not centered, choose the largest value for safety. This setting is used to "
"check for collisions and to display the graphical preview in the plater."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:342
+#: xs/src/libslic3r/PrintConfig.cpp:342
msgid "Extruder Color"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:343
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:406
+#: xs/src/libslic3r/PrintConfig.cpp:343 xs/src/libslic3r/PrintConfig.cpp:406
msgid "This is only used in the Slic3r interface as a visual help."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:350
+#: xs/src/libslic3r/PrintConfig.cpp:350
msgid "Extruder offset"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:351
+#: xs/src/libslic3r/PrintConfig.cpp:351
msgid ""
"If your firmware doesn't handle the extruder displacement you need the G-"
"code to take it into account. This option lets you specify the displacement "
@@ -1450,21 +1428,21 @@ msgid ""
"coordinates (they will be subtracted from the XY coordinate)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:360
+#: xs/src/libslic3r/PrintConfig.cpp:360
msgid "Extrusion axis"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:361
+#: xs/src/libslic3r/PrintConfig.cpp:361
msgid ""
"Use this option to set the axis letter associated to your printer's extruder "
"(usually E but some printers use A)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:367
+#: xs/src/libslic3r/PrintConfig.cpp:367
msgid "Extrusion multiplier"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:368
+#: xs/src/libslic3r/PrintConfig.cpp:368
msgid ""
"This factor changes the amount of flow proportionally. You may need to tweak "
"this setting to get nice surface finish and correct single wall widths. "
@@ -1472,11 +1450,11 @@ msgid ""
"more, check filament diameter and your firmware E steps."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:376
+#: xs/src/libslic3r/PrintConfig.cpp:376
msgid "Default extrusion width"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:378
+#: xs/src/libslic3r/PrintConfig.cpp:378
msgid ""
"Set this to a non-zero value to allow a manual extrusion width. If left to "
"zero, Slic3r derives extrusion widths from the nozzle diameter (see the "
@@ -1485,77 +1463,74 @@ msgid ""
"height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:382
+#: xs/src/libslic3r/PrintConfig.cpp:382
msgid "mm or % (leave 0 for auto)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:387
+#: xs/src/libslic3r/PrintConfig.cpp:387
msgid "Keep fan always on"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:388
+#: xs/src/libslic3r/PrintConfig.cpp:388
msgid ""
"If this is enabled, fan will never be disabled and will be kept running at "
"least at its minimum speed. Useful for PLA, harmful for ABS."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:394
+#: xs/src/libslic3r/PrintConfig.cpp:394
msgid "Enable fan if layer print time is below"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:395
+#: xs/src/libslic3r/PrintConfig.cpp:395
msgid ""
"If layer print time is estimated below this number of seconds, fan will be "
"enabled and its speed will be calculated by interpolating the minimum and "
"maximum speeds."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:397
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1242
+#: xs/src/libslic3r/PrintConfig.cpp:397 xs/src/libslic3r/PrintConfig.cpp:1249
msgid "approximate seconds"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:405
+#: xs/src/libslic3r/PrintConfig.cpp:405
msgid "Color"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:412
+#: xs/src/libslic3r/PrintConfig.cpp:412
msgid "Filament notes"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:413
+#: xs/src/libslic3r/PrintConfig.cpp:413
msgid "You can put your notes regarding the filament here."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:421
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:817
+#: xs/src/libslic3r/PrintConfig.cpp:421 xs/src/libslic3r/PrintConfig.cpp:817
msgid "Max volumetric speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:422
+#: xs/src/libslic3r/PrintConfig.cpp:422
msgid ""
"Maximum volumetric speed allowed for this filament. Limits the maximum "
"volumetric speed of a print to the minimum of print and filament volumetric "
"speed. Set to zero for no limit."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:425
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:820
+#: xs/src/libslic3r/PrintConfig.cpp:425 xs/src/libslic3r/PrintConfig.cpp:820
msgid "mm³/s"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:432
+#: xs/src/libslic3r/PrintConfig.cpp:432
msgid ""
"Enter your filament diameter here. Good precision is required, so use a "
"caliper and do multiple measurements along the filament, then compute the "
"average."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:440
+#: xs/src/libslic3r/PrintConfig.cpp:440
msgid "Density"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:441
+#: xs/src/libslic3r/PrintConfig.cpp:441
msgid ""
"Enter your filament density here. This is only for statistical information. "
"A decent way is to weigh a known length of filament and compute the ratio of "
@@ -1563,16 +1538,15 @@ msgid ""
"displacement."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:444
+#: xs/src/libslic3r/PrintConfig.cpp:444
msgid "g/cm³"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:450
+#: xs/src/libslic3r/PrintConfig.cpp:450
msgid "Filament type"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:451
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1002
+#: xs/src/libslic3r/PrintConfig.cpp:451 xs/src/libslic3r/PrintConfig.cpp:1009
msgid ""
"If you want to process the output G-code through custom scripts, just list "
"their absolute paths here. Separate multiple scripts with a semicolon. "
@@ -1581,77 +1555,73 @@ msgid ""
"environment variables."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:470
+#: xs/src/libslic3r/PrintConfig.cpp:470
msgid "Soluble material"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:471
+#: xs/src/libslic3r/PrintConfig.cpp:471
msgid "Soluble material is most likely used for a soluble support."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:476
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:450
+#: xs/src/libslic3r/PrintConfig.cpp:476 lib/Slic3r/GUI/Plater.pm:453
msgid "Cost"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:477
+#: xs/src/libslic3r/PrintConfig.cpp:477
msgid ""
"Enter your filament cost per kg here. This is only for statistical "
"information."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:478
+#: xs/src/libslic3r/PrintConfig.cpp:478
msgid "money/kg"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:487
+#: xs/src/libslic3r/PrintConfig.cpp:487
msgid "Fill angle"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:489
+#: xs/src/libslic3r/PrintConfig.cpp:489
msgid ""
"Default base angle for infill orientation. Cross-hatching will be applied to "
"this. Bridges will be infilled using the best direction Slic3r can detect, "
"so this setting does not affect them."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:501
+#: xs/src/libslic3r/PrintConfig.cpp:501
msgid "Fill density"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:503
-#, no-c-format
+#: xs/src/libslic3r/PrintConfig.cpp:503
msgid "Density of internal infill, expressed in the range 0% - 100%."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:539
+#: xs/src/libslic3r/PrintConfig.cpp:539
msgid "Fill pattern"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:541
+#: xs/src/libslic3r/PrintConfig.cpp:541
msgid "Fill pattern for general low-density infill."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:573
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:582
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:591
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:625
+#: xs/src/libslic3r/PrintConfig.cpp:573 xs/src/libslic3r/PrintConfig.cpp:582
+#: xs/src/libslic3r/PrintConfig.cpp:591 xs/src/libslic3r/PrintConfig.cpp:625
msgid "First layer"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:574
+#: xs/src/libslic3r/PrintConfig.cpp:574
msgid ""
"This is the acceleration your printer will use for first layer. Set zero to "
"disable acceleration control for first layer."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:583
+#: xs/src/libslic3r/PrintConfig.cpp:583
msgid ""
"Heated build plate temperature for the first layer. Set this to zero to "
"disable bed temperature control commands in the output."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:593
+#: xs/src/libslic3r/PrintConfig.cpp:593
msgid ""
"Set this to a non-zero value to set a manual extrusion width for first "
"layer. You can use this to force fatter extrudates for better adhesion. If "
@@ -1659,11 +1629,11 @@ msgid ""
"layer height. If set to zero, it will use the default extrusion width."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:603
+#: xs/src/libslic3r/PrintConfig.cpp:603
msgid "First layer height"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:605
+#: xs/src/libslic3r/PrintConfig.cpp:605
msgid ""
"When printing with very low layer heights, you might still want to print a "
"thicker bottom layer to improve adhesion and tolerance for non perfect build "
@@ -1671,59 +1641,58 @@ msgid ""
"example: 150%) over the default layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:609
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:740
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1390
+#: xs/src/libslic3r/PrintConfig.cpp:609 xs/src/libslic3r/PrintConfig.cpp:740
+#: xs/src/libslic3r/PrintConfig.cpp:1397
msgid "mm or %"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:615
+#: xs/src/libslic3r/PrintConfig.cpp:615
msgid "First layer speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:616
+#: xs/src/libslic3r/PrintConfig.cpp:616
msgid ""
"If expressed as absolute value in mm/s, this speed will be applied to all "
"the print moves of the first layer, regardless of their type. If expressed "
"as a percentage (for example: 40%) it will scale the default speeds."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:626
+#: xs/src/libslic3r/PrintConfig.cpp:626
msgid ""
"Extruder temperature for first layer. If you want to control temperature "
"manually during print, set this to zero to disable temperature control "
"commands in the output file."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:634
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:145
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:87
+#: xs/src/libslic3r/PrintConfig.cpp:634
+#: xs/src/libslic3r/GCode/PreviewData.cpp:145
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:87
msgid "Gap fill"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:636
+#: xs/src/libslic3r/PrintConfig.cpp:636
msgid ""
"Speed for filling small gaps using short zigzag moves. Keep this reasonably "
"low to avoid too much shaking and resonance issues. Set zero to disable gaps "
"filling."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:644
+#: xs/src/libslic3r/PrintConfig.cpp:644
msgid "Verbose G-code"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:645
+#: xs/src/libslic3r/PrintConfig.cpp:645
msgid ""
"Enable this to get a commented G-code file, with each line explained by a "
"descriptive text. If you print from SD card, the additional weight of the "
"file could make your firmware slow down."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:652
+#: xs/src/libslic3r/PrintConfig.cpp:652
msgid "G-code flavor"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:653
+#: xs/src/libslic3r/PrintConfig.cpp:653
msgid ""
"Some G/M-code commands, including temperature control and others, are not "
"universal. Set this option to your printer's firmware to get a compatible "
@@ -1731,35 +1700,35 @@ msgid ""
"extrusion value at all."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:682
+#: xs/src/libslic3r/PrintConfig.cpp:682
msgid ""
"This is the acceleration your printer will use for infill. Set zero to "
"disable acceleration control for infill."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:690
+#: xs/src/libslic3r/PrintConfig.cpp:690
msgid "Combine infill every"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:692
+#: xs/src/libslic3r/PrintConfig.cpp:692
msgid ""
"This feature allows to combine infill and speed up your print by extruding "
"thicker infill layers while preserving thin perimeters, thus accuracy."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:696
+#: xs/src/libslic3r/PrintConfig.cpp:696
msgid "Combine infill every n layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:701
+#: xs/src/libslic3r/PrintConfig.cpp:701
msgid "Infill extruder"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:703
+#: xs/src/libslic3r/PrintConfig.cpp:703
msgid "The extruder to use when printing infill."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:711
+#: xs/src/libslic3r/PrintConfig.cpp:711
msgid ""
"Set this to a non-zero value to set a manual extrusion width for infill. If "
"left zero, default extrusion width will be used if set, otherwise 1.125 x "
@@ -1768,32 +1737,32 @@ msgid ""
"example 90%) it will be computed over layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:720
+#: xs/src/libslic3r/PrintConfig.cpp:720
msgid "Infill before perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:721
+#: xs/src/libslic3r/PrintConfig.cpp:721
msgid ""
"This option will switch the print order of perimeters and infill, making the "
"latter first."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:726
+#: xs/src/libslic3r/PrintConfig.cpp:726
msgid "Only infill where needed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:728
+#: xs/src/libslic3r/PrintConfig.cpp:728
msgid ""
"This option will limit infill to the areas actually needed for supporting "
"ceilings (it will act as internal support material). If enabled, slows down "
"the G-code generation due to the multiple checks involved."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:735
+#: xs/src/libslic3r/PrintConfig.cpp:735
msgid "Infill/perimeters overlap"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:737
+#: xs/src/libslic3r/PrintConfig.cpp:737
msgid ""
"This setting applies an additional overlap between infill and perimeters for "
"better bonding. Theoretically this shouldn't be needed, but backlash might "
@@ -1801,22 +1770,22 @@ msgid ""
"perimeter extrusion width."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:748
+#: xs/src/libslic3r/PrintConfig.cpp:748
msgid "Speed for printing the internal fill. Set to zero for auto."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:757
+#: xs/src/libslic3r/PrintConfig.cpp:757
msgid "Interface shells"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:758
+#: xs/src/libslic3r/PrintConfig.cpp:758
msgid ""
"Force the generation of solid shells between adjacent materials/volumes. "
"Useful for multi-extruder prints with translucent materials or manual "
"soluble support material."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:767
+#: xs/src/libslic3r/PrintConfig.cpp:767
msgid ""
"This custom code is inserted at every layer change, right after the Z move "
"and before the extruder moves to the first layer point. Note that you can "
@@ -1824,23 +1793,22 @@ msgid ""
"[layer_z]."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:779
+#: xs/src/libslic3r/PrintConfig.cpp:779
msgid ""
"This setting controls the height (and thus the total number) of the slices/"
"layers. Thinner layers give better accuracy but take more time to print."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:787
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:796
+#: xs/src/libslic3r/PrintConfig.cpp:787 xs/src/libslic3r/PrintConfig.cpp:796
msgid "Max"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:788
+#: xs/src/libslic3r/PrintConfig.cpp:788
msgid "This setting represents the maximum speed of your fan."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:797
-#, no-c-format
+#: xs/src/libslic3r/PrintConfig.cpp:797
+#, possible-c-format
msgid ""
"This is the highest printable layer height for this extruder, used to cap "
"the variable layer height and support layer height. Maximum recommended "
@@ -1848,29 +1816,28 @@ msgid ""
"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:807
+#: xs/src/libslic3r/PrintConfig.cpp:807
msgid "Max print speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:808
+#: xs/src/libslic3r/PrintConfig.cpp:808
msgid ""
"When setting other speed settings to 0 Slic3r will autocalculate the optimal "
"speed in order to keep constant extruder pressure. This experimental setting "
"is used to set the highest print speed you want to allow."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:818
+#: xs/src/libslic3r/PrintConfig.cpp:818
msgid ""
"This experimental setting is used to set the maximum volumetric speed your "
"extruder supports."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:826
+#: xs/src/libslic3r/PrintConfig.cpp:826
msgid "Max volumetric slope positive"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:827
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:838
+#: xs/src/libslic3r/PrintConfig.cpp:827 xs/src/libslic3r/PrintConfig.cpp:838
msgid ""
"This experimental setting is used to limit the speed of change in extrusion "
"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate "
@@ -1878,111 +1845,109 @@ msgid ""
"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:831
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:842
+#: xs/src/libslic3r/PrintConfig.cpp:831 xs/src/libslic3r/PrintConfig.cpp:842
msgid "mm³/s²"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:837
+#: xs/src/libslic3r/PrintConfig.cpp:837
msgid "Max volumetric slope negative"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:848
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:857
+#: xs/src/libslic3r/PrintConfig.cpp:848 xs/src/libslic3r/PrintConfig.cpp:857
msgid "Min"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:849
+#: xs/src/libslic3r/PrintConfig.cpp:849
msgid "This setting represents the minimum PWM your fan needs to work."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:858
+#: xs/src/libslic3r/PrintConfig.cpp:858
msgid ""
"This is the lowest printable layer height for this extruder and limits the "
"resolution for variable layer height. Typical values are between 0.05 mm and "
"0.1 mm."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:866
+#: xs/src/libslic3r/PrintConfig.cpp:866
msgid "Min print speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:867
+#: xs/src/libslic3r/PrintConfig.cpp:867
msgid "Slic3r will not scale speed down below this speed."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:874
+#: xs/src/libslic3r/PrintConfig.cpp:874
msgid "Minimum extrusion length"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:875
+#: xs/src/libslic3r/PrintConfig.cpp:875
msgid ""
"Generate no less than the number of skirt loops required to consume the "
"specified amount of filament on the bottom layer. For multi-extruder "
"machines, this minimum applies to each extruder."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:884
+#: xs/src/libslic3r/PrintConfig.cpp:884
msgid "Configuration notes"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:885
+#: xs/src/libslic3r/PrintConfig.cpp:885
msgid ""
"You can put here your personal notes. This text will be added to the G-code "
"header comments."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:894
+#: xs/src/libslic3r/PrintConfig.cpp:894
msgid "Nozzle diameter"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:895
+#: xs/src/libslic3r/PrintConfig.cpp:895
msgid ""
"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:901
+#: xs/src/libslic3r/PrintConfig.cpp:901
msgid "API Key"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:902
+#: xs/src/libslic3r/PrintConfig.cpp:902
msgid ""
"Slic3r can upload G-code files to OctoPrint. This field should contain the "
"API Key required for authentication."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:908
-msgid "Host or IP"
+#: xs/src/libslic3r/PrintConfig.cpp:915
+msgid "Hostname, IP or URL"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:909
+#: xs/src/libslic3r/PrintConfig.cpp:916
msgid ""
"Slic3r can upload G-code files to OctoPrint. This field should contain the "
-"hostname or IP address of the OctoPrint instance."
+"hostname, IP address or URL of the OctoPrint instance."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:915
+#: xs/src/libslic3r/PrintConfig.cpp:922
msgid "Only retract when crossing perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:916
+#: xs/src/libslic3r/PrintConfig.cpp:923
msgid ""
"Disables retraction when the travel path does not exceed the upper layer's "
"perimeters (and thus any ooze will be probably invisible)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:923
+#: xs/src/libslic3r/PrintConfig.cpp:930
msgid ""
"This option will drop the temperature of the inactive extruders to prevent "
"oozing. It will enable a tall skirt automatically and move extruders outside "
"such skirt when changing temperatures."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:930
+#: xs/src/libslic3r/PrintConfig.cpp:937
msgid "Output filename format"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:931
+#: xs/src/libslic3r/PrintConfig.cpp:938
msgid ""
"You can use all configuration options as variables inside this template. For "
"example: [layer_height], [fill_density] etc. You can also use [timestamp], "
@@ -1990,40 +1955,38 @@ msgid ""
"[input_filename], [input_filename_base]."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:940
+#: xs/src/libslic3r/PrintConfig.cpp:947
msgid "Detect bridging perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:942
+#: xs/src/libslic3r/PrintConfig.cpp:949
msgid ""
"Experimental option to adjust flow for overhangs (bridge flow will be used), "
"to apply bridge speed to them and enable fan."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:948
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:966
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:978
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:988
+#: xs/src/libslic3r/PrintConfig.cpp:955 xs/src/libslic3r/PrintConfig.cpp:973
+#: xs/src/libslic3r/PrintConfig.cpp:985 xs/src/libslic3r/PrintConfig.cpp:995
msgid "Perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:949
+#: xs/src/libslic3r/PrintConfig.cpp:956
msgid ""
"This is the acceleration your printer will use for perimeters. A high value "
"like 9000 usually gives good results if your hardware is up to the job. Set "
"zero to disable acceleration control for perimeters."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:957
+#: xs/src/libslic3r/PrintConfig.cpp:964
msgid "Perimeter extruder"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:959
+#: xs/src/libslic3r/PrintConfig.cpp:966
msgid ""
"The extruder to use when printing perimeters and brim. First extruder is 1."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:968
+#: xs/src/libslic3r/PrintConfig.cpp:975
msgid ""
"Set this to a non-zero value to set a manual extrusion width for perimeters. "
"You may want to use thinner extrudates to get more accurate surfaces. If "
@@ -2032,12 +1995,12 @@ msgid ""
"it will be computed over layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:980
+#: xs/src/libslic3r/PrintConfig.cpp:987
msgid ""
"Speed for perimeters (contours, aka vertical shells). Set to zero for auto."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:990
+#: xs/src/libslic3r/PrintConfig.cpp:997
msgid ""
"This option sets the number of perimeters to generate for each layer. Note "
"that Slic3r may increase this number automatically when it detects sloping "
@@ -2045,33 +2008,33 @@ msgid ""
"Perimeters option is enabled."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:994
+#: xs/src/libslic3r/PrintConfig.cpp:1001
msgid "(minimum)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1014
+#: xs/src/libslic3r/PrintConfig.cpp:1021
msgid "Printer notes"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1015
+#: xs/src/libslic3r/PrintConfig.cpp:1022
msgid "You can put your notes regarding the printer here."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1029
+#: xs/src/libslic3r/PrintConfig.cpp:1036
msgid "Raft layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1031
+#: xs/src/libslic3r/PrintConfig.cpp:1038
msgid ""
"The object will be raised by this number of layers, and support material "
"will be generated under it."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1039
+#: xs/src/libslic3r/PrintConfig.cpp:1046
msgid "Resolution"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1040
+#: xs/src/libslic3r/PrintConfig.cpp:1047
msgid ""
"Minimum detail resolution, used to simplify the input file for speeding up "
"the slicing job and reducing memory usage. High-resolution models often "
@@ -2079,271 +2042,266 @@ msgid ""
"simplification and use full resolution from input."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1050
+#: xs/src/libslic3r/PrintConfig.cpp:1057
msgid "Minimum travel after retraction"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1051
+#: xs/src/libslic3r/PrintConfig.cpp:1058
msgid ""
"Retraction is not triggered when travel moves are shorter than this length."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1057
+#: xs/src/libslic3r/PrintConfig.cpp:1064
msgid "Retract amount before wipe"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1058
+#: xs/src/libslic3r/PrintConfig.cpp:1065
msgid ""
"With bowden extruders, it may be wise to do some amount of quick retract "
"before doing the wipe movement."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1065
+#: xs/src/libslic3r/PrintConfig.cpp:1072
msgid "Retract on layer change"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1066
+#: xs/src/libslic3r/PrintConfig.cpp:1073
msgid "This flag enforces a retraction whenever a Z move is done."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1071
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1080
+#: xs/src/libslic3r/PrintConfig.cpp:1078 xs/src/libslic3r/PrintConfig.cpp:1087
msgid "Length"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1072
+#: xs/src/libslic3r/PrintConfig.cpp:1079
msgid "Retraction Length"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1073
+#: xs/src/libslic3r/PrintConfig.cpp:1080
msgid ""
"When retraction is triggered, filament is pulled back by the specified "
"amount (the length is measured on raw filament, before it enters the "
"extruder)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1075
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1085
+#: xs/src/libslic3r/PrintConfig.cpp:1082 xs/src/libslic3r/PrintConfig.cpp:1092
msgid "mm (zero to disable)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1081
+#: xs/src/libslic3r/PrintConfig.cpp:1088
msgid "Retraction Length (Toolchange)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1082
+#: xs/src/libslic3r/PrintConfig.cpp:1089
msgid ""
"When retraction is triggered before changing tool, filament is pulled back "
"by the specified amount (the length is measured on raw filament, before it "
"enters the extruder)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1090
+#: xs/src/libslic3r/PrintConfig.cpp:1097
msgid "Lift Z"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1091
+#: xs/src/libslic3r/PrintConfig.cpp:1098
msgid ""
"If you set this to a positive value, Z is quickly raised every time a "
"retraction is triggered. When using multiple extruders, only the setting for "
"the first extruder will be considered."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1099
+#: xs/src/libslic3r/PrintConfig.cpp:1106
msgid "Above Z"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1100
+#: xs/src/libslic3r/PrintConfig.cpp:1107
msgid "Only lift Z above"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1101
+#: xs/src/libslic3r/PrintConfig.cpp:1108
msgid ""
"If you set this to a positive value, Z lift will only take place above the "
"specified absolute Z. You can tune this setting for skipping lift on the "
"first layers."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1108
+#: xs/src/libslic3r/PrintConfig.cpp:1115
msgid "Below Z"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1109
+#: xs/src/libslic3r/PrintConfig.cpp:1116
msgid "Only lift Z below"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1110
+#: xs/src/libslic3r/PrintConfig.cpp:1117
msgid ""
"If you set this to a positive value, Z lift will only take place below the "
"specified absolute Z. You can tune this setting for limiting lift to the "
"first layers."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1118
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1126
+#: xs/src/libslic3r/PrintConfig.cpp:1125 xs/src/libslic3r/PrintConfig.cpp:1133
msgid "Extra length on restart"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1119
+#: xs/src/libslic3r/PrintConfig.cpp:1126
msgid ""
"When the retraction is compensated after the travel move, the extruder will "
"push this additional amount of filament. This setting is rarely needed."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1127
+#: xs/src/libslic3r/PrintConfig.cpp:1134
msgid ""
"When the retraction is compensated after changing tool, the extruder will "
"push this additional amount of filament."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1134
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1135
+#: xs/src/libslic3r/PrintConfig.cpp:1141 xs/src/libslic3r/PrintConfig.cpp:1142
msgid "Retraction Speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1136
+#: xs/src/libslic3r/PrintConfig.cpp:1143
msgid "The speed for retractions (it only applies to the extruder motor)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1142
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1143
+#: xs/src/libslic3r/PrintConfig.cpp:1149 xs/src/libslic3r/PrintConfig.cpp:1150
msgid "Deretraction Speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1144
+#: xs/src/libslic3r/PrintConfig.cpp:1151
msgid ""
"The speed for loading of a filament into extruder after retraction (it only "
"applies to the extruder motor). If left to zero, the retraction speed is "
"used."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1151
+#: xs/src/libslic3r/PrintConfig.cpp:1158
msgid "Seam position"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1153
+#: xs/src/libslic3r/PrintConfig.cpp:1160
msgid "Position of perimeters starting points."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1169
+#: xs/src/libslic3r/PrintConfig.cpp:1176
msgid "Direction"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1171
+#: xs/src/libslic3r/PrintConfig.cpp:1178
msgid "Preferred direction of the seam"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1172
+#: xs/src/libslic3r/PrintConfig.cpp:1179
msgid "Seam preferred direction"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1180
+#: xs/src/libslic3r/PrintConfig.cpp:1187
msgid "Jitter"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1182
+#: xs/src/libslic3r/PrintConfig.cpp:1189
msgid "Seam preferred direction jitter"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1183
+#: xs/src/libslic3r/PrintConfig.cpp:1190
msgid "Preferred direction of the seam - jitter"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1194
+#: xs/src/libslic3r/PrintConfig.cpp:1201
msgid "USB/serial port for printer connection."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1202
+#: xs/src/libslic3r/PrintConfig.cpp:1209
msgid "Serial port speed"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1203
+#: xs/src/libslic3r/PrintConfig.cpp:1210
msgid "Speed (baud) of USB/serial port for printer connection."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1212
+#: xs/src/libslic3r/PrintConfig.cpp:1219
msgid "Distance from object"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1213
+#: xs/src/libslic3r/PrintConfig.cpp:1220
msgid ""
"Distance between skirt and object(s). Set this to zero to attach the skirt "
"to the object(s) and get a brim for better adhesion."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1221
+#: xs/src/libslic3r/PrintConfig.cpp:1228
msgid "Skirt height"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1222
+#: xs/src/libslic3r/PrintConfig.cpp:1229
msgid ""
"Height of skirt expressed in layers. Set this to a tall value to use skirt "
"as a shield against drafts."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1229
+#: xs/src/libslic3r/PrintConfig.cpp:1236
msgid "Loops (minimum)"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1230
+#: xs/src/libslic3r/PrintConfig.cpp:1237
msgid "Skirt Loops"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1231
+#: xs/src/libslic3r/PrintConfig.cpp:1238
msgid ""
"Number of loops for the skirt. If the Minimum Extrusion Length option is "
"set, the number of loops might be greater than the one configured here. Set "
"this to zero to disable skirt completely."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1239
+#: xs/src/libslic3r/PrintConfig.cpp:1246
msgid "Slow down if layer print time is below"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1240
+#: xs/src/libslic3r/PrintConfig.cpp:1247
msgid ""
"If layer print time is estimated below this number of seconds, print moves "
"speed will be scaled down to extend duration to this value."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1250
+#: xs/src/libslic3r/PrintConfig.cpp:1257
msgid "Small perimeters"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1252
+#: xs/src/libslic3r/PrintConfig.cpp:1259
msgid ""
"This separate setting will affect the speed of perimeters having radius <= "
"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will "
"be calculated on the perimeters speed setting above. Set to zero for auto."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1262
+#: xs/src/libslic3r/PrintConfig.cpp:1269
msgid "Solid infill threshold area"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1264
+#: xs/src/libslic3r/PrintConfig.cpp:1271
msgid ""
"Force solid infill for regions having a smaller area than the specified "
"threshold."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1265
+#: xs/src/libslic3r/PrintConfig.cpp:1272
msgid "mm²"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1271
+#: xs/src/libslic3r/PrintConfig.cpp:1278
msgid "Solid infill extruder"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1273
+#: xs/src/libslic3r/PrintConfig.cpp:1280
msgid "The extruder to use when printing solid infill."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1279
+#: xs/src/libslic3r/PrintConfig.cpp:1286
msgid "Solid infill every"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1281
+#: xs/src/libslic3r/PrintConfig.cpp:1288
msgid ""
"This feature allows to force a solid layer every given number of layers. "
"Zero to disable. You can set this to any value (for example 9999); Slic3r "
@@ -2351,14 +2309,13 @@ msgid ""
"according to nozzle diameter and layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1291
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1301
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:142
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:84
+#: xs/src/libslic3r/PrintConfig.cpp:1298 xs/src/libslic3r/PrintConfig.cpp:1308
+#: xs/src/libslic3r/GCode/PreviewData.cpp:142
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:84
msgid "Solid infill"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1293
+#: xs/src/libslic3r/PrintConfig.cpp:1300
msgid ""
"Set this to a non-zero value to set a manual extrusion width for infill for "
"solid surfaces. If left zero, default extrusion width will be used if set, "
@@ -2366,22 +2323,22 @@ msgid ""
"(for example 90%) it will be computed over layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1303
+#: xs/src/libslic3r/PrintConfig.cpp:1310
msgid ""
"Speed for printing solid regions (top/bottom/internal horizontal shells). "
"This can be expressed as a percentage (for example: 80%) over the default "
"infill speed above. Set to zero for auto."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1315
+#: xs/src/libslic3r/PrintConfig.cpp:1322
msgid "Number of solid layers to generate on top and bottom surfaces."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1322
+#: xs/src/libslic3r/PrintConfig.cpp:1329
msgid "Spiral vase"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1323
+#: xs/src/libslic3r/PrintConfig.cpp:1330
msgid ""
"This feature will raise Z gradually while printing a single-walled object in "
"order to remove any visible seam. This option requires a single perimeter, "
@@ -2390,18 +2347,18 @@ msgid ""
"when printing more than an object."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1332
+#: xs/src/libslic3r/PrintConfig.cpp:1339
msgid "Temperature variation"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1333
+#: xs/src/libslic3r/PrintConfig.cpp:1340
msgid ""
"Temperature difference to be applied when an extruder is not active. Enables "
"a full-height \"sacrificial\" skirt on which the nozzles are periodically "
"wiped."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1343
+#: xs/src/libslic3r/PrintConfig.cpp:1350
msgid ""
"This start procedure is inserted at the beginning, after bed has reached the "
"target temperature and extruder just started heating, and before extruder "
@@ -2412,80 +2369,76 @@ msgid ""
"\"M109 S[first_layer_temperature]\" command wherever you want."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1358
+#: xs/src/libslic3r/PrintConfig.cpp:1365
msgid ""
"This start procedure is inserted at the beginning, after any printer start "
"gcode. This is used to override settings for a specific filament. If Slic3r "
"detects M104, M109, M140 or M190 in your custom codes, such commands will "
"not be prepended automatically so you're free to customize the order of "
"heating commands and other custom actions. 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. If you have multiple "
+"variables for all Slic3r settings, so you can put a \"M109 "
+"S[first_layer_temperature]\" command wherever you want. If you have multiple "
"extruders, the gcode is processed in extruder order."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1373
+#: xs/src/libslic3r/PrintConfig.cpp:1380
msgid "Single Extruder Multi Material"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1374
+#: xs/src/libslic3r/PrintConfig.cpp:1381
msgid "The printer multiplexes filaments into a single hot end."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1379
+#: xs/src/libslic3r/PrintConfig.cpp:1386
msgid "Generate support material"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1381
+#: xs/src/libslic3r/PrintConfig.cpp:1388
msgid "Enable support material generation."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1386
+#: xs/src/libslic3r/PrintConfig.cpp:1393
msgid "XY separation between an object and its support"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1388
+#: xs/src/libslic3r/PrintConfig.cpp:1395
msgid ""
"XY separation between an object and its support. If expressed as percentage "
"(for example 50%), it will be calculated over external perimeter width."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1398
+#: xs/src/libslic3r/PrintConfig.cpp:1405
msgid "Pattern angle"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1400
+#: xs/src/libslic3r/PrintConfig.cpp:1407
msgid ""
"Use this setting to rotate the support material pattern on the horizontal "
"plane."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1408
-msgid "Support on build plate only"
-msgstr ""
-
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1410
+#: xs/src/libslic3r/PrintConfig.cpp:1417
msgid ""
"Only create support if it lies on a build plate. Don't create support on a "
"print."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1416
+#: xs/src/libslic3r/PrintConfig.cpp:1423
msgid "Contact Z distance"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1418
+#: xs/src/libslic3r/PrintConfig.cpp:1425
msgid ""
"The vertical distance between object and support material interface. Setting "
"this to 0 will also prevent Slic3r from using bridge flow and speed for the "
"first object layer."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1431
+#: xs/src/libslic3r/PrintConfig.cpp:1438
msgid "Enforce support for the first"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1433
+#: xs/src/libslic3r/PrintConfig.cpp:1440
msgid ""
"Generate support material for the specified number of layers counting from "
"bottom, regardless of whether normal support material is enabled or not and "
@@ -2493,21 +2446,21 @@ msgid ""
"of objects having a very thin or poor footprint on the build plate."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1439
+#: xs/src/libslic3r/PrintConfig.cpp:1446
msgid "Enforce support for the first n layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1444
+#: xs/src/libslic3r/PrintConfig.cpp:1451
msgid "Support material/raft/skirt extruder"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1446
+#: xs/src/libslic3r/PrintConfig.cpp:1453
msgid ""
"The extruder to use when printing support material, raft and skirt (1+, 0 to "
"use the current extruder to minimize tool changes)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1455
+#: xs/src/libslic3r/PrintConfig.cpp:1462
msgid ""
"Set this to a non-zero value to set a manual extrusion width for support "
"material. If left zero, default extrusion width will be used if set, "
@@ -2515,91 +2468,91 @@ msgid ""
"example 90%) it will be computed over layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1463
+#: xs/src/libslic3r/PrintConfig.cpp:1470
msgid "Interface loops"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1465
+#: xs/src/libslic3r/PrintConfig.cpp:1472
msgid ""
"Cover the top contact layer of the supports with loops. Disabled by default."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1470
+#: xs/src/libslic3r/PrintConfig.cpp:1477
msgid "Support material/raft interface extruder"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1472
+#: xs/src/libslic3r/PrintConfig.cpp:1479
msgid ""
"The extruder to use when printing support material interface (1+, 0 to use "
"the current extruder to minimize tool changes). This affects raft too."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1479
+#: xs/src/libslic3r/PrintConfig.cpp:1486
msgid "Interface layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1481
+#: xs/src/libslic3r/PrintConfig.cpp:1488
msgid ""
"Number of interface layers to insert between the object(s) and support "
"material."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1488
+#: xs/src/libslic3r/PrintConfig.cpp:1495
msgid "Interface pattern spacing"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1490
+#: xs/src/libslic3r/PrintConfig.cpp:1497
msgid "Spacing between interface lines. Set zero to get a solid interface."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1497
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:148
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:90
+#: xs/src/libslic3r/PrintConfig.cpp:1504
+#: xs/src/libslic3r/GCode/PreviewData.cpp:148
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:90
msgid "Support material interface"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1499
+#: xs/src/libslic3r/PrintConfig.cpp:1506
msgid ""
"Speed for printing support material interface layers. If expressed as "
"percentage (for example 50%) it will be calculated over support material "
"speed."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1508
+#: xs/src/libslic3r/PrintConfig.cpp:1515
msgid "Pattern"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1510
+#: xs/src/libslic3r/PrintConfig.cpp:1517
msgid "Pattern used to generate support material."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1524
+#: xs/src/libslic3r/PrintConfig.cpp:1531
msgid "Pattern spacing"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1526
+#: xs/src/libslic3r/PrintConfig.cpp:1533
msgid "Spacing between support material lines."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1535
+#: xs/src/libslic3r/PrintConfig.cpp:1542
msgid "Speed for printing support material."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1542
+#: xs/src/libslic3r/PrintConfig.cpp:1549
msgid "Synchronize with object layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1544
+#: xs/src/libslic3r/PrintConfig.cpp:1551
msgid ""
"Synchronize support layers with the object print layers. This is useful with "
"multi-material printers, where the extruder switch is expensive."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1550
+#: xs/src/libslic3r/PrintConfig.cpp:1557
msgid "Overhang threshold"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1552
+#: xs/src/libslic3r/PrintConfig.cpp:1559
msgid ""
"Support material will not be generated for overhangs whose slope angle (90° "
"= vertical) is above the given threshold. In other words, this value "
@@ -2608,61 +2561,60 @@ msgid ""
"detection (recommended)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1564
+#: xs/src/libslic3r/PrintConfig.cpp:1571
msgid "With sheath around the support"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1566
+#: xs/src/libslic3r/PrintConfig.cpp:1573
msgid ""
"Add a sheath (a single perimeter line) around the base support. This makes "
"the support more reliable, but also more difficult to remove."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1573
+#: xs/src/libslic3r/PrintConfig.cpp:1580
msgid ""
"Extruder temperature for layers after the first one. Set this to zero to "
"disable temperature control commands in the output."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1576
+#: xs/src/libslic3r/PrintConfig.cpp:1583
msgid "Temperature"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1582
+#: xs/src/libslic3r/PrintConfig.cpp:1589
msgid "Detect thin walls"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1584
+#: xs/src/libslic3r/PrintConfig.cpp:1591
msgid ""
"Detect single-width walls (parts where two extrusions don't fit and we need "
"to collapse them into a single trace)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1590
+#: xs/src/libslic3r/PrintConfig.cpp:1597
msgid "Threads"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1591
+#: xs/src/libslic3r/PrintConfig.cpp:1598
msgid ""
"Threads are used to parallelize long-running tasks. Optimal threads number "
"is slightly above the number of available cores/processors."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1603
+#: xs/src/libslic3r/PrintConfig.cpp:1610
msgid ""
"This custom code is inserted right before every extruder change. Note that "
"you can use placeholder variables for all Slic3r settings as well as "
"[previous_extruder] and [next_extruder]."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1613
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1624
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:143
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:85
+#: xs/src/libslic3r/PrintConfig.cpp:1620 xs/src/libslic3r/PrintConfig.cpp:1631
+#: xs/src/libslic3r/GCode/PreviewData.cpp:143
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:85
msgid "Top solid infill"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1615
+#: xs/src/libslic3r/PrintConfig.cpp:1622
msgid ""
"Set this to a non-zero value to set a manual extrusion width for infill for "
"top surfaces. You may want to use thinner extrudates to fill all narrow "
@@ -2671,7 +2623,7 @@ msgid ""
"percentage (for example 90%) it will be computed over layer height."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1626
+#: xs/src/libslic3r/PrintConfig.cpp:1633
msgid ""
"Speed for printing top solid layers (it only applies to the uppermost "
"external layers and not to their internal solid layers). You may want to "
@@ -2680,53 +2632,51 @@ msgid ""
"for auto."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1638
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:369
+#: xs/src/libslic3r/PrintConfig.cpp:1645 lib/Slic3r/GUI/MainFrame.pm:363
msgid "Top"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1640
+#: xs/src/libslic3r/PrintConfig.cpp:1647
msgid "Number of solid layers to generate on top surfaces."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1642
+#: xs/src/libslic3r/PrintConfig.cpp:1649
msgid "Top solid layers"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1647
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:95
+#: xs/src/libslic3r/PrintConfig.cpp:1654 lib/Slic3r/GUI/Plater/3DPreview.pm:95
msgid "Travel"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1648
+#: xs/src/libslic3r/PrintConfig.cpp:1655
msgid "Speed for travel moves (jumps between distant extrusion points)."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1656
+#: xs/src/libslic3r/PrintConfig.cpp:1663
msgid "Use firmware retraction"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1657
+#: xs/src/libslic3r/PrintConfig.cpp:1664
msgid ""
"This experimental setting uses G10 and G11 commands to have the firmware "
"handle the retraction. This is only supported in recent Marlin."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1663
+#: xs/src/libslic3r/PrintConfig.cpp:1670
msgid "Use relative E distances"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1664
+#: xs/src/libslic3r/PrintConfig.cpp:1671
msgid ""
"If your firmware requires relative E values, check this, otherwise leave it "
"unchecked. Most firmwares use absolute values."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1670
+#: xs/src/libslic3r/PrintConfig.cpp:1677
msgid "Use volumetric E"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1671
+#: xs/src/libslic3r/PrintConfig.cpp:1678
msgid ""
"This experimental setting uses outputs the E values in cubic millimeters "
"instead of linear millimeters. If your firmware doesn't already know "
@@ -2736,84 +2686,83 @@ msgid ""
"only supported in recent Marlin."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1681
+#: xs/src/libslic3r/PrintConfig.cpp:1688
msgid "Enable variable layer height feature"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1682
+#: xs/src/libslic3r/PrintConfig.cpp:1689
msgid ""
"Some printers or printer setups may have difficulties printing with a "
"variable layer height. Enabled by default."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1688
+#: xs/src/libslic3r/PrintConfig.cpp:1695
msgid "Wipe while retracting"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1689
+#: xs/src/libslic3r/PrintConfig.cpp:1696
msgid ""
"This flag will move the nozzle while retracting to minimize the possible "
"blob on leaky extruders."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1696
+#: xs/src/libslic3r/PrintConfig.cpp:1703
msgid ""
"Multi material printers may need to prime or purge extruders on tool "
"changes. Extrude the excess material into the wipe tower."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1702
+#: xs/src/libslic3r/PrintConfig.cpp:1709
msgid "Position X"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1703
+#: xs/src/libslic3r/PrintConfig.cpp:1710
msgid "X coordinate of the left front corner of a wipe tower"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1709
+#: xs/src/libslic3r/PrintConfig.cpp:1716
msgid "Position Y"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1710
+#: xs/src/libslic3r/PrintConfig.cpp:1717
msgid "Y coordinate of the left front corner of a wipe tower"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1716
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:70
+#: xs/src/libslic3r/PrintConfig.cpp:1723 lib/Slic3r/GUI/Plater/3DPreview.pm:70
msgid "Width"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1717
+#: xs/src/libslic3r/PrintConfig.cpp:1724
msgid "Width of a wipe tower"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1723
+#: xs/src/libslic3r/PrintConfig.cpp:1730
msgid "Per color change depth"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1724
+#: xs/src/libslic3r/PrintConfig.cpp:1731
msgid ""
"Depth of a wipe color per color change. For N colors, there will be maximum "
"(N-1) tool switches performed, therefore the total depth of the wipe tower "
"will be (N-1) times this value."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1732
+#: xs/src/libslic3r/PrintConfig.cpp:1739
msgid "XY Size Compensation"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1734
+#: xs/src/libslic3r/PrintConfig.cpp:1741
msgid ""
"The object will be grown/shrunk in the XY plane by the configured value "
"(negative = inwards, positive = outwards). This might be useful for fine-"
"tuning hole sizes."
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1742
+#: xs/src/libslic3r/PrintConfig.cpp:1749
msgid "Z offset"
msgstr ""
-#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1743
+#: xs/src/libslic3r/PrintConfig.cpp:1750
msgid ""
"This value will be added (or subtracted) from all the Z coordinates in the "
"output G-code. It is used to compensate for bad Z endstop position: for "
@@ -2821,1063 +2770,1015 @@ msgid ""
"print bed, set this to -0.3 (or fix your endstop)."
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:137
-msgid "None"
-msgstr ""
-
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:138
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:80
+#: xs/src/libslic3r/GCode/PreviewData.cpp:138
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:80
msgid "Perimeter"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:139
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:81
+#: xs/src/libslic3r/GCode/PreviewData.cpp:139
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:81
msgid "External perimeter"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:140
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:82
+#: xs/src/libslic3r/GCode/PreviewData.cpp:140
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:82
msgid "Overhang perimeter"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:141
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:83
+#: xs/src/libslic3r/GCode/PreviewData.cpp:141
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:83
msgid "Internal infill"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:144
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:86
+#: xs/src/libslic3r/GCode/PreviewData.cpp:144
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:86
msgid "Bridge infill"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:151
+#: xs/src/libslic3r/GCode/PreviewData.cpp:151
msgid "Mixed"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:330
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:68
+#: xs/src/libslic3r/GCode/PreviewData.cpp:330
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:68
msgid "Feature type"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:332
+#: xs/src/libslic3r/GCode/PreviewData.cpp:332
msgid "Height (mm)"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:334
+#: xs/src/libslic3r/GCode/PreviewData.cpp:334
msgid "Width (mm)"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:336
+#: xs/src/libslic3r/GCode/PreviewData.cpp:336
msgid "Speed (mm/s)"
msgstr ""
-#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:338
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:72
+#: xs/src/libslic3r/GCode/PreviewData.cpp:338
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:72
msgid "Tool"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI.pm:286
-msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):"
-msgstr ""
-
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:66
+#: lib/Slic3r/GUI/MainFrame.pm:66
msgid "Version "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:66
+#: lib/Slic3r/GUI/MainFrame.pm:66
msgid ""
" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:118
+#: lib/Slic3r/GUI/MainFrame.pm:118
msgid "Plater"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:120
+#: lib/Slic3r/GUI/MainFrame.pm:120
msgid "Controller"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:192
+#: lib/Slic3r/GUI/MainFrame.pm:191
msgid "No Bonjour device found"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:192
+#: lib/Slic3r/GUI/MainFrame.pm:191
msgid "Device Browser"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:211
-msgid "Connection to OctoPrint works correctly."
-msgstr ""
-
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:214
+#: lib/Slic3r/GUI/MainFrame.pm:212
msgid "I wasn't able to connect to OctoPrint ("
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:215
+#: lib/Slic3r/GUI/MainFrame.pm:213
msgid "). Check hostname and OctoPrint version (at least 1.1.0 is required)."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:251
+#: lib/Slic3r/GUI/MainFrame.pm:245
msgid "Open STL/OBJ/AMF…\tCtrl+O"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:251
+#: lib/Slic3r/GUI/MainFrame.pm:245
msgid "Open a model"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:254
+#: lib/Slic3r/GUI/MainFrame.pm:248
msgid "&Load Config…\tCtrl+L"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:254
+#: lib/Slic3r/GUI/MainFrame.pm:248
msgid "Load exported configuration file"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:257
+#: lib/Slic3r/GUI/MainFrame.pm:251
msgid "&Export Config…\tCtrl+E"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:257
+#: lib/Slic3r/GUI/MainFrame.pm:251
msgid "Export current configuration to file"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:260
+#: lib/Slic3r/GUI/MainFrame.pm:254
msgid "&Load Config Bundle…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:260
+#: lib/Slic3r/GUI/MainFrame.pm:254
msgid "Load presets from a bundle"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:263
+#: lib/Slic3r/GUI/MainFrame.pm:257
msgid "&Export Config Bundle…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:263
+#: lib/Slic3r/GUI/MainFrame.pm:257
msgid "Export all presets to file"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:268
+#: lib/Slic3r/GUI/MainFrame.pm:262
msgid "Q&uick Slice…\tCtrl+U"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:268
+#: lib/Slic3r/GUI/MainFrame.pm:262
msgid "Slice a file into a G-code"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:274
+#: lib/Slic3r/GUI/MainFrame.pm:268
msgid "Quick Slice and Save &As…\tCtrl+Alt+U"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:274
+#: lib/Slic3r/GUI/MainFrame.pm:268
msgid "Slice a file into a G-code, save as"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:280
+#: lib/Slic3r/GUI/MainFrame.pm:274
msgid "&Repeat Last Quick Slice\tCtrl+Shift+U"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:280
+#: lib/Slic3r/GUI/MainFrame.pm:274
msgid "Repeat last quick slice"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:287
+#: lib/Slic3r/GUI/MainFrame.pm:281
msgid "Slice to SV&G…\tCtrl+G"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:287
+#: lib/Slic3r/GUI/MainFrame.pm:281
msgid "Slice file to a multi-layer SVG"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:291
+#: lib/Slic3r/GUI/MainFrame.pm:285
msgid "(&Re)Slice Now\tCtrl+S"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:291
+#: lib/Slic3r/GUI/MainFrame.pm:285
msgid "Start new slicing process"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:294
+#: lib/Slic3r/GUI/MainFrame.pm:288
msgid "Repair STL file…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:294
+#: lib/Slic3r/GUI/MainFrame.pm:288
msgid "Automatically repair an STL file"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:299
+#: lib/Slic3r/GUI/MainFrame.pm:293
msgid "Preferences…\tCtrl+,"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:299
+#: lib/Slic3r/GUI/MainFrame.pm:293
msgid "Application preferences"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:304
+#: lib/Slic3r/GUI/MainFrame.pm:298
msgid "&Quit"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:304
+#: lib/Slic3r/GUI/MainFrame.pm:298
msgid "Quit Slic3r"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:314
+#: lib/Slic3r/GUI/MainFrame.pm:308
msgid "Export G-code..."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:314
+#: lib/Slic3r/GUI/MainFrame.pm:308
msgid "Export current plate as G-code"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:317
+#: lib/Slic3r/GUI/MainFrame.pm:311
msgid "Export plate as STL..."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:317
+#: lib/Slic3r/GUI/MainFrame.pm:311
msgid "Export current plate as STL"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:320
+#: lib/Slic3r/GUI/MainFrame.pm:314
msgid "Export plate as AMF..."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:320
+#: lib/Slic3r/GUI/MainFrame.pm:314
msgid "Export current plate as AMF"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:323
+#: lib/Slic3r/GUI/MainFrame.pm:317
msgid "Export plate as 3MF..."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:323
+#: lib/Slic3r/GUI/MainFrame.pm:317
msgid "Export current plate as 3MF"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:336
+#: lib/Slic3r/GUI/MainFrame.pm:330
msgid "Select &Plater Tab\tCtrl+1"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:336
+#: lib/Slic3r/GUI/MainFrame.pm:330
msgid "Show the plater"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:342
+#: lib/Slic3r/GUI/MainFrame.pm:336
msgid "Select &Controller Tab\tCtrl+T"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:342
+#: lib/Slic3r/GUI/MainFrame.pm:336
msgid "Show the printer controller"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:350
+#: lib/Slic3r/GUI/MainFrame.pm:344
msgid "Select P&rint Settings Tab\tCtrl+2"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:350
+#: lib/Slic3r/GUI/MainFrame.pm:344
msgid "Show the print settings"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:353
+#: lib/Slic3r/GUI/MainFrame.pm:347
msgid "Select &Filament Settings Tab\tCtrl+3"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:353
+#: lib/Slic3r/GUI/MainFrame.pm:347
msgid "Show the filament settings"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:356
+#: lib/Slic3r/GUI/MainFrame.pm:350
msgid "Select Print&er Settings Tab\tCtrl+4"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:356
+#: lib/Slic3r/GUI/MainFrame.pm:350
msgid "Show the printer settings"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:368
+#: lib/Slic3r/GUI/MainFrame.pm:362
msgid "Iso"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:368
+#: lib/Slic3r/GUI/MainFrame.pm:362
msgid "Iso View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:369
+#: lib/Slic3r/GUI/MainFrame.pm:363
msgid "Top View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:370
+#: lib/Slic3r/GUI/MainFrame.pm:364
msgid "Bottom View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:371
+#: lib/Slic3r/GUI/MainFrame.pm:365
msgid "Front"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:371
+#: lib/Slic3r/GUI/MainFrame.pm:365
msgid "Front View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:372
+#: lib/Slic3r/GUI/MainFrame.pm:366
msgid "Rear"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:372
+#: lib/Slic3r/GUI/MainFrame.pm:366
msgid "Rear View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:373
+#: lib/Slic3r/GUI/MainFrame.pm:367
msgid "Left"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:373
+#: lib/Slic3r/GUI/MainFrame.pm:367
msgid "Left View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:374
+#: lib/Slic3r/GUI/MainFrame.pm:368
msgid "Right"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:374
+#: lib/Slic3r/GUI/MainFrame.pm:368
msgid "Right View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:380
+#: lib/Slic3r/GUI/MainFrame.pm:374
msgid "&Configuration "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:380
+#: lib/Slic3r/GUI/MainFrame.pm:374
msgid "Run Configuration "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:385
+#: lib/Slic3r/GUI/MainFrame.pm:379
msgid "Prusa 3D Drivers"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:385
+#: lib/Slic3r/GUI/MainFrame.pm:379
msgid "Open the Prusa3D drivers download page in your browser"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:388
+#: lib/Slic3r/GUI/MainFrame.pm:382
msgid "Prusa Edition Releases"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:388
+#: lib/Slic3r/GUI/MainFrame.pm:382
msgid "Open the Prusa Edition releases page in your browser"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:395
+#: lib/Slic3r/GUI/MainFrame.pm:389
msgid "Slic3r &Website"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:395
+#: lib/Slic3r/GUI/MainFrame.pm:389
msgid "Open the Slic3r website in your browser"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:398
+#: lib/Slic3r/GUI/MainFrame.pm:392
msgid "Slic3r &Manual"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:398
+#: lib/Slic3r/GUI/MainFrame.pm:392
msgid "Open the Slic3r manual in your browser"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:402
+#: lib/Slic3r/GUI/MainFrame.pm:396
msgid "System Info"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:402
+#: lib/Slic3r/GUI/MainFrame.pm:396
msgid "Show system information"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:405
+#: lib/Slic3r/GUI/MainFrame.pm:399
msgid "Report an Issue"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:405
+#: lib/Slic3r/GUI/MainFrame.pm:399
msgid "Report an issue on the Slic3r Prusa Edition"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:408
+#: lib/Slic3r/GUI/MainFrame.pm:402
msgid "&About Slic3r"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:408
+#: lib/Slic3r/GUI/MainFrame.pm:402
msgid "Show about dialog"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:418
+#: lib/Slic3r/GUI/MainFrame.pm:412
msgid "&File"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:419
+#: lib/Slic3r/GUI/MainFrame.pm:413
msgid "&Plater"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:420
+#: lib/Slic3r/GUI/MainFrame.pm:414
msgid "&Object"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:421
+#: lib/Slic3r/GUI/MainFrame.pm:415
msgid "&Window"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:422
+#: lib/Slic3r/GUI/MainFrame.pm:416
msgid "&View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:426
+#: lib/Slic3r/GUI/MainFrame.pm:420
msgid "&Help"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:457
+#: lib/Slic3r/GUI/MainFrame.pm:452
msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:469
+#: lib/Slic3r/GUI/MainFrame.pm:464
msgid "No previously sliced file."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:474
+#: lib/Slic3r/GUI/MainFrame.pm:469
msgid "Previously sliced file ("
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:474
+#: lib/Slic3r/GUI/MainFrame.pm:469
msgid ") not found."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:475
+#: lib/Slic3r/GUI/MainFrame.pm:470
msgid "File Not Found"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514
+#: lib/Slic3r/GUI/MainFrame.pm:509
msgid "SVG"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514
+#: lib/Slic3r/GUI/MainFrame.pm:509
msgid "G-code"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1645
+#: lib/Slic3r/GUI/MainFrame.pm:509 lib/Slic3r/GUI/Plater.pm:1615
msgid " file as:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:528
+#: lib/Slic3r/GUI/MainFrame.pm:523
msgid "Slicing…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:528
+#: lib/Slic3r/GUI/MainFrame.pm:523
msgid "Processing "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:548
+#: lib/Slic3r/GUI/MainFrame.pm:543
msgid " was successfully sliced."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:550
+#: lib/Slic3r/GUI/MainFrame.pm:545
msgid "Slicing Done!"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:566
+#: lib/Slic3r/GUI/MainFrame.pm:561
msgid "Select the STL file to repair:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:580
+#: lib/Slic3r/GUI/MainFrame.pm:575
msgid "Save OBJ file (less prone to coordinate errors than STL) as:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:594
+#: lib/Slic3r/GUI/MainFrame.pm:589
msgid "Your file was repaired."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:594
+#: lib/Slic3r/GUI/MainFrame.pm:589
msgid "Repair"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:605
+#: lib/Slic3r/GUI/MainFrame.pm:600
msgid "Save configuration as:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:623
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:667
+#: lib/Slic3r/GUI/MainFrame.pm:618 lib/Slic3r/GUI/MainFrame.pm:662
msgid "Select configuration to load:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:646
+#: lib/Slic3r/GUI/MainFrame.pm:641
msgid "Save presets bundle as:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:687
+#: lib/Slic3r/GUI/MainFrame.pm:682
#, possible-perl-format
msgid "%d presets successfully imported."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:749
+#: lib/Slic3r/GUI/MainFrame.pm:744
msgid "You have unsaved changes "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:749
+#: lib/Slic3r/GUI/MainFrame.pm:744
msgid ". Discard changes and continue anyway?"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:750
+#: lib/Slic3r/GUI/MainFrame.pm:745
msgid "Unsaved Presets"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:104
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2124
+#: lib/Slic3r/GUI/Plater.pm:104 lib/Slic3r/GUI/Plater.pm:2094
msgid "3D"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:138
+#: lib/Slic3r/GUI/Plater.pm:138
msgid "2D"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:157
+#: lib/Slic3r/GUI/Plater.pm:157
msgid "Layers"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:177
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:195
+#: lib/Slic3r/GUI/Plater.pm:177 lib/Slic3r/GUI/Plater.pm:195
msgid "Add…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:179
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:197
+#: lib/Slic3r/GUI/Plater.pm:179 lib/Slic3r/GUI/Plater.pm:197
msgid "Delete All"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:180
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:198
+#: lib/Slic3r/GUI/Plater.pm:180 lib/Slic3r/GUI/Plater.pm:198
msgid "Arrange"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:182
+#: lib/Slic3r/GUI/Plater.pm:182
msgid "More"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:183
+#: lib/Slic3r/GUI/Plater.pm:183
msgid "Fewer"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:185
+#: lib/Slic3r/GUI/Plater.pm:185
msgid "45° ccw"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:186
+#: lib/Slic3r/GUI/Plater.pm:186
msgid "45° cw"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:187
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:203
+#: lib/Slic3r/GUI/Plater.pm:187 lib/Slic3r/GUI/Plater.pm:203
msgid "Scale…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:188
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:204
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2099
+#: lib/Slic3r/GUI/Plater.pm:188 lib/Slic3r/GUI/Plater.pm:204
+#: lib/Slic3r/GUI/Plater.pm:2069
msgid "Split"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:189
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:205
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2102
+#: lib/Slic3r/GUI/Plater.pm:189 lib/Slic3r/GUI/Plater.pm:205
+#: lib/Slic3r/GUI/Plater.pm:2072
msgid "Cut…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:191
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:206
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2106
+#: lib/Slic3r/GUI/Plater.pm:191 lib/Slic3r/GUI/Plater.pm:206
+#: lib/Slic3r/GUI/Plater.pm:2076
msgid "Settings…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:192
+#: lib/Slic3r/GUI/Plater.pm:192
msgid "Layer Editing"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:207
+#: lib/Slic3r/GUI/Plater.pm:207
msgid "Layer editing"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:220
+#: lib/Slic3r/GUI/Plater.pm:220
msgid "Name"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:221
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:900
+#: lib/Slic3r/GUI/Plater.pm:221 lib/Slic3r/GUI/Plater.pm:904
msgid "Copies"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:222
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1061
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2068
+#: lib/Slic3r/GUI/Plater.pm:222 lib/Slic3r/GUI/Plater.pm:1060
+#: lib/Slic3r/GUI/Plater.pm:1065 lib/Slic3r/GUI/Plater.pm:2038
msgid "Scale"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:236
+#: lib/Slic3r/GUI/Plater.pm:236
msgid "Export G-code…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:237
+#: lib/Slic3r/GUI/Plater.pm:237
msgid "Slice now"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:238
+#: lib/Slic3r/GUI/Plater.pm:238
msgid "Print…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:239
+#: lib/Slic3r/GUI/Plater.pm:239
msgid "Send to printer"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:240
+#: lib/Slic3r/GUI/Plater.pm:240
msgid "Export STL…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:367
+#: lib/Slic3r/GUI/Plater.pm:367
msgid "Print settings"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:369
+#: lib/Slic3r/GUI/Plater.pm:369
msgid "Printer"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:398
+#: lib/Slic3r/GUI/Plater.pm:401
msgid "Info"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:409
+#: lib/Slic3r/GUI/Plater.pm:412
msgid "Volume"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:410
+#: lib/Slic3r/GUI/Plater.pm:413
msgid "Facets"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:411
+#: lib/Slic3r/GUI/Plater.pm:414
msgid "Materials"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:412
+#: lib/Slic3r/GUI/Plater.pm:415
msgid "Manifold"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:438
+#: lib/Slic3r/GUI/Plater.pm:441
msgid "Sliced Info"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:447
+#: lib/Slic3r/GUI/Plater.pm:450
msgid "Used Filament (m)"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:448
+#: lib/Slic3r/GUI/Plater.pm:451
msgid "Used Filament (mm³)"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:449
+#: lib/Slic3r/GUI/Plater.pm:452
msgid "Used Filament (g)"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:451
+#: lib/Slic3r/GUI/Plater.pm:454
msgid "Estimated printing time"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:629
+#: lib/Slic3r/GUI/Plater.pm:633
msgid "Loading…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:629
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:643
+#: lib/Slic3r/GUI/Plater.pm:633 lib/Slic3r/GUI/Plater.pm:647
msgid "Processing input file\n"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:663
+#: lib/Slic3r/GUI/Plater.pm:667
msgid ""
"This file contains several objects positioned at multiple heights. Instead "
"of considering them as multiple objects, should I consider\n"
"this file as a single object having multiple parts?\n"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:666
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:683
+#: lib/Slic3r/GUI/Plater.pm:670 lib/Slic3r/GUI/Plater.pm:687
msgid "Multi-part object detected"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:680
+#: lib/Slic3r/GUI/Plater.pm:684
msgid ""
"Multiple objects were loaded for a multi-material printer.\n"
"Instead of considering them as multiple objects, should I consider\n"
"these files to represent a single object having multiple parts?\n"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:692
+#: lib/Slic3r/GUI/Plater.pm:696
msgid "Loaded "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:744
+#: lib/Slic3r/GUI/Plater.pm:748
msgid ""
"Your object appears to be too large, so it was automatically scaled down to "
"fit your print bed."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:745
+#: lib/Slic3r/GUI/Plater.pm:749
msgid "Object too large?"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:900
+#: lib/Slic3r/GUI/Plater.pm:904
msgid "Enter the number of copies of the selected object:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:927
+#: lib/Slic3r/GUI/Plater.pm:931
msgid ""
"\n"
"Non-positive value."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:928
+#: lib/Slic3r/GUI/Plater.pm:932
msgid ""
"\n"
"Not a numeric value."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:929
+#: lib/Slic3r/GUI/Plater.pm:933
msgid "Slic3r Error"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:950
-msgid "Enter the rotation angle:"
-msgstr ""
-
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:950
-msgid "Rotate around "
-msgstr ""
-
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:950
-msgid "Invalid rotation angle entered"
-msgstr ""
-
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1030
+#: lib/Slic3r/GUI/Plater.pm:1034
#, possible-perl-format
msgid "Enter the new size for the selected object (print bed: %smm):"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1031
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1035
+#: lib/Slic3r/GUI/Plater.pm:1035 lib/Slic3r/GUI/Plater.pm:1039
msgid "Scale along "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1031
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1035
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1061
+#: lib/Slic3r/GUI/Plater.pm:1035 lib/Slic3r/GUI/Plater.pm:1039
+#: lib/Slic3r/GUI/Plater.pm:1060 lib/Slic3r/GUI/Plater.pm:1065
msgid "Invalid scaling value entered"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1035
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1061
-#, no-perl-format
+#: lib/Slic3r/GUI/Plater.pm:1039 lib/Slic3r/GUI/Plater.pm:1065
+#, possible-perl-format
msgid "Enter the scale % for the selected object:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056
+#: lib/Slic3r/GUI/Plater.pm:1060
msgid "Enter the new max size for the selected object:"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1112
+#: lib/Slic3r/GUI/Plater.pm:1116
msgid ""
"The selected object can't be split because it contains more than one volume/"
"material."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1121
+#: lib/Slic3r/GUI/Plater.pm:1125
msgid ""
"The selected object couldn't be split because it contains only one part."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1286
+#: lib/Slic3r/GUI/Plater.pm:1290
msgid "Slicing cancelled"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1300
+#: lib/Slic3r/GUI/Plater.pm:1304
msgid "Another export job is currently running."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1445
+#: lib/Slic3r/GUI/Plater.pm:1335
+msgid "Save G-code file as:"
+msgstr ""
+
+#: lib/Slic3r/GUI/Plater.pm:1352
+msgid "Export cancelled"
+msgstr ""
+
+#: lib/Slic3r/GUI/Plater.pm:1449
msgid "File added to print queue"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1448
+#: lib/Slic3r/GUI/Plater.pm:1452
msgid "Sending G-code file to the OctoPrint server..."
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1451
+#: lib/Slic3r/GUI/Plater.pm:1455
msgid "G-code file exported to "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1454
+#: lib/Slic3r/GUI/Plater.pm:1458
msgid "Export failed"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1524
-msgid "G-code file successfully uploaded to the OctoPrint server"
-msgstr ""
-
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1526
-msgid "Error while uploading to the OctoPrint server: "
-msgstr ""
-
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1539
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1581
+#: lib/Slic3r/GUI/Plater.pm:1509 lib/Slic3r/GUI/Plater.pm:1551
msgid "STL file exported to "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1592
+#: lib/Slic3r/GUI/Plater.pm:1562
msgid "AMF file exported to "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1596
+#: lib/Slic3r/GUI/Plater.pm:1566
msgid "Error exporting AMF file "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1608
+#: lib/Slic3r/GUI/Plater.pm:1578
msgid "3MF file exported to "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1612
+#: lib/Slic3r/GUI/Plater.pm:1582
msgid "Error exporting 3MF file "
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1958
+#: lib/Slic3r/GUI/Plater.pm:1818
+msgid ""
+"Please install the OpenGL modules to use this feature (see build "
+"instructions)."
+msgstr ""
+
+#: lib/Slic3r/GUI/Plater.pm:1928
#, possible-perl-format
msgid "%d (%d shells)"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1960
+#: lib/Slic3r/GUI/Plater.pm:1930
#, possible-perl-format
msgid "Auto-repaired (%d errors)"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1965
+#: lib/Slic3r/GUI/Plater.pm:1935
#, possible-perl-format
msgid ""
"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d "
"facets reversed, %d backwards edges"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1970
+#: lib/Slic3r/GUI/Plater.pm:1940
msgid "Yes"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2021
+#: lib/Slic3r/GUI/Plater.pm:1991
msgid "Remove the selected object"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2024
+#: lib/Slic3r/GUI/Plater.pm:1994
msgid "Increase copies"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2024
+#: lib/Slic3r/GUI/Plater.pm:1994
msgid "Place one more copy of the selected object"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2027
+#: lib/Slic3r/GUI/Plater.pm:1997
msgid "Decrease copies"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2027
+#: lib/Slic3r/GUI/Plater.pm:1997
msgid "Remove one copy of the selected object"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2030
+#: lib/Slic3r/GUI/Plater.pm:2000
msgid "Set number of copies…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2030
+#: lib/Slic3r/GUI/Plater.pm:2000
msgid "Change the number of copies of the selected object"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2034
+#: lib/Slic3r/GUI/Plater.pm:2004
msgid "Rotate 45° clockwise"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2034
+#: lib/Slic3r/GUI/Plater.pm:2004
msgid "Rotate the selected object by 45° clockwise"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2037
+#: lib/Slic3r/GUI/Plater.pm:2007
msgid "Rotate 45° counter-clockwise"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2037
+#: lib/Slic3r/GUI/Plater.pm:2007
msgid "Rotate the selected object by 45° counter-clockwise"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2042
+#: lib/Slic3r/GUI/Plater.pm:2012
msgid "Rotate"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2042
+#: lib/Slic3r/GUI/Plater.pm:2012
msgid "Rotate the selected object by an arbitrary angle"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2044
+#: lib/Slic3r/GUI/Plater.pm:2014
msgid "Around X axis…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2044
+#: lib/Slic3r/GUI/Plater.pm:2014
msgid "Rotate the selected object by an arbitrary angle around X axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2047
+#: lib/Slic3r/GUI/Plater.pm:2017
msgid "Around Y axis…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2047
+#: lib/Slic3r/GUI/Plater.pm:2017
msgid "Rotate the selected object by an arbitrary angle around Y axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2050
+#: lib/Slic3r/GUI/Plater.pm:2020
msgid "Around Z axis…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2050
+#: lib/Slic3r/GUI/Plater.pm:2020
msgid "Rotate the selected object by an arbitrary angle around Z axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2055
+#: lib/Slic3r/GUI/Plater.pm:2025
msgid "Mirror"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2055
+#: lib/Slic3r/GUI/Plater.pm:2025
msgid "Mirror the selected object"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2057
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2073
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2089
+#: lib/Slic3r/GUI/Plater.pm:2027 lib/Slic3r/GUI/Plater.pm:2043
+#: lib/Slic3r/GUI/Plater.pm:2059
msgid "Along X axis…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2057
+#: lib/Slic3r/GUI/Plater.pm:2027
msgid "Mirror the selected object along the X axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2060
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2076
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2092
+#: lib/Slic3r/GUI/Plater.pm:2030 lib/Slic3r/GUI/Plater.pm:2046
+#: lib/Slic3r/GUI/Plater.pm:2062
msgid "Along Y axis…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2060
+#: lib/Slic3r/GUI/Plater.pm:2030
msgid "Mirror the selected object along the Y axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2063
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2079
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2095
+#: lib/Slic3r/GUI/Plater.pm:2033 lib/Slic3r/GUI/Plater.pm:2049
+#: lib/Slic3r/GUI/Plater.pm:2065
msgid "Along Z axis…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2063
+#: lib/Slic3r/GUI/Plater.pm:2033
msgid "Mirror the selected object along the Z axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2068
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2084
+#: lib/Slic3r/GUI/Plater.pm:2038 lib/Slic3r/GUI/Plater.pm:2054
msgid "Scale the selected object along a single axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2070
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2086
+#: lib/Slic3r/GUI/Plater.pm:2040 lib/Slic3r/GUI/Plater.pm:2056
msgid "Uniformly…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2070
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2086
+#: lib/Slic3r/GUI/Plater.pm:2040 lib/Slic3r/GUI/Plater.pm:2056
msgid "Scale the selected object along the XYZ axes"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2073
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2089
+#: lib/Slic3r/GUI/Plater.pm:2043 lib/Slic3r/GUI/Plater.pm:2059
msgid "Scale the selected object along the X axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2076
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2092
+#: lib/Slic3r/GUI/Plater.pm:2046 lib/Slic3r/GUI/Plater.pm:2062
msgid "Scale the selected object along the Y axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2079
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2095
+#: lib/Slic3r/GUI/Plater.pm:2049 lib/Slic3r/GUI/Plater.pm:2065
msgid "Scale the selected object along the Z axis"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2084
+#: lib/Slic3r/GUI/Plater.pm:2054
msgid "Scale to size"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2099
+#: lib/Slic3r/GUI/Plater.pm:2069
msgid "Split the selected object into individual parts"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2102
+#: lib/Slic3r/GUI/Plater.pm:2072
msgid "Open the 3D cutting tool"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2106
+#: lib/Slic3r/GUI/Plater.pm:2076
msgid "Open the object editor dialog"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2110
+#: lib/Slic3r/GUI/Plater.pm:2080
msgid "Reload from Disk"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2110
+#: lib/Slic3r/GUI/Plater.pm:2080
msgid "Reload the selected file from Disk"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2113
+#: lib/Slic3r/GUI/Plater.pm:2083
msgid "Export object as STL…"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2113
+#: lib/Slic3r/GUI/Plater.pm:2083
msgid "Export this single object as STL file"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\2D.pm:131
+#: lib/Slic3r/GUI/Plater/2D.pm:131
msgid "What do you want to print today? â„¢"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\2D.pm:132
+#: lib/Slic3r/GUI/Plater/2D.pm:132
msgid "Drag your objects here"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:63
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:63
msgid "1 Layer"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:65
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:65
msgid "View"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:75
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:75
msgid "Show"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:78
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:79
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:78 lib/Slic3r/GUI/Plater/3DPreview.pm:79
msgid "Feature types"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:96
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:96
msgid "Retractions"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:97
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:97
msgid "Unretractions"
msgstr ""
-#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:98
+#: lib/Slic3r/GUI/Plater/3DPreview.pm:98
msgid "Shells"
msgstr ""
diff --git a/resources/localization/list.txt b/resources/localization/list.txt
index 63919ec35..292549545 100644
--- a/resources/localization/list.txt
+++ b/resources/localization/list.txt
@@ -1,18 +1,20 @@
-c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp
-c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.hpp
-c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp
-c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp
-c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp
-c:\src\Slic3r\xs\src\slic3r\GUI\Field.cpp
-c:\src\Slic3r\xs\src\slic3r\GUI\OptionsGroup.cpp
-c:\src\Slic3r\xs\src\slic3r\GUI\2DBed.cpp
-c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp
-c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.hpp
-c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp
-C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp
-c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp
-c:\src\Slic3r\lib\Slic3r\GUI.pm
-c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm
-c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm
-c:\src\Slic3r\lib\Slic3r\GUI\Plater\2D.pm
-c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm
+xs/src/slic3r/GUI/BedShapeDialog.cpp
+xs/src/slic3r/GUI/BedShapeDialog.hpp
+xs/src/slic3r/GUI/GUI.cpp
+xs/src/slic3r/GUI/Tab.cpp
+xs/src/slic3r/GUI/Tab.hpp
+xs/src/slic3r/GUI/Field.cpp
+xs/src/slic3r/GUI/OptionsGroup.cpp
+xs/src/slic3r/GUI/2DBed.cpp
+xs/src/slic3r/GUI/PresetHints.cpp
+xs/src/slic3r/GUI/Preferences.hpp
+xs/src/slic3r/GUI/Preferences.cpp
+xs/src/slic3r/GUI/BonjourDialog.cpp
+xs/src/slic3r/Utils/OctoPrint.cpp
+xs/src/libslic3r/PrintConfig.cpp
+xs/src/libslic3r/GCode/PreviewData.cpp
+lib/Slic3r/GUI.pm
+lib/Slic3r/GUI/MainFrame.pm
+lib/Slic3r/GUI/Plater.pm
+lib/Slic3r/GUI/Plater/2D.pm
+lib/Slic3r/GUI/Plater/3DPreview.pm
diff --git a/resources/localization/uk/Slic3rPE_.mo b/resources/localization/uk/Slic3rPE_.mo
new file mode 100644
index 000000000..c980ae64d
Binary files /dev/null and b/resources/localization/uk/Slic3rPE_.mo differ
diff --git a/resources/profiles/Original Prusa i3 MK2 and MK2S.ini b/resources/profiles/Original Prusa i3 MK2 and MK2S.ini
deleted file mode 100644
index a186c3775..000000000
--- a/resources/profiles/Original Prusa i3 MK2 and MK2S.ini
+++ /dev/null
@@ -1,3376 +0,0 @@
-# generated by Slic3r Prusa Edition 1.39.0 on 2018-01-06 at 15:10:57
-
-[print:0.05mm DETAIL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 10
-bridge_acceleration = 300
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders==1
-complete_objects = 0
-default_acceleration = 500
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 25%
-fill_pattern = cubic
-first_layer_acceleration = 500
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 20
-gcode_comments = 0
-infill_acceleration = 800
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.5
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 30
-interface_shells = 0
-layer_height = 0.05
-max_print_speed = 80
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 300
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 30
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 15
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 30
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.3
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1.5
-support_material_speed = 30
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 20
-top_solid_layers = 15
-travel_speed = 180
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.05mm DETAIL 0.25 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 10
-bridge_acceleration = 300
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25 and num_extruders==1
-complete_objects = 0
-default_acceleration = 500
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.28
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 500
-first_layer_extrusion_width = 0.3
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 20
-gcode_comments = 0
-infill_acceleration = 800
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 20
-interface_shells = 0
-layer_height = 0.05
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 300
-perimeter_extruder = 1
-perimeter_extrusion_width = 0
-perimeter_speed = 20
-perimeters = 4
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 10
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0
-solid_infill_speed = 20
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.18
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 0
-support_material_interface_spacing = 0.15
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1
-support_material_speed = 20
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0
-top_solid_infill_speed = 20
-top_solid_layers = 15
-travel_speed = 200
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.05mm DETAIL MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 10
-bridge_acceleration = 300
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 500
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 25%
-fill_pattern = grid
-first_layer_acceleration = 500
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 20
-gcode_comments = 0
-infill_acceleration = 800
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 30
-interface_shells = 0
-layer_height = 0.05
-max_print_speed = 80
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 300
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 30
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 15
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 30
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.3
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1.5
-support_material_speed = 30
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 20
-top_solid_layers = 15
-travel_speed = 180
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.10mm DETAIL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders==1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.1
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 40
-top_solid_layers = 9
-travel_speed = 120
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.10mm DETAIL 0.25 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 600
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.25
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.25
-fill_angle = 45
-fill_density = 15%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.25
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1600
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.25
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 40
-interface_shells = 0
-layer_height = 0.1
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 600
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.25
-perimeter_speed = 25
-perimeters = 4
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 10
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.25
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.18
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 0
-support_material_interface_spacing = 0.15
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.25
-top_solid_infill_speed = 30
-top_solid_layers = 9
-travel_speed = 120
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.10mm DETAIL MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 30
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 35
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = grid
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 3500
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 200
-interface_shells = 0
-layer_height = 0.1
-max_print_speed = 250
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 45
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 200
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 50
-top_solid_layers = 5
-travel_speed = 250
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm 100mms Linear Advance]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 50
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 100
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 150
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 60
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 30
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 100
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 60
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 70
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 40
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL 0.25 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 600
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.25
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.25
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.25
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1600
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.25
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 40
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 600
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.25
-perimeter_speed = 25
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 10
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.25
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.2
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 0
-support_material_interface_spacing = 0.15
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 35
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.25
-top_solid_infill_speed = 30
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.61
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.6
-top_solid_infill_speed = 40
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 30
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 35
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = grid
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 3500
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 200
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 250
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 45
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 200
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 50
-top_solid_layers = 5
-travel_speed = 250
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL SOLUBLE FULL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 25
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 4
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 1
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 30
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL SOLUBLE INTERFACE]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 25
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 3
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 30
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm 100mms Linear Advance]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 50
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 100
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 150
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 60
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 30
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 100
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 60
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 70
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm FAST MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 30
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 35
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = grid
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 3500
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 200
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 250
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 45
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 200
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 50
-top_solid_layers = 5
-travel_speed = 250
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 50
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 40
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.61
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.6
-top_solid_infill_speed = 40
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL SOLUBLE FULL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 4
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 1
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 30
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL SOLUBLE INTERFACE]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 3
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 30
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 3
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.6
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.7
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.43
-perimeter_speed = 50
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.7
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.43
-top_solid_infill_speed = 50
-top_solid_layers = 4
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.61
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.6
-top_solid_infill_speed = 50
-top_solid_layers = 9
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST sol full 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 3
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.6
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 4
-support_material_extrusion_width = 0.55
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 3
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.57
-top_solid_infill_speed = 50
-top_solid_layers = 4
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST sol int 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 3
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.6
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.55
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.57
-top_solid_infill_speed = 50
-top_solid_layers = 4
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[filament:ColorFabb Brass Bronze]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.3
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 210
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 210
-
-[filament:ColorFabb HT]
-bed_temperature = 105
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 10
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 105
-first_layer_temperature = 270
-max_fan_speed = 20
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 270
-
-[filament:ColorFabb PLA-PHA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #FF3232
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 15
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 210
-
-[filament:ColorFabb Woodfil]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 200
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 200
-
-[filament:ColorFabb XT]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 90
-first_layer_temperature = 260
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 270
-
-[filament:ColorFabb XT-CF20]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 1
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 90
-first_layer_temperature = 260
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 260
-
-[filament:ColorFabb nGen]
-bed_temperature = 85
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 10
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = NGEN
-first_layer_bed_temperature = 85
-first_layer_temperature = 240
-max_fan_speed = 35
-min_fan_speed = 20
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:ColorFabb nGen flex]
-bed_temperature = 85
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 10
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 5
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = FLEX
-first_layer_bed_temperature = 85
-first_layer_temperature = 260
-max_fan_speed = 35
-min_fan_speed = 20
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 260
-
-[filament:E3D Edge]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 85
-first_layer_temperature = 230
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:E3D PC-ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 100
-first_layer_temperature = 270
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 270
-
-[filament:Fillamentum ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 100
-first_layer_temperature = 240
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 240
-
-[filament:Fillamentum ASA]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 100
-first_layer_temperature = 265
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 265
-
-[filament:Fillamentum CPE HG100 HM100]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "CPE HG100 , CPE HM100"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 90
-first_layer_temperature = 260
-max_fan_speed = 80
-min_fan_speed = 80
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 260
-
-[filament:Fillamentum Timberfil]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 190
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 190
-
-[filament:Generic ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 100
-first_layer_temperature = 255
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 255
-
-[filament:Generic PET]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 85
-first_layer_temperature = 230
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:Generic PLA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #FF3232
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 15
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 210
-
-[filament:Polymaker PC-Max]
-bed_temperature = 120
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 120
-first_layer_temperature = 270
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 270
-
-[filament:Primavalue PVA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 100
-filament_colour = #FFFFD7
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of materials tested with standart PVA print settings for MK2:\n\nPrimaSelect PVA+\nICE FILAMENTS PVA 'NAUGHTY NATURAL'\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 1
-filament_type = PVA
-first_layer_bed_temperature = 60
-first_layer_temperature = 195
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 195
-
-[filament:Prusa ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 100
-first_layer_temperature = 255
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 255
-
-[filament:Prusa HIPS]
-bed_temperature = 100
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 0.9
-fan_always_on = 1
-fan_below_layer_time = 10
-filament_colour = #FFFFD7
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 1
-filament_type = HIPS
-first_layer_bed_temperature = 100
-first_layer_temperature = 220
-max_fan_speed = 20
-min_fan_speed = 20
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 220
-
-[filament:Prusa PET]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 85
-first_layer_temperature = 230
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:Prusa PLA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #FF3232
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 15
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 210
-
-[filament:SemiFlex or Flexfill 98A]
-bed_temperature = 50
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35 and num_extruders==1
-cooling = 0
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 0
-fan_below_layer_time = 100
-filament_colour = #00CA0A
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 2.5
-filament_notes = "List of materials tested with FLEX print settings & FLEX material settings for MK2:\n\nFillamentum Flex 98A\nFillamentum Flex 92A\nPlasty MladeÄ PP\nPlasty MladeÄ TPE32 \nPlasty MladeÄ TPE88"
-filament_settings_id =
-filament_soluble = 0
-filament_type = FLEX
-first_layer_bed_temperature = 50
-first_layer_temperature = 220
-max_fan_speed = 90
-min_fan_speed = 70
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 230
-
-[filament:Taulman Bridge]
-bed_temperature = 50
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #DEE0E6
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 90
-first_layer_temperature = 240
-max_fan_speed = 5
-min_fan_speed = 0
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 250
-
-[filament:Taulman T-Glase]
-bed_temperature = 90
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 90
-first_layer_temperature = 240
-max_fan_speed = 5
-min_fan_speed = 0
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 240
-
-[filament:Verbatim BVOH]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 100
-filament_colour = #FFFFD7
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 1
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 210
-
-[filament:Verbatim PP]
-bed_temperature = 100
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 2
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #DEE0E6
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 5
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nEsun PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nEUMAKERS PLA"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 100
-first_layer_temperature = 220
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 220
-
-[printer:Original Prusa i3 MK2]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 0
-end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
-extruder_colour = #FFFF00
-extruder_offset = 0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.25
-min_layer_height = 0.07
-nozzle_diameter = 0.4
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\n
-printer_settings_id =
-retract_before_travel = 1
-retract_before_wipe = 0%
-retract_layer_change = 1
-retract_length = 0.8
-retract_length_toolchange = 3
-retract_lift = 0.6
-retract_lift_above = 0
-retract_lift_below = 199
-retract_restart_extra = 0
-retract_restart_extra_toolchange = 0
-retract_speed = 35
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 0
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 1
-wipe = 1
-z_offset = 0
-
-[printer:Original Prusa i3 MK2 0.25 nozzle]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 0
-end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
-extruder_colour = #FFFF00
-extruder_offset = 0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.1
-min_layer_height = 0.05
-nozzle_diameter = 0.25
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\n
-printer_settings_id =
-retract_before_travel = 1
-retract_before_wipe = 0%
-retract_layer_change = 1
-retract_length = 1
-retract_length_toolchange = 3
-retract_lift = 0.6
-retract_lift_above = 0
-retract_lift_below = 199
-retract_restart_extra = 0
-retract_restart_extra_toolchange = 0
-retract_speed = 50
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 0
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 0
-wipe = 1
-z_offset = 0
-
-[printer:Original Prusa i3 MK2 0.6 nozzle]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 0
-end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
-extruder_colour = #FFFF00
-extruder_offset = 0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.35
-min_layer_height = 0.1
-nozzle_diameter = 0.6
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\n
-printer_settings_id =
-retract_before_travel = 1
-retract_before_wipe = 0%
-retract_layer_change = 1
-retract_length = 0.8
-retract_length_toolchange = 3
-retract_lift = 0.6
-retract_lift_above = 0
-retract_lift_below = 199
-retract_restart_extra = 0
-retract_restart_extra_toolchange = 0
-retract_speed = 35
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 0
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 1
-wipe = 1
-z_offset = 0
-
-[presets]
-print = 0.15mm OPTIMAL
-printer = Original Prusa i3 MK2
-filament = Prusa PLA
diff --git a/resources/profiles/Original Prusa i3 MK2, MK2S, MK2MM and MK3.ini b/resources/profiles/Original Prusa i3 MK2, MK2S, MK2MM and MK3.ini
deleted file mode 100644
index 64af7d9b2..000000000
--- a/resources/profiles/Original Prusa i3 MK2, MK2S, MK2MM and MK3.ini
+++ /dev/null
@@ -1,3575 +0,0 @@
-# generated by Slic3r Prusa Edition 1.39.0.29-prusa3d-win64 on 2018-01-22 at 14:53:14
-
-[print:0.05mm DETAIL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 10
-bridge_acceleration = 300
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders==1
-complete_objects = 0
-default_acceleration = 500
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 25%
-fill_pattern = cubic
-first_layer_acceleration = 500
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 20
-gcode_comments = 0
-infill_acceleration = 800
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.5
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 30
-interface_shells = 0
-layer_height = 0.05
-max_print_speed = 80
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 300
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 30
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 15
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 30
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.3
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1.5
-support_material_speed = 30
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 20
-top_solid_layers = 15
-travel_speed = 180
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.05mm DETAIL 0.25 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 10
-bridge_acceleration = 300
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25 and num_extruders==1
-complete_objects = 0
-default_acceleration = 500
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.28
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 500
-first_layer_extrusion_width = 0.3
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 20
-gcode_comments = 0
-infill_acceleration = 800
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 20
-interface_shells = 0
-layer_height = 0.05
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 300
-perimeter_extruder = 1
-perimeter_extrusion_width = 0
-perimeter_speed = 20
-perimeters = 4
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 10
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0
-solid_infill_speed = 20
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.18
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 0
-support_material_interface_spacing = 0.15
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1
-support_material_speed = 20
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0
-top_solid_infill_speed = 20
-top_solid_layers = 15
-travel_speed = 200
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.05mm DETAIL MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 10
-bridge_acceleration = 300
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 500
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 25%
-fill_pattern = grid
-first_layer_acceleration = 500
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 20
-gcode_comments = 0
-infill_acceleration = 800
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 30
-interface_shells = 0
-layer_height = 0.05
-max_print_speed = 80
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 300
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 30
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 15
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 30
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.3
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1.5
-support_material_speed = 30
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 20
-top_solid_layers = 15
-travel_speed = 180
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.10mm DETAIL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders==1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.1
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 40
-top_solid_layers = 9
-travel_speed = 120
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.10mm DETAIL 0.25 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 600
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.25
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.25
-fill_angle = 45
-fill_density = 15%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.25
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1600
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.25
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 40
-interface_shells = 0
-layer_height = 0.1
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 600
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.25
-perimeter_speed = 25
-perimeters = 4
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 10
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.25
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.18
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 0
-support_material_interface_spacing = 0.15
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.25
-top_solid_infill_speed = 30
-top_solid_layers = 9
-travel_speed = 120
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.10mm DETAIL MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 30
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 35
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = grid
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1500
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 170
-interface_shells = 0
-layer_height = 0.1
-max_print_speed = 170
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 45
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 170
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 50
-top_solid_layers = 9
-travel_speed = 170
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm 100mms Linear Advance]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 50
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 100
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 150
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 60
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 30
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 100
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 60
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 70
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 40
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL 0.25 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 600
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.25
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.25
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.25
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1600
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.25
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 40
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 600
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.25
-perimeter_speed = 25
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 10
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.25
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.2
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 0
-support_material_interface_spacing = 0.15
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 35
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.25
-top_solid_infill_speed = 30
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.61
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.6
-top_solid_infill_speed = 40
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 30
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 35
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = grid
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1500
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 170
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 170
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 45
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 170
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 50
-top_solid_layers = 7
-travel_speed = 170
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL SOLUBLE FULL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 25
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 4
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 1
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 30
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL SOLUBLE INTERFACE]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 25
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 3
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 30
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm 100mms Linear Advance]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 50
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 100
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 150
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 60
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 30
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 100
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 60
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 70
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm FAST MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 30
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 35
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = grid
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1500
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 170
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 170
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 45
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 170
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 50
-top_solid_layers = 5
-travel_speed = 170
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 50
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 40
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.61
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.6
-top_solid_infill_speed = 40
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL SOLUBLE FULL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 4
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 1
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 30
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL SOLUBLE INTERFACE]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 3
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 30
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 3
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.6
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.7
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.43
-perimeter_speed = 50
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.7
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.43
-top_solid_infill_speed = 50
-top_solid_layers = 4
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.61
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.6
-top_solid_infill_speed = 50
-top_solid_layers = 9
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST sol full 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 3
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.6
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 4
-support_material_extrusion_width = 0.55
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 3
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.57
-top_solid_infill_speed = 50
-top_solid_layers = 4
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST sol int 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 3
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.6
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.55
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.57
-top_solid_infill_speed = 50
-top_solid_layers = 4
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[filament:ColorFabb Brass Bronze]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.3
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 210
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 210
-
-[filament:ColorFabb HT]
-bed_temperature = 105
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 10
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 105
-first_layer_temperature = 270
-max_fan_speed = 20
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 270
-
-[filament:ColorFabb PLA-PHA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #FF3232
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 15
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 210
-
-[filament:ColorFabb Woodfil]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 200
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 200
-
-[filament:ColorFabb XT]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 90
-first_layer_temperature = 260
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 270
-
-[filament:ColorFabb XT-CF20]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 1
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 90
-first_layer_temperature = 260
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 260
-
-[filament:ColorFabb nGen]
-bed_temperature = 85
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 10
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = NGEN
-first_layer_bed_temperature = 85
-first_layer_temperature = 240
-max_fan_speed = 35
-min_fan_speed = 20
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:ColorFabb nGen flex]
-bed_temperature = 85
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 10
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 5
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = FLEX
-first_layer_bed_temperature = 85
-first_layer_temperature = 260
-max_fan_speed = 35
-min_fan_speed = 20
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 260
-
-[filament:E3D Edge]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 85
-first_layer_temperature = 230
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:E3D PC-ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 100
-first_layer_temperature = 270
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 270
-
-[filament:Fillamentum ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 100
-first_layer_temperature = 240
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 240
-
-[filament:Fillamentum ASA]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 100
-first_layer_temperature = 265
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 265
-
-[filament:Fillamentum CPE HG100 HM100]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "CPE HG100 , CPE HM100"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 90
-first_layer_temperature = 275
-max_fan_speed = 50
-min_fan_speed = 50
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 275
-
-[filament:Fillamentum Timberfil]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 190
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 190
-
-[filament:Generic ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 100
-first_layer_temperature = 255
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 255
-
-[filament:Generic PET]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 85
-first_layer_temperature = 230
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:Generic PLA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #FF3232
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 15
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 210
-
-[filament:Polymaker PC-Max]
-bed_temperature = 120
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 120
-first_layer_temperature = 270
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 270
-
-[filament:Primavalue PVA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 100
-filament_colour = #FFFFD7
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of materials tested with standart PVA print settings for MK2:\n\nPrimaSelect PVA+\nICE FILAMENTS PVA 'NAUGHTY NATURAL'\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 1
-filament_type = PVA
-first_layer_bed_temperature = 60
-first_layer_temperature = 195
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 195
-
-[filament:Prusa ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 100
-first_layer_temperature = 255
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 255
-
-[filament:Prusa HIPS]
-bed_temperature = 100
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 0.9
-fan_always_on = 1
-fan_below_layer_time = 10
-filament_colour = #FFFFD7
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 1
-filament_type = HIPS
-first_layer_bed_temperature = 100
-first_layer_temperature = 220
-max_fan_speed = 20
-min_fan_speed = 20
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 220
-
-[filament:Prusa PET]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 85
-first_layer_temperature = 230
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:Prusa PLA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #FF3232
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 15
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 210
-
-[filament:SemiFlex or Flexfill 98A]
-bed_temperature = 50
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35 and num_extruders==1
-cooling = 0
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 0
-fan_below_layer_time = 100
-filament_colour = #00CA0A
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 1.5
-filament_notes = "List of materials tested with FLEX print settings & FLEX material settings for MK2:\n\nFillamentum Flex 98A\nFillamentum Flex 92A\nPlasty MladeÄ PP\nPlasty MladeÄ TPE32 \nPlasty MladeÄ TPE88"
-filament_settings_id =
-filament_soluble = 0
-filament_type = FLEX
-first_layer_bed_temperature = 50
-first_layer_temperature = 240
-max_fan_speed = 90
-min_fan_speed = 70
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 240
-
-[filament:Taulman Bridge]
-bed_temperature = 50
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #DEE0E6
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 90
-first_layer_temperature = 240
-max_fan_speed = 5
-min_fan_speed = 0
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 250
-
-[filament:Taulman T-Glase]
-bed_temperature = 90
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 90
-first_layer_temperature = 240
-max_fan_speed = 5
-min_fan_speed = 0
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 240
-
-[filament:Verbatim BVOH]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 100
-filament_colour = #FFFFD7
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 1
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 210
-
-[filament:Verbatim PP]
-bed_temperature = 100
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 2
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #DEE0E6
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 5
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nEsun PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nEUMAKERS PLA"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 100
-first_layer_temperature = 220
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 220
-
-[printer:Original Prusa i3 MK2]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 0
-end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
-extruder_colour = #FFFF00
-extruder_offset = 0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.25
-min_layer_height = 0.07
-nozzle_diameter = 0.4
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\n
-printer_settings_id =
-retract_before_travel = 1
-retract_before_wipe = 0%
-retract_layer_change = 1
-retract_length = 0.8
-retract_length_toolchange = 3
-retract_lift = 0.6
-retract_lift_above = 0
-retract_lift_below = 199
-retract_restart_extra = 0
-retract_restart_extra_toolchange = 0
-retract_speed = 35
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 0
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 1
-wipe = 1
-z_offset = 0
-
-[printer:Original Prusa i3 MK2 0.25 nozzle]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 0
-end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
-extruder_colour = #FFFF00
-extruder_offset = 0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.1
-min_layer_height = 0.05
-nozzle_diameter = 0.25
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\n
-printer_settings_id =
-retract_before_travel = 1
-retract_before_wipe = 0%
-retract_layer_change = 1
-retract_length = 1
-retract_length_toolchange = 3
-retract_lift = 0.6
-retract_lift_above = 0
-retract_lift_below = 199
-retract_restart_extra = 0
-retract_restart_extra_toolchange = 0
-retract_speed = 50
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 0
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 0
-wipe = 1
-z_offset = 0
-
-[printer:Original Prusa i3 MK2 0.6 nozzle]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 0
-end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
-extruder_colour = #FFFF00
-extruder_offset = 0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.35
-min_layer_height = 0.1
-nozzle_diameter = 0.6
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\n
-printer_settings_id =
-retract_before_travel = 1
-retract_before_wipe = 0%
-retract_layer_change = 1
-retract_length = 0.8
-retract_length_toolchange = 3
-retract_lift = 0.6
-retract_lift_above = 0
-retract_lift_below = 199
-retract_restart_extra = 0
-retract_restart_extra_toolchange = 0
-retract_speed = 35
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 0
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 1
-wipe = 1
-z_offset = 0
-
-[printer:Original Prusa i3 MK2 MM Single Mode]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 50
-end_gcode = G1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n\n
-extruder_colour = #FFAA55
-extruder_offset = 0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.25
-min_layer_height = 0.07
-nozzle_diameter = 0.4
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
-printer_settings_id =
-retract_before_travel = 3
-retract_before_wipe = 60%
-retract_layer_change = 0
-retract_length = 4
-retract_length_toolchange = 6
-retract_lift = 0.6
-retract_lift_above = 0
-retract_lift_below = 199
-retract_restart_extra = 0
-retract_restart_extra_toolchange = 0
-retract_speed = 80
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 1
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT?\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 1
-wipe = 1
-z_offset = 0
-
-[printer:Original Prusa i3 MK2 MM Single Mode 0.6 nozzle]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 50
-end_gcode = G1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n\n
-extruder_colour = #FFAA55
-extruder_offset = 0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.25
-min_layer_height = 0.07
-nozzle_diameter = 0.6
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
-printer_settings_id =
-retract_before_travel = 3
-retract_before_wipe = 60%
-retract_layer_change = 0
-retract_length = 4
-retract_length_toolchange = 6
-retract_lift = 0.6
-retract_lift_above = 0
-retract_lift_below = 199
-retract_restart_extra = 0
-retract_restart_extra_toolchange = 0
-retract_speed = 80
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 1
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT?\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 1
-wipe = 1
-z_offset = 0
-
-[printer:Original Prusa i3 MK2 MultiMaterial]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 50,50,50,50
-end_gcode = {if not has_wipe_tower}\n; Pull the filament into the cooling tubes.\nG1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\n{endif}\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors
-extruder_colour = #FFAA55;#5182DB;#4ECDD3;#FB7259
-extruder_offset = 0x0,0x0,0x0,0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.25,0.25,0.25,0.25
-min_layer_height = 0.07,0.07,0.07,0.07
-nozzle_diameter = 0.4,0.4,0.4,0.4
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
-printer_settings_id =
-retract_before_travel = 3,3,3,3
-retract_before_wipe = 60%,60%,60%,60%
-retract_layer_change = 0,0,0,0
-retract_length = 4,4,4,4
-retract_length_toolchange = 4,4,4,4
-retract_lift = 0.6,0.6,0.6,0.6
-retract_lift_above = 0,0,0,0
-retract_lift_below = 199,199,199,199
-retract_restart_extra = 0,0,0,0
-retract_restart_extra_toolchange = 0,0,0,0
-retract_speed = 80,80,80,80
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 1
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT[initial_tool]\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100 ; set max feedrate\nM92 E140 ; E-steps per filament milimeter\n{if not has_wipe_tower}\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\n{endif}\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 0
-wipe = 1,1,1,1
-z_offset = 0
-
-[printer:Original Prusa i3 MK2 MultiMaterial 0.6 nozzle]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 50,50,50,50
-end_gcode = {if not has_wipe_tower}\nG1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\n{endif}\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n
-extruder_colour = #FFAA55;#5182DB;#4ECDD3;#FB7259
-extruder_offset = 0x0,0x0,0x0,0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.25,0.25,0.25,0.25
-min_layer_height = 0.07,0.07,0.07,0.07
-nozzle_diameter = 0.6,0.6,0.6,0.6
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
-printer_settings_id =
-retract_before_travel = 3,3,3,3
-retract_before_wipe = 60%,60%,60%,60%
-retract_layer_change = 0,0,0,0
-retract_length = 4,4,4,4
-retract_length_toolchange = 4,4,4,4
-retract_lift = 0.6,0.6,0.6,0.6
-retract_lift_above = 0,0,0,0
-retract_lift_below = 199,199,199,199
-retract_restart_extra = 0,0,0,0
-retract_restart_extra_toolchange = 0,0,0,0
-retract_speed = 80,80,80,80
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 1
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT[initial_tool]\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\n{if not has_wipe_tower}\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\n{endif}\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 0
-wipe = 1,1,1,1
-z_offset = 0
-
-[printer:Original Prusa i3 MK3]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 0
-end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
-extruder_colour = #FFFF00
-extruder_offset = 0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.25
-min_layer_height = 0.07
-nozzle_diameter = 0.4
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n
-retract_before_travel = 1
-retract_before_wipe = 0%
-retract_layer_change = 1
-retract_length = 0.8
-retract_length_toolchange = 3
-retract_lift = 0.6
-retract_lift_above = 0
-retract_lift_below = 209
-retract_restart_extra = 0
-retract_restart_extra_toolchange = 0
-retract_speed = 35
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 0
-start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 1
-wipe = 1
-z_offset = 0
-
-[presets]
-print = 0.15mm OPTIMAL MK3
-printer = Original Prusa i3 MK3
-filament = Prusa PLA
diff --git a/resources/profiles/Original Prusa i3 MK2MM.ini b/resources/profiles/Original Prusa i3 MK2MM.ini
deleted file mode 100644
index 035d15515..000000000
--- a/resources/profiles/Original Prusa i3 MK2MM.ini
+++ /dev/null
@@ -1,3419 +0,0 @@
-# generated by Slic3r Prusa Edition 1.39.0 on 2018-01-06 at 15:12:06
-
-[print:0.05mm DETAIL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 10
-bridge_acceleration = 300
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders==1
-complete_objects = 0
-default_acceleration = 500
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 25%
-fill_pattern = cubic
-first_layer_acceleration = 500
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 20
-gcode_comments = 0
-infill_acceleration = 800
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.5
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 30
-interface_shells = 0
-layer_height = 0.05
-max_print_speed = 80
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 300
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 30
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 15
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 30
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.3
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1.5
-support_material_speed = 30
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 20
-top_solid_layers = 15
-travel_speed = 180
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.05mm DETAIL 0.25 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 10
-bridge_acceleration = 300
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25 and num_extruders==1
-complete_objects = 0
-default_acceleration = 500
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.28
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 500
-first_layer_extrusion_width = 0.3
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 20
-gcode_comments = 0
-infill_acceleration = 800
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 20
-interface_shells = 0
-layer_height = 0.05
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 300
-perimeter_extruder = 1
-perimeter_extrusion_width = 0
-perimeter_speed = 20
-perimeters = 4
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 10
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0
-solid_infill_speed = 20
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.18
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 0
-support_material_interface_spacing = 0.15
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1
-support_material_speed = 20
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0
-top_solid_infill_speed = 20
-top_solid_layers = 15
-travel_speed = 200
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.05mm DETAIL MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 10
-bridge_acceleration = 300
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 500
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 25%
-fill_pattern = grid
-first_layer_acceleration = 500
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 20
-gcode_comments = 0
-infill_acceleration = 800
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 30
-interface_shells = 0
-layer_height = 0.05
-max_print_speed = 80
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 300
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 30
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 15
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 30
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.3
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1.5
-support_material_speed = 30
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 20
-top_solid_layers = 15
-travel_speed = 180
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.10mm DETAIL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders==1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.1
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 40
-top_solid_layers = 9
-travel_speed = 120
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.10mm DETAIL 0.25 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 600
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.25
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.25
-fill_angle = 45
-fill_density = 15%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.25
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1600
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.25
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 40
-interface_shells = 0
-layer_height = 0.1
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 600
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.25
-perimeter_speed = 25
-perimeters = 4
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 10
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.25
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.18
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 0
-support_material_interface_spacing = 0.15
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.25
-top_solid_infill_speed = 30
-top_solid_layers = 9
-travel_speed = 120
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.10mm DETAIL MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 30
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 35
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = grid
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 3500
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 200
-interface_shells = 0
-layer_height = 0.1
-max_print_speed = 250
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 45
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 200
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 50
-top_solid_layers = 5
-travel_speed = 250
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm 100mms Linear Advance]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 50
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 100
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 150
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 60
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 30
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 100
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 60
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 70
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 40
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL 0.25 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 600
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.25
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.25
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.25
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1600
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.25
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 40
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 600
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.25
-perimeter_speed = 25
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 10
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.25
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.2
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 0
-support_material_interface_spacing = 0.15
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 35
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.25
-top_solid_infill_speed = 30
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.61
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.6
-top_solid_infill_speed = 40
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 30
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 35
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = grid
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 3500
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 200
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 250
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 45
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 200
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 50
-top_solid_layers = 5
-travel_speed = 250
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL SOLUBLE FULL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 25
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 4
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 1
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 30
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL SOLUBLE INTERFACE]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 25
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 3
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 30
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm 100mms Linear Advance]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 50
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 100
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 150
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 60
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 30
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 100
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 60
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 70
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm FAST MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 30
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 35
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = grid
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 3500
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 200
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 250
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 45
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 200
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 50
-top_solid_layers = 5
-travel_speed = 250
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 50
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 40
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.61
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.6
-top_solid_infill_speed = 40
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL SOLUBLE FULL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 4
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 1
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 30
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL SOLUBLE INTERFACE]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 3
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 30
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 3
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.6
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.7
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.43
-perimeter_speed = 50
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.7
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.43
-top_solid_infill_speed = 50
-top_solid_layers = 4
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.61
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.6
-top_solid_infill_speed = 50
-top_solid_layers = 9
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST sol full 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 3
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.6
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 4
-support_material_extrusion_width = 0.55
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 3
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.57
-top_solid_infill_speed = 50
-top_solid_layers = 4
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST sol int 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 3
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.6
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.55
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.57
-top_solid_infill_speed = 50
-top_solid_layers = 4
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[filament:ColorFabb Brass Bronze]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.3
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 210
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 210
-
-[filament:ColorFabb HT]
-bed_temperature = 105
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 10
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 105
-first_layer_temperature = 270
-max_fan_speed = 20
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 270
-
-[filament:ColorFabb PLA-PHA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #FF3232
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 15
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 210
-
-[filament:ColorFabb Woodfil]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 200
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 200
-
-[filament:ColorFabb XT]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 90
-first_layer_temperature = 260
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 270
-
-[filament:ColorFabb XT-CF20]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 1
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 90
-first_layer_temperature = 260
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 260
-
-[filament:ColorFabb nGen]
-bed_temperature = 85
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 10
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = NGEN
-first_layer_bed_temperature = 85
-first_layer_temperature = 240
-max_fan_speed = 35
-min_fan_speed = 20
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:ColorFabb nGen flex]
-bed_temperature = 85
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 10
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 5
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = FLEX
-first_layer_bed_temperature = 85
-first_layer_temperature = 260
-max_fan_speed = 35
-min_fan_speed = 20
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 260
-
-[filament:E3D Edge]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 85
-first_layer_temperature = 230
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:E3D PC-ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 100
-first_layer_temperature = 270
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 270
-
-[filament:Fillamentum ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 100
-first_layer_temperature = 240
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 240
-
-[filament:Fillamentum ASA]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 100
-first_layer_temperature = 265
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 265
-
-[filament:Fillamentum CPE HG100 HM100]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "CPE HG100 , CPE HM100"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 90
-first_layer_temperature = 260
-max_fan_speed = 80
-min_fan_speed = 80
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 260
-
-[filament:Fillamentum Timberfil]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 190
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 190
-
-[filament:Generic ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 100
-first_layer_temperature = 255
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 255
-
-[filament:Generic PET]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 85
-first_layer_temperature = 230
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:Generic PLA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #FF3232
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 15
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 210
-
-[filament:Polymaker PC-Max]
-bed_temperature = 120
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 120
-first_layer_temperature = 270
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 270
-
-[filament:Primavalue PVA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 100
-filament_colour = #FFFFD7
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of materials tested with standart PVA print settings for MK2:\n\nPrimaSelect PVA+\nICE FILAMENTS PVA 'NAUGHTY NATURAL'\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 1
-filament_type = PVA
-first_layer_bed_temperature = 60
-first_layer_temperature = 195
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 195
-
-[filament:Prusa ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 100
-first_layer_temperature = 255
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 255
-
-[filament:Prusa HIPS]
-bed_temperature = 100
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 0.9
-fan_always_on = 1
-fan_below_layer_time = 10
-filament_colour = #FFFFD7
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 1
-filament_type = HIPS
-first_layer_bed_temperature = 100
-first_layer_temperature = 220
-max_fan_speed = 20
-min_fan_speed = 20
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 220
-
-[filament:Prusa PET]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 85
-first_layer_temperature = 230
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:Prusa PLA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #FF3232
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 15
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 210
-
-[filament:SemiFlex or Flexfill 98A]
-bed_temperature = 50
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35 and num_extruders==1
-cooling = 0
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 0
-fan_below_layer_time = 100
-filament_colour = #00CA0A
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 2.5
-filament_notes = "List of materials tested with FLEX print settings & FLEX material settings for MK2:\n\nFillamentum Flex 98A\nFillamentum Flex 92A\nPlasty MladeÄ PP\nPlasty MladeÄ TPE32 \nPlasty MladeÄ TPE88"
-filament_settings_id =
-filament_soluble = 0
-filament_type = FLEX
-first_layer_bed_temperature = 50
-first_layer_temperature = 220
-max_fan_speed = 90
-min_fan_speed = 70
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 230
-
-[filament:Taulman Bridge]
-bed_temperature = 50
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #DEE0E6
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 90
-first_layer_temperature = 240
-max_fan_speed = 5
-min_fan_speed = 0
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 250
-
-[filament:Taulman T-Glase]
-bed_temperature = 90
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 90
-first_layer_temperature = 240
-max_fan_speed = 5
-min_fan_speed = 0
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 240
-
-[filament:Verbatim BVOH]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 100
-filament_colour = #FFFFD7
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 1
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 210
-
-[filament:Verbatim PP]
-bed_temperature = 100
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 2
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #DEE0E6
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 5
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nEsun PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nEUMAKERS PLA"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 100
-first_layer_temperature = 220
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 220
-
-[printer:Original Prusa i3 MK2 MM Single Mode]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 50
-end_gcode = G1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n\n
-extruder_colour = #FFAA55
-extruder_offset = 0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.25
-min_layer_height = 0.07
-nozzle_diameter = 0.4
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
-printer_settings_id =
-retract_before_travel = 3
-retract_before_wipe = 60%
-retract_layer_change = 0
-retract_length = 4
-retract_length_toolchange = 6
-retract_lift = 0.6
-retract_lift_above = 0
-retract_lift_below = 199
-retract_restart_extra = 0
-retract_restart_extra_toolchange = 0
-retract_speed = 80
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 1
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT?\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 1
-wipe = 1
-z_offset = 0
-
-[printer:Original Prusa i3 MK2 MM Single Mode 0.6 nozzle]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 50
-end_gcode = G1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n\n
-extruder_colour = #FFAA55
-extruder_offset = 0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.25
-min_layer_height = 0.07
-nozzle_diameter = 0.6
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
-printer_settings_id =
-retract_before_travel = 3
-retract_before_wipe = 60%
-retract_layer_change = 0
-retract_length = 4
-retract_length_toolchange = 6
-retract_lift = 0.6
-retract_lift_above = 0
-retract_lift_below = 199
-retract_restart_extra = 0
-retract_restart_extra_toolchange = 0
-retract_speed = 80
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 1
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT?\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 1
-wipe = 1
-z_offset = 0
-
-[printer:Original Prusa i3 MK2 MultiMaterial]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 50,50,50,50
-end_gcode = {if not has_wipe_tower}\n; Pull the filament into the cooling tubes.\nG1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\n{endif}\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors
-extruder_colour = #FFAA55;#5182DB;#4ECDD3;#FB7259
-extruder_offset = 0x0,0x0,0x0,0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.25,0.25,0.25,0.25
-min_layer_height = 0.07,0.07,0.07,0.07
-nozzle_diameter = 0.4,0.4,0.4,0.4
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
-printer_settings_id =
-retract_before_travel = 3,3,3,3
-retract_before_wipe = 60%,60%,60%,60%
-retract_layer_change = 0,0,0,0
-retract_length = 4,4,4,4
-retract_length_toolchange = 4,4,4,4
-retract_lift = 0.6,0.6,0.6,0.6
-retract_lift_above = 0,0,0,0
-retract_lift_below = 199,199,199,199
-retract_restart_extra = 0,0,0,0
-retract_restart_extra_toolchange = 0,0,0,0
-retract_speed = 80,80,80,80
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 1
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT[initial_tool]\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100 ; set max feedrate\nM92 E140 ; E-steps per filament milimeter\n{if not has_wipe_tower}\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\n{endif}\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 0
-wipe = 1,1,1,1
-z_offset = 0
-
-[printer:Original Prusa i3 MK2 MultiMaterial 0.6 nozzle]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 50,50,50,50
-end_gcode = {if not has_wipe_tower}\nG1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\n{endif}\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n
-extruder_colour = #FFAA55;#5182DB;#4ECDD3;#FB7259
-extruder_offset = 0x0,0x0,0x0,0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.25,0.25,0.25,0.25
-min_layer_height = 0.07,0.07,0.07,0.07
-nozzle_diameter = 0.6,0.6,0.6,0.6
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
-printer_settings_id =
-retract_before_travel = 3,3,3,3
-retract_before_wipe = 60%,60%,60%,60%
-retract_layer_change = 0,0,0,0
-retract_length = 4,4,4,4
-retract_length_toolchange = 4,4,4,4
-retract_lift = 0.6,0.6,0.6,0.6
-retract_lift_above = 0,0,0,0
-retract_lift_below = 199,199,199,199
-retract_restart_extra = 0,0,0,0
-retract_restart_extra_toolchange = 0,0,0,0
-retract_speed = 80,80,80,80
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 1
-start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT[initial_tool]\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\n{if not has_wipe_tower}\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\n{endif}\nG92 E0.0
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 0
-wipe = 1,1,1,1
-z_offset = 0
-
-[presets]
-print = 0.15mm OPTIMAL
-printer = Original Prusa i3 MK2 MultiMaterial
-filament = Prusa PLA
-filament_1 = Prusa PLA
-filament_2 = Prusa PLA
-filament_3 = Prusa PLA
diff --git a/resources/profiles/Original Prusa i3 MK3.ini b/resources/profiles/Original Prusa i3 MK3.ini
deleted file mode 100644
index b53006b0f..000000000
--- a/resources/profiles/Original Prusa i3 MK3.ini
+++ /dev/null
@@ -1,3295 +0,0 @@
-# generated by Slic3r Prusa Edition 1.39.0 on 2018-02-02 at 10:48:46
-
-[print:0.05mm DETAIL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 10
-bridge_acceleration = 300
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders==1
-complete_objects = 0
-default_acceleration = 500
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 25%
-fill_pattern = cubic
-first_layer_acceleration = 500
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 20
-gcode_comments = 0
-infill_acceleration = 800
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.5
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 30
-interface_shells = 0
-layer_height = 0.05
-max_print_speed = 80
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 300
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 30
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 15
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 30
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.3
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1.5
-support_material_speed = 30
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 20
-top_solid_layers = 15
-travel_speed = 180
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.05mm DETAIL 0.25 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 10
-bridge_acceleration = 300
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25 and num_extruders==1
-complete_objects = 0
-default_acceleration = 500
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.28
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 500
-first_layer_extrusion_width = 0.3
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 20
-gcode_comments = 0
-infill_acceleration = 800
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 20
-interface_shells = 0
-layer_height = 0.05
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 300
-perimeter_extruder = 1
-perimeter_extrusion_width = 0
-perimeter_speed = 20
-perimeters = 4
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 10
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0
-solid_infill_speed = 20
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.18
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 0
-support_material_interface_spacing = 0.15
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1
-support_material_speed = 20
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0
-top_solid_infill_speed = 20
-top_solid_layers = 15
-travel_speed = 200
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.05mm DETAIL MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 10
-bridge_acceleration = 300
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 500
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 25%
-fill_pattern = grid
-first_layer_acceleration = 500
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 20
-gcode_comments = 0
-infill_acceleration = 800
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 30
-interface_shells = 0
-layer_height = 0.05
-max_print_speed = 80
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 300
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 30
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 15
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 30
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.3
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1.5
-support_material_speed = 30
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 20
-top_solid_layers = 15
-travel_speed = 180
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.10mm DETAIL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders==1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.1
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 40
-top_solid_layers = 9
-travel_speed = 120
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.10mm DETAIL 0.25 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 600
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.25
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.25
-fill_angle = 45
-fill_density = 15%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.25
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1600
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.25
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 40
-interface_shells = 0
-layer_height = 0.1
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 600
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.25
-perimeter_speed = 25
-perimeters = 4
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 10
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.25
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.18
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 0
-support_material_interface_spacing = 0.15
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.25
-top_solid_infill_speed = 30
-top_solid_layers = 9
-travel_speed = 120
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.10mm DETAIL MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 30
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 35
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = grid
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1500
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 170
-interface_shells = 0
-layer_height = 0.1
-max_print_speed = 170
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 45
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 170
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 50
-top_solid_layers = 9
-travel_speed = 170
-wipe_tower = 0
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm 100mms Linear Advance]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 50
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 100
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 150
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 60
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 30
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 100
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 60
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 70
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 40
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL 0.25 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 600
-bridge_angle = 0
-bridge_flow_ratio = 0.7
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.25
-external_perimeter_speed = 20
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.25
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.25
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1600
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.25
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 40
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 600
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.25
-perimeter_speed = 25
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 10
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.25
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.2
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 0
-support_material_interface_spacing = 0.15
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 1
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 35
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.25
-top_solid_infill_speed = 30
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.61
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.6
-top_solid_infill_speed = 40
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 30
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 35
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = grid
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1500
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 170
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 170
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 45
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 170
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 50
-top_solid_layers = 7
-travel_speed = 170
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL SOLUBLE FULL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 25
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 4
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 1
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 30
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.15mm OPTIMAL SOLUBLE INTERFACE]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 5
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 25
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.15
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 3
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.45
-top_solid_infill_speed = 30
-top_solid_layers = 7
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm 100mms Linear Advance]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 50
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 100
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 150
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 60
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 30
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 100
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 60
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 70
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm FAST MK3]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 30
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 35
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = grid
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 1500
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 170
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 170
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 45
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 170
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 50
-top_solid_layers = 5
-travel_speed = 170
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 50
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 0
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 40
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.61
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 50
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.6
-top_solid_infill_speed = 40
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL SOLUBLE FULL]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 4
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 1
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 30
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.20mm NORMAL SOLUBLE INTERFACE]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 4
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.45
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.45
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.2
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.45
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.45
-solid_infill_speed = 40
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.45
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 3
-support_material_interface_spacing = 0.1
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.4
-top_solid_infill_speed = 30
-top_solid_layers = 5
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 3
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.95
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.6
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.45
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.42
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.7
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.43
-perimeter_speed = 50
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.7
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 1
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.43
-top_solid_infill_speed = 50
-top_solid_layers = 4
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 7
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.61
-external_perimeter_speed = 40
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes =
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 0
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 50
-perimeters = 3
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 1
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 0
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0.15
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.35
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 1
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 0
-support_material_threshold = 45
-support_material_with_sheath = 0
-support_material_xy_spacing = 60%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.6
-top_solid_infill_speed = 50
-top_solid_layers = 9
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 15
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST sol full 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 3
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.6
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 4
-support_material_extrusion_width = 0.55
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 3
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 120%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.57
-top_solid_infill_speed = 50
-top_solid_layers = 4
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[print:0.35mm FAST sol int 0.6 nozzle]
-avoid_crossing_perimeters = 0
-bottom_solid_layers = 3
-bridge_acceleration = 1000
-bridge_angle = 0
-bridge_flow_ratio = 0.8
-bridge_speed = 20
-brim_width = 0
-clip_multipart_objects = 1
-compatible_printers =
-compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6 and num_extruders>1
-complete_objects = 0
-default_acceleration = 1000
-dont_support_bridges = 1
-elefant_foot_compensation = 0
-ensure_vertical_shell_thickness = 1
-external_fill_pattern = rectilinear
-external_perimeter_extrusion_width = 0.6
-external_perimeter_speed = 30
-external_perimeters_first = 0
-extra_perimeters = 0
-extruder_clearance_height = 20
-extruder_clearance_radius = 20
-extrusion_width = 0.67
-fill_angle = 45
-fill_density = 20%
-fill_pattern = cubic
-first_layer_acceleration = 1000
-first_layer_extrusion_width = 0.65
-first_layer_height = 0.2
-first_layer_speed = 30
-gap_fill_speed = 40
-gcode_comments = 0
-infill_acceleration = 2000
-infill_every_layers = 1
-infill_extruder = 1
-infill_extrusion_width = 0.75
-infill_first = 0
-infill_only_where_needed = 0
-infill_overlap = 25%
-infill_speed = 60
-interface_shells = 0
-layer_height = 0.35
-max_print_speed = 100
-max_volumetric_extrusion_rate_slope_negative = 0
-max_volumetric_extrusion_rate_slope_positive = 0
-max_volumetric_speed = 0
-min_skirt_length = 4
-notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
-only_retract_when_crossing_perimeters = 0
-ooze_prevention = 0
-output_filename_format = [input_filename_base].gcode
-overhangs = 1
-perimeter_acceleration = 800
-perimeter_extruder = 1
-perimeter_extrusion_width = 0.65
-perimeter_speed = 40
-perimeters = 2
-post_process =
-print_settings_id =
-raft_layers = 0
-resolution = 0
-seam_position = nearest
-skirt_distance = 2
-skirt_height = 3
-skirts = 0
-small_perimeter_speed = 20
-solid_infill_below_area = 0
-solid_infill_every_layers = 0
-solid_infill_extruder = 1
-solid_infill_extrusion_width = 0.65
-solid_infill_speed = 60
-spiral_vase = 0
-standby_temperature_delta = -5
-support_material = 1
-support_material_angle = 0
-support_material_buildplate_only = 0
-support_material_contact_distance = 0
-support_material_enforce_layers = 0
-support_material_extruder = 0
-support_material_extrusion_width = 0.55
-support_material_interface_contact_loops = 0
-support_material_interface_extruder = 4
-support_material_interface_layers = 2
-support_material_interface_spacing = 0.2
-support_material_interface_speed = 100%
-support_material_pattern = rectilinear
-support_material_spacing = 2
-support_material_speed = 50
-support_material_synchronize_layers = 1
-support_material_threshold = 80
-support_material_with_sheath = 0
-support_material_xy_spacing = 150%
-thin_walls = 0
-threads = 4
-top_infill_extrusion_width = 0.57
-top_solid_infill_speed = 50
-top_solid_layers = 4
-travel_speed = 120
-wipe_tower = 1
-wipe_tower_per_color_wipe = 20
-wipe_tower_width = 60
-wipe_tower_x = 180
-wipe_tower_y = 140
-xy_size_compensation = 0
-
-[filament:ColorFabb Brass Bronze]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.3
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 210
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 210
-
-[filament:ColorFabb HT]
-bed_temperature = 105
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 10
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 105
-first_layer_temperature = 270
-max_fan_speed = 20
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 270
-
-[filament:ColorFabb PLA-PHA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #FF3232
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 15
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 210
-
-[filament:ColorFabb Woodfil]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 200
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 200
-
-[filament:ColorFabb XT]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 90
-first_layer_temperature = 260
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 270
-
-[filament:ColorFabb XT-CF20]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 1
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 90
-first_layer_temperature = 260
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 260
-
-[filament:ColorFabb nGen]
-bed_temperature = 85
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 10
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = NGEN
-first_layer_bed_temperature = 85
-first_layer_temperature = 240
-max_fan_speed = 35
-min_fan_speed = 20
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:ColorFabb nGen flex]
-bed_temperature = 85
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 10
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 5
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = FLEX
-first_layer_bed_temperature = 85
-first_layer_temperature = 260
-max_fan_speed = 35
-min_fan_speed = 20
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 260
-
-[filament:E3D Edge]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 85
-first_layer_temperature = 230
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:E3D PC-ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 100
-first_layer_temperature = 270
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 270
-
-[filament:Fillamentum ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 100
-first_layer_temperature = 240
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 240
-
-[filament:Fillamentum ASA]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 100
-first_layer_temperature = 265
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 265
-
-[filament:Fillamentum CPE HG100 HM100]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "CPE HG100 , CPE HM100"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 90
-first_layer_temperature = 275
-max_fan_speed = 50
-min_fan_speed = 50
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 275
-
-[filament:Fillamentum Timberfil]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #804040
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 190
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 190
-
-[filament:Generic ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 100
-first_layer_temperature = 255
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 255
-
-[filament:Generic PET]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 85
-first_layer_temperature = 230
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:Generic PLA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #FF3232
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 15
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 210
-
-[filament:Polymaker PC-Max]
-bed_temperature = 120
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 120
-first_layer_temperature = 270
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 270
-
-[filament:Primavalue PVA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 100
-filament_colour = #FFFFD7
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of materials tested with standart PVA print settings for MK2:\n\nPrimaSelect PVA+\nICE FILAMENTS PVA 'NAUGHTY NATURAL'\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 1
-filament_type = PVA
-first_layer_bed_temperature = 60
-first_layer_temperature = 195
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 195
-
-[filament:Prusa ABS]
-bed_temperature = 100
-bridge_fan_speed = 30
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #3A80CA
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
-filament_settings_id =
-filament_soluble = 0
-filament_type = ABS
-first_layer_bed_temperature = 100
-first_layer_temperature = 255
-max_fan_speed = 30
-min_fan_speed = 10
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 255
-
-[filament:Prusa HIPS]
-bed_temperature = 100
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 0.9
-fan_always_on = 1
-fan_below_layer_time = 10
-filament_colour = #FFFFD7
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 13
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 1
-filament_type = HIPS
-first_layer_bed_temperature = 100
-first_layer_temperature = 220
-max_fan_speed = 20
-min_fan_speed = 20
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 220
-
-[filament:Prusa PET]
-bed_temperature = 90
-bridge_fan_speed = 50
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 85
-first_layer_temperature = 230
-max_fan_speed = 50
-min_fan_speed = 30
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
-temperature = 240
-
-[filament:Prusa PLA]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #FF3232
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 15
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 210
-
-[filament:SemiFlex or Flexfill 98A]
-bed_temperature = 50
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition = nozzle_diameter[0]>0.35 and num_extruders==1
-cooling = 0
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1.2
-fan_always_on = 0
-fan_below_layer_time = 100
-filament_colour = #00CA0A
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 1.5
-filament_notes = "List of materials tested with FLEX print settings & FLEX material settings for MK2:\n\nFillamentum Flex 98A\nFillamentum Flex 92A\nPlasty MladeÄ PP\nPlasty MladeÄ TPE32 \nPlasty MladeÄ TPE88"
-filament_settings_id =
-filament_soluble = 0
-filament_type = FLEX
-first_layer_bed_temperature = 50
-first_layer_temperature = 240
-max_fan_speed = 90
-min_fan_speed = 70
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 240
-
-[filament:Taulman Bridge]
-bed_temperature = 50
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #DEE0E6
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 90
-first_layer_temperature = 240
-max_fan_speed = 5
-min_fan_speed = 0
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 250
-
-[filament:Taulman T-Glase]
-bed_temperature = 90
-bridge_fan_speed = 40
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 3
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 20
-filament_colour = #FF8000
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = ""
-filament_settings_id =
-filament_soluble = 0
-filament_type = PET
-first_layer_bed_temperature = 90
-first_layer_temperature = 240
-max_fan_speed = 5
-min_fan_speed = 0
-min_print_speed = 5
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
-temperature = 240
-
-[filament:Verbatim BVOH]
-bed_temperature = 60
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 0
-disable_fan_first_layers = 1
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 0
-fan_below_layer_time = 100
-filament_colour = #FFFFD7
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 10
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
-filament_settings_id =
-filament_soluble = 1
-filament_type = PLA
-first_layer_bed_temperature = 60
-first_layer_temperature = 215
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 210
-
-[filament:Verbatim PP]
-bed_temperature = 100
-bridge_fan_speed = 100
-compatible_printers =
-compatible_printers_condition =
-cooling = 1
-disable_fan_first_layers = 2
-end_filament_gcode = "; Filament-specific end gcode"
-extrusion_multiplier = 1
-fan_always_on = 1
-fan_below_layer_time = 100
-filament_colour = #DEE0E6
-filament_cost = 0
-filament_density = 0
-filament_diameter = 1.75
-filament_max_volumetric_speed = 5
-filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nEsun PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nEUMAKERS PLA"
-filament_settings_id =
-filament_soluble = 0
-filament_type = PLA
-first_layer_bed_temperature = 100
-first_layer_temperature = 220
-max_fan_speed = 100
-min_fan_speed = 100
-min_print_speed = 15
-slowdown_below_layer_time = 20
-start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
-temperature = 220
-
-[printer:Original Prusa i3 MK3]
-bed_shape = 0x0,250x0,250x210,0x210
-before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
-between_objects_gcode =
-deretract_speed = 0
-end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
-extruder_colour = #FFFF00
-extruder_offset = 0x0
-gcode_flavor = marlin
-layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
-max_layer_height = 0.25
-min_layer_height = 0.07
-nozzle_diameter = 0.4
-octoprint_apikey =
-octoprint_host =
-printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n
-retract_before_travel = 1
-retract_before_wipe = 0%
-retract_layer_change = 1
-retract_length = 0.8
-retract_length_toolchange = 3
-retract_lift = 0.6
-retract_lift_above = 0
-retract_lift_below = 209
-retract_restart_extra = 0
-retract_restart_extra_toolchange = 0
-retract_speed = 35
-serial_port =
-serial_speed = 250000
-single_extruder_multi_material = 0
-start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
-toolchange_gcode =
-use_firmware_retraction = 0
-use_relative_e_distances = 1
-use_volumetric_e = 0
-variable_layer_height = 1
-wipe = 1
-z_offset = 0
-
-[presets]
-print = 0.15mm OPTIMAL MK3
-printer = Original Prusa i3 MK3
-filament = Prusa PLA
diff --git a/resources/profiles/PrusaResearch.ini b/resources/profiles/PrusaResearch.ini
new file mode 100644
index 000000000..43d2ecbd1
--- /dev/null
+++ b/resources/profiles/PrusaResearch.ini
@@ -0,0 +1,1018 @@
+# Print profiles for the Prusa Research printers.
+
+[vendor]
+# Vendor name will be shown by the Config Wizard.
+name = Prusa Research
+# Configuration version of this file. Config file will only be installed, if the config_version differs.
+# This means, the server may force the Slic3r configuration to be downgraded.
+config_version = 0.1
+# Where to get the updates from?
+config_update_url = https://raw.githubusercontent.com/prusa3d/Slic3r-settings/master/live/PrusaResearch.ini
+
+# The printer models will be shown by the Configuration Wizard in this order,
+# also the first model installed & the first nozzle installed will be activated after install.
+#TODO: One day we may differentiate variants of the nozzles / hot ends,
+#for example by the melt zone size, or whether the nozzle is hardened.
+[printer_model:MK3]
+variants = 0.4; 0.25; 0.6
+
+[printer_model:MK2S]
+variants = 0.4; 0.25; 0.6
+
+[printer_model:MK2SMM]
+# Printer model name will be shown by the installation wizard.
+name = MK2S Multi Material
+variants = 0.4; 0.6
+
+# All presets starting with asterisk, for example *common*, are intermediate and they will
+# not make it into the user interface.
+
+# Common print preset, mostly derived from MK2 single material with a 0.4mm nozzle.
+# All other print presets will derive from the *common* print preset.
+[print:*common*]
+avoid_crossing_perimeters = 0
+bridge_acceleration = 1000
+bridge_angle = 0
+bridge_flow_ratio = 0.8
+bridge_speed = 20
+brim_width = 0
+clip_multipart_objects = 1
+compatible_printers =
+complete_objects = 0
+default_acceleration = 1000
+dont_support_bridges = 1
+elefant_foot_compensation = 0
+ensure_vertical_shell_thickness = 1
+external_fill_pattern = rectilinear
+external_perimeters_first = 0
+external_perimeter_extrusion_width = 0.45
+extra_perimeters = 0
+extruder_clearance_height = 20
+extruder_clearance_radius = 20
+extrusion_width = 0.45
+fill_angle = 45
+fill_density = 20%
+fill_pattern = cubic
+first_layer_acceleration = 1000
+first_layer_extrusion_width = 0.42
+first_layer_height = 0.2
+first_layer_speed = 30
+gap_fill_speed = 40
+gcode_comments = 0
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0.45
+infill_first = 0
+infill_only_where_needed = 0
+infill_overlap = 25%
+interface_shells = 0
+max_print_speed = 100
+max_volumetric_extrusion_rate_slope_negative = 0
+max_volumetric_extrusion_rate_slope_positive = 0
+max_volumetric_speed = 0
+min_skirt_length = 4
+notes =
+overhangs = 0
+only_retract_when_crossing_perimeters = 0
+ooze_prevention = 0
+output_filename_format = [input_filename_base].gcode
+perimeters = 2
+perimeter_extruder = 1
+perimeter_extrusion_width = 0.45
+post_process =
+print_settings_id =
+raft_layers = 0
+resolution = 0
+seam_position = nearest
+skirts = 1
+skirt_distance = 2
+skirt_height = 3
+small_perimeter_speed = 20
+solid_infill_below_area = 0
+solid_infill_every_layers = 0
+solid_infill_extruder = 1
+solid_infill_extrusion_width = 0.45
+spiral_vase = 0
+standby_temperature_delta = -5
+support_material = 0
+support_material_extruder = 0
+support_material_extrusion_width = 0.35
+support_material_interface_extruder = 0
+support_material_angle = 0
+support_material_buildplate_only = 0
+support_material_enforce_layers = 0
+support_material_contact_distance = 0.15
+support_material_interface_contact_loops = 0
+support_material_interface_layers = 2
+support_material_interface_spacing = 0.2
+support_material_interface_speed = 100%
+support_material_pattern = rectilinear
+support_material_spacing = 2
+support_material_speed = 50
+support_material_synchronize_layers = 0
+support_material_threshold = 45
+support_material_with_sheath = 0
+support_material_xy_spacing = 60%
+thin_walls = 0
+top_infill_extrusion_width = 0.45
+top_solid_infill_speed = 40
+travel_speed = 180
+wipe_tower = 0
+wipe_tower_per_color_wipe = 20
+wipe_tower_width = 60
+wipe_tower_x = 180
+wipe_tower_y = 140
+xy_size_compensation = 0
+
+# Print parameters common to a 0.25mm diameter nozzle.
+[print:*0.25nozzle*]
+external_perimeter_extrusion_width = 0.25
+extrusion_width = 0.25
+first_layer_extrusion_width = 0.25
+infill_extrusion_width = 0.25
+perimeter_extrusion_width = 0.25
+solid_infill_extrusion_width = 0.25
+top_infill_extrusion_width = 0.25
+support_material_extrusion_width = 0.18
+support_material_interface_layers = 0
+support_material_interface_spacing = 0.15
+support_material_spacing = 1
+support_material_xy_spacing = 150%
+
+# Print parameters common to a 0.6mm diameter nozzle.
+[print:*0.6nozzle*]
+external_perimeter_extrusion_width = 0.61
+extrusion_width = 0.67
+first_layer_extrusion_width = 0.65
+infill_extrusion_width = 0.7
+perimeter_extrusion_width = 0.65
+solid_infill_extrusion_width = 0.65
+top_infill_extrusion_width = 0.6
+
+[print:*soluble_support*]
+overhangs = 1
+skirts = 0
+support_material = 1
+support_material_contact_distance = 0
+support_material_extruder = 4
+support_material_extrusion_width = 0.45
+support_material_interface_extruder = 4
+support_material_interface_spacing = 0.1
+support_material_synchronize_layers = 1
+support_material_threshold = 80
+support_material_with_sheath = 1
+wipe_tower = 1
+
+[print:*0.05mm*]
+inherits = *common*
+bottom_solid_layers = 10
+bridge_acceleration = 300
+bridge_flow_ratio = 0.7
+default_acceleration = 500
+external_perimeter_speed = 20
+fill_density = 20%
+first_layer_acceleration = 500
+gap_fill_speed = 20
+infill_acceleration = 800
+infill_speed = 30
+max_print_speed = 80
+small_perimeter_speed = 15
+solid_infill_speed = 30
+support_material_extrusion_width = 0.3
+support_material_spacing = 1.5
+layer_height = 0.05
+perimeter_acceleration = 300
+perimeter_speed = 30
+perimeters = 3
+support_material_speed = 30
+top_solid_infill_speed = 20
+top_solid_layers = 15
+
+[print:0.05mm ULTRADETAIL]
+inherits = *0.05mm*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders==1
+infill_extrusion_width = 0.5
+
+[print:0.05mm ULTRADETAIL MK3]
+inherits = *0.05mm*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.4
+fill_pattern = grid
+top_infill_extrusion_width = 0.4
+
+[print:0.05mm ULTRADETAIL 0.25 nozzle]
+inherits = *0.05mm*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25 and num_extruders==1
+external_perimeter_extrusion_width = 0
+extrusion_width = 0.28
+fill_density = 20%
+first_layer_extrusion_width = 0.3
+infill_extrusion_width = 0
+infill_speed = 20
+max_print_speed = 100
+perimeter_extrusion_width = 0
+perimeter_speed = 20
+small_perimeter_speed = 10
+solid_infill_extrusion_width = 0
+solid_infill_speed = 20
+support_material_speed = 20
+top_infill_extrusion_width = 0
+
+[print:0.05mm ULTRADETAIL 0.25 nozzle MK3]
+inherits = *0.05mm*; *0.25nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.25 and num_extruders==1
+fill_pattern = grid
+top_infill_extrusion_width = 0.4
+
+[print:*0.10mm*]
+inherits = *common*
+bottom_solid_layers = 7
+bridge_flow_ratio = 0.7
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders==1
+layer_height = 0.1
+perimeter_acceleration = 800
+top_solid_layers = 9
+
+[print:0.10mm DETAIL]
+inherits = *0.10mm*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders==1
+external_perimeter_speed = 40
+infill_acceleration = 2000
+infill_speed = 60
+perimeter_speed = 50
+solid_infill_speed = 50
+
+[print:0.10mm DETAIL MK3]
+inherits = *0.10mm*
+bridge_speed = 30
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.4
+external_perimeter_speed = 35
+fill_pattern = grid
+infill_acceleration = 1500
+infill_speed = 170
+max_print_speed = 200
+perimeter_speed = 45
+solid_infill_speed = 170
+top_infill_extrusion_width = 0.4
+top_solid_infill_speed = 50
+
+[print:0.10mm DETAIL 0.25 nozzle]
+inherits = *0.10mm*
+bridge_acceleration = 600
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25
+external_perimeter_speed = 20
+infill_acceleration = 1600
+infill_speed = 40
+perimeter_acceleration = 600
+perimeter_speed = 25
+small_perimeter_speed = 10
+solid_infill_speed = 40
+top_solid_infill_speed = 30
+
+[print:0.10mm DETAIL 0.25 nozzle MK3]
+inherits = *0.10mm*
+bridge_speed = 30
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.25
+external_perimeter_speed = 35
+fill_pattern = grid
+infill_acceleration = 1500
+infill_speed = 170
+max_print_speed = 200
+perimeter_speed = 45
+solid_infill_speed = 170
+top_infill_extrusion_width = 0.4
+top_solid_infill_speed = 50
+
+[print:0.10mm DETAIL 0.6 nozzle MK3]
+inherits = *0.10mm*
+bridge_speed = 30
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.6
+external_perimeter_speed = 35
+fill_pattern = grid
+infill_acceleration = 1500
+infill_speed = 170
+max_print_speed = 200
+perimeter_speed = 45
+solid_infill_speed = 170
+top_infill_extrusion_width = 0.4
+top_solid_infill_speed = 50
+
+[print:*0.15mm*]
+inherits = *common*
+bottom_solid_layers = 5
+external_perimeter_speed = 40
+infill_acceleration = 2000
+infill_speed = 60
+layer_height = 0.15
+perimeter_acceleration = 800
+perimeter_speed = 50
+solid_infill_speed = 50
+top_infill_extrusion_width = 0.4
+top_solid_layers = 7
+
+[print:0.15mm 100mms Linear Advance]
+inherits = *0.15mm*
+bridge_flow_ratio = 0.95
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
+external_perimeter_speed = 50
+infill_speed = 100
+max_print_speed = 150
+perimeter_speed = 60
+small_perimeter_speed = 30
+solid_infill_speed = 100
+support_material_speed = 60
+top_solid_infill_speed = 70
+
+[print:0.15mm OPTIMAL]
+inherits = *0.15mm*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
+top_infill_extrusion_width = 0.45
+
+[print:0.15mm OPTIMAL 0.25 nozzle]
+inherits = *0.15mm*; *0.25nozzle*
+bridge_acceleration = 600
+bridge_flow_ratio = 0.7
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.25
+external_perimeter_speed = 20
+infill_acceleration = 1600
+infill_speed = 40
+perimeter_acceleration = 600
+perimeter_speed = 25
+small_perimeter_speed = 10
+solid_infill_speed = 40
+support_material_extrusion_width = 0.2
+top_solid_infill_speed = 30
+
+[print:0.15mm OPTIMAL 0.6 nozzle]
+inherits = *0.15mm*; *0.6nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
+
+[print:0.15mm OPTIMAL MK3]
+inherits = *0.15mm*
+bridge_speed = 30
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.4
+external_perimeter_speed = 35
+fill_pattern = grid
+infill_acceleration = 1500
+infill_speed = 170
+max_print_speed = 170
+perimeter_speed = 45
+solid_infill_speed = 170
+top_solid_infill_speed = 50
+
+[print:0.15mm OPTIMAL SOLUBLE FULL]
+inherits = *0.15mm*; *soluble_support*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
+external_perimeter_speed = 25
+notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
+perimeter_speed = 40
+solid_infill_speed = 40
+top_infill_extrusion_width = 0.45
+top_solid_infill_speed = 30
+wipe_tower = 1
+
+[print:0.15mm OPTIMAL SOLUBLE INTERFACE]
+inherits = 0.15mm OPTIMAL SOLUBLE FULL
+notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
+support_material_extruder = 0
+support_material_interface_layers = 3
+support_material_with_sheath = 0
+support_material_xy_spacing = 80%
+
+[print:0.15mm OPTIMAL 0.25 nozzle MK3]
+inherits = *0.15mm*
+bridge_speed = 30
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.25
+external_perimeter_speed = 35
+fill_pattern = grid
+infill_acceleration = 1500
+infill_speed = 170
+max_print_speed = 170
+perimeter_speed = 45
+solid_infill_speed = 170
+top_solid_infill_speed = 50
+[print:*0.20mm*]
+inherits = *common*
+bottom_solid_layers = 4
+bridge_flow_ratio = 0.95
+external_perimeter_speed = 40
+infill_acceleration = 2000
+infill_speed = 60
+layer_height = 0.2
+perimeter_acceleration = 800
+perimeter_speed = 50
+solid_infill_speed = 50
+top_infill_extrusion_width = 0.4
+top_solid_layers = 5
+
+[print:0.15mm OPTIMAL 0.6 nozzle MK3]
+inherits = *0.15mm*
+bridge_speed = 30
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.6
+external_perimeter_speed = 35
+fill_pattern = grid
+infill_acceleration = 1500
+infill_speed = 170
+max_print_speed = 170
+perimeter_speed = 45
+solid_infill_speed = 170
+top_solid_infill_speed = 50
+
+[print:0.20mm 100mms Linear Advance]
+inherits = *0.20mm*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
+external_perimeter_speed = 50
+infill_speed = 100
+max_print_speed = 150
+perimeter_speed = 60
+small_perimeter_speed = 30
+solid_infill_speed = 100
+support_material_speed = 60
+top_solid_infill_speed = 70
+
+[print:0.20mm FAST MK3]
+inherits = *0.20mm*
+bridge_speed = 30
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.4
+external_perimeter_speed = 35
+fill_pattern = grid
+infill_acceleration = 1500
+infill_speed = 170
+max_print_speed = 170
+perimeter_speed = 45
+solid_infill_speed = 170
+top_solid_infill_speed = 50
+
+[print:0.20mm NORMAL]
+inherits = *0.20mm*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
+
+[print:0.20mm NORMAL 0.6 nozzle]
+inherits = *0.20mm*; *0.6nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
+
+[print:0.20mm NORMAL SOLUBLE FULL]
+inherits = *0.20mm*; *soluble_support*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4 and num_extruders>1
+external_perimeter_speed = 30
+notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
+perimeter_speed = 40
+solid_infill_speed = 40
+top_solid_infill_speed = 30
+
+[print:0.20mm NORMAL SOLUBLE INTERFACE]
+inherits = 0.20mm NORMAL SOLUBLE FULL
+notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
+support_material_extruder = 0
+support_material_interface_layers = 3
+support_material_with_sheath = 0
+support_material_xy_spacing = 80%
+
+[print:0.20mm FAST 0.6 nozzle MK3]
+inherits = *0.20mm*
+bridge_speed = 30
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.6
+external_perimeter_speed = 35
+fill_pattern = grid
+infill_acceleration = 1500
+infill_speed = 170
+max_print_speed = 170
+perimeter_speed = 45
+solid_infill_speed = 170
+top_solid_infill_speed = 50
+
+[print:*0.35mm*]
+inherits = *common*
+bottom_solid_layers = 3
+external_perimeter_extrusion_width = 0.6
+external_perimeter_speed = 40
+first_layer_extrusion_width = 0.75
+infill_acceleration = 2000
+infill_speed = 60
+layer_height = 0.35
+perimeter_acceleration = 800
+perimeter_extrusion_width = 0.65
+perimeter_speed = 50
+solid_infill_extrusion_width = 0.65
+solid_infill_speed = 60
+top_solid_infill_speed = 50
+top_solid_layers = 4
+
+[print:0.35mm FAST]
+inherits = *0.35mm*
+bridge_flow_ratio = 0.95
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.4
+first_layer_extrusion_width = 0.42
+perimeter_extrusion_width = 0.43
+solid_infill_extrusion_width = 0.7
+top_infill_extrusion_width = 0.43
+
+[print:0.35mm FAST 0.6 nozzle]
+inherits = *0.35mm*; *0.6nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6
+
+[print:0.35mm FAST sol full 0.6 nozzle]
+inherits = *0.35mm*; *0.6nozzle*; *soluble_support*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6 and num_extruders>1
+external_perimeter_extrusion_width = 0.6
+external_perimeter_speed = 30
+notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
+perimeter_speed = 40
+support_material_extrusion_width = 0.55
+support_material_interface_layers = 3
+support_material_xy_spacing = 120%
+top_infill_extrusion_width = 0.57
+
+[print:0.35mm FAST sol int 0.6 nozzle]
+inherits = 0.35mm FAST sol full 0.6 nozzle
+support_material_extruder = 0
+support_material_interface_layers = 2
+support_material_with_sheath = 0
+support_material_xy_spacing = 150%
+
+[filament:*common*]
+cooling = 1
+compatible_printers =
+compatible_printers_condition =
+end_filament_gcode = "; Filament-specific end gcode"
+extrusion_multiplier = 1
+filament_cost = 0
+filament_density = 0
+filament_diameter = 1.75
+filament_notes = ""
+filament_settings_id =
+filament_soluble = 0
+min_print_speed = 5
+slowdown_below_layer_time = 20
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
+
+[filament:*PLA*]
+inherits = *common*
+bed_temperature = 60
+bridge_fan_speed = 100
+disable_fan_first_layers = 1
+fan_always_on = 1
+fan_below_layer_time = 100
+filament_colour = #FF3232
+filament_max_volumetric_speed = 15
+filament_type = PLA
+first_layer_bed_temperature = 60
+first_layer_temperature = 215
+max_fan_speed = 100
+min_fan_speed = 100
+temperature = 210
+
+[filament:*PET*]
+inherits = *common*
+bed_temperature = 90
+bridge_fan_speed = 50
+disable_fan_first_layers = 3
+fan_always_on = 1
+fan_below_layer_time = 20
+filament_colour = #FF8000
+filament_max_volumetric_speed = 8
+filament_type = PET
+first_layer_bed_temperature = 85
+first_layer_temperature = 230
+max_fan_speed = 50
+min_fan_speed = 30
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
+temperature = 240
+
+[filament:*ABS*]
+inherits = *common*
+bed_temperature = 110
+bridge_fan_speed = 30
+cooling = 0
+disable_fan_first_layers = 3
+fan_always_on = 0
+fan_below_layer_time = 20
+filament_colour = #3A80CA
+filament_max_volumetric_speed = 11
+filament_type = ABS
+first_layer_bed_temperature = 100
+first_layer_temperature = 255
+max_fan_speed = 30
+min_fan_speed = 20
+temperature = 255
+
+[filament:*FLEX*]
+inherits = *common*
+bridge_fan_speed = 100
+compatible_printers_condition = nozzle_diameter[0]>0.35 and num_extruders==1
+cooling = 0
+disable_fan_first_layers = 1
+extrusion_multiplier = 1.2
+fan_always_on = 0
+fan_below_layer_time = 100
+filament_colour = #00CA0A
+filament_max_volumetric_speed = 1.5
+filament_type = FLEX
+first_layer_bed_temperature = 50
+first_layer_temperature = 240
+max_fan_speed = 90
+min_fan_speed = 70
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
+temperature = 240
+
+[filament:ColorFabb Brass Bronze]
+inherits = *PLA*
+compatible_printers_condition = nozzle_diameter[0]>0.35
+extrusion_multiplier = 1.2
+filament_colour = #804040
+filament_max_volumetric_speed = 10
+
+[filament:ColorFabb HT]
+inherits = *PET*
+bed_temperature = 110
+bridge_fan_speed = 30
+cooling = 1
+disable_fan_first_layers = 3
+fan_always_on = 0
+fan_below_layer_time = 10
+first_layer_bed_temperature = 105
+first_layer_temperature = 270
+max_fan_speed = 20
+min_fan_speed = 10
+min_print_speed = 5
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
+temperature = 270
+
+[filament:ColorFabb PLA-PHA]
+inherits = *PLA*
+
+[filament:ColorFabb Woodfil]
+inherits = *PLA*
+compatible_printers_condition = nozzle_diameter[0]>0.35
+extrusion_multiplier = 1.2
+filament_colour = #804040
+filament_max_volumetric_speed = 10
+first_layer_temperature = 200
+min_print_speed = 5
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
+temperature = 200
+
+[filament:ColorFabb XT]
+inherits = *PET*
+filament_type = PLA
+first_layer_bed_temperature = 90
+first_layer_temperature = 260
+temperature = 270
+
+[filament:ColorFabb XT-CF20]
+inherits = *PET*
+extrusion_multiplier = 1.2
+filament_colour = #804040
+filament_max_volumetric_speed = 1
+first_layer_bed_temperature = 90
+first_layer_temperature = 260
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
+temperature = 260
+
+[filament:ColorFabb nGen]
+inherits = *PET*
+bridge_fan_speed = 40
+fan_always_on = 0
+fan_below_layer_time = 10
+filament_type = NGEN
+first_layer_temperature = 240
+max_fan_speed = 35
+min_fan_speed = 20
+
+[filament:ColorFabb nGen flex]
+inherits = *FLEX*
+bed_temperature = 85
+bridge_fan_speed = 40
+cooling = 1
+disable_fan_first_layers = 3
+extrusion_multiplier = 1
+fan_below_layer_time = 10
+filament_max_volumetric_speed = 5
+first_layer_bed_temperature = 85
+first_layer_temperature = 260
+max_fan_speed = 35
+min_fan_speed = 20
+temperature = 260
+
+[filament:E3D Edge]
+inherits = *PET*
+filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
+
+[filament:E3D PC-ABS]
+inherits = *ABS*
+first_layer_temperature = 270
+temperature = 270
+
+[filament:Fillamentum ABS]
+inherits = *ABS*
+first_layer_temperature = 240
+temperature = 240
+
+[filament:Fillamentum ASA]
+inherits = *ABS*
+fan_always_on = 1
+first_layer_temperature = 265
+temperature = 265
+
+[filament:Fillamentum CPE HG100 HM100]
+inherits = *PET*
+filament_notes = "CPE HG100 , CPE HM100"
+first_layer_bed_temperature = 90
+first_layer_temperature = 275
+max_fan_speed = 50
+min_fan_speed = 50
+temperature = 275
+
+[filament:Fillamentum Timberfil]
+inherits = *PLA*
+compatible_printers_condition = nozzle_diameter[0]>0.35
+extrusion_multiplier = 1.2
+filament_colour = #804040
+filament_max_volumetric_speed = 10
+first_layer_temperature = 190
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
+temperature = 190
+
+[filament:Generic ABS]
+inherits = *ABS*
+filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
+
+[filament:Generic PET]
+inherits = *PET*
+filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
+
+[filament:Generic PLA]
+inherits = *PLA*
+filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
+
+[filament:Polymaker PC-Max]
+inherits = *ABS*
+bed_temperature = 115
+filament_colour = #3A80CA
+first_layer_bed_temperature = 100
+first_layer_temperature = 270
+temperature = 270
+
+[filament:Primavalue PVA]
+inherits = *PLA*
+cooling = 0
+fan_always_on = 0
+filament_colour = #FFFFD7
+filament_max_volumetric_speed = 10
+filament_notes = "List of materials tested with standart PVA print settings for MK2:\n\nPrimaSelect PVA+\nICE FILAMENTS PVA 'NAUGHTY NATURAL'\nVerbatim BVOH"
+filament_soluble = 1
+filament_type = PVA
+first_layer_temperature = 195
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
+temperature = 195
+
+[filament:Prusa ABS]
+inherits = *ABS*
+filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty MladeÄ ABS"
+
+[filament:Prusa HIPS]
+inherits = *ABS*
+bridge_fan_speed = 50
+cooling = 1
+extrusion_multiplier = 0.9
+fan_always_on = 1
+fan_below_layer_time = 10
+filament_colour = #FFFFD7
+filament_soluble = 1
+filament_type = HIPS
+first_layer_temperature = 220
+max_fan_speed = 20
+min_fan_speed = 20
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
+temperature = 220
+
+[filament:Prusa PET]
+inherits = *PET*
+filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty MladeÄ PETG"
+
+[filament:Prusa PLA]
+inherits = *PLA*
+filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
+
+[filament:SemiFlex or Flexfill 98A]
+inherits = *FLEX*
+
+[filament:Taulman Bridge]
+inherits = *common*
+bed_temperature = 90
+bridge_fan_speed = 40
+cooling = 0
+disable_fan_first_layers = 3
+fan_always_on = 0
+fan_below_layer_time = 20
+filament_colour = #DEE0E6
+filament_max_volumetric_speed = 10
+filament_soluble = 0
+filament_type = PET
+first_layer_bed_temperature = 60
+first_layer_temperature = 240
+max_fan_speed = 5
+min_fan_speed = 0
+min_print_speed = 5
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
+temperature = 250
+
+[filament:Taulman T-Glase]
+inherits = *PET*
+bridge_fan_speed = 40
+cooling = 0
+fan_always_on = 0
+first_layer_bed_temperature = 90
+first_layer_temperature = 240
+max_fan_speed = 5
+min_fan_speed = 0
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
+
+[filament:Verbatim BVOH]
+inherits = *common*
+bed_temperature = 60
+bridge_fan_speed = 100
+cooling = 0
+disable_fan_first_layers = 1
+extrusion_multiplier = 1
+fan_always_on = 0
+fan_below_layer_time = 100
+filament_colour = #FFFFD7
+filament_max_volumetric_speed = 10
+filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
+filament_soluble = 1
+filament_type = PLA
+first_layer_bed_temperature = 60
+first_layer_temperature = 215
+max_fan_speed = 100
+min_fan_speed = 100
+min_print_speed = 15
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
+temperature = 210
+
+[filament:Verbatim PP]
+inherits = *common*
+bed_temperature = 100
+bridge_fan_speed = 100
+cooling = 1
+disable_fan_first_layers = 2
+extrusion_multiplier = 1
+fan_always_on = 1
+fan_below_layer_time = 100
+filament_colour = #DEE0E6
+filament_max_volumetric_speed = 5
+filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nEsun PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty MladeÄ PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nEUMAKERS PLA"
+filament_type = PLA
+first_layer_bed_temperature = 100
+first_layer_temperature = 220
+max_fan_speed = 100
+min_fan_speed = 100
+min_print_speed = 15
+start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
+temperature = 220
+
+[printer:*common*]
+bed_shape = 0x0,250x0,250x210,0x210
+before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
+between_objects_gcode =
+deretract_speed = 0
+end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
+extruder_colour = #FFFF00
+extruder_offset = 0x0
+gcode_flavor = marlin
+layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
+max_layer_height = 0.25
+min_layer_height = 0.07
+nozzle_diameter = 0.4
+octoprint_apikey =
+octoprint_host =
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\n
+printer_settings_id =
+retract_before_travel = 1
+retract_before_wipe = 0%
+retract_layer_change = 1
+retract_length = 0.8
+retract_length_toolchange = 4
+retract_lift = 0.6
+retract_lift_above = 0
+retract_lift_below = 199
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 35
+serial_port =
+serial_speed = 250000
+single_extruder_multi_material = 0
+start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0
+toolchange_gcode =
+use_firmware_retraction = 0
+use_relative_e_distances = 1
+use_volumetric_e = 0
+variable_layer_height = 1
+wipe = 1
+z_offset = 0
+#printer_model = MK2S
+#printer_variant = 0.4
+#default_print_profile = 0.15mm OPTIMAL
+#default_filament_profile = Prusa PLA
+
+[printer:*multimaterial*]
+inherits = *common*
+deretract_speed = 50
+retract_before_travel = 3
+retract_before_wipe = 60%
+retract_layer_change = 0
+retract_length = 4
+retract_lift = 0.6
+retract_lift_above = 0
+retract_lift_below = 199
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 80
+single_extruder_multi_material = 1
+#printer_model = MK2SMM
+
+[printer:*mm-single*]
+inherits = *multimaterial*
+end_gcode = G1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n\n
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
+start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT?\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\nG92 E0.0
+
+[printer:*mm-multi*]
+inherits = *multimaterial*
+end_gcode = {if not has_wipe_tower}\n; Pull the filament into the cooling tubes.\nG1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\n{endif}\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors
+extruder_colour = #FFAA55;#5182DB;#4ECDD3;#FB7259
+nozzle_diameter = 0.4,0.4,0.4,0.4
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
+start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT[initial_tool]\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100 ; set max feedrate\nM92 E140 ; E-steps per filament milimeter\n{if not has_wipe_tower}\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\n{endif}\nG92 E0.0
+variable_layer_height = 0
+
+[printer:Original Prusa i3 MK2]
+inherits = *common*
+
+[printer:Original Prusa i3 MK2 0.25 nozzle]
+inherits = *common*
+max_layer_height = 0.1
+min_layer_height = 0.05
+nozzle_diameter = 0.25
+retract_length = 1
+retract_speed = 50
+variable_layer_height = 0
+#printer_variant = 0.25
+#default_print_profile = 0.10mm DETAIL 0.25 nozzle
+
+[printer:Original Prusa i3 MK2 0.6 nozzle]
+inherits = *common*
+max_layer_height = 0.35
+min_layer_height = 0.1
+nozzle_diameter = 0.6
+#printer_variant = 0.6
+
+[printer:Original Prusa i3 MK2 MM Single Mode]
+inherits = *mm-single*
+
+[printer:Original Prusa i3 MK2 MM Single Mode 0.6 nozzle]
+inherits = *mm-single*
+nozzle_diameter = 0.6
+#printer_variant = 0.6
+
+[printer:Original Prusa i3 MK2 MultiMaterial]
+inherits = *mm-multi*
+nozzle_diameter = 0.4,0.4,0.4,0.4
+
+[printer:Original Prusa i3 MK2 MultiMaterial 0.6 nozzle]
+inherits = *mm-multi*
+nozzle_diameter = 0.6,0.6,0.6,0.6
+#printer_variant = 0.6
+
+[printer:Original Prusa i3 MK3]
+inherits = *common*
+end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n
+retract_lift_below = 209
+start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
+#printer_model = MK3
+#default_print_profile = 0.15mm OPTIMAL MK3
+
+[printer:Original Prusa i3 MK3 0.25 nozzle]
+inherits = *common*
+nozzle_diameter = 0.25
+end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n
+retract_lift_below = 209
+start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
+#printer_model = MK3
+#default_print_profile = 0.10mm DETAIL MK3
+
+[printer:Original Prusa i3 MK3 0.6 nozzle]
+inherits = *common*
+nozzle_diameter = 0.6
+end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n
+retract_lift_below = 209
+start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
+#printer_model = MK3
+#default_print_profile = 0.15mm OPTIMAL MK3
+
+[presets]
+print = 0.15mm OPTIMAL MK3
+printer = Original Prusa i3 MK3
+filament = Prusa PLA
diff --git a/slic3r.pl b/slic3r.pl
index a3cc3cfc2..d9bed0ab6 100755
--- a/slic3r.pl
+++ b/slic3r.pl
@@ -12,7 +12,7 @@ BEGIN {
use File::Basename qw(basename);
use Getopt::Long qw(:config no_auto_abbrev);
use List::Util qw(first);
-use POSIX qw(setlocale LC_NUMERIC);
+#use POSIX qw(setlocale LC_NUMERIC);
use Slic3r;
use Slic3r::Geometry qw(deg2rad);
use Time::HiRes qw(gettimeofday tv_interval);
@@ -112,7 +112,7 @@ if ((!@ARGV || $opt{gui}) && !$opt{no_gui} && !$opt{save} && eval "require Slic3
$Slic3r::GUI::autosave = $opt{autosave};
}
$gui = Slic3r::GUI->new;
- setlocale(LC_NUMERIC, 'C');
+ #setlocale(LC_NUMERIC, 'C');
$gui->{mainframe}->load_config_file($_) for @{$opt{load}};
$gui->{mainframe}->load_config($cli_config);
my @input_files = @ARGV;
diff --git a/t/svg.t b/t/svg.t
index 6092efe24..47d24ceb8 100644
--- a/t/svg.t
+++ b/t/svg.t
@@ -10,6 +10,7 @@ BEGIN {
use Slic3r;
use Slic3r::Test;
+use IO::Scalar;
{
my $print = Slic3r::Test::init_print('20mm_cube');
diff --git a/utils/gcode_sectioncut.pl b/utils/gcode_sectioncut.pl
index afc011ce8..e83f3fcda 100644
--- a/utils/gcode_sectioncut.pl
+++ b/utils/gcode_sectioncut.pl
@@ -11,7 +11,6 @@ BEGIN {
}
use Getopt::Long qw(:config no_auto_abbrev);
-use IO::All;
use List::Util qw(max);
use Slic3r;
use Slic3r::Geometry qw(X Y);
diff --git a/xs/CMakeLists.txt b/xs/CMakeLists.txt
index 35d1fc7de..913ffc1e1 100644
--- a/xs/CMakeLists.txt
+++ b/xs/CMakeLists.txt
@@ -199,6 +199,14 @@ add_library(libslic3r_gui STATIC
${LIBDIR}/slic3r/GUI/2DBed.hpp
${LIBDIR}/slic3r/GUI/wxExtensions.cpp
${LIBDIR}/slic3r/GUI/wxExtensions.hpp
+ ${LIBDIR}/slic3r/GUI/BonjourDialog.cpp
+ ${LIBDIR}/slic3r/GUI/BonjourDialog.hpp
+ ${LIBDIR}/slic3r/Utils/Http.cpp
+ ${LIBDIR}/slic3r/Utils/Http.hpp
+ ${LIBDIR}/slic3r/Utils/OctoPrint.cpp
+ ${LIBDIR}/slic3r/Utils/OctoPrint.hpp
+ ${LIBDIR}/slic3r/Utils/Bonjour.cpp
+ ${LIBDIR}/slic3r/Utils/Bonjour.hpp
)
add_library(admesh STATIC
@@ -338,6 +346,7 @@ set(XS_XSP_FILES
${XSP_DIR}/Surface.xsp
${XSP_DIR}/SurfaceCollection.xsp
${XSP_DIR}/TriangleMesh.xsp
+ ${XSP_DIR}/Utils_OctoPrint.xsp
${XSP_DIR}/XS.xsp
)
foreach (file ${XS_XSP_FILES})
@@ -523,6 +532,27 @@ if (SLIC3R_PRUSACONTROL)
target_link_libraries(XS ${wxWidgets_LIBRARIES})
endif()
+find_package(CURL REQUIRED)
+include_directories(${CURL_INCLUDE_DIRS})
+target_link_libraries(XS ${CURL_LIBRARIES})
+
+if (SLIC3R_STATIC)
+ if (NOT APPLE)
+ # libcurl is always linked dynamically to the system libcurl on OSX.
+ # On other systems, libcurl is linked statically if SLIC3R_STATIC is set.
+ add_definitions(-DCURL_STATICLIB)
+ endif()
+ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ # As of now, our build system produces a statically linked libcurl,
+ # which links the OpenSSL library dynamically.
+ find_package(OpenSSL REQUIRED)
+ message("OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}")
+ message("OpenSSL libraries: ${OPENSSL_LIBRARIES}")
+ include_directories(${OPENSSL_INCLUDE_DIR})
+ target_link_libraries(XS ${OPENSSL_LIBRARIES})
+ endif()
+endif()
+
## OPTIONAL packages
# Find eigen3 or use bundled version
@@ -597,6 +627,21 @@ elseif (NOT MSVC)
target_link_libraries(slic3r -lstdc++)
endif ()
+if (MSVC)
+ # Here we associate some additional properties with the MSVC project to enable compilation and debugging out of the box.
+ set_target_properties(XS PROPERTIES VS_USER_PROPS "${PROJECT_SOURCE_DIR}/cmake/msvc/xs.wperl64d.props")
+endif()
+
+# l10n
+set(L10N_DIR "${PROJECT_SOURCE_DIR}/resources/localization")
+add_custom_target(pot
+ COMMAND xgettext --keyword=L --from-code=UTF-8 --debug
+ -f "${L10N_DIR}/list.txt"
+ -o "${L10N_DIR}/Slic3rPE.pot"
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ COMMENT "Generate pot file from strings in the source tree"
+)
+
# Installation
-install(TARGETS XS DESTINATION lib/slic3r-prusa3d/auto/Slic3r/XS)
-install(FILES lib/Slic3r/XS.pm DESTINATION lib/slic3r-prusa3d/Slic3r)
+install(TARGETS XS DESTINATION ${PERL_VENDORARCH}/auto/Slic3r/XS)
+install(FILES lib/Slic3r/XS.pm DESTINATION ${PERL_VENDORLIB}/Slic3r)
diff --git a/xs/src/libslic3r/BoundingBox.hpp b/xs/src/libslic3r/BoundingBox.hpp
index a7334308c..92a2bd451 100644
--- a/xs/src/libslic3r/BoundingBox.hpp
+++ b/xs/src/libslic3r/BoundingBox.hpp
@@ -94,6 +94,14 @@ public:
void translate(const Pointf3 &pos) { this->translate(pos.x, pos.y, pos.z); }
void offset(coordf_t delta);
PointClass center() const;
+
+ bool contains(const PointClass &point) const {
+ return BoundingBoxBase::contains(point) && point.z >= this->min.z && point.z <= this->max.z;
+ }
+
+ bool contains(const BoundingBox3Base& other) const {
+ return contains(other.min) && contains(other.max);
+ }
};
class BoundingBox : public BoundingBoxBase
diff --git a/xs/src/libslic3r/Format/3mf.cpp b/xs/src/libslic3r/Format/3mf.cpp
index 029debf72..b34b8989e 100644
--- a/xs/src/libslic3r/Format/3mf.cpp
+++ b/xs/src/libslic3r/Format/3mf.cpp
@@ -21,7 +21,8 @@ const std::string MODEL_EXTENSION = ".model";
const std::string MODEL_FILE = "3D/3dmodel.model"; // << this is the only format of the string which works with CURA
const std::string CONTENT_TYPES_FILE = "[Content_Types].xml";
const std::string RELATIONSHIPS_FILE = "_rels/.rels";
-const std::string CONFIG_FILE = "Metadata/Slic3r_PE.config";
+const std::string PRINT_CONFIG_FILE = "Metadata/Slic3r_PE.config";
+const std::string MODEL_CONFIG_FILE = "Metadata/Slic3r_PE_model.config";
const char* MODEL_TAG = "model";
const char* RESOURCES_TAG = "resources";
@@ -36,6 +37,10 @@ const char* COMPONENT_TAG = "component";
const char* BUILD_TAG = "build";
const char* ITEM_TAG = "item";
+const char* CONFIG_TAG = "config";
+const char* METADATA_TAG = "metadata";
+const char* VOLUME_TAG = "volume";
+
const char* UNIT_ATTR = "unit";
const char* NAME_ATTR = "name";
const char* TYPE_ATTR = "type";
@@ -49,6 +54,17 @@ const char* V3_ATTR = "v3";
const char* OBJECTID_ATTR = "objectid";
const char* TRANSFORM_ATTR = "transform";
+const char* KEY_ATTR = "key";
+const char* VALUE_ATTR = "value";
+const char* FIRST_TRIANGLE_ID_ATTR = "firstid";
+const char* LAST_TRIANGLE_ID_ATTR = "lastid";
+
+const char* OBJECT_TYPE = "object";
+const char* VOLUME_TYPE = "volume";
+
+const char* NAME_KEY = "name";
+const char* MODIFIER_KEY = "modifier";
+
const unsigned int VALID_OBJECT_TYPES_COUNT = 1;
const char* VALID_OBJECT_TYPES[] =
{
@@ -188,32 +204,63 @@ namespace Slic3r {
int object_id;
Matrix4x4 matrix;
- explicit Component(int object_id);
- Component(int object_id, const Matrix4x4& matrix);
+ explicit Component(int object_id)
+ : object_id(object_id)
+ , matrix(Matrix4x4::Identity())
+ {
+ }
+
+ Component(int object_id, const Matrix4x4& matrix)
+ : object_id(object_id)
+ , matrix(matrix)
+ {
+ }
};
typedef std::vector ComponentsList;
+ struct Geometry
+ {
+ std::vector vertices;
+ std::vector triangles;
+
+ bool empty()
+ {
+ return vertices.empty() || triangles.empty();
+ }
+
+ void reset()
+ {
+ vertices.clear();
+ triangles.clear();
+ }
+ };
+
struct CurrentObject
{
- struct Geometry
- {
- std::vector vertices;
- std::vector triangles;
-
- bool empty();
- void reset();
- };
-
int id;
Geometry geometry;
ModelObject* object;
- TriangleMesh mesh;
ComponentsList components;
- CurrentObject();
+ CurrentObject()
+ {
+ reset();
+ }
- void reset();
+ void reset()
+ {
+ id = -1;
+ geometry.reset();
+ object = nullptr;
+ components.clear();
+ }
+ };
+
+ struct CurrentConfig
+ {
+ int object_id;
+ int volume_id;
};
struct Instance
@@ -221,12 +268,53 @@ namespace Slic3r {
ModelInstance* instance;
Matrix4x4 matrix;
- Instance(ModelInstance* instance, const Matrix4x4& matrix);
+ Instance(ModelInstance* instance, const Matrix4x4& matrix)
+ : instance(instance)
+ , matrix(matrix)
+ {
+ }
+ };
+
+ struct Metadata
+ {
+ std::string key;
+ std::string value;
+
+ Metadata(const std::string& key, const std::string& value)
+ : key(key)
+ , value(value)
+ {
+ }
+ };
+
+ typedef std::vector MetadataList;
+
+ struct ObjectMetadata
+ {
+ struct VolumeMetadata
+ {
+ unsigned int first_triangle_id;
+ unsigned int last_triangle_id;
+ MetadataList metadata;
+
+ VolumeMetadata(unsigned int first_triangle_id, unsigned int last_triangle_id)
+ : first_triangle_id(first_triangle_id)
+ , last_triangle_id(last_triangle_id)
+ {
+ }
+ };
+
+ typedef std::vector VolumeMetadataList;
+
+ MetadataList metadata;
+ VolumeMetadataList volumes;
};
typedef std::map IdToModelObjectMap;
typedef std::map IdToAliasesMap;
typedef std::vector InstancesList;
+ typedef std::map IdToMetadataMap;
+ typedef std::map IdToGeometryMap;
XML_Parser m_xml_parser;
Model* m_model;
@@ -235,6 +323,9 @@ namespace Slic3r {
IdToModelObjectMap m_objects;
IdToAliasesMap m_objects_aliases;
InstancesList m_instances;
+ IdToGeometryMap m_geometries;
+ CurrentConfig m_curr_config;
+ IdToMetadataMap m_objects_metadata;
public:
_3MF_Importer();
@@ -248,10 +339,16 @@ namespace Slic3r {
bool _load_model_from_file(const std::string& filename, Model& model, PresetBundle& bundle);
bool _extract_model_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat);
- bool _extract_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, PresetBundle& bundle, const std::string& archive_filename);
+ bool _extract_print_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, PresetBundle& bundle, const std::string& archive_filename);
+ bool _extract_model_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, Model& model);
- void _handle_start_xml_element(const char* name, const char** attributes);
- void _handle_end_xml_element(const char* name);
+ // handlers to parse the .model file
+ void _handle_start_model_xml_element(const char* name, const char** attributes);
+ void _handle_end_model_xml_element(const char* name);
+
+ // handlers to parse the MODEL_CONFIG_FILE file
+ void _handle_start_config_xml_element(const char* name, const char** attributes);
+ void _handle_end_config_xml_element(const char* name);
bool _handle_start_model(const char** attributes, unsigned int num_attributes);
bool _handle_end_model();
@@ -294,53 +391,29 @@ namespace Slic3r {
void _apply_transform(ModelObject& object, const Matrix4x4& matrix);
void _apply_transform(ModelInstance& instance, const Matrix4x4& matrix);
- static void XMLCALL _handle_start_xml_element(void* userData, const char* name, const char** attributes);
- static void XMLCALL _handle_end_xml_element(void* userData, const char* name);
+ bool _handle_start_config(const char** attributes, unsigned int num_attributes);
+ bool _handle_end_config();
+
+ bool _handle_start_config_object(const char** attributes, unsigned int num_attributes);
+ bool _handle_end_config_object();
+
+ bool _handle_start_config_volume(const char** attributes, unsigned int num_attributes);
+ bool _handle_end_config_volume();
+
+ bool _handle_start_config_metadata(const char** attributes, unsigned int num_attributes);
+ bool _handle_end_config_metadata();
+
+ bool _generate_volumes(ModelObject& object, const Geometry& geometry, const ObjectMetadata::VolumeMetadataList& volumes);
+
+ // callbacks to parse the .model file
+ static void XMLCALL _handle_start_model_xml_element(void* userData, const char* name, const char** attributes);
+ static void XMLCALL _handle_end_model_xml_element(void* userData, const char* name);
+
+ // callbacks to parse the MODEL_CONFIG_FILE file
+ static void XMLCALL _handle_start_config_xml_element(void* userData, const char* name, const char** attributes);
+ static void XMLCALL _handle_end_config_xml_element(void* userData, const char* name);
};
- _3MF_Importer::Component::Component(int object_id)
- : object_id(object_id)
- , matrix(Matrix4x4::Identity())
- {
- }
-
- _3MF_Importer::Component::Component(int object_id, const Matrix4x4& matrix)
- : object_id(object_id)
- , matrix(matrix)
- {
- }
-
- bool _3MF_Importer::CurrentObject::Geometry::empty()
- {
- return vertices.empty() || triangles.empty();
- }
-
- void _3MF_Importer::CurrentObject::Geometry::reset()
- {
- vertices.clear();
- triangles.clear();
- }
-
- _3MF_Importer::CurrentObject::CurrentObject()
- {
- reset();
- }
-
- void _3MF_Importer::CurrentObject::reset()
- {
- id = -1;
- geometry.reset();
- object = nullptr;
- mesh = TriangleMesh();
- components.clear();
- }
-
- _3MF_Importer::Instance::Instance(ModelInstance* instance, const Matrix4x4& matrix)
- : instance(instance)
- , matrix(matrix)
- {
- }
-
_3MF_Importer::_3MF_Importer()
: m_xml_parser(nullptr)
, m_model(nullptr)
@@ -361,6 +434,10 @@ namespace Slic3r {
m_objects.clear();
m_objects_aliases.clear();
m_instances.clear();
+ m_geometries.clear();
+ m_curr_config.object_id = -1;
+ m_curr_config.volume_id = -1;
+ m_objects_metadata.clear();
clear_errors();
return _load_model_from_file(filename, model, bundle);
@@ -413,13 +490,23 @@ namespace Slic3r {
return false;
}
}
- else if (boost::algorithm::iequals(name, CONFIG_FILE))
+ else if (boost::algorithm::iequals(name, PRINT_CONFIG_FILE))
{
- // extract slic3r config file
- if (!_extract_config_from_archive(archive, stat, bundle, filename))
+ // extract slic3r print config file
+ if (!_extract_print_config_from_archive(archive, stat, bundle, filename))
{
mz_zip_reader_end(&archive);
- add_error("Archive does not contain a valid config");
+ add_error("Archive does not contain a valid print config");
+ return false;
+ }
+ }
+ else if (boost::algorithm::iequals(name, MODEL_CONFIG_FILE))
+ {
+ // extract slic3r model config file
+ if (!_extract_model_config_from_archive(archive, stat, model))
+ {
+ mz_zip_reader_end(&archive);
+ add_error("Archive does not contain a valid model config");
return false;
}
}
@@ -427,6 +514,67 @@ namespace Slic3r {
}
mz_zip_reader_end(&archive);
+
+ for (const IdToModelObjectMap::value_type& object : m_objects)
+ {
+ ObjectMetadata::VolumeMetadataList volumes;
+ ObjectMetadata::VolumeMetadataList* volumes_ptr = nullptr;
+
+ IdToGeometryMap::const_iterator obj_geometry = m_geometries.find(object.first);
+ if (obj_geometry == m_geometries.end())
+ {
+ add_error("Unable to find object geometry");
+ return false;
+ }
+
+ IdToMetadataMap::iterator obj_metadata = m_objects_metadata.find(object.first);
+ if (obj_metadata != m_objects_metadata.end())
+ {
+ // config data has been found, this model was saved using slic3r pe
+
+ // apply object's name and config data
+ for (const Metadata& metadata : obj_metadata->second.metadata)
+ {
+ if (metadata.key == "name")
+ object.second->name = metadata.value;
+ else
+ object.second->config.set_deserialize(metadata.key, metadata.value);
+ }
+
+ // select object's detected volumes
+ volumes_ptr = &obj_metadata->second.volumes;
+ }
+ else
+ {
+ // config data not found, this model was not saved using slic3r pe
+
+ // add the entire geometry as the single volume to generate
+ volumes.emplace_back(0, (int)obj_geometry->second.triangles.size() / 3 - 1);
+
+ // select as volumes
+ volumes_ptr = &volumes;
+ }
+
+ if (!_generate_volumes(*object.second, obj_geometry->second, *volumes_ptr))
+ return false;
+
+ // apply transformation if the object contains a single instance
+ if (object.second->instances.size() == 1)
+ {
+ for (const Instance& instance : m_instances)
+ {
+ if (object.second->instances[0] == instance.instance)
+ {
+ _apply_transform(*object.second, instance.matrix);
+ break;
+ }
+ }
+ }
+ }
+
+ // fixes the min z of the model if negative
+ model.adjust_min_z();
+
return true;
}
@@ -448,7 +596,7 @@ namespace Slic3r {
}
XML_SetUserData(m_xml_parser, (void*)this);
- XML_SetElementHandler(m_xml_parser, _3MF_Importer::_handle_start_xml_element, _3MF_Importer::_handle_end_xml_element);
+ XML_SetElementHandler(m_xml_parser, _3MF_Importer::_handle_start_model_xml_element, _3MF_Importer::_handle_end_model_xml_element);
void* parser_buffer = XML_GetBuffer(m_xml_parser, (int)stat.m_uncomp_size);
if (parser_buffer == nullptr)
@@ -475,7 +623,7 @@ namespace Slic3r {
return true;
}
- bool _3MF_Importer::_extract_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, PresetBundle& bundle, const std::string& archive_filename)
+ bool _3MF_Importer::_extract_print_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, PresetBundle& bundle, const std::string& archive_filename)
{
if (stat.m_uncomp_size > 0)
{
@@ -494,7 +642,52 @@ namespace Slic3r {
return true;
}
- void _3MF_Importer::_handle_start_xml_element(const char* name, const char** attributes)
+ bool _3MF_Importer::_extract_model_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, Model& model)
+ {
+ if (stat.m_uncomp_size == 0)
+ {
+ add_error("Found invalid size");
+ return false;
+ }
+
+ _destroy_xml_parser();
+
+ m_xml_parser = XML_ParserCreate(nullptr);
+ if (m_xml_parser == nullptr)
+ {
+ add_error("Unable to create parser");
+ return false;
+ }
+
+ XML_SetUserData(m_xml_parser, (void*)this);
+ XML_SetElementHandler(m_xml_parser, _3MF_Importer::_handle_start_config_xml_element, _3MF_Importer::_handle_end_config_xml_element);
+
+ void* parser_buffer = XML_GetBuffer(m_xml_parser, (int)stat.m_uncomp_size);
+ if (parser_buffer == nullptr)
+ {
+ add_error("Unable to create buffer");
+ return false;
+ }
+
+ mz_bool res = mz_zip_reader_extract_file_to_mem(&archive, stat.m_filename, parser_buffer, (size_t)stat.m_uncomp_size, 0);
+ if (res == 0)
+ {
+ add_error("Error while reading config data to buffer");
+ return false;
+ }
+
+ if (!XML_ParseBuffer(m_xml_parser, (int)stat.m_uncomp_size, 1))
+ {
+ char error_buf[1024];
+ ::sprintf(error_buf, "Error (%s) while parsing xml file at line %d", XML_ErrorString(XML_GetErrorCode(m_xml_parser)), XML_GetCurrentLineNumber(m_xml_parser));
+ add_error(error_buf);
+ return false;
+ }
+
+ return true;
+ }
+
+ void _3MF_Importer::_handle_start_model_xml_element(const char* name, const char** attributes)
{
if (m_xml_parser == nullptr)
return;
@@ -531,7 +724,7 @@ namespace Slic3r {
_stop_xml_parser();
}
- void _3MF_Importer::_handle_end_xml_element(const char* name)
+ void _3MF_Importer::_handle_end_model_xml_element(const char* name)
{
if (m_xml_parser == nullptr)
return;
@@ -567,6 +760,47 @@ namespace Slic3r {
_stop_xml_parser();
}
+ void _3MF_Importer::_handle_start_config_xml_element(const char* name, const char** attributes)
+ {
+ if (m_xml_parser == nullptr)
+ return;
+
+ bool res = true;
+ unsigned int num_attributes = (unsigned int)XML_GetSpecifiedAttributeCount(m_xml_parser);
+
+ if (::strcmp(CONFIG_TAG, name) == 0)
+ res = _handle_start_config(attributes, num_attributes);
+ else if (::strcmp(OBJECT_TAG, name) == 0)
+ res = _handle_start_config_object(attributes, num_attributes);
+ else if (::strcmp(VOLUME_TAG, name) == 0)
+ res = _handle_start_config_volume(attributes, num_attributes);
+ else if (::strcmp(METADATA_TAG, name) == 0)
+ res = _handle_start_config_metadata(attributes, num_attributes);
+
+ if (!res)
+ _stop_xml_parser();
+ }
+
+ void _3MF_Importer::_handle_end_config_xml_element(const char* name)
+ {
+ if (m_xml_parser == nullptr)
+ return;
+
+ bool res = true;
+
+ if (::strcmp(CONFIG_TAG, name) == 0)
+ res = _handle_end_config();
+ else if (::strcmp(OBJECT_TAG, name) == 0)
+ res = _handle_end_config_object();
+ else if (::strcmp(VOLUME_TAG, name) == 0)
+ res = _handle_end_config_volume();
+ else if (::strcmp(METADATA_TAG, name) == 0)
+ res = _handle_end_config_metadata();
+
+ if (!res)
+ _stop_xml_parser();
+ }
+
bool _3MF_Importer::_handle_start_model(const char** attributes, unsigned int num_attributes)
{
m_unit_factor = get_unit_factor(get_attribute_value_string(attributes, num_attributes, UNIT_ATTR));
@@ -588,18 +822,11 @@ namespace Slic3r {
if (instance.instance != nullptr)
{
ModelObject* object = instance.instance->get_object();
- if (object != nullptr)
+ if ((object != nullptr) && (object->instances.size() > 1))
{
- if (object->instances.size() == 1)
- {
- // single instance -> apply the matrix to object geometry
- _apply_transform(*object, instance.matrix);
- }
- else
- {
- // multiple instances -> apply the matrix to the instance
- _apply_transform(*instance.instance, instance.matrix);
- }
+ // multiple instances -> apply the matrix to the instance
+ // (for single instance the transformation can be applied only after the volumes have been generated)
+ _apply_transform(*instance.instance, instance.matrix);
}
}
}
@@ -669,30 +896,8 @@ namespace Slic3r {
}
else
{
- // geometry defined, add it to the object
-
- ModelVolume* volume = m_curr_object.object->add_volume(m_curr_object.mesh);
- if (volume == nullptr)
- {
- add_error("Unable to add volume");
- return false;
- }
-
- stl_file& stl = volume->mesh.stl;
- stl.stats.type = inmemory;
- stl.stats.number_of_facets = (uint32_t)m_curr_object.geometry.triangles.size() / 3;
- stl.stats.original_num_facets = (int)stl.stats.number_of_facets;
- stl_allocate(&stl);
- for (size_t i = 0; i < m_curr_object.geometry.triangles.size(); /*nothing*/)
- {
- stl_facet& facet = stl.facet_start[i / 3];
- for (unsigned int v = 0; v < 3; ++v)
- {
- ::memcpy((void*)&facet.vertex[v].x, (const void*)&m_curr_object.geometry.vertices[m_curr_object.geometry.triangles[i++] * 3], 3 * sizeof(float));
- }
- }
- stl_get_size(&stl);
- volume->mesh.repair();
+ // geometry defined, store it for later use
+ m_geometries.insert(IdToGeometryMap::value_type(m_curr_object.id, std::move(m_curr_object.geometry)));
// stores the object for later use
if (m_objects.find(m_curr_object.id) == m_objects.end())
@@ -1014,18 +1219,181 @@ namespace Slic3r {
instance.rotation = angle_z;
}
- void XMLCALL _3MF_Importer::_handle_start_xml_element(void* userData, const char* name, const char** attributes)
+ bool _3MF_Importer::_handle_start_config(const char** attributes, unsigned int num_attributes)
{
- _3MF_Importer* importer = (_3MF_Importer*)userData;
- if (importer != nullptr)
- importer->_handle_start_xml_element(name, attributes);
+ // do nothing
+ return true;
}
- void XMLCALL _3MF_Importer::_handle_end_xml_element(void* userData, const char* name)
+ bool _3MF_Importer::_handle_end_config()
+ {
+ // do nothing
+ return true;
+ }
+
+ bool _3MF_Importer::_handle_start_config_object(const char** attributes, unsigned int num_attributes)
+ {
+ int object_id = get_attribute_value_int(attributes, num_attributes, ID_ATTR);
+ IdToMetadataMap::iterator object_item = m_objects_metadata.find(object_id);
+ if (object_item != m_objects_metadata.end())
+ {
+ add_error("Found duplicated object id");
+ return false;
+ }
+
+ m_objects_metadata.insert(IdToMetadataMap::value_type(object_id, ObjectMetadata()));
+ m_curr_config.object_id = object_id;
+ return true;
+ }
+
+ bool _3MF_Importer::_handle_end_config_object()
+ {
+ // do nothing
+ return true;
+ }
+
+ bool _3MF_Importer::_handle_start_config_volume(const char** attributes, unsigned int num_attributes)
+ {
+ IdToMetadataMap::iterator object = m_objects_metadata.find(m_curr_config.object_id);
+ if (object == m_objects_metadata.end())
+ {
+ add_error("Cannot assign volume to a valid object");
+ return false;
+ }
+
+ m_curr_config.volume_id = object->second.volumes.size();
+
+ unsigned int first_triangle_id = (unsigned int)get_attribute_value_int(attributes, num_attributes, FIRST_TRIANGLE_ID_ATTR);
+ unsigned int last_triangle_id = (unsigned int)get_attribute_value_int(attributes, num_attributes, LAST_TRIANGLE_ID_ATTR);
+
+ object->second.volumes.emplace_back(first_triangle_id, last_triangle_id);
+ return true;
+ }
+
+ bool _3MF_Importer::_handle_end_config_volume()
+ {
+ // do nothing
+ return true;
+ }
+
+ bool _3MF_Importer::_handle_start_config_metadata(const char** attributes, unsigned int num_attributes)
+ {
+ IdToMetadataMap::iterator object = m_objects_metadata.find(m_curr_config.object_id);
+ if (object == m_objects_metadata.end())
+ {
+ add_error("Cannot assign metadata to valid object id");
+ return false;
+ }
+
+ std::string type = get_attribute_value_string(attributes, num_attributes, TYPE_ATTR);
+ std::string key = get_attribute_value_string(attributes, num_attributes, KEY_ATTR);
+ std::string value = get_attribute_value_string(attributes, num_attributes, VALUE_ATTR);
+
+ if (type == OBJECT_TYPE)
+ object->second.metadata.emplace_back(key, value);
+ else if (type == VOLUME_TYPE)
+ {
+ if (m_curr_config.volume_id < object->second.volumes.size())
+ object->second.volumes[m_curr_config.volume_id].metadata.emplace_back(key, value);
+ }
+ else
+ {
+ add_error("Found invalid metadata type");
+ return false;
+ }
+
+ return true;
+ }
+
+ bool _3MF_Importer::_handle_end_config_metadata()
+ {
+ // do nothing
+ return true;
+ }
+
+ bool _3MF_Importer::_generate_volumes(ModelObject& object, const Geometry& geometry, const ObjectMetadata::VolumeMetadataList& volumes)
+ {
+ if (!object.volumes.empty())
+ {
+ add_error("Found invalid volumes count");
+ return false;
+ }
+
+ unsigned int geo_tri_count = geometry.triangles.size() / 3;
+
+ for (const ObjectMetadata::VolumeMetadata& volume_data : volumes)
+ {
+ if ((geo_tri_count <= volume_data.first_triangle_id) || (geo_tri_count <= volume_data.last_triangle_id) || (volume_data.last_triangle_id < volume_data.first_triangle_id))
+ {
+ add_error("Found invalid triangle id");
+ return false;
+ }
+
+ // splits volume out of imported geometry
+ unsigned int triangles_count = volume_data.last_triangle_id - volume_data.first_triangle_id + 1;
+ ModelVolume* volume = object.add_volume(TriangleMesh());
+ stl_file& stl = volume->mesh.stl;
+ stl.stats.type = inmemory;
+ stl.stats.number_of_facets = (uint32_t)triangles_count;
+ stl.stats.original_num_facets = (int)stl.stats.number_of_facets;
+ stl_allocate(&stl);
+
+ unsigned int src_start_id = volume_data.first_triangle_id * 3;
+
+ for (size_t i = 0; i < triangles_count; ++i)
+ {
+ unsigned int ii = i * 3;
+ stl_facet& facet = stl.facet_start[i];
+ for (unsigned int v = 0; v < 3; ++v)
+ {
+ ::memcpy((void*)&facet.vertex[v].x, (const void*)&geometry.vertices[geometry.triangles[src_start_id + ii + v] * 3], 3 * sizeof(float));
+ }
+ }
+
+ stl_get_size(&stl);
+ volume->mesh.repair();
+
+ // apply volume's name and config data
+ for (const Metadata& metadata : volume_data.metadata)
+ {
+ if (metadata.key == NAME_KEY)
+ volume->name = metadata.value;
+ else if ((metadata.key == MODIFIER_KEY) && (metadata.value == "1"))
+ volume->modifier = true;
+ else
+ volume->config.set_deserialize(metadata.key, metadata.value);
+ }
+ }
+
+ return true;
+ }
+
+ void XMLCALL _3MF_Importer::_handle_start_model_xml_element(void* userData, const char* name, const char** attributes)
{
_3MF_Importer* importer = (_3MF_Importer*)userData;
if (importer != nullptr)
- importer->_handle_end_xml_element(name);
+ importer->_handle_start_model_xml_element(name, attributes);
+ }
+
+ void XMLCALL _3MF_Importer::_handle_end_model_xml_element(void* userData, const char* name)
+ {
+ _3MF_Importer* importer = (_3MF_Importer*)userData;
+ if (importer != nullptr)
+ importer->_handle_end_model_xml_element(name);
+ }
+
+ void XMLCALL _3MF_Importer::_handle_start_config_xml_element(void* userData, const char* name, const char** attributes)
+ {
+ _3MF_Importer* importer = (_3MF_Importer*)userData;
+ if (importer != nullptr)
+ importer->_handle_start_config_xml_element(name, attributes);
+ }
+
+ void XMLCALL _3MF_Importer::_handle_end_config_xml_element(void* userData, const char* name)
+ {
+ _3MF_Importer* importer = (_3MF_Importer*)userData;
+ if (importer != nullptr)
+ importer->_handle_end_config_xml_element(name);
}
class _3MF_Exporter : public _3MF_Base
@@ -1035,10 +1403,44 @@ namespace Slic3r {
unsigned int id;
Matrix4x4 matrix;
- BuildItem(unsigned int id, const Matrix4x4& matrix);
+ BuildItem(unsigned int id, const Matrix4x4& matrix)
+ : id(id)
+ , matrix(matrix)
+ {
+ }
+ };
+
+ struct Offsets
+ {
+ unsigned int first_vertex_id;
+ unsigned int first_triangle_id;
+ unsigned int last_triangle_id;
+
+ Offsets(unsigned int first_vertex_id)
+ : first_vertex_id(first_vertex_id)
+ , first_triangle_id(-1)
+ , last_triangle_id(-1)
+ {
+ }
+ };
+
+ typedef std::map VolumeToOffsetsMap;
+
+ struct ObjectData
+ {
+ ModelObject* object;
+ VolumeToOffsetsMap volumes_offsets;
+
+ explicit ObjectData(ModelObject* object)
+ : object(object)
+ {
+ }
};
typedef std::vector BuildItemsList;
+ typedef std::map IdToObjectDataMap;
+
+ IdToObjectDataMap m_objects_data;
public:
bool save_model_to_file(const std::string& filename, Model& model, const Print& print);
@@ -1048,18 +1450,13 @@ namespace Slic3r {
bool _add_content_types_file_to_archive(mz_zip_archive& archive);
bool _add_relationships_file_to_archive(mz_zip_archive& archive);
bool _add_model_file_to_archive(mz_zip_archive& archive, Model& model);
- bool _add_object_to_model_stream(std::stringstream& stream, unsigned int& object_id, ModelObject& object, BuildItemsList& build_items);
- bool _add_mesh_to_object_stream(std::stringstream& stream, ModelObject& object);
+ bool _add_object_to_model_stream(std::stringstream& stream, unsigned int& object_id, ModelObject& object, BuildItemsList& build_items, VolumeToOffsetsMap& volumes_offsets);
+ bool _add_mesh_to_object_stream(std::stringstream& stream, ModelObject& object, VolumeToOffsetsMap& volumes_offsets);
bool _add_build_to_model_stream(std::stringstream& stream, const BuildItemsList& build_items);
- bool _add_config_file_to_archive(mz_zip_archive& archive, const Print& print);
+ bool _add_print_config_file_to_archive(mz_zip_archive& archive, const Print& print);
+ bool _add_model_config_file_to_archive(mz_zip_archive& archive, const Model& model);
};
- _3MF_Exporter::BuildItem::BuildItem(unsigned int id, const Matrix4x4& matrix)
- : id(id)
- , matrix(matrix)
- {
- }
-
bool _3MF_Exporter::save_model_to_file(const std::string& filename, Model& model, const Print& print)
{
clear_errors();
@@ -1071,6 +1468,8 @@ namespace Slic3r {
mz_zip_archive archive;
mz_zip_zero_struct(&archive);
+ m_objects_data.clear();
+
mz_bool res = mz_zip_writer_init_file(&archive, filename.c_str(), 0);
if (res == 0)
{
@@ -1102,8 +1501,16 @@ namespace Slic3r {
return false;
}
- // adds slic3r config file
- if (!_add_config_file_to_archive(archive, print))
+ // adds slic3r print config file
+ if (!_add_print_config_file_to_archive(archive, print))
+ {
+ mz_zip_writer_end(&archive);
+ boost::filesystem::remove(filename);
+ return false;
+ }
+
+ // adds slic3r model config file
+ if (!_add_model_config_file_to_archive(archive, model))
{
mz_zip_writer_end(&archive);
boost::filesystem::remove(filename);
@@ -1166,8 +1573,8 @@ namespace Slic3r {
{
std::stringstream stream;
stream << "\n";
- stream << "\n";
- stream << " \n";
+ stream << "<" << MODEL_TAG << " unit=\"millimeter\" xml:lang=\"en-US\" xmlns=\"http://schemas.microsoft.com/3dmanufacturing/core/2015/02\">\n";
+ stream << " <" << RESOURCES_TAG << ">\n";
BuildItemsList build_items;
@@ -1177,15 +1584,17 @@ namespace Slic3r {
if (obj == nullptr)
continue;
- if (!_add_object_to_model_stream(stream, object_id, *obj, build_items))
+ unsigned int curr_id = object_id;
+ IdToObjectDataMap::iterator object_it = m_objects_data.insert(IdToObjectDataMap::value_type(curr_id, ObjectData(obj))).first;
+
+ if (!_add_object_to_model_stream(stream, object_id, *obj, build_items, object_it->second.volumes_offsets))
{
add_error("Unable to add object to archive");
return false;
}
}
-
- stream << " \n";
+ stream << " " << RESOURCES_TAG << ">\n";
if (!_add_build_to_model_stream(stream, build_items))
{
@@ -1193,7 +1602,7 @@ namespace Slic3r {
return false;
}
- stream << "\n";
+ stream << "" << MODEL_TAG << ">\n";
std::string out = stream.str();
@@ -1206,7 +1615,7 @@ namespace Slic3r {
return true;
}
- bool _3MF_Exporter::_add_object_to_model_stream(std::stringstream& stream, unsigned int& object_id, ModelObject& object, BuildItemsList& build_items)
+ bool _3MF_Exporter::_add_object_to_model_stream(std::stringstream& stream, unsigned int& object_id, ModelObject& object, BuildItemsList& build_items, VolumeToOffsetsMap& volumes_offsets)
{
unsigned int id = 0;
for (const ModelInstance* instance : object.instances)
@@ -1215,11 +1624,11 @@ namespace Slic3r {
continue;
unsigned int instance_id = object_id + id;
- stream << " \n";
+ stream << " " << OBJECT_TAG << ">\n";
++id;
}
@@ -1247,20 +1656,18 @@ namespace Slic3r {
return true;
}
- bool _3MF_Exporter::_add_mesh_to_object_stream(std::stringstream& stream, ModelObject& object)
+ bool _3MF_Exporter::_add_mesh_to_object_stream(std::stringstream& stream, ModelObject& object, VolumeToOffsetsMap& volumes_offsets)
{
- stream << " \n";
- stream << " \n";
+ stream << " <" << MESH_TAG << ">\n";
+ stream << " <" << VERTICES_TAG << ">\n";
- typedef std::map VolumeToOffsetMap;
- VolumeToOffsetMap volumes_offset;
unsigned int vertices_count = 0;
for (ModelVolume* volume : object.volumes)
{
if (volume == nullptr)
continue;
- volumes_offset.insert(VolumeToOffsetMap::value_type(volume, vertices_count));
+ VolumeToOffsetsMap::iterator volume_it = volumes_offsets.insert(VolumeToOffsetsMap::value_type(volume, Offsets(vertices_count))).first;
if (!volume->mesh.repaired)
volume->mesh.repair();
@@ -1279,7 +1686,7 @@ namespace Slic3r {
for (int i = 0; i < stl.stats.shared_vertices; ++i)
{
- stream << " \n";
- stream << " \n";
+ stream << " " << VERTICES_TAG << ">\n";
+ stream << " <" << TRIANGLES_TAG << ">\n";
+ unsigned int triangles_count = 0;
for (ModelVolume* volume : object.volumes)
{
if (volume == nullptr)
continue;
- VolumeToOffsetMap::const_iterator offset_it = volumes_offset.find(volume);
- assert(offset_it != volumes_offset.end());
+ VolumeToOffsetsMap::iterator volume_it = volumes_offsets.find(volume);
+ assert(volume_it != volumes_offsets.end());
stl_file& stl = volume->mesh.stl;
+ // updates triangle offsets
+ volume_it->second.first_triangle_id = triangles_count;
+ triangles_count += stl.stats.number_of_facets;
+ volume_it->second.last_triangle_id = triangles_count - 1;
+
for (uint32_t i = 0; i < stl.stats.number_of_facets; ++i)
{
- stream << " second << "\" ";
+ stream << "v" << j + 1 << "=\"" << stl.v_indices[i].vertex[j] + volume_it->second.first_vertex_id << "\" ";
}
stream << "/>\n";
}
-
}
- stream << " \n";
- stream << " \n";
+ stream << " " << TRIANGLES_TAG << ">\n";
+ stream << " " << MESH_TAG << ">\n";
return true;
}
@@ -1326,11 +1738,11 @@ namespace Slic3r {
return false;
}
- stream << " \n";
+ stream << " <" << BUILD_TAG << ">\n";
for (const BuildItem& item : build_items)
{
- stream << " \n";
}
- stream << " \n";
+ stream << " " << BUILD_TAG << ">\n";
return true;
}
- bool _3MF_Exporter::_add_config_file_to_archive(mz_zip_archive& archive, const Print& print)
+ bool _3MF_Exporter::_add_print_config_file_to_archive(mz_zip_archive& archive, const Print& print)
{
char buffer[1024];
sprintf(buffer, "; %s\n\n", header_slic3r_generated().c_str());
@@ -1356,9 +1768,81 @@ namespace Slic3r {
GCode::append_full_config(print, out);
- if (!mz_zip_writer_add_mem(&archive, CONFIG_FILE.c_str(), (const void*)out.data(), out.length(), MZ_DEFAULT_COMPRESSION))
+ if (!mz_zip_writer_add_mem(&archive, PRINT_CONFIG_FILE.c_str(), (const void*)out.data(), out.length(), MZ_DEFAULT_COMPRESSION))
{
- add_error("Unable to add config file to archive");
+ add_error("Unable to add print config file to archive");
+ return false;
+ }
+
+ return true;
+ }
+
+ bool _3MF_Exporter::_add_model_config_file_to_archive(mz_zip_archive& archive, const Model& model)
+ {
+ std::stringstream stream;
+ stream << "\n";
+ stream << "<" << CONFIG_TAG << ">\n";
+
+ for (const IdToObjectDataMap::value_type& obj_metadata : m_objects_data)
+ {
+ const ModelObject* obj = obj_metadata.second.object;
+ if (obj != nullptr)
+ {
+ stream << " <" << OBJECT_TAG << " id=\"" << obj_metadata.first << "\">\n";
+
+ // stores object's name
+ if (!obj->name.empty())
+ stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << OBJECT_TYPE << "\" " << KEY_ATTR << "=\"name\" " << VALUE_ATTR << "=\"" << obj->name << "\"/>\n";
+
+ // stores object's config data
+ for (const std::string& key : obj->config.keys())
+ {
+ stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << OBJECT_TYPE << "\" " << KEY_ATTR << "=\"" << key << "\" " << VALUE_ATTR << "=\"" << obj->config.serialize(key) << "\"/>\n";
+ }
+
+ for (const ModelVolume* volume : obj_metadata.second.object->volumes)
+ {
+ if (volume != nullptr)
+ {
+ const VolumeToOffsetsMap& offsets = obj_metadata.second.volumes_offsets;
+ VolumeToOffsetsMap::const_iterator it = offsets.find(volume);
+ if (it != offsets.end())
+ {
+ // stores volume's offsets
+ stream << " <" << VOLUME_TAG << " ";
+ stream << FIRST_TRIANGLE_ID_ATTR << "=\"" << it->second.first_triangle_id << "\" ";
+ stream << LAST_TRIANGLE_ID_ATTR << "=\"" << it->second.last_triangle_id << "\">\n";
+
+ // stores volume's name
+ if (!volume->name.empty())
+ stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << NAME_KEY << "\" " << VALUE_ATTR << "=\"" << volume->name << "\"/>\n";
+
+ // stores volume's modifier field
+ if (volume->modifier)
+ stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << MODIFIER_KEY << "\" " << VALUE_ATTR << "=\"1\"/>\n";
+
+ // stores volume's config data
+ for (const std::string& key : volume->config.keys())
+ {
+ stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << key << "\" " << VALUE_ATTR << "=\"" << volume->config.serialize(key) << "\"/>\n";
+ }
+
+ stream << " " << VOLUME_TAG << ">\n";
+ }
+ }
+ }
+
+ stream << " " << OBJECT_TAG << ">\n";
+ }
+ }
+
+ stream << "" << CONFIG_TAG << ">\n";
+
+ std::string out = stream.str();
+
+ if (!mz_zip_writer_add_mem(&archive, MODEL_CONFIG_FILE.c_str(), (const void*)out.data(), out.length(), MZ_DEFAULT_COMPRESSION))
+ {
+ add_error("Unable to add model config file to archive");
return false;
}
@@ -1392,5 +1876,4 @@ namespace Slic3r {
return res;
}
-
} // namespace Slic3r
diff --git a/xs/src/libslic3r/Model.cpp b/xs/src/libslic3r/Model.cpp
index 1de99bbf8..6f1ce1ce5 100644
--- a/xs/src/libslic3r/Model.cpp
+++ b/xs/src/libslic3r/Model.cpp
@@ -222,7 +222,7 @@ bool Model::add_default_instances()
}
// this returns the bounding box of the *transformed* instances
-BoundingBoxf3 Model::bounding_box()
+BoundingBoxf3 Model::bounding_box() const
{
BoundingBoxf3 bb;
for (ModelObject *o : this->objects)
@@ -230,6 +230,14 @@ BoundingBoxf3 Model::bounding_box()
return bb;
}
+BoundingBoxf3 Model::transformed_bounding_box() const
+{
+ BoundingBoxf3 bb;
+ for (const ModelObject* obj : this->objects)
+ bb.merge(obj->tight_bounding_box(false));
+ return bb;
+}
+
void Model::center_instances_around_point(const Pointf &point)
{
// BoundingBoxf3 bb = this->bounding_box();
@@ -409,6 +417,51 @@ void Model::convert_multipart_object()
this->objects.push_back(object);
}
+void Model::adjust_min_z()
+{
+ if (objects.empty())
+ return;
+
+ if (bounding_box().min.z < 0.0)
+ {
+ for (ModelObject* obj : objects)
+ {
+ if (obj != nullptr)
+ {
+ coordf_t obj_min_z = obj->bounding_box().min.z;
+ if (obj_min_z < 0.0)
+ obj->translate(0.0, 0.0, -obj_min_z);
+ }
+ }
+ }
+}
+
+bool Model::fits_print_volume(const DynamicPrintConfig* config) const
+{
+ if (config == nullptr)
+ return false;
+
+ if (objects.empty())
+ return true;
+
+ const ConfigOptionPoints* opt = dynamic_cast(config->option("bed_shape"));
+ if (opt == nullptr)
+ return false;
+
+ BoundingBox bed_box_2D = get_extents(Polygon::new_scale(opt->values));
+ BoundingBoxf3 print_volume(Pointf3(unscale(bed_box_2D.min.x), unscale(bed_box_2D.min.y), 0.0), Pointf3(unscale(bed_box_2D.max.x), unscale(bed_box_2D.max.y), config->opt_float("max_print_height")));
+ return print_volume.contains(transformed_bounding_box());
+}
+
+bool Model::fits_print_volume(const FullPrintConfig &config) const
+{
+ if (objects.empty())
+ return true;
+ BoundingBox bed_box_2D = get_extents(Polygon::new_scale(config.bed_shape.values));
+ BoundingBoxf3 print_volume(Pointf3(unscale(bed_box_2D.min.x), unscale(bed_box_2D.min.y), 0.0), Pointf3(unscale(bed_box_2D.max.x), unscale(bed_box_2D.max.y), config.max_print_height));
+ return print_volume.contains(transformed_bounding_box());
+}
+
ModelObject::ModelObject(Model *model, const ModelObject &other, bool copy_volumes) :
name(other.name),
input_file(other.input_file),
@@ -539,7 +592,7 @@ void ModelObject::clear_instances()
// Returns the bounding box of the transformed instances.
// This bounding box is approximate and not snug.
-BoundingBoxf3 ModelObject::bounding_box()
+const BoundingBoxf3& ModelObject::bounding_box()
{
if (! m_bounding_box_valid) {
BoundingBoxf3 raw_bbox;
@@ -555,6 +608,54 @@ BoundingBoxf3 ModelObject::bounding_box()
return m_bounding_box;
}
+BoundingBoxf3 ModelObject::tight_bounding_box(bool include_modifiers) const
+{
+ BoundingBoxf3 bb;
+
+ for (const ModelVolume* vol : this->volumes)
+ {
+ if (include_modifiers || !vol->modifier)
+ {
+ for (const ModelInstance* inst : this->instances)
+ {
+ double c = cos(inst->rotation);
+ double s = sin(inst->rotation);
+
+ for (int f = 0; f < vol->mesh.stl.stats.number_of_facets; ++f)
+ {
+ const stl_facet& facet = vol->mesh.stl.facet_start[f];
+
+ for (int i = 0; i < 3; ++i)
+ {
+ // original point
+ const stl_vertex& v = facet.vertex[i];
+ Pointf3 p((double)v.x, (double)v.y, (double)v.z);
+
+ // scale
+ p.x *= inst->scaling_factor;
+ p.y *= inst->scaling_factor;
+ p.z *= inst->scaling_factor;
+
+ // rotate Z
+ double x = p.x;
+ double y = p.y;
+ p.x = c * x - s * y;
+ p.y = s * x + c * y;
+
+ // translate
+ p.x += inst->offset.x;
+ p.y += inst->offset.y;
+
+ bb.merge(p);
+ }
+ }
+ }
+ }
+ }
+
+ return bb;
+}
+
// A mesh containing all transformed instances of this object.
TriangleMesh ModelObject::mesh() const
{
@@ -671,7 +772,7 @@ void ModelObject::transform(const float* matrix3x4)
v->mesh.transform(matrix3x4);
}
- origin_translation = Pointf3(0.0f, 0.0f, 0.0f);
+ origin_translation = Pointf3(0.0, 0.0, 0.0);
invalidate_bounding_box();
}
diff --git a/xs/src/libslic3r/Model.hpp b/xs/src/libslic3r/Model.hpp
index cf9bfd85a..bf7f60e36 100644
--- a/xs/src/libslic3r/Model.hpp
+++ b/xs/src/libslic3r/Model.hpp
@@ -102,8 +102,12 @@ public:
// Returns the bounding box of the transformed instances.
// This bounding box is approximate and not snug.
- BoundingBoxf3 bounding_box();
+ // This bounding box is being cached.
+ const BoundingBoxf3& bounding_box();
void invalidate_bounding_box() { m_bounding_box_valid = false; }
+ // Returns a snug bounding box of the transformed instances.
+ // This bounding box is not being cached.
+ BoundingBoxf3 tight_bounding_box(bool include_modifiers) const;
// A mesh containing all transformed instances of this object.
TriangleMesh mesh() const;
@@ -260,7 +264,10 @@ public:
void delete_material(t_model_material_id material_id);
void clear_materials();
bool add_default_instances();
- BoundingBoxf3 bounding_box();
+ // Returns approximate axis aligned bounding box of this model
+ BoundingBoxf3 bounding_box() const;
+ // Returns tight axis aligned bounding box of this model
+ BoundingBoxf3 transformed_bounding_box() const;
void center_instances_around_point(const Pointf &point);
void translate(coordf_t x, coordf_t y, coordf_t z) { for (ModelObject *o : this->objects) o->translate(x, y, z); }
TriangleMesh mesh() const;
@@ -273,6 +280,13 @@ public:
bool looks_like_multipart_object() const;
void convert_multipart_object();
+ // Ensures that the min z of the model is not negative
+ void adjust_min_z();
+
+ // Returs true if this model is contained into the print volume defined inside the given config
+ bool fits_print_volume(const DynamicPrintConfig* config) const;
+ bool fits_print_volume(const FullPrintConfig &config) const;
+
void print_info() const { for (const ModelObject *o : this->objects) o->print_info(); }
};
diff --git a/xs/src/libslic3r/Print.cpp b/xs/src/libslic3r/Print.cpp
index c689929c6..a3f5e231f 100644
--- a/xs/src/libslic3r/Print.cpp
+++ b/xs/src/libslic3r/Print.cpp
@@ -120,6 +120,7 @@ bool Print::invalidate_state_by_config_options(const std::vectorobjects) {
+ if (! print_volume.contains(po->model_object()->tight_bounding_box(false)))
+ return "Some objects are outside of the print volume.";
+ }
+
if (this->config.complete_objects) {
// Check horizontal clearance.
{
diff --git a/xs/src/libslic3r/PrintConfig.cpp b/xs/src/libslic3r/PrintConfig.cpp
index 4077668f8..d7ee1e591 100644
--- a/xs/src/libslic3r/PrintConfig.cpp
+++ b/xs/src/libslic3r/PrintConfig.cpp
@@ -803,6 +803,13 @@ PrintConfigDef::PrintConfigDef()
def->min = 0;
def->default_value = new ConfigOptionFloats { 0. };
+ def = this->add("max_print_height", coFloat);
+ def->label = L("Max print height");
+ def->tooltip = L("Set this to the maximum height that can be reached by your extruder while printing.");
+ def->sidetext = L("mm");
+ def->cli = "max-print-height=f";
+ def->default_value = new ConfigOptionFloat(200.0);
+
def = this->add("max_print_speed", coFloat);
def->label = L("Max print speed");
def->tooltip = L("When setting other speed settings to 0 Slic3r will autocalculate the optimal speed "
@@ -904,10 +911,17 @@ PrintConfigDef::PrintConfigDef()
def->cli = "octoprint-apikey=s";
def->default_value = new ConfigOptionString("");
+ def = this->add("octoprint_cafile", coString);
+ def->label = "HTTPS CA file";
+ def->tooltip = "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. "
+ "If left blank, the default OS CA certificate repository is used.";
+ def->cli = "octoprint-cafile=s";
+ def->default_value = new ConfigOptionString("");
+
def = this->add("octoprint_host", coString);
- def->label = L("Host or IP");
+ def->label = L("Hostname, IP or URL");
def->tooltip = L("Slic3r can upload G-code files to OctoPrint. This field should contain "
- "the hostname or IP address of the OctoPrint instance.");
+ "the hostname, IP address or URL of the OctoPrint instance.");
def->cli = "octoprint-host=s";
def->default_value = new ConfigOptionString("");
@@ -1513,12 +1527,10 @@ PrintConfigDef::PrintConfigDef()
def->enum_values.push_back("rectilinear");
def->enum_values.push_back("rectilinear-grid");
def->enum_values.push_back("honeycomb");
- def->enum_values.push_back("pillars");
def->enum_labels.push_back("rectilinear");
def->enum_labels.push_back("rectilinear grid");
def->enum_labels.push_back("honeycomb");
- def->enum_labels.push_back("pillars");
- def->default_value = new ConfigOptionEnum(smpPillars);
+ def->default_value = new ConfigOptionEnum(smpRectilinear);
def = this->add("support_material_spacing", coFloat);
def->label = L("Pattern spacing");
@@ -1790,6 +1802,9 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va
values is a dirty hack and will need to be removed sometime in the future, but it
will avoid lots of complaints for now. */
value = "0";
+ } else if (opt_key == "support_material_pattern" && value == "pillars") {
+ // Slic3r PE does not support the pillars. They never worked well.
+ value = "rectilinear";
} else if (opt_key == "support_material_threshold" && value == "0") {
// 0 used to be automatic threshold, but we introduced percent values so let's
// transform it into the default value
diff --git a/xs/src/libslic3r/PrintConfig.hpp b/xs/src/libslic3r/PrintConfig.hpp
index 7d2fb0145..cb94a7921 100644
--- a/xs/src/libslic3r/PrintConfig.hpp
+++ b/xs/src/libslic3r/PrintConfig.hpp
@@ -33,7 +33,7 @@ enum InfillPattern {
};
enum SupportMaterialPattern {
- smpRectilinear, smpRectilinearGrid, smpHoneycomb, smpPillars,
+ smpRectilinear, smpRectilinearGrid, smpHoneycomb,
};
enum SeamPosition {
@@ -87,7 +87,6 @@ template<> inline t_config_enum_values& ConfigOptionEnum
keys_map["rectilinear"] = smpRectilinear;
keys_map["rectilinear-grid"] = smpRectilinearGrid;
keys_map["honeycomb"] = smpHoneycomb;
- keys_map["pillars"] = smpPillars;
}
return keys_map;
}
@@ -583,6 +582,7 @@ public:
ConfigOptionFloats max_layer_height;
ConfigOptionInts min_fan_speed;
ConfigOptionFloats min_layer_height;
+ ConfigOptionFloat max_print_height;
ConfigOptionFloats min_print_speed;
ConfigOptionFloat min_skirt_length;
ConfigOptionString notes;
@@ -647,6 +647,7 @@ protected:
OPT_PTR(max_layer_height);
OPT_PTR(min_fan_speed);
OPT_PTR(min_layer_height);
+ OPT_PTR(max_print_height);
OPT_PTR(min_print_speed);
OPT_PTR(min_skirt_length);
OPT_PTR(notes);
@@ -684,6 +685,7 @@ class HostConfig : public StaticPrintConfig
public:
ConfigOptionString octoprint_host;
ConfigOptionString octoprint_apikey;
+ ConfigOptionString octoprint_cafile;
ConfigOptionString serial_port;
ConfigOptionInt serial_speed;
@@ -692,6 +694,7 @@ protected:
{
OPT_PTR(octoprint_host);
OPT_PTR(octoprint_apikey);
+ OPT_PTR(octoprint_cafile);
OPT_PTR(serial_port);
OPT_PTR(serial_speed);
}
diff --git a/xs/src/libslic3r/SupportMaterial.cpp b/xs/src/libslic3r/SupportMaterial.cpp
index b8df67ba6..0cecf0014 100644
--- a/xs/src/libslic3r/SupportMaterial.cpp
+++ b/xs/src/libslic3r/SupportMaterial.cpp
@@ -2491,7 +2491,6 @@ void PrintObjectSupportMaterial::generate_toolpaths(
infill_pattern = ipRectilinear;
break;
case smpHoneycomb:
- case smpPillars:
infill_pattern = ipHoneycomb;
break;
}
diff --git a/xs/src/perlglue.cpp b/xs/src/perlglue.cpp
index cb2ef7368..d7c9a590a 100644
--- a/xs/src/perlglue.cpp
+++ b/xs/src/perlglue.cpp
@@ -64,6 +64,7 @@ REGISTER_CLASS(PresetCollection, "GUI::PresetCollection");
REGISTER_CLASS(PresetBundle, "GUI::PresetBundle");
REGISTER_CLASS(PresetHints, "GUI::PresetHints");
REGISTER_CLASS(TabIface, "GUI::Tab");
+REGISTER_CLASS(OctoPrint, "OctoPrint");
SV* ConfigBase__as_hash(ConfigBase* THIS)
{
diff --git a/xs/src/slic3r/GUI/3DScene.cpp b/xs/src/slic3r/GUI/3DScene.cpp
index 04e7f7dc6..f6be96a78 100644
--- a/xs/src/slic3r/GUI/3DScene.cpp
+++ b/xs/src/slic3r/GUI/3DScene.cpp
@@ -46,6 +46,25 @@ void GLIndexedVertexArray::load_mesh_flat_shading(const TriangleMesh &mesh)
}
}
+void GLIndexedVertexArray::load_mesh_full_shading(const TriangleMesh &mesh)
+{
+ assert(triangle_indices.empty() && vertices_and_normals_interleaved_size == 0);
+ assert(quad_indices.empty() && triangle_indices_size == 0);
+ assert(vertices_and_normals_interleaved.size() % 6 == 0 && quad_indices_size == vertices_and_normals_interleaved.size());
+
+ this->vertices_and_normals_interleaved.reserve(this->vertices_and_normals_interleaved.size() + 3 * 3 * 2 * mesh.facets_count());
+
+ unsigned int vertices_count = 0;
+ for (int i = 0; i < mesh.stl.stats.number_of_facets; ++i) {
+ const stl_facet &facet = mesh.stl.facet_start[i];
+ for (int j = 0; j < 3; ++j)
+ this->push_geometry(facet.vertex[j].x, facet.vertex[j].y, facet.vertex[j].z, facet.normal.x, facet.normal.y, facet.normal.z);
+
+ this->push_triangle(vertices_count, vertices_count + 1, vertices_count + 2);
+ vertices_count += 3;
+ }
+}
+
void GLIndexedVertexArray::finalize_geometry(bool use_VBOs)
{
assert(this->vertices_and_normals_interleaved_VBO_id == 0);
@@ -173,6 +192,45 @@ void GLIndexedVertexArray::render(
glDisableClientState(GL_NORMAL_ARRAY);
}
+const float GLVolume::SELECTED_COLOR[4] = { 0.0f, 1.0f, 0.0f, 1.0f };
+const float GLVolume::HOVER_COLOR[4] = { 0.4f, 0.9f, 0.1f, 1.0f };
+const float GLVolume::OUTSIDE_COLOR[4] = { 0.75f, 0.0f, 0.75f, 1.0f };
+const float GLVolume::SELECTED_OUTSIDE_COLOR[4] = { 1.0f, 0.0f, 1.0f, 1.0f };
+
+void GLVolume::set_render_color(float r, float g, float b, float a)
+{
+ render_color[0] = r;
+ render_color[1] = g;
+ render_color[2] = b;
+ render_color[3] = a;
+}
+
+void GLVolume::set_render_color(const float* rgba, unsigned int size)
+{
+ size = std::min((unsigned int)4, size);
+ for (int i = 0; i < size; ++i)
+ {
+ render_color[i] = rgba[i];
+ }
+}
+
+void GLVolume::set_render_color()
+{
+ if (selected)
+ {
+ if (is_outside)
+ set_render_color(SELECTED_OUTSIDE_COLOR, 4);
+ else
+ set_render_color(SELECTED_COLOR, 4);
+ }
+ else if (hover)
+ set_render_color(HOVER_COLOR, 4);
+ else if (is_outside)
+ set_render_color(OUTSIDE_COLOR, 4);
+ else
+ set_render_color(color, 4);
+}
+
void GLVolume::set_range(double min_z, double max_z)
{
this->qverts_range.first = 0;
@@ -223,6 +281,51 @@ void GLVolume::render() const
glPopMatrix();
}
+void GLVolume::render_using_layer_height() const
+{
+ if (!is_active)
+ return;
+
+ GLint current_program_id;
+ glGetIntegerv(GL_CURRENT_PROGRAM, ¤t_program_id);
+
+ if ((layer_height_texture_data.shader_id > 0) && (layer_height_texture_data.shader_id != current_program_id))
+ glUseProgram(layer_height_texture_data.shader_id);
+
+ GLint z_to_texture_row_id = (layer_height_texture_data.shader_id > 0) ? glGetUniformLocation(layer_height_texture_data.shader_id, "z_to_texture_row") : -1;
+ GLint z_texture_row_to_normalized_id = (layer_height_texture_data.shader_id > 0) ? glGetUniformLocation(layer_height_texture_data.shader_id, "z_texture_row_to_normalized") : -1;
+ GLint z_cursor_id = (layer_height_texture_data.shader_id > 0) ? glGetUniformLocation(layer_height_texture_data.shader_id, "z_cursor") : -1;
+ GLint z_cursor_band_width_id = (layer_height_texture_data.shader_id > 0) ? glGetUniformLocation(layer_height_texture_data.shader_id, "z_cursor_band_width") : -1;
+
+ if (z_to_texture_row_id >= 0)
+ glUniform1f(z_to_texture_row_id, (GLfloat)layer_height_texture_z_to_row_id());
+
+ if (z_texture_row_to_normalized_id >= 0)
+ glUniform1f(z_texture_row_to_normalized_id, (GLfloat)(1.0f / layer_height_texture_height()));
+
+ if (z_cursor_id >= 0)
+ glUniform1f(z_cursor_id, (GLfloat)(bounding_box.max.z * layer_height_texture_data.z_cursor_relative));
+
+ if (z_cursor_band_width_id >= 0)
+ glUniform1f(z_cursor_band_width_id, (GLfloat)layer_height_texture_data.edit_band_width);
+
+ unsigned int w = layer_height_texture_width();
+ unsigned int h = layer_height_texture_height();
+
+ glBindTexture(GL_TEXTURE_2D, layer_height_texture_data.texture_id);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+ glTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA8, w / 2, h / 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, layer_height_texture_data_ptr_level0());
+ glTexSubImage2D(GL_TEXTURE_2D, 1, 0, 0, w / 2, h / 2, GL_RGBA, GL_UNSIGNED_BYTE, layer_height_texture_data_ptr_level1());
+
+ render();
+
+ glBindTexture(GL_TEXTURE_2D, 0);
+
+ if ((current_program_id > 0) && (layer_height_texture_data.shader_id != current_program_id))
+ glUseProgram(current_program_id);
+}
+
void GLVolume::generate_layer_height_texture(PrintObject *print_object, bool force)
{
GLTexture *tex = this->layer_height_texture.get();
@@ -288,7 +391,11 @@ std::vector GLVolumeCollection::load_object(
color[3] = model_volume->modifier ? 0.5f : 1.f;
this->volumes.emplace_back(new GLVolume(color));
GLVolume &v = *this->volumes.back();
- v.indexed_vertex_array.load_mesh_flat_shading(mesh);
+ if (use_VBOs)
+ v.indexed_vertex_array.load_mesh_full_shading(mesh);
+ else
+ v.indexed_vertex_array.load_mesh_flat_shading(mesh);
+
// finalize_geometry() clears the vertex arrays, therefore the bounding box has to be computed before finalize_geometry().
v.bounding_box = v.indexed_vertex_array.bounding_box();
v.indexed_vertex_array.finalize_geometry(use_VBOs);
@@ -319,7 +426,11 @@ int GLVolumeCollection::load_wipe_tower_preview(
this->volumes.emplace_back(new GLVolume(color));
GLVolume &v = *this->volumes.back();
auto mesh = make_cube(width, depth, height);
- v.indexed_vertex_array.load_mesh_flat_shading(mesh);
+ if (use_VBOs)
+ v.indexed_vertex_array.load_mesh_full_shading(mesh);
+ else
+ v.indexed_vertex_array.load_mesh_flat_shading(mesh);
+
v.origin = Pointf3(pos_x, pos_y, 0.);
// finalize_geometry() clears the vertex arrays, therefore the bounding box has to be computed before finalize_geometry().
v.bounding_box = v.indexed_vertex_array.bounding_box();
@@ -332,15 +443,19 @@ int GLVolumeCollection::load_wipe_tower_preview(
void GLVolumeCollection::render_VBOs() const
{
-// glEnable(GL_BLEND);
-// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glCullFace(GL_BACK);
- glEnableClientState(GL_VERTEX_ARRAY);
- glEnableClientState(GL_NORMAL_ARRAY);
+ ::glEnable(GL_BLEND);
+ ::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ ::glCullFace(GL_BACK);
+ ::glEnableClientState(GL_VERTEX_ARRAY);
+ ::glEnableClientState(GL_NORMAL_ARRAY);
GLint current_program_id;
- glGetIntegerv(GL_CURRENT_PROGRAM, ¤t_program_id);
+ ::glGetIntegerv(GL_CURRENT_PROGRAM, ¤t_program_id);
GLint color_id = (current_program_id > 0) ? glGetUniformLocation(current_program_id, "uniform_color") : -1;
+ GLint print_box_min_id = (current_program_id > 0) ? glGetUniformLocation(current_program_id, "print_box.min") : -1;
+ GLint print_box_max_id = (current_program_id > 0) ? glGetUniformLocation(current_program_id, "print_box.max") : -1;
+ GLint print_box_origin_id = (current_program_id > 0) ? glGetUniformLocation(current_program_id, "print_box.volume_origin") : -1;
for (GLVolume *volume : this->volumes) {
if (!volume->is_active)
@@ -348,61 +463,110 @@ void GLVolumeCollection::render_VBOs() const
if (!volume->indexed_vertex_array.vertices_and_normals_interleaved_VBO_id)
continue;
+
+ if (volume->layer_height_texture_data.can_use())
+ {
+ ::glDisableClientState(GL_VERTEX_ARRAY);
+ ::glDisableClientState(GL_NORMAL_ARRAY);
+ volume->generate_layer_height_texture(volume->layer_height_texture_data.print_object, false);
+ volume->render_using_layer_height();
+ ::glEnableClientState(GL_VERTEX_ARRAY);
+ ::glEnableClientState(GL_NORMAL_ARRAY);
+ continue;
+ }
+
+ volume->set_render_color();
+
GLsizei n_triangles = GLsizei(std::min(volume->indexed_vertex_array.triangle_indices_size, volume->tverts_range.second - volume->tverts_range.first));
GLsizei n_quads = GLsizei(std::min(volume->indexed_vertex_array.quad_indices_size, volume->qverts_range.second - volume->qverts_range.first));
if (n_triangles + n_quads == 0)
{
- if (_render_interleaved_only_volumes.enabled)
+ ::glDisableClientState(GL_VERTEX_ARRAY);
+ ::glDisableClientState(GL_NORMAL_ARRAY);
+
+ if (color_id >= 0)
{
- ::glDisableClientState(GL_VERTEX_ARRAY);
- ::glDisableClientState(GL_NORMAL_ARRAY);
- ::glEnable(GL_BLEND);
- ::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- if (color_id >= 0)
- {
- float color[4];
- ::memcpy((void*)color, (const void*)volume->color, 3 * sizeof(float));
- color[3] = _render_interleaved_only_volumes.alpha;
- ::glUniform4fv(color_id, 1, (const GLfloat*)color);
- }
- else
- ::glColor4f(volume->color[0], volume->color[1], volume->color[2], _render_interleaved_only_volumes.alpha);
-
- volume->render();
-
- ::glDisable(GL_BLEND);
- ::glEnableClientState(GL_VERTEX_ARRAY);
- ::glEnableClientState(GL_NORMAL_ARRAY);
+ float color[4];
+ ::memcpy((void*)color, (const void*)volume->render_color, 4 * sizeof(float));
+ ::glUniform4fv(color_id, 1, (const GLfloat*)color);
}
+ else
+ ::glColor4f(volume->render_color[0], volume->render_color[1], volume->render_color[2], volume->render_color[3]);
+
+ if (print_box_min_id != -1)
+ ::glUniform3fv(print_box_min_id, 1, (const GLfloat*)print_box_min);
+
+ if (print_box_max_id != -1)
+ ::glUniform3fv(print_box_max_id, 1, (const GLfloat*)print_box_max);
+
+ if (print_box_origin_id != -1)
+ {
+ float origin[4] = { (float)volume->origin.x, (float)volume->origin.y, (float)volume->origin.z, volume->outside_printer_detection_enabled ? 1.0f : 0.0f };
+ ::glUniform4fv(print_box_origin_id, 1, (const GLfloat*)origin);
+ }
+
+ volume->render();
+
+ ::glEnableClientState(GL_VERTEX_ARRAY);
+ ::glEnableClientState(GL_NORMAL_ARRAY);
+
continue;
}
+
if (color_id >= 0)
- glUniform4fv(color_id, 1, (const GLfloat*)volume->color);
+ ::glUniform4fv(color_id, 1, (const GLfloat*)volume->render_color);
else
- glColor4f(volume->color[0], volume->color[1], volume->color[2], volume->color[3]);
- glBindBuffer(GL_ARRAY_BUFFER, volume->indexed_vertex_array.vertices_and_normals_interleaved_VBO_id);
- glVertexPointer(3, GL_FLOAT, 6 * sizeof(float), (const void*)(3 * sizeof(float)));
- glNormalPointer(GL_FLOAT, 6 * sizeof(float), nullptr);
+ ::glColor4f(volume->render_color[0], volume->render_color[1], volume->render_color[2], volume->render_color[3]);
+
+ if (print_box_min_id != -1)
+ ::glUniform3fv(print_box_min_id, 1, (const GLfloat*)print_box_min);
+
+ if (print_box_max_id != -1)
+ ::glUniform3fv(print_box_max_id, 1, (const GLfloat*)print_box_max);
+
+ if (print_box_origin_id != -1)
+ {
+ float origin[4] = { (float)volume->origin.x, (float)volume->origin.y, (float)volume->origin.z, volume->outside_printer_detection_enabled ? 1.0f : 0.0f };
+ ::glUniform4fv(print_box_origin_id, 1, (const GLfloat*)origin);
+ }
+
+ ::glBindBuffer(GL_ARRAY_BUFFER, volume->indexed_vertex_array.vertices_and_normals_interleaved_VBO_id);
+ ::glVertexPointer(3, GL_FLOAT, 6 * sizeof(float), (const void*)(3 * sizeof(float)));
+ ::glNormalPointer(GL_FLOAT, 6 * sizeof(float), nullptr);
+
+ bool has_offset = (volume->origin.x != 0) || (volume->origin.y != 0) || (volume->origin.z != 0);
+ if (has_offset) {
+ ::glPushMatrix();
+ ::glTranslated(volume->origin.x, volume->origin.y, volume->origin.z);
+ }
+
if (n_triangles > 0) {
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, volume->indexed_vertex_array.triangle_indices_VBO_id);
- glDrawElements(GL_TRIANGLES, n_triangles, GL_UNSIGNED_INT, (const void*)(volume->tverts_range.first * 4));
+ ::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, volume->indexed_vertex_array.triangle_indices_VBO_id);
+ ::glDrawElements(GL_TRIANGLES, n_triangles, GL_UNSIGNED_INT, (const void*)(volume->tverts_range.first * 4));
}
if (n_quads > 0) {
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, volume->indexed_vertex_array.quad_indices_VBO_id);
- glDrawElements(GL_QUADS, n_quads, GL_UNSIGNED_INT, (const void*)(volume->qverts_range.first * 4));
+ ::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, volume->indexed_vertex_array.quad_indices_VBO_id);
+ ::glDrawElements(GL_QUADS, n_quads, GL_UNSIGNED_INT, (const void*)(volume->qverts_range.first * 4));
}
+
+ if (has_offset)
+ ::glPopMatrix();
}
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- glDisableClientState(GL_VERTEX_ARRAY);
- glDisableClientState(GL_NORMAL_ARRAY);
-// glDisable(GL_BLEND);
+ ::glBindBuffer(GL_ARRAY_BUFFER, 0);
+ ::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+
+ ::glDisableClientState(GL_VERTEX_ARRAY);
+ ::glDisableClientState(GL_NORMAL_ARRAY);
+
+ ::glDisable(GL_BLEND);
}
void GLVolumeCollection::render_legacy() const
{
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
glCullFace(GL_BACK);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
@@ -412,27 +576,25 @@ void GLVolumeCollection::render_legacy() const
if (!volume->is_active)
continue;
+ volume->set_render_color();
+
GLsizei n_triangles = GLsizei(std::min(volume->indexed_vertex_array.triangle_indices_size, volume->tverts_range.second - volume->tverts_range.first));
GLsizei n_quads = GLsizei(std::min(volume->indexed_vertex_array.quad_indices_size, volume->qverts_range.second - volume->qverts_range.first));
if (n_triangles + n_quads == 0)
{
- if (_render_interleaved_only_volumes.enabled)
- {
- ::glDisableClientState(GL_VERTEX_ARRAY);
- ::glDisableClientState(GL_NORMAL_ARRAY);
- ::glEnable(GL_BLEND);
- ::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ ::glDisableClientState(GL_VERTEX_ARRAY);
+ ::glDisableClientState(GL_NORMAL_ARRAY);
- ::glColor4f(volume->color[0], volume->color[1], volume->color[2], _render_interleaved_only_volumes.alpha);
- volume->render();
+ ::glColor4f(volume->render_color[0], volume->render_color[1], volume->render_color[2], volume->render_color[3]);
+ volume->render();
+
+ ::glEnableClientState(GL_VERTEX_ARRAY);
+ ::glEnableClientState(GL_NORMAL_ARRAY);
- ::glDisable(GL_BLEND);
- ::glEnableClientState(GL_VERTEX_ARRAY);
- ::glEnableClientState(GL_NORMAL_ARRAY);
- }
continue;
}
- glColor4f(volume->color[0], volume->color[1], volume->color[2], volume->color[3]);
+
+ glColor4f(volume->render_color[0], volume->render_color[1], volume->render_color[2], volume->render_color[3]);
glVertexPointer(3, GL_FLOAT, 6 * sizeof(float), volume->indexed_vertex_array.vertices_and_normals_interleaved.data() + 3);
glNormalPointer(GL_FLOAT, 6 * sizeof(float), volume->indexed_vertex_array.vertices_and_normals_interleaved.data());
bool has_offset = volume->origin.x != 0 || volume->origin.y != 0 || volume->origin.z != 0;
@@ -445,11 +607,37 @@ void GLVolumeCollection::render_legacy() const
if (n_quads > 0)
glDrawElements(GL_QUADS, n_quads, GL_UNSIGNED_INT, volume->indexed_vertex_array.quad_indices.data() + volume->qverts_range.first);
if (has_offset)
- glPushMatrix();
+ glPopMatrix();
}
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
+
+ glDisable(GL_BLEND);
+}
+
+void GLVolumeCollection::update_outside_state(const DynamicPrintConfig* config, bool all_inside)
+{
+ if (config == nullptr)
+ return;
+
+ const ConfigOptionPoints* opt = dynamic_cast(config->option("bed_shape"));
+ if (opt == nullptr)
+ return;
+
+ BoundingBox bed_box_2D = get_extents(Polygon::new_scale(opt->values));
+ BoundingBoxf3 print_volume(Pointf3(unscale(bed_box_2D.min.x), unscale(bed_box_2D.min.y), 0.0), Pointf3(unscale(bed_box_2D.max.x), unscale(bed_box_2D.max.y), config->opt_float("max_print_height")));
+
+ for (GLVolume* volume : this->volumes)
+ {
+ if (all_inside)
+ {
+ volume->is_outside = false;
+ continue;
+ }
+
+ volume->is_outside = !print_volume.contains(volume->transformed_bounding_box());
+ }
}
std::vector GLVolumeCollection::get_current_print_zs() const
@@ -1133,6 +1321,100 @@ static void point3_to_verts(const Point3& point, double width, double height, GL
_3DScene::GCodePreviewVolumeIndex _3DScene::s_gcode_preview_volume_index;
_3DScene::LegendTexture _3DScene::s_legend_texture;
+_3DScene::WarningTexture _3DScene::s_warning_texture;
+
+unsigned int _3DScene::TextureBase::finalize()
+{
+ if (!m_data.empty()) {
+ // sends buffer to gpu
+ ::glGenTextures(1, &m_tex_id);
+ ::glBindTexture(GL_TEXTURE_2D, m_tex_id);
+ ::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, (GLsizei)m_tex_width, (GLsizei)m_tex_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const GLvoid*)m_data.data());
+ ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1);
+ ::glBindTexture(GL_TEXTURE_2D, 0);
+ m_data.clear();
+ }
+ return (m_tex_width > 0 && m_tex_height > 0) ? m_tex_id : 0;
+}
+
+void _3DScene::TextureBase::_destroy_texture()
+{
+ if (m_tex_id > 0)
+ {
+ ::glDeleteTextures(1, &m_tex_id);
+ m_tex_id = 0;
+ m_tex_height = 0;
+ m_tex_width = 0;
+ }
+ m_data.clear();
+}
+
+
+const unsigned char _3DScene::WarningTexture::Background_Color[3] = { 9, 91, 134 };
+const unsigned char _3DScene::WarningTexture::Opacity = 255;
+
+// Generate a texture data, but don't load it into the GPU yet, as the GPU context may not yet be valid.
+bool _3DScene::WarningTexture::generate(const std::string& msg)
+{
+ // Mark the texture as released, but don't release the texture from the GPU yet.
+ m_tex_width = m_tex_height = 0;
+ m_data.clear();
+
+ if (msg.empty())
+ return false;
+
+ wxMemoryDC memDC;
+ // select default font
+ memDC.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
+
+ // calculates texture size
+ wxCoord w, h;
+ memDC.GetTextExtent(msg, &w, &h);
+ m_tex_width = (unsigned int)w;
+ m_tex_height = (unsigned int)h;
+
+ // generates bitmap
+ wxBitmap bitmap(m_tex_width, m_tex_height);
+
+#if defined(__APPLE__) || defined(_MSC_VER)
+ bitmap.UseAlpha();
+#endif
+
+ memDC.SelectObject(bitmap);
+ memDC.SetBackground(wxBrush(wxColour(Background_Color[0], Background_Color[1], Background_Color[2])));
+ memDC.Clear();
+
+ memDC.SetTextForeground(*wxWHITE);
+
+ // draw message
+ memDC.DrawText(msg, 0, 0);
+
+ memDC.SelectObject(wxNullBitmap);
+
+ // Convert the bitmap into a linear data ready to be loaded into the GPU.
+ {
+ wxImage image = bitmap.ConvertToImage();
+ image.SetMaskColour(Background_Color[0], Background_Color[1], Background_Color[2]);
+
+ // prepare buffer
+ m_data.assign(4 * m_tex_width * m_tex_height, 0);
+ for (unsigned int h = 0; h < m_tex_height; ++h)
+ {
+ unsigned int hh = h * m_tex_width;
+ unsigned char* px_ptr = m_data.data() + 4 * hh;
+ for (unsigned int w = 0; w < m_tex_width; ++w)
+ {
+ *px_ptr++ = image.GetRed(w, h);
+ *px_ptr++ = image.GetGreen(w, h);
+ *px_ptr++ = image.GetBlue(w, h);
+ *px_ptr++ = image.IsTransparent(w, h) ? 0 : Opacity;
+ }
+ }
+ }
+ return true;
+}
const unsigned char _3DScene::LegendTexture::Squares_Border_Color[3] = { 64, 64, 64 };
const unsigned char _3DScene::LegendTexture::Background_Color[3] = { 9, 91, 134 };
@@ -1276,34 +1558,6 @@ bool _3DScene::LegendTexture::generate(const GCodePreviewData& preview_data, con
return true;
}
-unsigned int _3DScene::LegendTexture::finalize()
-{
- if (! m_data.empty()) {
- // sends buffer to gpu
- ::glGenTextures(1, &m_tex_id);
- ::glBindTexture(GL_TEXTURE_2D, m_tex_id);
- ::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, (GLsizei)m_tex_width, (GLsizei)m_tex_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const GLvoid*)m_data.data());
- ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1);
- ::glBindTexture(GL_TEXTURE_2D, 0);
- m_data.clear();
- }
- return (m_tex_width > 0 && m_tex_height > 0) ? m_tex_id : 0;
-}
-
-void _3DScene::LegendTexture::_destroy_texture()
-{
- if (m_tex_id > 0)
- {
- ::glDeleteTextures(1, &m_tex_id);
- m_tex_id = 0;
- m_tex_height = 0;
- m_tex_width = 0;
- }
- m_data.clear();
-}
-
void _3DScene::_glew_init()
{
glewInit();
@@ -1353,27 +1607,17 @@ void _3DScene::load_gcode_preview(const Print* print, const GCodePreviewData* pr
_load_gcode_unretractions(*preview_data, *volumes, use_VBOs);
if (volumes->empty())
- {
reset_legend_texture();
- volumes->set_render_interleaved_only_volumes(GLVolumeCollection::RenderInterleavedOnlyVolumes(false, 0.0f));
- }
else
{
_generate_legend_texture(*preview_data, tool_colors);
-
_load_shells(*print, *volumes, use_VBOs);
- volumes->set_render_interleaved_only_volumes(GLVolumeCollection::RenderInterleavedOnlyVolumes(true, 0.25f));
}
}
_update_gcode_volumes_visibility(*preview_data, *volumes);
}
-unsigned int _3DScene::get_legend_texture_id()
-{
- return s_legend_texture.get_texture_id();
-}
-
unsigned int _3DScene::get_legend_texture_width()
{
return s_legend_texture.get_texture_width();
@@ -1389,6 +1633,36 @@ void _3DScene::reset_legend_texture()
s_legend_texture.reset_texture();
}
+unsigned int _3DScene::finalize_legend_texture()
+{
+ return s_legend_texture.finalize();
+}
+
+unsigned int _3DScene::get_warning_texture_width()
+{
+ return s_warning_texture.get_texture_width();
+}
+
+unsigned int _3DScene::get_warning_texture_height()
+{
+ return s_warning_texture.get_texture_height();
+}
+
+void _3DScene::generate_warning_texture(const std::string& msg)
+{
+ s_warning_texture.generate(msg);
+}
+
+void _3DScene::reset_warning_texture()
+{
+ s_warning_texture.reset_texture();
+}
+
+unsigned int _3DScene::finalize_warning_texture()
+{
+ return s_warning_texture.finalize();
+}
+
// Create 3D thick extrusion lines for a skirt and brim.
// Adds a new Slic3r::GUI::3DScene::Volume to volumes.
void _3DScene::_load_print_toolpaths(
@@ -1501,6 +1775,7 @@ void _3DScene::_load_print_object_toolpaths(
auto new_volume = [volumes, &new_volume_mutex](const float *color) -> GLVolume* {
auto *volume = new GLVolume(color);
new_volume_mutex.lock();
+ volume->outside_printer_detection_enabled = false;
volumes->volumes.emplace_back(volume);
new_volume_mutex.unlock();
return volume;
@@ -1651,6 +1926,7 @@ void _3DScene::_load_wipe_tower_toolpaths(
auto new_volume = [volumes, &new_volume_mutex](const float *color) -> GLVolume* {
auto *volume = new GLVolume(color);
new_volume_mutex.lock();
+ volume->outside_printer_detection_enabled = false;
volumes->volumes.emplace_back(volume);
new_volume_mutex.unlock();
return volume;
@@ -2221,6 +2497,7 @@ void _3DScene::_update_gcode_volumes_visibility(const GCodePreviewData& preview_
for (std::vector::iterator it = begin; it != end; ++it)
{
GLVolume* volume = *it;
+ volume->outside_printer_detection_enabled = false;
switch (s_gcode_preview_volume_index.first_volumes[i].type)
{
@@ -2253,6 +2530,7 @@ void _3DScene::_update_gcode_volumes_visibility(const GCodePreviewData& preview_
case GCodePreviewVolumeIndex::Shell:
{
volume->is_active = preview_data.shell.is_visible;
+ volume->color[3] = 0.25f;
volume->zoom_to_volumes = false;
break;
}
@@ -2272,11 +2550,6 @@ void _3DScene::_generate_legend_texture(const GCodePreviewData& preview_data, co
s_legend_texture.generate(preview_data, tool_colors);
}
-unsigned int _3DScene::finalize_legend_texture()
-{
- return s_legend_texture.finalize();
-}
-
void _3DScene::_load_shells(const Print& print, GLVolumeCollection& volumes, bool use_VBOs)
{
size_t initial_volumes_count = volumes.volumes.size();
diff --git a/xs/src/slic3r/GUI/3DScene.hpp b/xs/src/slic3r/GUI/3DScene.hpp
index 3e26bf6d3..0fd31d8d6 100644
--- a/xs/src/slic3r/GUI/3DScene.hpp
+++ b/xs/src/slic3r/GUI/3DScene.hpp
@@ -16,6 +16,7 @@ class PrintObject;
class Model;
class ModelObject;
class GCodePreviewData;
+class DynamicPrintConfig;
// A container for interleaved arrays of 3D vertices and normals,
// possibly indexed by triangles and / or quads.
@@ -85,6 +86,7 @@ public:
unsigned int quad_indices_VBO_id;
void load_mesh_flat_shading(const TriangleMesh &mesh);
+ void load_mesh_full_shading(const TriangleMesh &mesh);
inline bool has_VBOs() const { return vertices_and_normals_interleaved_VBO_id != 0; }
@@ -208,7 +210,38 @@ public:
};
class GLVolume {
+ struct LayerHeightTextureData
+ {
+ // ID of the layer height texture
+ unsigned int texture_id;
+ // ID of the shader used to render with the layer height texture
+ unsigned int shader_id;
+ // The print object to update when generating the layer height texture
+ PrintObject* print_object;
+
+ float z_cursor_relative;
+ float edit_band_width;
+
+ LayerHeightTextureData() { reset(); }
+
+ void reset()
+ {
+ texture_id = 0;
+ shader_id = 0;
+ print_object = nullptr;
+ z_cursor_relative = 0.0f;
+ edit_band_width = 0.0f;
+ }
+
+ bool can_use() { return (texture_id > 0) && (shader_id > 0) && (print_object != nullptr); }
+ };
+
public:
+ static const float SELECTED_COLOR[4];
+ static const float HOVER_COLOR[4];
+ static const float OUTSIDE_COLOR[4];
+ static const float SELECTED_OUTSIDE_COLOR[4];
+
GLVolume(float r = 1.f, float g = 1.f, float b = 1.f, float a = 1.f) :
composite_id(-1),
select_group_id(-1),
@@ -216,6 +249,8 @@ public:
selected(false),
is_active(true),
zoom_to_volumes(true),
+ outside_printer_detection_enabled(true),
+ is_outside(false),
hover(false),
tverts_range(0, size_t(-1)),
qverts_range(0, size_t(-1))
@@ -224,6 +259,7 @@ public:
color[1] = g;
color[2] = b;
color[3] = a;
+ set_render_color(r, g, b, a);
}
GLVolume(const float *rgba) : GLVolume(rgba[0], rgba[1], rgba[2], rgba[3]) {}
@@ -243,7 +279,8 @@ public:
Pointf3 origin;
// Color of the triangles / quads held by this volume.
float color[4];
-
+ // Color used to render this volume.
+ float render_color[4];
// An ID containing the object ID, volume ID and instance ID.
int composite_id;
// An ID for group selection. It may be the same for all meshes of all object instances, or for just a single object instance.
@@ -256,6 +293,10 @@ public:
bool is_active;
// Whether or not to use this volume when applying zoom_to_volumes()
bool zoom_to_volumes;
+ // Wheter or not this volume is enabled for outside print volume detection.
+ bool outside_printer_detection_enabled;
+ // Wheter or not this volume is outside print volume.
+ bool is_outside;
// Boolean: Is mouse over this object?
bool hover;
@@ -271,6 +312,10 @@ public:
// Offset into qverts & tverts, or offsets into indices stored into an OpenGL name_index_buffer.
std::vector offsets;
+ void set_render_color(float r, float g, float b, float a);
+ void set_render_color(const float* rgba, unsigned int size);
+ // Sets render color in dependence of current state
+ void set_render_color();
int object_idx() const { return this->composite_id / 1000000; }
int volume_idx() const { return (this->composite_id / 1000) % 1000; }
@@ -282,11 +327,14 @@ public:
void set_range(coordf_t low, coordf_t high);
void render() const;
+ void render_using_layer_height() const;
void finalize_geometry(bool use_VBOs) { this->indexed_vertex_array.finalize_geometry(use_VBOs); }
void release_geometry() { this->indexed_vertex_array.release_geometry(); }
/************************************************ Layer height texture ****************************************************/
std::shared_ptr layer_height_texture;
+ // Data to render this volume using the layer height texture
+ LayerHeightTextureData layer_height_texture_data;
bool has_layer_height_texture() const
{ return this->layer_height_texture.get() != nullptr; }
@@ -296,11 +344,11 @@ public:
{ return (this->layer_height_texture.get() == nullptr) ? 0 : this->layer_height_texture->height; }
size_t layer_height_texture_cells() const
{ return (this->layer_height_texture.get() == nullptr) ? 0 : this->layer_height_texture->cells; }
- void* layer_height_texture_data_ptr_level0() {
+ void* layer_height_texture_data_ptr_level0() const {
return (layer_height_texture.get() == nullptr) ? 0 :
(void*)layer_height_texture->data.data();
}
- void* layer_height_texture_data_ptr_level1() {
+ void* layer_height_texture_data_ptr_level1() const {
return (layer_height_texture.get() == nullptr) ? 0 :
(void*)(layer_height_texture->data.data() + layer_height_texture->width * layer_height_texture->height * 4);
}
@@ -309,31 +357,24 @@ public:
double(this->layer_height_texture->cells - 1) / (double(this->layer_height_texture->width) * bounding_box.max.z);
}
void generate_layer_height_texture(PrintObject *print_object, bool force);
+
+ void set_layer_height_texture_data(unsigned int texture_id, unsigned int shader_id, PrintObject* print_object, float z_cursor_relative, float edit_band_width)
+ {
+ layer_height_texture_data.texture_id = texture_id;
+ layer_height_texture_data.shader_id = shader_id;
+ layer_height_texture_data.print_object = print_object;
+ layer_height_texture_data.z_cursor_relative = z_cursor_relative;
+ layer_height_texture_data.edit_band_width = edit_band_width;
+ }
+
+ void reset_layer_height_texture_data() { layer_height_texture_data.reset(); }
};
class GLVolumeCollection
{
-public:
- struct RenderInterleavedOnlyVolumes
- {
- bool enabled;
- float alpha; // [0..1]
-
- RenderInterleavedOnlyVolumes()
- : enabled(false)
- , alpha(0.0f)
- {
- }
-
- RenderInterleavedOnlyVolumes(bool enabled, float alpha)
- : enabled(enabled)
- , alpha(alpha)
- {
- }
- };
-
-private:
- RenderInterleavedOnlyVolumes _render_interleaved_only_volumes;
+ // min and max vertex of the print box volume
+ float print_box_min[3];
+ float print_box_max[3];
public:
std::vector volumes;
@@ -370,7 +411,12 @@ public:
bool empty() const { return volumes.empty(); }
void set_range(double low, double high) { for (GLVolume *vol : this->volumes) vol->set_range(low, high); }
- void set_render_interleaved_only_volumes(const RenderInterleavedOnlyVolumes& render_interleaved_only_volumes) { _render_interleaved_only_volumes = render_interleaved_only_volumes; }
+ void set_print_box(float min_x, float min_y, float min_z, float max_x, float max_y, float max_z) {
+ print_box_min[0] = min_x; print_box_min[1] = min_y; print_box_min[2] = min_z;
+ print_box_max[0] = max_x; print_box_max[1] = max_y; print_box_max[2] = max_z;
+ }
+
+ void update_outside_state(const DynamicPrintConfig* config, bool all_inside);
// Returns a vector containing the sorted list of all the print_zs of the volumes contained in this collection
std::vector get_current_print_zs() const;
@@ -411,27 +457,20 @@ class _3DScene
static GCodePreviewVolumeIndex s_gcode_preview_volume_index;
- class LegendTexture
+ class TextureBase
{
- static const unsigned int Px_Title_Offset = 5;
- static const unsigned int Px_Text_Offset = 5;
- static const unsigned int Px_Square = 20;
- static const unsigned int Px_Square_Contour = 1;
- static const unsigned int Px_Border = Px_Square / 2;
- static const unsigned char Squares_Border_Color[3];
- static const unsigned char Background_Color[3];
- static const unsigned char Opacity;
-
+ protected:
unsigned int m_tex_id;
unsigned int m_tex_width;
unsigned int m_tex_height;
+ // generate() fills in m_data with the pixels, while finalize() moves the data to the GPU before rendering.
+ std::vector m_data;
+
public:
- LegendTexture() : m_tex_id(0), m_tex_width(0), m_tex_height(0) {}
- ~LegendTexture() { _destroy_texture(); }
-
- // Generate a texture data, but don't load it into the GPU yet, as the glcontext may not be valid yet.
- bool generate(const GCodePreviewData& preview_data, const std::vector& tool_colors);
+ TextureBase() : m_tex_id(0), m_tex_width(0), m_tex_height(0) {}
+ virtual ~TextureBase() { _destroy_texture(); }
+
// If not loaded, load the texture data into the GPU. Return a texture ID or 0 if the texture has zero size.
unsigned int finalize();
@@ -442,26 +481,61 @@ class _3DScene
void reset_texture() { _destroy_texture(); }
private:
- bool _create_texture(const GCodePreviewData& preview_data, const wxBitmap& bitmap);
void _destroy_texture();
- // generate() fills in m_data with the pixels, while finalize() moves the data to the GPU before rendering.
- std::vector m_data;
+ };
+
+ class WarningTexture : public TextureBase
+ {
+ static const unsigned char Background_Color[3];
+ static const unsigned char Opacity;
+
+ public:
+ WarningTexture() : TextureBase() {}
+
+ // Generate a texture data, but don't load it into the GPU yet, as the glcontext may not be valid yet.
+ bool generate(const std::string& msg);
+ };
+
+ class LegendTexture : public TextureBase
+ {
+ static const unsigned int Px_Title_Offset = 5;
+ static const unsigned int Px_Text_Offset = 5;
+ static const unsigned int Px_Square = 20;
+ static const unsigned int Px_Square_Contour = 1;
+ static const unsigned int Px_Border = Px_Square / 2;
+ static const unsigned char Squares_Border_Color[3];
+ static const unsigned char Background_Color[3];
+ static const unsigned char Opacity;
+
+ public:
+ LegendTexture() : TextureBase() {}
+
+ // Generate a texture data, but don't load it into the GPU yet, as the glcontext may not be valid yet.
+ bool generate(const GCodePreviewData& preview_data, const std::vector& tool_colors);
};
static LegendTexture s_legend_texture;
+ static WarningTexture s_warning_texture;
public:
static void _glew_init();
static void load_gcode_preview(const Print* print, const GCodePreviewData* preview_data, GLVolumeCollection* volumes, const std::vector& str_tool_colors, bool use_VBOs);
- static unsigned int get_legend_texture_id();
static unsigned int get_legend_texture_width();
static unsigned int get_legend_texture_height();
static void reset_legend_texture();
static unsigned int finalize_legend_texture();
+ static unsigned int get_warning_texture_width();
+ static unsigned int get_warning_texture_height();
+
+ // generates a warning texture containing the given message
+ static void generate_warning_texture(const std::string& msg);
+ static void reset_warning_texture();
+ static unsigned int finalize_warning_texture();
+
static void _load_print_toolpaths(
const Print *print,
GLVolumeCollection *volumes,
diff --git a/xs/src/slic3r/GUI/BonjourDialog.cpp b/xs/src/slic3r/GUI/BonjourDialog.cpp
new file mode 100644
index 000000000..34fac9a91
--- /dev/null
+++ b/xs/src/slic3r/GUI/BonjourDialog.cpp
@@ -0,0 +1,200 @@
+#include "slic3r/Utils/Bonjour.hpp" // On Windows, boost needs to be included before wxWidgets headers
+
+#include "BonjourDialog.hpp"
+
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+
+#include "slic3r/GUI/GUI.hpp"
+#include "slic3r/Utils/Bonjour.hpp"
+
+
+namespace Slic3r {
+
+
+struct BonjourReplyEvent : public wxEvent
+{
+ BonjourReply reply;
+
+ BonjourReplyEvent(wxEventType eventType, int winid, BonjourReply &&reply) :
+ wxEvent(winid, eventType),
+ reply(std::move(reply))
+ {}
+
+ virtual wxEvent *Clone() const
+ {
+ return new BonjourReplyEvent(*this);
+ }
+};
+
+wxDEFINE_EVENT(EVT_BONJOUR_REPLY, BonjourReplyEvent);
+
+wxDECLARE_EVENT(EVT_BONJOUR_COMPLETE, wxCommandEvent);
+wxDEFINE_EVENT(EVT_BONJOUR_COMPLETE, wxCommandEvent);
+
+class ReplySet: public std::set {};
+
+struct LifetimeGuard
+{
+ std::mutex mutex;
+ BonjourDialog *dialog;
+
+ LifetimeGuard(BonjourDialog *dialog) : dialog(dialog) {}
+};
+
+
+BonjourDialog::BonjourDialog(wxWindow *parent) :
+ wxDialog(parent, wxID_ANY, _(L("Network lookup"))),
+ list(new wxListView(this, wxID_ANY, wxDefaultPosition, wxSize(800, 300))),
+ replies(new ReplySet),
+ label(new wxStaticText(this, wxID_ANY, "")),
+ timer(new wxTimer()),
+ timer_state(0)
+{
+ wxBoxSizer *vsizer = new wxBoxSizer(wxVERTICAL);
+
+ vsizer->Add(label, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 10);
+
+ list->SetSingleStyle(wxLC_SINGLE_SEL);
+ list->SetSingleStyle(wxLC_SORT_DESCENDING);
+ list->AppendColumn(_(L("Address")), wxLIST_FORMAT_LEFT, 50);
+ list->AppendColumn(_(L("Hostname")), wxLIST_FORMAT_LEFT, 100);
+ list->AppendColumn(_(L("Service name")), wxLIST_FORMAT_LEFT, 200);
+ list->AppendColumn(_(L("OctoPrint version")), wxLIST_FORMAT_LEFT, 50);
+
+ vsizer->Add(list, 1, wxEXPAND | wxALL, 10);
+
+ wxBoxSizer *button_sizer = new wxBoxSizer(wxHORIZONTAL);
+ button_sizer->Add(new wxButton(this, wxID_OK, "OK"), 0, wxALL, 10);
+ button_sizer->Add(new wxButton(this, wxID_CANCEL, "Cancel"), 0, wxALL, 10);
+ // ^ Note: The Ok/Cancel labels are translated by wxWidgets
+
+ vsizer->Add(button_sizer, 0, wxALIGN_CENTER);
+ SetSizerAndFit(vsizer);
+
+ Bind(EVT_BONJOUR_REPLY, &BonjourDialog::on_reply, this);
+
+ Bind(EVT_BONJOUR_COMPLETE, [this](wxCommandEvent &) {
+ this->timer_state = 0;
+ });
+
+ Bind(wxEVT_TIMER, &BonjourDialog::on_timer, this);
+}
+
+BonjourDialog::~BonjourDialog()
+{
+ // Needed bacuse of forward defs
+}
+
+bool BonjourDialog::show_and_lookup()
+{
+ Show(); // Because we need GetId() to work before ShowModal()
+
+ timer->Stop();
+ timer->SetOwner(this);
+ timer_state = 1;
+ timer->Start(1000);
+ wxTimerEvent evt_dummy;
+ on_timer(evt_dummy);
+
+ // The background thread needs to queue messages for this dialog
+ // and for that it needs a valid pointer to it (mandated by the wxWidgets API).
+ // Here we put the pointer under a shared_ptr and protect it by a mutex,
+ // so that both threads can access it safely.
+ auto dguard = std::make_shared(this);
+
+ bonjour = std::move(Bonjour("octoprint")
+ .set_retries(3)
+ .set_timeout(4)
+ .on_reply([dguard](BonjourReply &&reply) {
+ std::lock_guard lock_guard(dguard->mutex);
+ auto dialog = dguard->dialog;
+ if (dialog != nullptr) {
+ auto evt = new BonjourReplyEvent(EVT_BONJOUR_REPLY, dialog->GetId(), std::move(reply));
+ wxQueueEvent(dialog, evt);
+ }
+ })
+ .on_complete([dguard]() {
+ std::lock_guard lock_guard(dguard->mutex);
+ auto dialog = dguard->dialog;
+ if (dialog != nullptr) {
+ auto evt = new wxCommandEvent(EVT_BONJOUR_COMPLETE, dialog->GetId());
+ wxQueueEvent(dialog, evt);
+ }
+ })
+ .lookup()
+ );
+
+ bool res = ShowModal() == wxID_OK && list->GetFirstSelected() >= 0;
+ {
+ // Tell the background thread the dialog is going away...
+ std::lock_guard lock_guard(dguard->mutex);
+ dguard->dialog = nullptr;
+ }
+ return res;
+}
+
+wxString BonjourDialog::get_selected() const
+{
+ auto sel = list->GetFirstSelected();
+ return sel >= 0 ? list->GetItemText(sel) : wxString();
+}
+
+
+// Private
+
+void BonjourDialog::on_reply(BonjourReplyEvent &e)
+{
+ if (replies->find(e.reply) != replies->end()) {
+ // We already have this reply
+ return;
+ }
+
+ replies->insert(std::move(e.reply));
+
+ auto selected = get_selected();
+ list->DeleteAllItems();
+
+ // The whole list is recreated so that we benefit from it already being sorted in the set.
+ // (And also because wxListView's sorting API is bananas.)
+ for (const auto &reply : *replies) {
+ auto item = list->InsertItem(0, reply.full_address);
+ list->SetItem(item, 1, reply.hostname);
+ list->SetItem(item, 2, reply.service_name);
+ list->SetItem(item, 3, reply.version);
+ }
+
+ for (int i = 0; i < 4; i++) {
+ this->list->SetColumnWidth(i, wxLIST_AUTOSIZE);
+ if (this->list->GetColumnWidth(i) < 100) { this->list->SetColumnWidth(i, 100); }
+ }
+
+ if (!selected.IsEmpty()) {
+ // Attempt to preserve selection
+ auto hit = list->FindItem(-1, selected);
+ if (hit >= 0) { list->SetItemState(hit, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); }
+ }
+}
+
+void BonjourDialog::on_timer(wxTimerEvent &)
+{
+ const auto search_str = _(L("Searching for devices"));
+
+ if (timer_state > 0) {
+ const std::string dots(timer_state, '.');
+ label->SetLabel(wxString::Format("%s %s", search_str, dots));
+ timer_state = (timer_state) % 3 + 1;
+ } else {
+ label->SetLabel(wxString::Format("%s: %s", search_str, _(L("Finished."))));
+ timer->Stop();
+ }
+}
+
+
+}
diff --git a/xs/src/slic3r/GUI/BonjourDialog.hpp b/xs/src/slic3r/GUI/BonjourDialog.hpp
new file mode 100644
index 000000000..e3f53790b
--- /dev/null
+++ b/xs/src/slic3r/GUI/BonjourDialog.hpp
@@ -0,0 +1,49 @@
+#ifndef slic3r_BonjourDialog_hpp_
+#define slic3r_BonjourDialog_hpp_
+
+#include
+
+#include
+
+class wxListView;
+class wxStaticText;
+class wxTimer;
+class wxTimerEvent;
+
+
+namespace Slic3r {
+
+class Bonjour;
+class BonjourReplyEvent;
+class ReplySet;
+
+
+class BonjourDialog: public wxDialog
+{
+public:
+ BonjourDialog(wxWindow *parent);
+ BonjourDialog(BonjourDialog &&) = delete;
+ BonjourDialog(const BonjourDialog &) = delete;
+ BonjourDialog &operator=(BonjourDialog &&) = delete;
+ BonjourDialog &operator=(const BonjourDialog &) = delete;
+ ~BonjourDialog();
+
+ bool show_and_lookup();
+ wxString get_selected() const;
+private:
+ wxListView *list;
+ std::unique_ptr replies;
+ wxStaticText *label;
+ std::shared_ptr bonjour;
+ std::unique_ptr timer;
+ unsigned timer_state;
+
+ void on_reply(BonjourReplyEvent &);
+ void on_timer(wxTimerEvent &);
+};
+
+
+
+}
+
+#endif
diff --git a/xs/src/slic3r/GUI/Field.cpp b/xs/src/slic3r/GUI/Field.cpp
index 045c55d96..c2fc5e4e4 100644
--- a/xs/src/slic3r/GUI/Field.cpp
+++ b/xs/src/slic3r/GUI/Field.cpp
@@ -18,6 +18,17 @@ namespace Slic3r { namespace GUI {
wxNumberFormatter::ToString(value, precision, wxNumberFormatter::Style_None);
}
+ void Field::PostInitialize(){
+ m_Undo_btn = new wxButton(m_parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
+ // use bouth of temporary_icons till don't have "undo_icon"
+ auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
+ if (wxMSW) m_Undo_btn->SetBackgroundColour(color);
+ m_Undo_btn->SetBitmap(wxBitmap(from_u8(var("bullet_white.png")), wxBITMAP_TYPE_PNG));
+ m_Undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent){ on_back_to_initial_value(); }));
+
+ BUILD();
+ }
+
void Field::on_kill_focus(wxEvent& event) {
// Without this, there will be nasty focus bugs on Windows.
// Also, docs for wxEvent::Skip() say "In general, it is recommended to skip all
@@ -34,6 +45,12 @@ namespace Slic3r { namespace GUI {
m_on_change(m_opt_id, get_value());
}
+ void Field::on_back_to_initial_value()
+ {
+ if (m_back_to_initial_value != nullptr && m_is_modified_value)
+ m_back_to_initial_value(m_opt_id);
+ }
+
wxString Field::get_tooltip_text(const wxString& default_string)
{
wxString tooltip_text("");
@@ -187,6 +204,17 @@ void CheckBox::BUILD() {
window = dynamic_cast(temp);
}
+boost::any CheckBox::get_value()
+{
+ boost::any ret_val;
+ bool value = dynamic_cast(window)->GetValue();
+ if (m_opt.type == coBool)
+ ret_val = static_cast(value);
+ else
+ ret_val = static_cast(value);
+ return ret_val;
+}
+
int undef_spin_val = -9999; //! Probably, It's not necessary
void SpinCtrl::BUILD() {
@@ -217,8 +245,13 @@ void SpinCtrl::BUILD() {
break;
}
+ const int min_val = m_opt_id == "standby_temperature_delta" ?
+ -500 : m_opt.min > 0 ?
+ m_opt.min : 0;
+ const int max_val = m_opt.max < 2147483647 ? m_opt.max : 2147483647;
+
auto temp = new wxSpinCtrl(m_parent, wxID_ANY, text_value, wxDefaultPosition, size,
- 0, m_opt.min >0 ? m_opt.min : 0, m_opt.max < 2147483647 ? m_opt.max : 2147483647, default_value);
+ 0, min_val, max_val, default_value);
temp->Bind(wxEVT_SPINCTRL, ([this](wxCommandEvent e) { tmp_value = undef_spin_val; on_change_field(); }), temp->GetId());
temp->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) { tmp_value = undef_spin_val; on_kill_focus(e); }), temp->GetId());
@@ -228,7 +261,7 @@ void SpinCtrl::BUILD() {
// # when it was changed from the text control, so the on_change callback
// # gets the old one, and on_kill_focus resets the control to the old value.
// # As a workaround, we get the new value from $event->GetString and store
-// # here temporarily so that we can return it from $self->get_value
+// # here temporarily so that we can return it from $self->get_value
std::string value = e.GetString().utf8_str().data();
if (is_matched(value, "^\\d+$"))
tmp_value = std::stoi(value);
@@ -261,8 +294,10 @@ void Choice::BUILD() {
if (m_opt.enum_labels.empty() && m_opt.enum_values.empty()){
}
else{
- for (auto el : m_opt.enum_labels.empty() ? m_opt.enum_values : m_opt.enum_labels)
- temp->Append(wxString(el));
+ for (auto el : m_opt.enum_labels.empty() ? m_opt.enum_values : m_opt.enum_labels){
+ const wxString& str = m_opt_id == "support" ? L_str(el) : el;
+ temp->Append(str);
+ }
set_selection();
}
temp->Bind(wxEVT_TEXT, ([this](wxCommandEvent e) { on_change_field(); }), temp->GetId());
@@ -330,9 +365,9 @@ void Choice::set_selection()
}
}
-void Choice::set_value(const std::string value) //! Redundant?
+void Choice::set_value(const std::string value, bool change_event) //! Redundant?
{
- m_disable_change_event = true;
+ m_disable_change_event = !change_event;
size_t idx=0;
for (auto el : m_opt.enum_values)
@@ -349,9 +384,9 @@ void Choice::set_value(const std::string value) //! Redundant?
m_disable_change_event = false;
}
-void Choice::set_value(boost::any value)
+void Choice::set_value(boost::any value, bool change_event)
{
- m_disable_change_event = true;
+ m_disable_change_event = !change_event;
switch (m_opt.type){
case coInt:
@@ -394,7 +429,7 @@ void Choice::set_values(const std::vector values)
return;
m_disable_change_event = true;
-// # it looks that Clear() also clears the text field in recent wxWidgets versions,
+// # it looks that Clear() also clears the text field in recent wxWidgets versions,
// # but we want to preserve it
auto ww = dynamic_cast(window);
auto value = ww->GetValue();
@@ -411,6 +446,9 @@ boost::any Choice::get_value()
boost::any ret_val;
wxString ret_str = static_cast(window)->GetValue();
+ if (m_opt_id == "support")
+ return ret_str;
+
if (m_opt.type != coEnum)
ret_val = get_value_by_opt_type(ret_str);
else
@@ -503,9 +541,9 @@ void PointCtrl::BUILD()
y_textctrl->SetToolTip(get_tooltip_text(X+", "+Y));
}
-void PointCtrl::set_value(const Pointf value)
+void PointCtrl::set_value(const Pointf value, bool change_event)
{
- m_disable_change_event = true;
+ m_disable_change_event = !change_event;
double val = value.x;
x_textctrl->SetValue(val - int(val) == 0 ? wxString::Format(_T("%i"), int(val)) : wxNumberFormatter::ToString(val, 2, wxNumberFormatter::Style_None));
@@ -515,7 +553,7 @@ void PointCtrl::set_value(const Pointf value)
m_disable_change_event = false;
}
-void PointCtrl::set_value(boost::any value)
+void PointCtrl::set_value(boost::any value, bool change_event)
{
Pointf pt;
Pointf *ptf = boost::any_cast(&value);
@@ -541,7 +579,7 @@ void PointCtrl::set_value(boost::any value)
// return;
// }
// }
- set_value(pt);
+ set_value(pt, change_event);
}
boost::any PointCtrl::get_value()
diff --git a/xs/src/slic3r/GUI/Field.hpp b/xs/src/slic3r/GUI/Field.hpp
index 492629b41..2ddb5d9f8 100644
--- a/xs/src/slic3r/GUI/Field.hpp
+++ b/xs/src/slic3r/GUI/Field.hpp
@@ -18,6 +18,13 @@
//#include "slic3r_gui.hpp"
#include "GUI.hpp"
+#include "Utils.hpp"
+
+#ifdef __WXMSW__
+#define wxMSW true
+#else
+#define wxMSW false
+#endif
namespace Slic3r { namespace GUI {
@@ -25,13 +32,14 @@ class Field;
using t_field = std::unique_ptr;
using t_kill_focus = std::function;
using t_change = std::function;
+using t_back_to_init = std::function;
wxString double_to_string(double const value);
class Field {
protected:
// factory function to defer and enforce creation of derived type.
- virtual void PostInitialize() { BUILD(); }
+ virtual void PostInitialize();
/// Finish constructing the Field's wxWidget-related properties, including setting its own sizer, etc.
virtual void BUILD() = 0;
@@ -42,6 +50,8 @@ protected:
void on_kill_focus(wxEvent& event);
/// Call the attached on_change method.
void on_change_field();
+ /// Call the attached m_back_to_initial_value method.
+ void on_back_to_initial_value();
public:
/// parent wx item, opportunity to refactor (probably not necessary - data duplication)
@@ -53,8 +63,13 @@ public:
/// Function object to store callback passed in from owning object.
t_change m_on_change {nullptr};
+ /// Function object to store callback passed in from owning object.
+ t_back_to_init m_back_to_initial_value{ nullptr };
+
// This is used to avoid recursive invocation of the field change/update by wxWidgets.
bool m_disable_change_event {false};
+ // This is used to avoid recursive invocation of the field change/update by wxWidgets.
+ bool m_is_modified_value {false};
/// Copy of ConfigOption for deduction purposes
const ConfigOptionDef m_opt {ConfigOptionDef()};
@@ -63,7 +78,7 @@ public:
/// Sets a value for this control.
/// subclasses should overload with a specific version
/// Postcondition: Method does not fire the on_change event.
- virtual void set_value(boost::any value) = 0;
+ virtual void set_value(boost::any value, bool change_event) = 0;
/// Gets a boost::any representing this control.
/// subclasses should overload with a specific version
@@ -72,6 +87,9 @@ public:
virtual void enable() = 0;
virtual void disable() = 0;
+ wxStaticText* m_Label = nullptr;
+ wxButton* m_Undo_btn = nullptr;
+
/// Fires the enable or disable function, based on the input.
inline void toggle(bool en) { en ? enable() : disable(); }
@@ -85,7 +103,7 @@ public:
virtual wxWindow* getWindow() { return nullptr; }
bool is_matched(std::string string, std::string pattern);
- boost::any get_value_by_opt_type(wxString str);
+ boost::any get_value_by_opt_type(wxString str);
/// Factory method for generating new derived classes.
template
@@ -116,13 +134,13 @@ public:
void BUILD();
wxWindow* window {nullptr};
- virtual void set_value(std::string value) {
- m_disable_change_event = true;
+ virtual void set_value(std::string value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast(window)->SetValue(wxString(value));
m_disable_change_event = false;
}
- virtual void set_value(boost::any value) {
- m_disable_change_event = true;
+ virtual void set_value(boost::any value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast(window)->SetValue(boost::any_cast(value));
m_disable_change_event = false;
}
@@ -143,19 +161,17 @@ public:
wxWindow* window{ nullptr };
void BUILD() override;
- void set_value(const bool value) {
- m_disable_change_event = true;
+ void set_value(const bool value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast(window)->SetValue(value);
m_disable_change_event = false;
}
- void set_value(boost::any value) {
- m_disable_change_event = true;
+ void set_value(boost::any value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast(window)->SetValue(boost::any_cast(value));
m_disable_change_event = false;
}
- boost::any get_value() override {
- return boost::any(dynamic_cast(window)->GetValue());
- }
+ boost::any get_value() override;
void enable() override { dynamic_cast(window)->Enable(); }
void disable() override { dynamic_cast(window)->Disable(); }
@@ -173,13 +189,13 @@ public:
wxWindow* window{ nullptr };
void BUILD() override;
- void set_value(const std::string value) {
- m_disable_change_event = true;
+ void set_value(const std::string value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast(window)->SetValue(value);
m_disable_change_event = false;
}
- void set_value(boost::any value) {
- m_disable_change_event = true;
+ void set_value(boost::any value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast(window)->SetValue(boost::any_cast(value));
m_disable_change_event = false;
}
@@ -202,8 +218,8 @@ public:
void BUILD() override;
void set_selection();
- void set_value(const std::string value);
- void set_value(boost::any value);
+ void set_value(const std::string value, bool change_event = false);
+ void set_value(boost::any value, bool change_event = false);
void set_values(const std::vector values);
boost::any get_value() override;
@@ -221,13 +237,13 @@ public:
wxWindow* window{ nullptr };
void BUILD() override;
- void set_value(const std::string value) {
- m_disable_change_event = true;
+ void set_value(const std::string value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast(window)->SetColour(value);
m_disable_change_event = false;
}
- void set_value(boost::any value) {
- m_disable_change_event = true;
+ void set_value(boost::any value, bool change_event = false) {
+ m_disable_change_event = !change_event;
dynamic_cast(window)->SetColour(boost::any_cast(value));
m_disable_change_event = false;
}
@@ -251,8 +267,8 @@ public:
void BUILD() override;
- void set_value(const Pointf value);
- void set_value(boost::any value);
+ void set_value(const Pointf value, bool change_event = false);
+ void set_value(boost::any value, bool change_event = false);
boost::any get_value() override;
void enable() override {
diff --git a/xs/src/slic3r/GUI/GUI.cpp b/xs/src/slic3r/GUI/GUI.cpp
index 699f17e82..0410b7969 100644
--- a/xs/src/slic3r/GUI/GUI.cpp
+++ b/xs/src/slic3r/GUI/GUI.cpp
@@ -5,9 +5,9 @@
#include
#include
#include
-
#include
#include
+#include
#if __APPLE__
#import
@@ -45,6 +45,7 @@
#include "AppConfig.hpp"
#include "Utils.hpp"
#include "Preferences.hpp"
+#include "PresetBundle.hpp"
namespace Slic3r { namespace GUI {
@@ -172,11 +173,15 @@ wxApp *g_wxApp = nullptr;
wxFrame *g_wxMainFrame = nullptr;
wxNotebook *g_wxTabPanel = nullptr;
AppConfig *g_AppConfig = nullptr;
+PresetBundle *g_PresetBundle= nullptr;
std::vector g_tabs_list;
wxLocale* g_wxLocale;
+std::shared_ptr m_optgroup;
+double m_brim_width = 0.0;
+
void set_wxapp(wxApp *app)
{
g_wxApp = app;
@@ -197,6 +202,11 @@ void set_app_config(AppConfig *app_config)
g_AppConfig = app_config;
}
+void set_preset_bundle(PresetBundle *preset_bundle)
+{
+ g_PresetBundle = preset_bundle;
+}
+
std::vector& get_tabs_list()
{
return g_tabs_list;
@@ -240,6 +250,7 @@ bool select_language(wxArrayString & names,
g_wxLocale->Init(identifiers[index]);
g_wxLocale->AddCatalogLookupPathPrefix(wxPathOnly(localization_dir()));
g_wxLocale->AddCatalog(g_wxApp->GetAppName());
+ wxSetlocale(LC_NUMERIC, "C");
return true;
}
return false;
@@ -268,6 +279,7 @@ bool load_language()
g_wxLocale->Init(identifiers[i]);
g_wxLocale->AddCatalogLookupPathPrefix(wxPathOnly(localization_dir()));
g_wxLocale->AddCatalog(g_wxApp->GetAppName());
+ wxSetlocale(LC_NUMERIC, "C");
return true;
}
}
@@ -346,26 +358,17 @@ void open_preferences_dialog(int event_preferences)
dlg->ShowModal();
}
-void create_preset_tabs(PresetBundle *preset_bundle,
- bool no_controller, bool is_disabled_button_browse, bool is_user_agent,
- int event_value_change, int event_presets_changed,
- int event_button_browse, int event_button_test)
+void create_preset_tabs(bool no_controller, int event_value_change, int event_presets_changed)
{
- add_created_tab(new TabPrint (g_wxTabPanel, no_controller), preset_bundle);
- add_created_tab(new TabFilament (g_wxTabPanel, no_controller), preset_bundle);
- add_created_tab(new TabPrinter (g_wxTabPanel, no_controller, is_disabled_button_browse, is_user_agent),
- preset_bundle);
+ add_created_tab(new TabPrint (g_wxTabPanel, no_controller));
+ add_created_tab(new TabFilament (g_wxTabPanel, no_controller));
+ add_created_tab(new TabPrinter (g_wxTabPanel, no_controller));
for (size_t i = 0; i < g_wxTabPanel->GetPageCount(); ++ i) {
Tab *tab = dynamic_cast(g_wxTabPanel->GetPage(i));
if (! tab)
continue;
tab->set_event_value_change(wxEventType(event_value_change));
tab->set_event_presets_changed(wxEventType(event_presets_changed));
- if (tab->name() == "printer"){
- TabPrinter* tab_printer = static_cast(tab);
- tab_printer->set_event_button_browse(wxEventType(event_button_browse));
- tab_printer->set_event_button_test(wxEventType(event_button_test));
- }
}
}
@@ -419,9 +422,13 @@ void change_opt_value(DynamicPrintConfig& config, t_config_option_key opt_key, b
config.set_key_value(opt_key, new ConfigOptionString(boost::any_cast(value)));
break;
case coStrings:{
- if (opt_key.compare("compatible_printers") == 0){
+ if (opt_key.compare("compatible_printers") == 0 ||
+ config.def()->get(opt_key)->gui_flags.compare("serialized") == 0){
config.option(opt_key)->values.resize(0);
- for (auto el : boost::any_cast>(value))
+ std::vector values = boost::any_cast>(value);
+ if (values.size() == 1 && values[0] == "")
+ break;
+ for (auto el : values)
config.option(opt_key)->values.push_back(el);
}
else{
@@ -434,7 +441,7 @@ void change_opt_value(DynamicPrintConfig& config, t_config_option_key opt_key, b
config.set_key_value(opt_key, new ConfigOptionBool(boost::any_cast(value)));
break;
case coBools:{
- ConfigOptionBools* vec_new = new ConfigOptionBools{ boost::any_cast(value) };
+ ConfigOptionBools* vec_new = new ConfigOptionBools{ (bool)boost::any_cast(value) };
config.option(opt_key)->set_at(vec_new, opt_index, 0);
break;}
case coInt:
@@ -458,9 +465,8 @@ void change_opt_value(DynamicPrintConfig& config, t_config_option_key opt_key, b
}
break;
case coPoints:{
- ConfigOptionPoints points;
- points.values = boost::any_cast>(value);
- config.set_key_value(opt_key, new ConfigOptionPoints(points));
+ ConfigOptionPoints* vec_new = new ConfigOptionPoints{ boost::any_cast(value) };
+ config.option(opt_key)->set_at(vec_new, opt_index, 0);
}
break;
case coNone:
@@ -475,9 +481,9 @@ void change_opt_value(DynamicPrintConfig& config, t_config_option_key opt_key, b
}
}
-void add_created_tab(Tab* panel, PresetBundle *preset_bundle)
+void add_created_tab(Tab* panel)
{
- panel->create_preset_tab(preset_bundle);
+ panel->create_preset_tab(g_PresetBundle);
// Load the currently selected preset into the GUI, update the preset selection box.
panel->load_current_preset();
@@ -505,6 +511,11 @@ wxApp* get_app(){
return g_wxApp;
}
+wxColour* get_modified_label_clr()
+{
+ return new wxColour(253, 88, 0);
+}
+
void create_combochecklist(wxComboCtrl* comboCtrl, std::string text, std::string items, bool initial_value)
{
if (comboCtrl == nullptr)
@@ -562,15 +573,117 @@ AppConfig* get_app_config()
return g_AppConfig;
}
-wxString L_str(std::string str)
+wxString L_str(const std::string &str)
{
//! Explicitly specify that the source string is already in UTF-8 encoding
return wxGetTranslation(wxString(str.c_str(), wxConvUTF8));
}
-wxString from_u8(std::string str)
+wxString from_u8(const std::string &str)
{
return wxString::FromUTF8(str.c_str());
}
+
+void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer)
+{
+ DynamicPrintConfig* config = &g_PresetBundle->prints.get_edited_preset().config;
+ m_optgroup = std::make_shared(parent, "", config);
+ const wxArrayInt& ar = preset_sizer->GetColWidths();
+ m_optgroup->label_width = ar.IsEmpty() ? 100 : ar.front();
+ m_optgroup->m_on_change = [config](t_config_option_key opt_key, boost::any value){
+ TabPrint* tab_print = nullptr;
+ for (size_t i = 0; i < g_wxTabPanel->GetPageCount(); ++i) {
+ Tab *tab = dynamic_cast(g_wxTabPanel->GetPage(i));
+ if (!tab)
+ continue;
+ if (tab->name() == "print"){
+ tab_print = static_cast(tab);
+ break;
+ }
+ }
+ if (tab_print == nullptr)
+ return;
+
+ if (opt_key == "fill_density"){
+ value = m_optgroup->get_config_value(*config, opt_key);
+ tab_print->set_value(opt_key, value);
+ tab_print->update();
+ }
+ else{
+ DynamicPrintConfig new_conf = *config;
+ if (opt_key == "brim"){
+ double new_val;
+ double brim_width = config->opt_float("brim_width");
+ if (boost::any_cast(value) == true)
+ {
+ new_val = m_brim_width == 0.0 ? 10 :
+ m_brim_width < 0.0 ? m_brim_width * (-1) :
+ m_brim_width;
+ }
+ else{
+ m_brim_width = brim_width * (-1);
+ new_val = 0;
+ }
+ new_conf.set_key_value("brim_width", new ConfigOptionFloat(new_val));
+ }
+ else{ //(opt_key == "support")
+ const wxString& selection = boost::any_cast(value);
+
+ auto support_material = selection == _("None") ? false : true;
+ new_conf.set_key_value("support_material", new ConfigOptionBool(support_material));
+
+ if (selection == _("Everywhere"))
+ new_conf.set_key_value("support_material_buildplate_only", new ConfigOptionBool(false));
+ else if (selection == _("Support on build plate only"))
+ new_conf.set_key_value("support_material_buildplate_only", new ConfigOptionBool(true));
+ }
+ tab_print->load_config(new_conf);
+ }
+
+ tab_print->update_dirty();
+ };
+
+ const int width = 250;
+ Option option = m_optgroup->get_option("fill_density");
+ option.opt.sidetext = "";
+ option.opt.width = width;
+ m_optgroup->append_single_option_line(option);
+
+ ConfigOptionDef def;
+
+ def.label = L("Support");
+ def.type = coStrings;
+ def.gui_type = "select_open";
+ def.tooltip = L("Select what kind of support do you need");
+ def.enum_labels.push_back(L("None"));
+ def.enum_labels.push_back(L("Support on build plate only"));
+ def.enum_labels.push_back(L("Everywhere"));
+ std::string selection = !config->opt_bool("support_material") ?
+ "None" :
+ config->opt_bool("support_material_buildplate_only") ?
+ "Support on build plate only" :
+ "Everywhere";
+ def.default_value = new ConfigOptionStrings { selection };
+ option = Option(def, "support");
+ option.opt.width = width;
+ m_optgroup->append_single_option_line(option);
+
+ m_brim_width = config->opt_float("brim_width");
+ def.label = L("Brim");
+ def.type = coBool;
+ def.tooltip = L("This flag enables the brim that will be printed around each object on the first layer.");
+ def.gui_type = "";
+ def.default_value = new ConfigOptionBool{ m_brim_width > 0.0 ? true : false };
+ option = Option(def, "brim");
+ m_optgroup->append_single_option_line(option);
+
+ sizer->Add(m_optgroup->sizer, 0, wxEXPAND | wxBOTTOM | wxBottom, 1);
+}
+
+ConfigOptionsGroup* get_optgroup()
+{
+ return m_optgroup.get();
+}
+
} }
diff --git a/xs/src/slic3r/GUI/GUI.hpp b/xs/src/slic3r/GUI/GUI.hpp
index c6922cebc..084b6de46 100644
--- a/xs/src/slic3r/GUI/GUI.hpp
+++ b/xs/src/slic3r/GUI/GUI.hpp
@@ -6,6 +6,7 @@
#include "Config.hpp"
class wxApp;
+class wxWindow;
class wxFrame;
class wxWindow;
class wxMenuBar;
@@ -14,6 +15,9 @@ class wxComboCtrl;
class wxString;
class wxArrayString;
class wxArrayLong;
+class wxColour;
+class wxBoxSizer;
+class wxFlexGridSizer;
namespace Slic3r {
@@ -35,11 +39,12 @@ class TabIface;
#define _CHB(s) wxGetTranslation(wxString(s, wxConvUTF8)).utf8_str()
// Minimal buffer length for translated string (char buf[MIN_BUF_LENGTH_FOR_L])
-#define MIN_BUF_LENGTH_FOR_L 128
+#define MIN_BUF_LENGTH_FOR_L 512
namespace GUI {
class Tab;
+class ConfigOptionsGroup;
// Map from an file_type name to full file wildcard name.
typedef std::map t_file_wild_card;
inline t_file_wild_card& get_file_wild_card() {
@@ -69,9 +74,11 @@ void set_wxapp(wxApp *app);
void set_main_frame(wxFrame *main_frame);
void set_tab_panel(wxNotebook *tab_panel);
void set_app_config(AppConfig *app_config);
+void set_preset_bundle(PresetBundle *preset_bundle);
AppConfig* get_app_config();
wxApp* get_app();
+wxColour* get_modified_label_clr();
void add_debug_menu(wxMenuBar *menu, int event_language_change);
@@ -79,14 +86,11 @@ void add_debug_menu(wxMenuBar *menu, int event_language_change);
void open_preferences_dialog(int event_preferences);
// Create a new preset tab (print, filament and printer),
-void create_preset_tabs(PresetBundle *preset_bundle,
- bool no_controller, bool is_disabled_button_browse, bool is_user_agent,
- int event_value_change, int event_presets_changed,
- int event_button_browse, int event_button_test);
+void create_preset_tabs(bool no_controller, int event_value_change, int event_presets_changed);
TabIface* get_preset_tab_iface(char *name);
// add it at the end of the tab panel.
-void add_created_tab(Tab* panel, PresetBundle *preset_bundle);
+void add_created_tab(Tab* panel);
// Change option value in config
void change_opt_value(DynamicPrintConfig& config, t_config_option_key opt_key, boost::any value, int opt_index = 0);
@@ -117,9 +121,14 @@ void create_combochecklist(wxComboCtrl* comboCtrl, std::string text, std::string
int combochecklist_get_flags(wxComboCtrl* comboCtrl);
// Return translated std::string as a wxString
-wxString L_str(std::string str);
+wxString L_str(const std::string &str);
// Return wxString from std::string in UTF8
-wxString from_u8(std::string str);
+wxString from_u8(const std::string &str);
+
+
+void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer);
+
+ConfigOptionsGroup* get_optgroup();
}
}
diff --git a/xs/src/slic3r/GUI/OptionsGroup.cpp b/xs/src/slic3r/GUI/OptionsGroup.cpp
index f88b3f8c0..0be24824c 100644
--- a/xs/src/slic3r/GUI/OptionsGroup.cpp
+++ b/xs/src/slic3r/GUI/OptionsGroup.cpp
@@ -3,18 +3,21 @@
#include
#include
+#include
+#include
+#include "Utils.hpp"
namespace Slic3r { namespace GUI {
-const t_field& OptionsGroup::build_field(const Option& opt) {
- return build_field(opt.opt_id, opt.opt);
+const t_field& OptionsGroup::build_field(const Option& opt, wxStaticText* label/* = nullptr*/) {
+ return build_field(opt.opt_id, opt.opt, label);
}
-const t_field& OptionsGroup::build_field(const t_config_option_key& id) {
+const t_field& OptionsGroup::build_field(const t_config_option_key& id, wxStaticText* label/* = nullptr*/) {
const ConfigOptionDef& opt = m_options.at(id).opt;
- return build_field(id, opt);
+ return build_field(id, opt, label);
}
-const t_field& OptionsGroup::build_field(const t_config_option_key& id, const ConfigOptionDef& opt) {
+const t_field& OptionsGroup::build_field(const t_config_option_key& id, const ConfigOptionDef& opt, wxStaticText* label/* = nullptr*/) {
// Check the gui_type field first, fall through
// is the normal type.
if (opt.gui_type.compare("select") == 0) {
@@ -72,7 +75,16 @@ const t_field& OptionsGroup::build_field(const t_config_option_key& id, const Co
this->on_kill_focus();
};
field->m_parent = parent();
- // assign function objects for callbacks, etc.
+
+ //! Label to change background color, when option is modified
+ field->m_Label = label;
+ field->m_back_to_initial_value = [this](std::string opt_id){
+ if (!this->m_disabled)
+ this->back_to_initial_value(opt_id);
+ };
+ if (!m_is_tab_opt) field->m_Undo_btn->Hide();
+
+ // assign function objects for callbacks, etc.
return field;
}
@@ -100,6 +112,7 @@ void OptionsGroup::append_line(const Line& line) {
const auto& option = option_set.front();
const auto& field = build_field(option);
+ sizer->Add(field->m_Undo_btn);
if (is_window_field(field))
sizer->Add(field->getWindow(), 0, wxEXPAND | wxALL, wxOSX ? 0 : 5);
if (is_sizer_field(field))
@@ -110,8 +123,9 @@ void OptionsGroup::append_line(const Line& line) {
auto grid_sizer = m_grid_sizer;
// Build a label if we have it
+ wxStaticText* label=nullptr;
if (label_width != 0) {
- auto label = new wxStaticText(parent(), wxID_ANY, line.label + (line.label.IsEmpty() ? "" : ":"),
+ label = new wxStaticText(parent(), wxID_ANY, line.label + (line.label.IsEmpty() ? "" : ":"),
wxDefaultPosition, wxSize(label_width, -1));
label->SetFont(label_font);
label->Wrap(label_width); // avoid a Linux/GTK bug
@@ -128,25 +142,24 @@ void OptionsGroup::append_line(const Line& line) {
}
// if we have a single option with no sidetext just add it directly to the grid sizer
- if (option_set.size() == 1 && option_set.front().opt.sidetext.size() == 0 &&
- option_set.front().side_widget == nullptr && line.get_extra_widgets().size() == 0) {
- const auto& option = option_set.front();
- const auto& field = build_field(option);
-//! std::cerr << "single option, no sidetext.\n";
-//! std::cerr << "field parent is not null?: " << (field->parent != nullptr) << "\n";
+ auto sizer = new wxBoxSizer(wxHORIZONTAL);
+ grid_sizer->Add(sizer, 0, wxEXPAND | wxALL, 0);
+ if (option_set.size() == 1 && option_set.front().opt.sidetext.size() == 0 &&
+ option_set.front().side_widget == nullptr && line.get_extra_widgets().size() == 0) {
+ const auto& option = option_set.front();
+ const auto& field = build_field(option, label);
- if (is_window_field(field))
- grid_sizer->Add(field->getWindow(), 0, (option.opt.full_width ? wxEXPAND : 0) |
+ sizer->Add(field->m_Undo_btn, 0, wxALIGN_CENTER_VERTICAL);
+ if (is_window_field(field))
+ sizer->Add(field->getWindow(), 0, (option.opt.full_width ? wxEXPAND : 0) |
wxBOTTOM | wxTOP | wxALIGN_CENTER_VERTICAL, wxOSX ? 0 : 2);
- if (is_sizer_field(field))
- grid_sizer->Add(field->getSizer(), 0, (option.opt.full_width ? wxEXPAND : 0) | wxALIGN_CENTER_VERTICAL, 0);
- return;
- }
+ if (is_sizer_field(field))
+ sizer->Add(field->getSizer(), 0, (option.opt.full_width ? wxEXPAND : 0) | wxALIGN_CENTER_VERTICAL, 0);
+ return;
+ }
// if we're here, we have more than one option or a single option with sidetext
// so we need a horizontal sizer to arrange these things
- auto sizer = new wxBoxSizer(wxHORIZONTAL);
- grid_sizer->Add(sizer, 0, wxEXPAND | wxALL, 0);
for (auto opt : option_set) {
ConfigOptionDef option = opt.opt;
// add label if any
@@ -156,14 +169,15 @@ void OptionsGroup::append_line(const Line& line) {
// wxString str_label = (option.label == "Top" || option.label == "Bottom") ?
// wxGETTEXT_IN_CONTEXT("Layers", wxString(option.label.c_str()):
// L_str(option.label);
- auto field_label = new wxStaticText(parent(), wxID_ANY, str_label + ":", wxDefaultPosition, wxDefaultSize);
- field_label->SetFont(label_font);
- sizer->Add(field_label, 0, wxALIGN_CENTER_VERTICAL, 0);
+ label = new wxStaticText(parent(), wxID_ANY, str_label + ":", wxDefaultPosition, wxDefaultSize);
+ label->SetFont(label_font);
+ sizer->Add(label, 0, wxALIGN_CENTER_VERTICAL, 0);
}
// add field
const Option& opt_ref = opt;
- auto& field = build_field(opt_ref);
+ auto& field = build_field(opt_ref, label);
+ sizer->Add(field->m_Undo_btn, 0, wxALIGN_CENTER_VERTICAL, 0);
is_sizer_field(field) ?
sizer->Add(field->getSizer(), 0, wxALIGN_CENTER_VERTICAL, 0) :
sizer->Add(field->getWindow(), 0, wxALIGN_CENTER_VERTICAL, 0);
@@ -244,6 +258,12 @@ void ConfigOptionsGroup::on_change_OG(t_config_option_key opt_id, boost::any val
// # Currently used for the post_process config value only.
// my @values = split / ; / , $field_value;
// $self->config->set($opt_key, \@values);
+ std::string str = boost::any_cast(value);
+ if (str.back() == ';')
+ str.pop_back();
+ std::vector values;
+ boost::split(values, str, boost::is_any_of(";"));
+ change_opt_value(*m_config, opt_key, values);
}
else {
if (opt_index == -1) {
@@ -263,6 +283,30 @@ void ConfigOptionsGroup::on_change_OG(t_config_option_key opt_id, boost::any val
OptionsGroup::on_change_OG(opt_id, value); //!? Why doing this
}
+void ConfigOptionsGroup::back_to_initial_value(const std::string opt_key)
+{
+ if (m_get_initial_config == nullptr)
+ return;
+ DynamicPrintConfig config = m_get_initial_config();
+ boost::any value;
+ if (opt_key == "extruders_count"){
+ auto *nozzle_diameter = dynamic_cast(config.option("nozzle_diameter"));
+ value = int(nozzle_diameter->values.size());
+ }
+ else if (m_opt_map.find(opt_key) != m_opt_map.end())
+ {
+ auto opt_id = m_opt_map.find(opt_key)->first;
+ std::string opt_short_key = m_opt_map.at(opt_id).first;
+ int opt_index = m_opt_map.at(opt_id).second;
+ value = get_config_value(config, opt_short_key, opt_index);
+ }
+ else
+ value = get_config_value(config, opt_key);
+
+ set_value(opt_key, value);
+ on_change_OG(opt_key, get_value(opt_key));
+}
+
void ConfigOptionsGroup::reload_config(){
for (std::map< std::string, std::pair >::iterator it = m_opt_map.begin(); it != m_opt_map.end(); ++it) {
auto opt_id = it->first;
@@ -323,7 +367,7 @@ boost::any ConfigOptionsGroup::get_config_value(DynamicPrintConfig& config, std:
double val = opt->type == coFloats ?
config.opt_float(opt_key, idx) :
opt->type == coFloat ? config.opt_float(opt_key) :
- config.option(opt_key)->values.at(idx);
+ config.option(opt_key)->get_at(idx);
ret = double_to_string(val);
}
break;
@@ -333,6 +377,12 @@ boost::any ConfigOptionsGroup::get_config_value(DynamicPrintConfig& config, std:
case coStrings:
if (config.option(opt_key)->values.empty())
ret = text_value;
+ else if (opt->gui_flags.compare("serialized") == 0){
+ std::vector values = config.option(opt_key)->values;
+ for (auto el : values)
+ text_value += el + ";";
+ ret = text_value;
+ }
else
ret = static_cast(config.opt_string(opt_key, static_cast(idx)));
break;
@@ -363,10 +413,8 @@ boost::any ConfigOptionsGroup::get_config_value(DynamicPrintConfig& config, std:
ret = static_cast(config.option>(opt_key)->value);
}
break;
- case coPoints:{
- const auto &value = *config.option(opt_key);
- ret = value.values.at(idx);
- }
+ case coPoints:
+ ret = config.option(opt_key)->get_at(idx);
break;
case coNone:
default:
@@ -376,6 +424,9 @@ boost::any ConfigOptionsGroup::get_config_value(DynamicPrintConfig& config, std:
}
Field* ConfigOptionsGroup::get_fieldc(t_config_option_key opt_key, int opt_index){
+ Field* field = get_field(opt_key);
+ if (field != nullptr)
+ return field;
std::string opt_id = "";
for (std::map< std::string, std::pair >::iterator it = m_opt_map.begin(); it != m_opt_map.end(); ++it) {
if (opt_key == m_opt_map.at(it->first).first && opt_index == m_opt_map.at(it->first).second){
diff --git a/xs/src/slic3r/GUI/OptionsGroup.hpp b/xs/src/slic3r/GUI/OptionsGroup.hpp
index 6e88d1d88..aa0563866 100644
--- a/xs/src/slic3r/GUI/OptionsGroup.hpp
+++ b/xs/src/slic3r/GUI/OptionsGroup.hpp
@@ -27,6 +27,9 @@ namespace Slic3r { namespace GUI {
using widget_t = std::function;//!std::function;
using column_t = std::function;
+//auto default_label_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_3DLIGHT); //GetSystemColour
+//auto modified_label_clr = *new wxColour(254, 189, 101);
+
/// Wraps a ConfigOptionDef and adds function object for creating a side_widget.
struct Option {
ConfigOptionDef opt { ConfigOptionDef() };
@@ -75,6 +78,7 @@ public:
wxSizer* sizer {nullptr};
column_t extra_column {nullptr};
t_change m_on_change {nullptr};
+ std::function m_get_initial_config{ nullptr };
wxFont sidetext_font {wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) };
wxFont label_font {wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) };
@@ -93,9 +97,9 @@ public:
if (m_fields.find(id) == m_fields.end()) return nullptr;
return m_fields.at(id).get();
}
- bool set_value(t_config_option_key id, boost::any value) {
+ bool set_value(t_config_option_key id, boost::any value, bool change_event = false) {
if (m_fields.find(id) == m_fields.end()) return false;
- m_fields.at(id)->set_value(value);
+ m_fields.at(id)->set_value(value, change_event);
return true;
}
boost::any get_value(t_config_option_key id) {
@@ -109,8 +113,8 @@ public:
inline void enable() { for (auto& field : m_fields) field.second->enable(); }
inline void disable() { for (auto& field : m_fields) field.second->disable(); }
- OptionsGroup(wxWindow* _parent, wxString title) :
- m_parent(_parent), title(title) {
+ OptionsGroup(wxWindow* _parent, wxString title, bool is_tab_opt=false) :
+ m_parent(_parent), title(title), m_is_tab_opt(is_tab_opt), staticbox(title!="") {
sizer = (staticbox ? new wxStaticBoxSizer(new wxStaticBox(_parent, wxID_ANY, title), wxVERTICAL) : new wxBoxSizer(wxVERTICAL));
auto num_columns = 1U;
if (label_width != 0) num_columns++;
@@ -132,22 +136,25 @@ protected:
t_optionfield_map m_fields;
bool m_disabled {false};
wxGridSizer* m_grid_sizer {nullptr};
+ // "true" if option is created in preset tabs
+ bool m_is_tab_opt{ false };
/// Generate a wxSizer or wxWindow from a configuration option
/// Precondition: opt resolves to a known ConfigOption
/// Postcondition: fields contains a wx gui object.
- const t_field& build_field(const t_config_option_key& id, const ConfigOptionDef& opt);
- const t_field& build_field(const t_config_option_key& id);
- const t_field& build_field(const Option& opt);
+ const t_field& build_field(const t_config_option_key& id, const ConfigOptionDef& opt, wxStaticText* label = nullptr);
+ const t_field& build_field(const t_config_option_key& id, wxStaticText* label = nullptr);
+ const t_field& build_field(const Option& opt, wxStaticText* label = nullptr);
virtual void on_kill_focus (){};
virtual void on_change_OG(t_config_option_key opt_id, boost::any value);
+ virtual void back_to_initial_value(const std::string opt_key){};
};
class ConfigOptionsGroup: public OptionsGroup {
public:
- ConfigOptionsGroup(wxWindow* parent, wxString title, DynamicPrintConfig* _config = nullptr) :
- OptionsGroup(parent, title), m_config(_config) {}
+ ConfigOptionsGroup(wxWindow* parent, wxString title, DynamicPrintConfig* _config = nullptr, bool is_tab_opt = false) :
+ OptionsGroup(parent, title, is_tab_opt), m_config(_config) {}
/// reference to libslic3r config, non-owning pointer (?).
DynamicPrintConfig* m_config {nullptr};
@@ -169,10 +176,8 @@ public:
}
void on_change_OG(t_config_option_key opt_id, boost::any value) override;
- void on_kill_focus() override
- {
- reload_config();
- }
+ void back_to_initial_value(const std::string opt_key) override;
+ void on_kill_focus() override{ reload_config();}
void reload_config();
boost::any config_value(std::string opt_key, int opt_index, bool deserialize);
// return option value from config
diff --git a/xs/src/slic3r/GUI/Preset.cpp b/xs/src/slic3r/GUI/Preset.cpp
index c28c989fb..aa1917bd5 100644
--- a/xs/src/slic3r/GUI/Preset.cpp
+++ b/xs/src/slic3r/GUI/Preset.cpp
@@ -224,9 +224,9 @@ const std::vector& Preset::printer_options()
if (s_opts.empty()) {
s_opts = {
"bed_shape", "z_offset", "gcode_flavor", "use_relative_e_distances", "serial_port", "serial_speed",
- "octoprint_host", "octoprint_apikey", "use_firmware_retraction", "use_volumetric_e", "variable_layer_height",
+ "octoprint_host", "octoprint_apikey", "octoprint_cafile", "use_firmware_retraction", "use_volumetric_e", "variable_layer_height",
"single_extruder_multi_material", "start_gcode", "end_gcode", "before_layer_gcode", "layer_gcode", "toolchange_gcode",
- "between_objects_gcode", "printer_notes"
+ "between_objects_gcode", "printer_notes", "max_print_height"
};
s_opts.insert(s_opts.end(), Preset::nozzle_options().begin(), Preset::nozzle_options().end());
}
diff --git a/xs/src/slic3r/GUI/PresetBundle.cpp b/xs/src/slic3r/GUI/PresetBundle.cpp
index 3b4bf097f..bf79c6562 100644
--- a/xs/src/slic3r/GUI/PresetBundle.cpp
+++ b/xs/src/slic3r/GUI/PresetBundle.cpp
@@ -14,6 +14,7 @@
#include
#include
#include
+#include
#include
#include
@@ -474,6 +475,125 @@ void PresetBundle::load_config_file_config_bundle(const std::string &path, const
this->update_compatible_with_printer(false);
}
+// Process the Config Bundle loaded as a Boost property tree.
+// For each print, filament and printer preset (group defined by group_name), apply the inherited presets.
+// The presets starting with '*' are considered non-terminal and they are
+// removed through the flattening process by this function.
+// This function will never fail, but it will produce error messages through boost::log.
+static void flatten_configbundle_hierarchy(boost::property_tree::ptree &tree, const std::string &group_name)
+{
+ namespace pt = boost::property_tree;
+
+ typedef std::pair ptree_child_type;
+
+ // 1) For the group given by group_name, initialize the presets.
+ struct Prst {
+ Prst(const std::string &name, pt::ptree *node) : name(name), node(node) {}
+ // Name of this preset. If the name starts with '*', it is an intermediate preset,
+ // which will not make it into the result.
+ const std::string name;
+ // Link to the source boost property tree node, owned by tree.
+ pt::ptree *node;
+ // Link to the presets, from which this preset inherits.
+ std::vector inherits;
+ // Link to the presets, for which this preset is a direct parent.
+ std::vector parent_of;
+ // When running the Kahn's Topological sorting algorithm, this counter is decreased from inherits.size() to zero.
+ // A cycle is indicated, if the number does not drop to zero after the Kahn's algorithm finishes.
+ size_t num_incoming_edges_left = 0;
+ // Sorting by the name, to be used when inserted into std::set.
+ bool operator==(const Prst &rhs) const { return this->name == rhs.name; }
+ bool operator< (const Prst &rhs) const { return this->name < rhs.name; }
+ };
+ // Find the presets, store them into a std::map, addressed by their names.
+ std::set presets;
+ std::string group_name_preset = group_name + ":";
+ for (auto §ion : tree)
+ if (boost::starts_with(section.first, group_name_preset) && section.first.size() > group_name_preset.size())
+ presets.emplace(section.first.substr(group_name_preset.size()), §ion.second);
+ // Fill in the "inherits" and "parent_of" members, report invalid inheritance fields.
+ for (const Prst &prst : presets) {
+ // Parse the list of comma separated values, possibly enclosed in quotes.
+ std::vector inherits_names;
+ if (Slic3r::unescape_strings_cstyle(prst.node->get("inherits", ""), inherits_names)) {
+ // Resolve the inheritance by name.
+ std::vector &inherits_nodes = const_cast(prst).inherits;
+ for (const std::string &node_name : inherits_names) {
+ auto it = presets.find(Prst(node_name, nullptr));
+ if (it == presets.end())
+ BOOST_LOG_TRIVIAL(error) << "flatten_configbundle_hierarchy: The preset " << prst.name << " inherits an unknown preset \"" << node_name << "\"";
+ else {
+ inherits_nodes.emplace_back(const_cast(&(*it)));
+ inherits_nodes.back()->parent_of.emplace_back(const_cast(&prst));
+ }
+ }
+ } else {
+ BOOST_LOG_TRIVIAL(error) << "flatten_configbundle_hierarchy: The preset " << prst.name << " has an invalid \"inherits\" field";
+ }
+ // Remove the "inherits" key, it has no meaning outside the config bundle.
+ const_cast(prst.node)->erase("inherits");
+ }
+
+ // 2) Create a linear ordering for the directed acyclic graph of preset inheritance.
+ // https://en.wikipedia.org/wiki/Topological_sorting
+ // Kahn's algorithm.
+ std::vector sorted;
+ {
+ // Initialize S with the set of all nodes with no incoming edge.
+ std::deque S;
+ for (const Prst &prst : presets)
+ if (prst.inherits.empty())
+ S.emplace_back(const_cast(&prst));
+ else
+ const_cast(&prst)->num_incoming_edges_left = prst.inherits.size();
+ while (! S.empty()) {
+ Prst *n = S.front();
+ S.pop_front();
+ sorted.emplace_back(n);
+ for (Prst *m : n->parent_of) {
+ assert(m->num_incoming_edges_left > 0);
+ if (-- m->num_incoming_edges_left == 0) {
+ // We have visited all parents of m.
+ S.emplace_back(m);
+ }
+ }
+ }
+ if (sorted.size() < presets.size()) {
+ for (const Prst &prst : presets)
+ if (prst.num_incoming_edges_left)
+ BOOST_LOG_TRIVIAL(error) << "flatten_configbundle_hierarchy: The preset " << prst.name << " has cyclic dependencies";
+ }
+ }
+
+ // Apply the dependencies in their topological ordering.
+ for (Prst *prst : sorted) {
+ // Merge the preset nodes in their order of application.
+ // Iterate in a reverse order, so the last change will be placed first in merged.
+ for (auto it_inherits = prst->inherits.rbegin(); it_inherits != prst->inherits.rend(); ++ it_inherits)
+ for (auto it = (*it_inherits)->node->begin(); it != (*it_inherits)->node->end(); ++ it)
+ if (prst->node->find(it->first) == prst->node->not_found())
+ prst->node->add_child(it->first, it->second);
+ }
+
+ // Remove the "internal" presets from the ptree. These presets are marked with '*'.
+ group_name_preset += '*';
+ for (auto it_section = tree.begin(); it_section != tree.end(); ) {
+ if (boost::starts_with(it_section->first, group_name_preset) && it_section->first.size() > group_name_preset.size())
+ // Remove the "internal" preset from the ptree.
+ it_section = tree.erase(it_section);
+ else
+ // Keep the preset.
+ ++ it_section;
+ }
+}
+
+static void flatten_configbundle_hierarchy(boost::property_tree::ptree &tree)
+{
+ flatten_configbundle_hierarchy(tree, "print");
+ flatten_configbundle_hierarchy(tree, "filament");
+ flatten_configbundle_hierarchy(tree, "printer");
+}
+
// Load a config bundle file, into presets and store the loaded presets into separate files
// of the local configuration directory.
size_t PresetBundle::load_configbundle(const std::string &path, unsigned int flags)
@@ -486,6 +606,8 @@ size_t PresetBundle::load_configbundle(const std::string &path, unsigned int fla
pt::ptree tree;
boost::nowide::ifstream ifs(path);
pt::read_ini(ifs, tree);
+ // Flatten the config bundle by applying the inheritance rules. Internal profiles (with names starting with '*') are removed.
+ flatten_configbundle_hierarchy(tree);
// 2) Parse the property_tree, extract the active preset names and the profiles, save them into local config files.
std::vector loaded_prints;
diff --git a/xs/src/slic3r/GUI/PresetHints.cpp b/xs/src/slic3r/GUI/PresetHints.cpp
index 07c8e3b07..d4c929c1c 100644
--- a/xs/src/slic3r/GUI/PresetHints.cpp
+++ b/xs/src/slic3r/GUI/PresetHints.cpp
@@ -13,10 +13,11 @@
namespace Slic3r {
+#define MIN_BUF_LENGTH 4096
std::string PresetHints::cooling_description(const Preset &preset)
{
std::string out;
- char buf[4096];
+ char buf[MIN_BUF_LENGTH/*4096*/];
if (preset.config.opt_bool("cooling", 0)) {
int slowdown_below_layer_time = preset.config.opt_int("slowdown_below_layer_time", 0);
int min_fan_speed = preset.config.opt_int("min_fan_speed", 0);
@@ -220,7 +221,7 @@ std::string PresetHints::maximum_volumetric_flow_description(const PresetBundle
+ _CHB(L(" with a volumetric rate "));
if (limited_by_max_volumetric_speed)
max_flow = max_volumetric_speed;
- char buf[2048];
+ char buf[MIN_BUF_LENGTH/*2048*/];
sprintf(buf, _CHB(L("%3.2f mm³/s")), max_flow);
out += buf;
sprintf(buf, _CHB(L(" at filament speed %3.2f mm/s.")), max_flow / filament_crossection);
@@ -258,7 +259,7 @@ std::string PresetHints::recommended_thin_wall_thickness(const PresetBundle &pre
if (num_perimeters > 0) {
int num_lines = std::min(num_perimeters * 2, 10);
- char buf[256];
+ char buf[MIN_BUF_LENGTH/*256*/];
sprintf(buf, _CHB(L("Recommended object thin wall thickness for layer height %.2f and ")), layer_height);
out += buf;
// Start with the width of two closely spaced
diff --git a/xs/src/slic3r/GUI/Tab.cpp b/xs/src/slic3r/GUI/Tab.cpp
index 7ce6790a1..d0f9f0ce3 100644
--- a/xs/src/slic3r/GUI/Tab.cpp
+++ b/xs/src/slic3r/GUI/Tab.cpp
@@ -3,6 +3,9 @@
#include "PresetBundle.hpp"
#include "PresetHints.hpp"
#include "../../libslic3r/Utils.hpp"
+#include "slic3r/Utils/Http.hpp"
+#include "slic3r/Utils/OctoPrint.hpp"
+#include "BonjourDialog.hpp"
#include
#include
@@ -14,6 +17,7 @@
#include
#include
#include
+#include
#include
@@ -33,19 +37,23 @@ void Tab::create_preset_tab(PresetBundle *preset_bundle)
// preset chooser
m_presets_choice = new wxBitmapComboBox(panel, wxID_ANY, "", wxDefaultPosition, wxSize(270, -1), 0, 0,wxCB_READONLY);
- const wxBitmap* bmp = new wxBitmap(from_u8(Slic3r::var("flag-green-icon.png")), wxBITMAP_TYPE_PNG);
+
+ auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
//buttons
wxBitmap bmpMenu;
bmpMenu = wxBitmap(from_u8(Slic3r::var("disk.png")), wxBITMAP_TYPE_PNG);
m_btn_save_preset = new wxBitmapButton(panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
+ if (wxMSW) m_btn_save_preset->SetBackgroundColour(color);
bmpMenu = wxBitmap(from_u8(Slic3r::var("delete.png")), wxBITMAP_TYPE_PNG);
m_btn_delete_preset = new wxBitmapButton(panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
+ if (wxMSW) m_btn_delete_preset->SetBackgroundColour(color);
m_show_incompatible_presets = false;
m_bmp_show_incompatible_presets = new wxBitmap(from_u8(Slic3r::var("flag-red-icon.png")), wxBITMAP_TYPE_PNG);
m_bmp_hide_incompatible_presets = new wxBitmap(from_u8(Slic3r::var("flag-green-icon.png")), wxBITMAP_TYPE_PNG);
m_btn_hide_incompatible_presets = new wxBitmapButton(panel, wxID_ANY, *m_bmp_hide_incompatible_presets, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
+ if (wxMSW) m_btn_hide_incompatible_presets->SetBackgroundColour(color);
m_btn_save_preset->SetToolTip(_(L("Save current ")) + m_title);
m_btn_delete_preset->SetToolTip(_(L("Delete this preset")));
@@ -93,6 +101,7 @@ void Tab::create_preset_tab(PresetBundle *preset_bundle)
if (selected_item >= 0){
std::string selected_string = m_presets_choice->GetString(selected_item).ToUTF8().data();
select_preset(selected_string);
+ update_changed_ui();
}
}));
@@ -134,11 +143,93 @@ PageShp Tab::add_options_page(wxString title, std::string icon, bool is_extruder
return page;
}
+template
+void add_correct_opts_to_dirty_options(const std::string &opt_key, std::vector *vec, TabPrinter *tab)
+{
+ auto opt_init = static_cast(tab->m_presets->get_selected_preset().config.option(opt_key));
+ auto opt_cur = static_cast(tab->m_config->option(opt_key));
+ int opt_init_max_id = opt_init->values.size()-1;
+ for (int i = 0; i < opt_cur->values.size(); i++)
+ {
+ int init_id = i <= opt_init_max_id ? i : 0;
+ if (opt_cur->values[i] != opt_init->values[init_id])
+ vec->emplace_back(opt_key + "#" + std::to_string(i));
+ }
+}
+
+// Update UI according to changes
+void Tab::update_changed_ui()
+{
+ auto dirty_options = m_presets->current_dirty_options();
+
+ if (name() == "printer"){
+ // Update dirty_options in case changes of Extruder's options
+ TabPrinter* tab = static_cast(this);
+ std::vector new_dirty;
+ for (auto opt_key : dirty_options)
+ {
+ switch (m_config->option(opt_key)->type())
+ {
+ case coInts: add_correct_opts_to_dirty_options(opt_key, &new_dirty, tab); break;
+ case coBools: add_correct_opts_to_dirty_options(opt_key, &new_dirty, tab); break;
+ case coFloats: add_correct_opts_to_dirty_options(opt_key, &new_dirty, tab); break;
+ case coStrings: add_correct_opts_to_dirty_options(opt_key, &new_dirty, tab); break;
+ case coPercents:add_correct_opts_to_dirty_options(opt_key, &new_dirty, tab); break;
+ case coPoints: add_correct_opts_to_dirty_options(opt_key, &new_dirty, tab); break;
+ default: new_dirty.emplace_back(opt_key); break;
+ }
+ }
+
+ dirty_options.resize(0);
+ dirty_options = new_dirty;
+ if (tab->m_initial_extruders_count != tab->m_extruders_count){
+ dirty_options.emplace_back("extruders_count");
+ }
+ }
+
+ // Add new dirty options to m_dirty_options
+ for (auto opt_key : dirty_options){
+ Field* field = get_field(opt_key);
+ if (field != nullptr && find(m_dirty_options.begin(), m_dirty_options.end(), opt_key) == m_dirty_options.end()){
+ if (field->m_Label != nullptr){
+ field->m_Label->SetForegroundColour(*get_modified_label_clr());
+ field->m_Label->Refresh(true);
+ }
+ field->m_Undo_btn->SetBitmap(wxBitmap(from_u8(wxMSW ? var("action_undo.png") : var("arrow_undo.png")), wxBITMAP_TYPE_PNG));
+ field->m_is_modified_value = true;
+
+ m_dirty_options.push_back(opt_key);
+ }
+ }
+
+ // Delete clear options from m_dirty_options
+ for (auto i = 0; i < m_dirty_options.size(); ++i)
+ {
+ const std::string &opt_key = m_dirty_options[i];
+ Field* field = get_field(opt_key);
+ if (field != nullptr && find(dirty_options.begin(), dirty_options.end(), opt_key) == dirty_options.end())
+ {
+ field->m_Undo_btn->SetBitmap(wxBitmap(from_u8(var("bullet_white.png")), wxBITMAP_TYPE_PNG));
+ if (field->m_Label != nullptr){
+ field->m_Label->SetForegroundColour(wxSYS_COLOUR_WINDOWTEXT);
+ field->m_Label->Refresh(true);
+ }
+ field->m_is_modified_value = false;
+ std::vector::iterator itr = find(m_dirty_options.begin(), m_dirty_options.end(), opt_key);
+ if (itr != m_dirty_options.end()){
+ m_dirty_options.erase(itr);
+ --i;
+ }
+ }
+ }
+}
+
// Update the combo box label of the selected preset based on its "dirty" state,
// comparing the selected preset config with $self->{config}.
void Tab::update_dirty(){
m_presets->update_dirty_ui(m_presets_choice);
- on_presets_changed();
+ on_presets_changed();
+ update_changed_ui();
}
void Tab::update_tab_ui()
@@ -146,81 +237,13 @@ void Tab::update_tab_ui()
m_presets->update_tab_ui(m_presets_choice, m_show_incompatible_presets);
}
-template
-boost::any get_new_value(const DynamicPrintConfig &config_new, const DynamicPrintConfig &config_old, std::string opt_key, int &index)
-{
- for (int i = 0; i < config_new.option(opt_key)->values.size(); i++)
- if (config_new.option(opt_key)->values[i] !=
- config_old.option(opt_key)->values[i]){
- index = i;
- break;
- }
- return config_new.option(opt_key)->values[index];
-}
-
// Load a provied DynamicConfig into the tab, modifying the active preset.
// This could be used for example by setting a Wipe Tower position by interactive manipulation in the 3D view.
void Tab::load_config(DynamicPrintConfig config)
{
bool modified = 0;
- boost::any value;
- int opt_index = 0;
for(auto opt_key : m_config->diff(config)) {
- switch ( config.def()->get(opt_key)->type ){
- case coFloatOrPercent:
- value = config.option(opt_key)->value;
- break;
- case coPercent:
- value = config.option(opt_key)->value;
- break;
- case coFloat:
- value = config.opt_float(opt_key);
- break;
- case coString:
- value = config.opt_string(opt_key);
- break;
- case coPercents:
- value = get_new_value(config, *m_config, opt_key, opt_index);
- break;
- case coFloats:
- value = get_new_value(config, *m_config, opt_key, opt_index);
- break;
- case coStrings:
- value = config.option(opt_key)->values.empty() ? "" :
- get_new_value(config, *m_config, opt_key, opt_index);
- break;
- case coBool:
- value = config.opt_bool(opt_key);
- break;
- case coBools:
- value = get_new_value(config, *m_config, opt_key, opt_index);
- break;
- case coInt:
- value = config.opt_int(opt_key);
- break;
- case coInts:
- value = get_new_value(config, *m_config, opt_key, opt_index);
- break;
- case coEnum:{
- if (opt_key.compare("external_fill_pattern") == 0 ||
- opt_key.compare("fill_pattern") == 0)
- value = config.option>(opt_key)->value;
- else if (opt_key.compare("gcode_flavor") == 0)
- value = config.option>(opt_key)->value;
- else if (opt_key.compare("support_material_pattern") == 0)
- value = config.option>(opt_key)->value;
- else if (opt_key.compare("seam_position") == 0)
- value = config.option>(opt_key)->value;
- }
- break;
- case coPoints:
- break;
- case coNone:
- break;
- default:
- break;
- }
- change_opt_value(*m_config, opt_key, value, opt_index);
+ m_config->set_key_value(opt_key, config.option(opt_key)->clone());
modified = 1;
}
if (modified) {
@@ -291,6 +314,27 @@ void Tab::on_value_change(std::string opt_key, boost::any value)
}
g_wxMainFrame->ProcessWindowEvent(event);
}
+ if (opt_key == "fill_density")
+ {
+ value = get_optgroup()->get_config_value(*m_config, opt_key);
+ get_optgroup()->set_value(opt_key, value);
+ }
+ if (opt_key == "support_material" || opt_key == "support_material_buildplate_only")
+ {
+ wxString new_selection = !m_config->opt_bool("support_material") ?
+ _("None") :
+ m_config->opt_bool("support_material_buildplate_only") ?
+ _("Support on build plate only") :
+ _("Everywhere");
+ get_optgroup()->set_value("support", new_selection);
+ }
+ if (opt_key == "brim_width")
+ {
+ bool val = m_config->opt_float("brim_width") > 0.0 ? true : false;
+ get_optgroup()->set_value("brim", val);
+ }
+
+
update();
}
@@ -308,6 +352,22 @@ void Tab::on_presets_changed()
}
}
+void Tab::update_frequently_changed_parameters()
+{
+ boost::any value = get_optgroup()->get_config_value(*m_config, "fill_density");
+ get_optgroup()->set_value("fill_density", value);
+
+ wxString new_selection = !m_config->opt_bool("support_material") ?
+ _("None") :
+ m_config->opt_bool("support_material_buildplate_only") ?
+ _("Support on build plate only") :
+ _("Everywhere");
+ get_optgroup()->set_value("support", new_selection);
+
+ bool val = m_config->opt_float("brim_width") > 0.0 ? true : false;
+ get_optgroup()->set_value("brim", val);
+}
+
void Tab::reload_compatible_printers_widget()
{
bool has_any = !m_config->option("compatible_printers")->values.empty();
@@ -576,7 +636,8 @@ void TabPrint::update()
DynamicPrintConfig new_conf = *m_config;
if (dialog->ShowModal() == wxID_YES) {
const auto &val = *m_config->option("first_layer_height");
- new_conf.set_key_value("first_layer_height", new ConfigOptionFloatOrPercent(0.2, val.percent));
+ auto percent = val.percent;
+ new_conf.set_key_value("first_layer_height", new ConfigOptionFloatOrPercent(0.2, percent));
if (m_config->opt_float("layer_height") < 0.15) new_conf.set_key_value("layer_height", new ConfigOptionFloat(0.15));
if (m_config->opt_float("layer_height") > 0.35) new_conf.set_key_value("layer_height", new ConfigOptionFloat(0.35));
@@ -674,13 +735,16 @@ void TabPrint::update()
"\nShall I switch to rectilinear fill pattern?"));
auto dialog = new wxMessageDialog(parent(), msg_text, _(L("Infill")), wxICON_WARNING | wxYES | wxNO);
DynamicPrintConfig new_conf = *m_config;
+ double fill_density;
if (dialog->ShowModal() == wxID_YES) {
new_conf.set_key_value("fill_pattern", new ConfigOptionEnum(ipRectilinear));
- new_conf.set_key_value("fill_density", new ConfigOptionPercent(100));
+ fill_density = 100;
}
else
- new_conf.set_key_value("fill_density", new ConfigOptionPercent(40));
+ fill_density = m_presets->get_selected_preset().config.option("fill_density")->value;
+ new_conf.set_key_value("fill_density", new ConfigOptionPercent(fill_density));
load_config(new_conf);
+ on_value_change("fill_density", fill_density);
}
}
}
@@ -943,14 +1007,14 @@ void TabPrinter::build()
auto default_config = m_preset_bundle->full_config();
auto *nozzle_diameter = dynamic_cast(m_config->option("nozzle_diameter"));
- m_extruders_count = nozzle_diameter->values.size();
+ m_initial_extruders_count = m_extruders_count = nozzle_diameter->values.size();
auto page = add_options_page(_(L("General")), "printer_empty.png");
auto optgroup = page->new_optgroup(_(L("Size and coordinates")));
Line line{ _(L("Bed shape")), "" };
line.widget = [this](wxWindow* parent){
- auto btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+"\u2026", wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
+ auto btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+"\u2026", wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
// btn->SetFont(Slic3r::GUI::small_font);
btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("printer_empty.png")), wxBITMAP_TYPE_PNG));
@@ -968,7 +1032,8 @@ void TabPrinter::build()
return sizer;
};
optgroup->append_line(line);
- optgroup->append_single_option_line("z_offset");
+ optgroup->append_single_option_line("max_print_height");
+ optgroup->append_single_option_line("z_offset");
optgroup = page->new_optgroup(_(L("Capabilities")));
ConfigOptionDef def;
@@ -1041,39 +1106,18 @@ void TabPrinter::build()
}
optgroup = page->new_optgroup(_(L("OctoPrint upload")));
- // # append two buttons to the Host line
- auto octoprint_host_browse = [this] (wxWindow* parent) {
+
+ auto octoprint_host_browse = [this, optgroup] (wxWindow* parent) {
auto btn = new wxButton(parent, wxID_ANY, _(L(" Browse "))+"\u2026", wxDefaultPosition, wxDefaultSize, wxBU_LEFT);
-// btn->SetFont($Slic3r::GUI::small_font);
btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("zoom.png")), wxBITMAP_TYPE_PNG));
auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(btn);
- if (m_is_disabled_button_browse)
- btn->Disable();
-
- btn->Bind(wxEVT_BUTTON, [this, parent](wxCommandEvent e){
- if (m_event_button_browse > 0){
- wxCommandEvent event(m_event_button_browse);
- event.SetString("Button BROWSE was clicked!");
- g_wxMainFrame->ProcessWindowEvent(event);
+ btn->Bind(wxEVT_BUTTON, [this, parent, optgroup](wxCommandEvent e) {
+ BonjourDialog dialog(parent);
+ if (dialog.show_and_lookup()) {
+ optgroup->set_value("octoprint_host", std::move(dialog.get_selected()), true);
}
-// // # look for devices
-// auto entries;
-// {
-// my $res = Net::Bonjour->new('http');
-// $res->discover;
-// $entries = [$res->entries];
-// }
-// if (@{$entries}) {
-// my $dlg = Slic3r::GUI::BonjourBrowser->new($self, $entries);
-// $self->_load_key_value('octoprint_host', $dlg->GetValue . ":".$dlg->GetPort)
-// if $dlg->ShowModal == wxID_OK;
-// }
-// else {
-// auto msg_window = new wxMessageDialog(parent, "No Bonjour device found", "Device Browser", wxOK | wxICON_INFORMATION);
-// msg_window->ShowModal();
-// }
});
return sizer;
@@ -1082,33 +1126,23 @@ void TabPrinter::build()
auto octoprint_host_test = [this](wxWindow* parent) {
auto btn = m_octoprint_host_test_btn = new wxButton(parent, wxID_ANY, _(L("Test")),
wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
-// btn->SetFont($Slic3r::GUI::small_font);
btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("wrench.png")), wxBITMAP_TYPE_PNG));
auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(btn);
- btn->Bind(wxEVT_BUTTON, [this, parent](wxCommandEvent e) {
- if (m_event_button_test > 0){
- wxCommandEvent event(m_event_button_test);
- event.SetString("Button TEST was clicked!");
- g_wxMainFrame->ProcessWindowEvent(event);
+ btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent e) {
+ OctoPrint octoprint(m_config);
+ wxString msg;
+ if (octoprint.test(msg)) {
+ show_info(this, _(L("Connection to OctoPrint works correctly.")), _(L("Success!")));
+ } else {
+ const auto text = wxString::Format("%s: %s\n\n%s",
+ _(L("Could not connect to OctoPrint")), msg, _(L("Note: OctoPrint version at least 1.1.0 is required."))
+ );
+ show_error(this, text);
}
-// my $ua = LWP::UserAgent->new;
-// $ua->timeout(10);
-//
-// my $res = $ua->get(
-// "http://".$self->{config}->octoprint_host . "/api/version",
-// 'X-Api-Key' = > $self->{config}->octoprint_apikey,
-// );
-// if ($res->is_success) {
-// show_info(parent, "Connection to OctoPrint works correctly.", "Success!");
-// }
-// else {
-// show_error(parent,
-// "I wasn't able to connect to OctoPrint (".$res->status_line . "). "
-// . "Check hostname and OctoPrint version (at least 1.1.0 is required).");
-// }
- });
+ });
+
return sizer;
};
@@ -1118,6 +1152,45 @@ void TabPrinter::build()
optgroup->append_line(host_line);
optgroup->append_single_option_line("octoprint_apikey");
+ if (Http::ca_file_supported()) {
+
+ Line cafile_line = optgroup->create_single_option_line("octoprint_cafile");
+
+ auto octoprint_cafile_browse = [this, optgroup] (wxWindow* parent) {
+ auto btn = new wxButton(parent, wxID_ANY, _(L(" Browse "))+"\u2026", wxDefaultPosition, wxDefaultSize, wxBU_LEFT);
+ btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("zoom.png")), wxBITMAP_TYPE_PNG));
+ auto sizer = new wxBoxSizer(wxHORIZONTAL);
+ sizer->Add(btn);
+
+ btn->Bind(wxEVT_BUTTON, [this, optgroup] (wxCommandEvent e){
+ static const auto filemasks = _(L("Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*"));
+ wxFileDialog openFileDialog(this, _(L("Open CA certificate file")), "", "", filemasks, wxFD_OPEN | wxFD_FILE_MUST_EXIST);
+ if (openFileDialog.ShowModal() != wxID_CANCEL) {
+ optgroup->set_value("octoprint_cafile", std::move(openFileDialog.GetPath()), true);
+ }
+ });
+
+ return sizer;
+ };
+
+ cafile_line.append_widget(octoprint_cafile_browse);
+ optgroup->append_line(cafile_line);
+
+ auto octoprint_cafile_hint = [this, optgroup] (wxWindow* parent) {
+ auto txt = new wxStaticText(parent, wxID_ANY,
+ _(L("HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate.")));
+ auto sizer = new wxBoxSizer(wxHORIZONTAL);
+ sizer->Add(txt);
+ return sizer;
+ };
+
+ Line cafile_hint { "", "" };
+ cafile_hint.full_width = 1;
+ cafile_hint.widget = std::move(octoprint_cafile_hint);
+ optgroup->append_line(cafile_hint);
+
+ }
+
optgroup = page->new_optgroup(_(L("Firmware")));
optgroup->append_single_option_line("gcode_flavor");
@@ -1188,6 +1261,7 @@ void TabPrinter::extruders_count_changed(size_t extruders_count){
m_preset_bundle->printers.get_edited_preset().set_num_extruders(extruders_count);
m_preset_bundle->update_multi_material_filament_presets();
build_extruder_pages();
+ reload_config();
on_value_change("extruders_count", extruders_count);
}
@@ -1275,13 +1349,8 @@ void TabPrinter::update(){
m_serial_test_btn->Disable();
}
- en = !m_config->opt_string("octoprint_host").empty();
- if ( en && m_is_user_agent)
- m_octoprint_host_test_btn->Enable();
- else
- m_octoprint_host_test_btn->Disable();
- get_field("octoprint_apikey")->toggle(en);
-
+ m_octoprint_host_test_btn->Enable(!m_config->opt_string("octoprint_host").empty());
+
bool have_multiple_extruders = m_extruders_count > 1;
get_field("toolchange_gcode")->toggle(have_multiple_extruders);
get_field("single_extruder_multi_material")->toggle(have_multiple_extruders);
@@ -1326,8 +1395,9 @@ void TabPrinter::update(){
DynamicPrintConfig new_conf = *m_config;
if (dialog->ShowModal() == wxID_YES) {
- auto wipe = static_cast(m_config->option("wipe"));
- wipe->values[i] = 0;
+ auto wipe = static_cast(m_config->option("wipe")->clone());
+ for (int w = 0; w < wipe->values.size(); w++)
+ wipe->values[w] = false;
new_conf.set_key_value("wipe", wipe);
}
else {
@@ -1350,15 +1420,13 @@ void TabPrinter::update(){
void Tab::load_current_preset()
{
auto preset = m_presets->get_edited_preset();
-// try{
-// local $SIG{ __WARN__ } = Slic3r::GUI::warning_catcher($self);
- preset.is_default ? m_btn_delete_preset->Disable() : m_btn_delete_preset->Enable(true);
- update();
- // For the printer profile, generate the extruder pages.
- on_preset_loaded();
- // Reload preset pages with the new configuration values.
- reload_config();
-// };
+ preset.is_default ? m_btn_delete_preset->Disable() : m_btn_delete_preset->Enable(true);
+ update();
+ // For the printer profile, generate the extruder pages.
+ on_preset_loaded();
+ // Reload preset pages with the new configuration values.
+ reload_config();
+
// use CallAfter because some field triggers schedule on_change calls using CallAfter,
// and we don't want them to be called after this update_dirty() as they would mark the
// preset dirty again
@@ -1369,6 +1437,12 @@ void Tab::load_current_preset()
return;
update_tab_ui();
on_presets_changed();
+
+ if (name() == "print")
+ update_frequently_changed_parameters();
+ if (m_name == "printer")
+ static_cast(this)->m_initial_extruders_count = static_cast(this)->m_extruders_count;
+ update_changed_ui();
});
}
@@ -1737,7 +1811,7 @@ bool Page::set_value(t_config_option_key opt_key, boost::any value){
ConfigOptionsGroupShp Page::new_optgroup(wxString title, int noncommon_label_width /*= -1*/)
{
//! config_ have to be "right"
- ConfigOptionsGroupShp optgroup = std::make_shared(this, title, m_config);
+ ConfigOptionsGroupShp optgroup = std::make_shared(this, title, m_config, true);
if (noncommon_label_width >= 0)
optgroup->label_width = noncommon_label_width;
@@ -1751,6 +1825,11 @@ ConfigOptionsGroupShp Page::new_optgroup(wxString title, int noncommon_label_wid
//! });
};
+ optgroup->m_get_initial_config = [this](){
+ DynamicPrintConfig config = static_cast(GetParent())->m_presets->get_selected_preset().config;
+ return config;
+ };
+
vsizer()->Add(optgroup->sizer, 0, wxEXPAND | wxALL, 10);
m_optgroups.push_back(optgroup);
diff --git a/xs/src/slic3r/GUI/Tab.hpp b/xs/src/slic3r/GUI/Tab.hpp
index 208f99fec..4f65f1475 100644
--- a/xs/src/slic3r/GUI/Tab.hpp
+++ b/xs/src/slic3r/GUI/Tab.hpp
@@ -99,6 +99,7 @@ protected:
bool m_no_controller;
std::vector m_reload_dependent_tabs = {};
+ std::vector m_dirty_options = {};
// The two following two event IDs are generated at Plater.pm by calling Wx::NewEventType.
wxEventType m_event_value_change = 0;
@@ -145,6 +146,7 @@ public:
void toggle_show_hide_incompatible();
void update_show_hide_incompatible_button();
void update_ui_from_settings();
+ void update_changed_ui();
PageShp add_options_page(wxString title, std::string icon, bool is_extruder_pages = false);
@@ -171,6 +173,7 @@ public:
protected:
void on_presets_changed();
+ void update_frequently_changed_parameters();
};
//Slic3r::GUI::Tab::Print;
@@ -211,23 +214,16 @@ public:
//Slic3r::GUI::Tab::Printer;
class TabPrinter : public Tab
{
- bool m_is_disabled_button_browse;
- bool m_is_user_agent;
- // similar event by clicking Buttons "Browse" & "Test"
- wxEventType m_event_button_browse = 0;
- wxEventType m_event_button_test = 0;
public:
wxButton* m_serial_test_btn;
wxButton* m_octoprint_host_test_btn;
size_t m_extruders_count;
+ size_t m_initial_extruders_count;
std::vector m_extruder_pages;
TabPrinter() {}
- TabPrinter(wxNotebook* parent, bool no_controller, bool is_disabled_btn_browse, bool is_user_agent) :
- Tab(parent, _(L("Printer Settings")), "printer", no_controller),
- m_is_disabled_button_browse(is_disabled_btn_browse),
- m_is_user_agent(is_user_agent) {}
+ TabPrinter(wxNotebook* parent, bool no_controller) : Tab(parent, _(L("Printer Settings")), "printer", no_controller) {}
~TabPrinter(){}
void build() override;
@@ -236,10 +232,6 @@ public:
void extruders_count_changed(size_t extruders_count);
void build_extruder_pages();
void on_preset_loaded() override;
-
- // Set the events to the callbacks posted to the main frame window (currently implemented in Perl).
- void set_event_button_browse(wxEventType evt) { m_event_button_browse = evt; }
- void set_event_button_test(wxEventType evt) { m_event_button_test = evt; }
};
class SavePresetWindow :public wxDialog
diff --git a/xs/src/slic3r/Utils/Bonjour.cpp b/xs/src/slic3r/Utils/Bonjour.cpp
new file mode 100644
index 000000000..09d9b5873
--- /dev/null
+++ b/xs/src/slic3r/Utils/Bonjour.cpp
@@ -0,0 +1,781 @@
+#include "Bonjour.hpp"
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+using boost::optional;
+using boost::system::error_code;
+namespace endian = boost::endian;
+namespace asio = boost::asio;
+using boost::asio::ip::udp;
+
+
+namespace Slic3r {
+
+
+// Minimal implementation of a MDNS/DNS-SD client
+// This implementation is extremely simple, only the bits that are useful
+// for basic MDNS discovery of OctoPi devices are present.
+// However, the bits that are present are implemented with security in mind.
+// Only fully correct DNS replies are allowed through.
+// While decoding the decoder will bail the moment it encounters anything fishy.
+// At least that's the idea. To help prove this is actually the case,
+// the implementations has been tested with AFL.
+
+
+struct DnsName: public std::string
+{
+ enum
+ {
+ MAX_RECURSION = 10, // Keep this low
+ };
+
+ static optional decode(const std::vector &buffer, size_t &offset, unsigned depth = 0)
+ {
+ // Check offset sanity:
+ if (offset + 1 >= buffer.size()) {
+ return boost::none;
+ }
+
+ // Check for recursion depth to prevent parsing names that are nested too deeply or end up cyclic:
+ if (depth >= MAX_RECURSION) {
+ return boost::none;
+ }
+
+ DnsName res;
+ const size_t bsize = buffer.size();
+
+ while (true) {
+ const char* ptr = buffer.data() + offset;
+ unsigned len = static_cast(*ptr);
+ if (len & 0xc0) {
+ // This is a recursive label
+ unsigned len_2 = static_cast(ptr[1]);
+ size_t pointer = (len & 0x3f) << 8 | len_2;
+ const auto nested = decode(buffer, pointer, depth + 1);
+ if (!nested) {
+ return boost::none;
+ } else {
+ if (res.size() > 0) {
+ res.push_back('.');
+ }
+ res.append(*nested);
+ offset += 2;
+ return std::move(res);
+ }
+ } else if (len == 0) {
+ // This is a name terminator
+ offset++;
+ break;
+ } else {
+ // This is a regular label
+ len &= 0x3f;
+ if (len + offset + 1 >= bsize) {
+ return boost::none;
+ }
+
+ res.reserve(len);
+ if (res.size() > 0) {
+ res.push_back('.');
+ }
+
+ ptr++;
+ for (const auto end = ptr + len; ptr < end; ptr++) {
+ char c = *ptr;
+ if (c >= 0x20 && c <= 0x7f) {
+ res.push_back(c);
+ } else {
+ return boost::none;
+ }
+ }
+
+ offset += len + 1;
+ }
+ }
+
+ if (res.size() > 0) {
+ return std::move(res);
+ } else {
+ return boost::none;
+ }
+ }
+};
+
+struct DnsHeader
+{
+ uint16_t id;
+ uint16_t flags;
+ uint16_t qdcount;
+ uint16_t ancount;
+ uint16_t nscount;
+ uint16_t arcount;
+
+ enum
+ {
+ SIZE = 12,
+ };
+
+ static DnsHeader decode(const std::vector &buffer) {
+ DnsHeader res;
+ const uint16_t *data_16 = reinterpret_cast(buffer.data());
+ res.id = endian::big_to_native(data_16[0]);
+ res.flags = endian::big_to_native(data_16[1]);
+ res.qdcount = endian::big_to_native(data_16[2]);
+ res.ancount = endian::big_to_native(data_16[3]);
+ res.nscount = endian::big_to_native(data_16[4]);
+ res.arcount = endian::big_to_native(data_16[5]);
+ return res;
+ }
+
+ uint32_t rrcount() const {
+ return ancount + nscount + arcount;
+ }
+};
+
+struct DnsQuestion
+{
+ enum
+ {
+ MIN_SIZE = 5,
+ };
+
+ DnsName name;
+ uint16_t type;
+ uint16_t qclass;
+
+ DnsQuestion() :
+ type(0),
+ qclass(0)
+ {}
+
+ static optional decode(const std::vector &buffer, size_t &offset)
+ {
+ auto qname = DnsName::decode(buffer, offset);
+ if (!qname) {
+ return boost::none;
+ }
+
+ DnsQuestion res;
+ res.name = std::move(*qname);
+ const uint16_t *data_16 = reinterpret_cast(buffer.data() + offset);
+ res.type = endian::big_to_native(data_16[0]);
+ res.qclass = endian::big_to_native(data_16[1]);
+
+ offset += 4;
+ return std::move(res);
+ }
+};
+
+struct DnsResource
+{
+ DnsName name;
+ uint16_t type;
+ uint16_t rclass;
+ uint32_t ttl;
+ std::vector data;
+
+ DnsResource() :
+ type(0),
+ rclass(0),
+ ttl(0)
+ {}
+
+ static optional decode(const std::vector &buffer, size_t &offset, size_t &dataoffset)
+ {
+ const size_t bsize = buffer.size();
+ if (offset + 1 >= bsize) {
+ return boost::none;
+ }
+
+ auto rname = DnsName::decode(buffer, offset);
+ if (!rname) {
+ return boost::none;
+ }
+
+ if (offset + 10 >= bsize) {
+ return boost::none;
+ }
+
+ DnsResource res;
+ res.name = std::move(*rname);
+ const uint16_t *data_16 = reinterpret_cast(buffer.data() + offset);
+ res.type = endian::big_to_native(data_16[0]);
+ res.rclass = endian::big_to_native(data_16[1]);
+ res.ttl = endian::big_to_native(*reinterpret_cast(data_16 + 2));
+ uint16_t rdlength = endian::big_to_native(data_16[4]);
+
+ offset += 10;
+ if (offset + rdlength > bsize) {
+ return boost::none;
+ }
+
+ dataoffset = offset;
+ res.data = std::move(std::vector(buffer.begin() + offset, buffer.begin() + offset + rdlength));
+ offset += rdlength;
+
+ return std::move(res);
+ }
+};
+
+struct DnsRR_A
+{
+ enum { TAG = 0x1 };
+
+ asio::ip::address_v4 ip;
+
+ static void decode(optional &result, const DnsResource &rr)
+ {
+ if (rr.data.size() == 4) {
+ DnsRR_A res;
+ const uint32_t ip = endian::big_to_native(*reinterpret_cast(rr.data.data()));
+ res.ip = asio::ip::address_v4(ip);
+ result = std::move(res);
+ }
+ }
+};
+
+struct DnsRR_AAAA
+{
+ enum { TAG = 0x1c };
+
+ asio::ip::address_v6 ip;
+
+ static void decode(optional &result, const DnsResource &rr)
+ {
+ if (rr.data.size() == 16) {
+ DnsRR_AAAA res;
+ std::array ip;
+ std::copy_n(rr.data.begin(), 16, ip.begin());
+ res.ip = asio::ip::address_v6(ip);
+ result = std::move(res);
+ }
+ }
+};
+
+struct DnsRR_SRV
+{
+ enum
+ {
+ TAG = 0x21,
+ MIN_SIZE = 8,
+ };
+
+ uint16_t priority;
+ uint16_t weight;
+ uint16_t port;
+ DnsName hostname;
+
+ static optional decode(const std::vector &buffer, const DnsResource &rr, size_t dataoffset)
+ {
+ if (rr.data.size() < MIN_SIZE) {
+ return boost::none;
+ }
+
+ DnsRR_SRV res;
+
+ const uint16_t *data_16 = reinterpret_cast(rr.data.data());
+ res.priority = endian::big_to_native(data_16[0]);
+ res.weight = endian::big_to_native(data_16[1]);
+ res.port = endian::big_to_native(data_16[2]);
+
+ size_t offset = dataoffset + 6;
+ auto hostname = DnsName::decode(buffer, offset);
+
+ if (hostname) {
+ res.hostname = std::move(*hostname);
+ return std::move(res);
+ } else {
+ return boost::none;
+ }
+ }
+};
+
+struct DnsRR_TXT
+{
+ enum
+ {
+ TAG = 0x10,
+ };
+
+ std::vector values;
+
+ static optional decode(const DnsResource &rr)
+ {
+ const size_t size = rr.data.size();
+ if (size < 2) {
+ return boost::none;
+ }
+
+ DnsRR_TXT res;
+
+ for (auto it = rr.data.begin(); it != rr.data.end(); ) {
+ unsigned val_size = static_cast(*it);
+ if (val_size == 0 || it + val_size >= rr.data.end()) {
+ return boost::none;
+ }
+ ++it;
+
+ std::string value(val_size, ' ');
+ std::copy(it, it + val_size, value.begin());
+ res.values.push_back(std::move(value));
+
+ it += val_size;
+ }
+
+ return std::move(res);
+ }
+};
+
+struct DnsSDPair
+{
+ optional srv;
+ optional