Fixed conflicts after merge with dev branch
This commit is contained in:
commit
a2dc1cd446
@ -491,17 +491,36 @@ add_custom_target(gettext_merge_po_with_pot
|
|||||||
)
|
)
|
||||||
file(GLOB L10N_PO_FILES "${L10N_DIR}/*/PrusaSlicer*.po")
|
file(GLOB L10N_PO_FILES "${L10N_DIR}/*/PrusaSlicer*.po")
|
||||||
foreach(po_file ${L10N_PO_FILES})
|
foreach(po_file ${L10N_PO_FILES})
|
||||||
GET_FILENAME_COMPONENT(po_dir "${po_file}" DIRECTORY)
|
#GET_FILENAME_COMPONENT(po_dir "${po_file}" DIRECTORY)
|
||||||
SET(po_new_file "${po_dir}/PrusaSlicer_.po")
|
#SET(po_new_file "${po_dir}/PrusaSlicer_.po")
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET gettext_merge_po_with_pot PRE_BUILD
|
TARGET gettext_merge_po_with_pot PRE_BUILD
|
||||||
COMMAND msgmerge -N -o ${po_file} ${po_file} "${L10N_DIR}/PrusaSlicer.pot"
|
COMMAND msgmerge -N -o ${po_file} ${po_file} "${L10N_DIR}/PrusaSlicer.pot"
|
||||||
DEPENDS ${po_file}
|
DEPENDS ${po_file}
|
||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
add_custom_target(gettext_concat_wx_po_with_po
|
||||||
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||||
|
COMMENT "Concatenate and merge wxWidgets localization po with PrusaSlicer po file"
|
||||||
|
)
|
||||||
|
file(GLOB L10N_PO_FILES "${L10N_DIR}/*/PrusaSlicer*.po")
|
||||||
|
file(GLOB L10N_WX_PO_FILES "${L10N_DIR}/*/PrusaSlicer*.po")
|
||||||
|
foreach(po_file ${L10N_PO_FILES})
|
||||||
|
GET_FILENAME_COMPONENT(po_dir "${po_file}" DIRECTORY)
|
||||||
|
GET_FILENAME_COMPONENT(po_dir_name "${po_dir}" NAME)
|
||||||
|
SET(wx_po_file "${L10N_DIR}/wx_locale/${po_dir_name}.po")
|
||||||
|
#SET(po_new_file "${po_dir}/PrusaSlicer_.po")
|
||||||
|
add_custom_command(
|
||||||
|
TARGET gettext_concat_wx_po_with_po PRE_BUILD
|
||||||
|
COMMAND msgcat --use-first -o ${po_file} ${po_file} ${wx_po_file}
|
||||||
|
DEPENDS ${po_file}
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
add_custom_target(gettext_po_to_mo
|
add_custom_target(gettext_po_to_mo
|
||||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||||
COMMENT "Generate localization po files (binary) from mo files (texts)"
|
COMMENT "Generate localization mo files (binary) from po files (texts)"
|
||||||
)
|
)
|
||||||
file(GLOB L10N_PO_FILES "${L10N_DIR}/*/PrusaSlicer*.po")
|
file(GLOB L10N_PO_FILES "${L10N_DIR}/*/PrusaSlicer*.po")
|
||||||
foreach(po_file ${L10N_PO_FILES})
|
foreach(po_file ${L10N_PO_FILES})
|
||||||
|
2
deps/wxWidgets/wxWidgets.cmake
vendored
2
deps/wxWidgets/wxWidgets.cmake
vendored
@ -13,7 +13,7 @@ prusaslicer_add_cmake_project(wxWidgets
|
|||||||
# GIT_REPOSITORY "https://github.com/prusa3d/wxWidgets"
|
# GIT_REPOSITORY "https://github.com/prusa3d/wxWidgets"
|
||||||
# GIT_TAG tm_cross_compile #${_wx_git_tag}
|
# GIT_TAG tm_cross_compile #${_wx_git_tag}
|
||||||
URL https://github.com/prusa3d/wxWidgets/archive/refs/heads/v3.1.4-patched.zip
|
URL https://github.com/prusa3d/wxWidgets/archive/refs/heads/v3.1.4-patched.zip
|
||||||
URL_HASH SHA256=1dc34e0ef90c2a05b36df3c6a87ff80254186e23d5035b6500e82f4da628152a
|
URL_HASH SHA256=69dec874981d2fc3d90345660c27f3450d8430c483e8446edcc87b6ed18bff8f
|
||||||
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG
|
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DwxBUILD_PRECOMP=ON
|
-DwxBUILD_PRECOMP=ON
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-12-20 10:09+0100\n"
|
"POT-Creation-Date: 2021-12-21 22:19+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -77,6 +77,11 @@ msgid ""
|
|||||||
"and we would be glad if you reported it."
|
"and we would be glad if you reported it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:84
|
||||||
|
#, possible-boost-format
|
||||||
|
msgid "PrusaSlicer has encountered a fatal error: \"%1%\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:85
|
#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:85
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please save your project and restart PrusaSlicer. We would be glad if you "
|
"Please save your project and restart PrusaSlicer. We would be glad if you "
|
||||||
@ -209,8 +214,8 @@ msgstr ""
|
|||||||
#: src/slic3r/GUI/BedShapeDialog.cpp:64 src/slic3r/GUI/ConfigWizard.cpp:262
|
#: src/slic3r/GUI/BedShapeDialog.cpp:64 src/slic3r/GUI/ConfigWizard.cpp:262
|
||||||
#: src/slic3r/GUI/ConfigWizard.cpp:1476 src/slic3r/GUI/ConfigWizard.cpp:1490
|
#: src/slic3r/GUI/ConfigWizard.cpp:1476 src/slic3r/GUI/ConfigWizard.cpp:1490
|
||||||
#: src/slic3r/GUI/ExtruderSequenceDialog.cpp:100
|
#: src/slic3r/GUI/ExtruderSequenceDialog.cpp:100
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3166 src/slic3r/GUI/GCodeViewer.cpp:3172
|
#: src/slic3r/GUI/GCodeViewer.cpp:3176 src/slic3r/GUI/GCodeViewer.cpp:3182
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3180 src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:192
|
#: src/slic3r/GUI/GCodeViewer.cpp:3190 src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:192
|
||||||
#: src/slic3r/GUI/GUI_ObjectLayers.cpp:145
|
#: src/slic3r/GUI/GUI_ObjectLayers.cpp:145
|
||||||
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:320
|
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:320
|
||||||
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409
|
#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409
|
||||||
@ -285,7 +290,7 @@ msgstr ""
|
|||||||
msgid "Load shape from STL..."
|
msgid "Load shape from STL..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3695
|
#: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3705
|
||||||
#: src/slic3r/GUI/MainFrame.cpp:2140
|
#: src/slic3r/GUI/MainFrame.cpp:2140
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1690,6 +1695,10 @@ msgstr ""
|
|||||||
msgid "Firmware image:"
|
msgid "Firmware image:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/GUI/FirmwareDialog.cpp:814
|
||||||
|
msgid "Select a file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/FirmwareDialog.cpp:816
|
#: src/slic3r/GUI/FirmwareDialog.cpp:816
|
||||||
#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:297
|
#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:297
|
||||||
#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:372
|
#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:372
|
||||||
@ -1808,238 +1817,238 @@ msgstr ""
|
|||||||
msgid "Loading of the \"%1%\""
|
msgid "Loading of the \"%1%\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:264
|
#: src/slic3r/GUI/GCodeViewer.cpp:274
|
||||||
msgid "Tool position"
|
msgid "Tool position"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:1452
|
#: src/slic3r/GUI/GCodeViewer.cpp:1462
|
||||||
msgid "Generating toolpaths"
|
msgid "Generating toolpaths"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:1512
|
#: src/slic3r/GUI/GCodeViewer.cpp:1522
|
||||||
msgid "Generating vertex buffer"
|
msgid "Generating vertex buffer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:1847
|
#: src/slic3r/GUI/GCodeViewer.cpp:1857
|
||||||
msgid "Generating index buffers"
|
msgid "Generating index buffers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3032
|
#: src/slic3r/GUI/GCodeViewer.cpp:3042
|
||||||
msgid "Click to hide"
|
msgid "Click to hide"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3032
|
#: src/slic3r/GUI/GCodeViewer.cpp:3042
|
||||||
msgid "Click to show"
|
msgid "Click to show"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3166
|
#: src/slic3r/GUI/GCodeViewer.cpp:3176
|
||||||
msgid "up to"
|
msgid "up to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3172
|
#: src/slic3r/GUI/GCodeViewer.cpp:3182
|
||||||
msgid "above"
|
msgid "above"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3180
|
#: src/slic3r/GUI/GCodeViewer.cpp:3190
|
||||||
msgid "from"
|
msgid "from"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3180
|
#: src/slic3r/GUI/GCodeViewer.cpp:3190
|
||||||
msgid "to"
|
msgid "to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3230 src/slic3r/GUI/GCodeViewer.cpp:3231
|
#: src/slic3r/GUI/GCodeViewer.cpp:3240 src/slic3r/GUI/GCodeViewer.cpp:3241
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3280
|
#: src/slic3r/GUI/GCodeViewer.cpp:3290
|
||||||
msgid "Percentage"
|
msgid "Percentage"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3241 src/slic3r/GUI/GCodeViewer.cpp:3280
|
#: src/slic3r/GUI/GCodeViewer.cpp:3251 src/slic3r/GUI/GCodeViewer.cpp:3290
|
||||||
#: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:957
|
#: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:957
|
||||||
msgid "Feature type"
|
msgid "Feature type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3241 src/slic3r/GUI/GCodeViewer.cpp:3280
|
#: src/slic3r/GUI/GCodeViewer.cpp:3251 src/slic3r/GUI/GCodeViewer.cpp:3290
|
||||||
#: src/slic3r/GUI/RammingChart.cpp:90
|
#: src/slic3r/GUI/RammingChart.cpp:90
|
||||||
msgid "Time"
|
msgid "Time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3280 src/slic3r/GUI/GCodeViewer.cpp:3291
|
#: src/slic3r/GUI/GCodeViewer.cpp:3290 src/slic3r/GUI/GCodeViewer.cpp:3301
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3552
|
#: src/slic3r/GUI/GCodeViewer.cpp:3562
|
||||||
msgid "Used filament"
|
msgid "Used filament"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3283
|
#: src/slic3r/GUI/GCodeViewer.cpp:3293
|
||||||
msgid "Height (mm)"
|
msgid "Height (mm)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3284
|
#: src/slic3r/GUI/GCodeViewer.cpp:3294
|
||||||
msgid "Width (mm)"
|
msgid "Width (mm)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3285
|
#: src/slic3r/GUI/GCodeViewer.cpp:3295
|
||||||
msgid "Speed (mm/s)"
|
msgid "Speed (mm/s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3286
|
#: src/slic3r/GUI/GCodeViewer.cpp:3296
|
||||||
msgid "Fan Speed (%)"
|
msgid "Fan Speed (%)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3287
|
#: src/slic3r/GUI/GCodeViewer.cpp:3297
|
||||||
msgid "Temperature (°C)"
|
msgid "Temperature (°C)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3288
|
#: src/slic3r/GUI/GCodeViewer.cpp:3298
|
||||||
msgid "Volumetric flow rate (mm³/s)"
|
msgid "Volumetric flow rate (mm³/s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3291 src/slic3r/GUI/GUI_Preview.cpp:224
|
#: src/slic3r/GUI/GCodeViewer.cpp:3301 src/slic3r/GUI/GUI_Preview.cpp:224
|
||||||
#: src/slic3r/GUI/GUI_Preview.cpp:957
|
#: src/slic3r/GUI/GUI_Preview.cpp:957
|
||||||
msgid "Tool"
|
msgid "Tool"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3294 src/slic3r/GUI/GUI_Preview.cpp:225
|
#: src/slic3r/GUI/GCodeViewer.cpp:3304 src/slic3r/GUI/GUI_Preview.cpp:225
|
||||||
#: src/slic3r/GUI/GUI_Preview.cpp:956
|
#: src/slic3r/GUI/GUI_Preview.cpp:956
|
||||||
msgid "Color Print"
|
msgid "Color Print"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3332 src/slic3r/GUI/GCodeViewer.cpp:3378
|
#: src/slic3r/GUI/GCodeViewer.cpp:3342 src/slic3r/GUI/GCodeViewer.cpp:3388
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3383 src/slic3r/GUI/GUI_ObjectList.cpp:312
|
#: src/slic3r/GUI/GCodeViewer.cpp:3393 src/slic3r/GUI/GUI_ObjectList.cpp:312
|
||||||
#: src/slic3r/GUI/wxExtensions.cpp:536 src/libslic3r/PrintConfig.cpp:769
|
#: src/slic3r/GUI/wxExtensions.cpp:536 src/libslic3r/PrintConfig.cpp:769
|
||||||
msgid "Extruder"
|
msgid "Extruder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3355
|
#: src/slic3r/GUI/GCodeViewer.cpp:3365
|
||||||
msgid "Default color"
|
msgid "Default color"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3378
|
#: src/slic3r/GUI/GCodeViewer.cpp:3388
|
||||||
msgid "default color"
|
msgid "default color"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3477 src/slic3r/GUI/GCodeViewer.cpp:3533
|
#: src/slic3r/GUI/GCodeViewer.cpp:3487 src/slic3r/GUI/GCodeViewer.cpp:3543
|
||||||
msgid "Color change"
|
msgid "Color change"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3496 src/slic3r/GUI/GCodeViewer.cpp:3531
|
#: src/slic3r/GUI/GCodeViewer.cpp:3506 src/slic3r/GUI/GCodeViewer.cpp:3541
|
||||||
msgid "Print"
|
msgid "Print"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3532 src/slic3r/GUI/GCodeViewer.cpp:3566
|
#: src/slic3r/GUI/GCodeViewer.cpp:3542 src/slic3r/GUI/GCodeViewer.cpp:3576
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3549 src/slic3r/GUI/GCodeViewer.cpp:3552
|
#: src/slic3r/GUI/GCodeViewer.cpp:3559 src/slic3r/GUI/GCodeViewer.cpp:3562
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3549 src/slic3r/GUI/GCodeViewer.cpp:3552
|
#: src/slic3r/GUI/GCodeViewer.cpp:3559 src/slic3r/GUI/GCodeViewer.cpp:3562
|
||||||
msgid "Remaining time"
|
msgid "Remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3549 src/slic3r/GUI/GCodeViewer.cpp:3552
|
#: src/slic3r/GUI/GCodeViewer.cpp:3559 src/slic3r/GUI/GCodeViewer.cpp:3562
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3595 src/slic3r/GUI/GUI_Preview.cpp:1048
|
#: src/slic3r/GUI/GCodeViewer.cpp:3605 src/slic3r/GUI/GUI_Preview.cpp:1048
|
||||||
#: src/libslic3r/PrintConfig.cpp:2881
|
#: src/libslic3r/PrintConfig.cpp:2881
|
||||||
msgid "Travel"
|
msgid "Travel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3598
|
#: src/slic3r/GUI/GCodeViewer.cpp:3608
|
||||||
msgid "Movement"
|
msgid "Movement"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3599
|
#: src/slic3r/GUI/GCodeViewer.cpp:3609
|
||||||
msgid "Extrusion"
|
msgid "Extrusion"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3600 src/slic3r/GUI/Tab.cpp:1838
|
#: src/slic3r/GUI/GCodeViewer.cpp:3610 src/slic3r/GUI/Tab.cpp:1838
|
||||||
#: src/slic3r/GUI/Tab.cpp:2773
|
#: src/slic3r/GUI/Tab.cpp:2773
|
||||||
msgid "Retraction"
|
msgid "Retraction"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3617 src/slic3r/GUI/GCodeViewer.cpp:3620
|
#: src/slic3r/GUI/GCodeViewer.cpp:3627 src/slic3r/GUI/GCodeViewer.cpp:3630
|
||||||
#: src/slic3r/GUI/GUI_Preview.cpp:1049
|
#: src/slic3r/GUI/GUI_Preview.cpp:1049
|
||||||
msgid "Wipe"
|
msgid "Wipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3652 src/slic3r/GUI/GUI_Preview.cpp:257
|
#: src/slic3r/GUI/GCodeViewer.cpp:3662 src/slic3r/GUI/GUI_Preview.cpp:257
|
||||||
#: src/slic3r/GUI/GUI_Preview.cpp:272
|
#: src/slic3r/GUI/GUI_Preview.cpp:272
|
||||||
msgid "Options"
|
msgid "Options"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3655 src/slic3r/GUI/GUI_Preview.cpp:1050
|
#: src/slic3r/GUI/GCodeViewer.cpp:3665 src/slic3r/GUI/GUI_Preview.cpp:1050
|
||||||
msgid "Retractions"
|
msgid "Retractions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3656 src/slic3r/GUI/GUI_Preview.cpp:1051
|
#: src/slic3r/GUI/GCodeViewer.cpp:3666 src/slic3r/GUI/GUI_Preview.cpp:1051
|
||||||
msgid "Deretractions"
|
msgid "Deretractions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3657 src/slic3r/GUI/GUI_Preview.cpp:1052
|
#: src/slic3r/GUI/GCodeViewer.cpp:3667 src/slic3r/GUI/GUI_Preview.cpp:1052
|
||||||
msgid "Seams"
|
msgid "Seams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3658 src/slic3r/GUI/GUI_Preview.cpp:1053
|
#: src/slic3r/GUI/GCodeViewer.cpp:3668 src/slic3r/GUI/GUI_Preview.cpp:1053
|
||||||
msgid "Tool changes"
|
msgid "Tool changes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3659 src/slic3r/GUI/GUI_Preview.cpp:1054
|
#: src/slic3r/GUI/GCodeViewer.cpp:3669 src/slic3r/GUI/GUI_Preview.cpp:1054
|
||||||
msgid "Color changes"
|
msgid "Color changes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3660 src/slic3r/GUI/GUI_Preview.cpp:1055
|
#: src/slic3r/GUI/GCodeViewer.cpp:3670 src/slic3r/GUI/GUI_Preview.cpp:1055
|
||||||
msgid "Print pauses"
|
msgid "Print pauses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3661 src/slic3r/GUI/GUI_Preview.cpp:1056
|
#: src/slic3r/GUI/GCodeViewer.cpp:3671 src/slic3r/GUI/GUI_Preview.cpp:1056
|
||||||
msgid "Custom G-codes"
|
msgid "Custom G-codes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3681 src/slic3r/GUI/GCodeViewer.cpp:3700
|
#: src/slic3r/GUI/GCodeViewer.cpp:3691 src/slic3r/GUI/GCodeViewer.cpp:3710
|
||||||
#: src/slic3r/GUI/GUI.cpp:341 src/slic3r/GUI/Plater.cpp:821
|
#: src/slic3r/GUI/GUI.cpp:341 src/slic3r/GUI/Plater.cpp:821
|
||||||
#: src/libslic3r/PrintConfig.cpp:299
|
#: src/libslic3r/PrintConfig.cpp:299
|
||||||
msgid "Printer"
|
msgid "Printer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3683 src/slic3r/GUI/GCodeViewer.cpp:3705
|
#: src/slic3r/GUI/GCodeViewer.cpp:3693 src/slic3r/GUI/GCodeViewer.cpp:3715
|
||||||
#: src/slic3r/GUI/GUI.cpp:337 src/slic3r/GUI/Plater.cpp:817
|
#: src/slic3r/GUI/GUI.cpp:337 src/slic3r/GUI/Plater.cpp:817
|
||||||
msgid "Print settings"
|
msgid "Print settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3686 src/slic3r/GUI/GCodeViewer.cpp:3712
|
#: src/slic3r/GUI/GCodeViewer.cpp:3696 src/slic3r/GUI/GCodeViewer.cpp:3722
|
||||||
#: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:818
|
#: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:818
|
||||||
#: src/slic3r/GUI/Tab.cpp:1938 src/slic3r/GUI/Tab.cpp:1939
|
#: src/slic3r/GUI/Tab.cpp:1938 src/slic3r/GUI/Tab.cpp:1939
|
||||||
msgid "Filament"
|
msgid "Filament"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3725
|
#: src/slic3r/GUI/GCodeViewer.cpp:3735
|
||||||
msgid "Estimated printing times"
|
msgid "Estimated printing times"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3744
|
#: src/slic3r/GUI/GCodeViewer.cpp:3754
|
||||||
msgid "Normal mode"
|
msgid "Normal mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3745
|
#: src/slic3r/GUI/GCodeViewer.cpp:3755
|
||||||
msgid "Stealth mode"
|
msgid "Stealth mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3752 src/libslic3r/PrintConfig.cpp:1166
|
#: src/slic3r/GUI/GCodeViewer.cpp:3762 src/libslic3r/PrintConfig.cpp:1166
|
||||||
#: src/libslic3r/PrintConfig.cpp:1184 src/libslic3r/PrintConfig.cpp:1194
|
#: src/libslic3r/PrintConfig.cpp:1184 src/libslic3r/PrintConfig.cpp:1194
|
||||||
#: src/libslic3r/PrintConfig.cpp:1239
|
#: src/libslic3r/PrintConfig.cpp:1239
|
||||||
msgid "First layer"
|
msgid "First layer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3753
|
#: src/slic3r/GUI/GCodeViewer.cpp:3763
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3787
|
#: src/slic3r/GUI/GCodeViewer.cpp:3797
|
||||||
msgid "Show stealth mode"
|
msgid "Show stealth mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GCodeViewer.cpp:3791
|
#: src/slic3r/GUI/GCodeViewer.cpp:3801
|
||||||
msgid "Show normal mode"
|
msgid "Show normal mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -3192,10 +3201,6 @@ msgstr ""
|
|||||||
msgid "Remember my choice"
|
msgid "Remember my choice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/GUI_App.cpp:1158
|
|
||||||
msgid "Loading configuration"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/slic3r/GUI/GUI_App.cpp:1191
|
#: src/slic3r/GUI/GUI_App.cpp:1191
|
||||||
#, possible-boost-format
|
#, possible-boost-format
|
||||||
msgid "New release version %1% is available."
|
msgid "New release version %1% is available."
|
||||||
@ -4625,6 +4630,34 @@ msgstr ""
|
|||||||
msgid "An unexpected error occured"
|
msgid "An unexpected error occured"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/GUI/Jobs/RotoptimizeJob.hpp:21
|
||||||
|
msgid "Best surface quality"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/GUI/Jobs/RotoptimizeJob.hpp:23
|
||||||
|
msgid "Optimize object rotation for best surface quality."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/GUI/Jobs/RotoptimizeJob.hpp:24
|
||||||
|
msgid "Reduced overhang slopes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/GUI/Jobs/RotoptimizeJob.hpp:26
|
||||||
|
msgid ""
|
||||||
|
"Optimize object rotation to have minimum amount of overhangs needing support "
|
||||||
|
"structures.\n"
|
||||||
|
"Note that this method will try to find the best surface of the object for "
|
||||||
|
"touching the print bed if no elevation is set."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/GUI/Jobs/RotoptimizeJob.hpp:30
|
||||||
|
msgid "Lowest Z height"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/GUI/Jobs/RotoptimizeJob.hpp:32
|
||||||
|
msgid "Rotate the model to have the lowest z height for faster print time."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:59
|
#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:59
|
||||||
msgid "Searching for optimal orientation"
|
msgid "Searching for optimal orientation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -5982,32 +6015,32 @@ msgstr ""
|
|||||||
msgid "Swap Y/Z axes"
|
msgid "Swap Y/Z axes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/MsgDialog.cpp:198
|
#: src/slic3r/GUI/MsgDialog.cpp:203
|
||||||
#, possible-c-format, possible-boost-format
|
#, possible-c-format, possible-boost-format
|
||||||
msgid "%s error"
|
msgid "%s error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/MsgDialog.cpp:199
|
#: src/slic3r/GUI/MsgDialog.cpp:204
|
||||||
#, possible-c-format, possible-boost-format
|
#, possible-c-format, possible-boost-format
|
||||||
msgid "%s has encountered an error"
|
msgid "%s has encountered an error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/MsgDialog.cpp:218
|
#: src/slic3r/GUI/MsgDialog.cpp:223
|
||||||
#, possible-c-format, possible-boost-format
|
#, possible-c-format, possible-boost-format
|
||||||
msgid "%s warning"
|
msgid "%s warning"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/MsgDialog.cpp:219
|
#: src/slic3r/GUI/MsgDialog.cpp:224
|
||||||
#, possible-c-format, possible-boost-format
|
#, possible-c-format, possible-boost-format
|
||||||
msgid "%s has a warning"
|
msgid "%s has a warning"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/MsgDialog.cpp:232 src/slic3r/GUI/MsgDialog.cpp:245
|
#: src/slic3r/GUI/MsgDialog.cpp:237 src/slic3r/GUI/MsgDialog.cpp:250
|
||||||
#, possible-c-format, possible-boost-format
|
#, possible-c-format, possible-boost-format
|
||||||
msgid "%s info"
|
msgid "%s info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/MsgDialog.cpp:273
|
#: src/slic3r/GUI/MsgDialog.cpp:278
|
||||||
#, possible-c-format, possible-boost-format
|
#, possible-c-format, possible-boost-format
|
||||||
msgid "%s information"
|
msgid "%s information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -7076,35 +7109,35 @@ msgstr ""
|
|||||||
#: src/slic3r/GUI/Preferences.cpp:220
|
#: src/slic3r/GUI/Preferences.cpp:220
|
||||||
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:896
|
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:896
|
||||||
msgid ""
|
msgid ""
|
||||||
"Ask to save unsaved changes when closing the application or when loading a "
|
"Ask to save unsaved changes in presets when closing the application or when "
|
||||||
"new project"
|
"loading a new project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/Preferences.cpp:222
|
#: src/slic3r/GUI/Preferences.cpp:222
|
||||||
msgid ""
|
msgid ""
|
||||||
"Always ask for unsaved changes, when: \n"
|
"Always ask for unsaved changes in presets, when: \n"
|
||||||
"- Closing PrusaSlicer while some presets are modified,\n"
|
"- Closing PrusaSlicer while some presets are modified,\n"
|
||||||
"- Loading a new project while some presets are modified"
|
"- Loading a new project while some presets are modified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/Preferences.cpp:229
|
#: src/slic3r/GUI/Preferences.cpp:229
|
||||||
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:895
|
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:895
|
||||||
msgid "Ask for unsaved changes when selecting new preset"
|
msgid "Ask for unsaved changes in presets when selecting new preset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/Preferences.cpp:231
|
#: src/slic3r/GUI/Preferences.cpp:231
|
||||||
msgid ""
|
msgid ""
|
||||||
"Always ask for unsaved changes when selecting new preset or resetting a "
|
"Always ask for unsaved changes in presets when selecting new preset or "
|
||||||
"preset"
|
"resetting a preset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/Preferences.cpp:236
|
#: src/slic3r/GUI/Preferences.cpp:236
|
||||||
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:894
|
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:894
|
||||||
msgid "Ask for unsaved changes when creating new project"
|
msgid "Ask for unsaved changes in presets when creating new project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/Preferences.cpp:238
|
#: src/slic3r/GUI/Preferences.cpp:238
|
||||||
msgid "Always ask for unsaved changes when creating new project"
|
msgid "Always ask for unsaved changes in presets when creating new project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/Preferences.cpp:245
|
#: src/slic3r/GUI/Preferences.cpp:245
|
||||||
@ -8739,19 +8772,20 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:897
|
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:897
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will not be asked about the unsaved changes the next time you create new "
|
"You will not be asked about the unsaved changes in presets the next time you "
|
||||||
"project"
|
"create new project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:898
|
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:898
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will not be asked about the unsaved changes the next time you switch a "
|
"You will not be asked about the unsaved changes in presets the next time you "
|
||||||
"preset"
|
"switch a preset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:899
|
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:899
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will not be asked about the unsaved changes the next time you: \n"
|
"You will not be asked about the unsaved changes in presets the next time "
|
||||||
|
"you: \n"
|
||||||
"- Closing PrusaSlicer while some presets are modified,\n"
|
"- Closing PrusaSlicer while some presets are modified,\n"
|
||||||
"- Loading a new project while some presets are modified"
|
"- Loading a new project while some presets are modified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -8832,6 +8866,10 @@ msgstr ""
|
|||||||
msgid "Extruders count"
|
msgid "Extruders count"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1444
|
||||||
|
msgid "Select presets to compare"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1493
|
#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1493
|
||||||
msgid "Show all presets (including incompatible)"
|
msgid "Show all presets (including incompatible)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -9377,6 +9415,27 @@ msgid ""
|
|||||||
"Error: \"%2%\""
|
"Error: \"%2%\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/Config/Snapshot.cpp:584
|
||||||
|
msgid "Taking a configuration snapshot failed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/Config/Snapshot.cpp:598
|
||||||
|
msgid ""
|
||||||
|
"PrusaSlicer has encountered an error while taking a configuration snapshot."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/Config/Snapshot.cpp:599
|
||||||
|
msgid "PrusaSlicer error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/Config/Snapshot.cpp:601
|
||||||
|
msgid "Continue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/slic3r/Config/Snapshot.cpp:601
|
||||||
|
msgid "Abort"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/libslic3r/GCode.cpp:539
|
#: src/libslic3r/GCode.cpp:539
|
||||||
msgid "There is an object with no extrusions in the first layer."
|
msgid "There is an object with no extrusions in the first layer."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -9419,7 +9478,11 @@ msgid ""
|
|||||||
"This may cause problems in g-code visualization and printing time estimation."
|
"This may cause problems in g-code visualization and printing time estimation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/libslic3r/GCode.cpp:1420
|
#: src/libslic3r/GCode.cpp:1217 src/libslic3r/GCode.cpp:1228
|
||||||
|
msgid "No extrusions were generated for objects."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/libslic3r/GCode.cpp:1426
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your print is very close to the priming regions. Make sure there is no "
|
"Your print is very close to the priming regions. Make sure there is no "
|
||||||
"collision."
|
"collision."
|
||||||
|
@ -44,6 +44,7 @@ src/slic3r/GUI/Jobs/ArrangeJob.cpp
|
|||||||
src/slic3r/GUI/Jobs/FillBedJob.cpp
|
src/slic3r/GUI/Jobs/FillBedJob.cpp
|
||||||
src/slic3r/GUI/Jobs/Job.cpp
|
src/slic3r/GUI/Jobs/Job.cpp
|
||||||
src/slic3r/GUI/Jobs/PlaterJob.cpp
|
src/slic3r/GUI/Jobs/PlaterJob.cpp
|
||||||
|
src/slic3r/GUI/Jobs/RotoptimizeJob.hpp
|
||||||
src/slic3r/GUI/Jobs/RotoptimizeJob.cpp
|
src/slic3r/GUI/Jobs/RotoptimizeJob.cpp
|
||||||
src/slic3r/GUI/Jobs/SLAImportJob.cpp
|
src/slic3r/GUI/Jobs/SLAImportJob.cpp
|
||||||
src/slic3r/GUI/KBShortcutsDialog.cpp
|
src/slic3r/GUI/KBShortcutsDialog.cpp
|
||||||
@ -83,6 +84,7 @@ src/slic3r/Utils/PresetUpdater.cpp
|
|||||||
src/slic3r/Utils/Http.cpp
|
src/slic3r/Utils/Http.cpp
|
||||||
src/slic3r/Utils/Process.cpp
|
src/slic3r/Utils/Process.cpp
|
||||||
src/slic3r/Utils/Repetier.cpp
|
src/slic3r/Utils/Repetier.cpp
|
||||||
|
src/slic3r/Config/Snapshot.cpp
|
||||||
src/libslic3r/GCode.cpp
|
src/libslic3r/GCode.cpp
|
||||||
src/libslic3r/ExtrusionEntity.cpp
|
src/libslic3r/ExtrusionEntity.cpp
|
||||||
src/libslic3r/Flow.cpp
|
src/libslic3r/Flow.cpp
|
||||||
|
9686
resources/localization/wx_locale/af.po
Normal file
9686
resources/localization/wx_locale/af.po
Normal file
File diff suppressed because it is too large
Load Diff
9539
resources/localization/wx_locale/an.po
Normal file
9539
resources/localization/wx_locale/an.po
Normal file
File diff suppressed because it is too large
Load Diff
9429
resources/localization/wx_locale/ar.po
Normal file
9429
resources/localization/wx_locale/ar.po
Normal file
File diff suppressed because it is too large
Load Diff
9697
resources/localization/wx_locale/ca.po
Normal file
9697
resources/localization/wx_locale/ca.po
Normal file
File diff suppressed because it is too large
Load Diff
10082
resources/localization/wx_locale/ca@valencia.po
Normal file
10082
resources/localization/wx_locale/ca@valencia.po
Normal file
File diff suppressed because it is too large
Load Diff
9866
resources/localization/wx_locale/cs.po
Normal file
9866
resources/localization/wx_locale/cs.po
Normal file
File diff suppressed because it is too large
Load Diff
8857
resources/localization/wx_locale/da.po
Normal file
8857
resources/localization/wx_locale/da.po
Normal file
File diff suppressed because it is too large
Load Diff
9968
resources/localization/wx_locale/de.po
Normal file
9968
resources/localization/wx_locale/de.po
Normal file
File diff suppressed because it is too large
Load Diff
10178
resources/localization/wx_locale/el.po
Normal file
10178
resources/localization/wx_locale/el.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
resources/localization/wx_locale/en.mo
Normal file
BIN
resources/localization/wx_locale/en.mo
Normal file
Binary file not shown.
8761
resources/localization/wx_locale/en.po
Normal file
8761
resources/localization/wx_locale/en.po
Normal file
File diff suppressed because it is too large
Load Diff
8893
resources/localization/wx_locale/es.po
Normal file
8893
resources/localization/wx_locale/es.po
Normal file
File diff suppressed because it is too large
Load Diff
9617
resources/localization/wx_locale/eu.po
Normal file
9617
resources/localization/wx_locale/eu.po
Normal file
File diff suppressed because it is too large
Load Diff
8760
resources/localization/wx_locale/fa_IR.po
Normal file
8760
resources/localization/wx_locale/fa_IR.po
Normal file
File diff suppressed because it is too large
Load Diff
9883
resources/localization/wx_locale/fi.po
Normal file
9883
resources/localization/wx_locale/fi.po
Normal file
File diff suppressed because it is too large
Load Diff
10005
resources/localization/wx_locale/fr.po
Normal file
10005
resources/localization/wx_locale/fr.po
Normal file
File diff suppressed because it is too large
Load Diff
10015
resources/localization/wx_locale/gl_ES.po
Normal file
10015
resources/localization/wx_locale/gl_ES.po
Normal file
File diff suppressed because it is too large
Load Diff
10078
resources/localization/wx_locale/hi.po
Normal file
10078
resources/localization/wx_locale/hi.po
Normal file
File diff suppressed because it is too large
Load Diff
8868
resources/localization/wx_locale/hr.po
Normal file
8868
resources/localization/wx_locale/hr.po
Normal file
File diff suppressed because it is too large
Load Diff
9992
resources/localization/wx_locale/hu.po
Normal file
9992
resources/localization/wx_locale/hu.po
Normal file
File diff suppressed because it is too large
Load Diff
9229
resources/localization/wx_locale/id.po
Normal file
9229
resources/localization/wx_locale/id.po
Normal file
File diff suppressed because it is too large
Load Diff
9987
resources/localization/wx_locale/it.po
Normal file
9987
resources/localization/wx_locale/it.po
Normal file
File diff suppressed because it is too large
Load Diff
10196
resources/localization/wx_locale/ja.po
Normal file
10196
resources/localization/wx_locale/ja.po
Normal file
File diff suppressed because it is too large
Load Diff
9772
resources/localization/wx_locale/ko.po
Normal file
9772
resources/localization/wx_locale/ko.po
Normal file
File diff suppressed because it is too large
Load Diff
9772
resources/localization/wx_locale/ko_KR.po
Normal file
9772
resources/localization/wx_locale/ko_KR.po
Normal file
File diff suppressed because it is too large
Load Diff
8839
resources/localization/wx_locale/lt.po
Normal file
8839
resources/localization/wx_locale/lt.po
Normal file
File diff suppressed because it is too large
Load Diff
9803
resources/localization/wx_locale/lv.po
Normal file
9803
resources/localization/wx_locale/lv.po
Normal file
File diff suppressed because it is too large
Load Diff
10117
resources/localization/wx_locale/ms.po
Normal file
10117
resources/localization/wx_locale/ms.po
Normal file
File diff suppressed because it is too large
Load Diff
9856
resources/localization/wx_locale/nb.po
Normal file
9856
resources/localization/wx_locale/nb.po
Normal file
File diff suppressed because it is too large
Load Diff
9134
resources/localization/wx_locale/ne.po
Normal file
9134
resources/localization/wx_locale/ne.po
Normal file
File diff suppressed because it is too large
Load Diff
9420
resources/localization/wx_locale/nl.po
Normal file
9420
resources/localization/wx_locale/nl.po
Normal file
File diff suppressed because it is too large
Load Diff
10137
resources/localization/wx_locale/pl.po
Normal file
10137
resources/localization/wx_locale/pl.po
Normal file
File diff suppressed because it is too large
Load Diff
10064
resources/localization/wx_locale/pt.po
Normal file
10064
resources/localization/wx_locale/pt.po
Normal file
File diff suppressed because it is too large
Load Diff
9948
resources/localization/wx_locale/pt_BR.po
Normal file
9948
resources/localization/wx_locale/pt_BR.po
Normal file
File diff suppressed because it is too large
Load Diff
9759
resources/localization/wx_locale/ro.po
Normal file
9759
resources/localization/wx_locale/ro.po
Normal file
File diff suppressed because it is too large
Load Diff
8691
resources/localization/wx_locale/ru.po
Normal file
8691
resources/localization/wx_locale/ru.po
Normal file
File diff suppressed because it is too large
Load Diff
9802
resources/localization/wx_locale/sk.po
Normal file
9802
resources/localization/wx_locale/sk.po
Normal file
File diff suppressed because it is too large
Load Diff
10104
resources/localization/wx_locale/sl.po
Normal file
10104
resources/localization/wx_locale/sl.po
Normal file
File diff suppressed because it is too large
Load Diff
8864
resources/localization/wx_locale/sq.po
Normal file
8864
resources/localization/wx_locale/sq.po
Normal file
File diff suppressed because it is too large
Load Diff
10003
resources/localization/wx_locale/sv.po
Normal file
10003
resources/localization/wx_locale/sv.po
Normal file
File diff suppressed because it is too large
Load Diff
9518
resources/localization/wx_locale/ta.po
Normal file
9518
resources/localization/wx_locale/ta.po
Normal file
File diff suppressed because it is too large
Load Diff
9132
resources/localization/wx_locale/tr.po
Normal file
9132
resources/localization/wx_locale/tr.po
Normal file
File diff suppressed because it is too large
Load Diff
9855
resources/localization/wx_locale/uk.po
Normal file
9855
resources/localization/wx_locale/uk.po
Normal file
File diff suppressed because it is too large
Load Diff
9876
resources/localization/wx_locale/vi.po
Normal file
9876
resources/localization/wx_locale/vi.po
Normal file
File diff suppressed because it is too large
Load Diff
9913
resources/localization/wx_locale/zh_CN.po
Normal file
9913
resources/localization/wx_locale/zh_CN.po
Normal file
File diff suppressed because it is too large
Load Diff
9676
resources/localization/wx_locale/zh_TW.po
Normal file
9676
resources/localization/wx_locale/zh_TW.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
resources/profiles/Artillery/Hornet_thumbnail.png
Normal file
BIN
resources/profiles/Artillery/Hornet_thumbnail.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
BIN
resources/profiles/Artillery/bed-hornet.png
Normal file
BIN
resources/profiles/Artillery/bed-hornet.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 67 KiB |
BIN
resources/profiles/Artillery/bed-hornet.stl
Normal file
BIN
resources/profiles/Artillery/bed-hornet.stl
Normal file
Binary file not shown.
@ -1,4 +1,5 @@
|
|||||||
min_slic3r_version = 2.4.0-rc
|
min_slic3r_version = 2.4.0-rc
|
||||||
|
1.4.1 Updated firmware version.
|
||||||
1.4.0 Updated for the PrusaSlicer 2.4.0-rc release. Updated SLA material colors.
|
1.4.0 Updated for the PrusaSlicer 2.4.0-rc release. Updated SLA material colors.
|
||||||
min_slic3r_version = 2.4.0-beta2
|
min_slic3r_version = 2.4.0-beta2
|
||||||
1.4.0-beta3 Added material profiles for Prusament Resins.
|
1.4.0-beta3 Added material profiles for Prusament Resins.
|
||||||
@ -20,6 +21,7 @@ min_slic3r_version = 2.4.0-alpha0
|
|||||||
1.3.0-alpha1 Added Prusament PCCF. Increased travel acceleration for Prusa MINI. Updated start g-code for Prusa MINI. Added multiple add:north and Extrudr filament profiles. Updated Z travel speed values.
|
1.3.0-alpha1 Added Prusament PCCF. Increased travel acceleration for Prusa MINI. Updated start g-code for Prusa MINI. Added multiple add:north and Extrudr filament profiles. Updated Z travel speed values.
|
||||||
1.3.0-alpha0 Disabled thick bridges, updated support settings.
|
1.3.0-alpha0 Disabled thick bridges, updated support settings.
|
||||||
min_slic3r_version = 2.3.2-alpha0
|
min_slic3r_version = 2.3.2-alpha0
|
||||||
|
1.3.6 Updated firmware version.
|
||||||
1.3.5 Added material profiles for Prusament Resins.
|
1.3.5 Added material profiles for Prusament Resins.
|
||||||
1.3.4 Added material profiles for new Prusament Resins. Added profiles for multiple BASF filaments.
|
1.3.4 Added material profiles for new Prusament Resins. Added profiles for multiple BASF filaments.
|
||||||
1.3.3 Added multiple profiles for Filatech filaments. Added material profiles for SL1S SPEED. Updated SLA print settings.
|
1.3.3 Added multiple profiles for Filatech filaments. Added material profiles for SL1S SPEED. Updated SLA print settings.
|
||||||
@ -27,6 +29,7 @@ min_slic3r_version = 2.3.2-alpha0
|
|||||||
1.3.1 Added multiple add:north and Extrudr filament profiles. Updated support head settings (SL1S).
|
1.3.1 Added multiple add:north and Extrudr filament profiles. Updated support head settings (SL1S).
|
||||||
1.3.0 Added SL1S SPEED profiles.
|
1.3.0 Added SL1S SPEED profiles.
|
||||||
min_slic3r_version = 2.3.0-rc1
|
min_slic3r_version = 2.3.0-rc1
|
||||||
|
1.2.11 Updated firmware version.
|
||||||
1.2.10 Added multiple profiles for Filatech filaments. Updated SLA print settings (pad wall slope angle).
|
1.2.10 Added multiple profiles for Filatech filaments. Updated SLA print settings (pad wall slope angle).
|
||||||
1.2.9 Added material profiles for Prusament Resin.
|
1.2.9 Added material profiles for Prusament Resin.
|
||||||
1.2.8 Added multiple add:north and Extrudr filament profiles.
|
1.2.8 Added multiple add:north and Extrudr filament profiles.
|
||||||
@ -46,6 +49,7 @@ min_slic3r_version = 2.3.0-alpha4
|
|||||||
1.2.0-alpha1 Renamed MK3S and MINI printer profiles. Updated end g-code (MINI). Added new SLA materials and filament profiles.
|
1.2.0-alpha1 Renamed MK3S and MINI printer profiles. Updated end g-code (MINI). Added new SLA materials and filament profiles.
|
||||||
1.2.0-alpha0 Added filament spool weights
|
1.2.0-alpha0 Added filament spool weights
|
||||||
min_slic3r_version = 2.2.0-alpha3
|
min_slic3r_version = 2.2.0-alpha3
|
||||||
|
1.1.15 Updated firmware version.
|
||||||
1.1.14 Updated firmware version.
|
1.1.14 Updated firmware version.
|
||||||
1.1.13 Updated firmware version. Updated end g-code in MMU2 printer profiles.
|
1.1.13 Updated firmware version. Updated end g-code in MMU2 printer profiles.
|
||||||
1.1.12 Added Prusament PVB filament profile. Added 0.8mm nozzle profiles.
|
1.1.12 Added Prusament PVB filament profile. Added 0.8mm nozzle profiles.
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
name = Prusa Research
|
name = Prusa Research
|
||||||
# Configuration version of this file. Config file will only be installed, if the config_version differs.
|
# Configuration version of this file. Config file will only be installed, if the config_version differs.
|
||||||
# This means, the server may force the PrusaSlicer configuration to be downgraded.
|
# This means, the server may force the PrusaSlicer configuration to be downgraded.
|
||||||
config_version = 1.4.0
|
config_version = 1.4.1
|
||||||
# Where to get the updates from?
|
# Where to get the updates from?
|
||||||
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/PrusaResearch/
|
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/PrusaResearch/
|
||||||
changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1%
|
changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1%
|
||||||
@ -7045,6 +7045,7 @@ machine_max_jerk_y = 10
|
|||||||
machine_max_jerk_z = 0.2
|
machine_max_jerk_z = 0.2
|
||||||
machine_min_extruding_rate = 0
|
machine_min_extruding_rate = 0
|
||||||
machine_min_travel_rate = 0
|
machine_min_travel_rate = 0
|
||||||
|
machine_limits_usage = emit_to_gcode
|
||||||
layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
|
layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
|
||||||
max_layer_height = 0.25
|
max_layer_height = 0.25
|
||||||
min_layer_height = 0.07
|
min_layer_height = 0.07
|
||||||
@ -7188,21 +7189,21 @@ inherits = Original Prusa i3 MK2S
|
|||||||
printer_model = MK2.5
|
printer_model = MK2.5
|
||||||
remaining_times = 1
|
remaining_times = 1
|
||||||
machine_max_jerk_e = 4.5
|
machine_max_jerk_e = 4.5
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
|
||||||
|
|
||||||
[printer:Original Prusa i3 MK2.5 0.25 nozzle]
|
[printer:Original Prusa i3 MK2.5 0.25 nozzle]
|
||||||
inherits = Original Prusa i3 MK2S 0.25 nozzle
|
inherits = Original Prusa i3 MK2S 0.25 nozzle
|
||||||
printer_model = MK2.5
|
printer_model = MK2.5
|
||||||
remaining_times = 1
|
remaining_times = 1
|
||||||
machine_max_jerk_e = 4.5
|
machine_max_jerk_e = 4.5
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
|
||||||
|
|
||||||
[printer:Original Prusa i3 MK2.5 0.6 nozzle]
|
[printer:Original Prusa i3 MK2.5 0.6 nozzle]
|
||||||
inherits = Original Prusa i3 MK2S 0.6 nozzle
|
inherits = Original Prusa i3 MK2S 0.6 nozzle
|
||||||
printer_model = MK2.5
|
printer_model = MK2.5
|
||||||
remaining_times = 1
|
remaining_times = 1
|
||||||
machine_max_jerk_e = 4.5
|
machine_max_jerk_e = 4.5
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
|
||||||
|
|
||||||
[printer:Original Prusa i3 MK2.5 0.8 nozzle]
|
[printer:Original Prusa i3 MK2.5 0.8 nozzle]
|
||||||
inherits = Original Prusa i3 MK2S 0.6 nozzle
|
inherits = Original Prusa i3 MK2S 0.6 nozzle
|
||||||
@ -7214,7 +7215,7 @@ min_layer_height = 0.2
|
|||||||
retract_length = 1
|
retract_length = 1
|
||||||
remaining_times = 1
|
remaining_times = 1
|
||||||
machine_max_jerk_e = 4.5
|
machine_max_jerk_e = 4.5
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
|
||||||
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||||
default_filament_profile = Prusament PLA @0.8 nozzle
|
default_filament_profile = Prusament PLA @0.8 nozzle
|
||||||
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
|
||||||
@ -7227,7 +7228,7 @@ max_print_height = 200
|
|||||||
default_print_profile = 0.15mm OPTIMAL @MK2.5
|
default_print_profile = 0.15mm OPTIMAL @MK2.5
|
||||||
default_filament_profile = Prusament PLA
|
default_filament_profile = Prusament PLA
|
||||||
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.5\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.5\n
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\n; select extruder\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; load to nozzle\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.20 F1000\nG1 X5 E4 F1000\nG92 E0\n
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\n; select extruder\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; load to nozzle\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.20 F1000\nG1 X5 E4 F1000\nG92 E0\n
|
||||||
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+10, max_print_height)}{endif} F720 ; Move print head up\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM104 S0 ; turn off temperature\nM900 K0 ; reset LA\nM84 ; disable motors
|
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+10, max_print_height)}{endif} F720 ; Move print head up\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM104 S0 ; turn off temperature\nM900 K0 ; reset LA\nM84 ; disable motors
|
||||||
|
|
||||||
[printer:Original Prusa i3 MK2.5 MMU2 Single 0.8 nozzle]
|
[printer:Original Prusa i3 MK2.5 MMU2 Single 0.8 nozzle]
|
||||||
@ -7251,7 +7252,7 @@ printer_notes = Don't remove the following keywords! These keywords are used in
|
|||||||
single_extruder_multi_material = 1
|
single_extruder_multi_material = 1
|
||||||
nozzle_diameter = 0.4,0.4,0.4,0.4,0.4
|
nozzle_diameter = 0.4,0.4,0.4,0.4,0.4
|
||||||
extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D
|
extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\nG92 E0\n
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\nG92 E0\n
|
||||||
end_gcode = ; Lift print head a bit\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nG1 X0 Y210 F3000 ; home X axis\nM900 K0 ; reset LA\nM84 ; disable motors\n
|
end_gcode = ; Lift print head a bit\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nG1 X0 Y210 F3000 ; home X axis\nM900 K0 ; reset LA\nM84 ; disable motors\n
|
||||||
|
|
||||||
[printer:Original Prusa i3 MK2.5S]
|
[printer:Original Prusa i3 MK2.5S]
|
||||||
@ -7278,7 +7279,7 @@ max_print_height = 200
|
|||||||
default_print_profile = 0.15mm OPTIMAL @MK2.5
|
default_print_profile = 0.15mm OPTIMAL @MK2.5
|
||||||
default_filament_profile = Prusament PLA
|
default_filament_profile = Prusament PLA
|
||||||
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.5\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.5\n
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
|
||||||
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+10, max_print_height)}{endif} F720 ; Move print head up\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM104 S0 ; turn off temperature\nM900 K0 ; reset LA\nM84 ; disable motors
|
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+10, max_print_height)}{endif} F720 ; Move print head up\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM104 S0 ; turn off temperature\nM900 K0 ; reset LA\nM84 ; disable motors
|
||||||
|
|
||||||
[printer:Original Prusa i3 MK2.5S MMU2S Single 0.8 nozzle]
|
[printer:Original Prusa i3 MK2.5S MMU2S Single 0.8 nozzle]
|
||||||
@ -7289,7 +7290,7 @@ min_layer_height = 0.2
|
|||||||
nozzle_diameter = 0.8
|
nozzle_diameter = 0.8
|
||||||
printer_variant = 0.8
|
printer_variant = 0.8
|
||||||
retract_length = 1
|
retract_length = 1
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
|
||||||
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||||
default_filament_profile = Prusament PLA @0.8 nozzle
|
default_filament_profile = Prusament PLA @0.8 nozzle
|
||||||
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
|
||||||
@ -7313,7 +7314,7 @@ nozzle_diameter = 0.25
|
|||||||
printer_variant = 0.25
|
printer_variant = 0.25
|
||||||
retract_lift = 0.15
|
retract_lift = 0.15
|
||||||
default_print_profile = 0.10mm DETAIL 0.25 nozzle
|
default_print_profile = 0.10mm DETAIL 0.25 nozzle
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F1400\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F1400\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
|
||||||
color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
|
||||||
|
|
||||||
[printer:Original Prusa i3 MK2.5S MMU2S]
|
[printer:Original Prusa i3 MK2.5S MMU2S]
|
||||||
@ -7325,7 +7326,7 @@ printer_notes = Don't remove the following keywords! These keywords are used in
|
|||||||
single_extruder_multi_material = 1
|
single_extruder_multi_material = 1
|
||||||
nozzle_diameter = 0.4,0.4,0.4,0.4,0.4
|
nozzle_diameter = 0.4,0.4,0.4,0.4,0.4
|
||||||
extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D
|
extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\nG92 E0\n
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\nG92 E0\n
|
||||||
end_gcode = ; Lift print head a bit\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nG1 X0 Y210 F3000 ; home X axis\nM900 K0 ; reset LA\nM84 ; disable motors\n
|
end_gcode = ; Lift print head a bit\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nG1 X0 Y210 F3000 ; home X axis\nM900 K0 ; reset LA\nM84 ; disable motors\n
|
||||||
|
|
||||||
[printer:Original Prusa i3 MK2.5S MMU2S 0.6 nozzle]
|
[printer:Original Prusa i3 MK2.5S MMU2S 0.6 nozzle]
|
||||||
@ -7356,7 +7357,7 @@ color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
|||||||
## printer_variant = 0.8
|
## printer_variant = 0.8
|
||||||
## retract_length = 1
|
## retract_length = 1
|
||||||
## default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
## default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||||
## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n
|
## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n
|
||||||
|
|
||||||
## [printer:Original Prusa i3 MK2.5 MMU2 0.8 nozzle]
|
## [printer:Original Prusa i3 MK2.5 MMU2 0.8 nozzle]
|
||||||
## inherits = Original Prusa i3 MK2.5 MMU2
|
## inherits = Original Prusa i3 MK2.5 MMU2
|
||||||
@ -7366,7 +7367,7 @@ color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
|||||||
## printer_variant = 0.8
|
## printer_variant = 0.8
|
||||||
## retract_length = 1
|
## retract_length = 1
|
||||||
## default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
## default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||||
## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n
|
## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n
|
||||||
|
|
||||||
# XXXXXXXXXXXXXXXXX
|
# XXXXXXXXXXXXXXXXX
|
||||||
# XXX--- MK3 ---XXX
|
# XXX--- MK3 ---XXX
|
||||||
@ -7396,7 +7397,7 @@ remaining_times = 1
|
|||||||
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
|
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
|
retract_lift_below = 209
|
||||||
max_print_height = 210
|
max_print_height = 210
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
|
||||||
printer_model = MK3
|
printer_model = MK3
|
||||||
default_print_profile = 0.15mm QUALITY @MK3
|
default_print_profile = 0.15mm QUALITY @MK3
|
||||||
|
|
||||||
@ -7407,7 +7408,7 @@ max_layer_height = 0.15
|
|||||||
min_layer_height = 0.05
|
min_layer_height = 0.05
|
||||||
printer_variant = 0.25
|
printer_variant = 0.25
|
||||||
retract_lift = 0.15
|
retract_lift = 0.15
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E8 F700 ; intro line\nG1 X100 E12.5 F700 ; intro line\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif}
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E8 F700 ; intro line\nG1 X100 E12.5 F700 ; intro line\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif}
|
||||||
default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3
|
default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3
|
||||||
color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
|
||||||
|
|
||||||
@ -7417,7 +7418,7 @@ nozzle_diameter = 0.6
|
|||||||
max_layer_height = 0.40
|
max_layer_height = 0.40
|
||||||
min_layer_height = 0.15
|
min_layer_height = 0.15
|
||||||
printer_variant = 0.6
|
printer_variant = 0.6
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}
|
||||||
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
||||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||||
|
|
||||||
@ -7428,7 +7429,7 @@ max_layer_height = 0.6
|
|||||||
min_layer_height = 0.2
|
min_layer_height = 0.2
|
||||||
printer_variant = 0.8
|
printer_variant = 0.8
|
||||||
retract_length = 1
|
retract_length = 1
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0\nM221 S95
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0\nM221 S95
|
||||||
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||||
default_filament_profile = Prusament PLA @0.8 nozzle
|
default_filament_profile = Prusament PLA @0.8 nozzle
|
||||||
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
|
||||||
@ -7500,7 +7501,7 @@ default_filament_profile = Prusament PLA @MMU2
|
|||||||
inherits = *mm2*
|
inherits = *mm2*
|
||||||
single_extruder_multi_material = 0
|
single_extruder_multi_material = 0
|
||||||
default_filament_profile = Prusament PLA
|
default_filament_profile = Prusament PLA
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
|
||||||
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+10, max_print_height)}{endif} F720 ; Move print head up\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM84 ; disable motors
|
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+10, max_print_height)}{endif} F720 ; Move print head up\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM84 ; disable motors
|
||||||
|
|
||||||
[printer:Original Prusa i3 MK3 MMU2 Single 0.6 nozzle]
|
[printer:Original Prusa i3 MK3 MMU2 Single 0.6 nozzle]
|
||||||
@ -7510,7 +7511,7 @@ nozzle_diameter = 0.6
|
|||||||
max_layer_height = 0.40
|
max_layer_height = 0.40
|
||||||
min_layer_height = 0.15
|
min_layer_height = 0.15
|
||||||
printer_variant = 0.6
|
printer_variant = 0.6
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
||||||
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
||||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||||
|
|
||||||
@ -7522,7 +7523,7 @@ max_layer_height = 0.6
|
|||||||
min_layer_height = 0.2
|
min_layer_height = 0.2
|
||||||
printer_variant = 0.8
|
printer_variant = 0.8
|
||||||
retract_length = 1
|
retract_length = 1
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
||||||
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||||
default_filament_profile = Prusament PLA @0.8 nozzle
|
default_filament_profile = Prusament PLA @0.8 nozzle
|
||||||
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
|
||||||
@ -7535,7 +7536,7 @@ max_layer_height = 0.15
|
|||||||
min_layer_height = 0.05
|
min_layer_height = 0.05
|
||||||
printer_variant = 0.25
|
printer_variant = 0.25
|
||||||
retract_lift = 0.15
|
retract_lift = 0.15
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F1000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F1400\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif}
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F1000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F1400\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif}
|
||||||
default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3
|
default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3
|
||||||
color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
|
||||||
|
|
||||||
@ -7544,7 +7545,7 @@ inherits = *mm2*
|
|||||||
machine_max_acceleration_e = 8000,8000
|
machine_max_acceleration_e = 8000,8000
|
||||||
nozzle_diameter = 0.4,0.4,0.4,0.4,0.4
|
nozzle_diameter = 0.4,0.4,0.4,0.4,0.4
|
||||||
extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D
|
extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
|
||||||
end_gcode = ; Lift print head a bit\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nG1 X0 Y210 F3000 ; home X axis\nM84 ; disable motors\n
|
end_gcode = ; Lift print head a bit\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nG1 X0 Y210 F3000 ; home X axis\nM84 ; disable motors\n
|
||||||
|
|
||||||
[printer:Original Prusa i3 MK3S & MK3S+ MMU2S Single]
|
[printer:Original Prusa i3 MK3S & MK3S+ MMU2S Single]
|
||||||
@ -7552,7 +7553,7 @@ inherits = *mm2s*
|
|||||||
renamed_from = "Original Prusa i3 MK3S MMU2S Single"
|
renamed_from = "Original Prusa i3 MK3S MMU2S Single"
|
||||||
single_extruder_multi_material = 0
|
single_extruder_multi_material = 0
|
||||||
default_filament_profile = Prusament PLA
|
default_filament_profile = Prusament PLA
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
|
||||||
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+10, max_print_height)}{endif} F720 ; Move print head up\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM84 ; disable motors
|
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+10, max_print_height)}{endif} F720 ; Move print head up\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM84 ; disable motors
|
||||||
|
|
||||||
[printer:Original Prusa i3 MK3S & MK3S+ MMU2S Single 0.6 nozzle]
|
[printer:Original Prusa i3 MK3S & MK3S+ MMU2S Single 0.6 nozzle]
|
||||||
@ -7563,7 +7564,7 @@ nozzle_diameter = 0.6
|
|||||||
max_layer_height = 0.40
|
max_layer_height = 0.40
|
||||||
min_layer_height = 0.15
|
min_layer_height = 0.15
|
||||||
printer_variant = 0.6
|
printer_variant = 0.6
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
||||||
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
||||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||||
|
|
||||||
@ -7575,7 +7576,7 @@ max_layer_height = 0.6
|
|||||||
min_layer_height = 0.2
|
min_layer_height = 0.2
|
||||||
printer_variant = 0.8
|
printer_variant = 0.8
|
||||||
retract_length = 1
|
retract_length = 1
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
||||||
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||||
default_filament_profile = Prusament PLA @0.8 nozzle
|
default_filament_profile = Prusament PLA @0.8 nozzle
|
||||||
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
|
||||||
@ -7589,7 +7590,7 @@ max_layer_height = 0.15
|
|||||||
min_layer_height = 0.05
|
min_layer_height = 0.05
|
||||||
printer_variant = 0.25
|
printer_variant = 0.25
|
||||||
retract_lift = 0.15
|
retract_lift = 0.15
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F1400\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif}
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\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\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F1400\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif}
|
||||||
default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3
|
default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3
|
||||||
color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
|
||||||
|
|
||||||
@ -7599,7 +7600,7 @@ renamed_from = "Original Prusa i3 MK3S MMU2S"
|
|||||||
machine_max_acceleration_e = 8000,8000
|
machine_max_acceleration_e = 8000,8000
|
||||||
nozzle_diameter = 0.4,0.4,0.4,0.4,0.4
|
nozzle_diameter = 0.4,0.4,0.4,0.4,0.4
|
||||||
extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D
|
extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
|
||||||
end_gcode = ; Lift print head a bit\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nG1 X0 Y210 F3000 ; home X axis\nM84 ; disable motors\n
|
end_gcode = ; Lift print head a bit\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nG1 X0 Y210 F3000 ; home X axis\nM84 ; disable motors\n
|
||||||
|
|
||||||
## 0.6mm nozzle MMU2/S printer profiles
|
## 0.6mm nozzle MMU2/S printer profiles
|
||||||
@ -7611,7 +7612,7 @@ nozzle_diameter = 0.6,0.6,0.6,0.6,0.6
|
|||||||
max_layer_height = 0.40
|
max_layer_height = 0.40
|
||||||
min_layer_height = 0.15
|
min_layer_height = 0.15
|
||||||
printer_variant = 0.6
|
printer_variant = 0.6
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
||||||
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
||||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||||
|
|
||||||
@ -7621,7 +7622,7 @@ nozzle_diameter = 0.6,0.6,0.6,0.6,0.6
|
|||||||
max_layer_height = 0.40
|
max_layer_height = 0.40
|
||||||
min_layer_height = 0.15
|
min_layer_height = 0.15
|
||||||
printer_variant = 0.6
|
printer_variant = 0.6
|
||||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
||||||
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
||||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||||
|
|
||||||
@ -7635,7 +7636,7 @@ color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
|||||||
## max_layer_height = 0.6
|
## max_layer_height = 0.6
|
||||||
## min_layer_height = 0.2
|
## min_layer_height = 0.2
|
||||||
## printer_variant = 0.8
|
## printer_variant = 0.8
|
||||||
## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0
|
## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0
|
||||||
## default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
## default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||||
|
|
||||||
## [printer:Original Prusa i3 MK3S & MK3S+ MMU2S 0.8 nozzle]
|
## [printer:Original Prusa i3 MK3S & MK3S+ MMU2S 0.8 nozzle]
|
||||||
@ -7644,7 +7645,7 @@ color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
|||||||
## max_layer_height = 0.6
|
## max_layer_height = 0.6
|
||||||
## min_layer_height = 0.2
|
## min_layer_height = 0.2
|
||||||
## printer_variant = 0.8
|
## printer_variant = 0.8
|
||||||
## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0
|
## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\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\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0
|
||||||
## default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
## default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||||
|
|
||||||
## MINI
|
## MINI
|
||||||
|
@ -175,6 +175,9 @@ void AppConfig::set_defaults()
|
|||||||
if (get("show_splash_screen").empty())
|
if (get("show_splash_screen").empty())
|
||||||
set("show_splash_screen", "1");
|
set("show_splash_screen", "1");
|
||||||
|
|
||||||
|
if (get("restore_win_position").empty())
|
||||||
|
set("restore_win_position", "1"); // allowed values - "1", "0", "crashed_at_..."
|
||||||
|
|
||||||
if (get("show_hints").empty())
|
if (get("show_hints").empty())
|
||||||
set("show_hints", "1");
|
set("show_hints", "1");
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ public:
|
|||||||
bool has_section(const std::string §ion) const
|
bool has_section(const std::string §ion) const
|
||||||
{ return m_storage.find(section) != m_storage.end(); }
|
{ return m_storage.find(section) != m_storage.end(); }
|
||||||
const std::map<std::string, std::string>& get_section(const std::string §ion) const
|
const std::map<std::string, std::string>& get_section(const std::string §ion) const
|
||||||
{ return m_storage.find(section)->second; }
|
{ auto it = m_storage.find(section); assert(it != m_storage.end()); return it->second; }
|
||||||
void set_section(const std::string §ion, const std::map<std::string, std::string>& data)
|
void set_section(const std::string §ion, const std::map<std::string, std::string>& data)
|
||||||
{ m_storage[section] = data; }
|
{ m_storage[section] = data; }
|
||||||
void clear_section(const std::string §ion)
|
void clear_section(const std::string §ion)
|
||||||
|
@ -758,6 +758,8 @@ public:
|
|||||||
ConfigOptionIntsTempl() : ConfigOptionVector<int>() {}
|
ConfigOptionIntsTempl() : ConfigOptionVector<int>() {}
|
||||||
explicit ConfigOptionIntsTempl(size_t n, int value) : ConfigOptionVector<int>(n, value) {}
|
explicit ConfigOptionIntsTempl(size_t n, int value) : ConfigOptionVector<int>(n, value) {}
|
||||||
explicit ConfigOptionIntsTempl(std::initializer_list<int> il) : ConfigOptionVector<int>(std::move(il)) {}
|
explicit ConfigOptionIntsTempl(std::initializer_list<int> il) : ConfigOptionVector<int>(std::move(il)) {}
|
||||||
|
explicit ConfigOptionIntsTempl(const std::vector<int> &v) : ConfigOptionVector<int>(v) {}
|
||||||
|
explicit ConfigOptionIntsTempl(std::vector<int> &&v) : ConfigOptionVector<int>(std::move(v)) {}
|
||||||
|
|
||||||
static ConfigOptionType static_type() { return coInts; }
|
static ConfigOptionType static_type() { return coInts; }
|
||||||
ConfigOptionType type() const override { return static_type(); }
|
ConfigOptionType type() const override { return static_type(); }
|
||||||
|
@ -677,7 +677,7 @@ namespace DoExport {
|
|||||||
print_statistics.total_weight = total_weight;
|
print_statistics.total_weight = total_weight;
|
||||||
print_statistics.total_cost = total_cost;
|
print_statistics.total_cost = total_cost;
|
||||||
|
|
||||||
print_statistics.filament_stats = result.print_statistics.volumes_per_extruder;
|
print_statistics.filament_stats = result.print_statistics.volumes_per_extruder;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if any reserved keyword is found, returns a std::vector containing the first MAX_COUNT keywords found
|
// if any reserved keyword is found, returns a std::vector containing the first MAX_COUNT keywords found
|
||||||
@ -984,19 +984,26 @@ namespace DoExport {
|
|||||||
static std::string update_print_stats_and_format_filament_stats(
|
static std::string update_print_stats_and_format_filament_stats(
|
||||||
const bool has_wipe_tower,
|
const bool has_wipe_tower,
|
||||||
const WipeTowerData &wipe_tower_data,
|
const WipeTowerData &wipe_tower_data,
|
||||||
|
const FullPrintConfig &config,
|
||||||
const std::vector<Extruder> &extruders,
|
const std::vector<Extruder> &extruders,
|
||||||
|
unsigned int initial_extruder_id,
|
||||||
PrintStatistics &print_statistics)
|
PrintStatistics &print_statistics)
|
||||||
{
|
{
|
||||||
std::string filament_stats_string_out;
|
std::string filament_stats_string_out;
|
||||||
|
|
||||||
print_statistics.clear();
|
print_statistics.clear();
|
||||||
print_statistics.total_toolchanges = std::max(0, wipe_tower_data.number_of_toolchanges);
|
print_statistics.total_toolchanges = std::max(0, wipe_tower_data.number_of_toolchanges);
|
||||||
|
print_statistics.initial_extruder_id = initial_extruder_id;
|
||||||
|
std::vector<std::string> filament_types;
|
||||||
if (! extruders.empty()) {
|
if (! extruders.empty()) {
|
||||||
std::pair<std::string, unsigned int> out_filament_used_mm ("; filament used [mm] = ", 0);
|
std::pair<std::string, unsigned int> out_filament_used_mm ("; filament used [mm] = ", 0);
|
||||||
std::pair<std::string, unsigned int> out_filament_used_cm3("; filament used [cm3] = ", 0);
|
std::pair<std::string, unsigned int> out_filament_used_cm3("; filament used [cm3] = ", 0);
|
||||||
std::pair<std::string, unsigned int> out_filament_used_g ("; filament used [g] = ", 0);
|
std::pair<std::string, unsigned int> out_filament_used_g ("; filament used [g] = ", 0);
|
||||||
std::pair<std::string, unsigned int> out_filament_cost ("; filament cost = ", 0);
|
std::pair<std::string, unsigned int> out_filament_cost ("; filament cost = ", 0);
|
||||||
for (const Extruder &extruder : extruders) {
|
for (const Extruder &extruder : extruders) {
|
||||||
|
print_statistics.printing_extruders.emplace_back(extruder.id());
|
||||||
|
filament_types.emplace_back(config.filament_type.get_at(extruder.id()));
|
||||||
|
|
||||||
double used_filament = extruder.used_filament() + (has_wipe_tower ? wipe_tower_data.used_filament[extruder.id()] : 0.f);
|
double used_filament = extruder.used_filament() + (has_wipe_tower ? wipe_tower_data.used_filament[extruder.id()] : 0.f);
|
||||||
double extruded_volume = extruder.extruded_volume() + (has_wipe_tower ? wipe_tower_data.used_filament[extruder.id()] * 2.4052f : 0.f); // assumes 1.75mm filament diameter
|
double extruded_volume = extruder.extruded_volume() + (has_wipe_tower ? wipe_tower_data.used_filament[extruder.id()] * 2.4052f : 0.f); // assumes 1.75mm filament diameter
|
||||||
double filament_weight = extruded_volume * extruder.filament_density() * 0.001;
|
double filament_weight = extruded_volume * extruder.filament_density() * 0.001;
|
||||||
@ -1036,6 +1043,13 @@ namespace DoExport {
|
|||||||
filament_stats_string_out += "\n" + out_filament_used_g.first;
|
filament_stats_string_out += "\n" + out_filament_used_g.first;
|
||||||
if (out_filament_cost.second)
|
if (out_filament_cost.second)
|
||||||
filament_stats_string_out += "\n" + out_filament_cost.first;
|
filament_stats_string_out += "\n" + out_filament_cost.first;
|
||||||
|
print_statistics.initial_filament_type = config.filament_type.get_at(initial_extruder_id);
|
||||||
|
std::sort(filament_types.begin(), filament_types.end());
|
||||||
|
print_statistics.printing_filament_types = filament_types.front();
|
||||||
|
for (size_t i = 1; i < filament_types.size(); ++ i) {
|
||||||
|
print_statistics.printing_filament_types += ",";
|
||||||
|
print_statistics.printing_filament_types += filament_types[i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return filament_stats_string_out;
|
return filament_stats_string_out;
|
||||||
}
|
}
|
||||||
@ -1486,7 +1500,9 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
|
|||||||
file.write(DoExport::update_print_stats_and_format_filament_stats(
|
file.write(DoExport::update_print_stats_and_format_filament_stats(
|
||||||
// Const inputs
|
// Const inputs
|
||||||
has_wipe_tower, print.wipe_tower_data(),
|
has_wipe_tower, print.wipe_tower_data(),
|
||||||
|
this->config(),
|
||||||
m_writer.extruders(),
|
m_writer.extruders(),
|
||||||
|
initial_extruder_id,
|
||||||
// Modifies
|
// Modifies
|
||||||
print.m_print_statistics));
|
print.m_print_statistics));
|
||||||
file.write("\n");
|
file.write("\n");
|
||||||
@ -1685,40 +1701,56 @@ static bool custom_gcode_sets_temperature(const std::string &gcode, const int mc
|
|||||||
// Do not process this piece of G-code by the time estimator, it already knows the values through another sources.
|
// Do not process this piece of G-code by the time estimator, it already knows the values through another sources.
|
||||||
void GCode::print_machine_envelope(GCodeOutputStream &file, Print &print)
|
void GCode::print_machine_envelope(GCodeOutputStream &file, Print &print)
|
||||||
{
|
{
|
||||||
if ((print.config().gcode_flavor.value == gcfMarlinLegacy || print.config().gcode_flavor.value == gcfMarlinFirmware)
|
const GCodeFlavor flavor = print.config().gcode_flavor.value;
|
||||||
|
if ( (flavor == gcfMarlinLegacy || flavor == gcfMarlinFirmware || flavor == gcfRepRapFirmware)
|
||||||
&& print.config().machine_limits_usage.value == MachineLimitsUsage::EmitToGCode) {
|
&& print.config().machine_limits_usage.value == MachineLimitsUsage::EmitToGCode) {
|
||||||
|
int factor = flavor == gcfRepRapFirmware ? 60 : 1; // RRF M203 and M566 are in mm/min
|
||||||
file.write_format("M201 X%d Y%d Z%d E%d ; sets maximum accelerations, mm/sec^2\n",
|
file.write_format("M201 X%d Y%d Z%d E%d ; sets maximum accelerations, mm/sec^2\n",
|
||||||
int(print.config().machine_max_acceleration_x.values.front() + 0.5),
|
int(print.config().machine_max_acceleration_x.values.front() + 0.5),
|
||||||
int(print.config().machine_max_acceleration_y.values.front() + 0.5),
|
int(print.config().machine_max_acceleration_y.values.front() + 0.5),
|
||||||
int(print.config().machine_max_acceleration_z.values.front() + 0.5),
|
int(print.config().machine_max_acceleration_z.values.front() + 0.5),
|
||||||
int(print.config().machine_max_acceleration_e.values.front() + 0.5));
|
int(print.config().machine_max_acceleration_e.values.front() + 0.5));
|
||||||
file.write_format("M203 X%d Y%d Z%d E%d ; sets maximum feedrates, mm/sec\n",
|
file.write_format("M203 X%d Y%d Z%d E%d ; sets maximum feedrates, %s\n",
|
||||||
int(print.config().machine_max_feedrate_x.values.front() + 0.5),
|
int(print.config().machine_max_feedrate_x.values.front() * factor + 0.5),
|
||||||
int(print.config().machine_max_feedrate_y.values.front() + 0.5),
|
int(print.config().machine_max_feedrate_y.values.front() * factor + 0.5),
|
||||||
int(print.config().machine_max_feedrate_z.values.front() + 0.5),
|
int(print.config().machine_max_feedrate_z.values.front() * factor + 0.5),
|
||||||
int(print.config().machine_max_feedrate_e.values.front() + 0.5));
|
int(print.config().machine_max_feedrate_e.values.front() * factor + 0.5),
|
||||||
|
factor == 60 ? "mm / min" : "mm / sec");
|
||||||
|
|
||||||
// Now M204 - acceleration. This one is quite hairy thanks to how Marlin guys care about
|
// Now M204 - acceleration. This one is quite hairy thanks to how Marlin guys care about
|
||||||
// backwards compatibility: https://github.com/prusa3d/PrusaSlicer/issues/1089
|
// backwards compatibility: https://github.com/prusa3d/PrusaSlicer/issues/1089
|
||||||
// Legacy Marlin should export travel acceleration the same as printing acceleration.
|
// Legacy Marlin should export travel acceleration the same as printing acceleration.
|
||||||
// MarlinFirmware has the two separated.
|
// MarlinFirmware has the two separated.
|
||||||
int travel_acc = print.config().gcode_flavor == gcfMarlinLegacy
|
int travel_acc = flavor == gcfMarlinLegacy
|
||||||
? int(print.config().machine_max_acceleration_extruding.values.front() + 0.5)
|
? int(print.config().machine_max_acceleration_extruding.values.front() + 0.5)
|
||||||
: int(print.config().machine_max_acceleration_travel.values.front() + 0.5);
|
: int(print.config().machine_max_acceleration_travel.values.front() + 0.5);
|
||||||
file.write_format("M204 P%d R%d T%d ; sets acceleration (P, T) and retract acceleration (R), mm/sec^2\n",
|
// Retract acceleration not accepted in M204 in RRF
|
||||||
int(print.config().machine_max_acceleration_extruding.values.front() + 0.5),
|
if (flavor == gcfRepRapFirmware)
|
||||||
int(print.config().machine_max_acceleration_retracting.values.front() + 0.5),
|
file.write_format("M204 P%d T%d ; sets acceleration (P, T), mm/sec^2\n",
|
||||||
travel_acc);
|
int(print.config().machine_max_acceleration_extruding.values.front() + 0.5),
|
||||||
|
travel_acc);
|
||||||
|
else
|
||||||
|
file.write_format("M204 P%d R%d T%d ; sets acceleration (P, T) and retract acceleration (R), mm/sec^2\n",
|
||||||
|
int(print.config().machine_max_acceleration_extruding.values.front() + 0.5),
|
||||||
|
int(print.config().machine_max_acceleration_retracting.values.front() + 0.5),
|
||||||
|
travel_acc);
|
||||||
|
|
||||||
assert(is_decimal_separator_point());
|
assert(is_decimal_separator_point());
|
||||||
file.write_format("M205 X%.2lf Y%.2lf Z%.2lf E%.2lf ; sets the jerk limits, mm/sec\n",
|
file.write_format(flavor == gcfRepRapFirmware
|
||||||
print.config().machine_max_jerk_x.values.front(),
|
? "M566 X%.2lf Y%.2lf Z%.2lf E%.2lf ; sets the jerk limits, mm/min\n"
|
||||||
print.config().machine_max_jerk_y.values.front(),
|
: "M205 X%.2lf Y%.2lf Z%.2lf E%.2lf ; sets the jerk limits, mm/sec\n",
|
||||||
print.config().machine_max_jerk_z.values.front(),
|
print.config().machine_max_jerk_x.values.front() * factor,
|
||||||
print.config().machine_max_jerk_e.values.front());
|
print.config().machine_max_jerk_y.values.front() * factor,
|
||||||
file.write_format("M205 S%d T%d ; sets the minimum extruding and travel feed rate, mm/sec\n",
|
print.config().machine_max_jerk_z.values.front() * factor,
|
||||||
int(print.config().machine_min_extruding_rate.values.front() + 0.5),
|
print.config().machine_max_jerk_e.values.front() * factor);
|
||||||
int(print.config().machine_min_travel_rate.values.front() + 0.5));
|
if (flavor != gcfRepRapFirmware)
|
||||||
|
file.write_format("M205 S%d T%d ; sets the minimum extruding and travel feed rate, mm/sec\n",
|
||||||
|
int(print.config().machine_min_extruding_rate.values.front() + 0.5),
|
||||||
|
int(print.config().machine_min_travel_rate.values.front() + 0.5));
|
||||||
|
else {
|
||||||
|
// M205 Sn Tn not supported in RRF. They use M203 Inn to set minimum feedrate for
|
||||||
|
// all moves. This is currently not implemented.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -811,13 +811,13 @@ std::string CoolingBuffer::apply_layer_cooldown(
|
|||||||
// Skip the non-whitespaces of the F parameter up the comment or end of line.
|
// Skip the non-whitespaces of the F parameter up the comment or end of line.
|
||||||
for (; fpos != end && *fpos != ' ' && *fpos != ';' && *fpos != '\n'; ++ fpos);
|
for (; fpos != end && *fpos != ' ' && *fpos != ';' && *fpos != '\n'; ++ fpos);
|
||||||
// Append the rest of the line without the comment.
|
// Append the rest of the line without the comment.
|
||||||
if (fpos < end)
|
if (remove && (fpos == end || *fpos == '\n') && (new_gcode == "G1" || boost::ends_with(new_gcode, "\nG1"))) {
|
||||||
// The G-code line is not empty yet. Emit the rest of it.
|
|
||||||
new_gcode.append(fpos, end - fpos);
|
|
||||||
else if (remove && new_gcode == "G1") {
|
|
||||||
// The G-code line only contained the F word, now it is empty. Remove it completely including the comments.
|
// The G-code line only contained the F word, now it is empty. Remove it completely including the comments.
|
||||||
new_gcode.resize(new_gcode.size() - 2);
|
new_gcode.resize(new_gcode.size() - 2);
|
||||||
end = line_end;
|
end = line_end;
|
||||||
|
} else {
|
||||||
|
// The G-code line may not be empty yet. Emit the rest of it.
|
||||||
|
new_gcode.append(fpos, end - fpos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Process the rest of the line.
|
// Process the rest of the line.
|
||||||
@ -845,6 +845,8 @@ std::string CoolingBuffer::apply_layer_cooldown(
|
|||||||
if (pos < gcode_end)
|
if (pos < gcode_end)
|
||||||
new_gcode.append(pos, gcode_end - pos);
|
new_gcode.append(pos, gcode_end - pos);
|
||||||
|
|
||||||
|
// There should be no empty G1 lines emitted.
|
||||||
|
assert(new_gcode.find("G1\n") == std::string::npos);
|
||||||
return new_gcode;
|
return new_gcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -726,6 +726,9 @@ void GCodeProcessorResult::reset() {
|
|||||||
filament_diameters = std::vector<float>(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DIAMETER);
|
filament_diameters = std::vector<float>(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DIAMETER);
|
||||||
filament_densities = std::vector<float>(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DENSITY);
|
filament_densities = std::vector<float>(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DENSITY);
|
||||||
custom_gcode_per_print_z = std::vector<CustomGCode::Item>();
|
custom_gcode_per_print_z = std::vector<CustomGCode::Item>();
|
||||||
|
#if ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
spiral_vase_layers = std::vector<std::pair<float, std::pair<size_t, size_t>>>();
|
||||||
|
#endif // ENABLE_SPIRAL_VASE_LAYERS
|
||||||
time = 0;
|
time = 0;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -741,6 +744,9 @@ void GCodeProcessorResult::reset() {
|
|||||||
filament_diameters = std::vector<float>(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DIAMETER);
|
filament_diameters = std::vector<float>(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DIAMETER);
|
||||||
filament_densities = std::vector<float>(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DENSITY);
|
filament_densities = std::vector<float>(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DENSITY);
|
||||||
custom_gcode_per_print_z = std::vector<CustomGCode::Item>();
|
custom_gcode_per_print_z = std::vector<CustomGCode::Item>();
|
||||||
|
#if ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
spiral_vase_layers = std::vector<std::pair<float, std::pair<size_t, size_t>>>();
|
||||||
|
#endif // ENABLE_SPIRAL_VASE_LAYERS
|
||||||
}
|
}
|
||||||
#endif // ENABLE_GCODE_VIEWER_STATISTICS
|
#endif // ENABLE_GCODE_VIEWER_STATISTICS
|
||||||
|
|
||||||
@ -842,12 +848,17 @@ void GCodeProcessor::apply_config(const PrintConfig& config)
|
|||||||
m_result.filament_densities[i] = static_cast<float>(config.filament_density.get_at(i));
|
m_result.filament_densities[i] = static_cast<float>(config.filament_density.get_at(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware) && config.machine_limits_usage.value != MachineLimitsUsage::Ignore) {
|
if ((m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware || m_flavor == gcfRepRapFirmware) && config.machine_limits_usage.value != MachineLimitsUsage::Ignore) {
|
||||||
m_time_processor.machine_limits = reinterpret_cast<const MachineEnvelopeConfig&>(config);
|
m_time_processor.machine_limits = reinterpret_cast<const MachineEnvelopeConfig&>(config);
|
||||||
if (m_flavor == gcfMarlinLegacy) {
|
if (m_flavor == gcfMarlinLegacy) {
|
||||||
// Legacy Marlin does not have separate travel acceleration, it uses the 'extruding' value instead.
|
// Legacy Marlin does not have separate travel acceleration, it uses the 'extruding' value instead.
|
||||||
m_time_processor.machine_limits.machine_max_acceleration_travel = m_time_processor.machine_limits.machine_max_acceleration_extruding;
|
m_time_processor.machine_limits.machine_max_acceleration_travel = m_time_processor.machine_limits.machine_max_acceleration_extruding;
|
||||||
}
|
}
|
||||||
|
if (m_flavor == gcfRepRapFirmware) {
|
||||||
|
// RRF does not support setting min feedrates. Set them to zero.
|
||||||
|
m_time_processor.machine_limits.machine_min_travel_rate.values.assign(m_time_processor.machine_limits.machine_min_travel_rate.size(), 0.);
|
||||||
|
m_time_processor.machine_limits.machine_min_extruding_rate.values.assign(m_time_processor.machine_limits.machine_min_extruding_rate.size(), 0.);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filament load / unload times are not specific to a firmware flavor. Let anybody use it if they find it useful.
|
// Filament load / unload times are not specific to a firmware flavor. Let anybody use it if they find it useful.
|
||||||
@ -882,6 +893,12 @@ void GCodeProcessor::apply_config(const PrintConfig& config)
|
|||||||
m_first_layer_height = std::abs(first_layer_height->value);
|
m_first_layer_height = std::abs(first_layer_height->value);
|
||||||
|
|
||||||
m_result.max_print_height = config.max_print_height;
|
m_result.max_print_height = config.max_print_height;
|
||||||
|
|
||||||
|
#if ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
const ConfigOptionBool* spiral_vase = config.option<ConfigOptionBool>("spiral_vase");
|
||||||
|
if (spiral_vase != nullptr)
|
||||||
|
m_spiral_vase_active = spiral_vase->value;
|
||||||
|
#endif // ENABLE_SPIRAL_VASE_LAYERS
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCodeProcessor::apply_config(const DynamicPrintConfig& config)
|
void GCodeProcessor::apply_config(const DynamicPrintConfig& config)
|
||||||
@ -1009,7 +1026,7 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config)
|
|||||||
if (machine_limits_usage != nullptr)
|
if (machine_limits_usage != nullptr)
|
||||||
use_machine_limits = machine_limits_usage->value != MachineLimitsUsage::Ignore;
|
use_machine_limits = machine_limits_usage->value != MachineLimitsUsage::Ignore;
|
||||||
|
|
||||||
if (use_machine_limits && (m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware)) {
|
if (use_machine_limits && (m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware || m_flavor == gcfRepRapFirmware)) {
|
||||||
const ConfigOptionFloats* machine_max_acceleration_x = config.option<ConfigOptionFloats>("machine_max_acceleration_x");
|
const ConfigOptionFloats* machine_max_acceleration_x = config.option<ConfigOptionFloats>("machine_max_acceleration_x");
|
||||||
if (machine_max_acceleration_x != nullptr)
|
if (machine_max_acceleration_x != nullptr)
|
||||||
m_time_processor.machine_limits.machine_max_acceleration_x.values = machine_max_acceleration_x->values;
|
m_time_processor.machine_limits.machine_max_acceleration_x.values = machine_max_acceleration_x->values;
|
||||||
@ -1076,12 +1093,22 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config)
|
|||||||
|
|
||||||
|
|
||||||
const ConfigOptionFloats* machine_min_extruding_rate = config.option<ConfigOptionFloats>("machine_min_extruding_rate");
|
const ConfigOptionFloats* machine_min_extruding_rate = config.option<ConfigOptionFloats>("machine_min_extruding_rate");
|
||||||
if (machine_min_extruding_rate != nullptr)
|
if (machine_min_extruding_rate != nullptr) {
|
||||||
m_time_processor.machine_limits.machine_min_extruding_rate.values = machine_min_extruding_rate->values;
|
m_time_processor.machine_limits.machine_min_extruding_rate.values = machine_min_extruding_rate->values;
|
||||||
|
if (m_flavor == gcfRepRapFirmware) {
|
||||||
|
// RRF does not support setting min feedrates. Set zero.
|
||||||
|
m_time_processor.machine_limits.machine_min_extruding_rate.values.assign(m_time_processor.machine_limits.machine_min_extruding_rate.size(), 0.);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const ConfigOptionFloats* machine_min_travel_rate = config.option<ConfigOptionFloats>("machine_min_travel_rate");
|
const ConfigOptionFloats* machine_min_travel_rate = config.option<ConfigOptionFloats>("machine_min_travel_rate");
|
||||||
if (machine_min_travel_rate != nullptr)
|
if (machine_min_travel_rate != nullptr) {
|
||||||
m_time_processor.machine_limits.machine_min_travel_rate.values = machine_min_travel_rate->values;
|
m_time_processor.machine_limits.machine_min_travel_rate.values = machine_min_travel_rate->values;
|
||||||
|
if (m_flavor == gcfRepRapFirmware) {
|
||||||
|
// RRF does not support setting min feedrates. Set zero.
|
||||||
|
m_time_processor.machine_limits.machine_min_travel_rate.values.assign(m_time_processor.machine_limits.machine_min_travel_rate.size(), 0.);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < static_cast<size_t>(PrintEstimatedStatistics::ETimeMode::Count); ++i) {
|
for (size_t i = 0; i < static_cast<size_t>(PrintEstimatedStatistics::ETimeMode::Count); ++i) {
|
||||||
@ -1115,6 +1142,12 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config)
|
|||||||
const ConfigOptionFloat* max_print_height = config.option<ConfigOptionFloat>("max_print_height");
|
const ConfigOptionFloat* max_print_height = config.option<ConfigOptionFloat>("max_print_height");
|
||||||
if (max_print_height != nullptr)
|
if (max_print_height != nullptr)
|
||||||
m_result.max_print_height = max_print_height->value;
|
m_result.max_print_height = max_print_height->value;
|
||||||
|
|
||||||
|
#if ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
const ConfigOptionBool* spiral_vase = config.option<ConfigOptionBool>("spiral_vase");
|
||||||
|
if (spiral_vase != nullptr)
|
||||||
|
m_spiral_vase_active = spiral_vase->value;
|
||||||
|
#endif // ENABLE_SPIRAL_VASE_LAYERS
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCodeProcessor::enable_stealth_time_estimator(bool enabled)
|
void GCodeProcessor::enable_stealth_time_estimator(bool enabled)
|
||||||
@ -1177,6 +1210,10 @@ void GCodeProcessor::reset()
|
|||||||
|
|
||||||
m_options_z_corrector.reset();
|
m_options_z_corrector.reset();
|
||||||
|
|
||||||
|
#if ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
m_spiral_vase_active = false;
|
||||||
|
#endif // ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
|
||||||
#if ENABLE_GCODE_VIEWER_DATA_CHECKING
|
#if ENABLE_GCODE_VIEWER_DATA_CHECKING
|
||||||
m_mm3_per_mm_compare.reset();
|
m_mm3_per_mm_compare.reset();
|
||||||
m_height_compare.reset();
|
m_height_compare.reset();
|
||||||
@ -1865,6 +1902,16 @@ void GCodeProcessor::process_tags(const std::string_view comment, bool producers
|
|||||||
// layer change tag
|
// layer change tag
|
||||||
if (comment == reserved_tag(ETags::Layer_Change)) {
|
if (comment == reserved_tag(ETags::Layer_Change)) {
|
||||||
++m_layer_id;
|
++m_layer_id;
|
||||||
|
#if ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
if (m_spiral_vase_active) {
|
||||||
|
assert(!m_result.moves.empty());
|
||||||
|
size_t move_id = m_result.moves.size() - 1;
|
||||||
|
if (!m_result.spiral_vase_layers.empty() && m_end_position[Z] == m_result.spiral_vase_layers.back().first)
|
||||||
|
m_result.spiral_vase_layers.back().second.second = move_id;
|
||||||
|
else
|
||||||
|
m_result.spiral_vase_layers.push_back({ m_end_position[Z], { move_id, move_id } });
|
||||||
|
}
|
||||||
|
#endif // ENABLE_SPIRAL_VASE_LAYERS
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2670,6 +2717,11 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line)
|
|||||||
m_seams_detector.set_first_vertex(m_result.moves.back().position - m_extruder_offsets[m_extruder_id]);
|
m_seams_detector.set_first_vertex(m_result.moves.back().position - m_extruder_offsets[m_extruder_id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
if (m_spiral_vase_active && !m_result.spiral_vase_layers.empty() && !m_result.moves.empty())
|
||||||
|
m_result.spiral_vase_layers.back().second.second = m_result.moves.size() - 1;
|
||||||
|
#endif // ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
|
||||||
// store move
|
// store move
|
||||||
store_move_vertex(type);
|
store_move_vertex(type);
|
||||||
}
|
}
|
||||||
|
@ -125,6 +125,9 @@ namespace Slic3r {
|
|||||||
std::vector<float> filament_densities;
|
std::vector<float> filament_densities;
|
||||||
PrintEstimatedStatistics print_statistics;
|
PrintEstimatedStatistics print_statistics;
|
||||||
std::vector<CustomGCode::Item> custom_gcode_per_print_z;
|
std::vector<CustomGCode::Item> custom_gcode_per_print_z;
|
||||||
|
#if ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
std::vector<std::pair<float, std::pair<size_t, size_t>>> spiral_vase_layers;
|
||||||
|
#endif // ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
|
||||||
#if ENABLE_GCODE_VIEWER_STATISTICS
|
#if ENABLE_GCODE_VIEWER_STATISTICS
|
||||||
int64_t time{ 0 };
|
int64_t time{ 0 };
|
||||||
@ -532,6 +535,9 @@ namespace Slic3r {
|
|||||||
SeamsDetector m_seams_detector;
|
SeamsDetector m_seams_detector;
|
||||||
OptionsZCorrector m_options_z_corrector;
|
OptionsZCorrector m_options_z_corrector;
|
||||||
size_t m_last_default_color_id;
|
size_t m_last_default_color_id;
|
||||||
|
#if ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
bool m_spiral_vase_active;
|
||||||
|
#endif // ENABLE_SPIRAL_VASE_LAYERS
|
||||||
#if ENABLE_GCODE_VIEWER_STATISTICS
|
#if ENABLE_GCODE_VIEWER_STATISTICS
|
||||||
std::chrono::time_point<std::chrono::high_resolution_clock> m_start_time;
|
std::chrono::time_point<std::chrono::high_resolution_clock> m_start_time;
|
||||||
#endif // ENABLE_GCODE_VIEWER_STATISTICS
|
#endif // ENABLE_GCODE_VIEWER_STATISTICS
|
||||||
|
@ -20,8 +20,10 @@ void GCodeWriter::apply_print_config(const PrintConfig &print_config)
|
|||||||
this->config.apply(print_config, true);
|
this->config.apply(print_config, true);
|
||||||
m_extrusion_axis = get_extrusion_axis(this->config);
|
m_extrusion_axis = get_extrusion_axis(this->config);
|
||||||
m_single_extruder_multi_material = print_config.single_extruder_multi_material.value;
|
m_single_extruder_multi_material = print_config.single_extruder_multi_material.value;
|
||||||
bool is_marlin = print_config.gcode_flavor.value == gcfMarlinLegacy || print_config.gcode_flavor.value == gcfMarlinFirmware;
|
bool use_mach_limits = print_config.gcode_flavor.value == gcfMarlinLegacy
|
||||||
m_max_acceleration = std::lrint((is_marlin && print_config.machine_limits_usage.value == MachineLimitsUsage::EmitToGCode) ?
|
|| print_config.gcode_flavor.value == gcfMarlinFirmware
|
||||||
|
|| print_config.gcode_flavor.value == gcfRepRapFirmware;
|
||||||
|
m_max_acceleration = std::lrint((use_mach_limits && print_config.machine_limits_usage.value == MachineLimitsUsage::EmitToGCode) ?
|
||||||
print_config.machine_max_acceleration_extruding.values.front() : 0);
|
print_config.machine_max_acceleration_extruding.values.front() : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1797,19 +1797,28 @@ std::vector<std::vector<ExPolygons>> multi_material_segmentation_by_painting(con
|
|||||||
line_end_f = facet[1] + t2 * (facet[2] - facet[1]);
|
line_end_f = facet[1] + t2 * (facet[2] - facet[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Point line_start(scale_(line_start_f.x()), scale_(line_start_f.y()));
|
Line line_to_test(Point(scale_(line_start_f.x()), scale_(line_start_f.y())),
|
||||||
Point line_end(scale_(line_end_f.x()), scale_(line_end_f.y()));
|
Point(scale_(line_end_f.x()), scale_(line_end_f.y())));
|
||||||
line_start -= print_object.center_offset();
|
line_to_test.translate(-print_object.center_offset());
|
||||||
line_end -= print_object.center_offset();
|
|
||||||
|
// BoundingBoxes for EdgeGrids are computed from printable regions. It is possible that the painted line (line_to_test) could
|
||||||
|
// be outside EdgeGrid's BoundingBox, for example, when the negative volume is used on the painted area (GH #7618).
|
||||||
|
// To ensure that the painted line is always inside EdgeGrid's BoundingBox, it is clipped by EdgeGrid's BoundingBox in cases
|
||||||
|
// when any of the endpoints of the line are outside the EdgeGrid's BoundingBox.
|
||||||
|
if (const BoundingBox &edge_grid_bbox = edge_grids[layer_idx].bbox(); !edge_grid_bbox.contains(line_to_test.a) || !edge_grid_bbox.contains(line_to_test.b)) {
|
||||||
|
// If the painted line (line_to_test) is entirely outside EdgeGrid's BoundingBox, skip this painted line.
|
||||||
|
if (!edge_grid_bbox.overlap(BoundingBox(Points{line_to_test.a, line_to_test.b})) ||
|
||||||
|
!line_to_test.clip_with_bbox(edge_grid_bbox))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
size_t mutex_idx = layer_idx & 0x3F;
|
size_t mutex_idx = layer_idx & 0x3F;
|
||||||
assert(mutex_idx < painted_lines_mutex.size());
|
assert(mutex_idx < painted_lines_mutex.size());
|
||||||
|
|
||||||
PaintedLineVisitor visitor(edge_grids[layer_idx], painted_lines[layer_idx], painted_lines_mutex[mutex_idx], 16);
|
PaintedLineVisitor visitor(edge_grids[layer_idx], painted_lines[layer_idx], painted_lines_mutex[mutex_idx], 16);
|
||||||
visitor.line_to_test.a = line_start;
|
visitor.line_to_test = line_to_test;
|
||||||
visitor.line_to_test.b = line_end;
|
visitor.color = int(extruder_idx);
|
||||||
visitor.color = int(extruder_idx);
|
edge_grids[layer_idx].visit_cells_intersecting_line(line_to_test.a, line_to_test.b, visitor);
|
||||||
edge_grids[layer_idx].visit_cells_intersecting_line(line_start, line_end, visitor);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}); // end of parallel_for
|
}); // end of parallel_for
|
||||||
|
@ -1248,6 +1248,13 @@ DynamicConfig PrintStatistics::config() const
|
|||||||
config.set_key_value("total_weight", new ConfigOptionFloat(this->total_weight));
|
config.set_key_value("total_weight", new ConfigOptionFloat(this->total_weight));
|
||||||
config.set_key_value("total_wipe_tower_cost", new ConfigOptionFloat(this->total_wipe_tower_cost));
|
config.set_key_value("total_wipe_tower_cost", new ConfigOptionFloat(this->total_wipe_tower_cost));
|
||||||
config.set_key_value("total_wipe_tower_filament", new ConfigOptionFloat(this->total_wipe_tower_filament));
|
config.set_key_value("total_wipe_tower_filament", new ConfigOptionFloat(this->total_wipe_tower_filament));
|
||||||
|
config.set_key_value("initial_tool", new ConfigOptionInt(int(this->initial_extruder_id)));
|
||||||
|
config.set_key_value("initial_extruder", new ConfigOptionInt(int(this->initial_extruder_id)));
|
||||||
|
config.set_key_value("initial_filament_type", new ConfigOptionString(this->initial_filament_type));
|
||||||
|
config.set_key_value("printing_filament_types", new ConfigOptionString(this->printing_filament_types));
|
||||||
|
config.set_key_value("num_printing_extruders", new ConfigOptionInt(int(this->printing_extruders.size())));
|
||||||
|
// config.set_key_value("printing_extruders", new ConfigOptionInts(std::vector<int>(this->printing_extruders.begin(), this->printing_extruders.end())));
|
||||||
|
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1257,7 +1264,8 @@ DynamicConfig PrintStatistics::placeholders()
|
|||||||
for (const std::string &key : {
|
for (const std::string &key : {
|
||||||
"print_time", "normal_print_time", "silent_print_time",
|
"print_time", "normal_print_time", "silent_print_time",
|
||||||
"used_filament", "extruded_volume", "total_cost", "total_weight",
|
"used_filament", "extruded_volume", "total_cost", "total_weight",
|
||||||
"total_toolchanges", "total_wipe_tower_cost", "total_wipe_tower_filament"})
|
"total_toolchanges", "total_wipe_tower_cost", "total_wipe_tower_filament",
|
||||||
|
"initial_tool", "initial_extruder", "initial_filament_type", "printing_filament_types", "num_printing_extruders" })
|
||||||
config.set_key_value(key, new ConfigOptionString(std::string("{") + key + "}"));
|
config.set_key_value(key, new ConfigOptionString(std::string("{") + key + "}"));
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
@ -455,6 +455,10 @@ struct PrintStatistics
|
|||||||
double total_weight;
|
double total_weight;
|
||||||
double total_wipe_tower_cost;
|
double total_wipe_tower_cost;
|
||||||
double total_wipe_tower_filament;
|
double total_wipe_tower_filament;
|
||||||
|
std::vector<unsigned int> printing_extruders;
|
||||||
|
unsigned int initial_extruder_id;
|
||||||
|
std::string initial_filament_type;
|
||||||
|
std::string printing_filament_types;
|
||||||
std::map<size_t, double> filament_stats;
|
std::map<size_t, double> filament_stats;
|
||||||
|
|
||||||
// Config with the filled in print statistics.
|
// Config with the filled in print statistics.
|
||||||
@ -472,7 +476,11 @@ struct PrintStatistics
|
|||||||
total_weight = 0.;
|
total_weight = 0.;
|
||||||
total_wipe_tower_cost = 0.;
|
total_wipe_tower_cost = 0.;
|
||||||
total_wipe_tower_filament = 0.;
|
total_wipe_tower_filament = 0.;
|
||||||
|
initial_extruder_id = 0;
|
||||||
|
initial_filament_type.clear();
|
||||||
|
printing_filament_types.clear();
|
||||||
filament_stats.clear();
|
filament_stats.clear();
|
||||||
|
printing_extruders.clear();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1614,7 +1614,7 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def->enum_labels.push_back(L("Use for time estimate"));
|
def->enum_labels.push_back(L("Use for time estimate"));
|
||||||
def->enum_labels.push_back(L("Ignore"));
|
def->enum_labels.push_back(L("Ignore"));
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionEnum<MachineLimitsUsage>(MachineLimitsUsage::EmitToGCode));
|
def->set_default_value(new ConfigOptionEnum<MachineLimitsUsage>(MachineLimitsUsage::TimeEstimateOnly));
|
||||||
|
|
||||||
{
|
{
|
||||||
struct AxisDefault {
|
struct AxisDefault {
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#include <libslic3r/SLA/RasterBase.hpp>
|
#include <libslic3r/SLA/RasterBase.hpp>
|
||||||
#include "libslic3r/ExPolygon.hpp"
|
#include "libslic3r/ExPolygon.hpp"
|
||||||
#include "libslic3r/MTUtils.hpp"
|
|
||||||
|
|
||||||
// For rasterizing
|
// For rasterizing
|
||||||
#include <agg/agg_basics.h>
|
#include <agg/agg_basics.h>
|
||||||
|
@ -47,7 +47,7 @@ inline indexed_triangle_set straight_walls(const Polygon &plate,
|
|||||||
double lo_z,
|
double lo_z,
|
||||||
double hi_z)
|
double hi_z)
|
||||||
{
|
{
|
||||||
return walls(plate, plate, lo_z, hi_z);
|
return wall_strip(plate, hi_z, lo_z); //walls(plate, plate, lo_z, hi_z);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function to cut tiny connector cavities for a given polygon. The input poly
|
// Function to cut tiny connector cavities for a given polygon. The input poly
|
||||||
|
@ -77,6 +77,8 @@ std::unique_ptr<RasterBase> create_raster_grayscale_aa(
|
|||||||
|
|
||||||
if (gamma > 0)
|
if (gamma > 0)
|
||||||
rst = std::make_unique<RasterGrayscaleAAGammaPower>(res, pxdim, tr, gamma);
|
rst = std::make_unique<RasterGrayscaleAAGammaPower>(res, pxdim, tr, gamma);
|
||||||
|
else if (std::abs(gamma - 1.) < 1e-6)
|
||||||
|
rst = std::make_unique<RasterGrayscaleAA>(res, pxdim, tr, agg::gamma_none());
|
||||||
else
|
else
|
||||||
rst = std::make_unique<RasterGrayscaleAA>(res, pxdim, tr, agg::gamma_threshold(.5));
|
rst = std::make_unique<RasterGrayscaleAA>(res, pxdim, tr, agg::gamma_threshold(.5));
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
#include <libslic3r/ExPolygon.hpp>
|
#include <libslic3r/ExPolygon.hpp>
|
||||||
#include <libslic3r/SLA/Concurrency.hpp>
|
//#include <libslic3r/SLA/Concurrency.hpp>
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
|
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
#include "MTUtils.hpp"
|
#include "MTUtils.hpp"
|
||||||
#include "Zipper.hpp"
|
#include "Zipper.hpp"
|
||||||
|
|
||||||
|
#include "libslic3r/Execution/ExecutionTBB.hpp"
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
|
|
||||||
enum SLAPrintStep : unsigned int {
|
enum SLAPrintStep : unsigned int {
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
#include "SlicesToTriangleMesh.hpp"
|
#include "SlicesToTriangleMesh.hpp"
|
||||||
|
|
||||||
//#include "libslic3r/MTUtils.hpp"
|
|
||||||
#include "libslic3r/Execution/ExecutionTBB.hpp"
|
#include "libslic3r/Execution/ExecutionTBB.hpp"
|
||||||
#include "libslic3r/ClipperUtils.hpp"
|
#include "libslic3r/ClipperUtils.hpp"
|
||||||
#include "libslic3r/Tesselate.hpp"
|
#include "libslic3r/Tesselate.hpp"
|
||||||
@ -12,39 +11,6 @@
|
|||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
|
|
||||||
inline indexed_triangle_set wall_strip(const Polygon &poly,
|
|
||||||
double lower_z_mm,
|
|
||||||
double upper_z_mm)
|
|
||||||
{
|
|
||||||
indexed_triangle_set ret;
|
|
||||||
|
|
||||||
size_t startidx = ret.vertices.size();
|
|
||||||
size_t offs = poly.points.size();
|
|
||||||
|
|
||||||
ret.vertices.reserve(ret.vertices.size() + 2 *offs);
|
|
||||||
|
|
||||||
// The expression unscaled(p).cast<float>().eval() is important here
|
|
||||||
// as it ensures identical conversion of 2D scaled coordinates to float 3D
|
|
||||||
// to that used by the tesselation. This way, the duplicated vertices in the
|
|
||||||
// output mesh can be found with the == operator of the points.
|
|
||||||
// its_merge_vertices will then reliably remove the duplicates.
|
|
||||||
for (const Point &p : poly.points)
|
|
||||||
ret.vertices.emplace_back(to_3d(unscaled(p).cast<float>().eval(), float(lower_z_mm)));
|
|
||||||
|
|
||||||
for (const Point &p : poly.points)
|
|
||||||
ret.vertices.emplace_back(to_3d(unscaled(p).cast<float>().eval(), float(upper_z_mm)));
|
|
||||||
|
|
||||||
for (size_t i = startidx + 1; i < startidx + offs; ++i) {
|
|
||||||
ret.indices.emplace_back(i - 1, i, i + offs - 1);
|
|
||||||
ret.indices.emplace_back(i, i + offs, i + offs - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
ret.indices.emplace_back(startidx + offs - 1, startidx, startidx + 2 * offs - 1);
|
|
||||||
ret.indices.emplace_back(startidx, startidx + offs, startidx + 2 * offs - 1);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Same as walls() but with identical higher and lower polygons.
|
// Same as walls() but with identical higher and lower polygons.
|
||||||
indexed_triangle_set inline straight_walls(const Polygon &plate,
|
indexed_triangle_set inline straight_walls(const Polygon &plate,
|
||||||
double lo_z,
|
double lo_z,
|
||||||
|
@ -36,26 +36,13 @@
|
|||||||
#define ENABLE_FIXED_SCREEN_SIZE_POINT_MARKERS 1
|
#define ENABLE_FIXED_SCREEN_SIZE_POINT_MARKERS 1
|
||||||
|
|
||||||
|
|
||||||
//====================
|
//================
|
||||||
// 2.4.0.beta1 techs
|
// 2.4.1.rc techs
|
||||||
//====================
|
//================
|
||||||
#define ENABLE_2_4_0_BETA1 1
|
#define ENABLE_2_4_1_RC 1
|
||||||
|
|
||||||
// Enable rendering modifiers and similar objects always as transparent
|
// Enable detection of layers for spiral vase prints
|
||||||
#define ENABLE_MODIFIERS_ALWAYS_TRANSPARENT (1 && ENABLE_2_4_0_BETA1)
|
#define ENABLE_SPIRAL_VASE_LAYERS (1 && ENABLE_2_4_1_RC)
|
||||||
|
|
||||||
|
|
||||||
//====================
|
|
||||||
// 2.4.0.beta2 techs
|
|
||||||
//====================
|
|
||||||
#define ENABLE_2_4_0_BETA2 1
|
|
||||||
|
|
||||||
// Enable modified ImGuiWrapper::slider_float() to create a compound widget where
|
|
||||||
// an additional button can be used to set the keyboard focus into the slider
|
|
||||||
// to allow the user to type in the desired value
|
|
||||||
#define ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT (1 && ENABLE_2_4_0_BETA2)
|
|
||||||
// Enable fit print volume command for circular printbeds
|
|
||||||
#define ENABLE_ENHANCED_PRINT_VOLUME_FIT (1 && ENABLE_2_4_0_BETA2)
|
|
||||||
|
|
||||||
|
|
||||||
//====================
|
//====================
|
||||||
|
@ -245,4 +245,35 @@ std::vector<Vec2f> triangulate_expolygons_2f(const ExPolygons &polys, bool flip)
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
indexed_triangle_set wall_strip(const Polygon &poly, double lower_z_mm, double upper_z_mm)
|
||||||
|
{
|
||||||
|
indexed_triangle_set ret;
|
||||||
|
|
||||||
|
size_t startidx = ret.vertices.size();
|
||||||
|
size_t offs = poly.points.size();
|
||||||
|
|
||||||
|
ret.vertices.reserve(ret.vertices.size() + 2 *offs);
|
||||||
|
|
||||||
|
// The expression unscaled(p).cast<float>().eval() is important here
|
||||||
|
// as it ensures identical conversion of 2D scaled coordinates to float 3D
|
||||||
|
// to that used by the tesselation. This way, the duplicated vertices in the
|
||||||
|
// output mesh can be found with the == operator of the points.
|
||||||
|
// its_merge_vertices will then reliably remove the duplicates.
|
||||||
|
for (const Point &p : poly.points)
|
||||||
|
ret.vertices.emplace_back(to_3d(unscaled(p).cast<float>().eval(), float(lower_z_mm)));
|
||||||
|
|
||||||
|
for (const Point &p : poly.points)
|
||||||
|
ret.vertices.emplace_back(to_3d(unscaled(p).cast<float>().eval(), float(upper_z_mm)));
|
||||||
|
|
||||||
|
for (size_t i = startidx + 1; i < startidx + offs; ++i) {
|
||||||
|
ret.indices.emplace_back(i - 1, i, i + offs - 1);
|
||||||
|
ret.indices.emplace_back(i, i + offs, i + offs - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret.indices.emplace_back(startidx + offs - 1, startidx, startidx + 2 * offs - 1);
|
||||||
|
ret.indices.emplace_back(startidx, startidx + offs, startidx + 2 * offs - 1);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Slic3r
|
} // namespace Slic3r
|
||||||
|
@ -2,14 +2,12 @@
|
|||||||
#define slic3r_Tesselate_hpp_
|
#define slic3r_Tesselate_hpp_
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <admesh/stl.h>
|
||||||
|
|
||||||
#include "Point.hpp"
|
#include "ExPolygon.hpp"
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
|
|
||||||
class ExPolygon;
|
|
||||||
typedef std::vector<ExPolygon> ExPolygons;
|
|
||||||
|
|
||||||
const bool constexpr NORMALS_UP = false;
|
const bool constexpr NORMALS_UP = false;
|
||||||
const bool constexpr NORMALS_DOWN = true;
|
const bool constexpr NORMALS_DOWN = true;
|
||||||
|
|
||||||
@ -20,6 +18,10 @@ extern std::vector<Vec2d> triangulate_expolygons_2d(const ExPolygons &polys, boo
|
|||||||
extern std::vector<Vec2f> triangulate_expolygon_2f (const ExPolygon &poly, bool flip = NORMALS_UP);
|
extern std::vector<Vec2f> triangulate_expolygon_2f (const ExPolygon &poly, bool flip = NORMALS_UP);
|
||||||
extern std::vector<Vec2f> triangulate_expolygons_2f(const ExPolygons &polys, bool flip = NORMALS_UP);
|
extern std::vector<Vec2f> triangulate_expolygons_2f(const ExPolygons &polys, bool flip = NORMALS_UP);
|
||||||
|
|
||||||
|
indexed_triangle_set wall_strip(const Polygon &poly,
|
||||||
|
double lower_z_mm,
|
||||||
|
double upper_z_mm);
|
||||||
|
|
||||||
} // namespace Slic3r
|
} // namespace Slic3r
|
||||||
|
|
||||||
#endif /* slic3r_Tesselate_hpp_ */
|
#endif /* slic3r_Tesselate_hpp_ */
|
||||||
|
@ -74,6 +74,10 @@ extern local_encoded_string encode_path(const char *src);
|
|||||||
extern std::string decode_path(const char *src);
|
extern std::string decode_path(const char *src);
|
||||||
extern std::string normalize_utf8_nfc(const char *src);
|
extern std::string normalize_utf8_nfc(const char *src);
|
||||||
|
|
||||||
|
// Returns next utf8 sequence length. =number of bytes in string, that creates together one utf-8 character.
|
||||||
|
// Starting at pos. ASCII characters returns 1. Works also if pos is in the middle of the sequence.
|
||||||
|
extern size_t get_utf8_sequence_length(const std::string& text, size_t pos = 0);
|
||||||
|
|
||||||
// Safely rename a file even if the target exists.
|
// Safely rename a file even if the target exists.
|
||||||
// On Windows, the file explorer (or anti-virus or whatever else) often locks the file
|
// On Windows, the file explorer (or anti-virus or whatever else) often locks the file
|
||||||
// for a short while, so the file may not be movable. Retry while we see recoverable errors.
|
// for a short while, so the file may not be movable. Retry while we see recoverable errors.
|
||||||
|
@ -863,6 +863,71 @@ std::string normalize_utf8_nfc(const char *src)
|
|||||||
return boost::locale::normalize(src, boost::locale::norm_nfc, locale_utf8);
|
return boost::locale::normalize(src, boost::locale::norm_nfc, locale_utf8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t get_utf8_sequence_length(const std::string& text, size_t pos)
|
||||||
|
{
|
||||||
|
assert(pos < text.size());
|
||||||
|
size_t length = 0;
|
||||||
|
unsigned char c = text[pos];
|
||||||
|
if (c < 0x80) { // 0x00-0x7F
|
||||||
|
// is ASCII letter
|
||||||
|
length++;
|
||||||
|
}
|
||||||
|
// Bytes 0x80 to 0xBD are trailer bytes in a multibyte sequence.
|
||||||
|
// pos is in the middle of a utf-8 sequence. Add the utf-8 trailer bytes.
|
||||||
|
else if (c < 0xC0) { // 0x80-0xBF
|
||||||
|
length++;
|
||||||
|
while (pos + length < text.size()) {
|
||||||
|
c = text[pos + length];
|
||||||
|
if (c < 0x80 || c >= 0xC0) {
|
||||||
|
break; // prevent overrun
|
||||||
|
}
|
||||||
|
length++; // add a utf-8 trailer byte
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Bytes 0xC0 to 0xFD are header bytes in a multibyte sequence.
|
||||||
|
// The number of one bits above the topmost zero bit indicates the number of bytes (including this one) in the whole sequence.
|
||||||
|
else if (c < 0xE0) { // 0xC0-0xDF
|
||||||
|
// add a utf-8 sequence (2 bytes)
|
||||||
|
if (pos + 2 > text.size()) {
|
||||||
|
return text.size() - pos; // prevent overrun
|
||||||
|
}
|
||||||
|
length += 2;
|
||||||
|
}
|
||||||
|
else if (c < 0xF0) { // 0xE0-0xEF
|
||||||
|
// add a utf-8 sequence (3 bytes)
|
||||||
|
if (pos + 3 > text.size()) {
|
||||||
|
return text.size() - pos; // prevent overrun
|
||||||
|
}
|
||||||
|
length += 3;
|
||||||
|
}
|
||||||
|
else if (c < 0xF8) { // 0xF0-0xF7
|
||||||
|
// add a utf-8 sequence (4 bytes)
|
||||||
|
if (pos + 4 > text.size()) {
|
||||||
|
return text.size() - pos; // prevent overrun
|
||||||
|
}
|
||||||
|
length += 4;
|
||||||
|
}
|
||||||
|
else if (c < 0xFC) { // 0xF8-0xFB
|
||||||
|
// add a utf-8 sequence (5 bytes)
|
||||||
|
if (pos + 5 > text.size()) {
|
||||||
|
return text.size() - pos; // prevent overrun
|
||||||
|
}
|
||||||
|
length += 5;
|
||||||
|
}
|
||||||
|
else if (c < 0xFE) { // 0xFC-0xFD
|
||||||
|
// add a utf-8 sequence (6 bytes)
|
||||||
|
if (pos + 6 > text.size()) {
|
||||||
|
return text.size() - pos; // prevent overrun
|
||||||
|
}
|
||||||
|
length += 6;
|
||||||
|
}
|
||||||
|
else { // 0xFE-0xFF
|
||||||
|
// not a utf-8 sequence
|
||||||
|
length++;
|
||||||
|
}
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
namespace PerlUtils {
|
namespace PerlUtils {
|
||||||
// Get a file name including the extension.
|
// Get a file name including the extension.
|
||||||
std::string path_to_filename(const char *src) { return boost::filesystem::path(src).filename().string(); }
|
std::string path_to_filename(const char *src) { return boost::filesystem::path(src).filename().string(); }
|
||||||
|
@ -169,9 +169,11 @@ set(SLIC3R_GUI_SOURCES
|
|||||||
GUI/PrintHostDialogs.cpp
|
GUI/PrintHostDialogs.cpp
|
||||||
GUI/PrintHostDialogs.hpp
|
GUI/PrintHostDialogs.hpp
|
||||||
GUI/Jobs/Job.hpp
|
GUI/Jobs/Job.hpp
|
||||||
GUI/Jobs/Job.cpp
|
GUI/Jobs/Worker.hpp
|
||||||
GUI/Jobs/PlaterJob.hpp
|
GUI/Jobs/BoostThreadWorker.hpp
|
||||||
GUI/Jobs/PlaterJob.cpp
|
GUI/Jobs/BoostThreadWorker.cpp
|
||||||
|
GUI/Jobs/BusyCursorJob.hpp
|
||||||
|
GUI/Jobs/PlaterWorker.hpp
|
||||||
GUI/Jobs/ArrangeJob.hpp
|
GUI/Jobs/ArrangeJob.hpp
|
||||||
GUI/Jobs/ArrangeJob.cpp
|
GUI/Jobs/ArrangeJob.cpp
|
||||||
GUI/Jobs/RotoptimizeJob.hpp
|
GUI/Jobs/RotoptimizeJob.hpp
|
||||||
@ -183,6 +185,8 @@ set(SLIC3R_GUI_SOURCES
|
|||||||
GUI/Jobs/ProgressIndicator.hpp
|
GUI/Jobs/ProgressIndicator.hpp
|
||||||
GUI/Jobs/NotificationProgressIndicator.hpp
|
GUI/Jobs/NotificationProgressIndicator.hpp
|
||||||
GUI/Jobs/NotificationProgressIndicator.cpp
|
GUI/Jobs/NotificationProgressIndicator.cpp
|
||||||
|
GUI/Jobs/ThreadSafeQueue.hpp
|
||||||
|
GUI/Jobs/SLAImportDialog.hpp
|
||||||
GUI/ProgressStatusBar.hpp
|
GUI/ProgressStatusBar.hpp
|
||||||
GUI/ProgressStatusBar.cpp
|
GUI/ProgressStatusBar.cpp
|
||||||
GUI/Mouse3DController.cpp
|
GUI/Mouse3DController.cpp
|
||||||
|
@ -477,11 +477,7 @@ ColorRGBA color_from_model_volume(const ModelVolume& model_volume)
|
|||||||
if (model_volume.is_negative_volume())
|
if (model_volume.is_negative_volume())
|
||||||
color = { 0.2f, 0.2f, 0.2f, 1.0f };
|
color = { 0.2f, 0.2f, 0.2f, 1.0f };
|
||||||
else if (model_volume.is_modifier())
|
else if (model_volume.is_modifier())
|
||||||
#if ENABLE_MODIFIERS_ALWAYS_TRANSPARENT
|
|
||||||
color = { 1.0, 1.0f, 0.2f, 1.0f };
|
color = { 1.0, 1.0f, 0.2f, 1.0f };
|
||||||
#else
|
|
||||||
color[0] = { 0.2f, 1.0f, 0.2f, 1.0f };
|
|
||||||
#endif // ENABLE_MODIFIERS_ALWAYS_TRANSPARENT
|
|
||||||
else if (model_volume.is_support_blocker())
|
else if (model_volume.is_support_blocker())
|
||||||
color = { 1.0f, 0.2f, 0.2f, 1.0f };
|
color = { 1.0f, 0.2f, 0.2f, 1.0f };
|
||||||
else if (model_volume.is_support_enforcer())
|
else if (model_volume.is_support_enforcer())
|
||||||
@ -502,15 +498,9 @@ std::array<float, 4> color_from_model_volume(const ModelVolume& model_volume)
|
|||||||
color[2] = 0.2f;
|
color[2] = 0.2f;
|
||||||
}
|
}
|
||||||
else if (model_volume.is_modifier()) {
|
else if (model_volume.is_modifier()) {
|
||||||
#if ENABLE_MODIFIERS_ALWAYS_TRANSPARENT
|
|
||||||
color[0] = 1.0f;
|
color[0] = 1.0f;
|
||||||
color[1] = 1.0f;
|
color[1] = 1.0f;
|
||||||
color[2] = 0.2f;
|
color[2] = 0.2f;
|
||||||
#else
|
|
||||||
color[0] = 0.2f;
|
|
||||||
color[1] = 1.0f;
|
|
||||||
color[2] = 0.2f;
|
|
||||||
#endif // ENABLE_MODIFIERS_ALWAYS_TRANSPARENT
|
|
||||||
}
|
}
|
||||||
else if (model_volume.is_support_blocker()) {
|
else if (model_volume.is_support_blocker()) {
|
||||||
color[0] = 1.0f;
|
color[0] = 1.0f;
|
||||||
@ -923,15 +913,11 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, bool disab
|
|||||||
glsafe(::glDisable(GL_CULL_FACE));
|
glsafe(::glDisable(GL_CULL_FACE));
|
||||||
|
|
||||||
for (GLVolumeWithIdAndZ& volume : to_render) {
|
for (GLVolumeWithIdAndZ& volume : to_render) {
|
||||||
#if ENABLE_MODIFIERS_ALWAYS_TRANSPARENT
|
|
||||||
if (type == ERenderType::Transparent)
|
if (type == ERenderType::Transparent)
|
||||||
volume.first->force_transparent = true;
|
volume.first->force_transparent = true;
|
||||||
#endif // ENABLE_MODIFIERS_ALWAYS_TRANSPARENT
|
|
||||||
volume.first->set_render_color();
|
volume.first->set_render_color();
|
||||||
#if ENABLE_MODIFIERS_ALWAYS_TRANSPARENT
|
|
||||||
if (type == ERenderType::Transparent)
|
if (type == ERenderType::Transparent)
|
||||||
volume.first->force_transparent = false;
|
volume.first->force_transparent = false;
|
||||||
#endif // ENABLE_MODIFIERS_ALWAYS_TRANSPARENT
|
|
||||||
|
|
||||||
// render sinking contours of non-hovered volumes
|
// render sinking contours of non-hovered volumes
|
||||||
if (m_show_sinking_contours)
|
if (m_show_sinking_contours)
|
||||||
|
@ -135,7 +135,7 @@ wxString CopyrightsDialog::get_html_text()
|
|||||||
{
|
{
|
||||||
wxColour bgr_clr = wxGetApp().get_window_default_clr();//wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
|
wxColour bgr_clr = wxGetApp().get_window_default_clr();//wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
|
||||||
|
|
||||||
const auto text_clr = wxGetApp().get_label_clr_default();// wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
|
const auto text_clr = wxGetApp().get_label_clr_default();
|
||||||
#if ENABLE_COLOR_CLASSES
|
#if ENABLE_COLOR_CLASSES
|
||||||
const auto text_clr_str = encode_color(ColorRGB(text_clr.Red(), text_clr.Green(), text_clr.Blue()));
|
const auto text_clr_str = encode_color(ColorRGB(text_clr.Red(), text_clr.Green(), text_clr.Blue()));
|
||||||
const auto bgr_clr_str = encode_color(ColorRGB(bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()));
|
const auto bgr_clr_str = encode_color(ColorRGB(bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()));
|
||||||
@ -264,13 +264,13 @@ AboutDialog::AboutDialog()
|
|||||||
{
|
{
|
||||||
m_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit()));
|
m_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit()));
|
||||||
wxFont font = get_default_font(this);
|
wxFont font = get_default_font(this);
|
||||||
const auto text_clr = wxGetApp().get_label_clr_default();//wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
|
const auto text_clr = wxGetApp().get_label_clr_default();
|
||||||
#if ENABLE_COLOR_CLASSES
|
#if ENABLE_COLOR_CLASSES
|
||||||
const auto text_clr_str = encode_color(ColorRGB(text_clr.Red(), text_clr.Green(), text_clr.Blue()));
|
const auto text_clr_str = encode_color(ColorRGB(text_clr.Red(), text_clr.Green(), text_clr.Blue()));
|
||||||
const auto bgr_clr_str = encode_color(ColorRGB(bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()));
|
const auto bgr_clr_str = encode_color(ColorRGB(bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()));
|
||||||
#else
|
#else
|
||||||
auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue());
|
auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue());
|
||||||
auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue());
|
auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue());
|
||||||
#endif // ENABLE_COLOR_CLASSES
|
#endif // ENABLE_COLOR_CLASSES
|
||||||
|
|
||||||
const int fs = font.GetPointSize()-1;
|
const int fs = font.GetPointSize()-1;
|
||||||
|
@ -81,7 +81,7 @@ std::pair<std::string, bool> SlicingProcessCompletedEvent::format_error_message(
|
|||||||
"be glad if you reported it."))) % SLIC3R_APP_NAME).str());
|
"be glad if you reported it."))) % SLIC3R_APP_NAME).str());
|
||||||
error = std::string(errmsg.ToUTF8()) + "\n\n" + std::string(ex.what());
|
error = std::string(errmsg.ToUTF8()) + "\n\n" + std::string(ex.what());
|
||||||
} catch (const HardCrash &ex) {
|
} catch (const HardCrash &ex) {
|
||||||
error = GUI::format("PrusaSlicer has encountered a fatal error: \"%1%\"", ex.what()) + "\n\n" +
|
error = GUI::format(_L("PrusaSlicer has encountered a fatal error: \"%1%\""), ex.what()) + "\n\n" +
|
||||||
_u8L("Please save your project and restart PrusaSlicer. "
|
_u8L("Please save your project and restart PrusaSlicer. "
|
||||||
"We would be glad if you reported the issue.");
|
"We would be glad if you reported the issue.");
|
||||||
} catch (PlaceholderParserError &ex) {
|
} catch (PlaceholderParserError &ex) {
|
||||||
|
@ -309,7 +309,7 @@ wxPanel* BedShapePanel::init_texture_panel()
|
|||||||
wxStaticText* lbl = dynamic_cast<wxStaticText*>(e.GetEventObject());
|
wxStaticText* lbl = dynamic_cast<wxStaticText*>(e.GetEventObject());
|
||||||
if (lbl != nullptr) {
|
if (lbl != nullptr) {
|
||||||
bool exists = (m_custom_texture == NONE) || boost::filesystem::exists(m_custom_texture);
|
bool exists = (m_custom_texture == NONE) || boost::filesystem::exists(m_custom_texture);
|
||||||
lbl->SetForegroundColour(exists ? /*wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)*/wxGetApp().get_label_clr_default() : wxColor(*wxRED));
|
lbl->SetForegroundColour(exists ? wxGetApp().get_label_clr_default() : wxColor(*wxRED));
|
||||||
|
|
||||||
wxString tooltip_text = "";
|
wxString tooltip_text = "";
|
||||||
if (m_custom_texture != NONE) {
|
if (m_custom_texture != NONE) {
|
||||||
@ -380,7 +380,7 @@ wxPanel* BedShapePanel::init_model_panel()
|
|||||||
wxStaticText* lbl = dynamic_cast<wxStaticText*>(e.GetEventObject());
|
wxStaticText* lbl = dynamic_cast<wxStaticText*>(e.GetEventObject());
|
||||||
if (lbl != nullptr) {
|
if (lbl != nullptr) {
|
||||||
bool exists = (m_custom_model == NONE) || boost::filesystem::exists(m_custom_model);
|
bool exists = (m_custom_model == NONE) || boost::filesystem::exists(m_custom_model);
|
||||||
lbl->SetForegroundColour(exists ? /*wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)*/wxGetApp().get_label_clr_default() : wxColor(*wxRED));
|
lbl->SetForegroundColour(exists ? wxGetApp().get_label_clr_default() : wxColor(*wxRED));
|
||||||
|
|
||||||
wxString tooltip_text = "";
|
wxString tooltip_text = "";
|
||||||
if (m_custom_model != NONE) {
|
if (m_custom_model != NONE) {
|
||||||
|
@ -112,7 +112,7 @@ static wxString generate_html_page(const Config::SnapshotDB &snapshot_db, const
|
|||||||
wxString text =
|
wxString text =
|
||||||
"<html>"
|
"<html>"
|
||||||
"<body bgcolor=\"" + get_color(wxGetApp().get_window_default_clr()/*wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)*/) + "\" cellspacing=\"2\" cellpadding=\"0\" border=\"0\" link=\"#800000\">"
|
"<body bgcolor=\"" + get_color(wxGetApp().get_window_default_clr()/*wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)*/) + "\" cellspacing=\"2\" cellpadding=\"0\" border=\"0\" link=\"#800000\">"
|
||||||
"<font color=\"" + get_color(wxGetApp().get_label_clr_default()/*wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)*/) + "\">";
|
"<font color=\"" + get_color(wxGetApp().get_label_clr_default()) + "\">";
|
||||||
text += "<table style=\"width:100%\">";
|
text += "<table style=\"width:100%\">";
|
||||||
for (size_t i_row = 0; i_row < snapshot_db.snapshots().size(); ++ i_row) {
|
for (size_t i_row = 0; i_row < snapshot_db.snapshots().size(); ++ i_row) {
|
||||||
const Config::Snapshot &snapshot = snapshot_db.snapshots()[snapshot_db.snapshots().size() - i_row - 1];
|
const Config::Snapshot &snapshot = snapshot_db.snapshots()[snapshot_db.snapshots().size() - i_row - 1];
|
||||||
|
@ -755,7 +755,7 @@ void PageMaterials::set_compatible_printers_html_window(const std::vector<std::s
|
|||||||
const auto text_clr_str = encode_color(ColorRGB(text_clr.Red(), text_clr.Green(), text_clr.Blue()));
|
const auto text_clr_str = encode_color(ColorRGB(text_clr.Red(), text_clr.Green(), text_clr.Blue()));
|
||||||
#else
|
#else
|
||||||
const auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue());
|
const auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue());
|
||||||
const auto text_clr = wxGetApp().get_label_clr_default();//wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
|
const auto text_clr = wxGetApp().get_label_clr_default();
|
||||||
const auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue());
|
const auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue());
|
||||||
#endif // ENABLE_COLOR_CLASSES
|
#endif // ENABLE_COLOR_CLASSES
|
||||||
wxString first_line = format_wxstr(_L("%1% marked with <b>*</b> are <b>not</b> compatible with some installed printers."), materials->technology == T_FFF ? _L("Filaments") : _L("SLA materials"));
|
wxString first_line = format_wxstr(_L("%1% marked with <b>*</b> are <b>not</b> compatible with some installed printers."), materials->technology == T_FFF ? _L("Filaments") : _L("SLA materials"));
|
||||||
@ -2738,8 +2738,11 @@ bool ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
bool is_filaments_changed = app_config->get_section(AppConfig::SECTION_FILAMENTS) != appconfig_new.get_section(AppConfig::SECTION_FILAMENTS);
|
auto changed = [app_config, &appconfig_new = std::as_const(this->appconfig_new)](const std::string& section_name) {
|
||||||
bool is_sla_materials_changed = app_config->get_section(AppConfig::SECTION_MATERIALS) != appconfig_new.get_section(AppConfig::SECTION_MATERIALS);
|
return (app_config->has_section(section_name) ? app_config->get_section(section_name) : std::map<std::string, std::string>()) != appconfig_new.get_section(section_name);
|
||||||
|
};
|
||||||
|
bool is_filaments_changed = changed(AppConfig::SECTION_FILAMENTS);
|
||||||
|
bool is_sla_materials_changed = changed(AppConfig::SECTION_MATERIALS);
|
||||||
if ((check_unsaved_preset_changes = is_filaments_changed || is_sla_materials_changed)) {
|
if ((check_unsaved_preset_changes = is_filaments_changed || is_sla_materials_changed)) {
|
||||||
header = is_filaments_changed ? _L("Some filaments were uninstalled.") : _L("Some SLA materials were uninstalled.");
|
header = is_filaments_changed ? _L("Some filaments were uninstalled.") : _L("Some SLA materials were uninstalled.");
|
||||||
if (!wxGetApp().check_and_keep_current_preset_changes(caption, header, act_btns, &apply_keeped_changes))
|
if (!wxGetApp().check_and_keep_current_preset_changes(caption, header, act_btns, &apply_keeped_changes))
|
||||||
|
@ -270,13 +270,12 @@ void FirmwareDialog::priv::flashing_start(unsigned tasks)
|
|||||||
|
|
||||||
void FirmwareDialog::priv::flashing_done(AvrDudeComplete complete)
|
void FirmwareDialog::priv::flashing_done(AvrDudeComplete complete)
|
||||||
{
|
{
|
||||||
auto text_color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
|
|
||||||
port_picker->Enable();
|
port_picker->Enable();
|
||||||
btn_rescan->Enable();
|
btn_rescan->Enable();
|
||||||
hex_picker->Enable();
|
hex_picker->Enable();
|
||||||
btn_close->Enable();
|
btn_close->Enable();
|
||||||
btn_flash->SetLabel(btn_flash_label_ready);
|
btn_flash->SetLabel(btn_flash_label_ready);
|
||||||
txt_status->SetForegroundColour(text_color);
|
txt_status->SetForegroundColour(GUI::wxGetApp().get_label_clr_default());
|
||||||
timer_pulse.Stop();
|
timer_pulse.Stop();
|
||||||
progressbar->SetValue(progressbar->GetRange());
|
progressbar->SetValue(progressbar->GetRange());
|
||||||
|
|
||||||
@ -811,7 +810,7 @@ FirmwareDialog::FirmwareDialog(wxWindow *parent) :
|
|||||||
panel->SetSizer(vsizer);
|
panel->SetSizer(vsizer);
|
||||||
|
|
||||||
auto *label_hex_picker = new wxStaticText(panel, wxID_ANY, _(L("Firmware image:")));
|
auto *label_hex_picker = new wxStaticText(panel, wxID_ANY, _(L("Firmware image:")));
|
||||||
p->hex_picker = new wxFilePickerCtrl(panel, wxID_ANY, wxEmptyString, wxFileSelectorPromptStr,
|
p->hex_picker = new wxFilePickerCtrl(panel, wxID_ANY, wxEmptyString, /*wxFileSelectorPromptStr*/_L("Select a file"),
|
||||||
"Hex files (*.hex)|*.hex|All files|*.*");
|
"Hex files (*.hex)|*.hex|All files|*.*");
|
||||||
p->hex_picker->GetPickerCtrl()->SetLabelText(_(L("Browse")));
|
p->hex_picker->GetPickerCtrl()->SetLabelText(_(L("Browse")));
|
||||||
|
|
||||||
|
@ -295,12 +295,7 @@ void GCodeViewer::SequentialView::Marker::render() const
|
|||||||
if (width != last_window_width || length != last_text_length) {
|
if (width != last_window_width || length != last_text_length) {
|
||||||
last_window_width = width;
|
last_window_width = width;
|
||||||
last_text_length = length;
|
last_text_length = length;
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
imgui.set_requires_extra_frame();
|
imgui.set_requires_extra_frame();
|
||||||
#else
|
|
||||||
wxGetApp().plater()->get_current_canvas3D()->set_as_dirty();
|
|
||||||
wxGetApp().plater()->get_current_canvas3D()->request_extra_frame();
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
}
|
}
|
||||||
|
|
||||||
imgui.end();
|
imgui.end();
|
||||||
@ -2114,6 +2109,16 @@ void GCodeViewer::load_toolpaths(const GCodeProcessorResult& gcode_result)
|
|||||||
sort_remove_duplicates(m_extruder_ids);
|
sort_remove_duplicates(m_extruder_ids);
|
||||||
m_extruder_ids.shrink_to_fit();
|
m_extruder_ids.shrink_to_fit();
|
||||||
|
|
||||||
|
#if ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
// replace layers for spiral vase mode
|
||||||
|
if (!gcode_result.spiral_vase_layers.empty()) {
|
||||||
|
m_layers.reset();
|
||||||
|
for (const auto& layer : gcode_result.spiral_vase_layers) {
|
||||||
|
m_layers.append(layer.first, { layer.second.first, layer.second.second });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // ENABLE_SPIRAL_VASE_LAYERS
|
||||||
|
|
||||||
// set layers z range
|
// set layers z range
|
||||||
if (!m_layers.empty())
|
if (!m_layers.empty())
|
||||||
m_layers_z_range = { 0, static_cast<unsigned int>(m_layers.size() - 1) };
|
m_layers_z_range = { 0, static_cast<unsigned int>(m_layers.size() - 1) };
|
||||||
@ -3160,12 +3165,7 @@ void GCodeViewer::render_legend(float& legend_height)
|
|||||||
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, 0.3333f);
|
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, 0.3333f);
|
||||||
|
|
||||||
// to avoid the tooltip to change size when moving the mouse
|
// to avoid the tooltip to change size when moving the mouse
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
imgui.set_requires_extra_frame();
|
imgui.set_requires_extra_frame();
|
||||||
#else
|
|
||||||
wxGetApp().plater()->get_current_canvas3D()->set_as_dirty();
|
|
||||||
wxGetApp().plater()->get_current_canvas3D()->request_extra_frame();
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3962,12 +3962,7 @@ void GCodeViewer::render_legend(float& legend_height)
|
|||||||
if (can_show_mode_button(mode)) {
|
if (can_show_mode_button(mode)) {
|
||||||
if (imgui.button(label)) {
|
if (imgui.button(label)) {
|
||||||
m_time_estimate_mode = mode;
|
m_time_estimate_mode = mode;
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
imgui.set_requires_extra_frame();
|
imgui.set_requires_extra_frame();
|
||||||
#else
|
|
||||||
wxGetApp().plater()->get_current_canvas3D()->set_as_dirty();
|
|
||||||
wxGetApp().plater()->get_current_canvas3D()->request_extra_frame();
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -482,9 +482,8 @@ class GCodeViewer
|
|||||||
size_t first{ 0 };
|
size_t first{ 0 };
|
||||||
size_t last{ 0 };
|
size_t last{ 0 };
|
||||||
|
|
||||||
bool operator == (const Endpoints& other) const {
|
bool operator == (const Endpoints& other) const { return first == other.first && last == other.last; }
|
||||||
return first == other.first && last == other.last;
|
bool operator != (const Endpoints& other) const { return !operator==(other); }
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -513,9 +512,8 @@ class GCodeViewer
|
|||||||
bool operator != (const Layers& other) const {
|
bool operator != (const Layers& other) const {
|
||||||
if (m_zs != other.m_zs)
|
if (m_zs != other.m_zs)
|
||||||
return true;
|
return true;
|
||||||
if (!(m_endpoints == other.m_endpoints))
|
if (m_endpoints != other.m_endpoints)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -738,13 +738,8 @@ void GLCanvas3D::Labels::render(const std::vector<const ModelInstance*>& sorted_
|
|||||||
}
|
}
|
||||||
|
|
||||||
// force re-render while the windows gets to its final size (it takes several frames)
|
// force re-render while the windows gets to its final size (it takes several frames)
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
if (ImGui::GetWindowContentRegionWidth() + 2.0f * ImGui::GetStyle().WindowPadding.x != ImGui::CalcWindowNextAutoFitSize(ImGui::GetCurrentWindow()).x)
|
if (ImGui::GetWindowContentRegionWidth() + 2.0f * ImGui::GetStyle().WindowPadding.x != ImGui::CalcWindowNextAutoFitSize(ImGui::GetCurrentWindow()).x)
|
||||||
imgui.set_requires_extra_frame();
|
imgui.set_requires_extra_frame();
|
||||||
#else
|
|
||||||
if (ImGui::GetWindowContentRegionWidth() + 2.0f * ImGui::GetStyle().WindowPadding.x != ImGui::CalcWindowNextAutoFitSize(ImGui::GetCurrentWindow()).x)
|
|
||||||
m_canvas.request_extra_frame();
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
|
|
||||||
imgui.end();
|
imgui.end();
|
||||||
ImGui::PopStyleColor();
|
ImGui::PopStyleColor();
|
||||||
@ -790,13 +785,8 @@ void GLCanvas3D::Tooltip::render(const Vec2d& mouse_position, GLCanvas3D& canvas
|
|||||||
ImGui::TextUnformatted(m_text.c_str());
|
ImGui::TextUnformatted(m_text.c_str());
|
||||||
|
|
||||||
// force re-render while the windows gets to its final size (it may take several frames) or while hidden
|
// force re-render while the windows gets to its final size (it may take several frames) or while hidden
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
if (alpha < 1.0f || ImGui::GetWindowContentRegionWidth() + 2.0f * ImGui::GetStyle().WindowPadding.x != ImGui::CalcWindowNextAutoFitSize(ImGui::GetCurrentWindow()).x)
|
if (alpha < 1.0f || ImGui::GetWindowContentRegionWidth() + 2.0f * ImGui::GetStyle().WindowPadding.x != ImGui::CalcWindowNextAutoFitSize(ImGui::GetCurrentWindow()).x)
|
||||||
imgui.set_requires_extra_frame();
|
imgui.set_requires_extra_frame();
|
||||||
#else
|
|
||||||
if (alpha < 1.0f || ImGui::GetWindowContentRegionWidth() + 2.0f * ImGui::GetStyle().WindowPadding.x != ImGui::CalcWindowNextAutoFitSize(ImGui::GetCurrentWindow()).x)
|
|
||||||
canvas.request_extra_frame();
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
|
|
||||||
size = ImGui::GetWindowSize();
|
size = ImGui::GetWindowSize();
|
||||||
|
|
||||||
@ -1138,10 +1128,9 @@ void GLCanvas3D::reset_volumes()
|
|||||||
|
|
||||||
ModelInstanceEPrintVolumeState GLCanvas3D::check_volumes_outside_state() const
|
ModelInstanceEPrintVolumeState GLCanvas3D::check_volumes_outside_state() const
|
||||||
{
|
{
|
||||||
assert(m_initialized);
|
ModelInstanceEPrintVolumeState state = ModelInstanceEPrintVolumeState::ModelInstancePVS_Inside;
|
||||||
|
if (m_initialized)
|
||||||
ModelInstanceEPrintVolumeState state;
|
m_volumes.check_outside_state(m_bed.build_volume(), &state);
|
||||||
m_volumes.check_outside_state(m_bed.build_volume(), &state);
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1315,15 +1304,6 @@ bool GLCanvas3D::is_reload_delayed() const
|
|||||||
void GLCanvas3D::enable_layers_editing(bool enable)
|
void GLCanvas3D::enable_layers_editing(bool enable)
|
||||||
{
|
{
|
||||||
m_layers_editing.set_enabled(enable);
|
m_layers_editing.set_enabled(enable);
|
||||||
#if !ENABLE_MODIFIERS_ALWAYS_TRANSPARENT
|
|
||||||
const Selection::IndicesList& idxs = m_selection.get_volume_idxs();
|
|
||||||
for (unsigned int idx : idxs) {
|
|
||||||
GLVolume* v = m_volumes.volumes[idx];
|
|
||||||
if (v->is_modifier)
|
|
||||||
v->force_transparent = enable;
|
|
||||||
}
|
|
||||||
#endif // !ENABLE_MODIFIERS_ALWAYS_TRANSPARENT
|
|
||||||
|
|
||||||
set_as_dirty();
|
set_as_dirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2266,29 +2246,20 @@ void GLCanvas3D::on_idle(wxIdleEvent& evt)
|
|||||||
m_dirty |= wxGetApp().plater()->get_notification_manager()->update_notifications(*this);
|
m_dirty |= wxGetApp().plater()->get_notification_manager()->update_notifications(*this);
|
||||||
auto gizmo = wxGetApp().plater()->canvas3D()->get_gizmos_manager().get_current();
|
auto gizmo = wxGetApp().plater()->canvas3D()->get_gizmos_manager().get_current();
|
||||||
if (gizmo != nullptr) m_dirty |= gizmo->update_items_state();
|
if (gizmo != nullptr) m_dirty |= gizmo->update_items_state();
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
// ImGuiWrapper::m_requires_extra_frame may have been set by a render made outside of the OnIdle mechanism
|
// ImGuiWrapper::m_requires_extra_frame may have been set by a render made outside of the OnIdle mechanism
|
||||||
bool imgui_requires_extra_frame = wxGetApp().imgui()->requires_extra_frame();
|
bool imgui_requires_extra_frame = wxGetApp().imgui()->requires_extra_frame();
|
||||||
m_dirty |= imgui_requires_extra_frame;
|
m_dirty |= imgui_requires_extra_frame;
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
|
|
||||||
if (!m_dirty)
|
if (!m_dirty)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
// this needs to be done here.
|
// this needs to be done here.
|
||||||
// during the render launched by the refresh the value may be set again
|
// during the render launched by the refresh the value may be set again
|
||||||
wxGetApp().imgui()->reset_requires_extra_frame();
|
wxGetApp().imgui()->reset_requires_extra_frame();
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
|
|
||||||
_refresh_if_shown_on_screen();
|
_refresh_if_shown_on_screen();
|
||||||
|
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
if (m_extra_frame_requested || mouse3d_controller_applied || imgui_requires_extra_frame || wxGetApp().imgui()->requires_extra_frame()) {
|
if (m_extra_frame_requested || mouse3d_controller_applied || imgui_requires_extra_frame || wxGetApp().imgui()->requires_extra_frame()) {
|
||||||
#else
|
|
||||||
if (m_extra_frame_requested || mouse3d_controller_applied) {
|
|
||||||
m_dirty = true;
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
m_extra_frame_requested = false;
|
m_extra_frame_requested = false;
|
||||||
evt.RequestMore();
|
evt.RequestMore();
|
||||||
}
|
}
|
||||||
|
@ -1146,15 +1146,27 @@ bool GUI_App::on_init_inner()
|
|||||||
// Detect position (display) to show the splash screen
|
// Detect position (display) to show the splash screen
|
||||||
// Now this position is equal to the mainframe position
|
// Now this position is equal to the mainframe position
|
||||||
wxPoint splashscreen_pos = wxDefaultPosition;
|
wxPoint splashscreen_pos = wxDefaultPosition;
|
||||||
if (app_config->has("window_mainframe")) {
|
bool default_splashscreen_pos = true;
|
||||||
|
if (app_config->has("window_mainframe") && app_config->get("restore_win_position") == "1") {
|
||||||
auto metrics = WindowMetrics::deserialize(app_config->get("window_mainframe"));
|
auto metrics = WindowMetrics::deserialize(app_config->get("window_mainframe"));
|
||||||
if (metrics)
|
default_splashscreen_pos = metrics == boost::none;
|
||||||
|
if (!default_splashscreen_pos)
|
||||||
splashscreen_pos = metrics->get_rect().GetPosition();
|
splashscreen_pos = metrics->get_rect().GetPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!default_splashscreen_pos) {
|
||||||
|
// workaround for crash related to the positioning of the window on secondary monitor
|
||||||
|
get_app_config()->set("restore_win_position", "crashed_at_splashscreen_pos");
|
||||||
|
get_app_config()->save();
|
||||||
|
}
|
||||||
|
|
||||||
// create splash screen with updated bmp
|
// create splash screen with updated bmp
|
||||||
scrn = new SplashScreen(bmp.IsOk() ? bmp : create_scaled_bitmap("PrusaSlicer", nullptr, 400),
|
scrn = new SplashScreen(bmp.IsOk() ? bmp : create_scaled_bitmap("PrusaSlicer", nullptr, 400),
|
||||||
wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT, 4000, splashscreen_pos);
|
wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT, 4000, splashscreen_pos);
|
||||||
|
|
||||||
|
if (!default_splashscreen_pos)
|
||||||
|
// revert "restore_win_position" value if application wasn't crashed
|
||||||
|
get_app_config()->set("restore_win_position", "1");
|
||||||
#ifndef __linux__
|
#ifndef __linux__
|
||||||
wxYield();
|
wxYield();
|
||||||
#endif
|
#endif
|
||||||
@ -1311,6 +1323,35 @@ bool GUI_App::on_init_inner()
|
|||||||
});
|
});
|
||||||
|
|
||||||
m_initialized = true;
|
m_initialized = true;
|
||||||
|
|
||||||
|
if (const std::string& crash_reason = app_config->get("restore_win_position");
|
||||||
|
boost::starts_with(crash_reason,"crashed"))
|
||||||
|
{
|
||||||
|
wxString preferences_item = _L("Restore window position on start");
|
||||||
|
InfoDialog dialog(nullptr,
|
||||||
|
_L("PrusaSlicer is started in save mode"),
|
||||||
|
format_wxstr(_L("PrusaSlicer was crashed last time due to \"%1%\".\n"
|
||||||
|
"For more information see issues \"%2%\" and \"%3%\"\n\n"
|
||||||
|
"To avoid an application crash next time you have to disable\n"
|
||||||
|
"\"%4%\" in \"Preferences\""),
|
||||||
|
"<b>" + from_u8(crash_reason) + "</b>",
|
||||||
|
"<a href=http://github.com/prusa3d/PrusaSlicer/issues/2939>#2939</a>",
|
||||||
|
"<a href=http://github.com/prusa3d/PrusaSlicer/issues/5573>#5573</a>",
|
||||||
|
"<b>" + preferences_item + "</b>")
|
||||||
|
+ "\n\n" +
|
||||||
|
format_wxstr(_L("Note: Enabling of the \"%1%\" will caused an application crash on next start."), preferences_item),
|
||||||
|
true, wxYES_NO);
|
||||||
|
|
||||||
|
dialog.SetButtonLabel(wxID_YES, format_wxstr(_L("Disable \"%1%\""), preferences_item));
|
||||||
|
dialog.SetButtonLabel(wxID_NO, format_wxstr(_L("Enable \"%1%\"") , preferences_item));
|
||||||
|
|
||||||
|
auto answer = dialog.ShowModal();
|
||||||
|
if (answer == wxID_YES)
|
||||||
|
app_config->set("restore_win_position", "0");
|
||||||
|
else if (answer == wxID_NO)
|
||||||
|
app_config->set("restore_win_position", "1");
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1391,11 +1432,13 @@ void GUI_App::update_label_colours()
|
|||||||
tab->update_label_colours();
|
tab->update_label_colours();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
static bool is_focused(HWND hWnd)
|
static bool is_focused(HWND hWnd)
|
||||||
{
|
{
|
||||||
HWND hFocusedWnd = ::GetFocus();
|
HWND hFocusedWnd = ::GetFocus();
|
||||||
return hFocusedWnd && hWnd == hFocusedWnd;
|
return hFocusedWnd && hWnd == hFocusedWnd;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void GUI_App::UpdateDarkUI(wxWindow* window, bool highlited/* = false*/, bool just_font/* = false*/)
|
void GUI_App::UpdateDarkUI(wxWindow* window, bool highlited/* = false*/, bool just_font/* = false*/)
|
||||||
{
|
{
|
||||||
@ -2770,7 +2813,7 @@ wxString GUI_App::current_language_code_safe() const
|
|||||||
|
|
||||||
void GUI_App::open_web_page_localized(const std::string &http_address)
|
void GUI_App::open_web_page_localized(const std::string &http_address)
|
||||||
{
|
{
|
||||||
open_browser_with_warning_dialog(http_address + "&lng=" + this->current_language_code_safe());
|
open_browser_with_warning_dialog(http_address + "&lng=" + this->current_language_code_safe(), nullptr, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we are switching from the FFF-preset to the SLA, we should to control the printed objects if they have a part(s).
|
// If we are switching from the FFF-preset to the SLA, we should to control the printed objects if they have a part(s).
|
||||||
@ -2912,8 +2955,24 @@ void GUI_App::window_pos_restore(wxTopLevelWindow* window, const std::string &na
|
|||||||
}
|
}
|
||||||
|
|
||||||
const wxRect& rect = metrics->get_rect();
|
const wxRect& rect = metrics->get_rect();
|
||||||
window->SetPosition(rect.GetPosition());
|
|
||||||
window->SetSize(rect.GetSize());
|
if (app_config->get("restore_win_position") == "1") {
|
||||||
|
// workaround for crash related to the positioning of the window on secondary monitor
|
||||||
|
app_config->set("restore_win_position", (boost::format("crashed_at_%1%_pos") % name).str());
|
||||||
|
app_config->save();
|
||||||
|
window->SetPosition(rect.GetPosition());
|
||||||
|
|
||||||
|
// workaround for crash related to the positioning of the window on secondary monitor
|
||||||
|
app_config->set("restore_win_position", (boost::format("crashed_at_%1%_size") % name).str());
|
||||||
|
app_config->save();
|
||||||
|
window->SetSize(rect.GetSize());
|
||||||
|
|
||||||
|
// revert "restore_win_position" value if application wasn't crashed
|
||||||
|
app_config->set("restore_win_position", "1");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
window->CenterOnScreen();
|
||||||
|
|
||||||
window->Maximize(metrics->get_maximized());
|
window->Maximize(metrics->get_maximized());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2974,19 +3033,40 @@ void GUI_App::check_updates(const bool verbose)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GUI_App::open_browser_with_warning_dialog(const wxString& url, int flags/* = 0*/)
|
bool GUI_App::open_browser_with_warning_dialog(const wxString& url, wxWindow* parent/* = nullptr*/, bool force_remember_choice /*= true*/, int flags/* = 0*/)
|
||||||
{
|
{
|
||||||
bool launch = true;
|
bool launch = true;
|
||||||
|
|
||||||
if (get_app_config()->get("suppress_hyperlinks").empty()) {
|
// warning dialog containes a "Remember my choice" checkbox
|
||||||
RichMessageDialog dialog(nullptr, _L("Open hyperlink in default browser?"), _L("PrusaSlicer: Open hyperlink"), wxICON_QUESTION | wxYES_NO);
|
std::string option_key = "suppress_hyperlinks";
|
||||||
dialog.ShowCheckBox(_L("Remember my choice"));
|
if (force_remember_choice || app_config->get(option_key).empty()) {
|
||||||
int answer = dialog.ShowModal();
|
if (app_config->get(option_key).empty()) {
|
||||||
launch = answer == wxID_YES;
|
RichMessageDialog dialog(parent, _L("Open hyperlink in default browser?"), _L("PrusaSlicer: Open hyperlink"), wxICON_QUESTION | wxYES_NO);
|
||||||
get_app_config()->set("suppress_hyperlinks", dialog.IsCheckBoxChecked() ? (answer == wxID_NO ? "1" : "0") : "");
|
dialog.ShowCheckBox(_L("Remember my choice"));
|
||||||
|
auto answer = dialog.ShowModal();
|
||||||
|
launch = answer == wxID_YES;
|
||||||
|
if (dialog.IsCheckBoxChecked()) {
|
||||||
|
wxString preferences_item = _L("Suppress to open hyperlink in browser");
|
||||||
|
wxString msg =
|
||||||
|
_L("PrusaSlicer will remember your choice.") + "\n\n" +
|
||||||
|
_L("You will not be asked about it again on hyperlinks hovering.") + "\n\n" +
|
||||||
|
format_wxstr(_L("Visit \"Preferences\" and check \"%1%\"\nto changes your choice."), preferences_item);
|
||||||
|
|
||||||
|
MessageDialog msg_dlg(parent, msg, _L("PrusaSlicer: Don't ask me again"), wxOK | wxCANCEL | wxICON_INFORMATION);
|
||||||
|
if (msg_dlg.ShowModal() == wxID_CANCEL)
|
||||||
|
return false;
|
||||||
|
app_config->set(option_key, answer == wxID_NO ? "1" : "0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (launch)
|
||||||
|
launch = app_config->get(option_key) != "1";
|
||||||
|
}
|
||||||
|
// warning dialog doesn't containe a "Remember my choice" checkbox
|
||||||
|
// and will be shown only when "Suppress to open hyperlink in browser" is ON.
|
||||||
|
else if (app_config->get(option_key) == "1") {
|
||||||
|
MessageDialog dialog(parent, _L("Open hyperlink in default browser?"), _L("PrusaSlicer: Open hyperlink"), wxICON_QUESTION | wxYES_NO);
|
||||||
|
launch = dialog.ShowModal() == wxID_YES;
|
||||||
}
|
}
|
||||||
if (launch)
|
|
||||||
launch = get_app_config()->get("suppress_hyperlinks") != "1";
|
|
||||||
|
|
||||||
return launch && wxLaunchDefaultBrowser(url, flags);
|
return launch && wxLaunchDefaultBrowser(url, flags);
|
||||||
}
|
}
|
||||||
|
@ -268,7 +268,8 @@ public:
|
|||||||
|
|
||||||
virtual bool OnExceptionInMainLoop() override;
|
virtual bool OnExceptionInMainLoop() override;
|
||||||
// Calls wxLaunchDefaultBrowser if user confirms in dialog.
|
// Calls wxLaunchDefaultBrowser if user confirms in dialog.
|
||||||
bool open_browser_with_warning_dialog(const wxString& url, int flags = 0);
|
// Add "Rememeber my choice" checkbox to question dialog, when it is forced or a "suppress_hyperlinks" option has empty value
|
||||||
|
bool open_browser_with_warning_dialog(const wxString& url, wxWindow* parent = nullptr, bool force_remember_choice = true, int flags = 0);
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
void OSXStoreOpenFiles(const wxArrayString &files) override;
|
void OSXStoreOpenFiles(const wxArrayString &files) override;
|
||||||
// wxWidgets override to get an event on open files.
|
// wxWidgets override to get an event on open files.
|
||||||
|
@ -716,7 +716,7 @@ void MenuFactory::append_menu_item_export_stl(wxMenu* menu)
|
|||||||
[](wxCommandEvent&) { plater()->export_stl(false, true); }, "", nullptr,
|
[](wxCommandEvent&) { plater()->export_stl(false, true); }, "", nullptr,
|
||||||
[]() {
|
[]() {
|
||||||
const Selection& selection = plater()->canvas3D()->get_selection();
|
const Selection& selection = plater()->canvas3D()->get_selection();
|
||||||
return selection.is_single_full_instance() || selection.is_single_full_object();
|
return selection.is_single_full_instance() || selection.is_single_full_object() || selection.is_single_volume() || selection.is_single_modifier();
|
||||||
}, m_parent);
|
}, m_parent);
|
||||||
menu->AppendSeparator();
|
menu->AppendSeparator();
|
||||||
}
|
}
|
||||||
@ -792,14 +792,9 @@ void MenuFactory::append_menu_item_change_extruder(wxMenu* menu)
|
|||||||
|
|
||||||
void MenuFactory::append_menu_item_scale_selection_to_fit_print_volume(wxMenu* menu)
|
void MenuFactory::append_menu_item_scale_selection_to_fit_print_volume(wxMenu* menu)
|
||||||
{
|
{
|
||||||
#if ENABLE_ENHANCED_PRINT_VOLUME_FIT
|
|
||||||
append_menu_item(menu, wxID_ANY, _L("Scale to print volume"), _L("Scale the selected object to fit the print volume"),
|
append_menu_item(menu, wxID_ANY, _L("Scale to print volume"), _L("Scale the selected object to fit the print volume"),
|
||||||
[](wxCommandEvent&) { plater()->scale_selection_to_fit_print_volume(); }, "", menu,
|
[](wxCommandEvent&) { plater()->scale_selection_to_fit_print_volume(); }, "", menu,
|
||||||
[]() { return plater()->can_scale_to_print_volume(); }, m_parent);
|
[]() { return plater()->can_scale_to_print_volume(); }, m_parent);
|
||||||
#else
|
|
||||||
append_menu_item(menu, wxID_ANY, _L("Scale to print volume"), _L("Scale the selected object to fit the print volume"),
|
|
||||||
[](wxCommandEvent&) { plater()->scale_selection_to_fit_print_volume(); }, "", menu);
|
|
||||||
#endif // ENABLE_ENHANCED_PRINT_VOLUME_FIT
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuFactory::append_menu_items_convert_unit(wxMenu* menu, int insert_pos/* = 1*/)
|
void MenuFactory::append_menu_items_convert_unit(wxMenu* menu, int insert_pos/* = 1*/)
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
#include "slic3r/GUI/format.hpp"
|
#include "slic3r/GUI/format.hpp"
|
||||||
#include "slic3r/GUI/MainFrame.hpp"
|
#include "slic3r/GUI/MainFrame.hpp"
|
||||||
#include "slic3r/GUI/Plater.hpp"
|
#include "slic3r/GUI/Plater.hpp"
|
||||||
|
#include "slic3r/GUI/I18N.hpp"
|
||||||
|
|
||||||
|
|
||||||
// To show a message box if GUI initialization ends up with an exception thrown.
|
// To show a message box if GUI initialization ends up with an exception thrown.
|
||||||
#include <wx/msgdlg.h>
|
#include <wx/msgdlg.h>
|
||||||
|
@ -495,7 +495,7 @@ void ObjectManipulation::update_ui_from_settings()
|
|||||||
// update colors for edit-boxes
|
// update colors for edit-boxes
|
||||||
int axis_id = 0;
|
int axis_id = 0;
|
||||||
for (ManipulationEditor* editor : m_editors) {
|
for (ManipulationEditor* editor : m_editors) {
|
||||||
// editor->SetForegroundColour(m_use_colors ? wxColour(axes_color_text[axis_id]) : wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
|
// editor->SetForegroundColour(m_use_colors ? wxColour(axes_color_text[axis_id]) : wxGetApp().get_label_clr_default());
|
||||||
if (m_use_colors) {
|
if (m_use_colors) {
|
||||||
editor->SetBackgroundColour(wxColour(axes_color_back[axis_id]));
|
editor->SetBackgroundColour(wxColour(axes_color_back[axis_id]));
|
||||||
if (wxGetApp().dark_mode())
|
if (wxGetApp().dark_mode())
|
||||||
|
@ -774,7 +774,8 @@ void Preview::update_layers_slider_mode()
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (ModelVolume* volume : object->volumes)
|
for (ModelVolume* volume : object->volumes)
|
||||||
if ((volume->config.has("extruder") &&
|
if ((volume->config.has("extruder") &&
|
||||||
|
volume->config.option("extruder")->getInt() != 0 && // extruder isn't default
|
||||||
volume->config.option("extruder")->getInt() != extruder) ||
|
volume->config.option("extruder")->getInt() != extruder) ||
|
||||||
!volume->mmu_segmentation_facets.empty())
|
!volume->mmu_segmentation_facets.empty())
|
||||||
return false;
|
return false;
|
||||||
|
@ -180,11 +180,7 @@ void GLGizmoCut::on_render_input_window(float x, float y, float bottom_limit)
|
|||||||
ImGui::SetWindowPos(ImVec2(x, y), ImGuiCond_Always);
|
ImGui::SetWindowPos(ImVec2(x, y), ImGuiCond_Always);
|
||||||
if (last_h != win_h || last_y != y) {
|
if (last_h != win_h || last_y != y) {
|
||||||
// ask canvas for another frame to render the window in the correct position
|
// ask canvas for another frame to render the window in the correct position
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
m_imgui->set_requires_extra_frame();
|
m_imgui->set_requires_extra_frame();
|
||||||
#else
|
|
||||||
m_parent.request_extra_frame();
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
if (last_h != win_h)
|
if (last_h != win_h)
|
||||||
last_h = win_h;
|
last_h = win_h;
|
||||||
if (last_y != y)
|
if (last_y != y)
|
||||||
|
@ -134,12 +134,8 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l
|
|||||||
caption_max += m_imgui->scaled(1.f);
|
caption_max += m_imgui->scaled(1.f);
|
||||||
|
|
||||||
const float sliders_left_width = std::max(std::max(autoset_slider_left, smart_fill_slider_left), std::max(cursor_slider_left, clipping_slider_left));
|
const float sliders_left_width = std::max(std::max(autoset_slider_left, smart_fill_slider_left), std::max(cursor_slider_left, clipping_slider_left));
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
const float slider_icon_width = m_imgui->get_slider_icon_size().x;
|
const float slider_icon_width = m_imgui->get_slider_icon_size().x;
|
||||||
float window_width = minimal_slider_width + sliders_left_width + slider_icon_width;
|
float window_width = minimal_slider_width + sliders_left_width + slider_icon_width;
|
||||||
#else
|
|
||||||
float window_width = minimal_slider_width + sliders_left_width;
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
window_width = std::max(window_width, total_text_max);
|
window_width = std::max(window_width, total_text_max);
|
||||||
window_width = std::max(window_width, button_width);
|
window_width = std::max(window_width, button_width);
|
||||||
window_width = std::max(window_width, split_triangles_checkbox_width);
|
window_width = std::max(window_width, split_triangles_checkbox_width);
|
||||||
@ -174,15 +170,10 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l
|
|||||||
float slider_start_position_y = std::max(position_before_text_y, position_after_text_y - slider_height);
|
float slider_start_position_y = std::max(position_before_text_y, position_after_text_y - slider_height);
|
||||||
ImGui::SetCursorPosY(slider_start_position_y);
|
ImGui::SetCursorPosY(slider_start_position_y);
|
||||||
|
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
||||||
wxString tooltip = format_wxstr(_L("Preselects faces by overhang angle. It is possible to restrict paintable facets to only preselected faces when "
|
wxString tooltip = format_wxstr(_L("Preselects faces by overhang angle. It is possible to restrict paintable facets to only preselected faces when "
|
||||||
"the option \"%1%\" is enabled."), m_desc["on_overhangs_only"]);
|
"the option \"%1%\" is enabled."), m_desc["on_overhangs_only"]);
|
||||||
if (m_imgui->slider_float("##angle_threshold_deg", &m_highlight_by_angle_threshold_deg, 0.f, 90.f, format_str.data(), 1.0f, true, tooltip)) {
|
if (m_imgui->slider_float("##angle_threshold_deg", &m_highlight_by_angle_threshold_deg, 0.f, 90.f, format_str.data(), 1.0f, true, tooltip)) {
|
||||||
#else
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width);
|
|
||||||
if (m_imgui->slider_float("##angle_threshold_deg", &m_highlight_by_angle_threshold_deg, 0.f, 90.f, format_str.data())) {
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
m_parent.set_slope_normal_angle(90.f - m_highlight_by_angle_threshold_deg);
|
m_parent.set_slope_normal_angle(90.f - m_highlight_by_angle_threshold_deg);
|
||||||
if (! m_parent.is_using_slope()) {
|
if (! m_parent.is_using_slope()) {
|
||||||
m_parent.use_slope(true);
|
m_parent.use_slope(true);
|
||||||
@ -194,11 +185,6 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l
|
|||||||
ImGui::SetCursorPosY(std::max(position_before_text_y + slider_height, position_after_text_y));
|
ImGui::SetCursorPosY(std::max(position_before_text_y + slider_height, position_after_text_y));
|
||||||
|
|
||||||
const float max_tooltip_width = ImGui::GetFontSize() * 20.0f;
|
const float max_tooltip_width = ImGui::GetFontSize() * 20.0f;
|
||||||
#if !ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
if (ImGui::IsItemHovered())
|
|
||||||
m_imgui->tooltip(format_wxstr(_L("Preselects faces by overhang angle. It is possible to restrict paintable facets to only preselected faces when "
|
|
||||||
"the option \"%1%\" is enabled."), m_desc["on_overhangs_only"]), max_tooltip_width);
|
|
||||||
#endif // !ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
|
|
||||||
m_imgui->disabled_begin(m_highlight_by_angle_threshold_deg == 0.f);
|
m_imgui->disabled_begin(m_highlight_by_angle_threshold_deg == 0.f);
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
@ -280,15 +266,8 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l
|
|||||||
ImGui::AlignTextToFramePadding();
|
ImGui::AlignTextToFramePadding();
|
||||||
m_imgui->text(m_desc.at("cursor_size"));
|
m_imgui->text(m_desc.at("cursor_size"));
|
||||||
ImGui::SameLine(sliders_left_width);
|
ImGui::SameLine(sliders_left_width);
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
||||||
m_imgui->slider_float("##cursor_radius", &m_cursor_radius, CursorRadiusMin, CursorRadiusMax, "%.2f", 1.0f, true, _L("Alt + Mouse wheel"));
|
m_imgui->slider_float("##cursor_radius", &m_cursor_radius, CursorRadiusMin, CursorRadiusMax, "%.2f", 1.0f, true, _L("Alt + Mouse wheel"));
|
||||||
#else
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width);
|
|
||||||
m_imgui->slider_float("##cursor_radius", &m_cursor_radius, CursorRadiusMin, CursorRadiusMax, "%.2f");
|
|
||||||
if (ImGui::IsItemHovered())
|
|
||||||
m_imgui->tooltip(_L("Alt + Mouse wheel"), max_tooltip_width);
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
|
|
||||||
m_imgui->checkbox(m_desc["split_triangles"], m_triangle_splitting_enabled);
|
m_imgui->checkbox(m_desc["split_triangles"], m_triangle_splitting_enabled);
|
||||||
|
|
||||||
@ -302,22 +281,12 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l
|
|||||||
m_imgui->text(m_desc["smart_fill_angle"] + ":");
|
m_imgui->text(m_desc["smart_fill_angle"] + ":");
|
||||||
|
|
||||||
ImGui::SameLine(sliders_left_width);
|
ImGui::SameLine(sliders_left_width);
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
||||||
if (m_imgui->slider_float("##smart_fill_angle", &m_smart_fill_angle, SmartFillAngleMin, SmartFillAngleMax, format_str.data(), 1.0f, true, _L("Alt + Mouse wheel")))
|
if (m_imgui->slider_float("##smart_fill_angle", &m_smart_fill_angle, SmartFillAngleMin, SmartFillAngleMax, format_str.data(), 1.0f, true, _L("Alt + Mouse wheel")))
|
||||||
#else
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width);
|
|
||||||
if (m_imgui->slider_float("##smart_fill_angle", &m_smart_fill_angle, SmartFillAngleMin, SmartFillAngleMax, format_str.data()))
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
for (auto &triangle_selector : m_triangle_selectors) {
|
for (auto &triangle_selector : m_triangle_selectors) {
|
||||||
triangle_selector->seed_fill_unselect_all_triangles();
|
triangle_selector->seed_fill_unselect_all_triangles();
|
||||||
triangle_selector->request_update_render_data();
|
triangle_selector->request_update_render_data();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
if (ImGui::IsItemHovered())
|
|
||||||
m_imgui->tooltip(_L("Alt + Mouse wheel"), max_tooltip_width);
|
|
||||||
#endif // !ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
@ -335,18 +304,9 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l
|
|||||||
|
|
||||||
auto clp_dist = float(m_c->object_clipper()->get_position());
|
auto clp_dist = float(m_c->object_clipper()->get_position());
|
||||||
ImGui::SameLine(sliders_left_width);
|
ImGui::SameLine(sliders_left_width);
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
||||||
if (m_imgui->slider_float("##clp_dist", &clp_dist, 0.f, 1.f, "%.2f", 1.0f, true, _L("Ctrl + Mouse wheel")))
|
if (m_imgui->slider_float("##clp_dist", &clp_dist, 0.f, 1.f, "%.2f", 1.0f, true, _L("Ctrl + Mouse wheel")))
|
||||||
m_c->object_clipper()->set_position(clp_dist, true);
|
m_c->object_clipper()->set_position(clp_dist, true);
|
||||||
#else
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width);
|
|
||||||
if (m_imgui->slider_float("##clp_dist", &clp_dist, 0.f, 1.f, "%.2f"))
|
|
||||||
m_c->object_clipper()->set_position(clp_dist, true);
|
|
||||||
|
|
||||||
if (ImGui::IsItemHovered())
|
|
||||||
m_imgui->tooltip(_L("Ctrl + Mouse wheel"), max_tooltip_width);
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
if (m_imgui->button(m_desc.at("remove_all"))) {
|
if (m_imgui->button(m_desc.at("remove_all"))) {
|
||||||
|
@ -162,9 +162,9 @@ void GLGizmoFlatten::update_planes()
|
|||||||
std::vector<bool> facet_visited(num_of_facets, false);
|
std::vector<bool> facet_visited(num_of_facets, false);
|
||||||
int facet_queue_cnt = 0;
|
int facet_queue_cnt = 0;
|
||||||
const stl_normal* normal_ptr = nullptr;
|
const stl_normal* normal_ptr = nullptr;
|
||||||
|
int facet_idx = 0;
|
||||||
while (1) {
|
while (1) {
|
||||||
// Find next unvisited triangle:
|
// Find next unvisited triangle:
|
||||||
int facet_idx = 0;
|
|
||||||
for (; facet_idx < num_of_facets; ++ facet_idx)
|
for (; facet_idx < num_of_facets; ++ facet_idx)
|
||||||
if (!facet_visited[facet_idx]) {
|
if (!facet_visited[facet_idx]) {
|
||||||
facet_queue[facet_queue_cnt ++] = facet_idx;
|
facet_queue[facet_queue_cnt ++] = facet_idx;
|
||||||
@ -261,7 +261,8 @@ void GLGizmoFlatten::update_planes()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (discard) {
|
if (discard) {
|
||||||
m_planes.erase(m_planes.begin() + (polygon_id--));
|
m_planes[polygon_id--] = std::move(m_planes.back());
|
||||||
|
m_planes.pop_back();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -340,12 +340,8 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott
|
|||||||
caption_max += m_imgui->scaled(1.f);
|
caption_max += m_imgui->scaled(1.f);
|
||||||
|
|
||||||
const float sliders_left_width = std::max(smart_fill_slider_left, std::max(cursor_slider_left, clipping_slider_left));
|
const float sliders_left_width = std::max(smart_fill_slider_left, std::max(cursor_slider_left, clipping_slider_left));
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
const float slider_icon_width = m_imgui->get_slider_icon_size().x;
|
const float slider_icon_width = m_imgui->get_slider_icon_size().x;
|
||||||
float window_width = minimal_slider_width + sliders_left_width + slider_icon_width;
|
float window_width = minimal_slider_width + sliders_left_width + slider_icon_width;
|
||||||
#else
|
|
||||||
float window_width = minimal_slider_width + sliders_left_width;
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
window_width = std::max(window_width, total_text_max);
|
window_width = std::max(window_width, total_text_max);
|
||||||
window_width = std::max(window_width, button_width);
|
window_width = std::max(window_width, button_width);
|
||||||
window_width = std::max(window_width, split_triangles_checkbox_width);
|
window_width = std::max(window_width, split_triangles_checkbox_width);
|
||||||
@ -487,15 +483,8 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott
|
|||||||
ImGui::AlignTextToFramePadding();
|
ImGui::AlignTextToFramePadding();
|
||||||
m_imgui->text(m_desc.at("cursor_size"));
|
m_imgui->text(m_desc.at("cursor_size"));
|
||||||
ImGui::SameLine(sliders_left_width);
|
ImGui::SameLine(sliders_left_width);
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
||||||
m_imgui->slider_float("##cursor_radius", &m_cursor_radius, CursorRadiusMin, CursorRadiusMax, "%.2f", 1.0f, true, _L("Alt + Mouse wheel"));
|
m_imgui->slider_float("##cursor_radius", &m_cursor_radius, CursorRadiusMin, CursorRadiusMax, "%.2f", 1.0f, true, _L("Alt + Mouse wheel"));
|
||||||
#else
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width);
|
|
||||||
m_imgui->slider_float("##cursor_radius", &m_cursor_radius, CursorRadiusMin, CursorRadiusMax, "%.2f");
|
|
||||||
if (ImGui::IsItemHovered())
|
|
||||||
m_imgui->tooltip(_L("Alt + Mouse wheel"), max_tooltip_width);
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
|
|
||||||
m_imgui->checkbox(m_desc["split_triangles"], m_triangle_splitting_enabled);
|
m_imgui->checkbox(m_desc["split_triangles"], m_triangle_splitting_enabled);
|
||||||
|
|
||||||
@ -511,23 +500,13 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott
|
|||||||
std::string format_str = std::string("%.f") + I18N::translate_utf8("°", "Degree sign to use in the respective slider in MMU gizmo,"
|
std::string format_str = std::string("%.f") + I18N::translate_utf8("°", "Degree sign to use in the respective slider in MMU gizmo,"
|
||||||
"placed after the number with no whitespace in between.");
|
"placed after the number with no whitespace in between.");
|
||||||
ImGui::SameLine(sliders_left_width);
|
ImGui::SameLine(sliders_left_width);
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
||||||
if (m_imgui->slider_float("##smart_fill_angle", &m_smart_fill_angle, SmartFillAngleMin, SmartFillAngleMax, format_str.data(), 1.0f, true, _L("Alt + Mouse wheel")))
|
if (m_imgui->slider_float("##smart_fill_angle", &m_smart_fill_angle, SmartFillAngleMin, SmartFillAngleMax, format_str.data(), 1.0f, true, _L("Alt + Mouse wheel")))
|
||||||
#else
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width);
|
|
||||||
if(m_imgui->slider_float("##smart_fill_angle", &m_smart_fill_angle, SmartFillAngleMin, SmartFillAngleMax, format_str.data()))
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
for (auto &triangle_selector : m_triangle_selectors) {
|
for (auto &triangle_selector : m_triangle_selectors) {
|
||||||
triangle_selector->seed_fill_unselect_all_triangles();
|
triangle_selector->seed_fill_unselect_all_triangles();
|
||||||
triangle_selector->request_update_render_data();
|
triangle_selector->request_update_render_data();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
if (ImGui::IsItemHovered())
|
|
||||||
m_imgui->tooltip(_L("Alt + Mouse wheel"), max_tooltip_width);
|
|
||||||
#endif // !ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -542,18 +521,9 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott
|
|||||||
|
|
||||||
auto clp_dist = float(m_c->object_clipper()->get_position());
|
auto clp_dist = float(m_c->object_clipper()->get_position());
|
||||||
ImGui::SameLine(sliders_left_width);
|
ImGui::SameLine(sliders_left_width);
|
||||||
#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width);
|
||||||
if (m_imgui->slider_float("##clp_dist", &clp_dist, 0.f, 1.f, "%.2f", 1.0f, true, _L("Ctrl + Mouse wheel")))
|
if (m_imgui->slider_float("##clp_dist", &clp_dist, 0.f, 1.f, "%.2f", 1.0f, true, _L("Ctrl + Mouse wheel")))
|
||||||
m_c->object_clipper()->set_position(clp_dist, true);
|
m_c->object_clipper()->set_position(clp_dist, true);
|
||||||
#else
|
|
||||||
ImGui::PushItemWidth(window_width - sliders_left_width);
|
|
||||||
if (m_imgui->slider_float("##clp_dist", &clp_dist, 0.f, 1.f, "%.2f"))
|
|
||||||
m_c->object_clipper()->set_position(clp_dist, true);
|
|
||||||
|
|
||||||
if (ImGui::IsItemHovered())
|
|
||||||
m_imgui->tooltip(_L("Ctrl + Mouse wheel"), max_tooltip_width);
|
|
||||||
#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT
|
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
if (m_imgui->button(m_desc.at("remove_all"))) {
|
if (m_imgui->button(m_desc.at("remove_all"))) {
|
||||||
|
@ -558,11 +558,12 @@ GLGizmoRotate3D::RotoptimzeWindow::RotoptimzeWindow(ImGuiWrapper * imgui,
|
|||||||
ImVec2 button_sz = {btn_txt_sz.x + padding.x, btn_txt_sz.y + padding.y};
|
ImVec2 button_sz = {btn_txt_sz.x + padding.x, btn_txt_sz.y + padding.y};
|
||||||
ImGui::SetCursorPosX(padding.x + sz.x - button_sz.x);
|
ImGui::SetCursorPosX(padding.x + sz.x - button_sz.x);
|
||||||
|
|
||||||
if (wxGetApp().plater()->is_any_job_running())
|
if (!wxGetApp().plater()->get_ui_job_worker().is_idle())
|
||||||
imgui->disabled_begin(true);
|
imgui->disabled_begin(true);
|
||||||
|
|
||||||
if ( imgui->button(btn_txt) ) {
|
if ( imgui->button(btn_txt) ) {
|
||||||
wxGetApp().plater()->optimize_rotation();
|
replace_job(wxGetApp().plater()->get_ui_job_worker(),
|
||||||
|
std::make_unique<RotoptimizeJob>());
|
||||||
}
|
}
|
||||||
|
|
||||||
imgui->disabled_end();
|
imgui->disabled_end();
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user