From 5e6352b0d4a4c648269fca58a4aee9947d65ad73 Mon Sep 17 00:00:00 2001 From: Arthur <dev@bi3d.com.br> Date: Tue, 19 Nov 2019 17:22:08 -0300 Subject: [PATCH 001/138] A translation in brazilian portuguese has been added --- resources/localization/pt_br/PrusaSlicer.mo | Bin 0 -> 217077 bytes .../localization/pt_br/PrusaSlicer_pt_br.po | 9386 +++++++++++++++++ 2 files changed, 9386 insertions(+) create mode 100644 resources/localization/pt_br/PrusaSlicer.mo create mode 100644 resources/localization/pt_br/PrusaSlicer_pt_br.po diff --git a/resources/localization/pt_br/PrusaSlicer.mo b/resources/localization/pt_br/PrusaSlicer.mo new file mode 100644 index 0000000000000000000000000000000000000000..a2f3e9789d18d81a6d15de4544a644d9d280221c GIT binary patch literal 217077 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 literal 0 HcmV?d00001 diff --git a/resources/localization/pt_br/PrusaSlicer_pt_br.po b/resources/localization/pt_br/PrusaSlicer_pt_br.po new file mode 100644 index 000000000..e54f17ec3 --- /dev/null +++ b/resources/localization/pt_br/PrusaSlicer_pt_br.po @@ -0,0 +1,9386 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-09-09 16:39+0200\n" +"PO-Revision-Date: 2019-11-18 16:39-0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.2.4\n" +"Last-Translator: \n" +"Language: pt_BR\n" + +#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +msgid "Portions copyright" +msgstr "Direitos autorais das partes" + +#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +msgid "Copyright" +msgstr "Direitos autorais" + +#. TRN "Slic3r _is licensed under the_ License" +#: src/slic3r/GUI/AboutDialog.cpp:129 +msgid "" +"License agreements of all following programs (libraries) are part of " +"application license agreement" +msgstr "" +"Os contratos de licença de todos os seguintes programas (bibliotecas) são " +"parte do contrato de licença de aplicativo" + +#: src/slic3r/GUI/AboutDialog.cpp:199 +#, c-format +msgid "About %s" +msgstr "Sobre %s" + +#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:62 +msgid "Version" +msgstr "Versão" + +#. TRN "Slic3r _is licensed under the_ License" +#: src/slic3r/GUI/AboutDialog.cpp:258 +msgid "is licensed under the" +msgstr "está licenciado sobre o(a)" + +#: src/slic3r/GUI/AboutDialog.cpp:259 +msgid "GNU Affero General Public License, version 3" +msgstr "Licensa GNU Affero General Public, versão 3" + +#: src/slic3r/GUI/AboutDialog.cpp:260 +msgid "" +"PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " +"community." +msgstr "" +"PrusaSlicer é baseado no Slic3r criado por Alessandro Ranellucci e a " +"comunidade RepRap." + +#: src/slic3r/GUI/AboutDialog.cpp:261 +msgid "" +"Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " +"Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " +"numerous others." +msgstr "" +"Contribuições por Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " +"Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik e " +"outros." + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:92 +msgid "" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD " +"card is write locked?" +msgstr "" +"A cópia do G-código provisório G-código falhou na saída. Talvez o cartão SD " +"está bloqueado para escrita?" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:93 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:415 +msgid "Running post-processing scripts" +msgstr "Aplicando scripts de pós-processamento" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:95 +msgid "G-code file exported to %1%" +msgstr "Arquivo G-code exportado para %1%" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:99 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:117 +msgid "Slicing complete" +msgstr "Fatiamento completo" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:113 +msgid "Masked SLA file exported to %1%" +msgstr "Arquivo SLA mascarado exportado para %1%" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:155 +#, c-format +msgid "" +"%s has encountered an error. It was likely caused by running out of memory. " +"If you are sure you have enough RAM on your system, this may also be a bug " +"and we would be glad if you reported it." +msgstr "" +"%s encontrou um erro. Provavelmente foi causado por ficar sem memória. Se " +"você tem certeza que você tem RAM suficiente em seu sistema, isso também " +"pode ser um bug e nós estaríamos contentes se você relatou." + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:417 +msgid "Copying of the temporary G-code to the output G-code failed" +msgstr "A cópia do G-código provisório G-código falhou na saída" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:426 +msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" +msgstr "Agendando upload para ` %1%` . Veja a aba -> Print Host Upload Queue" + +#: src/slic3r/GUI/BedShapeDialog.cpp:65 +msgid "Shape" +msgstr "Forma" + +#: src/slic3r/GUI/BedShapeDialog.cpp:72 +msgid "Rectangular" +msgstr "Retangular" + +#: src/slic3r/GUI/BedShapeDialog.cpp:76 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:393 src/slic3r/GUI/Plater.cpp:145 +#: src/slic3r/GUI/Tab.cpp:2524 +msgid "Size" +msgstr "Tamanho" + +#: src/slic3r/GUI/BedShapeDialog.cpp:77 +msgid "Size in X and Y of the rectangular plate." +msgstr "Tamanho no X e Y na mesa retangular." + +#: src/slic3r/GUI/BedShapeDialog.cpp:83 +msgid "Origin" +msgstr "Origem" + +#: src/slic3r/GUI/BedShapeDialog.cpp:84 +msgid "" +"Distance of the 0,0 G-code coordinate from the front left corner of the " +"rectangle." +msgstr "" +"Distância do ponto 0,0 da coordenada do G-code do canto esquerdo do " +"retângulo." + +#: src/slic3r/GUI/BedShapeDialog.cpp:88 +msgid "Circular" +msgstr "Circular" + +#: src/slic3r/GUI/BedShapeDialog.cpp:91 src/slic3r/GUI/ConfigWizard.cpp:123 +#: src/slic3r/GUI/ConfigWizard.cpp:576 src/slic3r/GUI/ConfigWizard.cpp:590 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:390 +#: src/slic3r/GUI/WipeTowerDialog.cpp:84 src/slic3r/GUI/wxExtensions.cpp:509 +#: src/libslic3r/PrintConfig.cpp:70 src/libslic3r/PrintConfig.cpp:77 +#: src/libslic3r/PrintConfig.cpp:86 src/libslic3r/PrintConfig.cpp:220 +#: src/libslic3r/PrintConfig.cpp:295 src/libslic3r/PrintConfig.cpp:303 +#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:363 +#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:499 +#: src/libslic3r/PrintConfig.cpp:517 src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:1215 src/libslic3r/PrintConfig.cpp:1276 +#: src/libslic3r/PrintConfig.cpp:1294 src/libslic3r/PrintConfig.cpp:1312 +#: src/libslic3r/PrintConfig.cpp:1364 src/libslic3r/PrintConfig.cpp:1374 +#: src/libslic3r/PrintConfig.cpp:1495 src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1544 src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1562 src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1578 src/libslic3r/PrintConfig.cpp:1661 +#: src/libslic3r/PrintConfig.cpp:1878 src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:1982 src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2183 src/libslic3r/PrintConfig.cpp:2190 +#: src/libslic3r/PrintConfig.cpp:2220 src/libslic3r/PrintConfig.cpp:2230 +#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2403 +#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2519 +#: src/libslic3r/PrintConfig.cpp:2528 src/libslic3r/PrintConfig.cpp:2538 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2592 +#: src/libslic3r/PrintConfig.cpp:2604 src/libslic3r/PrintConfig.cpp:2624 +#: src/libslic3r/PrintConfig.cpp:2634 src/libslic3r/PrintConfig.cpp:2644 +#: src/libslic3r/PrintConfig.cpp:2662 src/libslic3r/PrintConfig.cpp:2677 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2742 src/libslic3r/PrintConfig.cpp:2752 +#: src/libslic3r/PrintConfig.cpp:2761 src/libslic3r/PrintConfig.cpp:2771 +msgid "mm" +msgstr "mm" + +#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/libslic3r/PrintConfig.cpp:692 +msgid "Diameter" +msgstr "Diâmetro" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +msgid "" +"Diameter of the print bed. It is assumed that origin (0,0) is located in the " +"center." +msgstr "" +"Diâmetro da mesa de impressão. Se assume que a origem (0,0) seja localizado " +"no centro." + +#: src/slic3r/GUI/BedShapeDialog.cpp:97 src/slic3r/GUI/GUI_Preview.cpp:247 +#: src/libslic3r/GCode/PreviewData.cpp:159 +msgid "Custom" +msgstr "Customizado" + +#: src/slic3r/GUI/BedShapeDialog.cpp:101 +msgid "Load shape from STL..." +msgstr "Carregar forma do STL..." + +#: src/slic3r/GUI/BedShapeDialog.cpp:154 +msgid "Settings" +msgstr "config." + +#: src/slic3r/GUI/BedShapeDialog.cpp:171 +msgid "Texture" +msgstr "Textura" + +#: src/slic3r/GUI/BedShapeDialog.cpp:181 src/slic3r/GUI/BedShapeDialog.cpp:249 +msgid "Load..." +msgstr "Carregar..." + +#: src/slic3r/GUI/BedShapeDialog.cpp:189 src/slic3r/GUI/BedShapeDialog.cpp:257 +#: src/slic3r/GUI/Tab.cpp:3286 +msgid "Remove" +msgstr "Remover" + +#: src/slic3r/GUI/BedShapeDialog.cpp:239 +msgid "Model" +msgstr "Modelo" + +#: src/slic3r/GUI/BedShapeDialog.cpp:464 +msgid "Choose an STL file to import bed shape from:" +msgstr "Escolha um arquivo STL para importar o formato da mesa:" + +#: src/slic3r/GUI/BedShapeDialog.cpp:471 src/slic3r/GUI/BedShapeDialog.cpp:520 +#: src/slic3r/GUI/BedShapeDialog.cpp:543 +msgid "Invalid file format." +msgstr "Formato de arquivo inválido." + +#: src/slic3r/GUI/BedShapeDialog.cpp:482 +msgid "Error! Invalid model" +msgstr "Erro! Modelo inválido" + +#: src/slic3r/GUI/BedShapeDialog.cpp:490 +msgid "The selected file contains no geometry." +msgstr "O arquivo selecionado não contém geometria." + +#: src/slic3r/GUI/BedShapeDialog.cpp:494 +msgid "" +"The selected file contains several disjoint areas. This is not supported." +msgstr "O arquivo selecionado contém áreas não juntas. Isso não é suportado." + +#: src/slic3r/GUI/BedShapeDialog.cpp:509 +msgid "Choose a file to import bed texture from (PNG/SVG):" +msgstr "Escolher um arquivo para importar a textura da mesa (PNG/SVG):" + +#: src/slic3r/GUI/BedShapeDialog.cpp:532 +msgid "Choose an STL file to import bed model from:" +msgstr "Escolha um arquivo STL para importar o modelo da mesa:" + +#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:535 +msgid "Bed Shape" +msgstr "Formato da mesa" + +#: src/slic3r/GUI/BonjourDialog.cpp:55 +msgid "Network lookup" +msgstr "Pesquisa de rede" + +#: src/slic3r/GUI/BonjourDialog.cpp:72 +msgid "Address" +msgstr "Endereço" + +#: src/slic3r/GUI/BonjourDialog.cpp:73 +msgid "Hostname" +msgstr "Nome do Host" + +#: src/slic3r/GUI/BonjourDialog.cpp:74 +msgid "Service name" +msgstr "Nome de serviços" + +#: src/slic3r/GUI/BonjourDialog.cpp:76 +msgid "OctoPrint version" +msgstr "Versão do OctoPrint" + +#: src/slic3r/GUI/BonjourDialog.cpp:218 +msgid "Searching for devices" +msgstr "Procurando por dispositivos" + +#: src/slic3r/GUI/BonjourDialog.cpp:225 +msgid "Finished" +msgstr "Finalizado" + +#: src/slic3r/GUI/ButtonsDescription.cpp:16 +msgid "Buttons And Text Colors Description" +msgstr "Descrição dos botões e cores de texto" + +#: src/slic3r/GUI/ButtonsDescription.cpp:36 +msgid "Value is the same as the system value" +msgstr "O valor é o mesmo que o valor do sistema" + +#: src/slic3r/GUI/ButtonsDescription.cpp:53 +msgid "" +"Value was changed and is not equal to the system value or the last saved " +"preset" +msgstr "" +"O valor foi mudado e não é igual ao valor do sistema ou da última config. " +"salva" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 +msgid "Upgrade" +msgstr "Atualização" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 +msgid "Downgrade" +msgstr "Desatualização" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 +msgid "Before roll back" +msgstr "Antes de reverter" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +msgid "User" +msgstr "Usuário" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +msgid "Unknown" +msgstr "Desconhecido" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:39 +msgid "Active" +msgstr "Ativar" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 +msgid "slic3r version" +msgstr "versão do slic3r" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1311 +msgid "print" +msgstr "impressão" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 +msgid "filaments" +msgstr "filamentos" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:48 src/slic3r/GUI/Preset.cpp:1315 +msgid "printer" +msgstr "impressora" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 src/slic3r/GUI/Tab.cpp:961 +msgid "vendor" +msgstr "fornecedor" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 +msgid "version" +msgstr "versão" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 +msgid "min slic3r version" +msgstr "versão mínima do slic3r" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:55 +msgid "max slic3r version" +msgstr "versão máxima do slic3r" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58 +msgid "model" +msgstr "modelo" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58 +msgid "variants" +msgstr "variantes" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:70 +#, c-format +msgid "Incompatible with this %s" +msgstr "Incompatível com isso %s" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:73 +msgid "Activate" +msgstr "Ativar" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:99 +msgid "Configuration Snapshots" +msgstr "config. das versões" + +#: src/slic3r/GUI/ConfigWizard.cpp:123 +msgid "nozzle" +msgstr "bico de impressão" + +#: src/slic3r/GUI/ConfigWizard.cpp:127 +msgid "Alternate nozzles:" +msgstr "Alternar bicos:" + +#: src/slic3r/GUI/ConfigWizard.cpp:193 +msgid "All standard" +msgstr "Todos padrão" + +#: src/slic3r/GUI/ConfigWizard.cpp:194 src/slic3r/GUI/Tab.cpp:3336 +msgid "All" +msgstr "Todos" + +#: src/slic3r/GUI/ConfigWizard.cpp:195 src/slic3r/GUI/Plater.cpp:469 +#: src/slic3r/GUI/Plater.cpp:607 src/libslic3r/GCode/PreviewData.cpp:146 +msgid "None" +msgstr "Nenhum" + +#: src/slic3r/GUI/ConfigWizard.cpp:301 +#, c-format +msgid "Welcome to the %s Configuration Assistant" +msgstr "Bem-vindo ao %s Assistente de config." + +#: src/slic3r/GUI/ConfigWizard.cpp:303 +#, c-format +msgid "Welcome to the %s Configuration Wizard" +msgstr "Bem-vindo ao %s Assistente de config." + +#: src/slic3r/GUI/ConfigWizard.cpp:305 +msgid "Welcome" +msgstr "Bem-vindo(a)" + +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/GUI_App.cpp:793 +#, c-format +msgid "Run %s" +msgstr "Executar %s" + +#: src/slic3r/GUI/ConfigWizard.cpp:311 +#, c-format +msgid "" +"Hello, welcome to %s! This %s helps you with the initial configuration; just " +"a few settings and you will be ready to print." +msgstr "" +"Olá, bem-vindo ao %s! Isso %s te ajuda com a config. inicial; com apenas " +"algumas config. e você estará pronto para imprimir." + +#: src/slic3r/GUI/ConfigWizard.cpp:316 +msgid "" +"Remove user profiles - install from scratch (a snapshot will be taken " +"beforehand)" +msgstr "" +"Remover perfis de usuário - instalar do zero (uma snapshot será salva antes)" + +#: src/slic3r/GUI/ConfigWizard.cpp:347 +#, c-format +msgid "%s Family" +msgstr "%s Família" + +#: src/slic3r/GUI/ConfigWizard.cpp:384 +msgid "Custom Printer Setup" +msgstr "config. da impressora customizada" + +#: src/slic3r/GUI/ConfigWizard.cpp:384 +msgid "Custom Printer" +msgstr "Impressora customizada" + +#: src/slic3r/GUI/ConfigWizard.cpp:386 +msgid "Define a custom printer profile" +msgstr "Definir uma config. para a impressora customizada" + +#: src/slic3r/GUI/ConfigWizard.cpp:388 +msgid "Custom profile name:" +msgstr "Nome customizado da config.:" + +#: src/slic3r/GUI/ConfigWizard.cpp:412 +msgid "Automatic updates" +msgstr "Atualizações automáticas" + +#: src/slic3r/GUI/ConfigWizard.cpp:412 +msgid "Updates" +msgstr "Atualizações" + +#: src/slic3r/GUI/ConfigWizard.cpp:420 src/slic3r/GUI/Preferences.cpp:69 +msgid "Check for application updates" +msgstr "Verificar atualizações nas aplicações" + +#: src/slic3r/GUI/ConfigWizard.cpp:424 +#, c-format +msgid "" +"If enabled, %s checks for new application versions online. When a new " +"version becomes available, a notification is displayed at the next " +"application startup (never during program usage). This is only a " +"notification mechanisms, no automatic installation is done." +msgstr "" +"Se ativada, %s verifica se há novas versões do aplicativo online. Quando uma " +"nova versão se torna disponível, uma notificação é exibida na próxima " +"inicialização do aplicativo (nunca durante o uso do programa). Este é apenas " +"um mecanismos de notificação, nenhuma instalação automática é feita." + +#: src/slic3r/GUI/ConfigWizard.cpp:430 src/slic3r/GUI/Preferences.cpp:77 +msgid "Update built-in Presets automatically" +msgstr "Atualizar predefinições incorporadas automaticamente" + +#: src/slic3r/GUI/ConfigWizard.cpp:434 +#, c-format +msgid "" +"If enabled, %s downloads updates of built-in system presets in the " +"background.These updates are downloaded into a separate temporary location." +"When a new preset version becomes available it is offered at application " +"startup." +msgstr "" +"Se ativada, %s baixa atualizações de predefinições de sistema incorporadas " +"em segundo plano. Essas atualizações são baixadas em um local temporário " +"separado. Quando uma nova versão predefinida se torna disponível, ela é " +"oferecida na inicialização do aplicativo." + +#: src/slic3r/GUI/ConfigWizard.cpp:437 +msgid "" +"Updates are never applied without user's consent and never overwrite user's " +"customized settings." +msgstr "" +"Atualizações nunca são aplicadas sem a permissão do usuário e nunca sobre " +"escrevem as config. do usuário." + +#: src/slic3r/GUI/ConfigWizard.cpp:442 +msgid "" +"Additionally a backup snapshot of the whole configuration is created before " +"an update is applied." +msgstr "" +"Além disso, uma captura de backup de toda a config. é criado antes que uma " +"atualização seja aplicada." + +#: src/slic3r/GUI/ConfigWizard.cpp:449 +msgid "Other Vendors" +msgstr "Outros fornecedores" + +#: src/slic3r/GUI/ConfigWizard.cpp:451 +#, c-format +msgid "Pick another vendor supported by %s:" +msgstr "Escolha outro fornecedor suportado por %s:" + +#: src/slic3r/GUI/ConfigWizard.cpp:497 +msgid "Firmware Type" +msgstr "Tipo de Firmware" + +#: src/slic3r/GUI/ConfigWizard.cpp:497 src/slic3r/GUI/Tab.cpp:2149 +msgid "Firmware" +msgstr "Firmware" + +#: src/slic3r/GUI/ConfigWizard.cpp:501 +msgid "Choose the type of firmware used by your printer." +msgstr "Escolha o tipo de firmware utilizado na sua impressora." + +#: src/slic3r/GUI/ConfigWizard.cpp:535 +msgid "Bed Shape and Size" +msgstr "Forma e tamanho da mesa" + +#: src/slic3r/GUI/ConfigWizard.cpp:538 +msgid "Set the shape of your printer's bed." +msgstr "Insira o formato da mesa de impressão." + +#: src/slic3r/GUI/ConfigWizard.cpp:558 +msgid "Filament and Nozzle Diameters" +msgstr "Diâmetro do bico e do filamento" + +#: src/slic3r/GUI/ConfigWizard.cpp:558 +msgid "Print Diameters" +msgstr "Diâmetros de impressão" + +#: src/slic3r/GUI/ConfigWizard.cpp:572 +msgid "Enter the diameter of your printer's hot end nozzle." +msgstr "Insira o diâmetro do bico de impressão." + +#: src/slic3r/GUI/ConfigWizard.cpp:575 +msgid "Nozzle Diameter:" +msgstr "Diâmetro do bico:" + +#: src/slic3r/GUI/ConfigWizard.cpp:585 +msgid "Enter the diameter of your filament." +msgstr "Coloque o diâmetro do seu filamento." + +#: src/slic3r/GUI/ConfigWizard.cpp:586 +msgid "" +"Good precision is required, so use a caliper and do multiple measurements " +"along the filament, then compute the average." +msgstr "" +"É necessário uma boa precisão, utilize um paquímetro e realize várias " +"medições ao longo do filamento, faça uma média." + +#: src/slic3r/GUI/ConfigWizard.cpp:589 +msgid "Filament Diameter:" +msgstr "Diâmetro do filamento:" + +#: src/slic3r/GUI/ConfigWizard.cpp:623 +msgid "Extruder and Bed Temperatures" +msgstr "Temperaturas da mesa e da extrusora" + +#: src/slic3r/GUI/ConfigWizard.cpp:623 +msgid "Temperatures" +msgstr "Temperaturas" + +#: src/slic3r/GUI/ConfigWizard.cpp:639 +msgid "Enter the temperature needed for extruding your filament." +msgstr "Coloque a temperatura necessária para extrusar seu filamento." + +#: src/slic3r/GUI/ConfigWizard.cpp:640 +msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." +msgstr "A regra de ouro é 160 à 230°C para PLA, e 215 à 250°C para ABS." + +#: src/slic3r/GUI/ConfigWizard.cpp:643 +msgid "Extrusion Temperature:" +msgstr "Temperatura de extrusão:" + +#: src/slic3r/GUI/ConfigWizard.cpp:644 src/slic3r/GUI/ConfigWizard.cpp:658 +msgid "°C" +msgstr "°C" + +#: src/slic3r/GUI/ConfigWizard.cpp:653 +msgid "" +"Enter the bed temperature needed for getting your filament to stick to your " +"heated bed." +msgstr "" +"Coloque a temperatura da mesa necessária para fazer com que seu filamento " +"grude na mesa." + +#: src/slic3r/GUI/ConfigWizard.cpp:654 +msgid "" +"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " +"no heated bed." +msgstr "" +"A regra de ouro é 60°C para PLA, e 110°C para ABS. Deixe em zero se não há " +"mesa aquecida." + +#: src/slic3r/GUI/ConfigWizard.cpp:657 +msgid "Bed Temperature:" +msgstr "Temperatura da mesa:" + +#: src/slic3r/GUI/ConfigWizard.cpp:1138 +msgid "Select all standard printers" +msgstr "Selecione todas as impressoras padrão" + +#: src/slic3r/GUI/ConfigWizard.cpp:1141 +msgid "< &Back" +msgstr "< &Voltar" + +#: src/slic3r/GUI/ConfigWizard.cpp:1142 +msgid "&Next >" +msgstr "&Próximo >" + +#: src/slic3r/GUI/ConfigWizard.cpp:1143 +msgid "&Finish" +msgstr "&Final" + +#: src/slic3r/GUI/ConfigWizard.cpp:1144 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ProgressStatusBar.cpp:27 +msgid "Cancel" +msgstr "Cancelar" + +#: src/slic3r/GUI/ConfigWizard.cpp:1158 +msgid "Prusa FFF Technology Printers" +msgstr "Impressoras de tecnologia Prusa FFF" + +#: src/slic3r/GUI/ConfigWizard.cpp:1161 +msgid "Prusa MSLA Technology Printers" +msgstr "Impressoras de tecnologia Prusa MSLA" + +#: src/slic3r/GUI/ConfigWizard.cpp:1230 +msgid "Configuration Assistant" +msgstr "Assistente de config." + +#: src/slic3r/GUI/ConfigWizard.cpp:1231 +msgid "Configuration &Assistant" +msgstr "Assistente &de config." + +#: src/slic3r/GUI/ConfigWizard.cpp:1233 +msgid "Configuration Wizard" +msgstr "Assistente de config." + +#: src/slic3r/GUI/ConfigWizard.cpp:1234 +msgid "Configuration &Wizard" +msgstr "Assistente &de config." + +#: src/slic3r/GUI/Field.cpp:125 +msgid "default value" +msgstr "valor padrão" + +#: src/slic3r/GUI/Field.cpp:128 +msgid "parameter name" +msgstr "nome do parâmetro" + +#: src/slic3r/GUI/Field.cpp:139 src/slic3r/GUI/OptionsGroup.cpp:569 +msgid "N/A" +msgstr "N/D" + +#: src/slic3r/GUI/Field.cpp:158 +#, c-format +msgid "%s doesn't support percentage" +msgstr "%s não suporta porcentagem" + +#: src/slic3r/GUI/Field.cpp:174 src/slic3r/GUI/Field.cpp:197 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:337 +msgid "Invalid numeric input." +msgstr "Entrada numérica não válida." + +#: src/slic3r/GUI/Field.cpp:179 +msgid "Input value is out of range" +msgstr "Valor de entrada está fora do limite" + +#: src/slic3r/GUI/Field.cpp:206 +#, c-format +msgid "" +"Do you mean %s%% instead of %s %s?\n" +"Select YES if you want to change this value to %s%%, \n" +"or NO if you are sure that %s %s is a correct value." +msgstr "" +"Você quer dizer %s%% ao invés de %s %s?\n" +"Selecione SIM se quiser trocar esse valor para %s%%, \n" +"ou NÃO se você tem certeza que %s %s é o valor correto." + +#: src/slic3r/GUI/Field.cpp:209 +msgid "Parameter validation" +msgstr "Validação do parâmetro" + +#: src/slic3r/GUI/FirmwareDialog.cpp:150 +msgid "Flash!" +msgstr "Atualizando!" + +#: src/slic3r/GUI/FirmwareDialog.cpp:152 +msgid "Flashing in progress. Please do not disconnect the printer!" +msgstr "Atualização em progresso. Favor não desconectar sua impressora!" + +#: src/slic3r/GUI/FirmwareDialog.cpp:199 +msgid "Flashing failed" +msgstr "A atualização falhou" + +#: src/slic3r/GUI/FirmwareDialog.cpp:282 +msgid "Flashing succeeded!" +msgstr "Atualizado com sucesso!" + +#: src/slic3r/GUI/FirmwareDialog.cpp:283 +msgid "Flashing failed. Please see the avrdude log below." +msgstr "A atualização falhou. Favor verificar os registros abaixo." + +#: src/slic3r/GUI/FirmwareDialog.cpp:284 +msgid "Flashing cancelled." +msgstr "Atualização cancelada." + +#: src/slic3r/GUI/FirmwareDialog.cpp:332 +#, c-format +msgid "" +"This firmware hex file does not match the printer model.\n" +"The hex file is intended for: %s\n" +"Printer reported: %s\n" +"\n" +"Do you want to continue and flash this hex file anyway?\n" +"Please only continue if you are sure this is the right thing to do." +msgstr "" +"O arquivo hex do firmware não é o mesmo utilizado no modelo da impressora.\n" +"O arquivo hex desejado para: %s\n" +"Impressora relatada: %s\n" +"\n" +"Você gostaria de continuar e atualizar o arquivo hex mesmo assim?\n" +"Favor continuar se tiver certeza que é a coisa certa a se fazer." + +#: src/slic3r/GUI/FirmwareDialog.cpp:419 src/slic3r/GUI/FirmwareDialog.cpp:454 +#, c-format +msgid "" +"Multiple %s devices found. Please only connect one at a time for flashing." +msgstr "" +"Múltiplos %s dispositivos encontrados. Favor conectar um de cada vez para " +"atualização." + +#: src/slic3r/GUI/FirmwareDialog.cpp:436 +#, c-format +msgid "" +"The %s device was not found.\n" +"If the device is connected, please press the Reset button next to the USB " +"connector ..." +msgstr "" +"O %s dispositivo não foi encontrado.\n" +"Se o dispositivo está conectado, favor utilizar o botão de Reset perto do " +"conector USB ..." + +#: src/slic3r/GUI/FirmwareDialog.cpp:548 +#, c-format +msgid "The %s device could not have been found" +msgstr "O %s dispositivo não pode ser encontrado" + +#: src/slic3r/GUI/FirmwareDialog.cpp:645 +#, c-format +msgid "Error accessing port at %s: %s" +msgstr "Erro ao acessa a porta em %s: %s" + +#: src/slic3r/GUI/FirmwareDialog.cpp:647 +#, c-format +msgid "Error: %s" +msgstr "Erro: %s" + +#: src/slic3r/GUI/FirmwareDialog.cpp:777 +msgid "Firmware flasher" +msgstr "Atualizador de Firmware" + +#: src/slic3r/GUI/FirmwareDialog.cpp:802 +msgid "Firmware image:" +msgstr "Imagem do Firmware:" + +#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1870 +#: src/slic3r/GUI/Tab.cpp:1926 +msgid "Browse" +msgstr "Procurar" + +#: src/slic3r/GUI/FirmwareDialog.cpp:807 +msgid "Serial port:" +msgstr "Porte Serial:" + +#: src/slic3r/GUI/FirmwareDialog.cpp:809 +msgid "Autodetected" +msgstr "Auto detectado" + +#: src/slic3r/GUI/FirmwareDialog.cpp:810 +msgid "Rescan" +msgstr "Reescanear" + +#: src/slic3r/GUI/FirmwareDialog.cpp:817 +msgid "Progress:" +msgstr "Progresso:" + +#: src/slic3r/GUI/FirmwareDialog.cpp:820 +msgid "Status:" +msgstr "Status:" + +#: src/slic3r/GUI/FirmwareDialog.cpp:821 +msgid "Ready" +msgstr "Pronto" + +#: src/slic3r/GUI/FirmwareDialog.cpp:841 +msgid "Advanced: Output log" +msgstr "Avançado: log de Saída" + +#: src/slic3r/GUI/FirmwareDialog.cpp:852 +#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +msgid "Close" +msgstr "Fechar" + +#: src/slic3r/GUI/FirmwareDialog.cpp:903 +msgid "" +"Are you sure you want to cancel firmware flashing?\n" +"This could leave your printer in an unusable state!" +msgstr "" +"Você tem certeza que gostaria de cancelar a atualização de Firmware? \n" +"Isso poderia deixar a sua impressora inutilizável!" + +#: src/slic3r/GUI/FirmwareDialog.cpp:904 +msgid "Confirmation" +msgstr "Confirmação" + +#: src/slic3r/GUI/FirmwareDialog.cpp:907 +msgid "Cancelling..." +msgstr "Cancelando..." + +#: src/slic3r/GUI/GLCanvas3D.cpp:534 +msgid "Layers heights" +msgstr "Altura de camada" + +#: src/slic3r/GUI/GLCanvas3D.cpp:631 +msgid "An object outside the print area was detected" +msgstr "Um objeto foi detectado fora da área de impressão" + +#: src/slic3r/GUI/GLCanvas3D.cpp:632 +msgid "A toolpath outside the print area was detected" +msgstr "Há movimentos fora da área de impressão" + +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "SLA supports outside the print area were detected" +msgstr "Suportes de SLA foram detectados fora da área de impressão" + +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "Some objects are not visible when editing supports" +msgstr "Alguns objetos não são visíveis quando editando suportes" + +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "" +"An object outside the print area was detected\n" +"Resolve the current problem to continue slicing" +msgstr "" +"Um objeto foi encontrado fora da área de impressão\n" +"Resolva o problema atual para continuar o fatiamento" + +#: src/slic3r/GUI/GLCanvas3D.cpp:1733 +msgid "Mirror Object" +msgstr "Espelhar objeto" + +#: src/slic3r/GUI/GLCanvas3D.cpp:2970 +msgid "Move Object" +msgstr "Mover objeto" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3506 +msgid "Undo History" +msgstr "Desfazer histórico" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3506 +msgid "Redo History" +msgstr "Refazer histórico" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3524 +#, c-format +msgid "Undo %1$d Action" +msgid_plural "Undo %1$d Actions" +msgstr[0] "Desfazer ação de %1$d" +msgstr[1] "Desfazer ações de %1$d" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3524 +#, c-format +msgid "Redo %1$d Action" +msgid_plural "Redo %1$d Actions" +msgstr[0] "Refazer ação de %1$d" +msgstr[1] "Refazer ações de %1$d" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3571 +msgid "Add..." +msgstr "Adicionar..." + +#: src/slic3r/GUI/GLCanvas3D.cpp:3579 src/slic3r/GUI/GUI_ObjectList.cpp:1501 +#: src/slic3r/GUI/Plater.cpp:3520 src/slic3r/GUI/Plater.cpp:3539 +#: src/slic3r/GUI/Tab.cpp:3286 +msgid "Delete" +msgstr "Deletar" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3588 src/slic3r/GUI/Plater.cpp:4172 +msgid "Delete all" +msgstr "Deletar todos" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3597 src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/Plater.cpp:2681 +msgid "Arrange" +msgstr "Arranjar" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3597 src/slic3r/GUI/KBShortcutsDialog.cpp:138 +msgid "Arrange selection" +msgstr "Arranjar seleção" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3609 +msgid "Copy" +msgstr "Copiar" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3618 +msgid "Paste" +msgstr "Colar" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3630 src/slic3r/GUI/Plater.cpp:3400 +#: src/slic3r/GUI/Plater.cpp:3412 src/slic3r/GUI/Plater.cpp:3526 +msgid "Add instance" +msgstr "Adicionar instância" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3641 src/slic3r/GUI/Plater.cpp:3528 +msgid "Remove instance" +msgstr "Remover instância" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3654 +msgid "Split to objects" +msgstr "Dividir em objetos" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3664 src/slic3r/GUI/GUI_ObjectList.cpp:1340 +msgid "Split to parts" +msgstr "Dividir em partes" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3677 src/slic3r/GUI/GUI_ObjectList.cpp:2203 +msgid "Height ranges" +msgstr "Limites de altura" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3728 src/slic3r/GUI/MainFrame.cpp:570 +msgid "Undo" +msgstr "Desfazer" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3728 src/slic3r/GUI/GLCanvas3D.cpp:3761 +msgid "Click right mouse button to open History" +msgstr "Clique no botão direito para abrir o Histórico" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3745 +msgid "Next Undo action: %1%" +msgstr "Próxima ação de desfazer: %1%" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3761 src/slic3r/GUI/MainFrame.cpp:573 +msgid "Redo" +msgstr "Refazer" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3777 +msgid "Next Redo action: %1%" +msgstr "Próxima ação de refazer: %1%" + +#: src/slic3r/GUI/GLCanvas3D.cpp:5555 +msgid "Selection-Add from rectangle" +msgstr "Seleção-Adicionar do retângulo" + +#: src/slic3r/GUI/GLCanvas3D.cpp:5574 +msgid "Selection-Remove from rectangle" +msgstr "Seleção-remover do retângulo" + +#: src/slic3r/GUI/GLCanvas3DManager.cpp:273 +#, c-format +msgid "" +"PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" +"while OpenGL version %s, render %s, vendor %s was detected." +msgstr "" +"PrusaSlicer requer drivers capazes de executar OpenGL 2.0, \n" +"enquanto a versão do OpenGL %s, renderização %s, fornecedor %s foi detectada." + +#: src/slic3r/GUI/GLCanvas3DManager.cpp:276 +msgid "You may need to update your graphics card driver." +msgstr "Você pode ter que atualizar os drivers da sua placa de vídeo." + +#: src/slic3r/GUI/GLCanvas3DManager.cpp:279 +msgid "" +"As a workaround, you may run PrusaSlicer with a software rendered 3D " +"graphics by running prusa-slicer.exe with the --sw_renderer parameter." +msgstr "" +"Como solução alternativa, você pode executar o PrusaSlicer com um software " +"renderizando gráficos 3D por executar Prusa-slicer.exe com o parâmetro--" +"sw_renderer." + +#: src/slic3r/GUI/GLCanvas3DManager.cpp:281 +msgid "Unsupported OpenGL version" +msgstr "Versão do OpenGL não suportada" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:40 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:145 src/libslic3r/PrintConfig.cpp:3212 +msgid "Cut" +msgstr "Cortar" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:150 +msgid "Keep upper part" +msgstr "Manter parte superior" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:151 +msgid "Keep lower part" +msgstr "Manter parte inferior" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:152 +msgid "Rotate lower part upwards" +msgstr "Rotacione as partes inferiores para cima" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:155 +msgid "Perform cut" +msgstr "Aplicar o corte" + +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +msgid "Place on face" +msgstr "Colocar em uma face" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +msgid "Move" +msgstr "Mover" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 +msgid "Position (mm)" +msgstr "Posição (mm)" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 +msgid "Displacement (mm)" +msgstr "Deslocamento (mm)" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:477 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:496 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:514 +#: src/libslic3r/PrintConfig.cpp:3261 +msgid "Rotate" +msgstr "Rotacionar" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:482 +msgid "Rotation (deg)" +msgstr "Rotacionar (graus)" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:392 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:497 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:515 +#: src/libslic3r/PrintConfig.cpp:3276 +msgid "Scale" +msgstr "Escala" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:292 +msgid "Scale (%)" +msgstr "Escala (%)" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:44 +msgid "Head diameter" +msgstr "Diâmetro da cabeça" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:45 +msgid "Lock supports under new islands" +msgstr "Travar suportes debaixo de novas ilhas" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1449 +msgid "Remove selected points" +msgstr "Remover pontos selecionados" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 +msgid "Remove all points" +msgstr "Remover todos os pontos" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1452 +msgid "Apply changes" +msgstr "Aplicar mudanças" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1453 +msgid "Discard changes" +msgstr "Descartar mudanças" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 +msgid "Minimal points distance" +msgstr "Distância mínima entre pontos" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/libslic3r/PrintConfig.cpp:2651 +msgid "Support points density" +msgstr "Densidade dos pontos de suporte" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1455 +msgid "Auto-generate points" +msgstr "Pontos gerados automaticamente" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 +msgid "Manual editing" +msgstr "Edição manual" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +msgid "Clipping of view" +msgstr "Recorte de vista" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +msgid "Reset direction" +msgstr "Restabelecer direção" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:531 +msgid "Add support point" +msgstr "Adicionar ponto de suporte" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:719 +msgid "Delete support point" +msgstr "Deletar ponto de suporte" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:920 +msgid "Change point head diameter" +msgstr "Mudar o diâmetro do ponto da cabeça" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:986 +msgid "Support parameter change" +msgstr "Mudança de parâmetro de suporte" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1094 +msgid "SLA Support Points" +msgstr "Pontos de suporte SLA" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1115 +msgid "SLA gizmo turned on" +msgstr "Gizmo de SLA ligado" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1137 +msgid "Do you want to save your manually edited support points?" +msgstr "Você deseja salvar os pontos manualmente editados?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1138 +msgid "Save changes?" +msgstr "Salvar mudanças?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1150 +msgid "SLA gizmo turned off" +msgstr "Gizmo de SLA desligado" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1187 +msgid "Move support point" +msgstr "Mover pontos de suporte" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1286 +msgid "Support points edit" +msgstr "Edição de pontos de suporte" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1355 +msgid "" +"Autogeneration will erase all manually edited points.\n" +"\n" +"Are you sure you want to do it?\n" +msgstr "" +"Gerar automaticamente irá apagar todos os pontos manualmente editados. Tem " +"certeza que quer gerar?\n" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1357 src/slic3r/GUI/GUI.cpp:289 +#: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328 +msgid "Warning" +msgstr "Aviso" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1360 +msgid "Autogenerate support points" +msgstr "Pontos de suporte gerados automaticamente" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1412 +msgid "SLA gizmo keyboard shortcuts" +msgstr "Atalhos no teclado para gizmo SLA" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1423 +msgid "Note: some shortcuts work in (non)editing mode only." +msgstr "Nota: alguns atalhos funcionam somente em modos que não editam." + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1441 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1444 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1445 +msgid "Left click" +msgstr "Clique esquerdo" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1441 +msgid "Add point" +msgstr "Adicionar ponto" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1442 +msgid "Right click" +msgstr "Clique direito" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1442 +msgid "Remove point" +msgstr "Remover ponto" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1443 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1446 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1447 +msgid "Drag" +msgstr "Arrastar" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1443 +msgid "Move point" +msgstr "Mover ponto" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1444 +msgid "Add point to selection" +msgstr "Adicionar ponto à seleção" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1445 +msgid "Remove point from selection" +msgstr "Remover ponto da seleção" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1446 +msgid "Select by rectangle" +msgstr "Selecionar por retângulo" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1447 +msgid "Deselect by rectangle" +msgstr "Desselecionar por retângulo" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1448 +msgid "Select all points" +msgstr "Selecionar todos os pontos" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1450 +msgid "Mouse wheel" +msgstr "Scroll do mouse" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1450 +msgid "Move clipping plane" +msgstr "Mover plano de recorte" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1451 +msgid "Reset clipping plane" +msgstr "Restabelecer plano de recorte" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1454 +msgid "Switch to editing mode" +msgstr "Alterar para modo de edição" + +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:569 +msgid "Gizmo-Place on Face" +msgstr "Gizmo-Colocar em uma face" + +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:641 +msgid "Gizmo-Move" +msgstr "Gizmo-Mover" + +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:646 +msgid "Gizmo-Scale" +msgstr "Gizmo-Escala" + +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:651 +msgid "Gizmo-Rotate" +msgstr "Gizmo-Rotacionar" + +#: src/slic3r/GUI/GUI.cpp:141 src/slic3r/GUI/Tab.cpp:3145 +msgid "It's impossible to print multi-part object(s) with SLA technology." +msgstr "" +"É impossível imprimir objetos com múltiplas partes com a tecnologia SLA." + +#: src/slic3r/GUI/GUI.cpp:142 +msgid "Please check and fix your object list." +msgstr "Favor verificar e concertar sua lista de objetos." + +#: src/slic3r/GUI/GUI.cpp:143 src/slic3r/GUI/Plater.cpp:2246 +#: src/slic3r/GUI/Tab.cpp:3147 +msgid "Attention!" +msgstr "Atenção!" + +#: src/slic3r/GUI/GUI.cpp:283 +msgid "Notice" +msgstr "Aviso" + +#: src/slic3r/GUI/GUI_App.cpp:132 +#, c-format +msgid "" +"%s has encountered an error. It was likely caused by running out of memory. " +"If you are sure you have enough RAM on your system, this may also be a bug " +"and we would be glad if you reported it.\n" +"\n" +"The application will now terminate." +msgstr "" +"%s encontrou um erro. Provavelmente foi causado por ficar sem memória. Se " +"você tem certeza que você tem RAM suficiente em seu sistema, isso também " +"pode ser um bug e nós estaríamos contentes se você relatou.\n" +"\n" +"O aplicativo será encerrado agora." + +#: src/slic3r/GUI/GUI_App.cpp:135 +msgid "Fatal error" +msgstr "Erro fatal" + +#: src/slic3r/GUI/GUI_App.cpp:442 +msgid "Changing of an application language" +msgstr "Alteração de um idioma do aplicativo" + +#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +msgid "Recreating" +msgstr "Recriando" + +#: src/slic3r/GUI/GUI_App.cpp:463 +msgid "Loading of current presets" +msgstr "Carregando presets" + +#: src/slic3r/GUI/GUI_App.cpp:471 +msgid "Loading of a mode view" +msgstr "Carregamento de um modelo de vista" + +#: src/slic3r/GUI/GUI_App.cpp:551 +msgid "Choose one file (3MF/AMF):" +msgstr "Escolha um arquivo (3MF/AMF):" + +#: src/slic3r/GUI/GUI_App.cpp:563 +msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "Escolha um ou mais arquivos (STL/OBJ/AMF/3MF/PRUSA):" + +#: src/slic3r/GUI/GUI_App.cpp:625 +msgid "Select the language" +msgstr "Selecione a linguagem" + +#: src/slic3r/GUI/GUI_App.cpp:625 +msgid "Language" +msgstr "Linguagem" + +#: src/slic3r/GUI/GUI_App.cpp:796 +msgid "&Configuration Snapshots" +msgstr "&Captura das config." + +#: src/slic3r/GUI/GUI_App.cpp:796 +msgid "Inspect / activate configuration snapshots" +msgstr "Inspecionar / ativar capturas de config." + +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Take Configuration &Snapshot" +msgstr "Capturar &config." + +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Capture a configuration snapshot" +msgstr "Capturar uma config." + +#: src/slic3r/GUI/GUI_App.cpp:800 +msgid "&Preferences" +msgstr "&Preferências" + +#: src/slic3r/GUI/GUI_App.cpp:806 +msgid "Application preferences" +msgstr "Preferências de aplicação" + +#: src/slic3r/GUI/GUI_App.cpp:809 src/slic3r/GUI/wxExtensions.cpp:3043 +msgid "Simple" +msgstr "Simples" + +#: src/slic3r/GUI/GUI_App.cpp:809 +msgid "Simple View Mode" +msgstr "Modo simples de visualização" + +#: src/slic3r/GUI/GUI_App.cpp:810 src/slic3r/GUI/GUI_ObjectList.cpp:97 +#: src/slic3r/GUI/GUI_ObjectList.cpp:620 src/slic3r/GUI/Tab.cpp:1061 +#: src/slic3r/GUI/Tab.cpp:1076 src/slic3r/GUI/Tab.cpp:1174 +#: src/slic3r/GUI/Tab.cpp:1177 src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:2169 src/slic3r/GUI/Tab.cpp:3785 +#: src/slic3r/GUI/wxExtensions.cpp:3044 src/libslic3r/PrintConfig.cpp:83 +#: src/libslic3r/PrintConfig.cpp:197 src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:1013 src/libslic3r/PrintConfig.cpp:2226 +msgid "Advanced" +msgstr "Avançado" + +#: src/slic3r/GUI/GUI_App.cpp:810 +msgid "Advanced View Mode" +msgstr "Modo avançado de visualização" + +#: src/slic3r/GUI/GUI_App.cpp:811 src/slic3r/GUI/wxExtensions.cpp:3045 +msgid "Expert" +msgstr "Especialista" + +#: src/slic3r/GUI/GUI_App.cpp:811 +msgid "Expert View Mode" +msgstr "Modo especialista de visualização" + +#: src/slic3r/GUI/GUI_App.cpp:816 +msgid "Mode" +msgstr "Modo" + +#: src/slic3r/GUI/GUI_App.cpp:816 +#, c-format +msgid "%s View Mode" +msgstr "%s Modo de visualização" + +#: src/slic3r/GUI/GUI_App.cpp:818 +msgid "Change Application &Language" +msgstr "Mudar &idioma" + +#: src/slic3r/GUI/GUI_App.cpp:820 +msgid "Flash printer &firmware" +msgstr "Atualizar firmware &da impressora" + +#: src/slic3r/GUI/GUI_App.cpp:820 +msgid "Upload a firmware image into an Arduino based printer" +msgstr "Atualizar o firmware para uma impressora baseada em Arduino" + +#: src/slic3r/GUI/GUI_App.cpp:832 +msgid "Taking configuration snapshot" +msgstr "Capturando a config." + +#: src/slic3r/GUI/GUI_App.cpp:832 +msgid "Snapshot name" +msgstr "Nome da captura" + +#: src/slic3r/GUI/GUI_App.cpp:875 +msgid "" +"Switching the language will trigger application restart.\n" +"You will lose content of the plater." +msgstr "" +"Alterar a linguagem fará com que o aplicativo reinicie.\n" +"Você irá perder conteúdo no prato." + +#: src/slic3r/GUI/GUI_App.cpp:877 +msgid "Do you want to proceed?" +msgstr "Você quer prosseguir?" + +#: src/slic3r/GUI/GUI_App.cpp:878 +msgid "Language selection" +msgstr "Seleção de linguagem" + +#: src/slic3r/GUI/GUI_App.cpp:901 +msgid "&Configuration" +msgstr "&Configuração" + +#: src/slic3r/GUI/GUI_App.cpp:923 +msgid "The presets on the following tabs were modified" +msgstr "Os presets seguintes foram modificados" + +#: src/slic3r/GUI/GUI_App.cpp:923 src/slic3r/GUI/Tab.cpp:3133 +msgid "Discard changes and continue anyway?" +msgstr "Descartar mudanças e continuar assim mesmo?" + +#: src/slic3r/GUI/GUI_App.cpp:926 +msgid "Unsaved Presets" +msgstr "config. não salvas" + +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +msgid "Start at height" +msgstr "Começar na altura" + +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +msgid "Stop at height" +msgstr "Parar na altura" + +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1033 +#: src/libslic3r/PrintConfig.cpp:66 +msgid "Layer height" +msgstr "Altura da camada" + +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +msgid "Remove layer range" +msgstr "Remover limite da camada" + +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +msgid "Add layer range" +msgstr "Adicionar limite da camada" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:88 +#: src/slic3r/GUI/GUI_ObjectList.cpp:611 src/libslic3r/PrintConfig.cpp:67 +#: src/libslic3r/PrintConfig.cpp:160 src/libslic3r/PrintConfig.cpp:392 +#: src/libslic3r/PrintConfig.cpp:453 src/libslic3r/PrintConfig.cpp:461 +#: src/libslic3r/PrintConfig.cpp:867 src/libslic3r/PrintConfig.cpp:1051 +#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1420 +#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:2037 +#: src/libslic3r/PrintConfig.cpp:2095 +msgid "Layers and Perimeters" +msgstr "Camadas e perímetros" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:89 +#: src/slic3r/GUI/GUI_ObjectList.cpp:612 src/slic3r/GUI/Plater.cpp:497 +#: src/slic3r/GUI/Tab.cpp:1065 src/slic3r/GUI/Tab.cpp:1066 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:400 +#: src/libslic3r/PrintConfig.cpp:420 src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:768 src/libslic3r/PrintConfig.cpp:805 +#: src/libslic3r/PrintConfig.cpp:958 src/libslic3r/PrintConfig.cpp:968 +#: src/libslic3r/PrintConfig.cpp:986 src/libslic3r/PrintConfig.cpp:1004 +#: src/libslic3r/PrintConfig.cpp:1023 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:1725 +msgid "Infill" +msgstr "Preenchimento" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:90 +#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/slic3r/GUI/GUI_Preview.cpp:244 +#: src/slic3r/GUI/Tab.cpp:1094 src/slic3r/GUI/Tab.cpp:1095 +#: src/libslic3r/PrintConfig.cpp:344 src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1830 src/libslic3r/PrintConfig.cpp:1836 +#: src/libslic3r/PrintConfig.cpp:1844 src/libslic3r/PrintConfig.cpp:1856 +#: src/libslic3r/PrintConfig.cpp:1866 src/libslic3r/PrintConfig.cpp:1874 +#: src/libslic3r/PrintConfig.cpp:1889 src/libslic3r/PrintConfig.cpp:1910 +#: src/libslic3r/PrintConfig.cpp:1921 src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1955 +#: src/libslic3r/PrintConfig.cpp:1966 src/libslic3r/PrintConfig.cpp:1980 +#: src/libslic3r/PrintConfig.cpp:1988 src/libslic3r/PrintConfig.cpp:1989 +#: src/libslic3r/PrintConfig.cpp:1998 src/libslic3r/PrintConfig.cpp:2006 +#: src/libslic3r/PrintConfig.cpp:2020 src/libslic3r/GCode/PreviewData.cpp:156 +msgid "Support material" +msgstr "Material de suporte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:94 +#: src/slic3r/GUI/GUI_ObjectList.cpp:617 src/libslic3r/PrintConfig.cpp:2202 +#: src/libslic3r/PrintConfig.cpp:2210 +msgid "Wipe options" +msgstr "Opções de limpeza" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:45 +msgid "Pad and Support" +msgstr "Bloco e suporte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:51 +msgid "Add part" +msgstr "Adicionar parte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:52 +msgid "Add modifier" +msgstr "Adicionar modificador" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:53 +msgid "Add support enforcer" +msgstr "Adicionar reforço de suporte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:54 +msgid "Add support blocker" +msgstr "Adicionar bloqueador de suporte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:91 src/slic3r/GUI/GUI_ObjectList.cpp:614 +#: src/slic3r/GUI/GUI_Preview.cpp:223 src/slic3r/GUI/Tab.cpp:1119 +#: src/libslic3r/PrintConfig.cpp:209 src/libslic3r/PrintConfig.cpp:441 +#: src/libslic3r/PrintConfig.cpp:896 src/libslic3r/PrintConfig.cpp:1024 +#: src/libslic3r/PrintConfig.cpp:1410 src/libslic3r/PrintConfig.cpp:1647 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1747 +#: src/libslic3r/PrintConfig.cpp:2080 +msgid "Speed" +msgstr "Velocidade" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:92 src/slic3r/GUI/GUI_ObjectList.cpp:615 +#: src/slic3r/GUI/Tab.cpp:1154 src/slic3r/GUI/Tab.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:471 src/libslic3r/PrintConfig.cpp:979 +#: src/libslic3r/PrintConfig.cpp:1389 src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1928 +msgid "Extruders" +msgstr "Exrtrusoras" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:93 src/slic3r/GUI/GUI_ObjectList.cpp:616 +#: src/libslic3r/PrintConfig.cpp:431 src/libslic3r/PrintConfig.cpp:538 +#: src/libslic3r/PrintConfig.cpp:855 src/libslic3r/PrintConfig.cpp:987 +#: src/libslic3r/PrintConfig.cpp:1398 src/libslic3r/PrintConfig.cpp:1737 +#: src/libslic3r/PrintConfig.cpp:1911 src/libslic3r/PrintConfig.cpp:2069 +msgid "Extrusion Width" +msgstr "Espessura da extrusão" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:622 +#: src/slic3r/GUI/Plater.cpp:465 src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3738 src/libslic3r/PrintConfig.cpp:2501 +#: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2526 src/libslic3r/PrintConfig.cpp:2536 +#: src/libslic3r/PrintConfig.cpp:2562 src/libslic3r/PrintConfig.cpp:2569 +#: src/libslic3r/PrintConfig.cpp:2580 src/libslic3r/PrintConfig.cpp:2590 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2612 +#: src/libslic3r/PrintConfig.cpp:2622 src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2652 +#: src/libslic3r/PrintConfig.cpp:2660 +msgid "Supports" +msgstr "Suportes" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:623 +#: src/slic3r/GUI/Plater.cpp:603 src/slic3r/GUI/Tab.cpp:3769 +#: src/slic3r/GUI/Tab.cpp:3770 src/libslic3r/PrintConfig.cpp:2668 +#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2689 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2721 +#: src/libslic3r/PrintConfig.cpp:2732 src/libslic3r/PrintConfig.cpp:2739 +#: src/libslic3r/PrintConfig.cpp:2750 src/libslic3r/PrintConfig.cpp:2759 +#: src/libslic3r/PrintConfig.cpp:2768 +msgid "Pad" +msgstr "Bloco" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:260 +msgid "Name" +msgstr "Nome" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:271 src/slic3r/GUI/GUI_ObjectList.cpp:373 +msgid "Editing" +msgstr "Edição" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:318 +#, c-format +msgid "Auto-repaired (%d errors):\n" +msgstr "Auto reparando (%d erros):\n" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:325 +msgid "degenerate facets" +msgstr "facetas degeneradas" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:326 +msgid "edges fixed" +msgstr "arestas fixadas" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:327 +msgid "facets removed" +msgstr "facetas removidas" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:328 +msgid "facets added" +msgstr "facetas adicionadas" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:329 +msgid "facets reversed" +msgstr "facetas reversidas" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:330 +msgid "backwards edges" +msgstr "arestas viradas para trás" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:338 +msgid "Right button click the icon to fix STL through Netfabb" +msgstr "" +"Clique com o botão direito no ícone para arrumar STL através do Netfabb" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:375 +msgid "Right button click the icon to change the object settings" +msgstr "Clique com o botão direito no ícone para mudar as config. do objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:377 +msgid "Click the icon to change the object settings" +msgstr "Clique no ícone para mudar as config. do objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:381 +msgid "Right button click the icon to change the object printable property" +msgstr "" +"Clique com o botão direito no ícone para mudar a propriedade de impressão do " +"objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:383 +msgid "Click the icon to change the object printable property" +msgstr "Clique no ícone para mudar a propriedade de impressão do objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:428 src/slic3r/GUI/GUI_ObjectList.cpp:449 +#: src/slic3r/GUI/GUI_ObjectList.cpp:461 src/slic3r/GUI/GUI_ObjectList.cpp:3642 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3652 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3684 src/slic3r/GUI/wxExtensions.cpp:603 +#: src/slic3r/GUI/wxExtensions.cpp:660 src/slic3r/GUI/wxExtensions.cpp:685 +#: src/slic3r/GUI/wxExtensions.cpp:893 +msgid "default" +msgstr "padrão" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:433 src/slic3r/GUI/Tab.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:470 +msgid "Extruder" +msgstr "Extrusora" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:546 +msgid "Rename Object" +msgstr "Renomear objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:546 +msgid "Rename Sub-object" +msgstr "Renomear sub-objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:987 src/slic3r/GUI/GUI_ObjectList.cpp:3464 +msgid "Instances to Separated Objects" +msgstr "Instâncias para separar objetos" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1005 +msgid "Volumes in Object reordered" +msgstr "Volume reorganizados no objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1005 +msgid "Object reordered" +msgstr "Objeto reorganizado" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1060 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1376 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1382 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1623 +#, c-format +msgid "Quick Add Settings (%s)" +msgstr "Adicionar config. rapidamente (%s)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1137 +msgid "Select showing settings" +msgstr "Selecionar config. mostradas" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1186 +msgid "Add Settings for Layers" +msgstr "Adicionar config. para camadas" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1187 +msgid "Add Settings for Sub-object" +msgstr "Adicionar config. para sub-objetos" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1188 +msgid "Add Settings for Object" +msgstr "Adicionar config. para objetos" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1249 +msgid "Add Settings Bundle for Height range" +msgstr "Adicionar pacote de config. para intervalo de altura" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1250 +msgid "Add Settings Bundle for Sub-object" +msgstr "Adicionar pacote de config. para subobjeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1251 +msgid "Add Settings Bundle for Object" +msgstr "Adicionar pacote de config. para objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1290 +msgid "Load" +msgstr "Carregar" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1295 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1320 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1323 +msgid "Box" +msgstr "Caixa" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1295 +msgid "Cylinder" +msgstr "Cilindro" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1295 +msgid "Sphere" +msgstr "Esfera" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1295 +msgid "Slab" +msgstr "Placa" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1347 +msgid "Height range Modifier" +msgstr "Modificador de intervalo de altura" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1355 +msgid "Add settings" +msgstr "Adicionar config." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1422 +msgid "Change type" +msgstr "Mudar o tipo" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1429 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1577 +msgid "Set as a Separated Object" +msgstr "Configurar como objeto separado" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1435 +msgid "Printable" +msgstr "Imprimível" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1442 +msgid "Rename" +msgstr "Renomear" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1453 +msgid "Fix through the Netfabb" +msgstr "Arrumar através do Netfabb" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1463 src/slic3r/GUI/Plater.cpp:3552 +msgid "Export as STL" +msgstr "Exportar como STL" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1470 +msgid "Change extruder" +msgstr "Mudar extrusora" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1489 src/libslic3r/PrintConfig.cpp:309 +msgid "Default" +msgstr "Padrão" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1495 +msgid "Select new extruder for the object/part" +msgstr "Selecionar nova extrusora para objeto/parte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1507 +msgid "Scale to print volume" +msgstr "Escalar para volume de impressão" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1507 +msgid "Scale the selected object to fit the print volume" +msgstr "Escale o objeto selecionado para se adequar ao volume de impressão" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1577 +msgid "Set as a Separated Objects" +msgstr "Definir como objetos separados" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1652 +msgid "Load Part" +msgstr "Carregar parte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1687 +msgid "Error!" +msgstr "Erro!" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1732 +msgid "Add Generic Subobject" +msgstr "Adicionar sub-objeto genérico" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1739 +msgid "Generic" +msgstr "Genérico" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1843 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1945 +msgid "Last instance of an object cannot be deleted." +msgstr "A última instância de um objeto não pode ser excluída." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1855 +msgid "Delete Settings" +msgstr "Deletar config." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +msgid "Delete All Instances from Object" +msgstr "Excluir todas as instâncias do objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1895 +msgid "Delete Height Range" +msgstr "Excluir limite de altura" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1926 +msgid "From Object List You can't delete the last solid part from object." +msgstr "" +"Na lista de objetos não é possível excluir a última parte sólida do objeto." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1930 +msgid "Delete Subobject" +msgstr "Deletar sub-objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1949 +msgid "Delete Instance" +msgstr "Deletar instância" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1973 src/slic3r/GUI/Plater.cpp:2838 +msgid "" +"The selected object couldn't be split because it contains only one part." +msgstr "O seguinte objeto não pode ser dividido pois contém uma parte." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1977 +msgid "Split to Parts" +msgstr "Dividir em partes" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2025 +msgid "Add Layers" +msgstr "Adicionar camadas" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2150 +msgid "Group manipulation" +msgstr "Manipulação de grupos" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2162 +msgid "Object manipulation" +msgstr "Manipulação de objetos" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2175 +msgid "Object Settings to modify" +msgstr "config. do objeto para modificar" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2179 +msgid "Part Settings to modify" +msgstr "config. da parte para modificar" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2184 +msgid "Layer range Settings to modify" +msgstr "config. de intervalo de camada para modificar" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2190 +msgid "Part manipulation" +msgstr "Manipulação da parte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2196 +msgid "Instance manipulation" +msgstr "Manipulação da instância" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2203 +msgid "Settings for height range" +msgstr "config. para intervalo de altura" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2388 +msgid "Delete Selected Item" +msgstr "Excluir item selecionado" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2525 +msgid "Delete Selected" +msgstr "Excluir seleção" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2584 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2613 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2631 +msgid "Add Height Range" +msgstr "Adicionar intervalo de altura" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2690 +msgid "Edit Height Range" +msgstr "Editar intervalo de altura" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2974 +msgid "Selection-Remove from list" +msgstr "Seleção-Remover da lista" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2982 +msgid "Selection-Add from list" +msgstr "Seleção-Adicionar da lista" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3100 +msgid "Object or Instance" +msgstr "Objeto ou instância" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3101 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3234 +msgid "Part" +msgstr "Parte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3101 +msgid "Layer" +msgstr "Camada" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3103 +msgid "Unsupported selection" +msgstr "Seleção não suportada" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3104 +#, c-format +msgid "You started your selection with %s Item." +msgstr "Você iniciou sua seleção com o item de %s." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3105 +#, c-format +msgid "In this mode you can select only other %s Items%s" +msgstr "Neste modo, você pode selecionar apenas outros %s itens%s" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3108 +msgid "of a current Object" +msgstr "de um objeto atual" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3113 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3188 src/slic3r/GUI/Plater.cpp:126 +msgid "Info" +msgstr "Informação" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3229 +msgid "You can't change a type of the last solid part of the object." +msgstr "Não é possível alterar um tipo da última parte sólida do objeto." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3234 +msgid "Modifier" +msgstr "Modificador" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3234 +msgid "Support Enforcer" +msgstr "Reforçador de suporte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3234 +msgid "Support Blocker" +msgstr "Bloqueador de suporte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3236 +msgid "Type:" +msgstr "Tipo:" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3236 +msgid "Select type of part" +msgstr "Selecione o tipo de parte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3241 +msgid "Change Part Type" +msgstr "Mudar o tipo da parte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3486 +msgid "Enter new name" +msgstr "Insira o novo nome" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3486 +msgid "Renaming" +msgstr "Renomeando" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3502 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3608 src/slic3r/GUI/Tab.cpp:3618 +#: src/slic3r/GUI/Tab.cpp:3622 +msgid "The supplied name is not valid;" +msgstr "O nome inserido não é valido;" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3503 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3609 src/slic3r/GUI/Tab.cpp:3619 +msgid "the following characters are not allowed:" +msgstr "os seguintes caracteres não são permitidos:" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3632 +msgid "Set extruder for selected items" +msgstr "Definir extrusora para itens selecionados" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3633 +msgid "Select extruder number for selected objects and/or parts" +msgstr "Selecione o número da extrusora para objetos e/ou peças selecionados" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3646 +msgid "Select extruder number:" +msgstr "Selecione o número da extrusora:" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3647 +msgid "This extruder will be set for selected items" +msgstr "Esta extrusora será ajustada para artigos selecionados" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3759 src/slic3r/GUI/Selection.cpp:1473 +msgid "Set Printable" +msgstr "Definir como imprimível" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3759 src/slic3r/GUI/Selection.cpp:1473 +msgid "Set Unprintable" +msgstr "Definir não imprimível" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +msgid "World coordinates" +msgstr "Coordenadas mundiais" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +msgid "Local coordinates" +msgstr "Coordenadas locais" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +msgid "Select coordinate space, in which the transformation will be performed." +msgstr "" +"Selecione o espaço de coordenadas, no qual a transformação será executada." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:125 +msgid "Object Manipulation" +msgstr "Manipulação de objeto" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:178 +msgid "Object name" +msgstr "Nome do objeto" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:214 +#, c-format +msgid "Toggle %c axis mirroring" +msgstr "Ativar espelhamento do eixo %c" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:247 +msgid "Set Mirror" +msgstr "Definir espelhamento" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:287 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:292 +msgid "Reset scale" +msgstr "Restabelecer escala" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 +msgid "Reset rotation" +msgstr "Restabelecer rotação" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:330 +msgid "Reset Rotation" +msgstr "Restabelecer Rotação" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:342 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 +msgid "Drop to bed" +msgstr "Soltar na mesa" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:390 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:454 +msgid "Position" +msgstr "Posição" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:391 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:455 +msgid "Rotation" +msgstr "Rotação" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:456 +msgid "Scale factors" +msgstr "Fatores de escala" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:513 +msgid "Translate" +msgstr "Tradução" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:565 +msgid "" +"You cannot use non-uniform scaling mode for multiple objects/parts selection" +msgstr "" +"Não é possível usar o modo de dimensionamento não uniforme para vários " +"objetos/seleção de peças" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:735 +msgid "Set Position" +msgstr "Definir posição" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:766 +msgid "Set Orientation" +msgstr "Definir orientação" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:831 +msgid "Set Scale" +msgstr "Definir escala" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:915 +msgid "" +"The currently manipulated object is tilted (rotation angles are not " +"multiples of 90°).\n" +"Non-uniform scaling of tilted objects is only possible in the World " +"coordinate system,\n" +"once the rotation is embedded into the object coordinates." +msgstr "" +"O objeto atualmente manipulado é inclinado (os ângulos de rotação não são " +"múltiplos de 90 °).\n" +"O dimensionamento não uniforme de objetos inclinados só é possível no " +"sistema de coordenadas do mundo,\n" +"uma vez que a rotação é incorporada nas coordenadas do objeto." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:918 +msgid "" +"This operation is irreversible.\n" +"Do you want to proceed?" +msgstr "" +"Esta operação é irreversível.\n" +"Você quer prosseguir?" + +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +msgid "Additional Settings" +msgstr "config. Adicionais" + +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +msgid "Remove parameter" +msgstr "Remover parâmetro" + +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 +#, c-format +msgid "Delete Option %s" +msgstr "Excluir opção %s" + +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:146 +#, c-format +msgid "Change Option %s" +msgstr "Alterar opção %s" + +#: src/slic3r/GUI/GUI_Preview.cpp:217 +msgid "View" +msgstr "Vista" + +#: src/slic3r/GUI/GUI_Preview.cpp:220 src/slic3r/GUI/GUI_Preview.cpp:569 +#: src/libslic3r/GCode/PreviewData.cpp:378 +msgid "Feature type" +msgstr "Tipo de recurso" + +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/libslic3r/PrintConfig.cpp:483 +msgid "Height" +msgstr "Altura" + +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:2188 +msgid "Width" +msgstr "Espessura" + +#: src/slic3r/GUI/GUI_Preview.cpp:224 +msgid "Volumetric flow rate" +msgstr "Taxa de fluxo volumétrico" + +#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/GUI_Preview.cpp:333 +#: src/slic3r/GUI/GUI_Preview.cpp:515 src/slic3r/GUI/GUI_Preview.cpp:568 +#: src/slic3r/GUI/GUI_Preview.cpp:774 src/libslic3r/GCode/PreviewData.cpp:388 +msgid "Tool" +msgstr "Ferramenta" + +#: src/slic3r/GUI/GUI_Preview.cpp:226 src/slic3r/GUI/GUI_Preview.cpp:566 +#: src/libslic3r/GCode/PreviewData.cpp:390 +msgid "Color Print" +msgstr "Impressão colorida" + +#: src/slic3r/GUI/GUI_Preview.cpp:229 +msgid "Show" +msgstr "Mostrar" + +#: src/slic3r/GUI/GUI_Preview.cpp:232 src/slic3r/GUI/GUI_Preview.cpp:233 +msgid "Feature types" +msgstr "Tipos de características" + +#: src/slic3r/GUI/GUI_Preview.cpp:235 src/libslic3r/GCode/PreviewData.cpp:147 +msgid "Perimeter" +msgstr "Perímetro" + +#: src/slic3r/GUI/GUI_Preview.cpp:236 src/libslic3r/GCode/PreviewData.cpp:148 +msgid "External perimeter" +msgstr "Perímetro externo" + +#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/GCode/PreviewData.cpp:149 +msgid "Overhang perimeter" +msgstr "Perímetro de angulação" + +#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/GCode/PreviewData.cpp:150 +msgid "Internal infill" +msgstr "Preenchimento interno" + +#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1746 src/libslic3r/GCode/PreviewData.cpp:151 +msgid "Solid infill" +msgstr "Preenchimento sólido" + +#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/PrintConfig.cpp:2068 +#: src/libslic3r/PrintConfig.cpp:2079 src/libslic3r/GCode/PreviewData.cpp:152 +msgid "Top solid infill" +msgstr "Preenchimento do sólido do topo" + +#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/GCode/PreviewData.cpp:153 +msgid "Bridge infill" +msgstr "Preenchimento de pontes" + +#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/PrintConfig.cpp:895 +#: src/libslic3r/GCode/PreviewData.cpp:154 +msgid "Gap fill" +msgstr "Preenchimento de vão" + +#: src/slic3r/GUI/GUI_Preview.cpp:243 src/slic3r/GUI/Tab.cpp:1085 +#: src/libslic3r/GCode/PreviewData.cpp:155 +msgid "Skirt" +msgstr "Saia" + +#: src/slic3r/GUI/GUI_Preview.cpp:245 src/libslic3r/PrintConfig.cpp:1954 +#: src/libslic3r/GCode/PreviewData.cpp:157 +msgid "Support material interface" +msgstr "Interface do material de suporte" + +#: src/slic3r/GUI/GUI_Preview.cpp:246 src/slic3r/GUI/Tab.cpp:1165 +#: src/libslic3r/GCode/PreviewData.cpp:158 +msgid "Wipe tower" +msgstr "Torre de limpeza" + +#: src/slic3r/GUI/GUI_Preview.cpp:251 src/libslic3r/PrintConfig.cpp:2102 +msgid "Travel" +msgstr "Viagem" + +#: src/slic3r/GUI/GUI_Preview.cpp:252 +msgid "Retractions" +msgstr "Retrações" + +#: src/slic3r/GUI/GUI_Preview.cpp:253 +msgid "Unretractions" +msgstr "Retorno da retração" + +#: src/slic3r/GUI/GUI_Preview.cpp:254 +msgid "Shells" +msgstr "Paredes" + +#: src/slic3r/GUI/GUI_Preview.cpp:255 +msgid "Legend" +msgstr "Legenda" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:14 src/slic3r/GUI/MainFrame.cpp:683 +msgid "Keyboard Shortcuts" +msgstr "Atalhos do teclado" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 +msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" +msgstr "Abra o projeto STL/OBJ/AMF/3MF com config., excluir mesa" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 +msgid "Import STL/OBJ/AMF/3MF without config, keep bed" +msgstr "Importação STL/OBJ/AMF/3MF sem config., manter a mesa" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 +msgid "Load Config from .ini/amf/3mf/gcode" +msgstr "Carregar config. de um .ini/AMF/3mf/Gcode" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 src/slic3r/GUI/Plater.cpp:837 +#: src/slic3r/GUI/Plater.cpp:4822 src/libslic3r/PrintConfig.cpp:3163 +msgid "Export G-code" +msgstr "Exportar G-code" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 +msgid "Save project (3MF)" +msgstr "Salvar projeto (3MF)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +msgid "Load Config from .ini/amf/3mf/gcode and merge" +msgstr "Carregar config. de um. ini/AMF/3mf/Gcode e mesclar" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +msgid "(Re)slice" +msgstr "(Re)fatiar" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +msgid "Select Plater Tab" +msgstr "Selecione a guia de prato" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +msgid "Select Print Settings Tab" +msgstr "Selecione a guia config. de impressão" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +msgid "Select Filament Settings Tab" +msgstr "Selecione a guia config. de filamento" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +msgid "Select Printer Settings Tab" +msgstr "Selecione a guia config. da impressora" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 +msgid "Switch to 3D" +msgstr "Mude para 3D" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 +msgid "Switch to Preview" +msgstr "Mudar para pré-visualização" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Preferences.cpp:10 +msgid "Preferences" +msgstr "Preferências" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/PrintHostDialogs.cpp:136 +msgid "Print host upload queue" +msgstr "Fila de carregamento do host de impressão" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:125 +msgid "Camera view" +msgstr "Vista da câmera" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +msgid "Add Instance of the selected object" +msgstr "Adicionar instância do objeto selecionado" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +msgid "Remove Instance of the selected object" +msgstr "Remover instância do objeto selecionado" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +msgid "Show keyboard shortcuts list" +msgstr "Mostrar lista dos atalhos no teclado" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 +msgid "Press to select multiple object or move multiple object with mouse" +msgstr "" +"Aperte para selecionar múltiplos objetos ou mover múltiplos objetos com o " +"mouse" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:131 +msgid "Main Shortcuts" +msgstr "Atalhos principais" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +msgid "Select All objects" +msgstr "Selecionar todos os objetos" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +msgid "Delete selected" +msgstr "Deletar seleção" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +msgid "Delete All" +msgstr "Deletar todos" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +msgid "Copy to clipboard" +msgstr "Copiar para a área de transferência" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 +msgid "Paste from clipboard" +msgstr "Colar da área de transferência" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +msgid "Gizmo move" +msgstr "Gizmo-Mover" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 +msgid "Gizmo scale" +msgstr "Gizmo-Escala" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +msgid "Gizmo rotate" +msgstr "Gizmo-Rotacionar" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 +msgid "Gizmo cut" +msgstr "Gizmo-Cortar" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 +msgid "Gizmo Place face on bed" +msgstr "Colocar face do Gizmo na mesa" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 +msgid "Gizmo SLA support points" +msgstr "Pontos de suporte do Gizmo SLA" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:150 +#, c-format +msgid "" +"Press to activate selection rectangle\n" +"or to snap by 5% in Gizmo scale\n" +"or to snap by 1mm in Gizmo move" +msgstr "" +"Pressione para ativar o retângulo de seleção\n" +"ou para encaixar em 5% i na escala Gizmo\n" +"ou para encaixar por 1mm em Gizmo mover" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +msgid "" +"Press to scale selection to fit print volume\n" +"in Gizmo scale" +msgstr "" +"Pressione para dimensionar a seleção ao volume de impressão\n" +"na escala Gizmo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:152 +msgid "" +"Press to activate deselection rectangle\n" +"or to scale or rotate selected objects\n" +"around their own center" +msgstr "" +"Pressione para ativar o retângulo de deseleção\n" +"ou para dimensionar ou girar objetos selecionados\n" +"em torno de seu próprio centro" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 +msgid "Press to activate one direction scaling in Gizmo scale" +msgstr "Pressione para ativar um dimensionamento de direção na escala Gizmo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +msgid "Change camera type (perspective, orthographic)" +msgstr "Alterar tipo de câmera (perspectiva, ortográfica)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +msgid "Zoom to Bed" +msgstr "Ampliar para a mesa" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +msgid "Zoom to all objects in scene, if none selected" +msgstr "Ampliar para todos os objetos na cena, se nenhum selecionado" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 +msgid "Zoom to selected object" +msgstr "Ampliar para o objeto selecionado" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +msgid "Zoom in" +msgstr "Ampliar" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +msgid "Zoom out" +msgstr "Dimiuir" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +msgid "Unselect gizmo / Clear selection" +msgstr "Desmarcar Gizmo/limpar seleção" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +msgid "Plater Shortcuts" +msgstr "Atalhos do prato" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:193 +msgid "Arrow Up" +msgstr "Seta para cima" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +msgid "Upper Layer" +msgstr "Camada superior" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:194 +msgid "Arrow Down" +msgstr "Seta para baixo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +msgid "Lower Layer" +msgstr "Camada inferior" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +msgid "Show/Hide (L)egend" +msgstr "Mostrar/ocultar (L) egenda" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:187 +msgid "Preview Shortcuts" +msgstr "Atalhos de visualização" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:193 +msgid "Move current slider thumb Up" +msgstr "Mover a barra de rolagem para cima" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:194 +msgid "Move current slider thumb Down" +msgstr "Mover a barra de rolagem para baixo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 +msgid "Arrow Left" +msgstr "Seta esquerda" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 +msgid "Set upper thumb to current slider thumb" +msgstr "Definir o polegar superior para o polegar deslizante atual" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 +msgid "Arrow Right" +msgstr "Seta direita" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 +msgid "Set lower thumb to current slider thumb" +msgstr "Definir o polegar inferior para o polegar deslizante atual" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "Add color change marker for current layer" +msgstr "Adicionar mudança de cor para a camada atual" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Delete color change marker for current layer" +msgstr "Excluir mudança de cor para a camada atual" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Layers Slider Shortcuts" +msgstr "Atalhos da barra de rolagem de camadas" + +#: src/slic3r/GUI/MainFrame.cpp:64 +msgid "" +" - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/" +"releases" +msgstr "" +" - Lembre-se de verificar por atualizações em http://github.com/prusa3d/" +"PrusaSlicer/releases" + +#: src/slic3r/GUI/MainFrame.cpp:159 +msgid "based on Slic3r" +msgstr "baseado no Slic3r" + +#: src/slic3r/GUI/MainFrame.cpp:189 +msgid "Plater" +msgstr "Prato" + +#: src/slic3r/GUI/MainFrame.cpp:400 +msgid "&New Project" +msgstr "&Novo projeto" + +#: src/slic3r/GUI/MainFrame.cpp:400 +msgid "Start a new project" +msgstr "Começar um novo projeto" + +#: src/slic3r/GUI/MainFrame.cpp:403 +msgid "&Open Project" +msgstr "&Abrir projeto" + +#: src/slic3r/GUI/MainFrame.cpp:403 +msgid "Open a project file" +msgstr "Abrir novo projeto" + +#: src/slic3r/GUI/MainFrame.cpp:408 +msgid "Recent projects" +msgstr "Projetos recentes" + +#: src/slic3r/GUI/MainFrame.cpp:417 +msgid "The selected project is no more available" +msgstr "O projeto selecionado não está mais disponível" + +#: src/slic3r/GUI/MainFrame.cpp:417 src/slic3r/GUI/MainFrame.cpp:755 +#: src/slic3r/GUI/PrintHostDialogs.cpp:231 +msgid "Error" +msgstr "Erro" + +#: src/slic3r/GUI/MainFrame.cpp:441 +msgid "&Save Project" +msgstr "&Salvar projeto" + +#: src/slic3r/GUI/MainFrame.cpp:441 +msgid "Save current project file" +msgstr "Salvar arquivo" + +#: src/slic3r/GUI/MainFrame.cpp:445 src/slic3r/GUI/MainFrame.cpp:447 +msgid "Save Project &as" +msgstr "Salvar projeto &como" + +#: src/slic3r/GUI/MainFrame.cpp:445 src/slic3r/GUI/MainFrame.cpp:447 +msgid "Save current project file as" +msgstr "Salvar arquivo atual como" + +#: src/slic3r/GUI/MainFrame.cpp:455 +msgid "Import STL/OBJ/AM&F/3MF" +msgstr "Import STL/OBJ/AM&F/3MF" + +#: src/slic3r/GUI/MainFrame.cpp:455 +msgid "Load a model" +msgstr "Carregar um modelo" + +#: src/slic3r/GUI/MainFrame.cpp:459 +msgid "Import &Config" +msgstr "Importar &config." + +#: src/slic3r/GUI/MainFrame.cpp:459 +msgid "Load exported configuration file" +msgstr "Carregar config. de arquivo exportado" + +#: src/slic3r/GUI/MainFrame.cpp:461 +msgid "Import Config from &project" +msgstr "Importar Config do &projeto" + +#: src/slic3r/GUI/MainFrame.cpp:461 +msgid "Load configuration from project file" +msgstr "Carregar config. de arquivo de projeto" + +#: src/slic3r/GUI/MainFrame.cpp:464 +msgid "Import Config &Bundle" +msgstr "Importar coleção &de config." + +#: src/slic3r/GUI/MainFrame.cpp:464 +msgid "Load presets from a bundle" +msgstr "Carregar predefinições de um pacote" + +#: src/slic3r/GUI/MainFrame.cpp:466 +msgid "&Import" +msgstr "&Importar" + +#: src/slic3r/GUI/MainFrame.cpp:469 src/slic3r/GUI/MainFrame.cpp:719 +msgid "Export &G-code" +msgstr "Exportar &G-code" + +#: src/slic3r/GUI/MainFrame.cpp:469 +msgid "Export current plate as G-code" +msgstr "Exporte o prato atual como o G-code" + +#: src/slic3r/GUI/MainFrame.cpp:473 src/slic3r/GUI/MainFrame.cpp:720 +msgid "S&end G-code" +msgstr "E&nviar G-code" + +#: src/slic3r/GUI/MainFrame.cpp:473 +msgid "Send to print current plate as G-code" +msgstr "Enviar para imprimir prato atual como G-code" + +#: src/slic3r/GUI/MainFrame.cpp:478 +msgid "Export plate as &STL" +msgstr "Exportar prato como &STL" + +#: src/slic3r/GUI/MainFrame.cpp:478 +msgid "Export current plate as STL" +msgstr "Exporte o prato atual como STL" + +#: src/slic3r/GUI/MainFrame.cpp:481 +msgid "Export plate as STL &including supports" +msgstr "Exportar prato como STL &incluindo suportes" + +#: src/slic3r/GUI/MainFrame.cpp:481 +msgid "Export current plate as STL including supports" +msgstr "Exporte o prato atual como o STL que inclui suportes" + +#: src/slic3r/GUI/MainFrame.cpp:484 +msgid "Export plate as &AMF" +msgstr "Exportar prato como &AMF" + +#: src/slic3r/GUI/MainFrame.cpp:484 +msgid "Export current plate as AMF" +msgstr "Exporte o prato atual como o AMF" + +#: src/slic3r/GUI/MainFrame.cpp:488 +msgid "Export &toolpaths as OBJ" +msgstr "Exportar &percurso da ferramenta como OBJ" + +#: src/slic3r/GUI/MainFrame.cpp:488 +msgid "Export toolpaths as OBJ" +msgstr "Exportar percursos como OBJ" + +#: src/slic3r/GUI/MainFrame.cpp:492 +msgid "Export &Config" +msgstr "Exportar &config." + +#: src/slic3r/GUI/MainFrame.cpp:492 +msgid "Export current configuration to file" +msgstr "Exporte a config. atual para o arquivo" + +#: src/slic3r/GUI/MainFrame.cpp:494 +msgid "Export Config &Bundle" +msgstr "Exportar coleção &de config." + +#: src/slic3r/GUI/MainFrame.cpp:494 +msgid "Export all presets to file" +msgstr "Exporte todas as predefinições para o arquivo" + +#: src/slic3r/GUI/MainFrame.cpp:496 +msgid "&Export" +msgstr "&Exportar" + +#: src/slic3r/GUI/MainFrame.cpp:502 +msgid "Quick Slice" +msgstr "Fatiamento rápido" + +#: src/slic3r/GUI/MainFrame.cpp:502 +msgid "Slice a file into a G-code" +msgstr "Fatiar um arquivo em um G-code" + +#: src/slic3r/GUI/MainFrame.cpp:508 +msgid "Quick Slice and Save As" +msgstr "Salvamento rápido e salvar como" + +#: src/slic3r/GUI/MainFrame.cpp:508 +msgid "Slice a file into a G-code, save as" +msgstr "Fatiar um arquivo em um G-code, salvar como" + +#: src/slic3r/GUI/MainFrame.cpp:514 +msgid "Repeat Last Quick Slice" +msgstr "Repetir Último Fatiamento Rápido" + +#: src/slic3r/GUI/MainFrame.cpp:514 +msgid "Repeat last quick slice" +msgstr "Repetir último fatiamento rápido" + +#: src/slic3r/GUI/MainFrame.cpp:522 +msgid "(Re)Slice No&w" +msgstr "(Re)Fatiar ago&ra" + +#: src/slic3r/GUI/MainFrame.cpp:522 +msgid "Start new slicing process" +msgstr "Começar novo processo de fatiamento" + +#: src/slic3r/GUI/MainFrame.cpp:526 +msgid "&Repair STL file" +msgstr "&Reparar arquivo STL" + +#: src/slic3r/GUI/MainFrame.cpp:526 +msgid "Automatically repair an STL file" +msgstr "Reparar automaticamente um arquivo STL" + +#: src/slic3r/GUI/MainFrame.cpp:529 +msgid "&Quit" +msgstr "&Sair" + +#: src/slic3r/GUI/MainFrame.cpp:529 +#, c-format +msgid "Quit %s" +msgstr "Sair %s" + +#: src/slic3r/GUI/MainFrame.cpp:554 +msgid "&Select all" +msgstr "&Selecionar todos" + +#: src/slic3r/GUI/MainFrame.cpp:555 +msgid "Selects all objects" +msgstr "Selecionar todos os objetos" + +#: src/slic3r/GUI/MainFrame.cpp:557 +msgid "D&eselect all" +msgstr "D&eselecionar todos" + +#: src/slic3r/GUI/MainFrame.cpp:558 +msgid "Deselects all objects" +msgstr "Deselecionar todos os objetos" + +#: src/slic3r/GUI/MainFrame.cpp:561 +msgid "&Delete selected" +msgstr "&Excluir seleção" + +#: src/slic3r/GUI/MainFrame.cpp:562 +msgid "Deletes the current selection" +msgstr "Excluir a seleção atual" + +#: src/slic3r/GUI/MainFrame.cpp:564 +msgid "Delete &all" +msgstr "Excluir &todos" + +#: src/slic3r/GUI/MainFrame.cpp:565 +msgid "Deletes all objects" +msgstr "Excluir todos os objetos" + +#: src/slic3r/GUI/MainFrame.cpp:569 +msgid "&Undo" +msgstr "&Desfazer" + +#: src/slic3r/GUI/MainFrame.cpp:572 +msgid "&Redo" +msgstr "&Refazer" + +#: src/slic3r/GUI/MainFrame.cpp:577 +msgid "&Copy" +msgstr "&Copiar" + +#: src/slic3r/GUI/MainFrame.cpp:578 +msgid "Copy selection to clipboard" +msgstr "Copiar seleção para a área de transferência" + +#: src/slic3r/GUI/MainFrame.cpp:580 +msgid "&Paste" +msgstr "&Colar" + +#: src/slic3r/GUI/MainFrame.cpp:581 +msgid "Paste clipboard" +msgstr "Colar área de transferência" + +#: src/slic3r/GUI/MainFrame.cpp:590 +msgid "&Plater Tab" +msgstr "&Prato" + +#: src/slic3r/GUI/MainFrame.cpp:590 +msgid "Show the plater" +msgstr "Mostrar o prato" + +#: src/slic3r/GUI/MainFrame.cpp:597 +msgid "P&rint Settings Tab" +msgstr "C&onfig. de impressão" + +#: src/slic3r/GUI/MainFrame.cpp:597 +msgid "Show the print settings" +msgstr "Mostrar as config. de impressão" + +#: src/slic3r/GUI/MainFrame.cpp:599 src/slic3r/GUI/MainFrame.cpp:722 +msgid "&Filament Settings Tab" +msgstr "&config. de filamentos" + +#: src/slic3r/GUI/MainFrame.cpp:599 +msgid "Show the filament settings" +msgstr "Mostrar as config. de filamento" + +#: src/slic3r/GUI/MainFrame.cpp:602 +msgid "Print&er Settings Tab" +msgstr "A&ba de config. da impressora" + +#: src/slic3r/GUI/MainFrame.cpp:602 +msgid "Show the printer settings" +msgstr "Mostrar as config. da impressora" + +#: src/slic3r/GUI/MainFrame.cpp:606 +msgid "3&D" +msgstr "3&D" + +#: src/slic3r/GUI/MainFrame.cpp:606 +msgid "Show the 3D editing view" +msgstr "Mostrar a vista de edição 3D" + +#: src/slic3r/GUI/MainFrame.cpp:609 +msgid "Pre&view" +msgstr "Pre&visualização" + +#: src/slic3r/GUI/MainFrame.cpp:609 +msgid "Show the 3D slices preview" +msgstr "Mostrar a pré-visualização do fatiamento 3D" + +#: src/slic3r/GUI/MainFrame.cpp:628 +msgid "Print &Host Upload Queue" +msgstr "Imprimir &Fila de upload do Host" + +#: src/slic3r/GUI/MainFrame.cpp:628 +msgid "Display the Print Host Upload Queue window" +msgstr "Exibir a janela fila de upload do host de impressão" + +#: src/slic3r/GUI/MainFrame.cpp:637 +msgid "Iso" +msgstr "Isométrico" + +#: src/slic3r/GUI/MainFrame.cpp:637 +msgid "Iso View" +msgstr "Vista isométrica" + +#. TRN To be shown in the main menu View->Top +#. TRN To be shown in Print Settings "Top solid layers" +#: src/slic3r/GUI/MainFrame.cpp:641 src/libslic3r/PrintConfig.cpp:2094 +msgid "Top" +msgstr "Topo" + +#: src/slic3r/GUI/MainFrame.cpp:641 +msgid "Top View" +msgstr "Vista do topo" + +#. TRN To be shown in the main menu View->Bottom +#. TRN To be shown in Print Settings "Bottom solid layers" +#: src/slic3r/GUI/MainFrame.cpp:644 src/libslic3r/PrintConfig.cpp:159 +msgid "Bottom" +msgstr "Base" + +#: src/slic3r/GUI/MainFrame.cpp:644 +msgid "Bottom View" +msgstr "Vista da base" + +#: src/slic3r/GUI/MainFrame.cpp:646 +msgid "Front" +msgstr "Frente" + +#: src/slic3r/GUI/MainFrame.cpp:646 +msgid "Front View" +msgstr "Vista da frente" + +#: src/slic3r/GUI/MainFrame.cpp:648 src/libslic3r/PrintConfig.cpp:1611 +msgid "Rear" +msgstr "Traseira" + +#: src/slic3r/GUI/MainFrame.cpp:648 +msgid "Rear View" +msgstr "Vista traseira" + +#: src/slic3r/GUI/MainFrame.cpp:650 +msgid "Left" +msgstr "Esquerda" + +#: src/slic3r/GUI/MainFrame.cpp:650 +msgid "Left View" +msgstr "Vista esquerda" + +#: src/slic3r/GUI/MainFrame.cpp:652 +msgid "Right" +msgstr "Direita" + +#: src/slic3r/GUI/MainFrame.cpp:652 +msgid "Right View" +msgstr "Vista direita" + +#: src/slic3r/GUI/MainFrame.cpp:659 +msgid "Prusa 3D &Drivers" +msgstr "Drivers 3D &Prusa" + +#: src/slic3r/GUI/MainFrame.cpp:659 +msgid "Open the Prusa3D drivers download page in your browser" +msgstr "Abrir a página para baixar os drivers da Prusa3D no seu navegador" + +#: src/slic3r/GUI/MainFrame.cpp:661 +msgid "Software &Releases" +msgstr "Lançamentos de &software" + +#: src/slic3r/GUI/MainFrame.cpp:661 +msgid "Open the software releases page in your browser" +msgstr "Abrir a página de lançamentos de software no seu navegador" + +#: src/slic3r/GUI/MainFrame.cpp:667 +#, c-format +msgid "%s &Website" +msgstr "%s &Site" + +#: src/slic3r/GUI/MainFrame.cpp:668 +#, c-format +msgid "Open the %s website in your browser" +msgstr "Abra o site do %s no seu navegador" + +#: src/slic3r/GUI/MainFrame.cpp:674 +msgid "System &Info" +msgstr "Informação &do sistema" + +#: src/slic3r/GUI/MainFrame.cpp:674 +msgid "Show system information" +msgstr "Mostrar a informação do sistema" + +#: src/slic3r/GUI/MainFrame.cpp:676 +msgid "Show &Configuration Folder" +msgstr "Mostrar &pasta de config." + +#: src/slic3r/GUI/MainFrame.cpp:676 +msgid "Show user configuration folder (datadir)" +msgstr "Mostrar pasta de config. do usuário (datadir)" + +#: src/slic3r/GUI/MainFrame.cpp:678 +msgid "Report an I&ssue" +msgstr "Reportar um p&roblema" + +#: src/slic3r/GUI/MainFrame.cpp:678 +#, c-format +msgid "Report an issue on %s" +msgstr "Relatar um problema em %s" + +#: src/slic3r/GUI/MainFrame.cpp:680 +#, c-format +msgid "&About %s" +msgstr "&Sobre %s" + +#: src/slic3r/GUI/MainFrame.cpp:680 +msgid "Show about dialog" +msgstr "Mostrar diálogo sobre" + +#: src/slic3r/GUI/MainFrame.cpp:683 +msgid "Show the list of the keyboard shortcuts" +msgstr "Mostrar lista dos atalhos no teclado" + +#: src/slic3r/GUI/MainFrame.cpp:691 +msgid "&File" +msgstr "&Arquivo" + +#: src/slic3r/GUI/MainFrame.cpp:692 +msgid "&Edit" +msgstr "&Editar" + +#: src/slic3r/GUI/MainFrame.cpp:693 +msgid "&Window" +msgstr "&Janela" + +#: src/slic3r/GUI/MainFrame.cpp:694 +msgid "&View" +msgstr "&Vista" + +#: src/slic3r/GUI/MainFrame.cpp:697 +msgid "&Help" +msgstr "&Ajuda" + +#: src/slic3r/GUI/MainFrame.cpp:719 +msgid "E&xport" +msgstr "E&xportar" + +#: src/slic3r/GUI/MainFrame.cpp:720 +msgid "S&end to print" +msgstr "E&nviar para impressora" + +#: src/slic3r/GUI/MainFrame.cpp:722 +msgid "Mate&rial Settings Tab" +msgstr "A&ba de config. de material" + +#: src/slic3r/GUI/MainFrame.cpp:743 +msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "Escolha um arquivo para fatiar (STL/OBJ/AMF/3MF/PRUSA):" + +#: src/slic3r/GUI/MainFrame.cpp:754 +msgid "No previously sliced file." +msgstr "Sem arquivo fatiado anteriormente." + +#: src/slic3r/GUI/MainFrame.cpp:760 +msgid "Previously sliced file (" +msgstr "Arquivo fatiado anteriormente (" + +#: src/slic3r/GUI/MainFrame.cpp:760 +msgid ") not found." +msgstr ") não encontrado." + +#: src/slic3r/GUI/MainFrame.cpp:761 +msgid "File Not Found" +msgstr "Arquivo não encontrado" + +#: src/slic3r/GUI/MainFrame.cpp:796 +#, c-format +msgid "Save %s file as:" +msgstr "Salve o arquivo %s como:" + +#: src/slic3r/GUI/MainFrame.cpp:796 +msgid "SVG" +msgstr "SVG" + +#: src/slic3r/GUI/MainFrame.cpp:796 +msgid "G-code" +msgstr "G-code" + +#: src/slic3r/GUI/MainFrame.cpp:808 +msgid "Save zip file as:" +msgstr "Salvar arquivo compactado(zip) como:" + +#: src/slic3r/GUI/MainFrame.cpp:817 src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:4533 src/slic3r/GUI/Tab.cpp:1194 +#: src/slic3r/GUI/Tab.cpp:3786 +msgid "Slicing" +msgstr "Fatiamento" + +#. TRN "Processing input_file_basename" +#: src/slic3r/GUI/MainFrame.cpp:819 +#, c-format +msgid "Processing %s" +msgstr "Processando %s" + +#: src/slic3r/GUI/MainFrame.cpp:842 +msgid " was successfully sliced." +msgstr " foi fatiado com sucesso." + +#: src/slic3r/GUI/MainFrame.cpp:844 +msgid "Slicing Done!" +msgstr "Fatiamento completo!" + +#: src/slic3r/GUI/MainFrame.cpp:859 +msgid "Select the STL file to repair:" +msgstr "Selecione o arquivo STL para corrigir:" + +#: src/slic3r/GUI/MainFrame.cpp:869 +msgid "Save OBJ file (less prone to coordinate errors than STL) as:" +msgstr "" +"Salvar arquivo OBJ (menos propenso a erros de coordenada que STL) como:" + +#: src/slic3r/GUI/MainFrame.cpp:881 +msgid "Your file was repaired." +msgstr "Seu arquivo foi corrigido." + +#: src/slic3r/GUI/MainFrame.cpp:881 src/libslic3r/PrintConfig.cpp:3257 +msgid "Repair" +msgstr "Corrigir" + +#: src/slic3r/GUI/MainFrame.cpp:895 +msgid "Save configuration as:" +msgstr "Salvar config. como:" + +#: src/slic3r/GUI/MainFrame.cpp:914 src/slic3r/GUI/MainFrame.cpp:976 +msgid "Select configuration to load:" +msgstr "Selecionar config. para carregar:" + +#: src/slic3r/GUI/MainFrame.cpp:950 +msgid "Save presets bundle as:" +msgstr "Salvar pacote de predefinições como:" + +#: src/slic3r/GUI/MainFrame.cpp:997 +#, c-format +msgid "%d presets successfully imported." +msgstr "%d predefinições importadas com êxito." + +#: src/slic3r/GUI/MsgDialog.cpp:73 +#, c-format +msgid "%s error" +msgstr "%s erro" + +#: src/slic3r/GUI/MsgDialog.cpp:74 +#, c-format +msgid "%s has encountered an error" +msgstr "%s encontrou um erro" + +#: src/slic3r/GUI/OptionsGroup.cpp:249 +msgctxt "Layers" +msgid "Top" +msgstr "Topo" + +#: src/slic3r/GUI/OptionsGroup.cpp:249 +msgctxt "Layers" +msgid "Bottom" +msgstr "Base" + +#: src/slic3r/GUI/Plater.cpp:146 +msgid "Volume" +msgstr "Volume" + +#: src/slic3r/GUI/Plater.cpp:147 +msgid "Facets" +msgstr "Facetas" + +#: src/slic3r/GUI/Plater.cpp:148 +msgid "Materials" +msgstr "Materiais" + +#: src/slic3r/GUI/Plater.cpp:151 +msgid "Manifold" +msgstr "Múltiplo" + +#: src/slic3r/GUI/Plater.cpp:201 +msgid "Sliced Info" +msgstr "Informações fatiadas" + +#: src/slic3r/GUI/Plater.cpp:220 src/slic3r/GUI/Plater.cpp:1150 +msgid "Used Filament (m)" +msgstr "Filamento utilizado (m)" + +#: src/slic3r/GUI/Plater.cpp:221 +msgid "Used Filament (mm³)" +msgstr "Filamento utilizado (mm³)" + +#: src/slic3r/GUI/Plater.cpp:222 +msgid "Used Filament (g)" +msgstr "Filamento utilizado (g)" + +#: src/slic3r/GUI/Plater.cpp:223 +msgid "Used Material (unit)" +msgstr "Material utilizado (unidade)" + +#: src/slic3r/GUI/Plater.cpp:224 src/slic3r/GUI/Plater.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:742 +msgid "Cost" +msgstr "Custo" + +#: src/slic3r/GUI/Plater.cpp:225 src/slic3r/GUI/Plater.cpp:1137 +#: src/slic3r/GUI/Plater.cpp:1179 +msgid "Estimated printing time" +msgstr "Tempo estimado de impressão" + +#: src/slic3r/GUI/Plater.cpp:226 +msgid "Number of tool changes" +msgstr "Número de mudanças de ferramenta" + +#: src/slic3r/GUI/Plater.cpp:316 +msgid "Click to edit preset" +msgstr "Clique para editar a predefinição" + +#: src/slic3r/GUI/Plater.cpp:468 +msgid "Select what kind of support do you need" +msgstr "Selecione o tipo de suporte que você precisa" + +#: src/slic3r/GUI/Plater.cpp:470 src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2561 +msgid "Support on build plate only" +msgstr "Suportes somente na mesa de impressão" + +#: src/slic3r/GUI/Plater.cpp:471 src/slic3r/GUI/Plater.cpp:592 +msgid "For support enforcers only" +msgstr "Para apenas reforçadores de suporte" + +#: src/slic3r/GUI/Plater.cpp:472 +msgid "Everywhere" +msgstr "Em toda parte" + +#: src/slic3r/GUI/Plater.cpp:504 src/slic3r/GUI/Tab.cpp:1091 +msgid "Brim" +msgstr "Aba" + +#: src/slic3r/GUI/Plater.cpp:506 +msgid "" +"This flag enables the brim that will be printed around each object on the " +"first layer." +msgstr "" +"Este sinalizador permite que a aba que será impressa em torno de cada objeto " +"na primeira camada." + +#: src/slic3r/GUI/Plater.cpp:514 +msgid "Purging volumes" +msgstr "Volumes de purga" + +#: src/slic3r/GUI/Plater.cpp:606 +msgid "Select what kind of pad do you need" +msgstr "Selecione o tipo de bloco que você precisa" + +#: src/slic3r/GUI/Plater.cpp:608 +msgid "Below object" +msgstr "Abaixo do objeto" + +#: src/slic3r/GUI/Plater.cpp:609 +msgid "Around object" +msgstr "Em torno do objeto" + +#: src/slic3r/GUI/Plater.cpp:781 +msgid "Print settings" +msgstr "Config. de impressão" + +#: src/slic3r/GUI/Plater.cpp:782 src/slic3r/GUI/Tab.cpp:1640 +#: src/slic3r/GUI/Tab.cpp:1641 +msgid "Filament" +msgstr "Filamento" + +#: src/slic3r/GUI/Plater.cpp:783 +msgid "SLA print settings" +msgstr "Config. de impressão de SLA" + +#: src/slic3r/GUI/Plater.cpp:784 src/slic3r/GUI/Preset.cpp:1314 +msgid "SLA material" +msgstr "Material de SLA" + +#: src/slic3r/GUI/Plater.cpp:785 +msgid "Printer" +msgstr "Impressora" + +#: src/slic3r/GUI/Plater.cpp:835 src/slic3r/GUI/Plater.cpp:4823 +msgid "Send to printer" +msgstr "Enviar para a impressora" + +#: src/slic3r/GUI/Plater.cpp:838 src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:4536 +msgid "Slice now" +msgstr "Fatiar agora" + +#: src/slic3r/GUI/Plater.cpp:978 +msgid "Hold Shift to Slice & Export G-code" +msgstr "Hold Shift to Slice & Export G-code" + +#: src/slic3r/GUI/Plater.cpp:1083 +#, c-format +msgid "%d (%d shells)" +msgstr "%d (%d paredes)" + +#: src/slic3r/GUI/Plater.cpp:1088 +#, c-format +msgid "Auto-repaired (%d errors)" +msgstr "Auto reparando (%d erros):" + +#: src/slic3r/GUI/Plater.cpp:1091 +#, c-format +msgid "" +"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " +"facets reversed, %d backwards edges" +msgstr "" +"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " +"facets reversed, %d backwards edges" + +#: src/slic3r/GUI/Plater.cpp:1101 +msgid "Yes" +msgstr "Sim" + +#: src/slic3r/GUI/Plater.cpp:1124 +msgid "Used Material (ml)" +msgstr "Material usado (ml)" + +#: src/slic3r/GUI/Plater.cpp:1127 +msgid "object(s)" +msgstr "objeto(s)" + +#: src/slic3r/GUI/Plater.cpp:1127 +msgid "supports and pad" +msgstr "suportes e bloco" + +#: src/slic3r/GUI/Plater.cpp:1152 src/slic3r/GUI/Plater.cpp:1167 +msgid "objects" +msgstr "objetos" + +#: src/slic3r/GUI/Plater.cpp:1152 src/slic3r/GUI/Plater.cpp:1167 +msgid "wipe tower" +msgstr "torre de limpeza" + +#: src/slic3r/GUI/Plater.cpp:1182 +msgid "normal mode" +msgstr "modo normal" + +#: src/slic3r/GUI/Plater.cpp:1186 src/slic3r/GUI/Plater.cpp:1195 +#: src/libslic3r/PrintConfig.cpp:565 +msgid "Color" +msgstr "Cor" + +#: src/slic3r/GUI/Plater.cpp:1191 +msgid "stealth mode" +msgstr "modo silencioso" + +#: src/slic3r/GUI/Plater.cpp:1286 +msgid "Load File" +msgstr "Carregar arquivo" + +#: src/slic3r/GUI/Plater.cpp:1290 +msgid "Load Files" +msgstr "Carregar arquivos" + +#: src/slic3r/GUI/Plater.cpp:1519 +msgid "ERROR: not enough resources to execute a new job." +msgstr "ERRO: não há recursos suficientes para executar um novo trabalho." + +#: src/slic3r/GUI/Plater.cpp:2089 +msgid "New Project" +msgstr "Novo projeto" + +#: src/slic3r/GUI/Plater.cpp:2206 +msgid "Loading" +msgstr "Carregando" + +#: src/slic3r/GUI/Plater.cpp:2216 +#, c-format +msgid "Processing input file %s\n" +msgstr "Processando o arquivo de entrada %s\n" + +#: src/slic3r/GUI/Plater.cpp:2244 +msgid "" +"You can't load SLA project if there is at least one multi-part object on the " +"bed" +msgstr "" +"Não é possível carregar o projeto de SLA se houver pelo menos um objeto de " +"várias partes na mesa" + +#: src/slic3r/GUI/Plater.cpp:2245 src/slic3r/GUI/Tab.cpp:3146 +msgid "Please check your object list before preset changing." +msgstr "Verifique a lista de objetos antes de alterar a predefinição." + +#: src/slic3r/GUI/Plater.cpp:2288 +msgid "" +"This file contains several objects positioned at multiple heights. Instead " +"of considering them as multiple objects, should I consider\n" +"this file as a single object having multiple parts?\n" +msgstr "" +"Este arquivo contém vários objetos posicionados em várias alturas. Em vez de " +"considerá-los como múltiplos objetos, devo considerar\n" +"Este arquivo como um único objeto com várias partes?\n" + +#: src/slic3r/GUI/Plater.cpp:2291 src/slic3r/GUI/Plater.cpp:2343 +msgid "Multi-part object detected" +msgstr "Objeto de várias partes detectado" + +#: src/slic3r/GUI/Plater.cpp:2298 +msgid "" +"This file cannot be loaded in a simple mode. Do you want to switch to an " +"advanced mode?\n" +msgstr "" +"Este arquivo não pode ser carregado em um modo simples. Deseja mudar para um " +"modo avançado?\n" + +#: src/slic3r/GUI/Plater.cpp:2299 +msgid "Detected advanced data" +msgstr "Dados avançados detectados" + +#: src/slic3r/GUI/Plater.cpp:2320 +#, c-format +msgid "" +"You can't to add the object(s) from %s because of one or some of them " +"is(are) multi-part" +msgstr "" +"Você não pode adicionar o objeto (s) %s por causa de um ou alguns deles é " +"(são) de várias partes" + +#: src/slic3r/GUI/Plater.cpp:2340 +msgid "" +"Multiple objects were loaded for a multi-material printer.\n" +"Instead of considering them as multiple objects, should I consider\n" +"these files to represent a single object having multiple parts?\n" +msgstr "" +"Vários objetos foram carregados para uma impressora de vários materiais.\n" +"Em vez de considerá-los como múltiplos objetos, devo considerar\n" +"esses arquivos para representar um único objeto com várias partes?\n" + +#: src/slic3r/GUI/Plater.cpp:2356 +msgid "Loaded" +msgstr "Carregado" + +#: src/slic3r/GUI/Plater.cpp:2458 +msgid "" +"Your object appears to be too large, so it was automatically scaled down to " +"fit your print bed." +msgstr "" +"Seu objeto parece ser muito grande, por isso foi automaticamente " +"dimensionado para baixo para caber sua mesa de impressão." + +#: src/slic3r/GUI/Plater.cpp:2459 +msgid "Object too large?" +msgstr "Objeto muito grande?" + +#: src/slic3r/GUI/Plater.cpp:2517 +msgid "Export STL file:" +msgstr "Exportar arquivo STL:" + +#: src/slic3r/GUI/Plater.cpp:2524 +msgid "Export AMF file:" +msgstr "Exportar arquivo AMF:" + +#: src/slic3r/GUI/Plater.cpp:2530 +msgid "Save file as:" +msgstr "Salvar arquivo como:" + +#: src/slic3r/GUI/Plater.cpp:2536 +msgid "Export OBJ file:" +msgstr "Exportar arquivo OBJ:" + +#: src/slic3r/GUI/Plater.cpp:2638 +msgid "Delete Object" +msgstr "Excluir objeto" + +#: src/slic3r/GUI/Plater.cpp:2649 +msgid "Reset Project" +msgstr "Redefinir projeto" + +#: src/slic3r/GUI/Plater.cpp:2688 +msgid "Optimize Rotation" +msgstr "Otimize a rotação" + +#: src/slic3r/GUI/Plater.cpp:2734 +msgid "Arranging" +msgstr "Organizar" + +#: src/slic3r/GUI/Plater.cpp:2757 +msgid "Could not arrange model objects! Some geometries may be invalid." +msgstr "" +"Não foi possível organizar objetos de modelo! Algumas geometrias podem ser " +"inválidas." + +#: src/slic3r/GUI/Plater.cpp:2763 +msgid "Arranging canceled." +msgstr "Arranjo cancelado." + +#: src/slic3r/GUI/Plater.cpp:2764 +msgid "Arranging done." +msgstr "Arranjo feito." + +#: src/slic3r/GUI/Plater.cpp:2780 +msgid "Searching for optimal orientation" +msgstr "Procurando orientação ideal" + +#: src/slic3r/GUI/Plater.cpp:2813 +msgid "Orientation search canceled." +msgstr "Pesquisa de orientação cancelada." + +#: src/slic3r/GUI/Plater.cpp:2814 +msgid "Orientation found." +msgstr "Orientação encontrada." + +#: src/slic3r/GUI/Plater.cpp:2830 +msgid "" +"The selected object can't be split because it contains more than one volume/" +"material." +msgstr "" +"O objeto selecionado não pode ser dividido porque contém mais de um volume/" +"material." + +#: src/slic3r/GUI/Plater.cpp:2841 +msgid "Split to Objects" +msgstr "Dividir em objetos" + +#: src/slic3r/GUI/Plater.cpp:2966 +msgid "Invalid data" +msgstr "Dados inválidos" + +#: src/slic3r/GUI/Plater.cpp:2975 +msgid "Ready to slice" +msgstr "Pronto para fatiar" + +#: src/slic3r/GUI/Plater.cpp:3013 src/slic3r/GUI/PrintHostDialogs.cpp:232 +msgid "Cancelling" +msgstr "Cancelar" + +#: src/slic3r/GUI/Plater.cpp:3030 +msgid "Another export job is currently running." +msgstr "Outro trabalho de exportação está em execução no momento." + +#: src/slic3r/GUI/Plater.cpp:3084 src/slic3r/GUI/Plater.cpp:3549 +msgid "Reload from Disk" +msgstr "Recarregar a partir do disco" + +#: src/slic3r/GUI/Plater.cpp:3120 +msgid "Fix Throught NetFabb" +msgstr "Arrumar através do NetFabb" + +#: src/slic3r/GUI/Plater.cpp:3307 +msgid "Export failed" +msgstr "Falha na exportação" + +#: src/slic3r/GUI/Plater.cpp:3312 src/slic3r/GUI/PrintHostDialogs.cpp:233 +msgid "Cancelled" +msgstr "Cancelado" + +#: src/slic3r/GUI/Plater.cpp:3520 src/slic3r/GUI/Plater.cpp:3539 +msgid "Remove the selected object" +msgstr "Remover o objeto selecionado" + +#: src/slic3r/GUI/Plater.cpp:3526 +msgid "Add one more instance of the selected object" +msgstr "Adicionar mais uma instância do objeto selecionado" + +#: src/slic3r/GUI/Plater.cpp:3528 +msgid "Remove one instance of the selected object" +msgstr "Remover uma instância do objeto selecionado" + +#: src/slic3r/GUI/Plater.cpp:3530 +msgid "Set number of instances" +msgstr "Definir o número de instâncias" + +#: src/slic3r/GUI/Plater.cpp:3530 +msgid "Change the number of instances of the selected object" +msgstr "Alterar o número de instâncias do objeto selecionado" + +#: src/slic3r/GUI/Plater.cpp:3549 +msgid "Reload the selected file from Disk" +msgstr "Recarregar o arquivo selecionado a partir do disco" + +#: src/slic3r/GUI/Plater.cpp:3552 +msgid "Export the selected object as STL file" +msgstr "Exportar o objeto selecionado como arquivo STL" + +#: src/slic3r/GUI/Plater.cpp:3577 +msgid "Along X axis" +msgstr "Ao longo do eixo X" + +#: src/slic3r/GUI/Plater.cpp:3577 +msgid "Mirror the selected object along the X axis" +msgstr "Espelhar o objeto selecionado ao longo do eixo X" + +#: src/slic3r/GUI/Plater.cpp:3579 +msgid "Along Y axis" +msgstr "Ao longo do eixo Y" + +#: src/slic3r/GUI/Plater.cpp:3579 +msgid "Mirror the selected object along the Y axis" +msgstr "Espelhar o objeto selecionado ao longo do eixo Y" + +#: src/slic3r/GUI/Plater.cpp:3581 +msgid "Along Z axis" +msgstr "Ao longo do eixo Z" + +#: src/slic3r/GUI/Plater.cpp:3581 +msgid "Mirror the selected object along the Z axis" +msgstr "Espelhar o objeto selecionado ao longo do eixo Z" + +#: src/slic3r/GUI/Plater.cpp:3584 +msgid "Mirror" +msgstr "Espelhar" + +#: src/slic3r/GUI/Plater.cpp:3584 +msgid "Mirror the selected object" +msgstr "Espelhar o objeto selecionado" + +#: src/slic3r/GUI/Plater.cpp:3596 +msgid "To objects" +msgstr "Para objetos" + +#: src/slic3r/GUI/Plater.cpp:3596 src/slic3r/GUI/Plater.cpp:3616 +msgid "Split the selected object into individual objects" +msgstr "Dividir o objeto selecionado em objetos individuais" + +#: src/slic3r/GUI/Plater.cpp:3598 +msgid "To parts" +msgstr "Para peças" + +#: src/slic3r/GUI/Plater.cpp:3598 src/slic3r/GUI/Plater.cpp:3630 +msgid "Split the selected object into individual sub-parts" +msgstr "Dividir o objeto selecionado em subpartes individuais" + +#: src/slic3r/GUI/Plater.cpp:3601 src/slic3r/GUI/Plater.cpp:3616 +#: src/slic3r/GUI/Plater.cpp:3630 src/libslic3r/PrintConfig.cpp:3281 +msgid "Split" +msgstr "Dividir" + +#: src/slic3r/GUI/Plater.cpp:3601 +msgid "Split the selected object" +msgstr "Dividir o objeto selecionado" + +#: src/slic3r/GUI/Plater.cpp:3622 +msgid "Optimize orientation" +msgstr "Otimize a orientação" + +#: src/slic3r/GUI/Plater.cpp:3622 +msgid "Optimize the rotation of the object for better print results." +msgstr "" +"Otimize a rotação do objeto para obter melhores resultados de impressão." + +#: src/slic3r/GUI/Plater.cpp:3662 +msgid "3D editor view" +msgstr "vista do editor 3D" + +#: src/slic3r/GUI/Plater.cpp:3670 src/slic3r/GUI/Tab.cpp:2590 +msgid "Preview" +msgstr "Visualização" + +#: src/slic3r/GUI/Plater.cpp:3907 +msgid "" +"%1% printer was active at the time the target Undo / Redo snapshot was " +"taken. Switching to %1% printer requires reloading of %1% presets." +msgstr "" +"a impressora %1% estava ativa no momento em que a captura de desfazer/" +"refazer de destino foi tirado. Mudar para %1% impressora requer recarga de " +"%1% predefinições." + +#: src/slic3r/GUI/Plater.cpp:4081 +msgid "Load Project" +msgstr "Carregar projeto" + +#: src/slic3r/GUI/Plater.cpp:4109 +msgid "Import Object" +msgstr "Importar objeto" + +#: src/slic3r/GUI/Plater.cpp:4113 +msgid "Import Objects" +msgstr "Importar objetos" + +#: src/slic3r/GUI/Plater.cpp:4172 +msgid "All objects will be removed, continue ?" +msgstr "Todos os objetos serão removidos, continuar?" + +#: src/slic3r/GUI/Plater.cpp:4180 +msgid "Delete Selected Objects" +msgstr "Excluir objetos selecionados" + +#: src/slic3r/GUI/Plater.cpp:4188 +msgid "Increase Instances" +msgstr "Aumentar instâncias" + +#: src/slic3r/GUI/Plater.cpp:4224 +msgid "Decrease Instances" +msgstr "Diminuir instâncias" + +#: src/slic3r/GUI/Plater.cpp:4260 +#, c-format +msgid "Set numbers of copies to %d" +msgstr "Definir números de cópias para %d" + +#: src/slic3r/GUI/Plater.cpp:4290 +msgid "Cut by Plane" +msgstr "Cortado por plano" + +#: src/slic3r/GUI/Plater.cpp:4322 +msgid "Save G-code file as:" +msgstr "Salve o arquivo G-code como:" + +#: src/slic3r/GUI/Plater.cpp:4322 +msgid "Save SL1 file as:" +msgstr "Salvar SL1 arquivo como:" + +#: src/slic3r/GUI/Plater.cpp:4434 +#, c-format +msgid "STL file exported to %s" +msgstr "Arquivo STL exportado para %s" + +#: src/slic3r/GUI/Plater.cpp:4450 +#, c-format +msgid "AMF file exported to %s" +msgstr "Arquivo AMF exportado para %s" + +#: src/slic3r/GUI/Plater.cpp:4453 +#, c-format +msgid "Error exporting AMF file %s" +msgstr "Erro ao exportar arquivo AMF %s" + +#: src/slic3r/GUI/Plater.cpp:4479 +#, c-format +msgid "3MF file exported to %s" +msgstr "Arquivo 3MF exportado para %s" + +#: src/slic3r/GUI/Plater.cpp:4484 +#, c-format +msgid "Error exporting 3MF file %s" +msgstr "Erro ao exportar arquivo 3MF %s" + +#: src/slic3r/GUI/Plater.cpp:4822 +msgid "Export" +msgstr "Exportar" + +#: src/slic3r/GUI/Plater.cpp:4823 +msgid "Send G-code" +msgstr "Enviar G-code" + +#: src/slic3r/GUI/Plater.cpp:4907 +msgid "Paste From Clipboard" +msgstr "Colar da área de transferência" + +#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:2242 +msgid "General" +msgstr "Geral" + +#: src/slic3r/GUI/Preferences.cpp:44 +msgid "Remember output directory" +msgstr "Lembrar diretório de saída" + +#: src/slic3r/GUI/Preferences.cpp:46 +msgid "" +"If this is enabled, Slic3r will prompt the last output directory instead of " +"the one containing the input files." +msgstr "" +"Se isso estiver habilitado, Slic3r solicitará o último diretório de saída em " +"vez de um contendo os arquivos de entrada." + +#: src/slic3r/GUI/Preferences.cpp:52 +msgid "Auto-center parts" +msgstr "Centrar automaticamente as partes" + +#: src/slic3r/GUI/Preferences.cpp:54 +msgid "" +"If this is enabled, Slic3r will auto-center objects around the print bed " +"center." +msgstr "" +"Se isso estiver habilitado, o Slic3r irá centralizar objetos automaticamente " +"ao redor do centro de mesa de impressão." + +#: src/slic3r/GUI/Preferences.cpp:60 +msgid "Background processing" +msgstr "Processamento em segundo plano" + +#: src/slic3r/GUI/Preferences.cpp:62 +msgid "" +"If this is enabled, Slic3r will pre-process objects as soon as they're " +"loaded in order to save time when exporting G-code." +msgstr "" +"Se isso estiver ativado, o Slic3r irá pré-processar objetos assim que eles " +"forem carregados para economizar tempo ao exportar o G-code." + +#: src/slic3r/GUI/Preferences.cpp:71 +msgid "" +"If enabled, PrusaSlicer will check for the new versions of itself online. " +"When a new version becomes available a notification is displayed at the next " +"application startup (never during program usage). This is only a " +"notification mechanisms, no automatic installation is done." +msgstr "" +"Se habilitado, PrusaSlicer irá verificar as novas versões de si mesmo on-" +"line. Quando uma nova versão se torna disponível, uma notificação é exibida " +"na próxima inicialização do aplicativo (nunca durante o uso do programa). " +"Este é apenas um mecanismos de notificação, nenhuma instalação automática é " +"feita." + +#: src/slic3r/GUI/Preferences.cpp:79 +msgid "" +"If enabled, Slic3r downloads updates of built-in system presets in the " +"background. These updates are downloaded into a separate temporary location. " +"When a new preset version becomes available it is offered at application " +"startup." +msgstr "" +"Se ativada, o Slic3r baixa atualizações de predefinições de sistema " +"incorporadas em segundo plano. Essas atualizações são baixadas em um local " +"temporário separado. Quando uma nova versão predefinida se torna disponível, " +"ela é oferecida na inicialização do aplicativo." + +#: src/slic3r/GUI/Preferences.cpp:84 +msgid "Suppress \" - default - \" presets" +msgstr "Suprimir predefinições \"-padrão-\"" + +#: src/slic3r/GUI/Preferences.cpp:86 +msgid "" +"Suppress \" - default - \" presets in the Print / Filament / Printer " +"selections once there are any other valid presets available." +msgstr "" +"Suprimir predefinições \"-padrão-\" em impressão/filamento/impressora, uma " +"vez que existam outras predefinições válidas disponíveis." + +#: src/slic3r/GUI/Preferences.cpp:92 +msgid "Show incompatible print and filament presets" +msgstr "Mostrar predefinições de impressão e filamento incompatíveis" + +#: src/slic3r/GUI/Preferences.cpp:94 +msgid "" +"When checked, the print and filament presets are shown in the preset editor " +"even if they are marked as incompatible with the active printer" +msgstr "" +"Quando marcada, as predefinições de impressão e filamento são mostradas no " +"editor de predefinições, mesmo que estejam marcadas como incompatíveis com a " +"impressora ativa" + +#: src/slic3r/GUI/Preferences.cpp:101 +msgid "Use Retina resolution for the 3D scene" +msgstr "Usar a resolução retina para a cena 3D" + +#: src/slic3r/GUI/Preferences.cpp:103 +msgid "" +"If enabled, the 3D scene will be rendered in Retina resolution. If you are " +"experiencing 3D performance problems, disabling this option may help." +msgstr "" +"Se ativada, a cena 3D será renderizada na resolução retina. Se você estiver " +"enfrentando problemas de desempenho 3D, desabilitar essa opção pode ajudar." + +#: src/slic3r/GUI/Preferences.cpp:110 +msgid "Use perspective camera" +msgstr "Usar a câmera em perspectiva" + +#: src/slic3r/GUI/Preferences.cpp:112 +msgid "" +"If enabled, use perspective camera. If not enabled, use orthographic camera." +msgstr "" +"Se ativada, use a câmera em perspectiva. Se não estiver ativada, use a " +"câmera ortográfica." + +#: src/slic3r/GUI/Preferences.cpp:117 +msgid "Use custom size for toolbar icons" +msgstr "Usar tamanho personalizado para ícones da barra de ferramentas" + +#: src/slic3r/GUI/Preferences.cpp:119 +msgid "If enabled, you can change size of toolbar icons manually." +msgstr "" +"Se ativado, você pode alterar o tamanho dos ícones da barra de ferramentas " +"manualmente." + +#: src/slic3r/GUI/Preferences.cpp:144 +#, c-format +msgid "You need to restart %s to make the changes effective." +msgstr "Você precisa reiniciar %s para tornar as alterações efetivas." + +#: src/slic3r/GUI/Preferences.cpp:192 +msgid "Icon size in a respect to the default size" +msgstr "Tamanho do ícone em relação ao tamanho padrão" + +#: src/slic3r/GUI/Preferences.cpp:207 +msgid "Select toolbar icon size in respect to the default one." +msgstr "" +"Selecione o tamanho do ícone da barra de ferramentas em relação ao padrão." + +#: src/slic3r/GUI/Preset.cpp:212 +msgid "modified" +msgstr "modificado" + +#: src/slic3r/GUI/Preset.cpp:967 src/slic3r/GUI/Preset.cpp:1007 +#: src/slic3r/GUI/Preset.cpp:1072 src/slic3r/GUI/Preset.cpp:1104 +#: src/slic3r/GUI/PresetBundle.cpp:1484 src/slic3r/GUI/PresetBundle.cpp:1559 +msgid "System presets" +msgstr "Predefinições do sistema" + +#: src/slic3r/GUI/Preset.cpp:1011 src/slic3r/GUI/Preset.cpp:1108 +#: src/slic3r/GUI/PresetBundle.cpp:1564 +msgid "User presets" +msgstr "Predefinições do usuário" + +#: src/slic3r/GUI/Preset.cpp:1040 src/slic3r/GUI/Tab.cpp:243 +msgid "Add a new printer" +msgstr "Adicionar uma nova impressora" + +#: src/slic3r/GUI/Preset.cpp:1312 +msgid "filament" +msgstr "filamento" + +#: src/slic3r/GUI/Preset.cpp:1313 +msgid "SLA print" +msgstr "Impressão de SLA" + +#: src/slic3r/GUI/PresetHints.cpp:28 +msgid "" +"If estimated layer time is below ~%1%s, fan will run at %2%%% and print " +"speed will be reduced so that no less than %3%s are spent on that layer " +"(however, speed will never be reduced below %4%mm/s)." +msgstr "" +"Se o tempo estimado da camada estiver abaixo de ~%1%s, o ventoinha será " +"executado em %2%%% e a velocidade de impressão será reduzida para que não " +"menos de %3%s sejam gastos nessa camada (no entanto, a velocidade nunca será " +"reduzida abaixo de %4% mm/s)." + +#: src/slic3r/GUI/PresetHints.cpp:35 +msgid "" +"\n" +"If estimated layer time is greater, but still below ~%1%s, fan will run at a " +"proportionally decreasing speed between %2%%% and %3%%%." +msgstr "" +"\n" +"Se o tempo estimado da camada for maior, mas ainda abaixo de ~%1%s, o " +"ventoinha será executado em uma velocidade proporcionalmente decrescente " +"entre %2%%% e %3%%%." + +#: src/slic3r/GUI/PresetHints.cpp:39 +msgid "" +"\n" +"During the other layers, fan" +msgstr "" +"\n" +"Durante as outras camadas, o ventoinha" + +#: src/slic3r/GUI/PresetHints.cpp:41 +msgid "Fan" +msgstr "Ventoinha" + +#: src/slic3r/GUI/PresetHints.cpp:47 +msgid "will always run at %1%%%" +msgstr "será sempre executado em %1%%%" + +#: src/slic3r/GUI/PresetHints.cpp:50 +msgid "except for the first %1% layers." +msgstr "exceto para as primeiras camadas %1%." + +#: src/slic3r/GUI/PresetHints.cpp:52 +msgid "except for the first layer." +msgstr "exceto para a primeira camada." + +#: src/slic3r/GUI/PresetHints.cpp:54 +msgid "will be turned off." +msgstr "será desligado." + +#: src/slic3r/GUI/PresetHints.cpp:155 +msgid "external perimeters" +msgstr "perímetros externos" + +#: src/slic3r/GUI/PresetHints.cpp:164 +msgid "perimeters" +msgstr "perímetros" + +#: src/slic3r/GUI/PresetHints.cpp:173 +msgid "infill" +msgstr "preenchimento" + +#: src/slic3r/GUI/PresetHints.cpp:183 +msgid "solid infill" +msgstr "preenchimento sólido" + +#: src/slic3r/GUI/PresetHints.cpp:191 +msgid "top solid infill" +msgstr "preenchimento sólido do topo" + +#: src/slic3r/GUI/PresetHints.cpp:202 +msgid "support" +msgstr "suporte" + +#: src/slic3r/GUI/PresetHints.cpp:212 +msgid "support interface" +msgstr "interface de suporte" + +#: src/slic3r/GUI/PresetHints.cpp:218 +msgid "First layer volumetric" +msgstr "Primeira camada volumétrica" + +#: src/slic3r/GUI/PresetHints.cpp:218 +msgid "Bridging volumetric" +msgstr "Ponteamento volumétrico" + +#: src/slic3r/GUI/PresetHints.cpp:218 +msgid "Volumetric" +msgstr "Volumétrica" + +#: src/slic3r/GUI/PresetHints.cpp:219 +msgid "flow rate is maximized" +msgstr "a taxa de fluxo é maximizada" + +#: src/slic3r/GUI/PresetHints.cpp:222 +msgid "by the print profile maximum" +msgstr "pelo perfil de impressão máximo" + +#: src/slic3r/GUI/PresetHints.cpp:223 +msgid "when printing" +msgstr "ao imprimir" + +#: src/slic3r/GUI/PresetHints.cpp:224 +msgid "with a volumetric rate" +msgstr "com uma taxa volumétrica" + +#: src/slic3r/GUI/PresetHints.cpp:228 +#, c-format +msgid "%3.2f mm³/s at filament speed %3.2f mm/s." +msgstr "%3.2f mm ³/s na velocidade do filamento %3.2f mm/s." + +#: src/slic3r/GUI/PresetHints.cpp:246 +msgid "" +"Recommended object thin wall thickness: Not available due to invalid layer " +"height." +msgstr "" +"Espessura de parede fina do objeto recomendado: não disponível devido à " +"altura da camada inválida." + +#: src/slic3r/GUI/PresetHints.cpp:262 +#, c-format +msgid "Recommended object thin wall thickness for layer height %.2f and" +msgstr "" +"Espessura de parede fina do objeto recomendado para a altura da camada %.2f e" + +#: src/slic3r/GUI/PresetHints.cpp:268 +#, c-format +msgid "%d lines: %.2f mm" +msgstr "%d linhas: %.2f mm" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:33 +msgid "Send G-Code to printer host" +msgstr "Enviar G-code para o host da impressora" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:33 +msgid "Upload to Printer Host with the following filename:" +msgstr "Carregue para o host da impressora com o seguinte nome de arquivo:" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:35 +msgid "Start printing after upload" +msgstr "Iniciar a impressão após o envio" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:42 +msgid "Use forward slashes ( / ) as a directory separator if needed." +msgstr "Use barras (/) como um separador de diretório, se necessário." + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +msgid "ID" +msgstr "ID" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +msgid "Progress" +msgstr "Progresso" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +msgid "Status" +msgstr "Status" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +msgid "Host" +msgstr "Servidor" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +msgid "Filename" +msgstr "Nome do arquivo" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +msgid "Error Message" +msgstr "Mensagem de Erro" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +msgid "Cancel selected" +msgstr "Cancelar selecionado" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +msgid "Show error message" +msgstr "Exibir mensagem de erro" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:198 +#: src/slic3r/GUI/PrintHostDialogs.cpp:229 +msgid "Enqueued" +msgstr "Enfileirado" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:230 +msgid "Uploading" +msgstr "Enviando" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:234 +msgid "Completed" +msgstr "Concluído" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:272 +msgid "Error uploading to print host:" +msgstr "Erro ao carregar para o host de impressão:" + +#: src/slic3r/GUI/RammingChart.cpp:23 +msgid "NO RAMMING AT ALL" +msgstr "Não usar Ramming" + +#: src/slic3r/GUI/RammingChart.cpp:76 +msgid "Time" +msgstr "Tempo" + +#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:82 +#: src/libslic3r/PrintConfig.cpp:627 src/libslic3r/PrintConfig.cpp:671 +#: src/libslic3r/PrintConfig.cpp:686 src/libslic3r/PrintConfig.cpp:2349 +#: src/libslic3r/PrintConfig.cpp:2358 src/libslic3r/PrintConfig.cpp:2418 +#: src/libslic3r/PrintConfig.cpp:2426 src/libslic3r/PrintConfig.cpp:2434 +#: src/libslic3r/PrintConfig.cpp:2441 src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2457 +msgid "s" +msgstr "s" + +#: src/slic3r/GUI/RammingChart.cpp:81 +msgid "Volumetric speed" +msgstr "Velocidade volumétrica" + +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:584 +#: src/libslic3r/PrintConfig.cpp:1234 +msgid "mm³/s" +msgstr "mm ³/s" + +#: src/slic3r/GUI/Selection.cpp:146 +msgid "Selection-Add" +msgstr "Seleção-Adicionar" + +#: src/slic3r/GUI/Selection.cpp:187 +msgid "Selection-Remove" +msgstr "Seleção-remover" + +#: src/slic3r/GUI/Selection.cpp:219 +msgid "Selection-Add Object" +msgstr "Seleção-Adicionar objeto" + +#: src/slic3r/GUI/Selection.cpp:238 +msgid "Selection-Remove Object" +msgstr "Seleção-remover objeto" + +#: src/slic3r/GUI/Selection.cpp:256 +msgid "Selection-Add Instance" +msgstr "Instância de seleção-Adicionar" + +#: src/slic3r/GUI/Selection.cpp:275 +msgid "Selection-Remove Instance" +msgstr "Seleção-remover instância" + +#: src/slic3r/GUI/Selection.cpp:376 +msgid "Selection-Add All" +msgstr "Seleção-adicionar todos" + +#: src/slic3r/GUI/Selection.cpp:402 +msgid "Selection-Remove All" +msgstr "Seleção-remover todos" + +#: src/slic3r/GUI/Selection.cpp:939 +msgid "Scale To Fit" +msgstr "Dimensionar para caber" + +#: src/slic3r/GUI/Selection.cpp:1474 +msgid "Set Printable Instance" +msgstr "Definir instância imprimível" + +#: src/slic3r/GUI/Selection.cpp:1474 +msgid "Set Unprintable Instance" +msgstr "Definir instância não imprimível" + +#: src/slic3r/GUI/SysInfoDialog.cpp:78 +msgid "System Information" +msgstr "Informações do sistema" + +#: src/slic3r/GUI/SysInfoDialog.cpp:154 +msgid "Copy to Clipboard" +msgstr "Copiar para a Área de Transferência" + +#: src/slic3r/GUI/Tab.cpp:52 src/libslic3r/PrintConfig.cpp:239 +msgid "Compatible printers" +msgstr "Impressoras compatíveis" + +#: src/slic3r/GUI/Tab.cpp:53 +msgid "Select the printers this profile is compatible with." +msgstr "Selecione as impressoras com as quais este perfil é compatível." + +#: src/slic3r/GUI/Tab.cpp:58 src/libslic3r/PrintConfig.cpp:254 +msgid "Compatible print profiles" +msgstr "Perfis de impressão compatíveis" + +#: src/slic3r/GUI/Tab.cpp:59 +msgid "Select the print profiles this profile is compatible with." +msgstr "" +"Selecione os perfis de impressão com os quais este perfil é compatível." + +#. TRN "Save current Settings" +#: src/slic3r/GUI/Tab.cpp:135 +#, c-format +msgid "Save current %s" +msgstr "Salvar %s atual" + +#: src/slic3r/GUI/Tab.cpp:136 +msgid "Delete this preset" +msgstr "Exclua esta predefinição" + +#: src/slic3r/GUI/Tab.cpp:141 +msgid "" +"Hover the cursor over buttons to find more information \n" +"or click this button." +msgstr "" +"Passe o cursor sobre os botões para encontrar mais informações \n" +"ou clique neste botão." + +#: src/slic3r/GUI/Tab.cpp:943 +msgid "This is a default preset." +msgstr "Esta é uma predefinição padrão." + +#: src/slic3r/GUI/Tab.cpp:945 +msgid "This is a system preset." +msgstr "Esta é uma predefinição do sistema." + +#: src/slic3r/GUI/Tab.cpp:947 +msgid "Current preset is inherited from the default preset." +msgstr "Predefinição atual é herdada da predefinição padrão." + +#: src/slic3r/GUI/Tab.cpp:950 +#, c-format +msgid "" +"Current preset is inherited from:\n" +"\t%s" +msgstr "" +"Predefinição atual é herdada de:\n" +"\t%s" + +#: src/slic3r/GUI/Tab.cpp:954 +msgid "It can't be deleted or modified." +msgstr "Ele não pode ser excluído ou modificado." + +#: src/slic3r/GUI/Tab.cpp:955 +msgid "" +"Any modifications should be saved as a new preset inherited from this one." +msgstr "" +"Todas as modificações devem ser salvas como uma nova predefinição herdada de " +"uma presente." + +#: src/slic3r/GUI/Tab.cpp:956 +msgid "To do that please specify a new name for the preset." +msgstr "Para fazer isso, especifique um novo nome para a predefinição." + +#: src/slic3r/GUI/Tab.cpp:960 +msgid "Additional information:" +msgstr "Informações adicionais:" + +#: src/slic3r/GUI/Tab.cpp:966 +msgid "printer model" +msgstr "modelo de impressora" + +#: src/slic3r/GUI/Tab.cpp:974 +msgid "default print profile" +msgstr "perfil de impressão padrão" + +#: src/slic3r/GUI/Tab.cpp:977 +msgid "default filament profile" +msgstr "perfil de filamento padrão" + +#: src/slic3r/GUI/Tab.cpp:991 +msgid "default SLA material profile" +msgstr "perfil de material SLA padrão" + +#: src/slic3r/GUI/Tab.cpp:995 +msgid "default SLA print profile" +msgstr "perfil de impressão padrão do SLA" + +#: src/slic3r/GUI/Tab.cpp:1032 src/slic3r/GUI/Tab.cpp:3731 +msgid "Layers and perimeters" +msgstr "Camadas e perímetros" + +#: src/slic3r/GUI/Tab.cpp:1037 +msgid "Vertical shells" +msgstr "Paredes verticais" + +#: src/slic3r/GUI/Tab.cpp:1048 +msgid "Horizontal shells" +msgstr "Paredes horizontais" + +#: src/slic3r/GUI/Tab.cpp:1049 src/libslic3r/PrintConfig.cpp:1759 +msgid "Solid layers" +msgstr "Camadas sólidas" + +#: src/slic3r/GUI/Tab.cpp:1054 +msgid "Quality (slower slicing)" +msgstr "Qualidade (fatiamento mais lento)" + +#: src/slic3r/GUI/Tab.cpp:1072 +msgid "Reducing printing time" +msgstr "Reduzindo o tempo de impressão" + +#: src/slic3r/GUI/Tab.cpp:1084 +msgid "Skirt and brim" +msgstr "Saia e aba" + +#: src/slic3r/GUI/Tab.cpp:1101 +msgid "Raft" +msgstr "Estrado" + +#: src/slic3r/GUI/Tab.cpp:1105 +msgid "Options for support material and raft" +msgstr "Opções para material de suporte e estrado" + +#: src/slic3r/GUI/Tab.cpp:1120 +msgid "Speed for print moves" +msgstr "Velocidade para movimentos de impressão" + +#: src/slic3r/GUI/Tab.cpp:1132 +msgid "Speed for non-print moves" +msgstr "Velocidade para movimentos não impressos" + +#: src/slic3r/GUI/Tab.cpp:1135 +msgid "Modifiers" +msgstr "Modificadores" + +#: src/slic3r/GUI/Tab.cpp:1138 +msgid "Acceleration control (advanced)" +msgstr "Controle de aceleração (avançado)" + +#: src/slic3r/GUI/Tab.cpp:1145 +msgid "Autospeed (advanced)" +msgstr "Velocidade automática (avançado)" + +#: src/slic3r/GUI/Tab.cpp:1153 +msgid "Multiple Extruders" +msgstr "Extrusoras múltiplas" + +#: src/slic3r/GUI/Tab.cpp:1161 +msgid "Ooze prevention" +msgstr "Prevenção de vazão" + +#: src/slic3r/GUI/Tab.cpp:1178 +msgid "Extrusion width" +msgstr "Espessura da extrusão" + +#: src/slic3r/GUI/Tab.cpp:1188 +msgid "Overlap" +msgstr "Cobrir" + +#: src/slic3r/GUI/Tab.cpp:1191 +msgid "Flow" +msgstr "Fluxo" + +#: src/slic3r/GUI/Tab.cpp:1200 +msgid "Other" +msgstr "Outro" + +#: src/slic3r/GUI/Tab.cpp:1203 src/slic3r/GUI/Tab.cpp:3789 +msgid "Output options" +msgstr "Opções de saída" + +#: src/slic3r/GUI/Tab.cpp:1204 +msgid "Sequential printing" +msgstr "Impressão sequencial" + +#: src/slic3r/GUI/Tab.cpp:1206 +msgid "Extruder clearance (mm)" +msgstr "Folga da extrusora (milímetro)" + +#: src/slic3r/GUI/Tab.cpp:1215 src/slic3r/GUI/Tab.cpp:3790 +msgid "Output file" +msgstr "Arquivo de saída" + +#: src/slic3r/GUI/Tab.cpp:1222 src/libslic3r/PrintConfig.cpp:1432 +msgid "Post-processing scripts" +msgstr "Scripts de pós-processamento" + +#: src/slic3r/GUI/Tab.cpp:1228 src/slic3r/GUI/Tab.cpp:1229 +#: src/slic3r/GUI/Tab.cpp:1752 src/slic3r/GUI/Tab.cpp:1753 +#: src/slic3r/GUI/Tab.cpp:2214 src/slic3r/GUI/Tab.cpp:2215 +#: src/slic3r/GUI/Tab.cpp:2328 src/slic3r/GUI/Tab.cpp:2329 +#: src/slic3r/GUI/Tab.cpp:3668 src/slic3r/GUI/Tab.cpp:3669 +msgid "Notes" +msgstr "Notas" + +#: src/slic3r/GUI/Tab.cpp:1235 src/slic3r/GUI/Tab.cpp:1760 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2335 +#: src/slic3r/GUI/Tab.cpp:3676 src/slic3r/GUI/Tab.cpp:3795 +msgid "Dependencies" +msgstr "Dependências" + +#: src/slic3r/GUI/Tab.cpp:1236 src/slic3r/GUI/Tab.cpp:1761 +#: src/slic3r/GUI/Tab.cpp:2222 src/slic3r/GUI/Tab.cpp:2336 +#: src/slic3r/GUI/Tab.cpp:3677 src/slic3r/GUI/Tab.cpp:3796 +msgid "Profile dependencies" +msgstr "Dependências de perfil" + +#: src/slic3r/GUI/Tab.cpp:1538 src/slic3r/GUI/Tab.cpp:1593 +msgid "Filament Overrides" +msgstr "Sobrescrever config." + +#: src/slic3r/GUI/Tab.cpp:1539 src/slic3r/GUI/Tab.cpp:1598 +#: src/slic3r/GUI/Tab.cpp:2570 +msgid "Retraction" +msgstr "Retração" + +#: src/slic3r/GUI/Tab.cpp:1648 src/libslic3r/PrintConfig.cpp:2030 +msgid "Temperature" +msgstr "Temperatura" + +#: src/slic3r/GUI/Tab.cpp:1654 +msgid "Bed" +msgstr "Mesa" + +#: src/slic3r/GUI/Tab.cpp:1659 +msgid "Cooling" +msgstr "Resfriamento" + +#: src/slic3r/GUI/Tab.cpp:1660 src/libslic3r/PrintConfig.cpp:1335 +#: src/libslic3r/PrintConfig.cpp:2150 +msgid "Enable" +msgstr "Habilitar" + +#: src/slic3r/GUI/Tab.cpp:1671 +msgid "Fan settings" +msgstr "Config. da ventoinha" + +#: src/slic3r/GUI/Tab.cpp:1672 +msgid "Fan speed" +msgstr "Velocidade do ventoinha" + +#: src/slic3r/GUI/Tab.cpp:1680 +msgid "Cooling thresholds" +msgstr "Limiares de resfriamento" + +#: src/slic3r/GUI/Tab.cpp:1686 +msgid "Filament properties" +msgstr "Propriedades de filamento" + +#: src/slic3r/GUI/Tab.cpp:1690 +msgid "Print speed override" +msgstr "Substituição da velocidade de impressão" + +#: src/slic3r/GUI/Tab.cpp:1700 +msgid "Wipe tower parameters" +msgstr "Parâmetros da torre de limpeza" + +#: src/slic3r/GUI/Tab.cpp:1703 +msgid "Toolchange parameters with single extruder MM printers" +msgstr "" +"Parâmetros de mudança de ferramenta com impressoras de multi material com " +"apenas uma extrusora" + +#: src/slic3r/GUI/Tab.cpp:1717 +msgid "Ramming settings" +msgstr "config. de Ramming" + +#: src/slic3r/GUI/Tab.cpp:1739 src/slic3r/GUI/Tab.cpp:2177 +msgid "Custom G-code" +msgstr "G-code customizado" + +#: src/slic3r/GUI/Tab.cpp:1740 src/slic3r/GUI/Tab.cpp:2178 +#: src/libslic3r/PrintConfig.cpp:1785 src/libslic3r/PrintConfig.cpp:1800 +msgid "Start G-code" +msgstr "G-code de início" + +#: src/slic3r/GUI/Tab.cpp:1746 src/slic3r/GUI/Tab.cpp:2184 +#: src/libslic3r/PrintConfig.cpp:369 src/libslic3r/PrintConfig.cpp:379 +msgid "End G-code" +msgstr "G-code de finalização" + +#: src/slic3r/GUI/Tab.cpp:1803 +msgid "Volumetric flow hints not available" +msgstr "Dicas de fluxo volumétrico não disponíveis" + +#: src/slic3r/GUI/Tab.cpp:1889 src/slic3r/GUI/Tab.cpp:2117 +msgid "Test" +msgstr "Teste" + +#: src/slic3r/GUI/Tab.cpp:1899 +msgid "Could not get a valid Printer Host reference" +msgstr "Não foi possível obter uma referência de host de impressora válida" + +#: src/slic3r/GUI/Tab.cpp:1905 src/slic3r/GUI/Tab.cpp:2130 +msgid "Success!" +msgstr "Sucesso!" + +#: src/slic3r/GUI/Tab.cpp:1920 +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"O arquivo HTTPS CA é opcional. Só é necessário se você usar HTTPS com um " +"certificado auto-assinado." + +#: src/slic3r/GUI/Tab.cpp:1933 +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "" +"Arquivos de certificado (*. CRT, *. pem) | *. CRT; *. pem | Todos os " +"arquivos | *. *" + +#: src/slic3r/GUI/Tab.cpp:1934 +msgid "Open CA certificate file" +msgstr "Abra o arquivo de certificado da CA" + +#: src/slic3r/GUI/Tab.cpp:1962 +#, c-format +msgid "" +"HTTPS CA File:\n" +" \tOn this system, %s uses HTTPS certificates from the system Certificate " +"Store or Keychain.\n" +" \tTo use a custom CA file, please import your CA file into Certificate " +"Store / Keychain." +msgstr "" +"Arquivo HTTPS CA:\n" +" \tNeste sistema, %s usa certificados HTTPS do sistema Certificate Store " +"ou keychain.\n" +" \tPara usar um arquivo de CA personalizado, importe seu arquivo de CA " +"para o repositório de certificados/chaveiro." + +#: src/slic3r/GUI/Tab.cpp:2002 src/slic3r/GUI/Tab.cpp:2243 +msgid "Size and coordinates" +msgstr "Tamanho e coordenadas" + +#: src/slic3r/GUI/Tab.cpp:2007 src/slic3r/GUI/Tab.cpp:2248 +#: src/slic3r/GUI/Tab.cpp:3338 +msgid "Set" +msgstr "Definir" + +#: src/slic3r/GUI/Tab.cpp:2039 +msgid "Capabilities" +msgstr "Capacidades" + +#: src/slic3r/GUI/Tab.cpp:2044 +msgid "Number of extruders of the printer." +msgstr "Número de extrusoras da impressora." + +#: src/slic3r/GUI/Tab.cpp:2069 +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" +"A extrusora multi material é selecionada, \n" +"e todas as extrusoras devem ter o mesmo diâmetro.\n" +"Você quer mudar o diâmetro para todas as extrusoras ao primeiro valor do " +"diâmetro da ponteira da extrusora?" + +#: src/slic3r/GUI/Tab.cpp:2072 src/slic3r/GUI/Tab.cpp:2540 +#: src/libslic3r/PrintConfig.cpp:1310 +msgid "Nozzle diameter" +msgstr "Diâmetro do bico" + +#: src/slic3r/GUI/Tab.cpp:2102 +msgid "USB/Serial connection" +msgstr "Conexão USB/serial" + +#: src/slic3r/GUI/Tab.cpp:2103 src/libslic3r/PrintConfig.cpp:1640 +msgid "Serial port" +msgstr "Porte Serial" + +#: src/slic3r/GUI/Tab.cpp:2108 +msgid "Rescan serial ports" +msgstr "Portas seriais de Rescan" + +#: src/slic3r/GUI/Tab.cpp:2130 +msgid "Connection to printer works correctly." +msgstr "A ligação à impressora funciona corretamente." + +#: src/slic3r/GUI/Tab.cpp:2133 +msgid "Connection failed." +msgstr "A conexão falhou." + +#: src/slic3r/GUI/Tab.cpp:2146 src/slic3r/GUI/Tab.cpp:2323 +msgid "Print Host upload" +msgstr "Upload do host de impressão" + +#: src/slic3r/GUI/Tab.cpp:2190 src/libslic3r/PrintConfig.cpp:138 +msgid "Before layer change G-code" +msgstr "Antes da mudança de camada G-code" + +#: src/slic3r/GUI/Tab.cpp:2196 src/libslic3r/PrintConfig.cpp:1056 +msgid "After layer change G-code" +msgstr "Após a mudança da camada do G-code" + +#: src/slic3r/GUI/Tab.cpp:2202 src/libslic3r/PrintConfig.cpp:2056 +msgid "Tool change G-code" +msgstr "G-code de troca de ferramenta" + +#: src/slic3r/GUI/Tab.cpp:2208 +msgid "Between objects G-code (for sequential printing)" +msgstr "G-code entre objetos (para impressão sequencial)" + +#: src/slic3r/GUI/Tab.cpp:2280 +msgid "Display" +msgstr "Exibição" + +#: src/slic3r/GUI/Tab.cpp:2295 +msgid "Tilt" +msgstr "Inclinar" + +#: src/slic3r/GUI/Tab.cpp:2296 +msgid "Tilt time" +msgstr "Tempo de inclinação" + +#: src/slic3r/GUI/Tab.cpp:2302 src/slic3r/GUI/Tab.cpp:3650 +msgid "Corrections" +msgstr "Correções" + +#: src/slic3r/GUI/Tab.cpp:2317 src/slic3r/GUI/Tab.cpp:3646 +msgid "Exposure" +msgstr "Exposição" + +#: src/slic3r/GUI/Tab.cpp:2388 src/slic3r/GUI/Tab.cpp:2473 +#: src/libslic3r/PrintConfig.cpp:1106 src/libslic3r/PrintConfig.cpp:1124 +#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1170 src/libslic3r/PrintConfig.cpp:1181 +#: src/libslic3r/PrintConfig.cpp:1192 +msgid "Machine limits" +msgstr "Limites da máquina" + +#: src/slic3r/GUI/Tab.cpp:2402 +msgid "Values in this column are for Normal mode" +msgstr "Valores nesta coluna são para o modo normal" + +#: src/slic3r/GUI/Tab.cpp:2403 +msgid "Normal" +msgstr "Normal" + +#: src/slic3r/GUI/Tab.cpp:2408 +msgid "Values in this column are for Stealth mode" +msgstr "Valores nesta coluna são para o modo furtivo" + +#: src/slic3r/GUI/Tab.cpp:2409 +msgid "Stealth" +msgstr "Furtivo" + +#: src/slic3r/GUI/Tab.cpp:2417 +msgid "Maximum feedrates" +msgstr "Velocidade máxima de alimentação" + +#: src/slic3r/GUI/Tab.cpp:2422 +msgid "Maximum accelerations" +msgstr "Acelerações máximas" + +#: src/slic3r/GUI/Tab.cpp:2429 +msgid "Jerk limits" +msgstr "Limites de empurrão" + +#: src/slic3r/GUI/Tab.cpp:2434 +msgid "Minimum feedrates" +msgstr "Velocidades alimentação mínimos" + +#: src/slic3r/GUI/Tab.cpp:2498 src/slic3r/GUI/Tab.cpp:2506 +msgid "Single extruder MM setup" +msgstr "config. de extrusora multi material" + +#: src/slic3r/GUI/Tab.cpp:2507 +msgid "Single extruder multimaterial parameters" +msgstr "Parâmetros para extrusora única multimaterial" + +#: src/slic3r/GUI/Tab.cpp:2520 src/libslic3r/GCode/PreviewData.cpp:461 +#, c-format +msgid "Extruder %d" +msgstr "Extrusora %d" + +#: src/slic3r/GUI/Tab.cpp:2538 +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" +"Esta é uma única impressora multimaterial extrusora, diâmetros de todas as " +"extrusoras será definido para o novo valor. Você quer prosseguir?" + +#: src/slic3r/GUI/Tab.cpp:2562 +msgid "Layer height limits" +msgstr "Limites de altura da camada" + +#: src/slic3r/GUI/Tab.cpp:2567 +msgid "Position (for multi-extruder printers)" +msgstr "Posição (para impressoras multiextrusoras)" + +#: src/slic3r/GUI/Tab.cpp:2573 +msgid "Only lift Z" +msgstr "Apenas elevar Z" + +#: src/slic3r/GUI/Tab.cpp:2586 +msgid "" +"Retraction when tool is disabled (advanced settings for multi-extruder " +"setups)" +msgstr "" +"Retração quando a ferramenta está desativada (config. avançadas para " +"instalações multiextrusoras)" + +#: src/slic3r/GUI/Tab.cpp:2594 +msgid "Reset to Filament Color" +msgstr "Restabelecer cor do filamento" + +#: src/slic3r/GUI/Tab.cpp:2775 +msgid "" +"The Wipe option is not available when using the Firmware Retraction mode.\n" +"\n" +"Shall I disable it in order to enable Firmware Retraction?" +msgstr "" +"A opção limpar não está disponível ao usar o modo de retração de firmware.\n" +"\n" +"Devo desativá-lo, a fim de permitir a retração de firmware?" + +#: src/slic3r/GUI/Tab.cpp:2777 +msgid "Firmware Retraction" +msgstr "Retração do firmware" + +#: src/slic3r/GUI/Tab.cpp:3106 +#, c-format +msgid "Default preset (%s)" +msgstr "Predefinição padrão ( %s)" + +#: src/slic3r/GUI/Tab.cpp:3107 +#, c-format +msgid "Preset (%s)" +msgstr "Predefinição ( %s)" + +#: src/slic3r/GUI/Tab.cpp:3124 +msgid "has the following unsaved changes:" +msgstr "tem as seguintes alterações não salvas:" + +#: src/slic3r/GUI/Tab.cpp:3127 +msgid "is not compatible with printer" +msgstr "não é compatível com a impressora" + +#: src/slic3r/GUI/Tab.cpp:3128 +msgid "is not compatible with print profile" +msgstr "não é compatível com o perfil de impressão" + +#: src/slic3r/GUI/Tab.cpp:3130 +msgid "and it has the following unsaved changes:" +msgstr "e tem as seguintes alterações não salvas:" + +#: src/slic3r/GUI/Tab.cpp:3134 +msgid "Unsaved Changes" +msgstr "Alterações não salvas" + +#: src/slic3r/GUI/Tab.cpp:3225 +msgid "%1% - Copy" +msgstr "%1% - cópia" + +#: src/slic3r/GUI/Tab.cpp:3248 +msgid "The supplied name is empty. It can't be saved." +msgstr "O nome fornecido está vazio. Não pode ser salvo." + +#: src/slic3r/GUI/Tab.cpp:3253 +msgid "Cannot overwrite a system profile." +msgstr "Não é possível substituir um perfil de sistema." + +#: src/slic3r/GUI/Tab.cpp:3257 +msgid "Cannot overwrite an external profile." +msgstr "Não é possível substituir um perfil externo." + +#: src/slic3r/GUI/Tab.cpp:3283 +msgid "remove" +msgstr "remover" + +#: src/slic3r/GUI/Tab.cpp:3283 +msgid "delete" +msgstr "excluir" + +#. TRN remove/delete +#: src/slic3r/GUI/Tab.cpp:3285 +msgid "Are you sure you want to %1% the selected preset?" +msgstr "Tem certeza de que deseja %1% da predefinição selecionada?" + +#. TRN Remove/Delete +#: src/slic3r/GUI/Tab.cpp:3288 +msgid "%1% Preset" +msgstr "%1% Predefinição" + +#: src/slic3r/GUI/Tab.cpp:3414 +msgid "LOCKED LOCK" +msgstr "CADEADO FECHADO" + +#. TRN Description for "LOCKED LOCK" +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "" +"indicates that the settings are the same as the system (or default) values " +"for the current option group" +msgstr "" +"indica que as config. são as mesmas que os valores do sistema (ou padrão) " +"para o grupo de opções atual" + +#: src/slic3r/GUI/Tab.cpp:3418 +msgid "UNLOCKED LOCK" +msgstr "CADEADO ABERTO" + +#. TRN Description for "UNLOCKED LOCK" +#: src/slic3r/GUI/Tab.cpp:3420 +msgid "" +"indicates that some settings were changed and are not equal to the system " +"(or default) values for the current option group.\n" +"Click the UNLOCKED LOCK icon to reset all settings for current option group " +"to the system (or default) values." +msgstr "" +"indica que algumas config. foram alteradas e não são iguais aos valores do " +"sistema (ou padrão) para o grupo de opções atual.\n" +"Clique no ícone DESBLOQUEAR para redefinir todas as config. do grupo de " +"opções atual para os valores do sistema (ou padrão)." + +#: src/slic3r/GUI/Tab.cpp:3425 +msgid "WHITE BULLET" +msgstr "PONTO BRANCO" + +#. TRN Description for "WHITE BULLET" +#: src/slic3r/GUI/Tab.cpp:3427 +msgid "" +"for the left button: \tindicates a non-system (or non-default) preset,\n" +"for the right button: \tindicates that the settings hasn't been modified." +msgstr "" +"para o botão esquerdo: \t indica uma predefinição que não é do sistema (ou " +"não-padrão),\n" +"para o botão direito: \t indica que as config. não foram modificadas." + +#: src/slic3r/GUI/Tab.cpp:3430 +msgid "BACK ARROW" +msgstr "REDEFINIR" + +#. TRN Description for "BACK ARROW" +#: src/slic3r/GUI/Tab.cpp:3432 +msgid "" +"indicates that the settings were changed and are not equal to the last saved " +"preset for the current option group.\n" +"Click the BACK ARROW icon to reset all settings for the current option group " +"to the last saved preset." +msgstr "" +"indica que as config. foram alteradas e não são iguais à última predefinição " +"salva para o grupo de opções atual.\n" +"Clique no ícone REDEFINIR para redefinir todas as config. do grupo de opções " +"atual para a última predefinição salva." + +#: src/slic3r/GUI/Tab.cpp:3442 +msgid "" +"LOCKED LOCK icon indicates that the settings are the same as the system (or " +"default) values for the current option group" +msgstr "" +"O ícone CADEADO FECHADO indica que as config. são as mesmas que os valores " +"do sistema (ou padrão) para o grupo de opções atual" + +#: src/slic3r/GUI/Tab.cpp:3444 +msgid "" +"UNLOCKED LOCK icon indicates that some settings were changed and are not " +"equal to the system (or default) values for the current option group.\n" +"Click to reset all settings for current option group to the system (or " +"default) values." +msgstr "" +"O ícone de CADEADO ABERTO indica que algumas config. foram alteradas e não " +"são iguais aos valores do sistema (ou padrão) para o grupo de opções atual.\n" +"Clique para redefinir todas as config. para o grupo de opções atual para os " +"valores do sistema (ou padrão)." + +#: src/slic3r/GUI/Tab.cpp:3447 +msgid "WHITE BULLET icon indicates a non system (or non default) preset." +msgstr "" +"O ícone PONTO BRANCO indica uma predefinição que não é do sistema (ou não " +"predefinida)." + +#: src/slic3r/GUI/Tab.cpp:3450 +msgid "" +"WHITE BULLET icon indicates that the settings are the same as in the last " +"saved preset for the current option group." +msgstr "" +"O ícone PONTO BRANCO indica que as config. são as mesmas da última " +"predefinição salva para o grupo de opções atual." + +#: src/slic3r/GUI/Tab.cpp:3452 +msgid "" +"BACK ARROW icon indicates that the settings were changed and are not equal " +"to the last saved preset for the current option group.\n" +"Click to reset all settings for the current option group to the last saved " +"preset." +msgstr "" +"O ícone de REDEFINIR indica que as config. foram alteradas e não são iguais " +"à última predefinição salva para o grupo de opções atual.\n" +"Clique para redefinir todas as config. do grupo de opções atual para a " +"última predefinição salva." + +#: src/slic3r/GUI/Tab.cpp:3458 +msgid "" +"LOCKED LOCK icon indicates that the value is the same as the system (or " +"default) value." +msgstr "" +"O ícone CADEADO FECHADO indica que o valor é o mesmo que o valor do sistema " +"(ou padrão)." + +#: src/slic3r/GUI/Tab.cpp:3459 +msgid "" +"UNLOCKED LOCK icon indicates that the value was changed and is not equal to " +"the system (or default) value.\n" +"Click to reset current value to the system (or default) value." +msgstr "" +"O ícone de CADEADO ABERTO indica que o valor foi alterado e não é igual ao " +"valor do sistema (ou padrão).\n" +"Clique para redefinir o valor atual para o valor do sistema (ou padrão)." + +#: src/slic3r/GUI/Tab.cpp:3465 +msgid "" +"WHITE BULLET icon indicates that the value is the same as in the last saved " +"preset." +msgstr "" +"O ícone PONTO BRANCO indica que o valor é o mesmo da última predefinição " +"guardada." + +#: src/slic3r/GUI/Tab.cpp:3466 +msgid "" +"BACK ARROW icon indicates that the value was changed and is not equal to the " +"last saved preset.\n" +"Click to reset current value to the last saved preset." +msgstr "" +"O ícone de REDEFINIR indica que o valor foi alterado e não é igual à última " +"predefinição salva.\n" +"Clique para redefinir o valor atual para a última predefinição salva." + +#. TRN Preset +#: src/slic3r/GUI/Tab.cpp:3579 +#, c-format +msgid "Save %s as:" +msgstr "Salvar %s como:" + +#: src/slic3r/GUI/Tab.cpp:3623 +msgid "the following suffix is not allowed:" +msgstr "o sufixo seguinte não é permitido:" + +#: src/slic3r/GUI/Tab.cpp:3627 +msgid "The supplied name is not available." +msgstr "O nome fornecido não está disponível." + +#: src/slic3r/GUI/Tab.cpp:3640 +msgid "Material" +msgstr "Material" + +#: src/slic3r/GUI/Tab.cpp:3642 src/slic3r/GUI/Tab.cpp:3733 +#: src/slic3r/GUI/wxExtensions.cpp:482 +msgid "Layers" +msgstr "Camadas" + +#: src/slic3r/GUI/Tab.cpp:3741 +msgid "Support head" +msgstr "Cabeça de suporte" + +#: src/slic3r/GUI/Tab.cpp:3746 +msgid "Support pillar" +msgstr "Pilar de suporte" + +#: src/slic3r/GUI/Tab.cpp:3760 +msgid "Connection of the support sticks and junctions" +msgstr "Conexão das varas de suporte e junções" + +#: src/slic3r/GUI/Tab.cpp:3765 +msgid "Automatic generation" +msgstr "Geração Automática" + +#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:428 +msgid "Print Settings" +msgstr "Config. de impressão" + +#: src/slic3r/GUI/Tab.hpp:353 +msgid "Filament Settings" +msgstr "Config. de filamento" + +#: src/slic3r/GUI/Tab.hpp:389 +msgid "Printer Settings" +msgstr "Config. da impressora" + +#: src/slic3r/GUI/Tab.hpp:413 +msgid "Material Settings" +msgstr "Config. de material" + +#: src/slic3r/GUI/Tab.hpp:440 +msgid "Save preset" +msgstr "Salvar predefinição" + +#: src/slic3r/GUI/UpdateDialogs.cpp:38 +msgid "Update available" +msgstr "Atualização disponível" + +#: src/slic3r/GUI/UpdateDialogs.cpp:38 +#, c-format +msgid "New version of %s is available" +msgstr "Nova versão do %s está disponível" + +#: src/slic3r/GUI/UpdateDialogs.cpp:45 +msgid "Current version:" +msgstr "Versão atual:" + +#: src/slic3r/GUI/UpdateDialogs.cpp:47 +msgid "New version:" +msgstr "Nova versão:" + +#: src/slic3r/GUI/UpdateDialogs.cpp:55 +msgid "Changelog && Download" +msgstr "Changelog && Download" + +#: src/slic3r/GUI/UpdateDialogs.cpp:62 src/slic3r/GUI/UpdateDialogs.cpp:127 +msgid "Open changelog page" +msgstr "Abra a página do changelog" + +#: src/slic3r/GUI/UpdateDialogs.cpp:67 +msgid "Open download page" +msgstr "Abrir página de download" + +#: src/slic3r/GUI/UpdateDialogs.cpp:73 +msgid "Don't notify about new releases any more" +msgstr "Não notifique mais sobre novas versões" + +#: src/slic3r/GUI/UpdateDialogs.cpp:91 src/slic3r/GUI/UpdateDialogs.cpp:207 +msgid "Configuration update" +msgstr "Atualização de config." + +#: src/slic3r/GUI/UpdateDialogs.cpp:91 +msgid "Configuration update is available" +msgstr "A atualização de config. está disponível" + +#: src/slic3r/GUI/UpdateDialogs.cpp:94 +msgid "" +"Would you like to install it?\n" +"\n" +"Note that a full configuration snapshot will be created first. It can then " +"be restored at any time should there be a problem with the new version.\n" +"\n" +"Updated configuration bundles:" +msgstr "" +"Gostaria de instalá-lo?\n" +"\n" +"Observe que uma captura da config. completa será criado primeiro. Ele pode " +"então ser restaurado a qualquer momento se houver um problema com a nova " +"versão.\n" +"\n" +"Pacotes de config. atualizados:" + +#: src/slic3r/GUI/UpdateDialogs.cpp:115 +msgid "Comment:" +msgstr "Comentário:" + +#: src/slic3r/GUI/UpdateDialogs.cpp:151 +#, c-format +msgid "%s incompatibility" +msgstr "%s incompatibilidade" + +#: src/slic3r/GUI/UpdateDialogs.cpp:152 +#, c-format +msgid "%s configuration is incompatible" +msgstr "%s config. é incompatível" + +#: src/slic3r/GUI/UpdateDialogs.cpp:157 +#, c-format +msgid "" +"This version of %s is not compatible with currently installed configuration " +"bundles.\n" +"This probably happened as a result of running an older %s after using a " +"newer one.\n" +"\n" +"You may either exit %s and try again with a newer version, or you may re-run " +"the initial configuration. Doing so will create a backup snapshot of the " +"existing configuration before installing files compatible with this %s.\n" +msgstr "" +"Esta versão do %s não é compatível com pacotes de config. atualmente " +"instalados.\n" +"Isso provavelmente aconteceu como resultado da execução de um %s mais antigo " +"depois de usar um mais recente.\n" +"\n" +"Você pode sair %s e tente novamente com uma versão mais recente, ou você " +"pode executar novamente a config. inicial. Isso criará um instantâneo de " +"backup da config. existente antes de instalar os arquivos compatíveis com " +"este %s.\n" + +#: src/slic3r/GUI/UpdateDialogs.cpp:166 +#, c-format +msgid "This %s version: %s" +msgstr "Esta versão %s : %s" + +#: src/slic3r/GUI/UpdateDialogs.cpp:171 +msgid "Incompatible bundles:" +msgstr "Pacotes incompatíveis:" + +#: src/slic3r/GUI/UpdateDialogs.cpp:187 +#, c-format +msgid "Exit %s" +msgstr "Saída %s" + +#: src/slic3r/GUI/UpdateDialogs.cpp:190 +msgid "Re-configure" +msgstr "Re-config.urar" + +#: src/slic3r/GUI/UpdateDialogs.cpp:211 +#, c-format +msgid "" +"%s now uses an updated configuration structure.\n" +"\n" +"So called 'System presets' have been introduced, which hold the built-in " +"default settings for various printers. These System presets cannot be " +"modified, instead, users now may create their own presets inheriting " +"settings from one of the System presets.\n" +"An inheriting preset may either inherit a particular value from its parent " +"or override it with a customized value.\n" +"\n" +"Please proceed with the %s that follows to set up the new presets and to " +"choose whether to enable automatic preset updates." +msgstr "" +"%s agora usa uma estrutura de config. atualizada.\n" +"\n" +"Assim chamado ' Predefinições do sistema ' foram introduzidas, que mantêm as " +"config. padrão internas para várias impressoras. Essas predefinições do " +"sistema não podem ser modificadas, em vez disso, os usuários agora podem " +"criar suas próprias predefinições herdando as config. de uma das " +"predefinições do sistema.\n" +"Uma predefinição herdada pode herdar um valor específico de seu pai ou " +"substituí-lo por um valor personalizado.\n" +"\n" +"Por favor, prossiga com o %s que se segue para config.urar as novas " +"predefinições e para escolher se deseja ativar as atualizações automáticas " +"predefinidas." + +#: src/slic3r/GUI/UpdateDialogs.cpp:227 +msgid "For more information please visit our wiki page:" +msgstr "Para mais informações, visite a nossa página wiki:" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:14 +msgid "Ramming customization" +msgstr "Personalização de Ramming" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:40 +msgid "" +"Ramming denotes the rapid extrusion just before a tool change in a single-" +"extruder MM printer. Its purpose is to properly shape the end of the " +"unloaded filament so it does not prevent insertion of the new filament and " +"can itself be reinserted later. This phase is important and different " +"materials can require different extrusion speeds to get the good shape. For " +"this reason, the extrusion rates during ramming are adjustable.\n" +"\n" +"This is an expert-level setting, incorrect adjustment will likely lead to " +"jams, extruder wheel grinding into filament etc." +msgstr "" +"O Ramming denota a extrusão rápida apenas antes que uma mudança da " +"ferramenta em uma única-extrusora a impressora de multifilamentos Sua " +"finalidade é moldar corretamente a extremidade do filamento descarregado " +"assim que não impede a inserção do filamento novo e pode próprio ser " +"reintroduzido mais tarde. Esta fase é importante e os materiais diferentes " +"podem exigir velocidades diferentes da extrusão para começ a boa forma. Por " +"esta razão, as taxas de extrusão durante a batendo são ajustáveis.\n" +"\n" +"Esta é uma config. de nível especialista, ajuste incorreto provavelmente " +"levará a compotas, roda extrusora moagem em filamento etc." + +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 +msgid "Total ramming time" +msgstr "Tempo total de Ramming" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:84 +msgid "Total rammed volume" +msgstr "Volume total de Ramming" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:88 +msgid "Ramming line width" +msgstr "Largura da linha de Ramming" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:90 +msgid "Ramming line spacing" +msgstr "Espaçamento de linha de Ramming" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:141 +msgid "Wipe tower - Purging volume adjustment" +msgstr "Torre de limpeza - Ajuste de volume de purga" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:225 +msgid "" +"Here you can adjust required purging volume (mm³) for any given pair of " +"tools." +msgstr "" +"Aqui você pode ajustar o volume de purga necessário (mm ³) para qualquer par " +"dado de ferramentas." + +#: src/slic3r/GUI/WipeTowerDialog.cpp:226 +msgid "Extruder changed to" +msgstr "Extrusora alterada para" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:234 +msgid "unloaded" +msgstr "descarregado" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:235 +msgid "loaded" +msgstr "carregado" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:240 +msgid "Tool #" +msgstr "Ferramenta #" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:247 +msgid "" +"Total purging volume is calculated by summing two values below, depending on " +"which tools are loaded/unloaded." +msgstr "" +"O volume de purga total é calculado somando-se dois valores abaixo, " +"dependendo de quais ferramentas são carregadas/descarregadas." + +#: src/slic3r/GUI/WipeTowerDialog.cpp:248 +msgid "Volume to purge (mm³) when the filament is being" +msgstr "Volume a purgar (mm ³) quando o filamento está a ser" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:262 +msgid "From" +msgstr "De" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:327 +msgid "" +"Switching to simple settings will discard changes done in the advanced " +"mode!\n" +"\n" +"Do you want to proceed?" +msgstr "" +"Mudar para config. simples irá descartar as alterações feitas no modo " +"avançado!\n" +"\n" +"Você quer prosseguir?" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 +msgid "Show simplified settings" +msgstr "Mostrar config. simplificadas" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 +msgid "Show advanced settings" +msgstr "Mostrar opções avançadas" + +#: src/slic3r/GUI/wxExtensions.cpp:471 +msgid "Instances" +msgstr "Instâncias" + +#: src/slic3r/GUI/wxExtensions.cpp:475 src/slic3r/GUI/wxExtensions.cpp:619 +#, c-format +msgid "Instance %d" +msgstr "Instância %d" + +#: src/slic3r/GUI/wxExtensions.cpp:509 +msgid "Range" +msgstr "Intervalo" + +#: src/slic3r/GUI/wxExtensions.cpp:2731 +msgid "One layer mode" +msgstr "Modo de uma camada" + +#: src/slic3r/GUI/wxExtensions.cpp:2732 +msgid "Add/Del color change" +msgstr "Add/Excluir mudança de cor" + +#: src/slic3r/GUI/wxExtensions.cpp:2733 +msgid "Discard all color changes" +msgstr "Descartar todas as alterações de cor" + +#: src/slic3r/GUI/wxExtensions.cpp:2993 +#, c-format +msgid "Switch to the %s mode" +msgstr "Mude para o modo %s" + +#: src/slic3r/GUI/wxExtensions.cpp:2994 +#, c-format +msgid "Current mode is %s" +msgstr "O modo atual é %s" + +#: src/slic3r/Utils/Duet.cpp:51 +msgid "Connection to Duet works correctly." +msgstr "A conexão com o Duet funciona corretamente." + +#: src/slic3r/Utils/Duet.cpp:56 +msgid "Could not connect to Duet" +msgstr "Não foi possível conectar-se ao Duet" + +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:154 +msgid "Unknown error occured" +msgstr "Ocorreu um erro desconhecido" + +#: src/slic3r/Utils/Duet.cpp:148 +msgid "Wrong password" +msgstr "Senha incorreta" + +#: src/slic3r/Utils/Duet.cpp:151 +msgid "Could not get resources to create a new connection" +msgstr "Não foi possível obter recursos para criar uma nova conexão" + +#: src/slic3r/Utils/OctoPrint.cpp:70 +#, c-format +msgid "Mismatched type of print host: %s" +msgstr "Tipo incompatível de host de impressão: %s" + +#: src/slic3r/Utils/OctoPrint.cpp:85 +msgid "Connection to OctoPrint works correctly." +msgstr "A ligação ao OctoPrint funciona correctamente." + +#: src/slic3r/Utils/OctoPrint.cpp:91 +msgid "Could not connect to OctoPrint" +msgstr "Não foi possível conectar-se ao OctoPrint" + +#: src/slic3r/Utils/OctoPrint.cpp:91 +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "Nota: OctoPrint versão pelo menos 1.1.0 é necessária." + +#: src/slic3r/Utils/OctoPrint.cpp:196 +msgid "Connection to Prusa SL1 works correctly." +msgstr "A conexão com o Prusa SL1 funciona corretamente." + +#: src/slic3r/Utils/OctoPrint.cpp:201 +msgid "Could not connect to Prusa SLA" +msgstr "Não foi possível conectar-se a Prusa SLA" + +#: src/slic3r/Utils/PresetUpdater.cpp:614 +#, c-format +msgid "requires min. %s and max. %s" +msgstr "requer min . %s e máx. %s" + +#: src/slic3r/Utils/PresetUpdater.cpp:619 +#, c-format +msgid "requires min. %s" +msgstr "requer min . %s" + +#: src/slic3r/Utils/PresetUpdater.cpp:621 +#, c-format +msgid "requires max. %s" +msgstr "requer Max. %s" + +#: src/slic3r/Utils/FixModelByWin10.cpp:219 +#: src/slic3r/Utils/FixModelByWin10.cpp:359 +msgid "Exporting source model" +msgstr "Exportando o modelo de origem" + +#: src/slic3r/Utils/FixModelByWin10.cpp:235 +msgid "Failed loading the input model." +msgstr "Falha ao carregar o modelo de entrada." + +#: src/slic3r/Utils/FixModelByWin10.cpp:242 +msgid "Repairing model by the Netfabb service" +msgstr "Modelo de reparação pelo serviço Netfabb" + +#: src/slic3r/Utils/FixModelByWin10.cpp:248 +msgid "Mesh repair failed." +msgstr "Falha na reparação de malha." + +#: src/slic3r/Utils/FixModelByWin10.cpp:251 +#: src/slic3r/Utils/FixModelByWin10.cpp:378 +msgid "Loading repaired model" +msgstr "Carregando o modelo reparado" + +#: src/slic3r/Utils/FixModelByWin10.cpp:263 +#: src/slic3r/Utils/FixModelByWin10.cpp:270 +#: src/slic3r/Utils/FixModelByWin10.cpp:302 +msgid "Saving mesh into the 3MF container failed." +msgstr "Falha ao salvar a malha 3MF no contêiner." + +#: src/slic3r/Utils/FixModelByWin10.cpp:340 +msgid "Model fixing" +msgstr "Fixação do modelo" + +#: src/slic3r/Utils/FixModelByWin10.cpp:341 +msgid "Exporting model..." +msgstr "Exportando o modelo..." + +#: src/slic3r/Utils/FixModelByWin10.cpp:368 +msgid "Export of a temporary 3mf file failed" +msgstr "Falha na exportação de um arquivo 3mf temporário" + +#: src/slic3r/Utils/FixModelByWin10.cpp:383 +msgid "Import of the repaired 3mf file failed" +msgstr "Falha na importação do arquivo 3mf reparado" + +#: src/slic3r/Utils/FixModelByWin10.cpp:385 +msgid "Repaired 3MF file does not contain any object" +msgstr "O arquivo 3MF reparado não contém nenhum objeto" + +#: src/slic3r/Utils/FixModelByWin10.cpp:387 +msgid "Repaired 3MF file contains more than one object" +msgstr "O arquivo 3MF reparado contém mais de um objeto" + +#: src/slic3r/Utils/FixModelByWin10.cpp:389 +msgid "Repaired 3MF file does not contain any volume" +msgstr "O arquivo 3MF reparado não contém nenhum volume" + +#: src/slic3r/Utils/FixModelByWin10.cpp:391 +msgid "Repaired 3MF file contains more than one volume" +msgstr "O arquivo 3MF reparado contém mais de um volume" + +#: src/slic3r/Utils/FixModelByWin10.cpp:400 +msgid "Model repair finished" +msgstr "Reparo do modelo terminado" + +#: src/slic3r/Utils/FixModelByWin10.cpp:406 +msgid "Model repair canceled" +msgstr "Reparo do modelo cancelado" + +#: src/slic3r/Utils/FixModelByWin10.cpp:423 +msgid "Model repaired successfully" +msgstr "Modelo reparado com sucesso" + +#: src/slic3r/Utils/FixModelByWin10.cpp:423 +#: src/slic3r/Utils/FixModelByWin10.cpp:426 +msgid "Model Repair by the Netfabb service" +msgstr "Reparação de modelos pelo serviço Netfabb" + +#: src/slic3r/Utils/FixModelByWin10.cpp:426 +msgid "Model repair failed: \n" +msgstr "Falha no reparo do modelo:\n" + +#: src/libslic3r/Zipper.cpp:32 +msgid "undefined error" +msgstr "erro indefinido" + +#: src/libslic3r/Zipper.cpp:34 +msgid "too many files" +msgstr "muitos arquivos" + +#: src/libslic3r/Zipper.cpp:36 +msgid "file too large" +msgstr "arquivo muito grande" + +#: src/libslic3r/Zipper.cpp:38 +msgid "unsupported method" +msgstr "método não suportado" + +#: src/libslic3r/Zipper.cpp:40 +msgid "unsupported encryption" +msgstr "criptografia sem suporte" + +#: src/libslic3r/Zipper.cpp:42 +msgid "unsupported feature" +msgstr "recurso não suportado" + +#: src/libslic3r/Zipper.cpp:44 +msgid "failed finding central directory" +msgstr "falha ao encontrar o diretório central" + +#: src/libslic3r/Zipper.cpp:46 +msgid "not a ZIP archive" +msgstr "não um arquivo ZIP" + +#: src/libslic3r/Zipper.cpp:48 +msgid "invalid header or archive is corrupted" +msgstr "cabeçalho ou arquivo inválido está corrompido" + +#: src/libslic3r/Zipper.cpp:50 +msgid "unsupported multidisk archive" +msgstr "arquivo Multidisk sem suporte" + +#: src/libslic3r/Zipper.cpp:52 +msgid "decompression failed or archive is corrupted" +msgstr "descompressão falhou ou arquivo está corrompido" + +#: src/libslic3r/Zipper.cpp:54 +msgid "compression failed" +msgstr "falha na compactação" + +#: src/libslic3r/Zipper.cpp:56 +msgid "unexpected decompressed size" +msgstr "tamanho descomprimido inesperado" + +#: src/libslic3r/Zipper.cpp:58 +msgid "CRC-32 check failed" +msgstr "Verificação CRC-32 falhou" + +#: src/libslic3r/Zipper.cpp:60 +msgid "unsupported central directory size" +msgstr "tamanho do diretório central não suportado" + +#: src/libslic3r/Zipper.cpp:62 +msgid "allocation failed" +msgstr "alocação falhou" + +#: src/libslic3r/Zipper.cpp:64 +msgid "file open failed" +msgstr "falha na abertura do arquivo" + +#: src/libslic3r/Zipper.cpp:66 +msgid "file create failed" +msgstr "falha na criação do arquivo" + +#: src/libslic3r/Zipper.cpp:68 +msgid "file write failed" +msgstr "falha na gravação do arquivo" + +#: src/libslic3r/Zipper.cpp:70 +msgid "file read failed" +msgstr "falha na leitura do arquivo" + +#: src/libslic3r/Zipper.cpp:72 +msgid "file close failed" +msgstr "falha ao fechar o arquivo" + +#: src/libslic3r/Zipper.cpp:74 +msgid "file seek failed" +msgstr "falha na busca de arquivo" + +#: src/libslic3r/Zipper.cpp:76 +msgid "file stat failed" +msgstr "falha no status do arquivo" + +#: src/libslic3r/Zipper.cpp:78 +msgid "invalid parameter" +msgstr "parâmetro inválido" + +#: src/libslic3r/Zipper.cpp:80 +msgid "invalid filename" +msgstr "nome de arquivo inválido" + +#: src/libslic3r/Zipper.cpp:82 +msgid "buffer too small" +msgstr "buffer muito pequeno" + +#: src/libslic3r/Zipper.cpp:84 +msgid "internal error" +msgstr "erro interno" + +#: src/libslic3r/Zipper.cpp:86 +msgid "file not found" +msgstr "arquivo não encontrado" + +#: src/libslic3r/Zipper.cpp:88 +msgid "archive is too large" +msgstr "arquivo é muito grande" + +#: src/libslic3r/Zipper.cpp:90 +msgid "validation failed" +msgstr "falha na validação" + +#: src/libslic3r/Zipper.cpp:92 +msgid "write calledback failed" +msgstr "write calledback falhou" + +#: src/libslic3r/Zipper.cpp:102 +msgid "Error with zip archive" +msgstr "Erro com arquivo zip" + +#: src/libslic3r/Print.cpp:1112 +msgid "All objects are outside of the print volume." +msgstr "Todos os objetos estão fora do volume de impressão." + +#: src/libslic3r/Print.cpp:1139 +msgid "Some objects are too close; your extruder will collide with them." +msgstr "Alguns objetos são muito próximos; sua extrusora irá colidir com eles." + +#: src/libslic3r/Print.cpp:1154 +msgid "" +"Some objects are too tall and cannot be printed without extruder collisions." +msgstr "" +"Alguns objetos são muito altos e não podem ser impressos sem colisões de " +"extrusoras." + +#: src/libslic3r/Print.cpp:1164 +msgid "The Spiral Vase option can only be used when printing a single object." +msgstr "A opção vaso espiral só pode ser usada ao imprimir um único objeto." + +#: src/libslic3r/Print.cpp:1171 +msgid "" +"The Spiral Vase option can only be used when printing single material " +"objects." +msgstr "" +"A opção vaso espiral só pode ser usada ao imprimir objetos de material único." + +#: src/libslic3r/Print.cpp:1184 +msgid "" +"The wipe tower is only supported if all extruders have the same nozzle " +"diameter and use filaments of the same diameter." +msgstr "" +"A torre de limpeza só é suportada se todas as extrusoras tiverem o mesmo " +"diâmetro da ponteira e usarem filamentos do mesmo diâmetro." + +#: src/libslic3r/Print.cpp:1189 +msgid "" +"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " +"and Repetier G-code flavors." +msgstr "" +"A Wipe Tower é atualmente suportada apenas para os firmwares Marlin, RepRap/" +"Sprinter e Repetier G-code." + +#: src/libslic3r/Print.cpp:1191 +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" +"A torre da limpeza é suportada atualmente somente com o endereçamento " +"relativo da extrusora (use_relative_e_distances = 1)." + +#: src/libslic3r/Print.cpp:1193 +msgid "Ooze prevention is currently not supported with the wipe tower enabled." +msgstr "" +"A prevenção de escorrimento não é suportada atualmente com a torre da " +"limpeza permitida." + +#: src/libslic3r/Print.cpp:1214 +msgid "" +"The Wipe Tower is only supported for multiple objects if they have equal " +"layer heights" +msgstr "" +"A torre de limpeza só é suportada para vários objetos se eles tiverem " +"alturas de camada iguais" + +#: src/libslic3r/Print.cpp:1216 +msgid "" +"The Wipe Tower is only supported for multiple objects if they are printed " +"over an equal number of raft layers" +msgstr "" +"A torre de limpeza só é suportada para vários objetos se elas forem " +"impressas em um número igual de camadas de estrado" + +#: src/libslic3r/Print.cpp:1218 +msgid "" +"The Wipe Tower is only supported for multiple objects if they are printed " +"with the same support_material_contact_distance" +msgstr "" +"A torre de limpeza só é suportado para vários objetos se eles são impressos " +"com a mesma distância de contato do suporte" + +#: src/libslic3r/Print.cpp:1220 +msgid "" +"The Wipe Tower is only supported for multiple objects if they are sliced " +"equally." +msgstr "" +"A torre de limpeza só é suportada para vários objetos se eles são fatiados " +"igualmente." + +#: src/libslic3r/Print.cpp:1248 +msgid "" +"The Wipe tower is only supported if all objects have the same layer height " +"profile" +msgstr "" +"A torre de limpeza só é suportada se todos os objetos tiverem o mesmo perfil " +"de altura da camada" + +#: src/libslic3r/Print.cpp:1258 +msgid "The supplied settings will cause an empty print." +msgstr "As config. fornecidas causarão uma impressão vazia." + +#: src/libslic3r/Print.cpp:1275 +msgid "" +"One or more object were assigned an extruder that the printer does not have." +msgstr "" +"Um ou mais objetos foram atribuídos a uma extrusora que a impressora não tem." + +#: src/libslic3r/Print.cpp:1284 +msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" +msgstr "" +"%1% = %2% mm é muito baixo para ser impresso a uma altura de camada %3% mm" + +#: src/libslic3r/Print.cpp:1287 +msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" +msgstr "" +"Excesso %1%=%2% milímetro a ser imprimível com um diâmetro da ponteira %3% " +"milímetro" + +#: src/libslic3r/Print.cpp:1298 +msgid "" +"Printing with multiple extruders of differing nozzle diameters. If support " +"is to be printed with the current extruder (support_material_extruder == 0 " +"or support_material_interface_extruder == 0), all nozzles have to be of the " +"same diameter." +msgstr "" +"Impressão com múltiplas extrusoras de diferentes diâmetros de bicos. Se a " +"sustentação deve ser imprimida com a extrusora atual " +"(support_material_extruder = = 0 ou support_material_interface_extruder = = " +"0), todos as ponteiras têm que ser do mesmo diâmetro." + +#: src/libslic3r/Print.cpp:1306 +msgid "" +"For the Wipe Tower to work with the soluble supports, the support layers " +"need to be synchronized with the object layers." +msgstr "" +"Para que a torre de limpeza funcione com os suportes solúveis, as camadas de " +"suporte precisam ser sincronizadas com as camadas de objeto." + +#: src/libslic3r/Print.cpp:1310 +msgid "" +"The Wipe Tower currently supports the non-soluble supports only if they are " +"printed with the current extruder without triggering a tool change. (both " +"support_material_extruder and support_material_interface_extruder need to be " +"set to 0)." +msgstr "" +"A torre de limpeza suporta atualmente os suportes não-solúveis somente se " +"são imprimidos com o extrusor atual sem provocar uma mudança da ferramenta. " +"(ambos support_material_extruder e support_material_interface_extruder " +"precisam ser definidos como 0)." + +#: src/libslic3r/Print.cpp:1332 +msgid "First layer height can't be greater than nozzle diameter" +msgstr "" +"A primeira altura da camada não pode ser maior do que o diâmetro da ponteira" + +#: src/libslic3r/Print.cpp:1337 +msgid "Layer height can't be greater than nozzle diameter" +msgstr "A altura da camada não pode ser maior do que o diâmetro da ponteira" + +#: src/libslic3r/Print.cpp:1492 +msgid "Infilling layers" +msgstr "Camadas de preenchimento" + +#: src/libslic3r/Print.cpp:1500 +msgid "Generating skirt" +msgstr "Gerando saia" + +#: src/libslic3r/Print.cpp:1508 +msgid "Generating brim" +msgstr "Gerando a aba" + +#: src/libslic3r/Print.cpp:1536 +msgid "Exporting G-code" +msgstr "Exportando o G-code" + +#: src/libslic3r/Print.cpp:1540 +msgid "Generating G-code" +msgstr "Gerando G-code" + +#: src/libslic3r/SLAPrint.cpp:64 +msgid "Slicing model" +msgstr "Modelo de fatiamento" + +#: src/libslic3r/SLAPrint.cpp:65 src/libslic3r/SLAPrint.cpp:899 +msgid "Generating support points" +msgstr "Gerando pontos de suporte" + +#: src/libslic3r/SLAPrint.cpp:66 +msgid "Generating support tree" +msgstr "Gerando suporte em árvore" + +#: src/libslic3r/SLAPrint.cpp:67 +msgid "Generating pad" +msgstr "Gerando pad" + +#: src/libslic3r/SLAPrint.cpp:68 +msgid "Slicing supports" +msgstr "Fatiando suportes" + +#: src/libslic3r/SLAPrint.cpp:85 +msgid "Merging slices and calculating statistics" +msgstr "Mesclando camadas e calculando estatísticas" + +#: src/libslic3r/SLAPrint.cpp:86 +msgid "Rasterizing layers" +msgstr "Rasterizando camadas" + +#: src/libslic3r/SLAPrint.cpp:661 +msgid "" +"Cannot proceed without support points! Add support points or disable support " +"generation." +msgstr "" +"Não pode prosseguir sem pontos de suporte! Adicione pontos de suporte ou " +"desative a geração de suporte." + +#: src/libslic3r/SLAPrint.cpp:678 +msgid "" +"Elevation is too low for object. Use the \"Pad around object\" feature to " +"print the object without elevation." +msgstr "" +"A elevação é muito baixa para o objeto. Use o recurso \"pad ao redor do " +"objeto\" para imprimir o objeto sem elevação." + +#: src/libslic3r/SLAPrint.cpp:684 +msgid "" +"The endings of the support pillars will be deployed on the gap between the " +"object and the pad. 'Support base safety distance' has to be greater than " +"the 'Pad object gap' parameter to avoid this." +msgstr "" +"As terminações dos pilares de suporte serão implantadas na lacuna entre o " +"objeto e o pad. ' Distância de segurança de base de suporte ' tem de ser " +"maior do que o parâmetro ' pad objecto Gap ' para evitar este." + +#: src/libslic3r/SLAPrint.cpp:696 +msgid "Exposition time is out of printer profile bounds." +msgstr "O tempo de exposição está fora dos limites do perfil da impressora." + +#: src/libslic3r/SLAPrint.cpp:703 +msgid "Initial exposition time is out of printer profile bounds." +msgstr "" +"O tempo de exposição inicial está fora dos limites do perfil da impressora." + +#: src/libslic3r/SLAPrint.cpp:787 +msgid "" +"Slicing had to be stopped due to an internal error: Inconsistent slice index." +msgstr "" +"O fatiamento teve que ser parado devido a um erro interno: índice de " +"fatiamento inconsistente." + +#: src/libslic3r/SLAPrint.cpp:982 src/libslic3r/SLAPrint.cpp:992 +#: src/libslic3r/SLAPrint.cpp:1033 +msgid "Visualizing supports" +msgstr "Visualizando suportes" + +#: src/libslic3r/SLAPrint.cpp:1566 +msgid "Slicing done" +msgstr "Fatiamento pronto" + +#: src/libslic3r/PrintBase.cpp:71 +msgid "Failed processing of the output_filename_format template." +msgstr "Falha no processamento do modelo output_filename_format." + +#: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 +msgid "Printer technology" +msgstr "Tecnologia da impressora" + +#: src/libslic3r/PrintConfig.cpp:51 +msgid "Bed shape" +msgstr "Formato da mesa" + +#: src/libslic3r/PrintConfig.cpp:56 +msgid "Bed custom texture" +msgstr "Textura customizada da mesa" + +#: src/libslic3r/PrintConfig.cpp:61 +msgid "Bed custom model" +msgstr "Modelo customizado da mesa" + +#: src/libslic3r/PrintConfig.cpp:68 +msgid "" +"This setting controls the height (and thus the total number) of the slices/" +"layers. Thinner layers give better accuracy but take more time to print." +msgstr "" +"Essa config. controla a altura (e, portanto, o número total) das fatias/" +"camadas. Camadas mais finas dão melhor precisão, mas levam mais tempo para " +"imprimir." + +#: src/libslic3r/PrintConfig.cpp:75 +msgid "Max print height" +msgstr "Altura máxima de impressão" + +#: src/libslic3r/PrintConfig.cpp:76 +msgid "" +"Set this to the maximum height that can be reached by your extruder while " +"printing." +msgstr "" +"Defina isto para a altura máxima que pode ser alcançada pela sua extrusora " +"durante a impressão." + +#: src/libslic3r/PrintConfig.cpp:82 +msgid "Slice gap closing radius" +msgstr "Raio de fechamento da abertura da fatia" + +#: src/libslic3r/PrintConfig.cpp:84 +msgid "" +"Cracks smaller than 2x gap closing radius are being filled during the " +"triangle mesh slicing. The gap closing operation may reduce the final print " +"resolution, therefore it is advisable to keep the value reasonably low." +msgstr "" +"As rachaduras menores do que duas vezes o raio de fechamento estão sendo " +"preenchidas durante o fatiamento da malha triangular. A operação de " +"fechamento de vão pode reduzir a resolução final de impressão, portanto, é " +"aconselhável manter o valor razoavelmente baixo." + +#: src/libslic3r/PrintConfig.cpp:92 +msgid "Hostname, IP or URL" +msgstr "Hostname, IP ou URL" + +#: src/libslic3r/PrintConfig.cpp:93 +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the hostname, IP address or URL of the printer host instance." +msgstr "" +"Slic3r pode carregar arquivos de G-code para um host de impressora. Este " +"campo deve conter o nome de host, o endereço IP ou a URL da instância de " +"host da impressora." + +#: src/libslic3r/PrintConfig.cpp:99 +msgid "API Key / Password" +msgstr "Chave de API/senha" + +#: src/libslic3r/PrintConfig.cpp:100 +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the API Key or the password required for authentication." +msgstr "" +"Slic3r pode carregar arquivos de G-code para um host de impressora. Este " +"campo deve conter a chave de API ou a senha exigida para a autenticação." + +#: src/libslic3r/PrintConfig.cpp:106 +msgid "HTTPS CA File" +msgstr "Arquivo de CA HTTPS" + +#: src/libslic3r/PrintConfig.cpp:107 +msgid "" +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " +"in crt/pem format. If left blank, the default OS CA certificate repository " +"is used." +msgstr "" +"O arquivo de certificado de CA personalizado pode ser especificado para " +"conexões HTTPS OctoPrint, no formato CRT/PEM. Se deixado em branco, o " +"repositório de certificados do OS CA padrão é usado." + +#: src/libslic3r/PrintConfig.cpp:121 +msgid "Avoid crossing perimeters" +msgstr "Evitar cruzamento de perímetros" + +#: src/libslic3r/PrintConfig.cpp:122 +msgid "" +"Optimize travel moves in order to minimize the crossing of perimeters. This " +"is mostly useful with Bowden extruders which suffer from oozing. This " +"feature slows down both the print and the G-code generation." +msgstr "" +"Otimize os movimentos de viagem para minimizar o cruzamento de perímetros. " +"Isto é principalmente útil com extrusoras Bowden que sofrem de escorrimento. " +"Este recurso retarda a impressão e a geração de G-code." + +#: src/libslic3r/PrintConfig.cpp:129 src/libslic3r/PrintConfig.cpp:2027 +msgid "Other layers" +msgstr "Outras camadas" + +#: src/libslic3r/PrintConfig.cpp:130 +msgid "" +"Bed temperature for layers after the first one. Set this to zero to disable " +"bed temperature control commands in the output." +msgstr "" +"Temperatura da mesa para camadas após o primeiro. Defina isso como zero para " +"desabilitar os comandos de controle de temperatura da mesa na saída." + +#: src/libslic3r/PrintConfig.cpp:132 +msgid "Bed temperature" +msgstr "Temperatura da mesa" + +#: src/libslic3r/PrintConfig.cpp:139 +msgid "" +"This custom code is inserted at every layer change, right before the Z move. " +"Note that you can use placeholder variables for all Slic3r settings as well " +"as [layer_num] and [layer_z]." +msgstr "" +"Esse código personalizado é inserido em cada alteração de camada, logo antes " +"da movimentação Z. Observe que você pode usar variáveis de espaço reservado " +"para todas as config. Slic3r, bem como [layer_num] e [layer_z]." + +#: src/libslic3r/PrintConfig.cpp:149 +msgid "Between objects G-code" +msgstr "G-code entre objetos" + +#: src/libslic3r/PrintConfig.cpp:150 +msgid "" +"This code is inserted between objects when using sequential printing. By " +"default extruder and bed temperature are reset using non-wait command; " +"however if M104, M109, M140 or M190 are detected in this custom code, Slic3r " +"will not add temperature commands. Note that you can use placeholder " +"variables for all Slic3r settings, so you can put a \"M109 " +"S[first_layer_temperature]\" command wherever you want." +msgstr "" +"Esse código é inserido entre objetos ao usar a impressão sequencial. Por " +"padrão, a extrusora e a temperatura da mesa são redefinidas usando o comando " +"não esperar; no entanto, se M104, M109, M140 ou M190 são detectados neste " +"código personalizado, Slic3r não adicionará comandos de temperatura. Observe " +"que você pode usar variáveis de espaço reservado para todas as config. de " +"Slic3r, para que você possa colocar um comando \"M109 S " +"[temperatura_primeira_camada]\" onde quiser." + +#: src/libslic3r/PrintConfig.cpp:161 +msgid "Number of solid layers to generate on bottom surfaces." +msgstr "Número de camadas sólidas para gerar em superfícies inferiores." + +#: src/libslic3r/PrintConfig.cpp:162 +msgid "Bottom solid layers" +msgstr "Camadas sólidas inferiores" + +#: src/libslic3r/PrintConfig.cpp:167 +msgid "Bridge" +msgstr "Ponte" + +#: src/libslic3r/PrintConfig.cpp:168 +msgid "" +"This is the acceleration your printer will use for bridges. Set zero to " +"disable acceleration control for bridges." +msgstr "" +"Esta é a aceleração que sua impressora usará para pontes. Defina zero para " +"desabilitar o controle de aceleração para pontes." + +#: src/libslic3r/PrintConfig.cpp:170 src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:840 src/libslic3r/PrintConfig.cpp:961 +#: src/libslic3r/PrintConfig.cpp:1130 src/libslic3r/PrintConfig.cpp:1183 +#: src/libslic3r/PrintConfig.cpp:1194 src/libslic3r/PrintConfig.cpp:1383 +msgid "mm/s²" +msgstr "mm/s²" + +#: src/libslic3r/PrintConfig.cpp:176 +msgid "Bridging angle" +msgstr "Ângulo de ponte" + +#: src/libslic3r/PrintConfig.cpp:178 +msgid "" +"Bridging angle override. If left to zero, the bridging angle will be " +"calculated automatically. Otherwise the provided angle will be used for all " +"bridges. Use 180° for zero angle." +msgstr "" +"Sobreposição de ângulo de ponte. Se deixado em zero, o ângulo de ponte será " +"calculado automaticamente. Caso contrário, o ângulo fornecido será usado " +"para todas as pontes. Use 180 ° para o ângulo zero." + +#: src/libslic3r/PrintConfig.cpp:181 src/libslic3r/PrintConfig.cpp:758 +#: src/libslic3r/PrintConfig.cpp:1619 src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1858 src/libslic3r/PrintConfig.cpp:2012 +#: src/libslic3r/PrintConfig.cpp:2197 src/libslic3r/PrintConfig.cpp:2614 +#: src/libslic3r/PrintConfig.cpp:2724 +msgid "°" +msgstr "°" + +#: src/libslic3r/PrintConfig.cpp:187 +msgid "Bridges fan speed" +msgstr "Velocidade da ventoinha nas pontes" + +#: src/libslic3r/PrintConfig.cpp:188 +msgid "This fan speed is enforced during all bridges and overhangs." +msgstr "" +"Esta velocidade da ventoinha é imposta durante todas as pontes e angulações." + +#: src/libslic3r/PrintConfig.cpp:189 src/libslic3r/PrintConfig.cpp:770 +#: src/libslic3r/PrintConfig.cpp:1203 src/libslic3r/PrintConfig.cpp:1266 +#: src/libslic3r/PrintConfig.cpp:1511 src/libslic3r/PrintConfig.cpp:2366 +#: src/libslic3r/PrintConfig.cpp:2654 +msgid "%" +msgstr "%" + +#: src/libslic3r/PrintConfig.cpp:196 +msgid "Bridge flow ratio" +msgstr "Relação de fluxo da ponte" + +#: src/libslic3r/PrintConfig.cpp:198 +msgid "" +"This factor affects the amount of plastic for bridging. You can decrease it " +"slightly to pull the extrudates and prevent sagging, although default " +"settings are usually good and you should experiment with cooling (use a fan) " +"before tweaking this." +msgstr "" +"Esse fator afeta a quantidade de plástico para a ponte. Você pode diminuí-lo " +"um pouco para puxar as extrusões e evitar a flacidez, embora as config. " +"padrão são geralmente boas e você deve experimentar com refrigeração (use " +"uma ventoinha) antes de ajustes isso." + +#: src/libslic3r/PrintConfig.cpp:208 +msgid "Bridges" +msgstr "Pontes" + +#: src/libslic3r/PrintConfig.cpp:210 +msgid "Speed for printing bridges." +msgstr "Velocidade para a impressão de pontes." + +#: src/libslic3r/PrintConfig.cpp:211 src/libslic3r/PrintConfig.cpp:592 +#: src/libslic3r/PrintConfig.cpp:600 src/libslic3r/PrintConfig.cpp:609 +#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:644 +#: src/libslic3r/PrintConfig.cpp:663 src/libslic3r/PrintConfig.cpp:899 +#: src/libslic3r/PrintConfig.cpp:1026 src/libslic3r/PrintConfig.cpp:1112 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1172 src/libslic3r/PrintConfig.cpp:1225 +#: src/libslic3r/PrintConfig.cpp:1284 src/libslic3r/PrintConfig.cpp:1412 +#: src/libslic3r/PrintConfig.cpp:1586 src/libslic3r/PrintConfig.cpp:1595 +#: src/libslic3r/PrintConfig.cpp:1991 src/libslic3r/PrintConfig.cpp:2104 +msgid "mm/s" +msgstr "mm/s" + +#: src/libslic3r/PrintConfig.cpp:218 +msgid "Brim width" +msgstr "Largura da aba" + +#: src/libslic3r/PrintConfig.cpp:219 +msgid "" +"Horizontal width of the brim that will be printed around each object on the " +"first layer." +msgstr "" +"Largura horizontal da aba que será impressa em torno de cada objeto na " +"primeira camada." + +#: src/libslic3r/PrintConfig.cpp:226 +msgid "Clip multi-part objects" +msgstr "Clip objetos de várias partes" + +#: src/libslic3r/PrintConfig.cpp:227 +msgid "" +"When printing multi-material objects, this settings will make Slic3r to clip " +"the overlapping object parts one by the other (2nd part will be clipped by " +"the 1st, 3rd part will be clipped by the 1st and 2nd etc)." +msgstr "" +"Ao imprimir objetos de vários materiais, essas config. farão com que o " +"Slic3r recorte as partes do objeto sobrepostas uma pela outra (2ª parte será " +"cortada pela 1ª, 3ª parte será cortada pela 1ª e 2ª, etc.)." + +#: src/libslic3r/PrintConfig.cpp:234 +msgid "Colorprint height" +msgstr "Altura da impressão colorida" + +#: src/libslic3r/PrintConfig.cpp:235 +msgid "Heights at which a filament change is to occur." +msgstr "Alturas em que uma mudança do filamento ocorre." + +#: src/libslic3r/PrintConfig.cpp:245 +msgid "Compatible printers condition" +msgstr "Condição de impressoras compatíveis" + +#: src/libslic3r/PrintConfig.cpp:246 +msgid "" +"A boolean expression using the configuration values of an active printer " +"profile. If this expression evaluates to true, this profile is considered " +"compatible with the active printer profile." +msgstr "" +"Uma expressão booleana usando os valores de config. de um perfil de " +"impressora ativo. Se essa expressão for avaliada como verdadeira, esse " +"perfil será considerado compatível com o perfil de impressora ativo." + +#: src/libslic3r/PrintConfig.cpp:260 +msgid "Compatible print profiles condition" +msgstr "Condição de perfis de impressão compatíveis" + +#: src/libslic3r/PrintConfig.cpp:261 +msgid "" +"A boolean expression using the configuration values of an active print " +"profile. If this expression evaluates to true, this profile is considered " +"compatible with the active print profile." +msgstr "" +"Uma expressão booleana usando os valores de config. de um perfil de " +"impressão ativo. Se essa expressão for avaliada como verdadeira, esse perfil " +"será considerado compatível com o perfil de impressão ativo." + +#: src/libslic3r/PrintConfig.cpp:278 +msgid "Complete individual objects" +msgstr "Complete objetos individuais" + +#: src/libslic3r/PrintConfig.cpp:279 +msgid "" +"When printing multiple objects or copies, this feature will complete each " +"object before moving onto next one (and starting it from its bottom layer). " +"This feature is useful to avoid the risk of ruined prints. Slic3r should " +"warn and prevent you from extruder collisions, but beware." +msgstr "" +"Ao imprimir vários objetos ou cópias, esse recurso concluirá cada objeto " +"antes de passar para o próximo (e iniciando-o de sua camada inferior). Este " +"recurso é útil para evitar o risco de impressões arruinadas. Slic3r deve " +"avisar e impedi-lo de colisões de extrusoras, mas cuidado." + +#: src/libslic3r/PrintConfig.cpp:287 +msgid "Enable auto cooling" +msgstr "Ativar o resfriamento automático" + +#: src/libslic3r/PrintConfig.cpp:288 +msgid "" +"This flag enables the automatic cooling logic that adjusts print speed and " +"fan speed according to layer printing time." +msgstr "" +"Esse sinalizador permite a lógica de resfriamento automática que ajusta a " +"velocidade de impressão e a velocidade do ventoinha de acordo com o tempo de " +"impressão da camada." + +#: src/libslic3r/PrintConfig.cpp:293 +msgid "Cooling tube position" +msgstr "Posição do tubo de resfriamento" + +#: src/libslic3r/PrintConfig.cpp:294 +msgid "Distance of the center-point of the cooling tube from the extruder tip." +msgstr "" +"Distância do ponto central do tubo de resfriamento da ponta da extrusora." + +#: src/libslic3r/PrintConfig.cpp:301 +msgid "Cooling tube length" +msgstr "Comprimento do tubo de resfriamento" + +#: src/libslic3r/PrintConfig.cpp:302 +msgid "Length of the cooling tube to limit space for cooling moves inside it." +msgstr "" +"Comprimento do tubo de resfriamento para limitar o espaço para movimentos de " +"resfriamento dentro dele." + +#: src/libslic3r/PrintConfig.cpp:310 +msgid "" +"This is the acceleration your printer will be reset to after the role-" +"specific acceleration values are used (perimeter/infill). Set zero to " +"prevent resetting acceleration at all." +msgstr "" +"Esta é a aceleração que sua impressora será redefinida para depois que os " +"valores de aceleração específicos da função forem usados (perímetro/" +"preenchimento). Defina zero para evitar redefinir a aceleração em tudo." + +#: src/libslic3r/PrintConfig.cpp:319 +msgid "Default filament profile" +msgstr "Perfil de filamento padrão" + +#: src/libslic3r/PrintConfig.cpp:320 +msgid "" +"Default filament profile associated with the current printer profile. On " +"selection of the current printer profile, this filament profile will be " +"activated." +msgstr "" +"Perfil de filamento padrão associado ao perfil de impressora atual. Na " +"seleção do perfil da impressora atual, este perfil de filamento será ativado." + +#: src/libslic3r/PrintConfig.cpp:326 +msgid "Default print profile" +msgstr "Perfil de impressão padrão" + +#: src/libslic3r/PrintConfig.cpp:327 src/libslic3r/PrintConfig.cpp:2479 +#: src/libslic3r/PrintConfig.cpp:2490 +msgid "" +"Default print profile associated with the current printer profile. On " +"selection of the current printer profile, this print profile will be " +"activated." +msgstr "" +"Perfil de impressão padrão associado ao perfil de impressora atual. Na " +"seleção do perfil de impressora atual, este perfil de impressão será ativado." + +#: src/libslic3r/PrintConfig.cpp:333 +msgid "Disable fan for the first" +msgstr "Desabilite o ventoinha para a(s) primeira(s)" + +#: src/libslic3r/PrintConfig.cpp:334 +msgid "" +"You can set this to a positive value to disable fan at all during the first " +"layers, so that it does not make adhesion worse." +msgstr "" +"Você pode ajustar isto a um valor positivo para desabilitar a ventoinha " +"durante as primeiras camadas, de modo que melhore a adesão." + +#: src/libslic3r/PrintConfig.cpp:336 src/libslic3r/PrintConfig.cpp:971 +#: src/libslic3r/PrintConfig.cpp:1484 src/libslic3r/PrintConfig.cpp:1669 +#: src/libslic3r/PrintConfig.cpp:1730 src/libslic3r/PrintConfig.cpp:1894 +#: src/libslic3r/PrintConfig.cpp:1939 +msgid "layers" +msgstr "camadas" + +#: src/libslic3r/PrintConfig.cpp:343 +msgid "Don't support bridges" +msgstr "Não suporte pontes" + +#: src/libslic3r/PrintConfig.cpp:345 +msgid "" +"Experimental option for preventing support material from being generated " +"under bridged areas." +msgstr "" +"Opção experimental para impedir que o material de suporte seja gerado em " +"áreas com ponte." + +#: src/libslic3r/PrintConfig.cpp:351 +msgid "Distance between copies" +msgstr "Distância entre cópias" + +#: src/libslic3r/PrintConfig.cpp:352 +msgid "Distance used for the auto-arrange feature of the plater." +msgstr "Distância usada para o recurso de organizar automaticamente o prato." + +#: src/libslic3r/PrintConfig.cpp:359 +msgid "Elephant foot compensation" +msgstr "Compensação do pé do elefante" + +#: src/libslic3r/PrintConfig.cpp:361 +msgid "" +"The first layer will be shrunk in the XY plane by the configured value to " +"compensate for the 1st layer squish aka an Elephant Foot effect." +msgstr "" +"A primeira camada será encolhido no plano XY pelo valor config.urado para " +"compensar a 1ª camada esmagada, também conhecida como pé de elefante." + +#: src/libslic3r/PrintConfig.cpp:370 +msgid "" +"This end procedure is inserted at the end of the output file. Note that you " +"can use placeholder variables for all PrusaSlicer settings." +msgstr "" +"Este procedimento final é inserido no final do arquivo de saída. Observe que " +"você pode usar variáveis de espaço reservado para todas as config. de " +"PrusaSlicer." + +#: src/libslic3r/PrintConfig.cpp:380 +msgid "" +"This end procedure is inserted at the end of the output file, before the " +"printer end gcode (and before any toolchange from this filament in case of " +"multimaterial printers). Note that you can use placeholder variables for all " +"PrusaSlicer settings. If you have multiple extruders, the gcode is processed " +"in extruder order." +msgstr "" +"Este procedimento final é inserido no final do arquivo de saída, antes da " +"extremidade da impressora Gcode (e antes de qualquer troca de ferramenta " +"deste filamento em caso de impressoras multimaterial). Observe que você pode " +"usar variáveis de espaço reservado para todas as config. de PrusaSlicer. Se " +"você tiver várias extrusoras, o Gcode é processado em ordem de extrusora." + +#: src/libslic3r/PrintConfig.cpp:391 +msgid "Ensure vertical shell thickness" +msgstr "Assegure a espessura vertical da parede" + +#: src/libslic3r/PrintConfig.cpp:393 +msgid "" +"Add solid infill near sloping surfaces to guarantee the vertical shell " +"thickness (top+bottom solid layers)." +msgstr "" +"Adicionar preenchimento sólido perto de superfícies inclinadas para garantir " +"a espessura do escudo vertical (camadas sólidas no topo + base )." + +#: src/libslic3r/PrintConfig.cpp:399 +msgid "Top fill pattern" +msgstr "Padrão de preenchimento do topo" + +#: src/libslic3r/PrintConfig.cpp:401 +msgid "" +"Fill pattern for top infill. This only affects the top visible layer, and " +"not its adjacent solid shells." +msgstr "" +"Padrão de preenchimento para preenchimento do topo. Isto afeta somente a " +"camada visível superior, e não suas paredes adjacentes." + +#: src/libslic3r/PrintConfig.cpp:409 src/libslic3r/PrintConfig.cpp:821 +#: src/libslic3r/PrintConfig.cpp:1972 +msgid "Rectilinear" +msgstr "Rectilíneo" + +#: src/libslic3r/PrintConfig.cpp:410 src/libslic3r/PrintConfig.cpp:827 +msgid "Concentric" +msgstr "Concêntrico" + +#: src/libslic3r/PrintConfig.cpp:411 src/libslic3r/PrintConfig.cpp:831 +msgid "Hilbert Curve" +msgstr "Curva de Hilbert" + +#: src/libslic3r/PrintConfig.cpp:412 src/libslic3r/PrintConfig.cpp:832 +msgid "Archimedean Chords" +msgstr "Cordas Archimedean" + +#: src/libslic3r/PrintConfig.cpp:413 src/libslic3r/PrintConfig.cpp:833 +msgid "Octagram Spiral" +msgstr "Espiral estrelado" + +#: src/libslic3r/PrintConfig.cpp:419 +msgid "Bottom fill pattern" +msgstr "Padrão de preenchimento da base" + +#: src/libslic3r/PrintConfig.cpp:421 +msgid "" +"Fill pattern for bottom infill. This only affects the bottom external " +"visible layer, and not its adjacent solid shells." +msgstr "" +"Padrão de preenchimento para preenchimento da base. Isto afeta somente a " +"camada visível externa inferior, e não suas paredes adjacentes." + +#: src/libslic3r/PrintConfig.cpp:430 src/libslic3r/PrintConfig.cpp:440 +msgid "External perimeters" +msgstr "Perímetros externos" + +#: src/libslic3r/PrintConfig.cpp:432 +msgid "" +"Set this to a non-zero value to set a manual extrusion width for external " +"perimeters. If left zero, default extrusion width will be used if set, " +"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " +"(for example 200%), it will be computed over layer height." +msgstr "" +"Defina isso como um valor diferente de zero para definir uma largura de " +"extrusão manual para perímetros externos. Se for deixado zero, a largura de " +"extrusão padrão será usada se definido, caso contrário, 1,125 x diâmetro da " +"ponteira será usado. Se expresso em porcentagem(por exemplo 200%), será " +"calculado sobre a altura da camada." + +#: src/libslic3r/PrintConfig.cpp:435 src/libslic3r/PrintConfig.cpp:543 +#: src/libslic3r/PrintConfig.cpp:860 src/libslic3r/PrintConfig.cpp:872 +#: src/libslic3r/PrintConfig.cpp:992 src/libslic3r/PrintConfig.cpp:1017 +#: src/libslic3r/PrintConfig.cpp:1403 src/libslic3r/PrintConfig.cpp:1741 +#: src/libslic3r/PrintConfig.cpp:1847 src/libslic3r/PrintConfig.cpp:1915 +#: src/libslic3r/PrintConfig.cpp:2074 +msgid "mm or %" +msgstr "mm ou %" + +#: src/libslic3r/PrintConfig.cpp:442 +msgid "" +"This separate setting will affect the speed of external perimeters (the " +"visible ones). If expressed as percentage (for example: 80%) it will be " +"calculated on the perimeters speed setting above. Set to zero for auto." +msgstr "" +"Esta config. separada afetará a velocidade dos perímetros externos (os " +"visíveis). Se expresso em porcentagem(por exemplo: 80%) Ele será calculado " +"sobre a velocidade de perímetros config. acima. Defina como zero para auto." + +#: src/libslic3r/PrintConfig.cpp:445 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:1700 src/libslic3r/PrintConfig.cpp:1751 +#: src/libslic3r/PrintConfig.cpp:1958 src/libslic3r/PrintConfig.cpp:2086 +msgid "mm/s or %" +msgstr "mm/s ou %" + +#: src/libslic3r/PrintConfig.cpp:452 +msgid "External perimeters first" +msgstr "Perímetros externos primeiro" + +#: src/libslic3r/PrintConfig.cpp:454 +msgid "" +"Print contour perimeters from the outermost one to the innermost one instead " +"of the default inverse order." +msgstr "" +"Imprima perímetros de contorno do mais externo para o mais interno em vez da " +"ordem inversa padrão." + +#: src/libslic3r/PrintConfig.cpp:460 +msgid "Extra perimeters if needed" +msgstr "Perímetros extras se necessário" + +#: src/libslic3r/PrintConfig.cpp:462 +#, c-format +msgid "" +"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " +"keeps adding perimeters, until more than 70% of the loop immediately above " +"is supported." +msgstr "" +"Adicione mais perímetros quando necessário para evitar lacunas em paredes " +"inclinados. Slic3r continua adicionando perímetros, até que mais de 70% o do " +"loop imediatamente acima é suportado." + +#: src/libslic3r/PrintConfig.cpp:472 +msgid "" +"The extruder to use (unless more specific extruder settings are specified). " +"This value overrides perimeter and infill extruders, but not the support " +"extruders." +msgstr "" +"A extrusora a ser usada (a menos que config. de extrusoras mais específicas " +"sejam especificadas). Esse valor substitui as extrusoras de perímetro e " +"preenchimento, mas não as extrusoras de suporte." + +#: src/libslic3r/PrintConfig.cpp:484 +msgid "" +"Set this to the vertical distance between your nozzle tip and (usually) the " +"X carriage rods. In other words, this is the height of the clearance " +"cylinder around your extruder, and it represents the maximum depth the " +"extruder can peek before colliding with other printed objects." +msgstr "" +"Defina isto para a distância vertical entre a ponta do bico e (normalmente) " +"as hastes do X. Em outras palavras, esta é a altura do cilindro de folga em " +"torno de sua extrusora, e representa a profundidade máxima que a extrusora " +"pode espreitar antes de colidir com outros objetos impressos." + +#: src/libslic3r/PrintConfig.cpp:494 +msgid "Radius" +msgstr "Raio" + +#: src/libslic3r/PrintConfig.cpp:495 +msgid "" +"Set this to the clearance radius around your extruder. If the extruder is " +"not centered, choose the largest value for safety. This setting is used to " +"check for collisions and to display the graphical preview in the plater." +msgstr "" +"Defina isso para o raio de folga em torno de sua extrusora. Se a extrusora " +"não estiver centralizada, escolha o maior valor para a segurança. Essa " +"config. é usada para verificar colisões e exibir a visualização gráfica no " +"prato." + +#: src/libslic3r/PrintConfig.cpp:505 +msgid "Extruder Color" +msgstr "Cor da extrusora" + +#: src/libslic3r/PrintConfig.cpp:506 src/libslic3r/PrintConfig.cpp:566 +msgid "This is only used in the Slic3r interface as a visual help." +msgstr "Isso é usado apenas na interface Slic3r como uma ajuda visual." + +#: src/libslic3r/PrintConfig.cpp:512 +msgid "Extruder offset" +msgstr "Compensamento da extrusora" + +#: src/libslic3r/PrintConfig.cpp:513 +msgid "" +"If your firmware doesn't handle the extruder displacement you need the G-" +"code to take it into account. This option lets you specify the displacement " +"of each extruder with respect to the first one. It expects positive " +"coordinates (they will be subtracted from the XY coordinate)." +msgstr "" +"Se o seu firmware não manipula o deslocamento da extrusora, você precisa do " +"G-code para levá-lo em conta. Esta opção permite especificar o deslocamento " +"de cada extrusora em relação à primeira. Ele espera coordenadas positivas " +"(eles serão subtraída da coordenada XY)." + +#: src/libslic3r/PrintConfig.cpp:522 +msgid "Extrusion axis" +msgstr "Eixo de extrusão" + +#: src/libslic3r/PrintConfig.cpp:523 +msgid "" +"Use this option to set the axis letter associated to your printer's extruder " +"(usually E but some printers use A)." +msgstr "" +"Use esta opção para definir a letra do eixo associada à extrusora da sua " +"impressora (geralmente E, mas algumas impressoras usam A)." + +#: src/libslic3r/PrintConfig.cpp:528 +msgid "Extrusion multiplier" +msgstr "Multiplicador de extrusão" + +#: src/libslic3r/PrintConfig.cpp:529 +msgid "" +"This factor changes the amount of flow proportionally. You may need to tweak " +"this setting to get nice surface finish and correct single wall widths. " +"Usual values are between 0.9 and 1.1. If you think you need to change this " +"more, check filament diameter and your firmware E steps." +msgstr "" +"Esse fator altera a quantidade de fluxo proporcionalmente. Você pode " +"precisar de ajustar esta config. para obter acabamento de superfície " +"agradável e corrigir larguras de parede única. Os valores usuais são entre " +"0,9 e 1,1. Se você acha que precisa mudar isso mais, verifique o diâmetro do " +"filamento e os passos configurados no firmware da extrusora." + +#: src/libslic3r/PrintConfig.cpp:537 +msgid "Default extrusion width" +msgstr "Largura de extrusão padrão" + +#: src/libslic3r/PrintConfig.cpp:539 +msgid "" +"Set this to a non-zero value to allow a manual extrusion width. If left to " +"zero, Slic3r derives extrusion widths from the nozzle diameter (see the " +"tooltips for perimeter extrusion width, infill extrusion width etc). If " +"expressed as percentage (for example: 230%), it will be computed over layer " +"height." +msgstr "" +"Defina isso como um valor diferente de zero para permitir uma largura de " +"extrusão manual. Se deixado a zero, Slic3r deriva larguras da extrusão do " +"diâmetro da ponteira (veja as dicas ferramentas para a largura da extrusão " +"do perímetro, a largura de extrusão do preenchimento etc.). Se expresso como " +"porcentagem (por exemplo: 230%), ele será calculado sobre a altura da camada." + +#: src/libslic3r/PrintConfig.cpp:548 +msgid "Keep fan always on" +msgstr "Mantenha a ventoinha sempre ligada" + +#: src/libslic3r/PrintConfig.cpp:549 +msgid "" +"If this is enabled, fan will never be disabled and will be kept running at " +"least at its minimum speed. Useful for PLA, harmful for ABS." +msgstr "" +"Se isso estiver ativado, a ventoinha nunca será desativada e será mantida " +"funcionando pelo menos em sua velocidade mínima. Útil para o PLA, " +"prejudicial para o ABS." + +#: src/libslic3r/PrintConfig.cpp:554 +msgid "Enable fan if layer print time is below" +msgstr "Ative o ventoinha se o tempo de impressão da camada estiver abaixo" + +#: src/libslic3r/PrintConfig.cpp:555 +msgid "" +"If layer print time is estimated below this number of seconds, fan will be " +"enabled and its speed will be calculated by interpolating the minimum and " +"maximum speeds." +msgstr "" +"Se o tempo de impressão da camada for estimado abaixo desse número de " +"segundos, a ventoinha será ativada e sua velocidade será calculada " +"interpolando as velocidades mínima e máxima." + +#: src/libslic3r/PrintConfig.cpp:557 src/libslic3r/PrintConfig.cpp:1687 +msgid "approximate seconds" +msgstr "segundos aproximados" + +#: src/libslic3r/PrintConfig.cpp:571 +msgid "Filament notes" +msgstr "Notas de filamento" + +#: src/libslic3r/PrintConfig.cpp:572 +msgid "You can put your notes regarding the filament here." +msgstr "Você pode colocar suas anotações sobre o filamento aqui." + +#: src/libslic3r/PrintConfig.cpp:580 src/libslic3r/PrintConfig.cpp:1231 +msgid "Max volumetric speed" +msgstr "Máxima velocidade volumétrica" + +#: src/libslic3r/PrintConfig.cpp:581 +msgid "" +"Maximum volumetric speed allowed for this filament. Limits the maximum " +"volumetric speed of a print to the minimum of print and filament volumetric " +"speed. Set to zero for no limit." +msgstr "" +"Velocidade máxima volumétrica permitida para este filamento. Limita a " +"velocidade volumétrica máxima de uma impressão ao mínimo de velocidade " +"volumétrica de impressão e de filamento. Defina como zero para nenhum limite." + +#: src/libslic3r/PrintConfig.cpp:590 +msgid "Loading speed" +msgstr "Velocidade de carregamento" + +#: src/libslic3r/PrintConfig.cpp:591 +msgid "Speed used for loading the filament on the wipe tower." +msgstr "Velocidade utilizada para carregar o filamento na torre de limpeza." + +#: src/libslic3r/PrintConfig.cpp:598 +msgid "Loading speed at the start" +msgstr "Velocidade de carregamento no início" + +#: src/libslic3r/PrintConfig.cpp:599 +msgid "Speed used at the very beginning of loading phase." +msgstr "Velocidade utilizada no início da fase de carregamento." + +#: src/libslic3r/PrintConfig.cpp:606 +msgid "Unloading speed" +msgstr "Velocidade de descarregamento" + +#: src/libslic3r/PrintConfig.cpp:607 +msgid "" +"Speed used for unloading the filament on the wipe tower (does not affect " +"initial part of unloading just after ramming)." +msgstr "" +"Velocidade utilizada para descarregar o filamento na torre de limpeza (não " +"afeta a parte inicial do descarregamento logo após o Ramming)." + +#: src/libslic3r/PrintConfig.cpp:615 +msgid "Unloading speed at the start" +msgstr "Velocidade de descarregamento no início" + +#: src/libslic3r/PrintConfig.cpp:616 +msgid "" +"Speed used for unloading the tip of the filament immediately after ramming." +msgstr "" +"Velocidade usada para descarregar a ponta do filamento imediatamente após o " +"Ramming." + +#: src/libslic3r/PrintConfig.cpp:623 +msgid "Delay after unloading" +msgstr "Atraso após o descarregamento" + +#: src/libslic3r/PrintConfig.cpp:624 +msgid "" +"Time to wait after the filament is unloaded. May help to get reliable " +"toolchanges with flexible materials that may need more time to shrink to " +"original dimensions." +msgstr "" +"Tempo de espera após o filamento ser descarregado. Pode ajudar a obter " +"trocas de ferramenta confiáveis com materiais flexíveis que podem precisar " +"de mais tempo para reduzir as dimensões originais." + +#: src/libslic3r/PrintConfig.cpp:633 +msgid "Number of cooling moves" +msgstr "Número de movimentos de resfriamento" + +#: src/libslic3r/PrintConfig.cpp:634 +msgid "" +"Filament is cooled by being moved back and forth in the cooling tubes. " +"Specify desired number of these moves." +msgstr "" +"O filamento é resfriado por ser movido para frente e para trás nos tubos de " +"resfriamento. Especifique o número desejado desses movimentos." + +#: src/libslic3r/PrintConfig.cpp:642 +msgid "Speed of the first cooling move" +msgstr "Velocidade do primeiro movimento de resfriamento" + +#: src/libslic3r/PrintConfig.cpp:643 +msgid "Cooling moves are gradually accelerating beginning at this speed." +msgstr "" +"Movimentos de resfriamento estão gradualmente acelerando a partir desta " +"velocidade." + +#: src/libslic3r/PrintConfig.cpp:650 +msgid "Minimal purge on wipe tower" +msgstr "Remoção mínima na torre da limpeza" + +#: src/libslic3r/PrintConfig.cpp:651 +msgid "" +"After a tool change, the exact position of the newly loaded filament inside " +"the nozzle may not be known, and the filament pressure is likely not yet " +"stable. Before purging the print head into an infill or a sacrificial " +"object, Slic3r will always prime this amount of material into the wipe tower " +"to produce successive infill or sacrificial object extrusions reliably." +msgstr "" +"Após uma mudança da ferramenta, a posição exata do filamento recentemente " +"carregado dentro da ponteira pode não ser conhecida, e a pressão do " +"filamento provavelmente ainda não esteja estável. Antes de purgar a cabeça " +"de impressão em um preenchimento ou um objeto sacrificial, Slic3r sempre " +"Prime esta quantidade de material para a torre de limpeza para produzir " +"sucessivas preenchimento ou sacrificial objeto extrusões de forma confiável." + +#: src/libslic3r/PrintConfig.cpp:655 +msgid "mm³" +msgstr "mm³" + +#: src/libslic3r/PrintConfig.cpp:661 +msgid "Speed of the last cooling move" +msgstr "Velocidade do último movimento de resfriamento" + +#: src/libslic3r/PrintConfig.cpp:662 +msgid "Cooling moves are gradually accelerating towards this speed." +msgstr "" +"Movimentos de resfriamento estão gradualmente acelerando para esta " +"velocidade." + +#: src/libslic3r/PrintConfig.cpp:669 +msgid "Filament load time" +msgstr "Tempo de carga do filamento" + +#: src/libslic3r/PrintConfig.cpp:670 +msgid "" +"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " +"filament during a tool change (when executing the T code). This time is " +"added to the total print time by the G-code time estimator." +msgstr "" +"Tempo para o firmware da impressora (ou a Multi Material Unit 2.0 para " +"carregar um novo filamento durante uma mudança de ferramenta (ao executar o " +"código T). Esse tempo é adicionado ao tempo total de impressão pelo " +"estimador de tempo do G-code." + +#: src/libslic3r/PrintConfig.cpp:677 +msgid "Ramming parameters" +msgstr "Parâmetros de Ramming" + +#: src/libslic3r/PrintConfig.cpp:678 +msgid "" +"This string is edited by RammingDialog and contains ramming specific " +"parameters." +msgstr "" +"Essa cadeia de caracteres é editada por rammingdialog e contém parâmetros " +"específicos de Ramming." + +#: src/libslic3r/PrintConfig.cpp:684 +msgid "Filament unload time" +msgstr "Tempo de descarregamento do filamento" + +#: src/libslic3r/PrintConfig.cpp:685 +msgid "" +"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " +"filament during a tool change (when executing the T code). This time is " +"added to the total print time by the G-code time estimator." +msgstr "" +"Tempo para o firmware da impressora (ou a unidade de material multi 2,0) " +"para descarregar um filamento durante uma mudança de ferramenta (ao executar " +"o código T). Esse tempo é adicionado ao tempo total de impressão pelo " +"estimador de tempo do G-code." + +#: src/libslic3r/PrintConfig.cpp:693 +msgid "" +"Enter your filament diameter here. Good precision is required, so use a " +"caliper and do multiple measurements along the filament, then compute the " +"average." +msgstr "" +"Insira o diâmetro do filamento aqui. Boa precisão é necessária, então use um " +"paquímetro e fazer várias medições ao longo do filamento, em seguida, " +"calcular a média." + +#: src/libslic3r/PrintConfig.cpp:700 +msgid "Density" +msgstr "Densidade" + +#: src/libslic3r/PrintConfig.cpp:701 +msgid "" +"Enter your filament density here. This is only for statistical information. " +"A decent way is to weigh a known length of filament and compute the ratio of " +"the length to volume. Better is to calculate the volume directly through " +"displacement." +msgstr "" +"Insira sua densidade de filamento aqui. Isto é apenas para informação " +"estatística. Uma maneira decente é pesar um comprimento conhecido do " +"filamento e computar a relação do comprimento ao volume. Melhor é calcular o " +"volume diretamente através do deslocamento." + +#: src/libslic3r/PrintConfig.cpp:704 +msgid "g/cm³" +msgstr "g/cm³" + +#: src/libslic3r/PrintConfig.cpp:709 +msgid "Filament type" +msgstr "Tipo de filamento" + +#: src/libslic3r/PrintConfig.cpp:710 +msgid "The filament material type for use in custom G-codes." +msgstr "O tipo de material de filamento para uso em G-code customizados." + +#: src/libslic3r/PrintConfig.cpp:736 +msgid "Soluble material" +msgstr "Material solúvel" + +#: src/libslic3r/PrintConfig.cpp:737 +msgid "Soluble material is most likely used for a soluble support." +msgstr "O material solúvel é mais provável usado para um suporte solúvel." + +#: src/libslic3r/PrintConfig.cpp:743 +msgid "" +"Enter your filament cost per kg here. This is only for statistical " +"information." +msgstr "" +"Insira o seu custo de filamento por kg aqui. Isto é apenas para informação " +"estatística." + +#: src/libslic3r/PrintConfig.cpp:744 +msgid "money/kg" +msgstr "dinheiro/kg" + +#: src/libslic3r/PrintConfig.cpp:753 +msgid "Fill angle" +msgstr "Ângulo de preenchimento" + +#: src/libslic3r/PrintConfig.cpp:755 +msgid "" +"Default base angle for infill orientation. Cross-hatching will be applied to " +"this. Bridges will be infilled using the best direction Slic3r can detect, " +"so this setting does not affect them." +msgstr "" +"Ângulo padrão para a orientação de preenchimento. A hachura cruzada será " +"aplicada a isso. Pontes serão preenchidas usando a melhor direção Slic3r " +"pode detectar, portanto, essa config. não vai afeta-los." + +#: src/libslic3r/PrintConfig.cpp:767 +msgid "Fill density" +msgstr "Densidade de preenchimento" + +#: src/libslic3r/PrintConfig.cpp:769 +msgid "Density of internal infill, expressed in the range 0% - 100%." +msgstr "Densidade de preenchimento interno, expresso na faixa de 0%-100%." + +#: src/libslic3r/PrintConfig.cpp:804 +msgid "Fill pattern" +msgstr "Padrão de preenchimento" + +#: src/libslic3r/PrintConfig.cpp:806 +msgid "Fill pattern for general low-density infill." +msgstr "Padrão de preenchimento para preenchimento de baixa densidade." + +#: src/libslic3r/PrintConfig.cpp:822 +msgid "Grid" +msgstr "Grade" + +#: src/libslic3r/PrintConfig.cpp:823 +msgid "Triangles" +msgstr "Triângulos" + +#: src/libslic3r/PrintConfig.cpp:824 +msgid "Stars" +msgstr "Estrelas" + +#: src/libslic3r/PrintConfig.cpp:825 +msgid "Cubic" +msgstr "Cúbico" + +#: src/libslic3r/PrintConfig.cpp:826 +msgid "Line" +msgstr "Linha" + +#: src/libslic3r/PrintConfig.cpp:828 src/libslic3r/PrintConfig.cpp:1974 +msgid "Honeycomb" +msgstr "Hexágono" + +#: src/libslic3r/PrintConfig.cpp:829 +msgid "3D Honeycomb" +msgstr "Hexágono 3D" + +#: src/libslic3r/PrintConfig.cpp:830 +msgid "Gyroid" +msgstr "Giróide" + +#: src/libslic3r/PrintConfig.cpp:837 src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:854 src/libslic3r/PrintConfig.cpp:887 +msgid "First layer" +msgstr "Primeira camada" + +#: src/libslic3r/PrintConfig.cpp:838 +msgid "" +"This is the acceleration your printer will use for first layer. Set zero to " +"disable acceleration control for first layer." +msgstr "" +"Esta é a aceleração que sua impressora usará para a primeira camada. Defina " +"zero para desabilitar o controle de aceleração para a primeira camada." + +#: src/libslic3r/PrintConfig.cpp:847 +msgid "" +"Heated build plate temperature for the first layer. Set this to zero to " +"disable bed temperature control commands in the output." +msgstr "" +"Temperatura da mesa aquecida para a primeira camada. Defina isso como zero " +"para desabilitar os comandos de controle de temperatura da mesa na saída." + +#: src/libslic3r/PrintConfig.cpp:856 +msgid "" +"Set this to a non-zero value to set a manual extrusion width for first " +"layer. You can use this to force fatter extrudates for better adhesion. If " +"expressed as percentage (for example 120%) it will be computed over first " +"layer height. If set to zero, it will use the default extrusion width." +msgstr "" +"Defina isso como um valor diferente de zero para definir uma largura de " +"extrusão manual para a primeira camada. Você pode usar este para forçar " +"extrusões maiores para a melhor adesão. Se expresso em porcentagem(por " +"exemplo, 120%) será computado sobre a primeira altura da camada. Se definido " +"como zero, ele usará a largura de extrusão padrão." + +#: src/libslic3r/PrintConfig.cpp:866 +msgid "First layer height" +msgstr "Altura da primeira camada" + +#: src/libslic3r/PrintConfig.cpp:868 +msgid "" +"When printing with very low layer heights, you might still want to print a " +"thicker bottom layer to improve adhesion and tolerance for non perfect build " +"plates. This can be expressed as an absolute value or as a percentage (for " +"example: 150%) over the default layer height." +msgstr "" +"Ao imprimir com alturas muito baixas da camada, você pode ainda querer " +"imprimir uma camada inferior mais grossa para melhorar a adesão e a " +"tolerância para mesas não perfeitas. Isso pode ser expresso como um valor " +"absoluto ou como uma porcentagem (por exemplo: 150%) sobre a altura da " +"camada padrão." + +#: src/libslic3r/PrintConfig.cpp:877 +msgid "First layer speed" +msgstr "Velocidade da primeira camada" + +#: src/libslic3r/PrintConfig.cpp:878 +msgid "" +"If expressed as absolute value in mm/s, this speed will be applied to all " +"the print moves of the first layer, regardless of their type. If expressed " +"as a percentage (for example: 40%) it will scale the default speeds." +msgstr "" +"Se expresso como valor absoluto em mm/s, esta velocidade será aplicada a " +"todos os movimentos de impressão da primeira camada, independentemente do " +"seu tipo. Se expresso em porcentagem(por exemplo: 40%) Ele dimensionará as " +"velocidades padrão." + +#: src/libslic3r/PrintConfig.cpp:888 +msgid "" +"Extruder temperature for first layer. If you want to control temperature " +"manually during print, set this to zero to disable temperature control " +"commands in the output file." +msgstr "" +"Temperatura da extrusora para a primeira camada. Se você quiser controlar a " +"temperatura manualmente durante a impressão, defina isso como zero para " +"desabilitar os comandos de controle de temperatura no arquivo de saída." + +#: src/libslic3r/PrintConfig.cpp:897 +msgid "" +"Speed for filling small gaps using short zigzag moves. Keep this reasonably " +"low to avoid too much shaking and resonance issues. Set zero to disable gaps " +"filling." +msgstr "" +"Velocidade para encher pequenas lacunas usando movimentos de ziguezague " +"curtos. Mantenha este razoavelmente baixo para evitar demasiada agitação e " +"problemas de ressonância. Defina zero para desabilitar o preenchimento de " +"lacunas." + +#: src/libslic3r/PrintConfig.cpp:905 +msgid "Verbose G-code" +msgstr "Gcode detalhado" + +#: src/libslic3r/PrintConfig.cpp:906 +msgid "" +"Enable this to get a commented G-code file, with each line explained by a " +"descriptive text. If you print from SD card, the additional weight of the " +"file could make your firmware slow down." +msgstr "" +"Habilite isso para obter um arquivo de G-code comentado, com cada linha " +"explicada por um texto descritivo. Se você imprimir a partir do cartão SD, o " +"peso adicional do arquivo pode fazer o seu firmware ficar mais lento." + +#: src/libslic3r/PrintConfig.cpp:913 +msgid "G-code flavor" +msgstr "Tipo de G-code" + +#: src/libslic3r/PrintConfig.cpp:914 +msgid "" +"Some G/M-code commands, including temperature control and others, are not " +"universal. Set this option to your printer's firmware to get a compatible " +"output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any " +"extrusion value at all." +msgstr "" +"Alguns comandos G/M-code, incluindo controle de temperatura e outros, não " +"são universais. Defina esta opção para o firmware da impressora para obter " +"uma saída compatível. O \"sem extrusão\" tipo impede PrusaSlicer de exportar " +"qualquer valor de extrusão em tudo." + +#: src/libslic3r/PrintConfig.cpp:937 +msgid "No extrusion" +msgstr "Sem extrusão" + +#: src/libslic3r/PrintConfig.cpp:942 +msgid "Label objects" +msgstr "Rotular objetos" + +#: src/libslic3r/PrintConfig.cpp:943 +msgid "" +"Enable this to add comments into the G-Code labeling print moves with what " +"object they belong to, which is useful for the Octoprint CancelObject " +"plugin. This settings is NOT compatible with Single Extruder Multi Material " +"setup and Wipe into Object / Wipe into Infill." +msgstr "" +"Habilite isso para adicionar comentários aos movimentos de impressão de " +"rotulagem do G-code com o objeto ao qual eles pertencem, o que é útil para o " +"plugin Octoprint CancelObject. Essas config. não são compatíveis com a " +"config. de multi material de extrusora única e limpe em objeto/limpar em " +"preenchimento." + +#: src/libslic3r/PrintConfig.cpp:950 +msgid "High extruder current on filament swap" +msgstr "Corrente elevada da extrusora na troca do filamento" + +#: src/libslic3r/PrintConfig.cpp:951 +msgid "" +"It may be beneficial to increase the extruder motor current during the " +"filament exchange sequence to allow for rapid ramming feed rates and to " +"overcome resistance when loading a filament with an ugly shaped tip." +msgstr "" +"Pode ser benéfico aumentar a corrente do motor da extrusora durante a " +"seqüência da troca do filamento para permitir taxas de alimentação de " +"Ramming rápidas e para superar a resistência ao carregar um filamento com " +"uma ponta feia." + +#: src/libslic3r/PrintConfig.cpp:959 +msgid "" +"This is the acceleration your printer will use for infill. Set zero to " +"disable acceleration control for infill." +msgstr "" +"Esta é a aceleração que sua impressora usará para preenchimento. Defina zero " +"para desabilitar o controle de aceleração para preenchimento." + +#: src/libslic3r/PrintConfig.cpp:967 +msgid "Combine infill every" +msgstr "Combine preenchimento a cada" + +#: src/libslic3r/PrintConfig.cpp:969 +msgid "" +"This feature allows to combine infill and speed up your print by extruding " +"thicker infill layers while preserving thin perimeters, thus accuracy." +msgstr "" +"Este recurso permite combinar preenchimento e acelerar a sua impressão por " +"extrusão camadas de preenchimento mais espessa, preservando perímetros " +"finos, assim, a precisão." + +#: src/libslic3r/PrintConfig.cpp:972 +msgid "Combine infill every n layers" +msgstr "Combine preenchimento cada n camadas" + +#: src/libslic3r/PrintConfig.cpp:978 +msgid "Infill extruder" +msgstr "Extrusora de preenchimento" + +#: src/libslic3r/PrintConfig.cpp:980 +msgid "The extruder to use when printing infill." +msgstr "" +"A extrusora a ser utilizada quando estiver imprimindo preenchimento sólido." + +#: src/libslic3r/PrintConfig.cpp:988 +msgid "" +"Set this to a non-zero value to set a manual extrusion width for infill. If " +"left zero, default extrusion width will be used if set, otherwise 1.125 x " +"nozzle diameter will be used. You may want to use fatter extrudates to speed " +"up the infill and make your parts stronger. If expressed as percentage (for " +"example 90%) it will be computed over layer height." +msgstr "" +"Defina isso como um valor diferente de zero para definir uma largura de " +"extrusão manual para preenchimento. Se for deixado zero, a largura de " +"extrusão padrão será usada se definido, caso contrário, 1,125 x diâmetro da " +"ponteira será usado. Você pode querer usar extrusora mais larga para " +"acelerar o preenchimento e tornar suas peças mais fortes. Se expresso em " +"porcentagem(por exemplo, 90%) Ele será calculado sobre a altura da camada." + +#: src/libslic3r/PrintConfig.cpp:997 +msgid "Infill before perimeters" +msgstr "Preenchimento antes dos perímetros" + +#: src/libslic3r/PrintConfig.cpp:998 +msgid "" +"This option will switch the print order of perimeters and infill, making the " +"latter first." +msgstr "" +"Esta opção irá mudar a ordem de impressão de perímetros e preenchimento, " +"tornando o último primeiro." + +#: src/libslic3r/PrintConfig.cpp:1003 +msgid "Only infill where needed" +msgstr "Somente preenchimento onde necessário" + +#: src/libslic3r/PrintConfig.cpp:1005 +msgid "" +"This option will limit infill to the areas actually needed for supporting " +"ceilings (it will act as internal support material). If enabled, slows down " +"the G-code generation due to the multiple checks involved." +msgstr "" +"Esta opção limitará a preenchimento às áreas realmente necessárias para " +"suportar tetos (atuará como o material de sustentação interno). Se " +"habilitada, retarda a geração de G-code devido às várias verificações " +"envolvidas." + +#: src/libslic3r/PrintConfig.cpp:1012 +msgid "Infill/perimeters overlap" +msgstr "Sobreposição de preenchimento/perímetros" + +#: src/libslic3r/PrintConfig.cpp:1014 +msgid "" +"This setting applies an additional overlap between infill and perimeters for " +"better bonding. Theoretically this shouldn't be needed, but backlash might " +"cause gaps. If expressed as percentage (example: 15%) it is calculated over " +"perimeter extrusion width." +msgstr "" +"Esta config. aplica uma sobreposição adicional entre preenchimento e " +"perímetros para melhor colagem. Teoricamente isso não deveria ser " +"necessário, mas a folga pode causar lacunas. Se expresso em " +"porcentagem(exemplo: 15%) é calculado sobre a largura da extrusão do " +"perímetro." + +#: src/libslic3r/PrintConfig.cpp:1025 +msgid "Speed for printing the internal fill. Set to zero for auto." +msgstr "" +"Velocidade para imprimir o preenchimento interno. Defina como zero para auto." + +#: src/libslic3r/PrintConfig.cpp:1033 +msgid "Inherits profile" +msgstr "Herda o perfil" + +#: src/libslic3r/PrintConfig.cpp:1034 +msgid "Name of the profile, from which this profile inherits." +msgstr "Nome do perfil, a partir do qual este perfil herda." + +#: src/libslic3r/PrintConfig.cpp:1047 +msgid "Interface shells" +msgstr "Interface dos perímetros externos." + +#: src/libslic3r/PrintConfig.cpp:1048 +msgid "" +"Force the generation of solid shells between adjacent materials/volumes. " +"Useful for multi-extruder prints with translucent materials or manual " +"soluble support material." +msgstr "" +"Force a geração de perímetros externos sólidas entre materiais/volumes " +"adjacentes. Útil para cópias da multi-extrusora com materiais translúcidos " +"ou material de sustentação solúvel manual." + +#: src/libslic3r/PrintConfig.cpp:1057 +msgid "" +"This custom code is inserted at every layer change, right after the Z move " +"and before the extruder moves to the first layer point. Note that you can " +"use placeholder variables for all Slic3r settings as well as [layer_num] and " +"[layer_z]." +msgstr "" +"Este código personalizado é inserido em cada mudança de camada, logo após o " +"movimento Z e antes que a extrusora se mova para o primeiro ponto de camada. " +"Observe que você pode usar variáveis de espaço reservado para todas as " +"config. Slic3r, bem como [layer_num] e [layer_z]." + +#: src/libslic3r/PrintConfig.cpp:1068 +msgid "Supports remaining times" +msgstr "Tempo de impressão restante" + +#: src/libslic3r/PrintConfig.cpp:1069 +msgid "" +"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " +"intervals into the G-code to let the firmware show accurate remaining time. " +"As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 " +"firmware supports M73 Qxx Sxx for the silent mode." +msgstr "" +"Emita M73 P [porcentagem impressa] R [tempo restante em minutos] em " +"intervalos de 1 minuto no G-code para permitir que o firmware mostre o tempo " +"restante exato. A partir de agora apenas o firmware Prusa i3 MK3 reconhece " +"M73. Além disso, o firmware i3 MK3 suporta M73 QXX Sxx para o modo " +"silencioso." + +#: src/libslic3r/PrintConfig.cpp:1077 +msgid "Supports stealth mode" +msgstr "Suporta o modo silencioso" + +#: src/libslic3r/PrintConfig.cpp:1078 +msgid "The firmware supports stealth mode" +msgstr "O firmware suporta o modo silencioso" + +#: src/libslic3r/PrintConfig.cpp:1102 +msgid "Maximum feedrate X" +msgstr "Máxima taxa de alimentação do X" + +#: src/libslic3r/PrintConfig.cpp:1103 +msgid "Maximum feedrate Y" +msgstr "Máxima taxa de alimentação do Y" + +#: src/libslic3r/PrintConfig.cpp:1104 +msgid "Maximum feedrate Z" +msgstr "Máxima taxa de alimentação do Z" + +#: src/libslic3r/PrintConfig.cpp:1105 +msgid "Maximum feedrate E" +msgstr "Máxima taxa de alimentação do E" + +#: src/libslic3r/PrintConfig.cpp:1108 +msgid "Maximum feedrate of the X axis" +msgstr "Máxima taxa de alimentação do eixo X" + +#: src/libslic3r/PrintConfig.cpp:1109 +msgid "Maximum feedrate of the Y axis" +msgstr "Máxima taxa de alimentação do eixo Y" + +#: src/libslic3r/PrintConfig.cpp:1110 +msgid "Maximum feedrate of the Z axis" +msgstr "Máxima taxa de alimentação do eixo Z" + +#: src/libslic3r/PrintConfig.cpp:1111 +msgid "Maximum feedrate of the E axis" +msgstr "Máxima taxa de alimentação do eixo E" + +#: src/libslic3r/PrintConfig.cpp:1120 +msgid "Maximum acceleration X" +msgstr "Aceleração máxima do X" + +#: src/libslic3r/PrintConfig.cpp:1121 +msgid "Maximum acceleration Y" +msgstr "Aceleração máxima do Y" + +#: src/libslic3r/PrintConfig.cpp:1122 +msgid "Maximum acceleration Z" +msgstr "Aceleração máxima do Z" + +#: src/libslic3r/PrintConfig.cpp:1123 +msgid "Maximum acceleration E" +msgstr "Aceleração máxima do E" + +#: src/libslic3r/PrintConfig.cpp:1126 +msgid "Maximum acceleration of the X axis" +msgstr "Aceleração máxima do eixo X" + +#: src/libslic3r/PrintConfig.cpp:1127 +msgid "Maximum acceleration of the Y axis" +msgstr "Aceleração máxima do eixo Y" + +#: src/libslic3r/PrintConfig.cpp:1128 +msgid "Maximum acceleration of the Z axis" +msgstr "Aceleração máxima do eixo Z" + +#: src/libslic3r/PrintConfig.cpp:1129 +msgid "Maximum acceleration of the E axis" +msgstr "Aceleração máxima do eixo E" + +#: src/libslic3r/PrintConfig.cpp:1138 +msgid "Maximum jerk X" +msgstr "Máximo empurrão X" + +#: src/libslic3r/PrintConfig.cpp:1139 +msgid "Maximum jerk Y" +msgstr "Máximo empurrão Y" + +#: src/libslic3r/PrintConfig.cpp:1140 +msgid "Maximum jerk Z" +msgstr "Máximo empurrão Z" + +#: src/libslic3r/PrintConfig.cpp:1141 +msgid "Maximum jerk E" +msgstr "Máximo empurrão E" + +#: src/libslic3r/PrintConfig.cpp:1144 +msgid "Maximum jerk of the X axis" +msgstr "Máximo empurrão do eixo X" + +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Maximum jerk of the Y axis" +msgstr "Máximo empurrão do eixo Y" + +#: src/libslic3r/PrintConfig.cpp:1146 +msgid "Maximum jerk of the Z axis" +msgstr "Máximo empurrão do eixo Z" + +#: src/libslic3r/PrintConfig.cpp:1147 +msgid "Maximum jerk of the E axis" +msgstr "Máximo empurrão do eixo E" + +#: src/libslic3r/PrintConfig.cpp:1158 +msgid "Minimum feedrate when extruding" +msgstr "Taxa de alimentação mínima ao extrudar" + +#: src/libslic3r/PrintConfig.cpp:1160 +msgid "Minimum feedrate when extruding (M205 S)" +msgstr "Taxa de alimentação mínima ao extrudar (M205 S)" + +#: src/libslic3r/PrintConfig.cpp:1169 +msgid "Minimum travel feedrate" +msgstr "Taxa de alimentação mínima ao viajar" + +#: src/libslic3r/PrintConfig.cpp:1171 +msgid "Minimum travel feedrate (M205 T)" +msgstr "Taxa de alimentação mínima ao viajar (M205 T)" + +#: src/libslic3r/PrintConfig.cpp:1180 +msgid "Maximum acceleration when extruding" +msgstr "Aceleração máxima quando expurgando" + +#: src/libslic3r/PrintConfig.cpp:1182 +msgid "Maximum acceleration when extruding (M204 S)" +msgstr "Aceleração máxima quando extrudando (M204 S)" + +#: src/libslic3r/PrintConfig.cpp:1191 +msgid "Maximum acceleration when retracting" +msgstr "Aceleração máxima durante a retração" + +#: src/libslic3r/PrintConfig.cpp:1193 +msgid "Maximum acceleration when retracting (M204 T)" +msgstr "Aceleração máxima quando retração (M204 T)" + +#: src/libslic3r/PrintConfig.cpp:1201 src/libslic3r/PrintConfig.cpp:1210 +msgid "Max" +msgstr "Máx" + +#: src/libslic3r/PrintConfig.cpp:1202 +msgid "This setting represents the maximum speed of your fan." +msgstr "Esta config. representa a velocidade máxima da sua ventoinha." + +#: src/libslic3r/PrintConfig.cpp:1211 +#, c-format +msgid "" +"This is the highest printable layer height for this extruder, used to cap " +"the variable layer height and support layer height. Maximum recommended " +"layer height is 75% of the extrusion width to achieve reasonable inter-layer " +"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." +msgstr "" +"Esta é a altura mais alta imprimível para esta extrusora, usada para tampar " +"a altura variável da camada e suportar a altura da camada. A altura " +"recomendada máxima da camada é 75% o da largura da extrusão para conseguir a " +"adesão razoável entre camadas. Se definido como 0, a altura da camada é " +"limitada a 75% o do diâmetro da ponteira." + +#: src/libslic3r/PrintConfig.cpp:1221 +msgid "Max print speed" +msgstr "Velocidade máxima de impressão" + +#: src/libslic3r/PrintConfig.cpp:1222 +msgid "" +"When setting other speed settings to 0 Slic3r will autocalculate the optimal " +"speed in order to keep constant extruder pressure. This experimental setting " +"is used to set the highest print speed you want to allow." +msgstr "" +"Ao definir outras config. de velocidade para 0, o Slic3r irá calcular " +"automaticamente a velocidade ideal, a fim de manter a pressão constante da " +"extrusora. Esta config. experimental é usada para definir a velocidade de " +"impressão mais alta que você deseja permitir." + +#: src/libslic3r/PrintConfig.cpp:1232 +msgid "" +"This experimental setting is used to set the maximum volumetric speed your " +"extruder supports." +msgstr "" +"Esta config. experimental é usada para definir a velocidade máxima " +"volumétrica que sua extrusora suporta." + +#: src/libslic3r/PrintConfig.cpp:1241 +msgid "Max volumetric slope positive" +msgstr "Inclinação volumétrica máx positiva" + +#: src/libslic3r/PrintConfig.cpp:1242 src/libslic3r/PrintConfig.cpp:1253 +msgid "" +"This experimental setting is used to limit the speed of change in extrusion " +"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " +"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/" +"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." +msgstr "" +"Esta config. experimental é usada para limitar a velocidade de mudança na " +"taxa de extrusão. Um valor de 1,8 mm ³/s ² assegura que uma alteração da " +"taxa de extrusão de 1,8 mm ³/s (largura de extrusão de 0,45 mm, altura de " +"extrusão de 0,2 mm, avanço de 20 mm/s) para 5,4 mm ³/s (avanço 60 mm/s) " +"levará pelo menos 2 segundos." + +#: src/libslic3r/PrintConfig.cpp:1246 src/libslic3r/PrintConfig.cpp:1257 +msgid "mm³/s²" +msgstr "mm ³/s ²" + +#: src/libslic3r/PrintConfig.cpp:1252 +msgid "Max volumetric slope negative" +msgstr "Inclinação volumétrica máx negativa" + +#: src/libslic3r/PrintConfig.cpp:1264 src/libslic3r/PrintConfig.cpp:1273 +msgid "Min" +msgstr "Min" + +#: src/libslic3r/PrintConfig.cpp:1265 +msgid "This setting represents the minimum PWM your fan needs to work." +msgstr "" +"Esta config. representa o PWM mínimo que seu ventoinha precisa para " +"trabalhar." + +#: src/libslic3r/PrintConfig.cpp:1274 +msgid "" +"This is the lowest printable layer height for this extruder and limits the " +"resolution for variable layer height. Typical values are between 0.05 mm and " +"0.1 mm." +msgstr "" +"Esta é a altura mais baixa imprimível para esta extrusora e limita a " +"definição para a altura variável da camada. Os valores típicos são entre 0, " +"5 mm e 0,1 mm." + +#: src/libslic3r/PrintConfig.cpp:1282 +msgid "Min print speed" +msgstr "Velocidade mínima de impressão" + +#: src/libslic3r/PrintConfig.cpp:1283 +msgid "Slic3r will not scale speed down below this speed." +msgstr "Slic3r não vai escalar a velocidade abaixo desta velocidade." + +#: src/libslic3r/PrintConfig.cpp:1290 +msgid "Minimal filament extrusion length" +msgstr "Comprimento mínimo da extrusão do filamento" + +#: src/libslic3r/PrintConfig.cpp:1291 +msgid "" +"Generate no less than the number of skirt loops required to consume the " +"specified amount of filament on the bottom layer. For multi-extruder " +"machines, this minimum applies to each extruder." +msgstr "" +"Gerar não menos do que o número de voltas de saia necessários para consumir " +"a quantidade especificada de filamento na camada inferior. Para máquinas " +"multiextrusoras, este mínimo aplica-se a cada extrusora." + +#: src/libslic3r/PrintConfig.cpp:1300 +msgid "Configuration notes" +msgstr "Notas de config." + +#: src/libslic3r/PrintConfig.cpp:1301 +msgid "" +"You can put here your personal notes. This text will be added to the G-code " +"header comments." +msgstr "" +"Você pode colocar aqui suas anotações pessoais. Este texto será adicionado " +"aos comentários do cabeçalho do G-code." + +#: src/libslic3r/PrintConfig.cpp:1311 +msgid "" +"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" +msgstr "" +"Este é o diâmetro da ponteira da extrusora (por exemplo: 0.5, 0.35 etc.)" + +#: src/libslic3r/PrintConfig.cpp:1316 +msgid "Host Type" +msgstr "Tipo de host" + +#: src/libslic3r/PrintConfig.cpp:1317 +msgid "" +"Slic3r can upload G-code files to a printer host. This field must contain " +"the kind of the host." +msgstr "" +"Slic3r pode carregar arquivos de G-code para um host de impressora. Este " +"campo deve conter o tipo do host." + +#: src/libslic3r/PrintConfig.cpp:1328 +msgid "Only retract when crossing perimeters" +msgstr "Apenas retrair quando cruzar perímetros" + +#: src/libslic3r/PrintConfig.cpp:1329 +msgid "" +"Disables retraction when the travel path does not exceed the upper layer's " +"perimeters (and thus any ooze will be probably invisible)." +msgstr "" +"Desativa a retração quando o caminho de viagem não excede os perímetros da " +"camada superior (e, portanto, qualquer escorrimento será provavelmente " +"invisível)." + +#: src/libslic3r/PrintConfig.cpp:1336 +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing. It will enable a tall skirt automatically and move extruders outside " +"such skirt when changing temperatures." +msgstr "" +"Esta opção irá descartar a temperatura das extrusoras inativas para evitar a " +"escorrimento. Ele vai permitir uma saia alta automaticamente e mover " +"extrusoras fora de tal saia quando a mudança de temperatura." + +#: src/libslic3r/PrintConfig.cpp:1343 +msgid "Output filename format" +msgstr "Formato de nome de arquivo de saída" + +#: src/libslic3r/PrintConfig.cpp:1344 +msgid "" +"You can use all configuration options as variables inside this template. For " +"example: [layer_height], [fill_density] etc. You can also use [timestamp], " +"[year], [month], [day], [hour], [minute], [second], [version], " +"[input_filename], [input_filename_base]." +msgstr "" +"Você pode usar todas as opções de config. como variáveis dentro deste " +"modelo. Por exemplo: [camada_altura], [densidade_preenchimento] etc. Você " +"também pode usar [tempo], [ano], [mês], [dia], [hora], [minuto], [segundo], " +"[versão], [nome_entrada], [nome_entrada_base]." + +#: src/libslic3r/PrintConfig.cpp:1353 +msgid "Detect bridging perimeters" +msgstr "Detectar perímetros de ponte" + +#: src/libslic3r/PrintConfig.cpp:1355 +msgid "" +"Experimental option to adjust flow for overhangs (bridge flow will be used), " +"to apply bridge speed to them and enable fan." +msgstr "" +"Opção experimental para ajustar o fluxo para angulações (o fluxo da ponte " +"será usado), para aplicar a velocidade da ponte a eles e para habilitar a " +"ventoinha." + +#: src/libslic3r/PrintConfig.cpp:1361 +msgid "Filament parking position" +msgstr "Posição de estacionamento do filamento" + +#: src/libslic3r/PrintConfig.cpp:1362 +msgid "" +"Distance of the extruder tip from the position where the filament is parked " +"when unloaded. This should match the value in printer firmware." +msgstr "" +"Distância da ponta da extrusora da posição onde o filamento está estacionado " +"quando descarregado. Isso deve corresponder ao valor no firmware da " +"impressora." + +#: src/libslic3r/PrintConfig.cpp:1370 +msgid "Extra loading distance" +msgstr "Distância de carregamento extra" + +#: src/libslic3r/PrintConfig.cpp:1371 +msgid "" +"When set to zero, the distance the filament is moved from parking position " +"during load is exactly the same as it was moved back during unload. When " +"positive, it is loaded further, if negative, the loading move is shorter " +"than unloading." +msgstr "" +"Quando ajustado a zero, a distância que o filamento é movida da posição do " +"estacionamento durante a carga é exatamente a mesma que foi movida para trás " +"durante o descarregamento. Quando positivo, ele é carregado ainda mais, se " +"negativo, o movimento de carga é menor do que o descarregamento." + +#: src/libslic3r/PrintConfig.cpp:1379 src/libslic3r/PrintConfig.cpp:1397 +#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1419 +msgid "Perimeters" +msgstr "Perímetros" + +#: src/libslic3r/PrintConfig.cpp:1380 +msgid "" +"This is the acceleration your printer will use for perimeters. A high value " +"like 9000 usually gives good results if your hardware is up to the job. Set " +"zero to disable acceleration control for perimeters." +msgstr "" +"Esta é a aceleração que sua impressora usará para perímetros. Um alto valor " +"como 9000 geralmente dá bons resultados se o seu hardware suporta. Defina " +"zero para desabilitar o controle de aceleração para perímetros." + +#: src/libslic3r/PrintConfig.cpp:1388 +msgid "Perimeter extruder" +msgstr "Extrusora de perímetro" + +#: src/libslic3r/PrintConfig.cpp:1390 +msgid "" +"The extruder to use when printing perimeters and brim. First extruder is 1." +msgstr "" +"A extrusora para usar ao imprimir perímetros e aba. A primeira extrusora é 1." + +#: src/libslic3r/PrintConfig.cpp:1399 +msgid "" +"Set this to a non-zero value to set a manual extrusion width for perimeters. " +"You may want to use thinner extrudates to get more accurate surfaces. If " +"left zero, default extrusion width will be used if set, otherwise 1.125 x " +"nozzle diameter will be used. If expressed as percentage (for example 200%) " +"it will be computed over layer height." +msgstr "" +"Defina isso como um valor diferente de zero para definir uma largura de " +"extrusão manual para perímetros. Você pode querer usar extrusões mais finos " +"para obter superfícies mais precisas. Se for deixado zero, a largura de " +"extrusão padrão será usada se definido, caso contrário, 1,125 x diâmetro da " +"ponteira será usado. Se expresso em porcentagem(por exemplo, 200%) Ele será " +"calculado sobre a altura da camada." + +#: src/libslic3r/PrintConfig.cpp:1411 +msgid "" +"Speed for perimeters (contours, aka vertical shells). Set to zero for auto." +msgstr "" +"Velocidade para perímetros (contornos, também chamadas de perímetros " +"externos verticais). Defina como zero para auto." + +#: src/libslic3r/PrintConfig.cpp:1421 +msgid "" +"This option sets the number of perimeters to generate for each layer. Note " +"that Slic3r may increase this number automatically when it detects sloping " +"surfaces which benefit from a higher number of perimeters if the Extra " +"Perimeters option is enabled." +msgstr "" +"Esta opção define o número de perímetros a gerar para cada camada. Observe " +"que o Slic3r pode aumentar esse número automaticamente quando detecta " +"superfícies inclinadas que se beneficiam de um número maior de perímetros se " +"a opção extra perímetros estiver habilitada." + +#: src/libslic3r/PrintConfig.cpp:1425 +msgid "(minimum)" +msgstr "(mínimo)" + +#: src/libslic3r/PrintConfig.cpp:1433 +msgid "" +"If you want to process the output G-code through custom scripts, just list " +"their absolute paths here. Separate multiple scripts with a semicolon. " +"Scripts will be passed the absolute path to the G-code file as the first " +"argument, and they can access the Slic3r config settings by reading " +"environment variables." +msgstr "" +"Se você quiser processar o G-code de saída por meio de scripts " +"personalizados, basta listar seus caminhos absolutos aqui. Separe vários " +"scripts com um ponto-e-vírgula. Os scripts serão passados o caminho absoluto " +"para o arquivo de G-code como o primeiro argumento, e eles poderão acessar " +"as config. de config. do Slic3r lendo variáveis de ambiente." + +#: src/libslic3r/PrintConfig.cpp:1445 +msgid "Printer type" +msgstr "Tipo de impressora" + +#: src/libslic3r/PrintConfig.cpp:1446 +msgid "Type of the printer." +msgstr "Tipo da impressora." + +#: src/libslic3r/PrintConfig.cpp:1451 +msgid "Printer notes" +msgstr "Notas da impressora" + +#: src/libslic3r/PrintConfig.cpp:1452 +msgid "You can put your notes regarding the printer here." +msgstr "Você pode colocar suas anotações sobre a impressora aqui." + +#: src/libslic3r/PrintConfig.cpp:1460 +msgid "Printer vendor" +msgstr "Fornecedor da impressora" + +#: src/libslic3r/PrintConfig.cpp:1461 +msgid "Name of the printer vendor." +msgstr "Nome do fornecedor da impressora." + +#: src/libslic3r/PrintConfig.cpp:1466 +msgid "Printer variant" +msgstr "Variante da impressora" + +#: src/libslic3r/PrintConfig.cpp:1467 +msgid "" +"Name of the printer variant. For example, the printer variants may be " +"differentiated by a nozzle diameter." +msgstr "" +"Nome da variante da impressora. Por exemplo, as variantes da impressora " +"podem ser diferenciadas por um diâmetro da ponteira." + +#: src/libslic3r/PrintConfig.cpp:1480 +msgid "Raft layers" +msgstr "Camadas da estrado" + +#: src/libslic3r/PrintConfig.cpp:1482 +msgid "" +"The object will be raised by this number of layers, and support material " +"will be generated under it." +msgstr "" +"O objeto será elevado por este número de camadas, e o material de suporte " +"será gerado em baixo dele." + +#: src/libslic3r/PrintConfig.cpp:1490 +msgid "Resolution" +msgstr "Resolução" + +#: src/libslic3r/PrintConfig.cpp:1491 +msgid "" +"Minimum detail resolution, used to simplify the input file for speeding up " +"the slicing job and reducing memory usage. High-resolution models often " +"carry more detail than printers can render. Set to zero to disable any " +"simplification and use full resolution from input." +msgstr "" +"Resolução de detalhes mínimos, usada para simplificar o arquivo de entrada " +"para acelerar o trabalho de fatiamento e reduzir o uso de memória. Modelos " +"de alta resolução geralmente carregam mais detalhes do que as impressoras " +"podem renderizar. Defina como zero para desabilitar qualquer simplificação e " +"usar a resolução completa da entrada." + +#: src/libslic3r/PrintConfig.cpp:1501 +msgid "Minimum travel after retraction" +msgstr "Retração em viagens acima de" + +#: src/libslic3r/PrintConfig.cpp:1502 +msgid "" +"Retraction is not triggered when travel moves are shorter than this length." +msgstr "" +"A retração não é acionada quando os movimentos de viagem são mais curtos que " +"esse comprimento." + +#: src/libslic3r/PrintConfig.cpp:1508 +msgid "Retract amount before wipe" +msgstr "Quantidade de retração antes da limpeza" + +#: src/libslic3r/PrintConfig.cpp:1509 +msgid "" +"With bowden extruders, it may be wise to do some amount of quick retract " +"before doing the wipe movement." +msgstr "" +"Com extrusoras Bowden, pode ser sábio fazer alguma quantidade de retração " +"rápida antes de fazer o movimento da limpeza." + +#: src/libslic3r/PrintConfig.cpp:1516 +msgid "Retract on layer change" +msgstr "Retrair na mudança de camada" + +#: src/libslic3r/PrintConfig.cpp:1517 +msgid "This flag enforces a retraction whenever a Z move is done." +msgstr "Este sinalizador impõe uma retração sempre que um movimento Z é feito." + +#: src/libslic3r/PrintConfig.cpp:1522 src/libslic3r/PrintConfig.cpp:1530 +msgid "Length" +msgstr "Comprimento" + +#: src/libslic3r/PrintConfig.cpp:1523 +msgid "Retraction Length" +msgstr "Comprimento de retração" + +#: src/libslic3r/PrintConfig.cpp:1524 +msgid "" +"When retraction is triggered, filament is pulled back by the specified " +"amount (the length is measured on raw filament, before it enters the " +"extruder)." +msgstr "" +"Quando a retração é acionada, o filamento é puxado para trás pela quantidade " +"especificada (o comprimento é medido em filamento cru, antes de entrar na " +"extrusora)." + +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1535 +msgid "mm (zero to disable)" +msgstr "mm (zero para desativar)" + +#: src/libslic3r/PrintConfig.cpp:1531 +msgid "Retraction Length (Toolchange)" +msgstr "Comprimento de retração (mudança de ferramenta)" + +#: src/libslic3r/PrintConfig.cpp:1532 +msgid "" +"When retraction is triggered before changing tool, filament is pulled back " +"by the specified amount (the length is measured on raw filament, before it " +"enters the extruder)." +msgstr "" +"Quando a retração é acionada antes de mudar de ferramenta, o filamento é " +"puxado para trás pela quantidade especificada (o comprimento é medido em " +"filamento cru, antes de entrar na extrusora)." + +#: src/libslic3r/PrintConfig.cpp:1540 +msgid "Lift Z" +msgstr "Elevar Z" + +#: src/libslic3r/PrintConfig.cpp:1541 +msgid "" +"If you set this to a positive value, Z is quickly raised every time a " +"retraction is triggered. When using multiple extruders, only the setting for " +"the first extruder will be considered." +msgstr "" +"Se você definir isso como um valor positivo, Z é rapidamente elevado sempre " +"que uma retração é acionada. Ao usar várias extrusoras, somente a config. " +"para a primeira extrusora será considerada." + +#: src/libslic3r/PrintConfig.cpp:1548 +msgid "Above Z" +msgstr "Acima de Z" + +#: src/libslic3r/PrintConfig.cpp:1549 +msgid "Only lift Z above" +msgstr "Apenas elevar Z acima" + +#: src/libslic3r/PrintConfig.cpp:1550 +msgid "" +"If you set this to a positive value, Z lift will only take place above the " +"specified absolute Z. You can tune this setting for skipping lift on the " +"first layers." +msgstr "" +"Se você definir isso como um valor positivo, o levante do Z só ocorrerá " +"acima do Z absoluto especificado. Você pode ajustar essa config. para pular " +"o elevador nas primeiras camadas." + +#: src/libslic3r/PrintConfig.cpp:1557 +msgid "Below Z" +msgstr "Abaixo de Z" + +#: src/libslic3r/PrintConfig.cpp:1558 +msgid "Only lift Z below" +msgstr "Apenas elevar Z abaixo" + +#: src/libslic3r/PrintConfig.cpp:1559 +msgid "" +"If you set this to a positive value, Z lift will only take place below the " +"specified absolute Z. You can tune this setting for limiting lift to the " +"first layers." +msgstr "" +"Se você definir isso como um valor positivo, o levante do Z só ocorrerá " +"abaixo do Z absoluto especificado. Você pode ajustar essa config. para " +"limitar a elevação às primeiras camadas." + +#: src/libslic3r/PrintConfig.cpp:1567 src/libslic3r/PrintConfig.cpp:1575 +msgid "Extra length on restart" +msgstr "Comprimento extra no reinício" + +#: src/libslic3r/PrintConfig.cpp:1568 +msgid "" +"When the retraction is compensated after the travel move, the extruder will " +"push this additional amount of filament. This setting is rarely needed." +msgstr "" +"Quando a retração é compensada após o movimento de viagem, a extrusora vai " +"empurrar esta quantidade adicional de filamento. Essa config. raramente é " +"necessária." + +#: src/libslic3r/PrintConfig.cpp:1576 +msgid "" +"When the retraction is compensated after changing tool, the extruder will " +"push this additional amount of filament." +msgstr "" +"Quando a retração é compensada após a ferramenta de mudança, a extrusora " +"empurrará esta quantidade adicional de filamento." + +#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1584 +msgid "Retraction Speed" +msgstr "Velocidade da retração" + +#: src/libslic3r/PrintConfig.cpp:1585 +msgid "The speed for retractions (it only applies to the extruder motor)." +msgstr "A velocidade para retrações (aplica-se somente ao motor da extrusora)." + +#: src/libslic3r/PrintConfig.cpp:1591 src/libslic3r/PrintConfig.cpp:1592 +msgid "Deretraction Speed" +msgstr "Velocidade de retorno de retração" + +#: src/libslic3r/PrintConfig.cpp:1593 +msgid "" +"The speed for loading of a filament into extruder after retraction (it only " +"applies to the extruder motor). If left to zero, the retraction speed is " +"used." +msgstr "" +"A velocidade para o carregamento de um filamento na extrusora após a " +"retração (aplica-se somente ao motor da extrusora). Se deixada como zero, a " +"velocidade de retração é usada." + +#: src/libslic3r/PrintConfig.cpp:1600 +msgid "Seam position" +msgstr "Posição da costura" + +#: src/libslic3r/PrintConfig.cpp:1602 +msgid "Position of perimeters starting points." +msgstr "Posição inicial dos pontos do perímetro." + +#: src/libslic3r/PrintConfig.cpp:1608 +msgid "Random" +msgstr "Aleatório" + +#: src/libslic3r/PrintConfig.cpp:1609 +msgid "Nearest" +msgstr "Próximo" + +#: src/libslic3r/PrintConfig.cpp:1610 +msgid "Aligned" +msgstr "Alinhado(a)" + +#: src/libslic3r/PrintConfig.cpp:1618 +msgid "Direction" +msgstr "Direção" + +#: src/libslic3r/PrintConfig.cpp:1620 +msgid "Preferred direction of the seam" +msgstr "Direção preferida da costura" + +#: src/libslic3r/PrintConfig.cpp:1621 +msgid "Seam preferred direction" +msgstr "Direção de preferência da costura" + +#: src/libslic3r/PrintConfig.cpp:1628 +msgid "Jitter" +msgstr "Jitter" + +#: src/libslic3r/PrintConfig.cpp:1630 +msgid "Seam preferred direction jitter" +msgstr "Direção da costura preferencial para Jitter" + +#: src/libslic3r/PrintConfig.cpp:1631 +msgid "Preferred direction of the seam - jitter" +msgstr "Direção preferida da costura-jitter" + +#: src/libslic3r/PrintConfig.cpp:1641 +msgid "USB/serial port for printer connection." +msgstr "USB/porta serial para conexão da impressora." + +#: src/libslic3r/PrintConfig.cpp:1648 +msgid "Serial port speed" +msgstr "Velocidade da porta serial" + +#: src/libslic3r/PrintConfig.cpp:1649 +msgid "Speed (baud) of USB/serial port for printer connection." +msgstr "Velocidade (baud) do USB/porta serial para conexão da impressora." + +#: src/libslic3r/PrintConfig.cpp:1658 +msgid "Distance from object" +msgstr "Distância do objeto" + +#: src/libslic3r/PrintConfig.cpp:1659 +msgid "" +"Distance between skirt and object(s). Set this to zero to attach the skirt " +"to the object(s) and get a brim for better adhesion." +msgstr "" +"Distância entre a saia e o objeto (s). Defina isso como zero para anexar a " +"saia para o objeto (s) e obter uma aba para uma melhor aderência." + +#: src/libslic3r/PrintConfig.cpp:1666 +msgid "Skirt height" +msgstr "Altura da saia" + +#: src/libslic3r/PrintConfig.cpp:1667 +msgid "" +"Height of skirt expressed in layers. Set this to a tall value to use skirt " +"as a shield against drafts." +msgstr "" +"Altura da saia expressa em camadas. Defina isso como um valor alto para usar " +"a saia como um escudo contra rascunhos." + +#: src/libslic3r/PrintConfig.cpp:1674 +msgid "Loops (minimum)" +msgstr "Voltas (mínimo)" + +#: src/libslic3r/PrintConfig.cpp:1675 +msgid "Skirt Loops" +msgstr "Voltas de saia" + +#: src/libslic3r/PrintConfig.cpp:1676 +msgid "" +"Number of loops for the skirt. If the Minimum Extrusion Length option is " +"set, the number of loops might be greater than the one configured here. Set " +"this to zero to disable skirt completely." +msgstr "" +"Número de voltas para a saia. Se a opção comprimento mínimo de extrusão " +"estiver definida, o número de voltas pode ser maior do que aquele " +"configurado aqui. Defina isso como zero para desabilitar a saia " +"completamente." + +#: src/libslic3r/PrintConfig.cpp:1684 +msgid "Slow down if layer print time is below" +msgstr "Diminuir a velocidade quando o tempo de impressão for menor que" + +#: src/libslic3r/PrintConfig.cpp:1685 +msgid "" +"If layer print time is estimated below this number of seconds, print moves " +"speed will be scaled down to extend duration to this value." +msgstr "" +"Se o tempo de impressão da camada for estimado abaixo desse número de " +"segundos, a velocidade de impressão será reduzida para estender a duração a " +"esse valor." + +#: src/libslic3r/PrintConfig.cpp:1695 +msgid "Small perimeters" +msgstr "Perímetro pequeno" + +#: src/libslic3r/PrintConfig.cpp:1697 +msgid "" +"This separate setting will affect the speed of perimeters having radius <= " +"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " +"be calculated on the perimeters speed setting above. Set to zero for auto." +msgstr "" +"Este ajuste separado afetará a velocidade dos perímetros que têm o raio < = " +"6.5 mm (geralmente furos). Se expresso em porcentagem(por exemplo: 80%) Ele " +"será calculado sobre a velocidade de perímetros configurados acima. Defina " +"como zero para auto." + +#: src/libslic3r/PrintConfig.cpp:1707 +msgid "Solid infill threshold area" +msgstr "Área de limiar de preenchimento sólido" + +#: src/libslic3r/PrintConfig.cpp:1709 +msgid "" +"Force solid infill for regions having a smaller area than the specified " +"threshold." +msgstr "" +"Forçar preenchimento sólido para regiões com uma área menor do que o limite " +"especificado." + +#: src/libslic3r/PrintConfig.cpp:1710 +msgid "mm²" +msgstr "mm²" + +#: src/libslic3r/PrintConfig.cpp:1716 +msgid "Solid infill extruder" +msgstr "Extrusora de preenchimento sólido" + +#: src/libslic3r/PrintConfig.cpp:1718 +msgid "The extruder to use when printing solid infill." +msgstr "" +"A extrusora a ser utilizada quando estiver imprimindo preenchimento sólido." + +#: src/libslic3r/PrintConfig.cpp:1724 +msgid "Solid infill every" +msgstr "Preenchimento sólido a cada" + +#: src/libslic3r/PrintConfig.cpp:1726 +msgid "" +"This feature allows to force a solid layer every given number of layers. " +"Zero to disable. You can set this to any value (for example 9999); Slic3r " +"will automatically choose the maximum possible number of layers to combine " +"according to nozzle diameter and layer height." +msgstr "" +"Este recurso permite forçar uma camada sólida a cada número determinado de " +"camadas. Zero para desabilitar. Você pode definir isso para qualquer valor " +"(por exemplo 9999); Slic3r escolherá automaticamente o número máximo " +"possível de camadas para combinar de acordo com o diâmetro da ponteira e a " +"altura da camada." + +#: src/libslic3r/PrintConfig.cpp:1738 +msgid "" +"Set this to a non-zero value to set a manual extrusion width for infill for " +"solid surfaces. If left zero, default extrusion width will be used if set, " +"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " +"(for example 90%) it will be computed over layer height." +msgstr "" +"Defina isso como um valor diferente de zero para definir uma largura de " +"extrusão manual para preenchimento de superfícies sólidas. Se for deixado " +"zero, a largura de extrusão padrão será usada se definido, caso contrário, " +"1,125 x diâmetro da ponteira será usado. Se expresso em porcentagem(por " +"exemplo, 90%) Ele será calculado sobre a altura da camada." + +#: src/libslic3r/PrintConfig.cpp:1748 +msgid "" +"Speed for printing solid regions (top/bottom/internal horizontal shells). " +"This can be expressed as a percentage (for example: 80%) over the default " +"infill speed above. Set to zero for auto." +msgstr "" +"Velocidade para imprimir regiões sólidas (topo/fundo/perímetros externos " +"horizontais internas). Isto pode ser expresso em porcentagem(por exemplo: " +"80%) sobre a velocidade de preenchimento padrão acima. Defina como zero para " +"auto." + +#: src/libslic3r/PrintConfig.cpp:1760 +msgid "Number of solid layers to generate on top and bottom surfaces." +msgstr "" +"Número de camadas sólidas a serem geradas nas interfaces do topo e base." + +#: src/libslic3r/PrintConfig.cpp:1766 +msgid "Spiral vase" +msgstr "Vaso espiral" + +#: src/libslic3r/PrintConfig.cpp:1767 +msgid "" +"This feature will raise Z gradually while printing a single-walled object in " +"order to remove any visible seam. This option requires a single perimeter, " +"no infill, no top solid layers and no support material. You can still set " +"any number of bottom solid layers as well as skirt/brim loops. It won't work " +"when printing more than an object." +msgstr "" +"Este recurso irá elevar Z gradualmente durante a impressão de um objeto de " +"parede única, a fim de remover qualquer costura visível. Esta opção exige um " +"único perímetro, nenhum preenchimento, nenhumas camadas contínuas superiores " +"e nenhum material de sustentação. Você ainda pode definir qualquer número de " +"camadas sólidas de fundo, bem como saia/aba voltas. Ele não funcionará ao " +"imprimir mais de um objeto." + +#: src/libslic3r/PrintConfig.cpp:1775 +msgid "Temperature variation" +msgstr "Variação de temperatura" + +#: src/libslic3r/PrintConfig.cpp:1776 +msgid "" +"Temperature difference to be applied when an extruder is not active. Enables " +"a full-height \"sacrificial\" skirt on which the nozzles are periodically " +"wiped." +msgstr "" +"Diferença de temperatura a ser aplicada quando uma extrusora não está ativa. " +"Permite uma saia \"sacrificial\" em que as ponteiras são limpadas " +"periodicamente." + +#: src/libslic3r/PrintConfig.cpp:1786 +msgid "" +"This start procedure is inserted at the beginning, after bed has reached the " +"target temperature and extruder just started heating, and before extruder " +"has finished heating. If PrusaSlicer detects M104 or M190 in your custom " +"codes, such commands will not be prepended automatically so you're free to " +"customize the order of heating commands and other custom actions. Note that " +"you can use placeholder variables for all PrusaSlicer settings, so you can " +"put a \"M109 S[first_layer_temperature]\" command wherever you want." +msgstr "" +"Este procedimento do começo é introduzido no início, depois que a mesa " +"alcançou a temperatura alvo e a extrusora apenas começou o aquecimento, e " +"antes que a extrusora terminasse o aquecimento. Se PrusaSlicer detecta M104 " +"ou M190 em seus códigos personalizados, esses comandos não serão precedidos " +"automaticamente para que você esteja livre para personalizar a ordem dos " +"comandos de aquecimento e outras ações personalizadas. Observe que você pode " +"usar variáveis de espaço reservado para todas as config. de PrusaSlicer, " +"para que você possa colocar um comando \"M109 S " +"[temperatura_primeira_camada]\" onde quiser." + +#: src/libslic3r/PrintConfig.cpp:1801 +msgid "" +"This start procedure is inserted at the beginning, after any printer start " +"gcode (and after any toolchange to this filament in case of multi-material " +"printers). This is used to override settings for a specific filament. If " +"PrusaSlicer detects M104, M109, M140 or M190 in your custom codes, such " +"commands will not be prepended automatically so you're free to customize the " +"order of heating commands and other custom actions. Note that you can use " +"placeholder variables for all PrusaSlicer settings, so you can put a \"M109 " +"S[first_layer_temperature]\" command wherever you want. If you have multiple " +"extruders, the gcode is processed in extruder order." +msgstr "" +"Este procedimento de início é inserido no começo, depois de qualquer " +"impressora iniciar Gcode (e depois de qualquer troca de ferramenta para este " +"filamento em caso de impressoras de vários materiais). Isso é usado para " +"substituir as config. de um filamento específico. Se PrusaSlicer detecta " +"M104, M109, M140 ou M190 em seus códigos personalizados, esses comandos não " +"serão precedidos automaticamente para que você esteja livre para " +"personalizar a ordem dos comandos de aquecimento e outras ações " +"personalizadas. Observe que você pode usar variáveis de espaço reservado " +"para todas as config. de PrusaSlicer, para que você possa colocar um comando " +"\"M109 S [temperatura_primeira_camada]\" onde quiser. Se você tiver várias " +"extrusoras, o Gcode é processado em ordem de extrusora." + +#: src/libslic3r/PrintConfig.cpp:1817 +msgid "Single Extruder Multi Material" +msgstr "Única extrusora multi material" + +#: src/libslic3r/PrintConfig.cpp:1818 +msgid "The printer multiplexes filaments into a single hot end." +msgstr "A impressora multiplexes filamentos em uma única extremidade quente." + +#: src/libslic3r/PrintConfig.cpp:1823 +msgid "Prime all printing extruders" +msgstr "Extrusar todas as extrusoras de impressão" + +#: src/libslic3r/PrintConfig.cpp:1824 +msgid "" +"If enabled, all printing extruders will be primed at the front edge of the " +"print bed at the start of the print." +msgstr "" +"Se ativada, todas as extrusoras de impressão extrusarão na aba dianteira da " +"mesa de impressão no início da impressão." + +#: src/libslic3r/PrintConfig.cpp:1829 +msgid "Generate support material" +msgstr "Gerar material de suporte" + +#: src/libslic3r/PrintConfig.cpp:1831 +msgid "Enable support material generation." +msgstr "Habilitar geração de material de suporte." + +#: src/libslic3r/PrintConfig.cpp:1835 +msgid "Auto generated supports" +msgstr "Gerar suportes automaticamente" + +#: src/libslic3r/PrintConfig.cpp:1837 +msgid "" +"If checked, supports will be generated automatically based on the overhang " +"threshold value. If unchecked, supports will be generated inside the " +"\"Support Enforcer\" volumes only." +msgstr "" +"Se marcada, os suportes serão gerados automaticamente com base no valor do " +"limite de angulação. Se desmarcada, as sustentações serão geradas dentro dos " +"volumes do \"reforçador de suporte\" somente." + +#: src/libslic3r/PrintConfig.cpp:1843 +msgid "XY separation between an object and its support" +msgstr "Separação entre o objeto e seu suporte em XY" + +#: src/libslic3r/PrintConfig.cpp:1845 +msgid "" +"XY separation between an object and its support. If expressed as percentage " +"(for example 50%), it will be calculated over external perimeter width." +msgstr "" +"Separação entre o objeto e seu suporte em XY. Se expresso como porcentagem " +"(por exemplo, 50%), será calculado com base na espessura do perímetro " +"externo." + +#: src/libslic3r/PrintConfig.cpp:1855 +msgid "Pattern angle" +msgstr "Ângulo do padrão" + +#: src/libslic3r/PrintConfig.cpp:1857 +msgid "" +"Use this setting to rotate the support material pattern on the horizontal " +"plane." +msgstr "" +"Use essa config. para girar o padrão de material de suporte no plano " +"horizontal." + +#: src/libslic3r/PrintConfig.cpp:1867 src/libslic3r/PrintConfig.cpp:2563 +msgid "" +"Only create support if it lies on a build plate. Don't create support on a " +"print." +msgstr "" +"Apenas criar suporte se ele está em uma mesa. Não crie suporte em uma " +"impressão." + +#: src/libslic3r/PrintConfig.cpp:1873 +msgid "Contact Z distance" +msgstr "Distância de contato Z" + +#: src/libslic3r/PrintConfig.cpp:1875 +msgid "" +"The vertical distance between object and support material interface. Setting " +"this to 0 will also prevent Slic3r from using bridge flow and speed for the " +"first object layer." +msgstr "" +"A distância vertical entre o objeto e a interface de material de suporte. " +"Definir isso como 0 também impedirá Slic3r de usar o fluxo de ponte e a " +"velocidade para a primeira camada de objeto." + +#: src/libslic3r/PrintConfig.cpp:1882 +msgid "0 (soluble)" +msgstr "0 (solúvel)" + +#: src/libslic3r/PrintConfig.cpp:1883 +msgid "0.2 (detachable)" +msgstr "0.2 (destacável)" + +#: src/libslic3r/PrintConfig.cpp:1888 +msgid "Enforce support for the first" +msgstr "Reforçar suportes para a(s) primeira(s)" + +#: src/libslic3r/PrintConfig.cpp:1890 +msgid "" +"Generate support material for the specified number of layers counting from " +"bottom, regardless of whether normal support material is enabled or not and " +"regardless of any angle threshold. This is useful for getting more adhesion " +"of objects having a very thin or poor footprint on the build plate." +msgstr "" +"Gere material de suporte para o número especificado de camadas que contam da " +"parte inferior, independentemente de o material de suporte normal estar " +"ativado ou não e independentemente de qualquer limite de ângulo. Isso é útil " +"para obter mais aderência de objetos com uma pegada muito fina ou fraca na " +"placa de construção." + +#: src/libslic3r/PrintConfig.cpp:1895 +msgid "Enforce support for the first n layers" +msgstr "Reforçar suportes na(s) primera(s) n camada(s)" + +#: src/libslic3r/PrintConfig.cpp:1901 +msgid "Support material/raft/skirt extruder" +msgstr "Extrusora de material de suporte/estrado/saia" + +#: src/libslic3r/PrintConfig.cpp:1903 +msgid "" +"The extruder to use when printing support material, raft and skirt (1+, 0 to " +"use the current extruder to minimize tool changes)." +msgstr "" +"A extrusora a ser usada ao imprimir material de suporte, estrado e saia (1 " +"+, 0 para usar a extrusora atual para minimizar as mudanças na ferramenta)." + +#: src/libslic3r/PrintConfig.cpp:1912 +msgid "" +"Set this to a non-zero value to set a manual extrusion width for support " +"material. If left zero, default extrusion width will be used if set, " +"otherwise nozzle diameter will be used. If expressed as percentage (for " +"example 90%) it will be computed over layer height." +msgstr "" +"Defina isso como um valor diferente de zero para definir uma largura de " +"extrusão manual para material de suporte. Se deixada em zero, a largura " +"padrão da extrusão será usada, se não o diâmetro da ponteira será usado. Se " +"expresso em porcentagem(por exemplo, 90%) Ele será calculado sobre a altura " +"da camada." + +#: src/libslic3r/PrintConfig.cpp:1920 +msgid "Interface loops" +msgstr "Voltas da interface" + +#: src/libslic3r/PrintConfig.cpp:1922 +msgid "" +"Cover the top contact layer of the supports with loops. Disabled by default." +msgstr "" +"Cubra a camada de contato superior dos suportes com laços. Desativado por " +"padrão." + +#: src/libslic3r/PrintConfig.cpp:1927 +msgid "Support material/raft interface extruder" +msgstr "Extrusora de material de suporte/estrado" + +#: src/libslic3r/PrintConfig.cpp:1929 +msgid "" +"The extruder to use when printing support material interface (1+, 0 to use " +"the current extruder to minimize tool changes). This affects raft too." +msgstr "" +"A extrusora para usar ao imprimir a relação material do apoio (1 +, 0 para " +"usar o extrusor atual para minimizar mudanças da ferramenta). Isso afeta o " +"estrado também." + +#: src/libslic3r/PrintConfig.cpp:1936 +msgid "Interface layers" +msgstr "Camadas de interface" + +#: src/libslic3r/PrintConfig.cpp:1938 +msgid "" +"Number of interface layers to insert between the object(s) and support " +"material." +msgstr "" +"Número de camadas de interface para inserir entre o objeto(s) e material de " +"suporte." + +#: src/libslic3r/PrintConfig.cpp:1945 +msgid "Interface pattern spacing" +msgstr "Espaçamento do padrão da interface" + +#: src/libslic3r/PrintConfig.cpp:1947 +msgid "Spacing between interface lines. Set zero to get a solid interface." +msgstr "" +"Espaçamento entre as linhas de interface. Defina zero para obter uma " +"interface sólida." + +#: src/libslic3r/PrintConfig.cpp:1956 +msgid "" +"Speed for printing support material interface layers. If expressed as " +"percentage (for example 50%) it will be calculated over support material " +"speed." +msgstr "" +"Velocidade para camadas de interface de material de suporte de impressão. Se " +"expresso em porcentagem(por exemplo, 50%) Ele será calculado sobre a " +"velocidade do material de suporte." + +#: src/libslic3r/PrintConfig.cpp:1965 +msgid "Pattern" +msgstr "Padrão" + +#: src/libslic3r/PrintConfig.cpp:1967 +msgid "Pattern used to generate support material." +msgstr "Padrão usado para gerar material de suporte." + +#: src/libslic3r/PrintConfig.cpp:1973 +msgid "Rectilinear grid" +msgstr "Grade rectilínea" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "Pattern spacing" +msgstr "Padrão de espaçamento" + +#: src/libslic3r/PrintConfig.cpp:1981 +msgid "Spacing between support material lines." +msgstr "Espaçamento entre linhas de material de suporte." + +#: src/libslic3r/PrintConfig.cpp:1990 +msgid "Speed for printing support material." +msgstr "Velocidade para imprimir material de suporte." + +#: src/libslic3r/PrintConfig.cpp:1997 +msgid "Synchronize with object layers" +msgstr "Sincronizar com camadas de objeto" + +#: src/libslic3r/PrintConfig.cpp:1999 +msgid "" +"Synchronize support layers with the object print layers. This is useful with " +"multi-material printers, where the extruder switch is expensive." +msgstr "" +"Sincronize camadas de suporte com as camadas de impressão do objeto. Isto é " +"útil com as impressoras do multi-material, onde o interruptor da extrusora é " +"caro." + +#: src/libslic3r/PrintConfig.cpp:2005 +msgid "Overhang threshold" +msgstr "Limite de angulação" + +#: src/libslic3r/PrintConfig.cpp:2007 +msgid "" +"Support material will not be generated for overhangs whose slope angle (90° " +"= vertical) is above the given threshold. In other words, this value " +"represent the most horizontal slope (measured from the horizontal plane) " +"that you can print without support material. Set to zero for automatic " +"detection (recommended)." +msgstr "" +"O material de suporte não será gerado para angulações cujo ângulo de " +"inclinação (90 ° = vertical) esteja acima do limite determinado. Em outras " +"palavras, esse valor representa a inclinação mais horizontal (medida a " +"partir do plano horizontal) que você pode imprimir sem material de suporte. " +"Defina como zero para detecção automática (recomendado)." + +#: src/libslic3r/PrintConfig.cpp:2019 +msgid "With sheath around the support" +msgstr "Com bainha em torno do apoio" + +#: src/libslic3r/PrintConfig.cpp:2021 +msgid "" +"Add a sheath (a single perimeter line) around the base support. This makes " +"the support more reliable, but also more difficult to remove." +msgstr "" +"Adicione uma bainha (uma única linha de perímetro) em torno do suporte base. " +"Isso torna o suporte mais confiável, mas também mais difícil de remover." + +#: src/libslic3r/PrintConfig.cpp:2028 +msgid "" +"Extruder temperature for layers after the first one. Set this to zero to " +"disable temperature control commands in the output." +msgstr "" +"Temperatura da extrusora para camadas após a primeira. Defina como zero para " +"desabilitar os comandos de controle de temperatura na saída." + +#: src/libslic3r/PrintConfig.cpp:2036 +msgid "Detect thin walls" +msgstr "Detectar paredes finas" + +#: src/libslic3r/PrintConfig.cpp:2038 +msgid "" +"Detect single-width walls (parts where two extrusions don't fit and we need " +"to collapse them into a single trace)." +msgstr "" +"Detecte paredes de largura única (partes onde duas extrusões não cabem e " +"precisamos recolhê-las em um único traço)." + +#: src/libslic3r/PrintConfig.cpp:2044 +msgid "Threads" +msgstr "Roscas" + +#: src/libslic3r/PrintConfig.cpp:2045 +msgid "" +"Threads are used to parallelize long-running tasks. Optimal threads number " +"is slightly above the number of available cores/processors." +msgstr "" +"Tópicos são usados para paralelizar tarefas de execução demorada. O número " +"de tópicos ideais está ligeiramente acima do número de núcleos/processadores " +"disponíveis." + +#: src/libslic3r/PrintConfig.cpp:2057 +msgid "" +"This custom code is inserted before every toolchange. Placeholder variables " +"for all PrusaSlicer settings as well as {previous_extruder} and " +"{next_extruder} can be used. When a tool-changing command which changes to " +"the correct extruder is included (such as T{next_extruder}), PrusaSlicer " +"will emit no other such command. It is therefore possible to script custom " +"behaviour both before and after the toolchange." +msgstr "" +"Este código personalizado é inserido antes de cada troca de ferramenta. " +"Variáveis de espaço reservado para todas as config. de PrusaSlicer, bem como " +"{previous_extruder} e {next_extruder} podem ser usadas. Quando um comando de " +"mudança de ferramenta que muda para a extrusora correta está incluído (como " +"T {next_extruder}), PrusaSlicer emitirá nenhum outro comando tal. Portanto, " +"é possível script comportamento personalizado antes e depois da mudança de " +"ferramenta." + +#: src/libslic3r/PrintConfig.cpp:2070 +msgid "" +"Set this to a non-zero value to set a manual extrusion width for infill for " +"top surfaces. You may want to use thinner extrudates to fill all narrow " +"regions and get a smoother finish. If left zero, default extrusion width " +"will be used if set, otherwise nozzle diameter will be used. If expressed as " +"percentage (for example 90%) it will be computed over layer height." +msgstr "" +"Defina isso como um valor diferente de zero para definir uma largura de " +"extrusão manual para preenchimento para superfícies superiores. Você pode " +"querer usar extrusões mais finos para preencher todas as regiões estreitas e " +"obter um acabamento mais suave. Se a esquerda zero, a largura padrão da " +"extrusão será usada se ajustado, se não o diâmetro da ponteira será usado. " +"Se expresso em porcentagem(por exemplo, 90%) Ele será calculado sobre a " +"altura da camada." + +#: src/libslic3r/PrintConfig.cpp:2081 +msgid "" +"Speed for printing top solid layers (it only applies to the uppermost " +"external layers and not to their internal solid layers). You may want to " +"slow down this to get a nicer surface finish. This can be expressed as a " +"percentage (for example: 80%) over the solid infill speed above. Set to zero " +"for auto." +msgstr "" +"Velocidade para imprimir camadas sólidas superiores (só se aplica às camadas " +"externas superiores e não às suas camadas sólidas internas). Você pode " +"querer diminuir este para ter um revestimento de superfície mais agradável. " +"Isto pode ser expresso em porcentagem(por exemplo: 80%) sobre a velocidade " +"de preenchimento sólido acima. Defina como zero para auto." + +#: src/libslic3r/PrintConfig.cpp:2096 +msgid "Number of solid layers to generate on top surfaces." +msgstr "Número de camadas sólidas para gerar em superfícies superiores." + +#: src/libslic3r/PrintConfig.cpp:2097 +msgid "Top solid layers" +msgstr "Camadas sólidas de topo" + +#: src/libslic3r/PrintConfig.cpp:2103 +msgid "Speed for travel moves (jumps between distant extrusion points)." +msgstr "" +"Velocidade para movimentos de viagem (saltos entre pontos de extrusão " +"distantes)." + +#: src/libslic3r/PrintConfig.cpp:2111 +msgid "Use firmware retraction" +msgstr "Usar retração do firmware" + +#: src/libslic3r/PrintConfig.cpp:2112 +msgid "" +"This experimental setting uses G10 and G11 commands to have the firmware " +"handle the retraction. This is only supported in recent Marlin." +msgstr "" +"Esta config. experimental usa comandos G10 e G11 para que o firmware " +"manipule a retração. Isso só é suportado no recente Marlin." + +#: src/libslic3r/PrintConfig.cpp:2118 +msgid "Use relative E distances" +msgstr "Utilizar distâncias relativas do E" + +#: src/libslic3r/PrintConfig.cpp:2119 +msgid "" +"If your firmware requires relative E values, check this, otherwise leave it " +"unchecked. Most firmwares use absolute values." +msgstr "" +"Se o firmware necessitar de valores relativos E, verifique isto, caso " +"contrário, deixe-o desmarcado. A maioria dos firmwares usa valores absolutos." + +#: src/libslic3r/PrintConfig.cpp:2125 +msgid "Use volumetric E" +msgstr "Usar E volumétrico" + +#: src/libslic3r/PrintConfig.cpp:2126 +msgid "" +"This experimental setting uses outputs the E values in cubic millimeters " +"instead of linear millimeters. If your firmware doesn't already know " +"filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] " +"T0' in your start G-code in order to turn volumetric mode on and use the " +"filament diameter associated to the filament selected in Slic3r. This is " +"only supported in recent Marlin." +msgstr "" +"Essa config. experimental usa saídas os valores E em milímetros cúbicos em " +"vez de milímetros lineares. Se o firmware já não souber o diâmetro (s) do " +"filamento, você pode colocar comandos como ' m 200 D [filament_diameter_0] " +"T0 ' no seu G-code inicial para ativar o modo volumétrico e usar o diâmetro " +"do filamento associado ao filamento selecionado em Slic3r. Isso só é " +"suportado no recente Marlin." + +#: src/libslic3r/PrintConfig.cpp:2136 +msgid "Enable variable layer height feature" +msgstr "Habilitar altura de camada variável" + +#: src/libslic3r/PrintConfig.cpp:2137 +msgid "" +"Some printers or printer setups may have difficulties printing with a " +"variable layer height. Enabled by default." +msgstr "" +"Algumas impressoras ou config. de impressora podem ter dificuldades para " +"imprimir com uma altura de camada variável. Ativado por padrão." + +#: src/libslic3r/PrintConfig.cpp:2143 +msgid "Wipe while retracting" +msgstr "Limpe durante a retração" + +#: src/libslic3r/PrintConfig.cpp:2144 +msgid "" +"This flag will move the nozzle while retracting to minimize the possible " +"blob on leaky extruders." +msgstr "" +"Esta bandeira moverá a ponteira ao retrair para minimizar a bolha possível " +"em extrusoras vazando." + +#: src/libslic3r/PrintConfig.cpp:2151 +msgid "" +"Multi material printers may need to prime or purge extruders on tool " +"changes. Extrude the excess material into the wipe tower." +msgstr "" +"Várias impressoras de multi-material podem precisar purgar extrusoras em " +"alterações de ferramenta. EXTRUDE o excesso de material para a torre de " +"limpeza." + +#: src/libslic3r/PrintConfig.cpp:2157 +msgid "Purging volumes - load/unload volumes" +msgstr "Volumes de purga-volumes de carga/descarregamento" + +#: src/libslic3r/PrintConfig.cpp:2158 +msgid "" +"This vector saves required volumes to change from/to each tool used on the " +"wipe tower. These values are used to simplify creation of the full purging " +"volumes below." +msgstr "" +"Este vetor salva os volumes necessários para mudar de/para cada ferramenta " +"usada na torre de limpeza. Esses valores são usados para simplificar a " +"criação dos volumes de purga completos abaixo." + +#: src/libslic3r/PrintConfig.cpp:2164 +msgid "Purging volumes - matrix" +msgstr "Volumes de purga-matriz" + +#: src/libslic3r/PrintConfig.cpp:2165 +msgid "" +"This matrix describes volumes (in cubic milimetres) required to purge the " +"new filament on the wipe tower for any given pair of tools." +msgstr "" +"Esta matriz descreve volumes (em milimetros cúbicos) necessários para limpar " +"o novo filamento na torre de limpeza para qualquer dado par de ferramentas." + +#: src/libslic3r/PrintConfig.cpp:2174 +msgid "Position X" +msgstr "Posição X" + +#: src/libslic3r/PrintConfig.cpp:2175 +msgid "X coordinate of the left front corner of a wipe tower" +msgstr "Coordenada X do canto frontal esquerdo de uma torre de limpeza" + +#: src/libslic3r/PrintConfig.cpp:2181 +msgid "Position Y" +msgstr "Posição Y" + +#: src/libslic3r/PrintConfig.cpp:2182 +msgid "Y coordinate of the left front corner of a wipe tower" +msgstr "Coordenada Y do canto dianteiro esquerdo de uma torre de limpeza" + +#: src/libslic3r/PrintConfig.cpp:2189 +msgid "Width of a wipe tower" +msgstr "Largura de uma torre da limpeza" + +#: src/libslic3r/PrintConfig.cpp:2195 +msgid "Wipe tower rotation angle" +msgstr "Ângulo de rotação da torre" + +#: src/libslic3r/PrintConfig.cpp:2196 +msgid "Wipe tower rotation angle with respect to x-axis." +msgstr "Ângulo de rotação da torre de limpeza em relação ao eixo X." + +#: src/libslic3r/PrintConfig.cpp:2203 +msgid "Wipe into this object's infill" +msgstr "Limpe no preenchimento deste objeto" + +#: src/libslic3r/PrintConfig.cpp:2204 +msgid "" +"Purging after toolchange will done inside this object's infills. This lowers " +"the amount of waste but may result in longer print time due to additional " +"travel moves." +msgstr "" +"Purga após troca de ferramenta será feito dentro de preenchimentos deste " +"objeto. Isso diminui a quantidade de resíduos, mas pode resultar em tempo de " +"impressão mais longo devido a movimentos de viagem adicionais." + +#: src/libslic3r/PrintConfig.cpp:2211 +msgid "Wipe into this object" +msgstr "Limpar neste objeto" + +#: src/libslic3r/PrintConfig.cpp:2212 +msgid "" +"Object will be used to purge the nozzle after a toolchange to save material " +"that would otherwise end up in the wipe tower and decrease print time. " +"Colours of the objects will be mixed as a result." +msgstr "" +"Objeto será usado para limpar o bico após uma troca de ferramenta para " +"salvar o material que de outra forma acabaria na torre de limpeza e diminuir " +"o tempo de impressão. As cores dos objetos serão misturadas como resultado." + +#: src/libslic3r/PrintConfig.cpp:2218 +msgid "Maximal bridging distance" +msgstr "Distância de ponte máxima" + +#: src/libslic3r/PrintConfig.cpp:2219 +msgid "Maximal distance between supports on sparse infill sections." +msgstr "" +"Distância máxima entre as sustentações em seções preenchimento esparsas." + +#: src/libslic3r/PrintConfig.cpp:2225 +msgid "XY Size Compensation" +msgstr "Compensação de tamanho em XY" + +#: src/libslic3r/PrintConfig.cpp:2227 +msgid "" +"The object will be grown/shrunk in the XY plane by the configured value " +"(negative = inwards, positive = outwards). This might be useful for fine-" +"tuning hole sizes." +msgstr "" +"O objeto será aumentado/encolhido no plano XY pelo valor configurado " +"(negativo = para dentro, positivo = para fora). Isso pode ser útil para " +"ajustar os tamanhos dos furos." + +#: src/libslic3r/PrintConfig.cpp:2235 +msgid "Z offset" +msgstr "Compensamento do Z" + +#: src/libslic3r/PrintConfig.cpp:2236 +msgid "" +"This value will be added (or subtracted) from all the Z coordinates in the " +"output G-code. It is used to compensate for bad Z endstop position: for " +"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " +"print bed, set this to -0.3 (or fix your endstop)." +msgstr "" +"Esse valor será adicionado (ou subtraído) de todas as coordenadas Z no G-" +"code de saída. Ele é usado para compensar a posição de final de curso Z " +"ruim: por exemplo, se o seu final de curso zero realmente deixa o bico 0.3 " +"mm longe da mesa de impressão, defina este para-0,3 (ou corrigir o seu final " +"de curso)." + +#: src/libslic3r/PrintConfig.cpp:2294 +msgid "Display width" +msgstr "Largura do display" + +#: src/libslic3r/PrintConfig.cpp:2295 +msgid "Width of the display" +msgstr "Largura do display" + +#: src/libslic3r/PrintConfig.cpp:2300 +msgid "Display height" +msgstr "Altura do display" + +#: src/libslic3r/PrintConfig.cpp:2301 +msgid "Height of the display" +msgstr "Altura do display" + +#: src/libslic3r/PrintConfig.cpp:2306 +msgid "Number of pixels in" +msgstr "Número de pixels em" + +#: src/libslic3r/PrintConfig.cpp:2308 +msgid "Number of pixels in X" +msgstr "Número de pixels em X" + +#: src/libslic3r/PrintConfig.cpp:2314 +msgid "Number of pixels in Y" +msgstr "Número de pixels em Y" + +#: src/libslic3r/PrintConfig.cpp:2319 +msgid "Display horizontal mirroring" +msgstr "Exibir espelhamento horizontal" + +#: src/libslic3r/PrintConfig.cpp:2320 +msgid "Mirror horizontally" +msgstr "Espelhar horizontalmente" + +#: src/libslic3r/PrintConfig.cpp:2321 +msgid "Enable horizontal mirroring of output images" +msgstr "Habilitar espelhamento horizontal de imagens de saída" + +#: src/libslic3r/PrintConfig.cpp:2326 +msgid "Display vertical mirroring" +msgstr "Exibir espelhamento vertical" + +#: src/libslic3r/PrintConfig.cpp:2327 +msgid "Mirror vertically" +msgstr "Espelharvertical" + +#: src/libslic3r/PrintConfig.cpp:2328 +msgid "Enable vertical mirroring of output images" +msgstr "Habilitar espelhamento vertical de imagens de saída" + +#: src/libslic3r/PrintConfig.cpp:2333 +msgid "Display orientation" +msgstr "Orientação do display" + +#: src/libslic3r/PrintConfig.cpp:2334 +msgid "" +"Set the actual LCD display orientation inside the SLA printer. Portrait mode " +"will flip the meaning of display width and height parameters and the output " +"images will be rotated by 90 degrees." +msgstr "" +"Defina a orientação real do visor LCD dentro da impressora SLA. O modo " +"retrato inverterá o significado dos parâmetros de largura e altura da tela e " +"as imagens de saída serão giradas por 90 graus." + +#: src/libslic3r/PrintConfig.cpp:2340 +msgid "Landscape" +msgstr "Paisagem" + +#: src/libslic3r/PrintConfig.cpp:2341 +msgid "Portrait" +msgstr "Retrato" + +#: src/libslic3r/PrintConfig.cpp:2346 +msgid "Fast" +msgstr "Rápido" + +#: src/libslic3r/PrintConfig.cpp:2347 +msgid "Fast tilt" +msgstr "Inclinação rápida" + +#: src/libslic3r/PrintConfig.cpp:2348 +msgid "Time of the fast tilt" +msgstr "Tempo da inclinação rápida" + +#: src/libslic3r/PrintConfig.cpp:2355 +msgid "Slow" +msgstr "Lento" + +#: src/libslic3r/PrintConfig.cpp:2356 +msgid "Slow tilt" +msgstr "Inclinação lenta" + +#: src/libslic3r/PrintConfig.cpp:2357 +msgid "Time of the slow tilt" +msgstr "Tempo da inclinação lenta" + +#: src/libslic3r/PrintConfig.cpp:2364 +msgid "Area fill" +msgstr "Preenchimento de área" + +#: src/libslic3r/PrintConfig.cpp:2365 +msgid "" +"The percentage of the bed area. \n" +"If the print area exceeds the specified value, \n" +"then a slow tilt will be used, otherwise - a fast tilt" +msgstr "" +"A porcentagem da área de mesa. \n" +"Se a área de impressão exceder o valor especificado, \n" +"em seguida, uma inclinação lenta será usada, caso contrário-uma inclinação " +"rápida" + +#: src/libslic3r/PrintConfig.cpp:2372 src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2374 +msgid "Printer scaling correction" +msgstr "Correção de dimensionamento da impressora" + +#: src/libslic3r/PrintConfig.cpp:2380 src/libslic3r/PrintConfig.cpp:2381 +msgid "Printer absolute correction" +msgstr "Correção absoluta da impressora" + +#: src/libslic3r/PrintConfig.cpp:2382 +msgid "" +"Will inflate or deflate the sliced 2D polygons according to the sign of the " +"correction." +msgstr "" +"Irá inflar ou esvaziar os polígonos 2D cortados de acordo com o sinal da " +"correção." + +#: src/libslic3r/PrintConfig.cpp:2388 src/libslic3r/PrintConfig.cpp:2389 +msgid "Printer gamma correction" +msgstr "Correção de gama de impressora" + +#: src/libslic3r/PrintConfig.cpp:2390 +msgid "" +"This will apply a gamma correction to the rasterized 2D polygons. A gamma " +"value of zero means thresholding with the threshold in the middle. This " +"behaviour eliminates antialiasing without losing holes in polygons." +msgstr "" +"Isso aplicará uma correção de gama para os polígonos 2D rasterizados. Um " +"valor gama de zero significa limiarização com o limiar no meio. Este " +"comportamento elimina suavização sem perder buracos em polígonos." + +#: src/libslic3r/PrintConfig.cpp:2401 src/libslic3r/PrintConfig.cpp:2402 +msgid "Initial layer height" +msgstr "Altura da camada inicial" + +#: src/libslic3r/PrintConfig.cpp:2408 +msgid "Faded layers" +msgstr "Camadas desbotadas" + +#: src/libslic3r/PrintConfig.cpp:2409 +msgid "" +"Number of the layers needed for the exposure time fade from initial exposure " +"time to the exposure time" +msgstr "" +"Número de camadas necessárias para o tempo de exposição desvanecer-se do " +"tempo de exposição inicial ao tempo de exposição" + +#: src/libslic3r/PrintConfig.cpp:2416 src/libslic3r/PrintConfig.cpp:2417 +msgid "Minimum exposure time" +msgstr "Tempo mínimo de exposição" + +#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2425 +msgid "Maximum exposure time" +msgstr "Tempo máximo de exposição" + +#: src/libslic3r/PrintConfig.cpp:2432 src/libslic3r/PrintConfig.cpp:2433 +msgid "Exposure time" +msgstr "Tempo de exposição" + +#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +msgid "Minimum initial exposure time" +msgstr "Tempo inicial mínimo de exposição" + +#: src/libslic3r/PrintConfig.cpp:2447 src/libslic3r/PrintConfig.cpp:2448 +msgid "Maximum initial exposure time" +msgstr "Tempo inicial máximo de exposição" + +#: src/libslic3r/PrintConfig.cpp:2455 src/libslic3r/PrintConfig.cpp:2456 +msgid "Initial exposure time" +msgstr "Tempo inicial mínimo de exposição" + +#: src/libslic3r/PrintConfig.cpp:2462 src/libslic3r/PrintConfig.cpp:2463 +msgid "Correction for expansion" +msgstr "Correção para expansão" + +#: src/libslic3r/PrintConfig.cpp:2469 +msgid "SLA print material notes" +msgstr "Notas de material de impressão de SLA" + +#: src/libslic3r/PrintConfig.cpp:2470 +msgid "You can put your notes regarding the SLA print material here." +msgstr "" +"Você pode colocar suas anotações sobre o material de impressão de SLA aqui." + +#: src/libslic3r/PrintConfig.cpp:2478 src/libslic3r/PrintConfig.cpp:2489 +msgid "Default SLA material profile" +msgstr "Perfil de material de SLA padrão" + +#: src/libslic3r/PrintConfig.cpp:2500 +msgid "Generate supports" +msgstr "Gerar suportes" + +#: src/libslic3r/PrintConfig.cpp:2502 +msgid "Generate supports for the models" +msgstr "Gere suportes para os modelos" + +#: src/libslic3r/PrintConfig.cpp:2507 +msgid "Support head front diameter" +msgstr "Diâmetro dianteiro principal da sustentação" + +#: src/libslic3r/PrintConfig.cpp:2509 +msgid "Diameter of the pointing side of the head" +msgstr "Diâmetro do lado apontando da cabeça" + +#: src/libslic3r/PrintConfig.cpp:2516 +msgid "Support head penetration" +msgstr "Suporte de penetração da cabeça" + +#: src/libslic3r/PrintConfig.cpp:2518 +msgid "How much the pinhead has to penetrate the model surface" +msgstr "Quanto a cabeça de alfinete tem de penetrar na superfície do modelo" + +#: src/libslic3r/PrintConfig.cpp:2525 +msgid "Support head width" +msgstr "Largura da cabeça de suporte" + +#: src/libslic3r/PrintConfig.cpp:2527 +msgid "Width from the back sphere center to the front sphere center" +msgstr "Largura do centro da esfera traseira ao centro da esfera dianteira" + +#: src/libslic3r/PrintConfig.cpp:2535 +msgid "Support pillar diameter" +msgstr "Diâmetro do pilar do suporte" + +#: src/libslic3r/PrintConfig.cpp:2537 +msgid "Diameter in mm of the support pillars" +msgstr "Diâmetro em mm dos pilares de suporte" + +#: src/libslic3r/PrintConfig.cpp:2545 +msgid "Support pillar connection mode" +msgstr "Modalidade da conexão da coluna da sustentação" + +#: src/libslic3r/PrintConfig.cpp:2546 +msgid "" +"Controls the bridge type between two neighboring pillars. Can be zig-zag, " +"cross (double zig-zag) or dynamic which will automatically switch between " +"the first two depending on the distance of the two pillars." +msgstr "" +"Controla o tipo de ponte entre dois pilares vizinhos. Pode ser zig-zag, Cruz " +"(zig-zag dobro) ou dinâmico que comutará automaticamente entre os primeiros " +"dois dependendo da distância dos dois pilares." + +#: src/libslic3r/PrintConfig.cpp:2554 +msgid "Zig-Zag" +msgstr "Zig-Zag" + +#: src/libslic3r/PrintConfig.cpp:2555 +msgid "Cross" +msgstr "Cruz" + +#: src/libslic3r/PrintConfig.cpp:2556 +msgid "Dynamic" +msgstr "Dinâmico" + +#: src/libslic3r/PrintConfig.cpp:2568 +msgid "Pillar widening factor" +msgstr "Fator de alargamento da coluna" + +#: src/libslic3r/PrintConfig.cpp:2570 +msgid "" +"Merging bridges or pillars into another pillars can increase the radius. " +"Zero means no increase, one means full increase." +msgstr "" +"Mesclar pontes ou pilares em outros pilares pode aumentar o raio. Zero " +"significa que não há aumento, um significa aumento total." + +#: src/libslic3r/PrintConfig.cpp:2579 +msgid "Support base diameter" +msgstr "Diâmetro base do suporte" + +#: src/libslic3r/PrintConfig.cpp:2581 +msgid "Diameter in mm of the pillar base" +msgstr "Diâmetro em mm da base do pilar" + +#: src/libslic3r/PrintConfig.cpp:2589 +msgid "Support base height" +msgstr "Altura base do suporte" + +#: src/libslic3r/PrintConfig.cpp:2591 +msgid "The height of the pillar base cone" +msgstr "A altura do cone da base da coluna" + +#: src/libslic3r/PrintConfig.cpp:2598 +msgid "Support base safety distance" +msgstr "Distância da segurança da base da sustentação" + +#: src/libslic3r/PrintConfig.cpp:2601 +msgid "" +"The minimum distance of the pillar base from the model in mm. Makes sense in " +"zero elevation mode where a gap according to this parameter is inserted " +"between the model and the pad." +msgstr "" +"A distância mínima da base do pilar do modelo em mm. faz sentido no modo de " +"elevação zero, onde uma lacuna de acordo com este parâmetro é inserida entre " +"o modelo e o pad." + +#: src/libslic3r/PrintConfig.cpp:2611 +msgid "Critical angle" +msgstr "Ângulo crítico" + +#: src/libslic3r/PrintConfig.cpp:2613 +msgid "The default angle for connecting support sticks and junctions." +msgstr "O ângulo padrão para conectar suportes e junções." + +#: src/libslic3r/PrintConfig.cpp:2621 +msgid "Max bridge length" +msgstr "Comprimento máximo da ponte" + +#: src/libslic3r/PrintConfig.cpp:2623 +msgid "The max length of a bridge" +msgstr "O comprimento máximo de uma ponte" + +#: src/libslic3r/PrintConfig.cpp:2630 +msgid "Max pillar linking distance" +msgstr "Distância máxima de conexão entre pilares" + +#: src/libslic3r/PrintConfig.cpp:2632 +msgid "" +"The max distance of two pillars to get linked with each other. A zero value " +"will prohibit pillar cascading." +msgstr "" +"A distância máxima de dois pilares para ficar ligado uns com os outros. Um " +"valor zero irá proibir o pilar em cascata." + +#: src/libslic3r/PrintConfig.cpp:2640 +msgid "Object elevation" +msgstr "Elevação do objeto" + +#: src/libslic3r/PrintConfig.cpp:2642 +msgid "" +"How much the supports should lift up the supported object. If \"Pad around " +"object\" is enabled, this value is ignored." +msgstr "" +"Quanto os suportes devem levantar o objecto suportado. Se \"pad em torno do " +"objeto\" estiver habilitado, esse valor será ignorado." + +#: src/libslic3r/PrintConfig.cpp:2653 +msgid "This is a relative measure of support points density." +msgstr "Esta é uma medida relativa de densidade de pontos de suporte." + +#: src/libslic3r/PrintConfig.cpp:2659 +msgid "Minimal distance of the support points" +msgstr "Distância mínima dos pontos de suporte" + +#: src/libslic3r/PrintConfig.cpp:2661 +msgid "No support points will be placed closer than this threshold." +msgstr "Nenhum ponto de apoio será colocado mais perto do que este limiar." + +#: src/libslic3r/PrintConfig.cpp:2667 +msgid "Use pad" +msgstr "Use pad" + +#: src/libslic3r/PrintConfig.cpp:2669 +msgid "Add a pad underneath the supported model" +msgstr "Adicionar um pad por baixo do modelo suportado" + +#: src/libslic3r/PrintConfig.cpp:2674 +msgid "Pad wall thickness" +msgstr "Espessura da parede do pad" + +#: src/libslic3r/PrintConfig.cpp:2676 +msgid "The thickness of the pad and its optional cavity walls." +msgstr "A espessura da pad e suas paredes de cavidade opcionais." + +#: src/libslic3r/PrintConfig.cpp:2684 +msgid "Pad wall height" +msgstr "Altura da parede do pad" + +#: src/libslic3r/PrintConfig.cpp:2685 +msgid "" +"Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " +"when enabling this feature, as some resins may produce an extreme suction " +"effect inside the cavity, which makes peeling the print off the vat foil " +"difficult." +msgstr "" +"Define a profundidade da cavidade da pad. Defina como zero para desabilitar " +"a cavidade. Tenha cuidado ao ativar este recurso, como algumas resinas podem " +"produzir um efeito de sucção extrema dentro da cavidade, o que torna a " +"descascar a impressão fora da folha de IVA difícil." + +#: src/libslic3r/PrintConfig.cpp:2698 +msgid "Max merge distance" +msgstr "Distância máxima da fusão" + +#: src/libslic3r/PrintConfig.cpp:2700 +msgid "" +"Some objects can get along with a few smaller pads instead of a single big " +"one. This parameter defines how far the center of two smaller pads should " +"be. If theyare closer, they will get merged into one pad." +msgstr "" +"Alguns objetos podem se dar bem com algumas pads menores em vez de um único " +"grande. Este parâmetro define até que ponto o centro de duas pads menores " +"deve ser. Se eles estão mais perto, eles vão se fundir em uma pad." + +#: src/libslic3r/PrintConfig.cpp:2720 +msgid "Pad wall slope" +msgstr "Inclinação da parede da pad" + +#: src/libslic3r/PrintConfig.cpp:2722 +msgid "" +"The slope of the pad wall relative to the bed plane. 90 degrees means " +"straight walls." +msgstr "" +"A inclinação da parede da pad em relação ao plano da mesa. 90 graus " +"significa paredes retas." + +#: src/libslic3r/PrintConfig.cpp:2731 +msgid "Pad around object" +msgstr "Pad em torno do objeto" + +#: src/libslic3r/PrintConfig.cpp:2733 +msgid "Create pad around object and ignore the support elevation" +msgstr "Criar pad ao redor do objeto e ignorar a elevação de suporte" + +#: src/libslic3r/PrintConfig.cpp:2738 +msgid "Pad object gap" +msgstr "Vão entre o pad e o objeto" + +#: src/libslic3r/PrintConfig.cpp:2740 +msgid "" +"The gap between the object bottom and the generated pad in zero elevation " +"mode." +msgstr "" +"A lacuna entre a parte inferior do objeto e o pad gerado no modo de elevação " +"zero." + +#: src/libslic3r/PrintConfig.cpp:2749 +msgid "Pad object connector stride" +msgstr "Inserir pad entre o objeto" + +#: src/libslic3r/PrintConfig.cpp:2751 +msgid "" +"Distance between two connector sticks which connect the object and the " +"generated pad." +msgstr "" +"Distância entre duas varas do conector que conectam o objeto e a pad gerada." + +#: src/libslic3r/PrintConfig.cpp:2758 +msgid "Pad object connector width" +msgstr "Largura do conector do objeto pad" + +#: src/libslic3r/PrintConfig.cpp:2760 +msgid "" +"Width of the connector sticks which connect the object and the generated pad." +msgstr "Largura das varas do conector que conectam o objeto e a pad gerada." + +#: src/libslic3r/PrintConfig.cpp:2767 +msgid "Pad object connector penetration" +msgstr "Pad objeto conector de penetração" + +#: src/libslic3r/PrintConfig.cpp:2770 +msgid "How much should the tiny connectors penetrate into the model body." +msgstr "Quanto deve os conectores minúsculos penetrar no corpo do modelo." + +#: src/libslic3r/PrintConfig.cpp:3130 +msgid "Export OBJ" +msgstr "Exportar OBJ" + +#: src/libslic3r/PrintConfig.cpp:3131 +msgid "Export the model(s) as OBJ." +msgstr "Exportar modelo(s) como OBJ." + +#: src/libslic3r/PrintConfig.cpp:3142 +msgid "Export SLA" +msgstr "Exportar SLA" + +#: src/libslic3r/PrintConfig.cpp:3143 +msgid "Slice the model and export SLA printing layers as PNG." +msgstr "Fatiar o modelo e exportar as camadas de impressão SLA como PNG." + +#: src/libslic3r/PrintConfig.cpp:3148 +msgid "Export 3MF" +msgstr "Exportar 3MF" + +#: src/libslic3r/PrintConfig.cpp:3149 +msgid "Export the model(s) as 3MF." +msgstr "Exportar modelo(s) como 3MF." + +#: src/libslic3r/PrintConfig.cpp:3153 +msgid "Export AMF" +msgstr "Exportar AMF" + +#: src/libslic3r/PrintConfig.cpp:3154 +msgid "Export the model(s) as AMF." +msgstr "Exportar modelo(s) como AMF." + +#: src/libslic3r/PrintConfig.cpp:3158 +msgid "Export STL" +msgstr "Exportar STL" + +#: src/libslic3r/PrintConfig.cpp:3159 +msgid "Export the model(s) as STL." +msgstr "Exportar modelo(s) como STL." + +#: src/libslic3r/PrintConfig.cpp:3164 +msgid "Slice the model and export toolpaths as G-code." +msgstr "Fatiar o modelo e exportar o percurso da ferramenta como G-code." + +#: src/libslic3r/PrintConfig.cpp:3169 +msgid "Slice" +msgstr "Fatiar" + +#: src/libslic3r/PrintConfig.cpp:3170 +msgid "" +"Slice the model as FFF or SLA based on the printer_technology configuration " +"value." +msgstr "" +"Divida o modelo como FFF ou SLA com base no valor de config. " +"printer_technology." + +#: src/libslic3r/PrintConfig.cpp:3175 +msgid "Help" +msgstr "Ajuda" + +#: src/libslic3r/PrintConfig.cpp:3176 +msgid "Show this help." +msgstr "Mostrar esta ajuda." + +#: src/libslic3r/PrintConfig.cpp:3181 +msgid "Help (FFF options)" +msgstr "Ajuda (opções FDM)" + +#: src/libslic3r/PrintConfig.cpp:3182 +msgid "Show the full list of print/G-code configuration options." +msgstr "Mostre a lista completa de opções de config. do Print/G-code." + +#: src/libslic3r/PrintConfig.cpp:3186 +msgid "Help (SLA options)" +msgstr "Ajuda (opções SLA)" + +#: src/libslic3r/PrintConfig.cpp:3187 +msgid "Show the full list of SLA print configuration options." +msgstr "Mostrar a lista completa de opções de config. de impressão de SLA." + +#: src/libslic3r/PrintConfig.cpp:3191 +msgid "Output Model Info" +msgstr "Informações do modelo de saída" + +#: src/libslic3r/PrintConfig.cpp:3192 +msgid "Write information about the model to the console." +msgstr "Escreva informações sobre o modelo para o console." + +#: src/libslic3r/PrintConfig.cpp:3196 +msgid "Save config file" +msgstr "Salvar arquivo de config." + +#: src/libslic3r/PrintConfig.cpp:3197 +msgid "Save configuration to the specified file." +msgstr "Salvar config. para o arquivo específico." + +#: src/libslic3r/PrintConfig.cpp:3207 +msgid "Align XY" +msgstr "Alinhar XY" + +#: src/libslic3r/PrintConfig.cpp:3208 +msgid "Align the model to the given point." +msgstr "Alinhar modelo de acordo com o ponto inserido." + +#: src/libslic3r/PrintConfig.cpp:3213 +msgid "Cut model at the given Z." +msgstr "Cortar modelo ao Z fornecido." + +#: src/libslic3r/PrintConfig.cpp:3234 +msgid "Center" +msgstr "Centralizar" + +#: src/libslic3r/PrintConfig.cpp:3235 +msgid "Center the print around the given center." +msgstr "Centralizar a impressão de acordo com o centro informado." + +#: src/libslic3r/PrintConfig.cpp:3239 +msgid "Don't arrange" +msgstr "Não organizar" + +#: src/libslic3r/PrintConfig.cpp:3240 +msgid "" +"Do not rearrange the given models before merging and keep their original XY " +"coordinates." +msgstr "" +"Não reorganize os modelos fornecidos antes de Mesclar e manter suas " +"coordenadas XY originais." + +#: src/libslic3r/PrintConfig.cpp:3243 +msgid "Duplicate" +msgstr "Duplicar" + +#: src/libslic3r/PrintConfig.cpp:3244 +msgid "Multiply copies by this factor." +msgstr "Multiplicar cópias por esse fator." + +#: src/libslic3r/PrintConfig.cpp:3248 +msgid "Duplicate by grid" +msgstr "Duplicar por grade" + +#: src/libslic3r/PrintConfig.cpp:3249 +msgid "Multiply copies by creating a grid." +msgstr "Multiplique cópias criando uma grade." + +#: src/libslic3r/PrintConfig.cpp:3252 +msgid "Merge" +msgstr "Mesclar" + +#: src/libslic3r/PrintConfig.cpp:3253 +msgid "" +"Arrange the supplied models in a plate and merge them in a single model in " +"order to perform actions once." +msgstr "" +"Organize os modelos fornecidos em uma placa e junte-os em um único modelo, a " +"fim de executar ações uma só vez." + +#: src/libslic3r/PrintConfig.cpp:3258 +msgid "" +"Try to repair any non-manifold meshes (this option is implicitly added " +"whenever we need to slice the model to perform the requested action)." +msgstr "" +"Tente reparar qualquer malhas não multiplicadas (essa opção é implicitamente " +"adicionada sempre que precisamos cortar o modelo para executar a ação " +"solicitada)." + +#: src/libslic3r/PrintConfig.cpp:3262 +msgid "Rotation angle around the Z axis in degrees." +msgstr "Ângulo de rotação ao redor do eixo Zem graus." + +#: src/libslic3r/PrintConfig.cpp:3266 +msgid "Rotate around X" +msgstr "Rotacionar no X" + +#: src/libslic3r/PrintConfig.cpp:3267 +msgid "Rotation angle around the X axis in degrees." +msgstr "Ângulo de rotação ao redor do eixo X em graus." + +#: src/libslic3r/PrintConfig.cpp:3271 +msgid "Rotate around Y" +msgstr "Rotacionar no Y" + +#: src/libslic3r/PrintConfig.cpp:3272 +msgid "Rotation angle around the Y axis in degrees." +msgstr "Ângulo de rotação ao redor do eixo Y em graus." + +#: src/libslic3r/PrintConfig.cpp:3277 +msgid "Scaling factor or percentage." +msgstr "Escalando fator ou porcentagem." + +#: src/libslic3r/PrintConfig.cpp:3282 +msgid "" +"Detect unconnected parts in the given model(s) and split them into separate " +"objects." +msgstr "" +"Detecte peças não conectadas em um determinado modelo (s) e divida-as em " +"objetos separados." + +#: src/libslic3r/PrintConfig.cpp:3285 +msgid "Scale to Fit" +msgstr "Dimensionar para caber" + +#: src/libslic3r/PrintConfig.cpp:3286 +msgid "Scale to fit the given volume." +msgstr "Escalar para se adequar ao volume informado." + +#: src/libslic3r/PrintConfig.cpp:3295 +msgid "Ignore non-existent config files" +msgstr "Ignorar arquivos de config. não existentes" + +#: src/libslic3r/PrintConfig.cpp:3296 +msgid "Do not fail if a file supplied to --load does not exist." +msgstr "Não falhe se um arquivo fornecido para--carregamento não existe." + +#: src/libslic3r/PrintConfig.cpp:3299 +msgid "Load config file" +msgstr "Carregar arquivo de config." + +#: src/libslic3r/PrintConfig.cpp:3300 +msgid "" +"Load configuration from the specified file. It can be used more than once to " +"load options from multiple files." +msgstr "" +"Carregar a config. do arquivo especificado. Ele pode ser usado mais de uma " +"vez para carregar opções de vários arquivos." + +#: src/libslic3r/PrintConfig.cpp:3303 +msgid "Output File" +msgstr "Arquivo de saída" + +#: src/libslic3r/PrintConfig.cpp:3304 +msgid "" +"The file where the output will be written (if not specified, it will be " +"based on the input file)." +msgstr "" +"O arquivo onde a saída será gravada (se não for especificado, ele será " +"baseado no arquivo de entrada)." + +#: src/libslic3r/PrintConfig.cpp:3314 +msgid "Data directory" +msgstr "Diretório de dados" + +#: src/libslic3r/PrintConfig.cpp:3315 +msgid "" +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." +msgstr "" +"Carregar e armazenar as config. no diretório especificado. Isso é útil para " +"manter perfis diferentes ou incluir config. de um armazenamento de rede." + +#: src/libslic3r/PrintConfig.cpp:3318 +msgid "Logging level" +msgstr "Nível de registro" + +#: src/libslic3r/PrintConfig.cpp:3319 +msgid "" +"Messages with severity lower or eqal to the loglevel will be printed out. 0:" +"trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" +msgstr "" +"Mensagens com severidade menor ou igual para o LogLevel serão impressos. 0: " +"Trace, 1: debug, 2: info, 3: aviso, 4: erro, 5: fatal" + +#: src/libslic3r/PrintConfig.cpp:3324 +msgid "Render with a software renderer" +msgstr "Renderizar com um software renderizador" + +#: src/libslic3r/PrintConfig.cpp:3325 +msgid "" +"Render with a software renderer. The bundled MESA software renderer is " +"loaded instead of the default OpenGL driver." +msgstr "" +"Renderizar com um software renderizador. O renderizador de software MESA " +"empacotado é carregado em vez do driver OpenGL padrão." + +#: src/libslic3r/PrintObject.cpp:110 +msgid "Processing triangulated mesh" +msgstr "Processando malha triangulada" + +#: src/libslic3r/PrintObject.cpp:141 +msgid "Generating perimeters" +msgstr "Gerando perímetros" + +#: src/libslic3r/PrintObject.cpp:251 +msgid "Preparing infill" +msgstr "Preparando o preenchimento" + +#: src/libslic3r/PrintObject.cpp:391 +msgid "Generating support material" +msgstr "Gerando material de suporte" + +#: src/libslic3r/GCode/PreviewData.cpp:160 +msgid "Mixed" +msgstr "Misto" + +#: src/libslic3r/GCode/PreviewData.cpp:380 +msgid "Height (mm)" +msgstr "Altura (mm)" + +#: src/libslic3r/GCode/PreviewData.cpp:382 +msgid "Width (mm)" +msgstr "Espessura (mm)" + +#: src/libslic3r/GCode/PreviewData.cpp:384 +msgid "Speed (mm/s)" +msgstr "Velocidade (mm/s)" + +#: src/libslic3r/GCode/PreviewData.cpp:386 +msgid "Volumetric flow rate (mm3/s)" +msgstr "Fluxo volumétrico (mm3/s)" + +#: src/libslic3r/GCode/PreviewData.cpp:477 +msgid "Default print color" +msgstr "Cor de impressão padrão" + +#: src/libslic3r/GCode/PreviewData.cpp:484 +#, c-format +msgid "up to %.2f mm" +msgstr "até %.2f mm" + +#: src/libslic3r/GCode/PreviewData.cpp:488 +#, c-format +msgid "above %.2f mm" +msgstr "acima de %.2f mm" + +#: src/libslic3r/GCode/PreviewData.cpp:493 +#, c-format +msgid "%.2f - %.2f mm" +msgstr "%.2f - %.2f mm" From 028d8532990425cac43e85afa572a0102968fd62 Mon Sep 17 00:00:00 2001 From: BoaImpressao3D <57779119+BoaImpressao3D@users.noreply.github.com> Date: Wed, 11 Mar 2020 10:59:46 -0300 Subject: [PATCH 002/138] Update on Brazilian Portuguese translation This is an update for the existing Portuguese translation. --- PrusaSlicer.mo | Bin 0 -> 249853 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 PrusaSlicer.mo diff --git a/PrusaSlicer.mo b/PrusaSlicer.mo new file mode 100644 index 0000000000000000000000000000000000000000..94853e146f94affd191f3a0adfef0b0874939876 GIT binary patch literal 249853 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⪼B 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 V!QLYkUCuRC%!u#)mH*zG{a-i{d@le1 literal 0 HcmV?d00001 From 1b3bea87f03ce34d091e60857aab328e433d0357 Mon Sep 17 00:00:00 2001 From: BoaImpressao3D <57779119+BoaImpressao3D@users.noreply.github.com> Date: Wed, 11 Mar 2020 11:02:36 -0300 Subject: [PATCH 003/138] Update on Brazilian Portuguese translation --- PrusaSlicer.mo | Bin 0 -> 249853 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 PrusaSlicer.mo diff --git a/PrusaSlicer.mo b/PrusaSlicer.mo new file mode 100644 index 0000000000000000000000000000000000000000..94853e146f94affd191f3a0adfef0b0874939876 GIT binary patch literal 249853 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⪼B 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 V!QLYkUCuRC%!u#)mH*zG{a-i{d@le1 literal 0 HcmV?d00001 From c5e58256af08e827593272e535dc00d6efdeccd7 Mon Sep 17 00:00:00 2001 From: Arthur <arthur@bi3d.com.br> Date: Wed, 11 Mar 2020 14:16:03 -0300 Subject: [PATCH 004/138] Update on Brazilian Portuguese translation - 2.2rc --- PrusaSlicer.mo | Bin 249853 -> 0 bytes resources/localization/pt_br/PrusaSlicer.mo | Bin 217077 -> 249853 bytes .../localization/pt_br/PrusaSlicer_pt_br.po | 6336 ++++++++++------- 3 files changed, 3905 insertions(+), 2431 deletions(-) delete mode 100644 PrusaSlicer.mo diff --git a/PrusaSlicer.mo b/PrusaSlicer.mo deleted file mode 100644 index 94853e146f94affd191f3a0adfef0b0874939876..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249853 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⪼B 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 V!QLYkUCuRC%!u#)mH*zG{a-i{d@le1 diff --git a/resources/localization/pt_br/PrusaSlicer.mo b/resources/localization/pt_br/PrusaSlicer.mo index a2f3e9789d18d81a6d15de4544a644d9d280221c..94853e146f94affd191f3a0adfef0b0874939876 100644 GIT binary patch delta 73190 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 delta 44436 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 IoffbB1AUPmdjJ3c diff --git a/resources/localization/pt_br/PrusaSlicer_pt_br.po b/resources/localization/pt_br/PrusaSlicer_pt_br.po index e54f17ec3..30b3eb569 100644 --- a/resources/localization/pt_br/PrusaSlicer_pt_br.po +++ b/resources/localization/pt_br/PrusaSlicer_pt_br.po @@ -7,27 +7,27 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-09-09 16:39+0200\n" -"PO-Revision-Date: 2019-11-18 16:39-0300\n" +"POT-Creation-Date: 2020-03-05 13:51+0100\n" +"PO-Revision-Date: 2020-03-11 09:32-0300\n" +"Last-Translator: \n" "Language-Team: \n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 2.2.4\n" -"Last-Translator: \n" -"Language: pt_BR\n" -#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +#: src/slic3r/GUI/AboutDialog.cpp:41 src/slic3r/GUI/AboutDialog.cpp:294 msgid "Portions copyright" msgstr "Direitos autorais das partes" -#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +#: src/slic3r/GUI/AboutDialog.cpp:129 src/slic3r/GUI/AboutDialog.cpp:258 msgid "Copyright" msgstr "Direitos autorais" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:129 +#: src/slic3r/GUI/AboutDialog.cpp:131 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -35,25 +35,25 @@ msgstr "" "Os contratos de licença de todos os seguintes programas (bibliotecas) são " "parte do contrato de licença de aplicativo" -#: src/slic3r/GUI/AboutDialog.cpp:199 +#: src/slic3r/GUI/AboutDialog.cpp:201 #, c-format msgid "About %s" msgstr "Sobre %s" -#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:62 +#: src/slic3r/GUI/AboutDialog.cpp:233 src/slic3r/GUI/MainFrame.cpp:64 msgid "Version" msgstr "Versão" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:260 msgid "is licensed under the" msgstr "está licenciado sobre o(a)" -#: src/slic3r/GUI/AboutDialog.cpp:259 +#: src/slic3r/GUI/AboutDialog.cpp:261 msgid "GNU Affero General Public License, version 3" msgstr "Licensa GNU Affero General Public, versão 3" -#: src/slic3r/GUI/AboutDialog.cpp:260 +#: src/slic3r/GUI/AboutDialog.cpp:262 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -61,7 +61,7 @@ msgstr "" "PrusaSlicer é baseado no Slic3r criado por Alessandro Ranellucci e a " "comunidade RepRap." -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:263 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -71,7 +71,17 @@ msgstr "" "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik e " "outros." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:92 +#: src/slic3r/GUI/AppConfig.cpp:114 +msgid "" +"Error parsing PrusaSlicer config file, it is probably corrupted. Try to " +"manually delete the file to recover from the error. Your user profiles will " +"not be affected." +msgstr "" +"Erro de análise da config do arquivo, ele provavelmente está corrompido. " +"Tente excluir manualmente o arquivo para recuperar do erro. Seus perfis de " +"usuário não serão afetados." + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:110 msgid "" "Copying of the temporary G-code to the output G-code failed. Maybe the SD " "card is write locked?" @@ -79,25 +89,61 @@ msgstr "" "A cópia do G-código provisório G-código falhou na saída. Talvez o cartão SD " "está bloqueado para escrita?" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:93 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:415 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:113 +msgid "" +"Copying of the temporary G-code to the output G-code failed. There might be " +"problem with target device, please try exporting again or using different " +"device. The corrupted output G-code is at %1%.tmp." +msgstr "" +"A cópia do G-code temporário para o G-code de saída falhou. Pode haver " +"problemas com o dispositivo de destino, por favor tente exportar novamente " +"ou usar dispositivo diferente. O G-code de saída corrompido está em %1%.tmp." + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:116 +msgid "" +"Renaming of the G-code after copying to the selected destination folder has " +"failed. Current path is %1%.tmp. Please try exporting again." +msgstr "" +"A renomeação do G-code após a cópia na pasta de destino selecionada falhou. " +"O caminho atual é %1%.tmp. Por favor, tente exportar de novo." + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:119 +msgid "" +"Copying of the temporary G-code has finished but the original code at %1% " +"couldn't be opened during copy check. The output G-code is at %2%.tmp." +msgstr "" +"A cópia do código G temporário foi concluída, mas o código original em %1% " +"não pôde ser aberto durante a verificação de cópia. O código G de saída está " +"em %2%.tmp." + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:122 +msgid "" +"Copying of the temporary G-code has finished but the exported code couldn't " +"be opened during copy check. The output G-code is at %1%.tmp." +msgstr "" +"A cópia do código G temporário foi concluída, mas o código exportado não " +"pôde ser aberto durante a verificação de cópia. O código G de saída está em " +"%1%.tmp." + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:129 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:479 msgid "Running post-processing scripts" msgstr "Aplicando scripts de pós-processamento" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:95 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:131 msgid "G-code file exported to %1%" msgstr "Arquivo G-code exportado para %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:99 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:117 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:135 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:185 msgid "Slicing complete" msgstr "Fatiamento completo" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:113 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:181 msgid "Masked SLA file exported to %1%" msgstr "Arquivo SLA mascarado exportado para %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:155 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:223 #, c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. " @@ -108,37 +154,37 @@ msgstr "" "você tem certeza que você tem RAM suficiente em seu sistema, isso também " "pode ser um bug e nós estaríamos contentes se você relatou." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:417 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:481 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "A cópia do G-código provisório G-código falhou na saída" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:426 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:506 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Agendando upload para ` %1%` . Veja a aba -> Print Host Upload Queue" -#: src/slic3r/GUI/BedShapeDialog.cpp:65 +#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2060 msgid "Shape" msgstr "Forma" -#: src/slic3r/GUI/BedShapeDialog.cpp:72 +#: src/slic3r/GUI/BedShapeDialog.cpp:73 msgid "Rectangular" msgstr "Retangular" -#: src/slic3r/GUI/BedShapeDialog.cpp:76 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:393 src/slic3r/GUI/Plater.cpp:145 -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/BedShapeDialog.cpp:77 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 +#: src/slic3r/GUI/Tab.cpp:2326 msgid "Size" msgstr "Tamanho" -#: src/slic3r/GUI/BedShapeDialog.cpp:77 +#: src/slic3r/GUI/BedShapeDialog.cpp:78 msgid "Size in X and Y of the rectangular plate." msgstr "Tamanho no X e Y na mesa retangular." -#: src/slic3r/GUI/BedShapeDialog.cpp:83 +#: src/slic3r/GUI/BedShapeDialog.cpp:84 msgid "Origin" msgstr "Origem" -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:85 msgid "" "Distance of the 0,0 G-code coordinate from the front left corner of the " "rectangle." @@ -146,50 +192,55 @@ msgstr "" "Distância do ponto 0,0 da coordenada do G-code do canto esquerdo do " "retângulo." -#: src/slic3r/GUI/BedShapeDialog.cpp:88 +#: src/slic3r/GUI/BedShapeDialog.cpp:89 msgid "Circular" msgstr "Circular" -#: src/slic3r/GUI/BedShapeDialog.cpp:91 src/slic3r/GUI/ConfigWizard.cpp:123 -#: src/slic3r/GUI/ConfigWizard.cpp:576 src/slic3r/GUI/ConfigWizard.cpp:590 +#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 #: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:390 -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 src/slic3r/GUI/wxExtensions.cpp:509 -#: src/libslic3r/PrintConfig.cpp:70 src/libslic3r/PrintConfig.cpp:77 -#: src/libslic3r/PrintConfig.cpp:86 src/libslic3r/PrintConfig.cpp:220 -#: src/libslic3r/PrintConfig.cpp:295 src/libslic3r/PrintConfig.cpp:303 -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:363 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:499 -#: src/libslic3r/PrintConfig.cpp:517 src/libslic3r/PrintConfig.cpp:695 -#: src/libslic3r/PrintConfig.cpp:1215 src/libslic3r/PrintConfig.cpp:1276 -#: src/libslic3r/PrintConfig.cpp:1294 src/libslic3r/PrintConfig.cpp:1312 -#: src/libslic3r/PrintConfig.cpp:1364 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1495 src/libslic3r/PrintConfig.cpp:1503 -#: src/libslic3r/PrintConfig.cpp:1544 src/libslic3r/PrintConfig.cpp:1552 -#: src/libslic3r/PrintConfig.cpp:1562 src/libslic3r/PrintConfig.cpp:1570 -#: src/libslic3r/PrintConfig.cpp:1578 src/libslic3r/PrintConfig.cpp:1661 -#: src/libslic3r/PrintConfig.cpp:1878 src/libslic3r/PrintConfig.cpp:1948 -#: src/libslic3r/PrintConfig.cpp:1982 src/libslic3r/PrintConfig.cpp:2176 -#: src/libslic3r/PrintConfig.cpp:2183 src/libslic3r/PrintConfig.cpp:2190 -#: src/libslic3r/PrintConfig.cpp:2220 src/libslic3r/PrintConfig.cpp:2230 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2403 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2519 -#: src/libslic3r/PrintConfig.cpp:2528 src/libslic3r/PrintConfig.cpp:2538 -#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2604 src/libslic3r/PrintConfig.cpp:2624 -#: src/libslic3r/PrintConfig.cpp:2634 src/libslic3r/PrintConfig.cpp:2644 -#: src/libslic3r/PrintConfig.cpp:2662 src/libslic3r/PrintConfig.cpp:2677 -#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2704 -#: src/libslic3r/PrintConfig.cpp:2742 src/libslic3r/PrintConfig.cpp:2752 -#: src/libslic3r/PrintConfig.cpp:2761 src/libslic3r/PrintConfig.cpp:2771 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/WipeTowerDialog.cpp:85 src/libslic3r/PrintConfig.cpp:75 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:91 +#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 +#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 +#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 +#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 +#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 +#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 +#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 +#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 +#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 +#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 +#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 +#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 +#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 +#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 +#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 +#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 +#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 +#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 +#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 +#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 +#: src/libslic3r/PrintConfig.cpp:2705 src/libslic3r/PrintConfig.cpp:2715 +#: src/libslic3r/PrintConfig.cpp:2727 src/libslic3r/PrintConfig.cpp:2747 +#: src/libslic3r/PrintConfig.cpp:2757 src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:2785 src/libslic3r/PrintConfig.cpp:2800 +#: src/libslic3r/PrintConfig.cpp:2814 src/libslic3r/PrintConfig.cpp:2825 +#: src/libslic3r/PrintConfig.cpp:2838 src/libslic3r/PrintConfig.cpp:2883 +#: src/libslic3r/PrintConfig.cpp:2893 src/libslic3r/PrintConfig.cpp:2902 +#: src/libslic3r/PrintConfig.cpp:2912 src/libslic3r/PrintConfig.cpp:2928 +#: src/libslic3r/PrintConfig.cpp:2952 msgid "mm" msgstr "mm" -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/libslic3r/PrintConfig.cpp:692 +#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 msgid "Diameter" msgstr "Diâmetro" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "" "Diameter of the print bed. It is assumed that origin (0,0) is located in the " "center." @@ -197,67 +248,71 @@ msgstr "" "Diâmetro da mesa de impressão. Se assume que a origem (0,0) seja localizado " "no centro." -#: src/slic3r/GUI/BedShapeDialog.cpp:97 src/slic3r/GUI/GUI_Preview.cpp:247 -#: src/libslic3r/GCode/PreviewData.cpp:159 +#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 +#: src/libslic3r/ExtrusionEntity.cpp:322 msgid "Custom" msgstr "Customizado" -#: src/slic3r/GUI/BedShapeDialog.cpp:101 +#: src/slic3r/GUI/BedShapeDialog.cpp:102 msgid "Load shape from STL..." msgstr "Carregar forma do STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:154 +#: src/slic3r/GUI/BedShapeDialog.cpp:155 msgid "Settings" -msgstr "config." +msgstr "Config." -#: src/slic3r/GUI/BedShapeDialog.cpp:171 +#: src/slic3r/GUI/BedShapeDialog.cpp:172 msgid "Texture" msgstr "Textura" -#: src/slic3r/GUI/BedShapeDialog.cpp:181 src/slic3r/GUI/BedShapeDialog.cpp:249 +#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 msgid "Load..." msgstr "Carregar..." -#: src/slic3r/GUI/BedShapeDialog.cpp:189 src/slic3r/GUI/BedShapeDialog.cpp:257 -#: src/slic3r/GUI/Tab.cpp:3286 +#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 +#: src/slic3r/GUI/Tab.cpp:3126 msgid "Remove" msgstr "Remover" -#: src/slic3r/GUI/BedShapeDialog.cpp:239 +#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +msgid "Not found:" +msgstr "Não encontrado:" + +#: src/slic3r/GUI/BedShapeDialog.cpp:251 msgid "Model" msgstr "Modelo" -#: src/slic3r/GUI/BedShapeDialog.cpp:464 +#: src/slic3r/GUI/BedShapeDialog.cpp:487 msgid "Choose an STL file to import bed shape from:" msgstr "Escolha um arquivo STL para importar o formato da mesa:" -#: src/slic3r/GUI/BedShapeDialog.cpp:471 src/slic3r/GUI/BedShapeDialog.cpp:520 -#: src/slic3r/GUI/BedShapeDialog.cpp:543 +#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 +#: src/slic3r/GUI/BedShapeDialog.cpp:566 msgid "Invalid file format." msgstr "Formato de arquivo inválido." -#: src/slic3r/GUI/BedShapeDialog.cpp:482 +#: src/slic3r/GUI/BedShapeDialog.cpp:505 msgid "Error! Invalid model" msgstr "Erro! Modelo inválido" -#: src/slic3r/GUI/BedShapeDialog.cpp:490 +#: src/slic3r/GUI/BedShapeDialog.cpp:513 msgid "The selected file contains no geometry." msgstr "O arquivo selecionado não contém geometria." -#: src/slic3r/GUI/BedShapeDialog.cpp:494 +#: src/slic3r/GUI/BedShapeDialog.cpp:517 msgid "" "The selected file contains several disjoint areas. This is not supported." msgstr "O arquivo selecionado contém áreas não juntas. Isso não é suportado." -#: src/slic3r/GUI/BedShapeDialog.cpp:509 +#: src/slic3r/GUI/BedShapeDialog.cpp:532 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Escolher um arquivo para importar a textura da mesa (PNG/SVG):" -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: src/slic3r/GUI/BedShapeDialog.cpp:555 msgid "Choose an STL file to import bed model from:" msgstr "Escolha um arquivo STL para importar o modelo da mesa:" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:535 +#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 msgid "Bed Shape" msgstr "Formato da mesa" @@ -305,6 +360,154 @@ msgstr "" "O valor foi mudado e não é igual ao valor do sistema ou da última config. " "salva" +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +msgid "" +"Zero layer height is not valid.\n" +"\n" +"The layer height will be reset to 0.01." +msgstr "" +"A altura de camada zero não é válida.\n" +"\n" +"A altura da camada será redefinida para 0.01." + +#: src/slic3r/GUI/ConfigManipulation.cpp:49 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1048 +#: src/libslic3r/PrintConfig.cpp:71 +msgid "Layer height" +msgstr "Altura da camada" + +#: src/slic3r/GUI/ConfigManipulation.cpp:60 +msgid "" +"Zero first layer height is not valid.\n" +"\n" +"The first layer height will be reset to 0.01." +msgstr "" +"A altura zero da primeira camada não é válida.\n" +"\n" +"A altura da primeira camada será redefinida para 0.01." + +#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +msgid "First layer height" +msgstr "Altura da primeira camada" + +#: src/slic3r/GUI/ConfigManipulation.cpp:81 +#, no-c-format +msgid "" +"The Spiral Vase mode requires:\n" +"- one perimeter\n" +"- no top solid layers\n" +"- 0% fill density\n" +"- no support material\n" +"- Ensure vertical shell thickness enabled\n" +"- Detect thin walls disabled" +msgstr "" +"O modo Vaso Espiral requer:\n" +"- um perímetro\n" +"- sem camadas sólidas superiores\n" +"- 0% de densidade de enchimento\n" +"- nenhum material de suporte\n" +"- habilitar opção Garantir a espessura da casca vertical\n" +"- desativar opção Detectar paredes finas" + +#: src/slic3r/GUI/ConfigManipulation.cpp:89 +msgid "Shall I adjust those settings in order to enable Spiral Vase?" +msgstr "Devo ajustar essas configurações para habilitar o Vaso Espiral?" + +#: src/slic3r/GUI/ConfigManipulation.cpp:90 +msgid "Spiral Vase" +msgstr "Vaso espiral" + +#: src/slic3r/GUI/ConfigManipulation.cpp:115 +msgid "" +"The Wipe Tower currently supports the non-soluble supports only\n" +"if they are printed with the current extruder without triggering a tool " +"change.\n" +"(both support_material_extruder and support_material_interface_extruder need " +"to be set to 0)." +msgstr "" +"A torre de limpeza suporta atualmente os suportes não-solúveis\n" +" somente se são imprimidos com o extrusor atual sem provocar uma mudança da " +"ferramenta. \n" +"(ambos support_material_extruder e support_material_interface_extruder " +"precisam ser definidos como 0)." + +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +msgid "Shall I adjust those settings in order to enable the Wipe Tower?" +msgstr "Devo ajustar essas configurações para ativar a Torre limpa?" + +#: src/slic3r/GUI/ConfigManipulation.cpp:120 +#: src/slic3r/GUI/ConfigManipulation.cpp:140 +msgid "Wipe Tower" +msgstr "Torre de limpeza" + +#: src/slic3r/GUI/ConfigManipulation.cpp:136 +msgid "" +"For the Wipe Tower to work with the soluble supports, the support layers\n" +"need to be synchronized with the object layers." +msgstr "" +"Para que a torre de limpeza funcione com os suportes solúveis, as camadas de " +"suporte precisam ser sincronizadas com as camadas de objeto." + +#: src/slic3r/GUI/ConfigManipulation.cpp:139 +msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" +msgstr "Devo sincronizar camadas de suporte para habilitar a Torre Limpa?" + +#: src/slic3r/GUI/ConfigManipulation.cpp:159 +msgid "" +"Supports work better, if the following feature is enabled:\n" +"- Detect bridging perimeters" +msgstr "" +"Os suportes funcionam melhor, se o seguinte recurso estiver ativado:\n" +"- Detectar perímetros de ponte" + +#: src/slic3r/GUI/ConfigManipulation.cpp:162 +msgid "Shall I adjust those settings for supports?" +msgstr "Devo ajustar essas configurações para suportes?" + +#: src/slic3r/GUI/ConfigManipulation.cpp:163 +msgid "Support Generator" +msgstr "Gerador de suporte" + +#: src/slic3r/GUI/ConfigManipulation.cpp:208 +msgid "The %1% infill pattern is not supposed to work at 100%% density." +msgstr "" +"O padrão de preenchimento %1% não deve funcionar com 100%% de densidade." + +#: src/slic3r/GUI/ConfigManipulation.cpp:210 +msgid "Shall I switch to rectilinear fill pattern?" +msgstr "Devo mudar para padrão de preenchimento retilíneo?" + +#: src/slic3r/GUI/ConfigManipulation.cpp:211 +#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 +#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/Plater.cpp:527 +#: src/slic3r/GUI/Tab.cpp:1090 src/slic3r/GUI/Tab.cpp:1091 +#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 +#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 +#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 +#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 +#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 +#: src/libslic3r/PrintConfig.cpp:1745 +msgid "Infill" +msgstr "Preenchimento" + +#: src/slic3r/GUI/ConfigManipulation.cpp:317 +msgid "Head penetration should not be greater than the head width." +msgstr "A penetração da cabeça não deve ser maior do que a largura da cabeça." + +#: src/slic3r/GUI/ConfigManipulation.cpp:319 +msgid "Invalid Head penetration" +msgstr "Penetração inválida da cabeça" + +#: src/slic3r/GUI/ConfigManipulation.cpp:330 +msgid "Pinhead diameter should be smaller than the pillar diameter." +msgstr "" +"O diâmetro da cabeça de pino deve ser menor do que o diâmetro do pilar." + +#: src/slic3r/GUI/ConfigManipulation.cpp:332 +msgid "Invalid pinhead diameter" +msgstr "Diâmetro inválido da cabeça de pino" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 msgid "Upgrade" msgstr "Atualização" @@ -325,104 +528,105 @@ msgstr "Usuário" msgid "Unknown" msgstr "Desconhecido" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:39 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:43 msgid "Active" msgstr "Ativar" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 -msgid "slic3r version" -msgstr "versão do slic3r" +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 +msgid "PrusaSlicer version" +msgstr "Versão do PrusaSlicer" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1311 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1533 msgid "print" msgstr "impressão" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 msgid "filaments" msgstr "filamentos" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:48 src/slic3r/GUI/Preset.cpp:1315 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1537 msgid "printer" msgstr "impressora" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 src/slic3r/GUI/Tab.cpp:961 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:970 msgid "vendor" msgstr "fornecedor" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 msgid "version" msgstr "versão" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 -msgid "min slic3r version" -msgstr "versão mínima do slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:55 -msgid "max slic3r version" -msgstr "versão máxima do slic3r" - #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58 +msgid "min PrusaSlicer version" +msgstr "versão mínima do PrusaSlicer" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:60 +msgid "max PrusaSlicer version" +msgstr "versão máxima do PrusaSlicer" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:63 msgid "model" msgstr "modelo" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:63 msgid "variants" msgstr "variantes" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:70 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 #, c-format msgid "Incompatible with this %s" msgstr "Incompatível com isso %s" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:73 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Ativar" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:99 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:104 msgid "Configuration Snapshots" -msgstr "config. das versões" +msgstr "Config. das versões" -#: src/slic3r/GUI/ConfigWizard.cpp:123 +#: src/slic3r/GUI/ConfigWizard.cpp:218 msgid "nozzle" msgstr "bico de impressão" -#: src/slic3r/GUI/ConfigWizard.cpp:127 +#: src/slic3r/GUI/ConfigWizard.cpp:222 msgid "Alternate nozzles:" msgstr "Alternar bicos:" -#: src/slic3r/GUI/ConfigWizard.cpp:193 +#: src/slic3r/GUI/ConfigWizard.cpp:289 msgid "All standard" msgstr "Todos padrão" -#: src/slic3r/GUI/ConfigWizard.cpp:194 src/slic3r/GUI/Tab.cpp:3336 +#: src/slic3r/GUI/ConfigWizard.cpp:289 +msgid "Standard" +msgstr "Todos padrão" + +#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 +#: src/slic3r/GUI/Tab.cpp:3176 msgid "All" msgstr "Todos" -#: src/slic3r/GUI/ConfigWizard.cpp:195 src/slic3r/GUI/Plater.cpp:469 -#: src/slic3r/GUI/Plater.cpp:607 src/libslic3r/GCode/PreviewData.cpp:146 +#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 +#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 +#: src/libslic3r/ExtrusionEntity.cpp:309 msgid "None" msgstr "Nenhum" -#: src/slic3r/GUI/ConfigWizard.cpp:301 +#: src/slic3r/GUI/ConfigWizard.cpp:427 #, c-format msgid "Welcome to the %s Configuration Assistant" msgstr "Bem-vindo ao %s Assistente de config." -#: src/slic3r/GUI/ConfigWizard.cpp:303 +#: src/slic3r/GUI/ConfigWizard.cpp:429 #, c-format msgid "Welcome to the %s Configuration Wizard" msgstr "Bem-vindo ao %s Assistente de config." -#: src/slic3r/GUI/ConfigWizard.cpp:305 +#: src/slic3r/GUI/ConfigWizard.cpp:431 msgid "Welcome" msgstr "Bem-vindo(a)" -#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/GUI_App.cpp:793 -#, c-format -msgid "Run %s" -msgstr "Executar %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:311 +#: src/slic3r/GUI/ConfigWizard.cpp:433 #, c-format msgid "" "Hello, welcome to %s! This %s helps you with the initial configuration; just " @@ -431,47 +635,59 @@ msgstr "" "Olá, bem-vindo ao %s! Isso %s te ajuda com a config. inicial; com apenas " "algumas config. e você estará pronto para imprimir." -#: src/slic3r/GUI/ConfigWizard.cpp:316 +#: src/slic3r/GUI/ConfigWizard.cpp:438 msgid "" "Remove user profiles - install from scratch (a snapshot will be taken " "beforehand)" msgstr "" "Remover perfis de usuário - instalar do zero (uma snapshot será salva antes)" -#: src/slic3r/GUI/ConfigWizard.cpp:347 +#: src/slic3r/GUI/ConfigWizard.cpp:481 #, c-format msgid "%s Family" msgstr "%s Família" -#: src/slic3r/GUI/ConfigWizard.cpp:384 -msgid "Custom Printer Setup" -msgstr "config. da impressora customizada" +#: src/slic3r/GUI/ConfigWizard.cpp:565 +msgid "Vendor:" +msgstr "Fornecedor:" -#: src/slic3r/GUI/ConfigWizard.cpp:384 +#: src/slic3r/GUI/ConfigWizard.cpp:566 +msgid "Profile:" +msgstr "Perfil:" + +#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +msgid "(All)" +msgstr "(Todos)" + +#: src/slic3r/GUI/ConfigWizard.cpp:732 +msgid "Custom Printer Setup" +msgstr "Config. da impressora customizada" + +#: src/slic3r/GUI/ConfigWizard.cpp:732 msgid "Custom Printer" msgstr "Impressora customizada" -#: src/slic3r/GUI/ConfigWizard.cpp:386 +#: src/slic3r/GUI/ConfigWizard.cpp:734 msgid "Define a custom printer profile" msgstr "Definir uma config. para a impressora customizada" -#: src/slic3r/GUI/ConfigWizard.cpp:388 +#: src/slic3r/GUI/ConfigWizard.cpp:736 msgid "Custom profile name:" msgstr "Nome customizado da config.:" -#: src/slic3r/GUI/ConfigWizard.cpp:412 +#: src/slic3r/GUI/ConfigWizard.cpp:761 msgid "Automatic updates" msgstr "Atualizações automáticas" -#: src/slic3r/GUI/ConfigWizard.cpp:412 +#: src/slic3r/GUI/ConfigWizard.cpp:761 msgid "Updates" msgstr "Atualizações" -#: src/slic3r/GUI/ConfigWizard.cpp:420 src/slic3r/GUI/Preferences.cpp:69 +#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 msgid "Check for application updates" msgstr "Verificar atualizações nas aplicações" -#: src/slic3r/GUI/ConfigWizard.cpp:424 +#: src/slic3r/GUI/ConfigWizard.cpp:773 #, c-format msgid "" "If enabled, %s checks for new application versions online. When a new " @@ -484,11 +700,11 @@ msgstr "" "inicialização do aplicativo (nunca durante o uso do programa). Este é apenas " "um mecanismos de notificação, nenhuma instalação automática é feita." -#: src/slic3r/GUI/ConfigWizard.cpp:430 src/slic3r/GUI/Preferences.cpp:77 +#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 msgid "Update built-in Presets automatically" msgstr "Atualizar predefinições incorporadas automaticamente" -#: src/slic3r/GUI/ConfigWizard.cpp:434 +#: src/slic3r/GUI/ConfigWizard.cpp:783 #, c-format msgid "" "If enabled, %s downloads updates of built-in system presets in the " @@ -501,7 +717,7 @@ msgstr "" "separado. Quando uma nova versão predefinida se torna disponível, ela é " "oferecida na inicialização do aplicativo." -#: src/slic3r/GUI/ConfigWizard.cpp:437 +#: src/slic3r/GUI/ConfigWizard.cpp:786 msgid "" "Updates are never applied without user's consent and never overwrite user's " "customized settings." @@ -509,7 +725,7 @@ msgstr "" "Atualizações nunca são aplicadas sem a permissão do usuário e nunca sobre " "escrevem as config. do usuário." -#: src/slic3r/GUI/ConfigWizard.cpp:442 +#: src/slic3r/GUI/ConfigWizard.cpp:791 msgid "" "Additionally a backup snapshot of the whole configuration is created before " "an update is applied." @@ -517,56 +733,111 @@ msgstr "" "Além disso, uma captura de backup de toda a config. é criado antes que uma " "atualização seja aplicada." -#: src/slic3r/GUI/ConfigWizard.cpp:449 +#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1665 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3957 src/slic3r/GUI/Plater.cpp:3227 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3965 +msgid "Reload from disk" +msgstr "Recarregar a partir do disco" + +#: src/slic3r/GUI/ConfigWizard.cpp:801 +msgid "" +"Export full pathnames of models and parts sources into 3mf and amf files" +msgstr "" +"Exportar nomes completos de modelos e fontes de peças para arquivos 3mf e amf" + +#: src/slic3r/GUI/ConfigWizard.cpp:805 +msgid "" +"If enabled, allows the Reload from disk command to automatically find and " +"load the files when invoked.\n" +"If not enabled, the Reload from disk command will ask to select each file " +"using an open file dialog." +msgstr "" +"Se ativado, permite que o comando Recarregar a partir do disco encontre e " +"carregue automaticamente os arquivos quando invocado.\n" +"Se não estiver habilitado, o comando Recarregar a partir do disco pedirá " +"para selecionar cada arquivo usando uma caixa de diálogo de arquivo aberto." + +#: src/slic3r/GUI/ConfigWizard.cpp:813 +msgid "View mode" +msgstr "Modo de visualização" + +#: src/slic3r/GUI/ConfigWizard.cpp:815 +msgid "" +"PrusaSlicer's user interfaces comes in three variants:\n" +"Simple, Advanced, and Expert.\n" +"The Simple mode shows only the most frequently used settings relevant for " +"regular 3D printing. The other two offer progressively more sophisticated " +"fine-tuning, they are suitable for advanced and expert users, respectively." +msgstr "" +"As interfaces de usuário do PrusaSlicer vêm em três variantes:\n" +"Simples, Avançado e Especialista.\n" +"O modo Simples mostra apenas as configurações mais utilizadas para impressão " +"3D regular. Os outros dois oferecem ajustes finos progressivamente mais " +"sofisticados, são adequados para usuários avançados e experientes, " +"respectivamente." + +#: src/slic3r/GUI/ConfigWizard.cpp:820 +msgid "Simple mode" +msgstr "Modo simples" + +#: src/slic3r/GUI/ConfigWizard.cpp:821 +msgid "Advanced mode" +msgstr "Modo avançado" + +#: src/slic3r/GUI/ConfigWizard.cpp:822 +msgid "Expert mode" +msgstr "Modo especialista" + +#: src/slic3r/GUI/ConfigWizard.cpp:856 msgid "Other Vendors" msgstr "Outros fornecedores" -#: src/slic3r/GUI/ConfigWizard.cpp:451 +#: src/slic3r/GUI/ConfigWizard.cpp:860 #, c-format -msgid "Pick another vendor supported by %s:" -msgstr "Escolha outro fornecedor suportado por %s:" +msgid "Pick another vendor supported by %s" +msgstr "Escolha outro fornecedor suportado por %s" -#: src/slic3r/GUI/ConfigWizard.cpp:497 +#: src/slic3r/GUI/ConfigWizard.cpp:891 msgid "Firmware Type" msgstr "Tipo de Firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:497 src/slic3r/GUI/Tab.cpp:2149 +#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1949 msgid "Firmware" msgstr "Firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:501 +#: src/slic3r/GUI/ConfigWizard.cpp:895 msgid "Choose the type of firmware used by your printer." msgstr "Escolha o tipo de firmware utilizado na sua impressora." -#: src/slic3r/GUI/ConfigWizard.cpp:535 +#: src/slic3r/GUI/ConfigWizard.cpp:929 msgid "Bed Shape and Size" msgstr "Forma e tamanho da mesa" -#: src/slic3r/GUI/ConfigWizard.cpp:538 +#: src/slic3r/GUI/ConfigWizard.cpp:932 msgid "Set the shape of your printer's bed." msgstr "Insira o formato da mesa de impressão." -#: src/slic3r/GUI/ConfigWizard.cpp:558 +#: src/slic3r/GUI/ConfigWizard.cpp:952 msgid "Filament and Nozzle Diameters" msgstr "Diâmetro do bico e do filamento" -#: src/slic3r/GUI/ConfigWizard.cpp:558 +#: src/slic3r/GUI/ConfigWizard.cpp:952 msgid "Print Diameters" msgstr "Diâmetros de impressão" -#: src/slic3r/GUI/ConfigWizard.cpp:572 +#: src/slic3r/GUI/ConfigWizard.cpp:966 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Insira o diâmetro do bico de impressão." -#: src/slic3r/GUI/ConfigWizard.cpp:575 +#: src/slic3r/GUI/ConfigWizard.cpp:969 msgid "Nozzle Diameter:" msgstr "Diâmetro do bico:" -#: src/slic3r/GUI/ConfigWizard.cpp:585 +#: src/slic3r/GUI/ConfigWizard.cpp:979 msgid "Enter the diameter of your filament." msgstr "Coloque o diâmetro do seu filamento." -#: src/slic3r/GUI/ConfigWizard.cpp:586 +#: src/slic3r/GUI/ConfigWizard.cpp:980 msgid "" "Good precision is required, so use a caliper and do multiple measurements " "along the filament, then compute the average." @@ -574,35 +845,35 @@ msgstr "" "É necessário uma boa precisão, utilize um paquímetro e realize várias " "medições ao longo do filamento, faça uma média." -#: src/slic3r/GUI/ConfigWizard.cpp:589 +#: src/slic3r/GUI/ConfigWizard.cpp:983 msgid "Filament Diameter:" msgstr "Diâmetro do filamento:" -#: src/slic3r/GUI/ConfigWizard.cpp:623 +#: src/slic3r/GUI/ConfigWizard.cpp:1017 msgid "Extruder and Bed Temperatures" msgstr "Temperaturas da mesa e da extrusora" -#: src/slic3r/GUI/ConfigWizard.cpp:623 +#: src/slic3r/GUI/ConfigWizard.cpp:1017 msgid "Temperatures" msgstr "Temperaturas" -#: src/slic3r/GUI/ConfigWizard.cpp:639 +#: src/slic3r/GUI/ConfigWizard.cpp:1033 msgid "Enter the temperature needed for extruding your filament." msgstr "Coloque a temperatura necessária para extrusar seu filamento." -#: src/slic3r/GUI/ConfigWizard.cpp:640 +#: src/slic3r/GUI/ConfigWizard.cpp:1034 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "A regra de ouro é 160 à 230°C para PLA, e 215 à 250°C para ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:643 +#: src/slic3r/GUI/ConfigWizard.cpp:1037 msgid "Extrusion Temperature:" msgstr "Temperatura de extrusão:" -#: src/slic3r/GUI/ConfigWizard.cpp:644 src/slic3r/GUI/ConfigWizard.cpp:658 +#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 msgid "°C" msgstr "°C" -#: src/slic3r/GUI/ConfigWizard.cpp:653 +#: src/slic3r/GUI/ConfigWizard.cpp:1047 msgid "" "Enter the bed temperature needed for getting your filament to stick to your " "heated bed." @@ -610,7 +881,7 @@ msgstr "" "Coloque a temperatura da mesa necessária para fazer com que seu filamento " "grude na mesa." -#: src/slic3r/GUI/ConfigWizard.cpp:654 +#: src/slic3r/GUI/ConfigWizard.cpp:1048 msgid "" "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " "no heated bed." @@ -618,82 +889,461 @@ msgstr "" "A regra de ouro é 60°C para PLA, e 110°C para ABS. Deixe em zero se não há " "mesa aquecida." -#: src/slic3r/GUI/ConfigWizard.cpp:657 +#: src/slic3r/GUI/ConfigWizard.cpp:1051 msgid "Bed Temperature:" msgstr "Temperatura da mesa:" -#: src/slic3r/GUI/ConfigWizard.cpp:1138 +#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +msgid "Filaments" +msgstr "Filamentos" + +#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +msgid "SLA Materials" +msgstr "Materiais" + +#: src/slic3r/GUI/ConfigWizard.cpp:1525 +msgid "FFF Technology Printers" +msgstr "Impressoras de tecnologia Prusa FFF" + +#: src/slic3r/GUI/ConfigWizard.cpp:1530 +msgid "SLA Technology Printers" +msgstr "Impressoras de tecnologia SLA" + +#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 +#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:246 +msgid "Notice" +msgstr "Aviso" + +#: src/slic3r/GUI/ConfigWizard.cpp:1760 +msgid "You have to select at least one filament for selected printers" +msgstr "" +"Você tem que selecionar pelo menos um filamento para impressoras selecionadas" + +#: src/slic3r/GUI/ConfigWizard.cpp:1761 +msgid "Do you want to automatic select default filaments?" +msgstr "Deseja selecionar filamentos padrão automáticos?" + +#: src/slic3r/GUI/ConfigWizard.cpp:1771 +msgid "You have to select at least one material for selected printers" +msgstr "" +"Você tem que selecionar pelo menos um material para impressoras selecionadas" + +#: src/slic3r/GUI/ConfigWizard.cpp:1772 +msgid "Do you want to automatic select default materials?" +msgstr "Deseja selecionar automaticamente materiais padrão?" + +#: src/slic3r/GUI/ConfigWizard.cpp:1976 msgid "Select all standard printers" msgstr "Selecione todas as impressoras padrão" -#: src/slic3r/GUI/ConfigWizard.cpp:1141 +#: src/slic3r/GUI/ConfigWizard.cpp:1979 msgid "< &Back" msgstr "< &Voltar" -#: src/slic3r/GUI/ConfigWizard.cpp:1142 +#: src/slic3r/GUI/ConfigWizard.cpp:1980 msgid "&Next >" msgstr "&Próximo >" -#: src/slic3r/GUI/ConfigWizard.cpp:1143 +#: src/slic3r/GUI/ConfigWizard.cpp:1981 msgid "&Finish" msgstr "&Final" -#: src/slic3r/GUI/ConfigWizard.cpp:1144 src/slic3r/GUI/FirmwareDialog.cpp:151 -#: src/slic3r/GUI/ProgressStatusBar.cpp:27 +#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ProgressStatusBar.cpp:26 msgid "Cancel" msgstr "Cancelar" -#: src/slic3r/GUI/ConfigWizard.cpp:1158 +#: src/slic3r/GUI/ConfigWizard.cpp:1995 msgid "Prusa FFF Technology Printers" msgstr "Impressoras de tecnologia Prusa FFF" -#: src/slic3r/GUI/ConfigWizard.cpp:1161 +#: src/slic3r/GUI/ConfigWizard.cpp:1998 msgid "Prusa MSLA Technology Printers" msgstr "Impressoras de tecnologia Prusa MSLA" -#: src/slic3r/GUI/ConfigWizard.cpp:1230 +#: src/slic3r/GUI/ConfigWizard.cpp:2013 +msgid "Filament Profiles Selection" +msgstr "Seleção de Perfis de Filamento" + +#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3554 +msgid "Type:" +msgstr "Tipo:" + +#: src/slic3r/GUI/ConfigWizard.cpp:2015 +msgid "SLA Material Profiles Selection" +msgstr "Perfil de material SLA padrão" + +#: src/slic3r/GUI/ConfigWizard.cpp:2015 +msgid "Layer height:" +msgstr "Altura da camada:" + +#: src/slic3r/GUI/ConfigWizard.cpp:2109 msgid "Configuration Assistant" msgstr "Assistente de config." -#: src/slic3r/GUI/ConfigWizard.cpp:1231 +#: src/slic3r/GUI/ConfigWizard.cpp:2110 msgid "Configuration &Assistant" msgstr "Assistente &de config." -#: src/slic3r/GUI/ConfigWizard.cpp:1233 +#: src/slic3r/GUI/ConfigWizard.cpp:2112 msgid "Configuration Wizard" msgstr "Assistente de config." -#: src/slic3r/GUI/ConfigWizard.cpp:1234 +#: src/slic3r/GUI/ConfigWizard.cpp:2113 msgid "Configuration &Wizard" msgstr "Assistente &de config." -#: src/slic3r/GUI/Field.cpp:125 +#: src/slic3r/GUI/DoubleSlider.cpp:79 +msgid "Place bearings in slots and resume printing" +msgstr "Coloque rolamentos em ranhuras e retome a impressão" + +#: src/slic3r/GUI/DoubleSlider.cpp:950 +msgid "One layer mode" +msgstr "Modo de uma camada" + +#: src/slic3r/GUI/DoubleSlider.cpp:952 +msgid "Discard all custom changes" +msgstr "Descarte todas as alterações personalizadas" + +#: src/slic3r/GUI/DoubleSlider.cpp:955 +#, c-format +msgid "Jump to height %s or Set extruder sequence for the entire print" +msgstr "" +"Pule para altura %s ou Definir seqüência de extrusora para toda a impressão" + +#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 +#: src/slic3r/GUI/DoubleSlider.cpp:1651 +msgid "Jump to height" +msgstr "Pule para altura" + +#: src/slic3r/GUI/DoubleSlider.cpp:960 +msgid "Edit current color - Right click the colored slider segment" +msgstr "" +"Editar cor atual - Clique com o botão direito do mouse no segmento de " +"controle deslizante colorido" + +#: src/slic3r/GUI/DoubleSlider.cpp:970 +msgid "Print mode" +msgstr "Modo da impressora" + +#: src/slic3r/GUI/DoubleSlider.cpp:984 +msgid "Add extruder change - Left click" +msgstr "Adicionar alteração extrusora - Clique à esquerda" + +#: src/slic3r/GUI/DoubleSlider.cpp:986 +msgid "" +"Add color change - Left click for predefined color or Shift + Left click for " +"custom color selection" +msgstr "" +"Adicionar mudança de cor - Clique à esquerda para cor predefinida ou Shift + " +"Clique à esquerda para seleção personalizada de cores" + +#: src/slic3r/GUI/DoubleSlider.cpp:988 +msgid "Add color change - Left click" +msgstr "Adicionar mudança de cor - Clique à esquerda" + +#: src/slic3r/GUI/DoubleSlider.cpp:989 +msgid "or press \"+\" key" +msgstr "ou pressione a tecla \"+\"" + +#: src/slic3r/GUI/DoubleSlider.cpp:991 +msgid "Add another code - Ctrl + Left click" +msgstr "Adicionar outro código - Ctrl + Clique à esquerda" + +#: src/slic3r/GUI/DoubleSlider.cpp:992 +msgid "Add another code - Right click" +msgstr "Adicionar outro código - Clique com o botão direito" + +#: src/slic3r/GUI/DoubleSlider.cpp:998 +msgid "" +"The sequential print is on.\n" +"It's impossible to apply any custom G-code for objects printing " +"sequentually.\n" +"This code won't be processed during G-code generation." +msgstr "" +"A impressão sequencial está.\n" +"É impossível aplicar qualquer G-code personalizado para impressão sequencial " +"de objetos.\n" +"Este código não será processado durante a geração de G-code." + +#: src/slic3r/GUI/DoubleSlider.cpp:1005 +msgid "Color change (\"%1%\")" +msgstr "Mudança de cor (\"%1%\")" + +#: src/slic3r/GUI/DoubleSlider.cpp:1006 +msgid "Color change (\"%1%\") for Extruder %2%" +msgstr "Mudança de cor (\"%1%\") para Extrusor %2%" + +#: src/slic3r/GUI/DoubleSlider.cpp:1009 +msgid "Pause print (\"%1%\")" +msgstr "Pausar impressão (\"%1%\")" + +#: src/slic3r/GUI/DoubleSlider.cpp:1011 +msgid "Extruder (tool) is changed to Extruder \"%1%\"" +msgstr "Extrusora (ferramenta) é alterada para Extrusora \"%1%\"" + +#: src/slic3r/GUI/DoubleSlider.cpp:1019 +msgid "Note" +msgstr "Nota" + +#: src/slic3r/GUI/DoubleSlider.cpp:1021 +msgid "" +"G-code associated to this tick mark is in a conflict with print mode.\n" +"Editing it will cause changes of Slider data." +msgstr "" +"O código G associado a esta marca de tique-taque está em conflito com o modo " +"de impressão.\n" +"Editá-lo causará alterações nos dados do Slider." + +#: src/slic3r/GUI/DoubleSlider.cpp:1024 +msgid "" +"There is a color change for extruder that won't be used till the end of " +"print job.\n" +"This code won't be processed during G-code generation." +msgstr "" +"Há uma mudança de cor para extrusor que não será usada até o final do " +"trabalho de impressão.\n" +"Este código não será processado durante a geração de código G." + +#: src/slic3r/GUI/DoubleSlider.cpp:1027 +msgid "" +"There is an extruder change set to the same extruder.\n" +"This code won't be processed during G-code generation." +msgstr "" +"Há uma mudança extrusora definida para o mesmo extrusor.\n" +"Este código não será processado durante a geração de código G." + +#: src/slic3r/GUI/DoubleSlider.cpp:1030 +msgid "" +"There is a color change for extruder that has not been used before.\n" +"Check your settings to avoid redundant color changes." +msgstr "" +"Há uma mudança de cor para extrusor que não foi usada antes.\n" +"Verifique suas configurações para evitar alterações de cor redundantes." + +#: src/slic3r/GUI/DoubleSlider.cpp:1035 +msgid "Delete tick mark - Left click or press \"-\" key" +msgstr "" +"Excluir marca de marca de marca - Clique à esquerda ou pressione a tecla \"-" +"\"" + +#: src/slic3r/GUI/DoubleSlider.cpp:1037 +msgid "Edit tick mark - Ctrl + Left click" +msgstr "Editar marca de tique - Ctrl + Clique à esquerda" + +#: src/slic3r/GUI/DoubleSlider.cpp:1038 +msgid "Edit tick mark - Right click" +msgstr "Editar marca de tique - Clique com o botão direito do mouse" + +#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 +#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1705 +#: src/slic3r/GUI/Tab.cpp:2322 src/libslic3r/GCode/PreviewData.cpp:445 +#, c-format +msgid "Extruder %d" +msgstr "Extrusora %d" + +#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1706 +msgid "active" +msgstr "ativar" + +#: src/slic3r/GUI/DoubleSlider.cpp:1144 +msgid "Switch code to Change extruder" +msgstr "Mudar código para extrusor de alterar" + +#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1672 +msgid "Change extruder" +msgstr "Mudar extrusora" + +#: src/slic3r/GUI/DoubleSlider.cpp:1145 +msgid "Change extruder (N/A)" +msgstr "Extrusora de alterações (N/A)" + +#: src/slic3r/GUI/DoubleSlider.cpp:1147 +msgid "Use another extruder" +msgstr "Use outra extrusora" + +#: src/slic3r/GUI/DoubleSlider.cpp:1171 +msgid "used" +msgstr "usado" + +#: src/slic3r/GUI/DoubleSlider.cpp:1179 +msgid "Switch code to Color change (%1%) for:" +msgstr "Mudar o código para mudança de cor (%1%) Para:" + +#: src/slic3r/GUI/DoubleSlider.cpp:1180 +msgid "Add color change (%1%) for:" +msgstr "Add/Excluir mudança de cor (%1%) para:" + +#: src/slic3r/GUI/DoubleSlider.cpp:1477 +msgid "Add color change" +msgstr "Adicionar mudança de cor" + +#: src/slic3r/GUI/DoubleSlider.cpp:1487 +msgid "Add pause print" +msgstr "Adicionar impressão de pausa" + +#: src/slic3r/GUI/DoubleSlider.cpp:1490 +msgid "Add custom G-code" +msgstr "Adicionar código G personalizado" + +#: src/slic3r/GUI/DoubleSlider.cpp:1508 +msgid "Edit color" +msgstr "Editar cor" + +#: src/slic3r/GUI/DoubleSlider.cpp:1509 +msgid "Edit pause print message" +msgstr "Editar mensagem de impressão de pausa" + +#: src/slic3r/GUI/DoubleSlider.cpp:1510 +msgid "Edit custom G-code" +msgstr "Editar código G personalizado" + +#: src/slic3r/GUI/DoubleSlider.cpp:1516 +msgid "Delete color change" +msgstr "Excluir alteração de cor" + +#: src/slic3r/GUI/DoubleSlider.cpp:1517 +msgid "Delete tool change" +msgstr "Excluir alteração de ferramenta" + +#: src/slic3r/GUI/DoubleSlider.cpp:1518 +msgid "Delete pause print" +msgstr "Excluir impressão de pausa" + +#: src/slic3r/GUI/DoubleSlider.cpp:1519 +msgid "Delete custom G-code" +msgstr "Excluir código G personalizado" + +#: src/slic3r/GUI/DoubleSlider.cpp:1532 +msgid "Set extruder sequence for the entire print" +msgstr "Definir sequência de extrusora para toda a impressão" + +#: src/slic3r/GUI/DoubleSlider.cpp:1618 +msgid "Enter custom G-code used on current layer" +msgstr "Digite o código G personalizado usado na camada atual" + +#: src/slic3r/GUI/DoubleSlider.cpp:1619 +msgid "Custom G-code on current layer (%1% mm)." +msgstr "Código G personalizado na camada atual (%1% mm)." + +#: src/slic3r/GUI/DoubleSlider.cpp:1634 +msgid "Enter short message shown on Printer display when a print is paused" +msgstr "" +"Digite mensagem curta mostrada no visor da impressora quando uma impressão é " +"pausada" + +#: src/slic3r/GUI/DoubleSlider.cpp:1635 +msgid "Message for pause print on current layer (%1% mm)." +msgstr "Mensagem para impressão de pausa na camada atual (%1% mm)." + +#: src/slic3r/GUI/DoubleSlider.cpp:1650 +msgid "Enter the height you want to jump to" +msgstr "Digite a altura que você deseja saltar para" + +#: src/slic3r/GUI/DoubleSlider.cpp:1899 +msgid "The last color change data was saved for a single extruder printing." +msgstr "" +"Parâmetros de mudança de ferramenta com impressoras de multi material com " +"apenas uma extrusora." + +#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +msgid "The last color change data was saved for a multi extruder printing." +msgstr "" +"Os últimos dados de mudança de cor foram salvos para uma impressão de vários " +"extrusores." + +#: src/slic3r/GUI/DoubleSlider.cpp:1902 +msgid "Your current changes will delete all saved color changes." +msgstr "Suas alterações atuais excluirão todas as alterações de cor salvas." + +#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +msgid "Are you sure you want to continue?" +msgstr "Você tem certeza que deseja continuar?" + +#: src/slic3r/GUI/DoubleSlider.cpp:1917 +msgid "" +"Select YES if you want to delete all saved tool changes, \n" +"NO if you want all tool changes switch to color changes, \n" +"or CANCEL to leave it unchanged." +msgstr "" +"Selecione SIM se quiser excluir todas as alterações de ferramenta salvas, \n" +"NÃO, se você quiser que todas as alterações de ferramenta mudem para " +"mudanças de cor, \n" +"ou CANCELAR para deixá-lo inalterado." + +#: src/slic3r/GUI/DoubleSlider.cpp:1920 +msgid "Do you want to delete all saved tool changes?" +msgstr "Deseja excluir todas as alterações de ferramenta salvas?" + +#: src/slic3r/GUI/DoubleSlider.cpp:1922 +msgid "" +"The last color change data was saved for a multi extruder printing with tool " +"changes for whole print." +msgstr "" +"Os últimos dados de mudança de cor foram salvos para uma impressão multi-" +"extrusora com alterações de ferramenta para impressão inteira." + +#: src/slic3r/GUI/DoubleSlider.cpp:1923 +msgid "Your current changes will delete all saved extruder (tool) changes." +msgstr "" +"Suas alterações atuais excluirão todas as alterações do extrusor " +"(ferramenta) salvos." + +#: src/slic3r/GUI/ExtruderSequenceDialog.cpp:23 +msgid "Set extruder sequence" +msgstr "Definir seqüência de extrusor" + +#: src/slic3r/GUI/ExtruderSequenceDialog.cpp:39 +msgid "Set extruder change for every" +msgstr "Definir a mudança de extrusor para cada" + +#: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 +#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 +#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 +#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 +#: src/libslic3r/PrintConfig.cpp:1976 +msgid "layers" +msgstr "camadas" + +#: src/slic3r/GUI/ExtruderSequenceDialog.cpp:136 +msgid "Set extruder(tool) sequence" +msgstr "Definir sequência da extrusora (ferramenta)" + +#: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182 +msgid "Remove extruder from sequence" +msgstr "Remover extrusor da seqüência" + +#: src/slic3r/GUI/ExtruderSequenceDialog.cpp:192 +msgid "Add extruder to sequence" +msgstr "Adicionar extrusor à seqüência" + +#: src/slic3r/GUI/Field.cpp:136 msgid "default value" msgstr "valor padrão" -#: src/slic3r/GUI/Field.cpp:128 +#: src/slic3r/GUI/Field.cpp:139 msgid "parameter name" msgstr "nome do parâmetro" -#: src/slic3r/GUI/Field.cpp:139 src/slic3r/GUI/OptionsGroup.cpp:569 +#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:581 msgid "N/A" msgstr "N/D" -#: src/slic3r/GUI/Field.cpp:158 +#: src/slic3r/GUI/Field.cpp:175 #, c-format msgid "%s doesn't support percentage" msgstr "%s não suporta porcentagem" -#: src/slic3r/GUI/Field.cpp:174 src/slic3r/GUI/Field.cpp:197 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:337 +#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 msgid "Invalid numeric input." msgstr "Entrada numérica não válida." -#: src/slic3r/GUI/Field.cpp:179 +#: src/slic3r/GUI/Field.cpp:204 msgid "Input value is out of range" msgstr "Valor de entrada está fora do limite" -#: src/slic3r/GUI/Field.cpp:206 +#: src/slic3r/GUI/Field.cpp:240 #, c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -704,7 +1354,7 @@ msgstr "" "Selecione SIM se quiser trocar esse valor para %s%%, \n" "ou NÃO se você tem certeza que %s %s é o valor correto." -#: src/slic3r/GUI/Field.cpp:209 +#: src/slic3r/GUI/Field.cpp:243 msgid "Parameter validation" msgstr "Validação do parâmetro" @@ -791,8 +1441,8 @@ msgstr "Atualizador de Firmware" msgid "Firmware image:" msgstr "Imagem do Firmware:" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1870 -#: src/slic3r/GUI/Tab.cpp:1926 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1657 +#: src/slic3r/GUI/Tab.cpp:1719 msgid "Browse" msgstr "Procurar" @@ -825,11 +1475,12 @@ msgid "Advanced: Output log" msgstr "Avançado: log de Saída" #: src/slic3r/GUI/FirmwareDialog.cpp:852 +#: src/slic3r/GUI/Mouse3DController.cpp:336 #: src/slic3r/GUI/PrintHostDialogs.cpp:161 msgid "Close" msgstr "Fechar" -#: src/slic3r/GUI/FirmwareDialog.cpp:903 +#: src/slic3r/GUI/FirmwareDialog.cpp:902 msgid "" "Are you sure you want to cancel firmware flashing?\n" "This could leave your printer in an unusable state!" @@ -837,35 +1488,107 @@ msgstr "" "Você tem certeza que gostaria de cancelar a atualização de Firmware? \n" "Isso poderia deixar a sua impressora inutilizável!" -#: src/slic3r/GUI/FirmwareDialog.cpp:904 +#: src/slic3r/GUI/FirmwareDialog.cpp:903 msgid "Confirmation" msgstr "Confirmação" -#: src/slic3r/GUI/FirmwareDialog.cpp:907 +#: src/slic3r/GUI/FirmwareDialog.cpp:906 msgid "Cancelling..." msgstr "Cancelando..." -#: src/slic3r/GUI/GLCanvas3D.cpp:534 -msgid "Layers heights" -msgstr "Altura de camada" +#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +msgid "Variable layer height" +msgstr "Altura da camada variável" -#: src/slic3r/GUI/GLCanvas3D.cpp:631 +#: src/slic3r/GUI/GLCanvas3D.cpp:237 +msgid "Left mouse button:" +msgstr "Botão esquerdo do mouse:" + +#: src/slic3r/GUI/GLCanvas3D.cpp:240 +msgid "Add detail" +msgstr "Adicionar config." + +#: src/slic3r/GUI/GLCanvas3D.cpp:243 +msgid "Right mouse button:" +msgstr "Botão direito do mouse:" + +#: src/slic3r/GUI/GLCanvas3D.cpp:246 +msgid "Remove detail" +msgstr "Remover detalhes" + +#: src/slic3r/GUI/GLCanvas3D.cpp:249 +msgid "Shift + Left mouse button:" +msgstr "Shift + Botão do mouse esquerdo:" + +#: src/slic3r/GUI/GLCanvas3D.cpp:252 +msgid "Reset to base" +msgstr "Reset para base" + +#: src/slic3r/GUI/GLCanvas3D.cpp:255 +msgid "Shift + Right mouse button:" +msgstr "Shift + Botão do mouse direito:" + +#: src/slic3r/GUI/GLCanvas3D.cpp:258 +msgid "Smoothing" +msgstr "Suavizando" + +#: src/slic3r/GUI/GLCanvas3D.cpp:261 +msgid "Mouse wheel:" +msgstr "Scroll do mouse:" + +#: src/slic3r/GUI/GLCanvas3D.cpp:264 +msgid "Increase/decrease edit area" +msgstr "Aumentar/diminuir a área de edição" + +#: src/slic3r/GUI/GLCanvas3D.cpp:267 +msgid "Adaptive" +msgstr "Adaptativo" + +#: src/slic3r/GUI/GLCanvas3D.cpp:273 +msgid "Quality / Speed" +msgstr "Qualidade / Velocidade" + +#: src/slic3r/GUI/GLCanvas3D.cpp:277 +msgid "Higher print quality versus higher print speed." +msgstr "Maior qualidade de impressão versus maior velocidade de impressão." + +#: src/slic3r/GUI/GLCanvas3D.cpp:288 +msgid "Smooth" +msgstr "Suave" + +#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +msgid "Radius" +msgstr "Raio" + +#: src/slic3r/GUI/GLCanvas3D.cpp:304 +msgid "Keep min" +msgstr "Mantenha min." + +#: src/slic3r/GUI/GLCanvas3D.cpp:313 +msgid "Reset" +msgstr "Redefinir" + +#: src/slic3r/GUI/GLCanvas3D.cpp:599 +msgid "Variable layer height - Manual edit" +msgstr "Habilitar altura de camada variável" + +#: src/slic3r/GUI/GLCanvas3D.cpp:685 msgid "An object outside the print area was detected" msgstr "Um objeto foi detectado fora da área de impressão" -#: src/slic3r/GUI/GLCanvas3D.cpp:632 +#: src/slic3r/GUI/GLCanvas3D.cpp:686 msgid "A toolpath outside the print area was detected" msgstr "Há movimentos fora da área de impressão" -#: src/slic3r/GUI/GLCanvas3D.cpp:633 +#: src/slic3r/GUI/GLCanvas3D.cpp:687 msgid "SLA supports outside the print area were detected" msgstr "Suportes de SLA foram detectados fora da área de impressão" -#: src/slic3r/GUI/GLCanvas3D.cpp:634 -msgid "Some objects are not visible when editing supports" -msgstr "Alguns objetos não são visíveis quando editando suportes" +#: src/slic3r/GUI/GLCanvas3D.cpp:688 +msgid "Some objects are not visible" +msgstr "Alguns objetos não são visíveis" -#: src/slic3r/GUI/GLCanvas3D.cpp:636 +#: src/slic3r/GUI/GLCanvas3D.cpp:690 msgid "" "An object outside the print area was detected\n" "Resolve the current problem to continue slicing" @@ -873,117 +1596,171 @@ msgstr "" "Um objeto foi encontrado fora da área de impressão\n" "Resolva o problema atual para continuar o fatiamento" -#: src/slic3r/GUI/GLCanvas3D.cpp:1733 +#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +msgid "Default print color" +msgstr "Cor de impressão padrão" + +#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 +#: src/slic3r/GUI/GLCanvas3D.cpp:982 +msgid "Pause print or custom G-code" +msgstr "Pausa impressão ou código G personalizado" + +#: src/slic3r/GUI/GLCanvas3D.cpp:955 +#, c-format +msgid "up to %.2f mm" +msgstr "até %.2f mm" + +#: src/slic3r/GUI/GLCanvas3D.cpp:959 +#, c-format +msgid "above %.2f mm" +msgstr "acima de %.2f mm" + +#: src/slic3r/GUI/GLCanvas3D.cpp:963 +#, c-format +msgid "%.2f - %.2f mm" +msgstr "%.2f - %.2f mm" + +#: src/slic3r/GUI/GLCanvas3D.cpp:995 +#, c-format +msgid "Color change for Extruder %d at %.2f mm" +msgstr "Mudança de cor para Extrusor %d em %.2f mm" + +#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +msgid "Seq." +msgstr "Seq." + +#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +msgid "Variable layer height - Reset" +msgstr "Habilitar altura de camada variável - Resetar" + +#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +msgid "Variable layer height - Adaptive" +msgstr "Habilitar altura de camada variável - Adaptativo" + +#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +msgid "Variable layer height - Smooth all" +msgstr "Habilitar altura de camada variável - Deixar tudo suave" + +#: src/slic3r/GUI/GLCanvas3D.cpp:2053 msgid "Mirror Object" msgstr "Espelhar objeto" -#: src/slic3r/GUI/GLCanvas3D.cpp:2970 +#: src/slic3r/GUI/GLCanvas3D.cpp:2921 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:570 +msgid "Gizmo-Move" +msgstr "Gizmo-Mover" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3001 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:572 +msgid "Gizmo-Rotate" +msgstr "Gizmo-Rotacionar" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3505 msgid "Move Object" msgstr "Mover objeto" -#: src/slic3r/GUI/GLCanvas3D.cpp:3506 +#: src/slic3r/GUI/GLCanvas3D.cpp:4047 msgid "Undo History" msgstr "Desfazer histórico" -#: src/slic3r/GUI/GLCanvas3D.cpp:3506 +#: src/slic3r/GUI/GLCanvas3D.cpp:4047 msgid "Redo History" msgstr "Refazer histórico" -#: src/slic3r/GUI/GLCanvas3D.cpp:3524 +#: src/slic3r/GUI/GLCanvas3D.cpp:4065 #, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "Desfazer ação de %1$d" msgstr[1] "Desfazer ações de %1$d" -#: src/slic3r/GUI/GLCanvas3D.cpp:3524 +#: src/slic3r/GUI/GLCanvas3D.cpp:4065 #, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "Refazer ação de %1$d" msgstr[1] "Refazer ações de %1$d" -#: src/slic3r/GUI/GLCanvas3D.cpp:3571 +#: src/slic3r/GUI/GLCanvas3D.cpp:4467 msgid "Add..." msgstr "Adicionar..." -#: src/slic3r/GUI/GLCanvas3D.cpp:3579 src/slic3r/GUI/GUI_ObjectList.cpp:1501 -#: src/slic3r/GUI/Plater.cpp:3520 src/slic3r/GUI/Plater.cpp:3539 -#: src/slic3r/GUI/Tab.cpp:3286 +#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1719 +#: src/slic3r/GUI/Plater.cpp:3933 src/slic3r/GUI/Plater.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3126 msgid "Delete" msgstr "Deletar" -#: src/slic3r/GUI/GLCanvas3D.cpp:3588 src/slic3r/GUI/Plater.cpp:4172 +#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 +#: src/slic3r/GUI/Plater.cpp:4671 msgid "Delete all" msgstr "Deletar todos" -#: src/slic3r/GUI/GLCanvas3D.cpp:3597 src/slic3r/GUI/KBShortcutsDialog.cpp:137 -#: src/slic3r/GUI/Plater.cpp:2681 +#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 +#: src/slic3r/GUI/Plater.cpp:2756 msgid "Arrange" msgstr "Arranjar" -#: src/slic3r/GUI/GLCanvas3D.cpp:3597 src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Arrange selection" msgstr "Arranjar seleção" -#: src/slic3r/GUI/GLCanvas3D.cpp:3609 +#: src/slic3r/GUI/GLCanvas3D.cpp:4505 msgid "Copy" msgstr "Copiar" -#: src/slic3r/GUI/GLCanvas3D.cpp:3618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4514 msgid "Paste" msgstr "Colar" -#: src/slic3r/GUI/GLCanvas3D.cpp:3630 src/slic3r/GUI/Plater.cpp:3400 -#: src/slic3r/GUI/Plater.cpp:3412 src/slic3r/GUI/Plater.cpp:3526 +#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3790 +#: src/slic3r/GUI/Plater.cpp:3802 src/slic3r/GUI/Plater.cpp:3942 msgid "Add instance" msgstr "Adicionar instância" -#: src/slic3r/GUI/GLCanvas3D.cpp:3641 src/slic3r/GUI/Plater.cpp:3528 +#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3944 msgid "Remove instance" msgstr "Remover instância" -#: src/slic3r/GUI/GLCanvas3D.cpp:3654 +#: src/slic3r/GUI/GLCanvas3D.cpp:4550 msgid "Split to objects" msgstr "Dividir em objetos" -#: src/slic3r/GUI/GLCanvas3D.cpp:3664 src/slic3r/GUI/GUI_ObjectList.cpp:1340 +#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1488 msgid "Split to parts" msgstr "Dividir em partes" -#: src/slic3r/GUI/GLCanvas3D.cpp:3677 src/slic3r/GUI/GUI_ObjectList.cpp:2203 -msgid "Height ranges" -msgstr "Limites de altura" - -#: src/slic3r/GUI/GLCanvas3D.cpp:3728 src/slic3r/GUI/MainFrame.cpp:570 +#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 +#: src/slic3r/GUI/MainFrame.cpp:592 msgid "Undo" msgstr "Desfazer" -#: src/slic3r/GUI/GLCanvas3D.cpp:3728 src/slic3r/GUI/GLCanvas3D.cpp:3761 +#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 msgid "Click right mouse button to open History" msgstr "Clique no botão direito para abrir o Histórico" -#: src/slic3r/GUI/GLCanvas3D.cpp:3745 +#: src/slic3r/GUI/GLCanvas3D.cpp:4641 msgid "Next Undo action: %1%" msgstr "Próxima ação de desfazer: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:3761 src/slic3r/GUI/MainFrame.cpp:573 +#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 +#: src/slic3r/GUI/MainFrame.cpp:595 msgid "Redo" msgstr "Refazer" -#: src/slic3r/GUI/GLCanvas3D.cpp:3777 +#: src/slic3r/GUI/GLCanvas3D.cpp:4673 msgid "Next Redo action: %1%" msgstr "Próxima ação de refazer: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:5555 +#: src/slic3r/GUI/GLCanvas3D.cpp:6598 msgid "Selection-Add from rectangle" msgstr "Seleção-Adicionar do retângulo" -#: src/slic3r/GUI/GLCanvas3D.cpp:5574 +#: src/slic3r/GUI/GLCanvas3D.cpp:6617 msgid "Selection-Remove from rectangle" msgstr "Seleção-remover do retângulo" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:273 +#: src/slic3r/GUI/GLCanvas3DManager.cpp:306 #, c-format msgid "" "PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" @@ -992,11 +1769,11 @@ msgstr "" "PrusaSlicer requer drivers capazes de executar OpenGL 2.0, \n" "enquanto a versão do OpenGL %s, renderização %s, fornecedor %s foi detectada." -#: src/slic3r/GUI/GLCanvas3DManager.cpp:276 +#: src/slic3r/GUI/GLCanvas3DManager.cpp:309 msgid "You may need to update your graphics card driver." msgstr "Você pode ter que atualizar os drivers da sua placa de vídeo." -#: src/slic3r/GUI/GLCanvas3DManager.cpp:279 +#: src/slic3r/GUI/GLCanvas3DManager.cpp:312 msgid "" "As a workaround, you may run PrusaSlicer with a software rendered 3D " "graphics by running prusa-slicer.exe with the --sw_renderer parameter." @@ -1005,28 +1782,28 @@ msgstr "" "renderizando gráficos 3D por executar Prusa-slicer.exe com o parâmetro--" "sw_renderer." -#: src/slic3r/GUI/GLCanvas3DManager.cpp:281 +#: src/slic3r/GUI/GLCanvas3DManager.cpp:314 msgid "Unsupported OpenGL version" msgstr "Versão do OpenGL não suportada" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:40 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:145 src/libslic3r/PrintConfig.cpp:3212 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3412 msgid "Cut" msgstr "Cortar" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:150 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 msgid "Keep upper part" msgstr "Manter parte superior" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 msgid "Keep lower part" msgstr "Manter parte inferior" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:152 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Rotate lower part upwards" msgstr "Rotacione as partes inferiores para cima" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:155 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 msgid "Perform cut" msgstr "Aplicar o corte" @@ -1034,264 +1811,289 @@ msgstr "Aplicar o corte" msgid "Place on face" msgstr "Colocar em uma face" +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:40 +msgid "Hollow this object" +msgstr "Deixar este objeto oco" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 +msgid "Preview hollowed and drilled model" +msgstr "Modelo de visualização oco e perfurado" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 +msgid "Offset" +msgstr "Compensamento do Z" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +msgid "Quality" +msgstr "Qualidade" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:2944 +msgid "Closing distance" +msgstr "Distância de fechamento" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 +msgid "Hole diameter" +msgstr "Diâmetro do orifício" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 +msgid "Hole depth" +msgstr "Profundidade do orifício" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 +msgid "Remove selected holes" +msgstr "Remover os buracos selecionados" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 +msgid "Remove all holes" +msgstr "Remova todos os buracos" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +msgid "Clipping of view" +msgstr "Recorte de vista" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +msgid "Reset direction" +msgstr "Restabelecer direção" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 +msgid "Show supports" +msgstr "Mostrar suportes" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:423 +msgid "Add drainage hole" +msgstr "Adicionar orifício de drenagem" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:541 +msgid "Delete drainage hole" +msgstr "Excluir orifício de drenagem" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:815 +msgid "Hollowing parameter change" +msgstr "Mudança de parâmetro de suporte" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:887 +msgid "Change drainage hole diameter" +msgstr "Mudar o diâmetro do orifício de drenagem" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:979 +msgid "Hollow and drill" +msgstr "Oco e broca" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1061 +msgid "Move drainage hole" +msgstr "Mover o orifício de drenagem" + #: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 msgid "Move" msgstr "Mover" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 -msgid "Position (mm)" -msgstr "Posição (mm)" - -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 -msgid "Displacement (mm)" -msgstr "Deslocamento (mm)" - #: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:477 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:496 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:514 -#: src/libslic3r/PrintConfig.cpp:3261 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 +#: src/libslic3r/PrintConfig.cpp:3461 msgid "Rotate" msgstr "Rotacionar" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:482 -msgid "Rotation (deg)" -msgstr "Rotacionar (graus)" - #: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:392 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:497 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:515 -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 +#: src/libslic3r/PrintConfig.cpp:3476 msgid "Scale" msgstr "Escala" -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:292 -msgid "Scale (%)" -msgstr "Escala (%)" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Diâmetro da cabeça" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 msgid "Lock supports under new islands" msgstr "Travar suportes debaixo de novas ilhas" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1449 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1361 msgid "Remove selected points" msgstr "Remover pontos selecionados" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 msgid "Remove all points" msgstr "Remover todos os pontos" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1452 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 msgid "Apply changes" msgstr "Aplicar mudanças" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1453 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 msgid "Discard changes" msgstr "Descartar mudanças" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 msgid "Minimal points distance" msgstr "Distância mínima entre pontos" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 -#: src/libslic3r/PrintConfig.cpp:2651 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "Support points density" msgstr "Densidade dos pontos de suporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1455 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 msgid "Auto-generate points" msgstr "Pontos gerados automaticamente" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 msgid "Manual editing" msgstr "Edição manual" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 -msgid "Clipping of view" -msgstr "Recorte de vista" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -msgid "Reset direction" -msgstr "Restabelecer direção" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:531 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:484 msgid "Add support point" msgstr "Adicionar ponto de suporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:719 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:621 msgid "Delete support point" msgstr "Deletar ponto de suporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:920 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:810 msgid "Change point head diameter" msgstr "Mudar o diâmetro do ponto da cabeça" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:986 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:878 msgid "Support parameter change" msgstr "Mudança de parâmetro de suporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1094 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:986 msgid "SLA Support Points" msgstr "Pontos de suporte SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1115 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1007 msgid "SLA gizmo turned on" msgstr "Gizmo de SLA ligado" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1137 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1035 msgid "Do you want to save your manually edited support points?" msgstr "Você deseja salvar os pontos manualmente editados?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1138 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1036 msgid "Save changes?" msgstr "Salvar mudanças?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1150 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "SLA gizmo turned off" msgstr "Gizmo de SLA desligado" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1187 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1087 msgid "Move support point" msgstr "Mover pontos de suporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1286 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1186 msgid "Support points edit" msgstr "Edição de pontos de suporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1355 -msgid "" -"Autogeneration will erase all manually edited points.\n" -"\n" -"Are you sure you want to do it?\n" -msgstr "" -"Gerar automaticamente irá apagar todos os pontos manualmente editados. Tem " -"certeza que quer gerar?\n" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1258 +msgid "Autogeneration will erase all manually edited points." +msgstr "Gerar automaticamente irá apagar todos os pontos manualmente editados." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1357 src/slic3r/GUI/GUI.cpp:289 -#: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1259 +msgid "Are you sure you want to do it?" +msgstr "Tem certeza que quer fazer isso?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1260 src/slic3r/GUI/GUI.cpp:258 +#: src/slic3r/GUI/Tab.cpp:3086 src/slic3r/GUI/WipeTowerDialog.cpp:45 +#: src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Aviso" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1360 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1263 msgid "Autogenerate support points" msgstr "Pontos de suporte gerados automaticamente" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1412 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1324 msgid "SLA gizmo keyboard shortcuts" msgstr "Atalhos no teclado para gizmo SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1423 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1335 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Nota: alguns atalhos funcionam somente em modos que não editam." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1441 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1444 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1445 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1353 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1356 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1357 msgid "Left click" msgstr "Clique esquerdo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1441 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1353 msgid "Add point" msgstr "Adicionar ponto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1442 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1354 msgid "Right click" msgstr "Clique direito" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1442 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1354 msgid "Remove point" msgstr "Remover ponto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1443 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1446 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1447 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1355 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1358 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1359 msgid "Drag" msgstr "Arrastar" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1443 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1355 msgid "Move point" msgstr "Mover ponto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1444 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1356 msgid "Add point to selection" msgstr "Adicionar ponto à seleção" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1445 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1357 msgid "Remove point from selection" msgstr "Remover ponto da seleção" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1446 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1358 msgid "Select by rectangle" msgstr "Selecionar por retângulo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1447 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1359 msgid "Deselect by rectangle" msgstr "Desselecionar por retângulo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1448 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1360 msgid "Select all points" msgstr "Selecionar todos os pontos" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1450 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1362 msgid "Mouse wheel" msgstr "Scroll do mouse" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1450 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1362 msgid "Move clipping plane" msgstr "Mover plano de recorte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1451 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 msgid "Reset clipping plane" msgstr "Restabelecer plano de recorte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1454 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 msgid "Switch to editing mode" msgstr "Alterar para modo de edição" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:569 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:497 msgid "Gizmo-Place on Face" msgstr "Gizmo-Colocar em uma face" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:641 -msgid "Gizmo-Move" -msgstr "Gizmo-Mover" - -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:646 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:571 msgid "Gizmo-Scale" msgstr "Gizmo-Escala" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:651 -msgid "Gizmo-Rotate" -msgstr "Gizmo-Rotacionar" - -#: src/slic3r/GUI/GUI.cpp:141 src/slic3r/GUI/Tab.cpp:3145 -msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "" -"É impossível imprimir objetos com múltiplas partes com a tecnologia SLA." - -#: src/slic3r/GUI/GUI.cpp:142 -msgid "Please check and fix your object list." -msgstr "Favor verificar e concertar sua lista de objetos." - -#: src/slic3r/GUI/GUI.cpp:143 src/slic3r/GUI/Plater.cpp:2246 -#: src/slic3r/GUI/Tab.cpp:3147 -msgid "Attention!" -msgstr "Atenção!" - -#: src/slic3r/GUI/GUI.cpp:283 -msgid "Notice" -msgstr "Aviso" - -#: src/slic3r/GUI/GUI_App.cpp:132 +#: src/slic3r/GUI/GUI_App.cpp:138 #, c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. " @@ -1306,158 +2108,190 @@ msgstr "" "\n" "O aplicativo será encerrado agora." -#: src/slic3r/GUI/GUI_App.cpp:135 +#: src/slic3r/GUI/GUI_App.cpp:141 msgid "Fatal error" msgstr "Erro fatal" -#: src/slic3r/GUI/GUI_App.cpp:442 +#: src/slic3r/GUI/GUI_App.cpp:446 msgid "Changing of an application language" msgstr "Alteração de um idioma do aplicativo" -#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +#: src/slic3r/GUI/GUI_App.cpp:454 src/slic3r/GUI/GUI_App.cpp:463 msgid "Recreating" msgstr "Recriando" -#: src/slic3r/GUI/GUI_App.cpp:463 +#: src/slic3r/GUI/GUI_App.cpp:470 msgid "Loading of current presets" msgstr "Carregando presets" -#: src/slic3r/GUI/GUI_App.cpp:471 +#: src/slic3r/GUI/GUI_App.cpp:478 msgid "Loading of a mode view" msgstr "Carregamento de um modelo de vista" -#: src/slic3r/GUI/GUI_App.cpp:551 +#: src/slic3r/GUI/GUI_App.cpp:559 msgid "Choose one file (3MF/AMF):" msgstr "Escolha um arquivo (3MF/AMF):" -#: src/slic3r/GUI/GUI_App.cpp:563 +#: src/slic3r/GUI/GUI_App.cpp:571 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Escolha um ou mais arquivos (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/GUI_App.cpp:625 +#: src/slic3r/GUI/GUI_App.cpp:633 msgid "Select the language" msgstr "Selecione a linguagem" -#: src/slic3r/GUI/GUI_App.cpp:625 +#: src/slic3r/GUI/GUI_App.cpp:633 msgid "Language" msgstr "Linguagem" -#: src/slic3r/GUI/GUI_App.cpp:796 +#: src/slic3r/GUI/GUI_App.cpp:801 +#, c-format +msgid "Run %s" +msgstr "Executar %s" + +#: src/slic3r/GUI/GUI_App.cpp:804 msgid "&Configuration Snapshots" msgstr "&Captura das config." -#: src/slic3r/GUI/GUI_App.cpp:796 +#: src/slic3r/GUI/GUI_App.cpp:804 msgid "Inspect / activate configuration snapshots" msgstr "Inspecionar / ativar capturas de config." -#: src/slic3r/GUI/GUI_App.cpp:797 +#: src/slic3r/GUI/GUI_App.cpp:805 msgid "Take Configuration &Snapshot" msgstr "Capturar &config." -#: src/slic3r/GUI/GUI_App.cpp:797 +#: src/slic3r/GUI/GUI_App.cpp:805 msgid "Capture a configuration snapshot" msgstr "Capturar uma config." -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:806 +msgid "Check for updates" +msgstr "Verificar Atualizações" + +#: src/slic3r/GUI/GUI_App.cpp:806 +msgid "Check for configuration updates" +msgstr "Verificar atualizações nas aplicações" + +#: src/slic3r/GUI/GUI_App.cpp:808 msgid "&Preferences" msgstr "&Preferências" -#: src/slic3r/GUI/GUI_App.cpp:806 +#: src/slic3r/GUI/GUI_App.cpp:814 msgid "Application preferences" msgstr "Preferências de aplicação" -#: src/slic3r/GUI/GUI_App.cpp:809 src/slic3r/GUI/wxExtensions.cpp:3043 +#: src/slic3r/GUI/GUI_App.cpp:817 src/slic3r/GUI/wxExtensions.cpp:756 msgid "Simple" msgstr "Simples" -#: src/slic3r/GUI/GUI_App.cpp:809 +#: src/slic3r/GUI/GUI_App.cpp:817 msgid "Simple View Mode" msgstr "Modo simples de visualização" -#: src/slic3r/GUI/GUI_App.cpp:810 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:620 src/slic3r/GUI/Tab.cpp:1061 -#: src/slic3r/GUI/Tab.cpp:1076 src/slic3r/GUI/Tab.cpp:1174 -#: src/slic3r/GUI/Tab.cpp:1177 src/slic3r/GUI/Tab.cpp:1685 -#: src/slic3r/GUI/Tab.cpp:2169 src/slic3r/GUI/Tab.cpp:3785 -#: src/slic3r/GUI/wxExtensions.cpp:3044 src/libslic3r/PrintConfig.cpp:83 -#: src/libslic3r/PrintConfig.cpp:197 src/libslic3r/PrintConfig.cpp:360 -#: src/libslic3r/PrintConfig.cpp:1013 src/libslic3r/PrintConfig.cpp:2226 +#: src/slic3r/GUI/GUI_App.cpp:818 src/slic3r/GUI/GUI_ObjectList.cpp:104 +#: src/slic3r/GUI/GUI_ObjectList.cpp:623 src/slic3r/GUI/Tab.cpp:1086 +#: src/slic3r/GUI/Tab.cpp:1101 src/slic3r/GUI/Tab.cpp:1200 +#: src/slic3r/GUI/Tab.cpp:1203 src/slic3r/GUI/Tab.cpp:1469 +#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:3665 +#: src/slic3r/GUI/wxExtensions.cpp:757 src/libslic3r/PrintConfig.cpp:88 +#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 +#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2448 msgid "Advanced" msgstr "Avançado" -#: src/slic3r/GUI/GUI_App.cpp:810 +#: src/slic3r/GUI/GUI_App.cpp:818 msgid "Advanced View Mode" msgstr "Modo avançado de visualização" -#: src/slic3r/GUI/GUI_App.cpp:811 src/slic3r/GUI/wxExtensions.cpp:3045 +#: src/slic3r/GUI/GUI_App.cpp:819 src/slic3r/GUI/wxExtensions.cpp:758 msgid "Expert" msgstr "Especialista" -#: src/slic3r/GUI/GUI_App.cpp:811 +#: src/slic3r/GUI/GUI_App.cpp:819 msgid "Expert View Mode" msgstr "Modo especialista de visualização" -#: src/slic3r/GUI/GUI_App.cpp:816 +#: src/slic3r/GUI/GUI_App.cpp:824 msgid "Mode" msgstr "Modo" -#: src/slic3r/GUI/GUI_App.cpp:816 +#: src/slic3r/GUI/GUI_App.cpp:824 #, c-format msgid "%s View Mode" msgstr "%s Modo de visualização" -#: src/slic3r/GUI/GUI_App.cpp:818 -msgid "Change Application &Language" -msgstr "Mudar &idioma" +#: src/slic3r/GUI/GUI_App.cpp:826 +msgid "&Language" +msgstr "&Linguagem" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:828 msgid "Flash printer &firmware" msgstr "Atualizar firmware &da impressora" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:828 msgid "Upload a firmware image into an Arduino based printer" msgstr "Atualizar o firmware para uma impressora baseada em Arduino" -#: src/slic3r/GUI/GUI_App.cpp:832 +#: src/slic3r/GUI/GUI_App.cpp:843 msgid "Taking configuration snapshot" msgstr "Capturando a config." -#: src/slic3r/GUI/GUI_App.cpp:832 +#: src/slic3r/GUI/GUI_App.cpp:843 msgid "Snapshot name" msgstr "Nome da captura" -#: src/slic3r/GUI/GUI_App.cpp:875 +#: src/slic3r/GUI/GUI_App.cpp:886 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." msgstr "" "Alterar a linguagem fará com que o aplicativo reinicie.\n" -"Você irá perder conteúdo no prato." +"Você irá perder conteúdo na bandeja." -#: src/slic3r/GUI/GUI_App.cpp:877 +#: src/slic3r/GUI/GUI_App.cpp:888 msgid "Do you want to proceed?" msgstr "Você quer prosseguir?" -#: src/slic3r/GUI/GUI_App.cpp:878 +#: src/slic3r/GUI/GUI_App.cpp:889 msgid "Language selection" msgstr "Seleção de linguagem" -#: src/slic3r/GUI/GUI_App.cpp:901 +#: src/slic3r/GUI/GUI_App.cpp:912 msgid "&Configuration" msgstr "&Configuração" -#: src/slic3r/GUI/GUI_App.cpp:923 +#: src/slic3r/GUI/GUI_App.cpp:936 msgid "The presets on the following tabs were modified" msgstr "Os presets seguintes foram modificados" -#: src/slic3r/GUI/GUI_App.cpp:923 src/slic3r/GUI/Tab.cpp:3133 +#: src/slic3r/GUI/GUI_App.cpp:936 src/slic3r/GUI/Tab.cpp:2948 msgid "Discard changes and continue anyway?" msgstr "Descartar mudanças e continuar assim mesmo?" -#: src/slic3r/GUI/GUI_App.cpp:926 +#: src/slic3r/GUI/GUI_App.cpp:939 msgid "Unsaved Presets" msgstr "config. não salvas" +#: src/slic3r/GUI/GUI_App.cpp:1088 src/slic3r/GUI/Tab.cpp:2960 +msgid "It's impossible to print multi-part object(s) with SLA technology." +msgstr "" +"É impossível imprimir objetos com múltiplas partes com a tecnologia SLA." + +#: src/slic3r/GUI/GUI_App.cpp:1089 +msgid "Please check and fix your object list." +msgstr "Favor verificar e concertar sua lista de objetos." + +#: src/slic3r/GUI/GUI_App.cpp:1090 src/slic3r/GUI/Plater.cpp:2315 +#: src/slic3r/GUI/Tab.cpp:2962 +msgid "Attention!" +msgstr "Atenção!" + +#: src/slic3r/GUI/GUI_App.cpp:1107 +msgid "Select a gcode file:" +msgstr "Selecione um arquivo gcode:" + #: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 msgid "Start at height" msgstr "Começar na altura" @@ -1466,11 +2300,6 @@ msgstr "Começar na altura" msgid "Stop at height" msgstr "Parar na altura" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1033 -#: src/libslic3r/PrintConfig.cpp:66 -msgid "Layer height" -msgstr "Altura da camada" - #: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 msgid "Remove layer range" msgstr "Remover limite da camada" @@ -1479,50 +2308,38 @@ msgstr "Remover limite da camada" msgid "Add layer range" msgstr "Adicionar limite da camada" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:88 -#: src/slic3r/GUI/GUI_ObjectList.cpp:611 src/libslic3r/PrintConfig.cpp:67 -#: src/libslic3r/PrintConfig.cpp:160 src/libslic3r/PrintConfig.cpp:392 -#: src/libslic3r/PrintConfig.cpp:453 src/libslic3r/PrintConfig.cpp:461 -#: src/libslic3r/PrintConfig.cpp:867 src/libslic3r/PrintConfig.cpp:1051 -#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1420 -#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:2037 -#: src/libslic3r/PrintConfig.cpp:2095 +#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 +#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/libslic3r/PrintConfig.cpp:72 +#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 +#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 +#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 +#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 +#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 +#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 +#: src/libslic3r/PrintConfig.cpp:2142 msgid "Layers and Perimeters" msgstr "Camadas e perímetros" -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:89 -#: src/slic3r/GUI/GUI_ObjectList.cpp:612 src/slic3r/GUI/Plater.cpp:497 -#: src/slic3r/GUI/Tab.cpp:1065 src/slic3r/GUI/Tab.cpp:1066 -#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:400 -#: src/libslic3r/PrintConfig.cpp:420 src/libslic3r/PrintConfig.cpp:754 -#: src/libslic3r/PrintConfig.cpp:768 src/libslic3r/PrintConfig.cpp:805 -#: src/libslic3r/PrintConfig.cpp:958 src/libslic3r/PrintConfig.cpp:968 -#: src/libslic3r/PrintConfig.cpp:986 src/libslic3r/PrintConfig.cpp:1004 -#: src/libslic3r/PrintConfig.cpp:1023 src/libslic3r/PrintConfig.cpp:1708 -#: src/libslic3r/PrintConfig.cpp:1725 -msgid "Infill" -msgstr "Preenchimento" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:90 -#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/slic3r/GUI/GUI_Preview.cpp:244 -#: src/slic3r/GUI/Tab.cpp:1094 src/slic3r/GUI/Tab.cpp:1095 -#: src/libslic3r/PrintConfig.cpp:344 src/libslic3r/PrintConfig.cpp:1481 -#: src/libslic3r/PrintConfig.cpp:1830 src/libslic3r/PrintConfig.cpp:1836 -#: src/libslic3r/PrintConfig.cpp:1844 src/libslic3r/PrintConfig.cpp:1856 -#: src/libslic3r/PrintConfig.cpp:1866 src/libslic3r/PrintConfig.cpp:1874 -#: src/libslic3r/PrintConfig.cpp:1889 src/libslic3r/PrintConfig.cpp:1910 -#: src/libslic3r/PrintConfig.cpp:1921 src/libslic3r/PrintConfig.cpp:1937 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1955 -#: src/libslic3r/PrintConfig.cpp:1966 src/libslic3r/PrintConfig.cpp:1980 -#: src/libslic3r/PrintConfig.cpp:1988 src/libslic3r/PrintConfig.cpp:1989 -#: src/libslic3r/PrintConfig.cpp:1998 src/libslic3r/PrintConfig.cpp:2006 -#: src/libslic3r/PrintConfig.cpp:2020 src/libslic3r/GCode/PreviewData.cpp:156 +#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 +#: src/slic3r/GUI/GUI_ObjectList.cpp:616 src/slic3r/GUI/GUI_Preview.cpp:246 +#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:1120 +#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 +#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 +#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 +#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 +#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 +#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 +#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 +#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 +#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 +#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 msgid "Support material" msgstr "Material de suporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:94 -#: src/slic3r/GUI/GUI_ObjectList.cpp:617 src/libslic3r/PrintConfig.cpp:2202 -#: src/libslic3r/PrintConfig.cpp:2210 +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 +#: src/slic3r/GUI/GUI_ObjectList.cpp:620 src/libslic3r/PrintConfig.cpp:2252 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Wipe options" msgstr "Opções de limpeza" @@ -1546,487 +2363,508 @@ msgstr "Adicionar reforço de suporte" msgid "Add support blocker" msgstr "Adicionar bloqueador de suporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:91 src/slic3r/GUI/GUI_ObjectList.cpp:614 -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/slic3r/GUI/Tab.cpp:1119 -#: src/libslic3r/PrintConfig.cpp:209 src/libslic3r/PrintConfig.cpp:441 -#: src/libslic3r/PrintConfig.cpp:896 src/libslic3r/PrintConfig.cpp:1024 -#: src/libslic3r/PrintConfig.cpp:1410 src/libslic3r/PrintConfig.cpp:1647 -#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1747 -#: src/libslic3r/PrintConfig.cpp:2080 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:617 +#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 +#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 +#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "Speed" msgstr "Velocidade" -#: src/slic3r/GUI/GUI_ObjectList.cpp:92 src/slic3r/GUI/GUI_ObjectList.cpp:615 -#: src/slic3r/GUI/Tab.cpp:1154 src/slic3r/GUI/Tab.cpp:2043 -#: src/libslic3r/PrintConfig.cpp:471 src/libslic3r/PrintConfig.cpp:979 -#: src/libslic3r/PrintConfig.cpp:1389 src/libslic3r/PrintConfig.cpp:1717 -#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1928 +#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:618 +#: src/slic3r/GUI/Tab.cpp:1179 src/slic3r/GUI/Tab.cpp:1840 +#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 +#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 +#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 msgid "Extruders" msgstr "Exrtrusoras" -#: src/slic3r/GUI/GUI_ObjectList.cpp:93 src/slic3r/GUI/GUI_ObjectList.cpp:616 -#: src/libslic3r/PrintConfig.cpp:431 src/libslic3r/PrintConfig.cpp:538 -#: src/libslic3r/PrintConfig.cpp:855 src/libslic3r/PrintConfig.cpp:987 -#: src/libslic3r/PrintConfig.cpp:1398 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1911 src/libslic3r/PrintConfig.cpp:2069 +#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:619 +#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 +#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 +#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 +#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 msgid "Extrusion Width" msgstr "Espessura da extrusão" -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:622 -#: src/slic3r/GUI/Plater.cpp:465 src/slic3r/GUI/Tab.cpp:3737 -#: src/slic3r/GUI/Tab.cpp:3738 src/libslic3r/PrintConfig.cpp:2501 -#: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:2517 -#: src/libslic3r/PrintConfig.cpp:2526 src/libslic3r/PrintConfig.cpp:2536 -#: src/libslic3r/PrintConfig.cpp:2562 src/libslic3r/PrintConfig.cpp:2569 -#: src/libslic3r/PrintConfig.cpp:2580 src/libslic3r/PrintConfig.cpp:2590 -#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2612 -#: src/libslic3r/PrintConfig.cpp:2622 src/libslic3r/PrintConfig.cpp:2631 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2652 -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:625 +#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3606 +#: src/slic3r/GUI/Tab.cpp:3607 src/libslic3r/PrintConfig.cpp:2614 +#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 +#: src/libslic3r/PrintConfig.cpp:2685 src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2703 src/libslic3r/PrintConfig.cpp:2713 +#: src/libslic3r/PrintConfig.cpp:2722 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2745 src/libslic3r/PrintConfig.cpp:2754 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2775 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Supports" msgstr "Suportes" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:623 -#: src/slic3r/GUI/Plater.cpp:603 src/slic3r/GUI/Tab.cpp:3769 -#: src/slic3r/GUI/Tab.cpp:3770 src/libslic3r/PrintConfig.cpp:2668 -#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2689 -#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2721 -#: src/libslic3r/PrintConfig.cpp:2732 src/libslic3r/PrintConfig.cpp:2739 -#: src/libslic3r/PrintConfig.cpp:2750 src/libslic3r/PrintConfig.cpp:2759 -#: src/libslic3r/PrintConfig.cpp:2768 +#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:626 +#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3640 +#: src/slic3r/GUI/Tab.cpp:3641 src/libslic3r/PrintConfig.cpp:2791 +#: src/libslic3r/PrintConfig.cpp:2798 src/libslic3r/PrintConfig.cpp:2812 +#: src/libslic3r/PrintConfig.cpp:2823 src/libslic3r/PrintConfig.cpp:2833 +#: src/libslic3r/PrintConfig.cpp:2855 src/libslic3r/PrintConfig.cpp:2866 +#: src/libslic3r/PrintConfig.cpp:2873 src/libslic3r/PrintConfig.cpp:2880 +#: src/libslic3r/PrintConfig.cpp:2891 src/libslic3r/PrintConfig.cpp:2900 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "Pad" msgstr "Bloco" -#: src/slic3r/GUI/GUI_ObjectList.cpp:260 +#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3658 +#: src/slic3r/GUI/Tab.cpp:3659 src/libslic3r/SLA/Hollowing.cpp:46 +#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 +#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2919 +#: src/libslic3r/PrintConfig.cpp:2926 src/libslic3r/PrintConfig.cpp:2936 +#: src/libslic3r/PrintConfig.cpp:2945 +msgid "Hollowing" +msgstr "Deixar oco" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:270 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 msgid "Name" msgstr "Nome" -#: src/slic3r/GUI/GUI_ObjectList.cpp:271 src/slic3r/GUI/GUI_ObjectList.cpp:373 +#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1433 +#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 +msgid "Extruder" +msgstr "Extrusora" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "Editing" msgstr "Edição" -#: src/slic3r/GUI/GUI_ObjectList.cpp:318 +#: src/slic3r/GUI/GUI_ObjectList.cpp:340 #, c-format -msgid "Auto-repaired (%d errors):\n" -msgstr "Auto reparando (%d erros):\n" +msgid "Auto-repaired (%d errors):" +msgstr "Auto reparando (%d erros):" -#: src/slic3r/GUI/GUI_ObjectList.cpp:325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:347 msgid "degenerate facets" msgstr "facetas degeneradas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:326 +#: src/slic3r/GUI/GUI_ObjectList.cpp:348 msgid "edges fixed" msgstr "arestas fixadas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:327 +#: src/slic3r/GUI/GUI_ObjectList.cpp:349 msgid "facets removed" msgstr "facetas removidas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:328 +#: src/slic3r/GUI/GUI_ObjectList.cpp:350 msgid "facets added" msgstr "facetas adicionadas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:329 +#: src/slic3r/GUI/GUI_ObjectList.cpp:351 msgid "facets reversed" msgstr "facetas reversidas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:330 +#: src/slic3r/GUI/GUI_ObjectList.cpp:352 msgid "backwards edges" msgstr "arestas viradas para trás" -#: src/slic3r/GUI/GUI_ObjectList.cpp:338 +#: src/slic3r/GUI/GUI_ObjectList.cpp:360 msgid "Right button click the icon to fix STL through Netfabb" msgstr "" "Clique com o botão direito no ícone para arrumar STL através do Netfabb" -#: src/slic3r/GUI/GUI_ObjectList.cpp:375 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "Right button click the icon to change the object settings" msgstr "Clique com o botão direito no ícone para mudar as config. do objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:377 +#: src/slic3r/GUI/GUI_ObjectList.cpp:399 msgid "Click the icon to change the object settings" msgstr "Clique no ícone para mudar as config. do objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:381 +#: src/slic3r/GUI/GUI_ObjectList.cpp:403 msgid "Right button click the icon to change the object printable property" msgstr "" "Clique com o botão direito no ícone para mudar a propriedade de impressão do " "objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:383 +#: src/slic3r/GUI/GUI_ObjectList.cpp:405 msgid "Click the icon to change the object printable property" msgstr "Clique no ícone para mudar a propriedade de impressão do objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:428 src/slic3r/GUI/GUI_ObjectList.cpp:449 -#: src/slic3r/GUI/GUI_ObjectList.cpp:461 src/slic3r/GUI/GUI_ObjectList.cpp:3642 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3652 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3684 src/slic3r/GUI/wxExtensions.cpp:603 -#: src/slic3r/GUI/wxExtensions.cpp:660 src/slic3r/GUI/wxExtensions.cpp:685 -#: src/slic3r/GUI/wxExtensions.cpp:893 +#: src/slic3r/GUI/GUI_ObjectList.cpp:458 src/slic3r/GUI/GUI_ObjectList.cpp:470 +#: src/slic3r/GUI/GUI_ObjectList.cpp:918 src/slic3r/GUI/GUI_ObjectList.cpp:3968 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3978 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4013 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 msgid "default" msgstr "padrão" -#: src/slic3r/GUI/GUI_ObjectList.cpp:433 src/slic3r/GUI/Tab.cpp:1649 -#: src/libslic3r/PrintConfig.cpp:470 -msgid "Extruder" -msgstr "Extrusora" +#: src/slic3r/GUI/GUI_ObjectList.cpp:537 +msgid "Change Extruder" +msgstr "Mudar extrusora" -#: src/slic3r/GUI/GUI_ObjectList.cpp:546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:552 msgid "Rename Object" msgstr "Renomear objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:552 msgid "Rename Sub-object" msgstr "Renomear sub-objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:987 src/slic3r/GUI/GUI_ObjectList.cpp:3464 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1092 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3782 msgid "Instances to Separated Objects" msgstr "Instâncias para separar objetos" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1005 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1107 msgid "Volumes in Object reordered" msgstr "Volume reorganizados no objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1005 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1107 msgid "Object reordered" msgstr "Objeto reorganizado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1060 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1376 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1382 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1623 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1183 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1531 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1537 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1850 #, c-format msgid "Quick Add Settings (%s)" msgstr "Adicionar config. rapidamente (%s)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1137 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1266 msgid "Select showing settings" msgstr "Selecionar config. mostradas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1186 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 msgid "Add Settings for Layers" msgstr "Adicionar config. para camadas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1187 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 msgid "Add Settings for Sub-object" msgstr "Adicionar config. para sub-objetos" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1188 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1317 msgid "Add Settings for Object" msgstr "Adicionar config. para objetos" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1249 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 msgid "Add Settings Bundle for Height range" msgstr "Adicionar pacote de config. para intervalo de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1250 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 msgid "Add Settings Bundle for Sub-object" msgstr "Adicionar pacote de config. para subobjeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1251 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1389 msgid "Add Settings Bundle for Object" msgstr "Adicionar pacote de config. para objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1290 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1428 msgid "Load" msgstr "Carregar" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1295 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1320 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1323 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1433 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1465 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1469 msgid "Box" msgstr "Caixa" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1295 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1433 msgid "Cylinder" msgstr "Cilindro" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1295 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1433 msgid "Sphere" msgstr "Esfera" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1295 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1433 msgid "Slab" msgstr "Placa" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1501 msgid "Height range Modifier" msgstr "Modificador de intervalo de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1355 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1510 msgid "Add settings" msgstr "Adicionar config." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1422 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1590 msgid "Change type" msgstr "Mudar o tipo" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1429 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1577 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1600 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1612 msgid "Set as a Separated Object" msgstr "Configurar como objeto separado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1435 -msgid "Printable" -msgstr "Imprimível" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1442 -msgid "Rename" -msgstr "Renomear" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1453 -msgid "Fix through the Netfabb" -msgstr "Arrumar através do Netfabb" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1463 src/slic3r/GUI/Plater.cpp:3552 -msgid "Export as STL" -msgstr "Exportar como STL" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1470 -msgid "Change extruder" -msgstr "Mudar extrusora" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1489 src/libslic3r/PrintConfig.cpp:309 -msgid "Default" -msgstr "Padrão" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1495 -msgid "Select new extruder for the object/part" -msgstr "Selecionar nova extrusora para objeto/parte" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1507 -msgid "Scale to print volume" -msgstr "Escalar para volume de impressão" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1507 -msgid "Scale the selected object to fit the print volume" -msgstr "Escale o objeto selecionado para se adequar ao volume de impressão" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1577 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1612 msgid "Set as a Separated Objects" msgstr "Definir como objetos separados" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1652 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1622 +msgid "Printable" +msgstr "Imprimível" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1637 +msgid "Rename" +msgstr "Renomear" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1648 +msgid "Fix through the Netfabb" +msgstr "Arrumar através do Netfabb" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1658 src/slic3r/GUI/Plater.cpp:3968 +msgid "Export as STL" +msgstr "Exportar como STL" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1665 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3957 src/slic3r/GUI/Plater.cpp:3936 +msgid "Reload the selected volumes from disk" +msgstr "Recarregue os volumes selecionados do disco" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1672 +msgid "Set extruder for selected items" +msgstr "Definir extrusora para itens selecionados" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1705 src/libslic3r/PrintConfig.cpp:335 +msgid "Default" +msgstr "Padrão" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1725 +msgid "Scale to print volume" +msgstr "Escalar para volume de impressão" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1725 +msgid "Scale the selected object to fit the print volume" +msgstr "Escale o objeto selecionado para se adequar ao volume de impressão" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1794 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2052 +msgid "Add Shape" +msgstr "Adicionar forma" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1880 msgid "Load Part" msgstr "Carregar parte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1687 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1919 msgid "Error!" msgstr "Erro!" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1732 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1994 msgid "Add Generic Subobject" msgstr "Adicionar sub-objeto genérico" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1739 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2023 msgid "Generic" msgstr "Genérico" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1843 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1945 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2243 msgid "Last instance of an object cannot be deleted." msgstr "A última instância de um objeto não pode ser excluída." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1855 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2153 msgid "Delete Settings" msgstr "Deletar config." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2177 msgid "Delete All Instances from Object" msgstr "Excluir todas as instâncias do objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1895 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2193 msgid "Delete Height Range" msgstr "Excluir limite de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1926 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2224 msgid "From Object List You can't delete the last solid part from object." msgstr "" "Na lista de objetos não é possível excluir a última parte sólida do objeto." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1930 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2228 msgid "Delete Subobject" msgstr "Deletar sub-objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1949 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2247 msgid "Delete Instance" msgstr "Deletar instância" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1973 src/slic3r/GUI/Plater.cpp:2838 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2271 src/slic3r/GUI/Plater.cpp:2980 msgid "" "The selected object couldn't be split because it contains only one part." msgstr "O seguinte objeto não pode ser dividido pois contém uma parte." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1977 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2275 msgid "Split to Parts" msgstr "Dividir em partes" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2025 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2329 msgid "Add Layers" msgstr "Adicionar camadas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2150 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2455 msgid "Group manipulation" msgstr "Manipulação de grupos" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2162 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2467 msgid "Object manipulation" msgstr "Manipulação de objetos" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2175 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2480 msgid "Object Settings to modify" msgstr "config. do objeto para modificar" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2179 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2484 msgid "Part Settings to modify" msgstr "config. da parte para modificar" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2184 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2489 msgid "Layer range Settings to modify" msgstr "config. de intervalo de camada para modificar" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2190 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2495 msgid "Part manipulation" msgstr "Manipulação da parte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2196 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2501 msgid "Instance manipulation" msgstr "Manipulação da instância" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2203 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2508 +msgid "Height ranges" +msgstr "Limites de altura" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2508 msgid "Settings for height range" msgstr "config. para intervalo de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2694 msgid "Delete Selected Item" msgstr "Excluir item selecionado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2525 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2831 msgid "Delete Selected" msgstr "Excluir seleção" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2584 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2613 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2631 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2897 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2926 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2944 msgid "Add Height Range" msgstr "Adicionar intervalo de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2690 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3004 msgid "Edit Height Range" msgstr "Editar intervalo de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2974 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3292 msgid "Selection-Remove from list" msgstr "Seleção-Remover da lista" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2982 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3300 msgid "Selection-Add from list" msgstr "Seleção-Adicionar da lista" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3100 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 msgid "Object or Instance" msgstr "Objeto ou instância" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3234 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3419 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3552 msgid "Part" msgstr "Parte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3101 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3419 msgid "Layer" msgstr "Camada" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3103 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 msgid "Unsupported selection" msgstr "Seleção não suportada" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3104 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 #, c-format msgid "You started your selection with %s Item." msgstr "Você iniciou sua seleção com o item de %s." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3105 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3423 #, c-format msgid "In this mode you can select only other %s Items%s" msgstr "Neste modo, você pode selecionar apenas outros %s itens%s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3108 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3426 msgid "of a current Object" msgstr "de um objeto atual" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3113 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3188 src/slic3r/GUI/Plater.cpp:126 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3431 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3506 src/slic3r/GUI/Plater.cpp:141 msgid "Info" msgstr "Informação" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3229 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3547 msgid "You can't change a type of the last solid part of the object." msgstr "Não é possível alterar um tipo da última parte sólida do objeto." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3234 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3552 msgid "Modifier" msgstr "Modificador" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3234 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3552 msgid "Support Enforcer" msgstr "Reforçador de suporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3234 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3552 msgid "Support Blocker" msgstr "Bloqueador de suporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3236 -msgid "Type:" -msgstr "Tipo:" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:3236 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3554 msgid "Select type of part" msgstr "Selecione o tipo de parte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3241 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3559 msgid "Change Part Type" msgstr "Mudar o tipo da parte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3486 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3804 msgid "Enter new name" msgstr "Insira o novo nome" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3486 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3804 msgid "Renaming" msgstr "Renomeando" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3502 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3608 src/slic3r/GUI/Tab.cpp:3618 -#: src/slic3r/GUI/Tab.cpp:3622 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3458 +#: src/slic3r/GUI/Tab.cpp:3462 msgid "The supplied name is not valid;" msgstr "O nome inserido não é valido;" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3503 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3609 src/slic3r/GUI/Tab.cpp:3619 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3821 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3928 src/slic3r/GUI/Tab.cpp:3459 msgid "the following characters are not allowed:" msgstr "os seguintes caracteres não são permitidos:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3632 -msgid "Set extruder for selected items" -msgstr "Definir extrusora para itens selecionados" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:3633 -msgid "Select extruder number for selected objects and/or parts" -msgstr "Selecione o número da extrusora para objetos e/ou peças selecionados" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:3646 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 msgid "Select extruder number:" msgstr "Selecione o número da extrusora:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3647 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3973 msgid "This extruder will be set for selected items" msgstr "Esta extrusora será ajustada para artigos selecionados" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3759 src/slic3r/GUI/Selection.cpp:1473 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3998 +msgid "Change Extruders" +msgstr "Mudar extrusoras" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:4095 src/slic3r/GUI/Selection.cpp:1475 msgid "Set Printable" msgstr "Definir como imprimível" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3759 src/slic3r/GUI/Selection.cpp:1473 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4095 src/slic3r/GUI/Selection.cpp:1475 msgid "Set Unprintable" msgstr "Definir não imprimível" @@ -2045,79 +2883,77 @@ msgid "Select coordinate space, in which the transformation will be performed." msgstr "" "Selecione o espaço de coordenadas, no qual a transformação será executada." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:125 -msgid "Object Manipulation" -msgstr "Manipulação de objeto" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:178 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 msgid "Object name" msgstr "Nome do objeto" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:214 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +msgid "Position" +msgstr "Posição" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 +#: src/slic3r/GUI/Mouse3DController.cpp:271 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +msgid "Rotation" +msgstr "Rotação" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 #, c-format msgid "Toggle %c axis mirroring" msgstr "Ativar espelhamento do eixo %c" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:247 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 msgid "Set Mirror" msgstr "Definir espelhamento" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:287 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:292 -msgid "Reset scale" -msgstr "Restabelecer escala" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 -msgid "Reset rotation" -msgstr "Restabelecer rotação" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:330 -msgid "Reset Rotation" -msgstr "Restabelecer Rotação" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:342 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 msgid "Drop to bed" msgstr "Soltar na mesa" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:390 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:454 -msgid "Position" -msgstr "Posição" +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +msgid "Reset rotation" +msgstr "Restabelecer rotação" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:391 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:455 -msgid "Rotation" -msgstr "Rotação" +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +msgid "Reset Rotation" +msgstr "Restabelecer Rotação" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:456 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +msgid "Reset scale" +msgstr "Restabelecer escala" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 msgid "Scale factors" msgstr "Fatores de escala" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:513 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 msgid "Translate" msgstr "Tradução" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:565 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 msgid "" "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "" "Não é possível usar o modo de dimensionamento não uniforme para vários " "objetos/seleção de peças" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:735 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 msgid "Set Position" msgstr "Definir posição" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:766 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 msgid "Set Orientation" msgstr "Definir orientação" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:831 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 msgid "Set Scale" msgstr "Definir escala" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:915 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 msgid "" "The currently manipulated object is tilted (rotation angles are not " "multiples of 90°).\n" @@ -2131,7 +2967,7 @@ msgstr "" "sistema de coordenadas do mundo,\n" "uma vez que a rotação é incorporada nas coordenadas do objeto." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:918 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 msgid "" "This operation is irreversible.\n" "Do you want to proceed?" @@ -2152,387 +2988,491 @@ msgstr "Remover parâmetro" msgid "Delete Option %s" msgstr "Excluir opção %s" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:146 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 #, c-format msgid "Change Option %s" msgstr "Alterar opção %s" -#: src/slic3r/GUI/GUI_Preview.cpp:217 +#: src/slic3r/GUI/GUI_Preview.cpp:218 msgid "View" msgstr "Vista" -#: src/slic3r/GUI/GUI_Preview.cpp:220 src/slic3r/GUI/GUI_Preview.cpp:569 -#: src/libslic3r/GCode/PreviewData.cpp:378 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 +#: src/libslic3r/GCode/PreviewData.cpp:345 msgid "Feature type" msgstr "Tipo de recurso" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/libslic3r/PrintConfig.cpp:483 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 msgid "Height" msgstr "Altura" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:2188 +#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 msgid "Width" msgstr "Espessura" -#: src/slic3r/GUI/GUI_Preview.cpp:224 +#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1456 +msgid "Fan speed" +msgstr "Velocidade do ventoinha" + +#: src/slic3r/GUI/GUI_Preview.cpp:226 msgid "Volumetric flow rate" msgstr "Taxa de fluxo volumétrico" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/GUI_Preview.cpp:333 -#: src/slic3r/GUI/GUI_Preview.cpp:515 src/slic3r/GUI/GUI_Preview.cpp:568 -#: src/slic3r/GUI/GUI_Preview.cpp:774 src/libslic3r/GCode/PreviewData.cpp:388 +#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 +#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 msgid "Tool" msgstr "Ferramenta" -#: src/slic3r/GUI/GUI_Preview.cpp:226 src/slic3r/GUI/GUI_Preview.cpp:566 -#: src/libslic3r/GCode/PreviewData.cpp:390 +#: src/slic3r/GUI/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 +#: src/libslic3r/GCode/PreviewData.cpp:359 msgid "Color Print" msgstr "Impressão colorida" -#: src/slic3r/GUI/GUI_Preview.cpp:229 +#: src/slic3r/GUI/GUI_Preview.cpp:231 msgid "Show" msgstr "Mostrar" -#: src/slic3r/GUI/GUI_Preview.cpp:232 src/slic3r/GUI/GUI_Preview.cpp:233 +#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 msgid "Feature types" msgstr "Tipos de características" -#: src/slic3r/GUI/GUI_Preview.cpp:235 src/libslic3r/GCode/PreviewData.cpp:147 +#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 msgid "Perimeter" msgstr "Perímetro" -#: src/slic3r/GUI/GUI_Preview.cpp:236 src/libslic3r/GCode/PreviewData.cpp:148 +#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 msgid "External perimeter" msgstr "Perímetro externo" -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/GCode/PreviewData.cpp:149 +#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 msgid "Overhang perimeter" msgstr "Perímetro de angulação" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/GCode/PreviewData.cpp:150 +#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 msgid "Internal infill" msgstr "Preenchimento interno" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/PrintConfig.cpp:1736 -#: src/libslic3r/PrintConfig.cpp:1746 src/libslic3r/GCode/PreviewData.cpp:151 +#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 msgid "Solid infill" msgstr "Preenchimento sólido" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/PrintConfig.cpp:2068 -#: src/libslic3r/PrintConfig.cpp:2079 src/libslic3r/GCode/PreviewData.cpp:152 +#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 msgid "Top solid infill" msgstr "Preenchimento do sólido do topo" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/GCode/PreviewData.cpp:153 +#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 msgid "Bridge infill" msgstr "Preenchimento de pontes" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/GCode/PreviewData.cpp:154 +#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/PrintConfig.cpp:918 msgid "Gap fill" msgstr "Preenchimento de vão" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/slic3r/GUI/Tab.cpp:1085 -#: src/libslic3r/GCode/PreviewData.cpp:155 +#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1110 +#: src/libslic3r/ExtrusionEntity.cpp:318 msgid "Skirt" msgstr "Saia" -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/libslic3r/PrintConfig.cpp:1954 -#: src/libslic3r/GCode/PreviewData.cpp:157 +#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 +#: src/libslic3r/PrintConfig.cpp:1991 msgid "Support material interface" msgstr "Interface do material de suporte" -#: src/slic3r/GUI/GUI_Preview.cpp:246 src/slic3r/GUI/Tab.cpp:1165 -#: src/libslic3r/GCode/PreviewData.cpp:158 +#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1190 +#: src/libslic3r/ExtrusionEntity.cpp:321 msgid "Wipe tower" msgstr "Torre de limpeza" -#: src/slic3r/GUI/GUI_Preview.cpp:251 src/libslic3r/PrintConfig.cpp:2102 +#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 msgid "Travel" msgstr "Viagem" -#: src/slic3r/GUI/GUI_Preview.cpp:252 +#: src/slic3r/GUI/GUI_Preview.cpp:254 msgid "Retractions" msgstr "Retrações" -#: src/slic3r/GUI/GUI_Preview.cpp:253 +#: src/slic3r/GUI/GUI_Preview.cpp:255 msgid "Unretractions" msgstr "Retorno da retração" -#: src/slic3r/GUI/GUI_Preview.cpp:254 +#: src/slic3r/GUI/GUI_Preview.cpp:256 msgid "Shells" msgstr "Paredes" -#: src/slic3r/GUI/GUI_Preview.cpp:255 +#: src/slic3r/GUI/GUI_Preview.cpp:257 msgid "Legend" msgstr "Legenda" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:14 src/slic3r/GUI/MainFrame.cpp:683 +#: src/slic3r/GUI/Job.hpp:123 +msgid "ERROR: not enough resources to execute a new job." +msgstr "ERRO: não há recursos suficientes para executar um novo trabalho." + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:719 msgid "Keyboard Shortcuts" msgstr "Atalhos do teclado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 -msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" -msgstr "Abra o projeto STL/OBJ/AMF/3MF com config., excluir mesa" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 -msgid "Import STL/OBJ/AMF/3MF without config, keep bed" -msgstr "Importação STL/OBJ/AMF/3MF sem config., manter a mesa" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 -msgid "Load Config from .ini/amf/3mf/gcode" -msgstr "Carregar config. de um .ini/AMF/3mf/Gcode" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 src/slic3r/GUI/Plater.cpp:837 -#: src/slic3r/GUI/Plater.cpp:4822 src/libslic3r/PrintConfig.cpp:3163 -msgid "Export G-code" -msgstr "Exportar G-code" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 -msgid "Save project (3MF)" -msgstr "Salvar projeto (3MF)" - #: src/slic3r/GUI/KBShortcutsDialog.cpp:112 -msgid "Load Config from .ini/amf/3mf/gcode and merge" -msgstr "Carregar config. de um. ini/AMF/3mf/Gcode e mesclar" +msgid "New project, clear plater" +msgstr "Novo projeto, limpar a bandeja" #: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" +msgstr "Abra o projeto STL/OBJ/AMF/3MF com config, clear plater" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +msgid "Save project (3mf)" +msgstr "Salvar projeto (3MF)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +msgid "Save project as (3mf)" +msgstr "Salvar projeto como (3mf)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 msgid "(Re)slice" msgstr "(Re)fatiar" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 -msgid "Select Plater Tab" -msgstr "Selecione a guia de prato" - #: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +msgid "Import STL/OBJ/AMF/3MF without config, keep plater" +msgstr "Importar STL/OBJ/AMF/3MF sem config, manter bandeja" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +msgid "Import Config from ini/amf/3mf/gcode" +msgstr "Config importação de ini/amf/3mf/gcode" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +msgid "Load Config from ini/amf/3mf/gcode and merge" +msgstr "Carregar config. de um. ini/AMF/3mf/Gcode e mesclar" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 +#: src/slic3r/GUI/Plater.cpp:5522 src/libslic3r/PrintConfig.cpp:3363 +msgid "Export G-code" +msgstr "Exportar G-code" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5523 +msgid "Send G-code" +msgstr "Enviar G-code" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +msgid "Export config" +msgstr "Exportar config." + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +msgid "Select all objects" +msgstr "Selecionar todos os objetos" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +msgid "Deselect all" +msgstr "Desmarcar todos" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +msgid "Delete selected" +msgstr "Deletar seleção" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +msgid "Copy to clipboard" +msgstr "Copiar para a área de transferência" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +msgid "Paste from clipboard" +msgstr "Colar da área de transferência" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +msgid "Reload plater from disk" +msgstr "Recarregar bandeja do disco" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +msgid "Select Plater Tab" +msgstr "Selecione a guia de bandeja" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Select Print Settings Tab" msgstr "Selecione a guia config. de impressão" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 msgid "Select Filament Settings Tab" msgstr "Selecione a guia config. de filamento" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 msgid "Select Printer Settings Tab" msgstr "Selecione a guia config. da impressora" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Switch to 3D" msgstr "Mude para 3D" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Switch to Preview" msgstr "Mudar para pré-visualização" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Preferences.cpp:10 -msgid "Preferences" -msgstr "Preferências" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "Fila de carregamento do host de impressão" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 msgid "Camera view" msgstr "Vista da câmera" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 -msgid "Add Instance of the selected object" -msgstr "Adicionar instância do objeto selecionado" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +msgid "Show/Hide object/instance labels" +msgstr "Mostrar/Ocultar rótulos de objeto/instância" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 -msgid "Remove Instance of the selected object" -msgstr "Remover instância do objeto selecionado" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +msgid "Preferences" +msgstr "Preferências" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 msgid "Show keyboard shortcuts list" msgstr "Mostrar lista dos atalhos no teclado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 -msgid "Press to select multiple object or move multiple object with mouse" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +msgid "Commands" +msgstr "Comandos" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +msgid "Add Instance of the selected object" +msgstr "Adicionar instância do objeto selecionado" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +msgid "Remove Instance of the selected object" +msgstr "Remover instância do objeto selecionado" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +msgid "" +"Press to select multiple objects\n" +"or move multiple objects with mouse" msgstr "" "Aperte para selecionar múltiplos objetos ou mover múltiplos objetos com o " "mouse" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:131 -msgid "Main Shortcuts" -msgstr "Atalhos principais" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +msgid "Press to activate selection rectangle" +msgstr "Pressione para ativar o retângulo de seleção" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 -msgid "Select All objects" -msgstr "Selecionar todos os objetos" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +msgid "Press to activate deselection rectangle" +msgstr "Pressione para ativar o retângulo de desseleção" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 -msgid "Delete selected" -msgstr "Deletar seleção" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 -msgid "Delete All" -msgstr "Deletar todos" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 -msgid "Copy to clipboard" -msgstr "Copiar para a área de transferência" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 -msgid "Paste from clipboard" -msgstr "Colar da área de transferência" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 -msgid "Gizmo move" -msgstr "Gizmo-Mover" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 -msgid "Gizmo scale" -msgstr "Gizmo-Escala" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 -msgid "Gizmo rotate" -msgstr "Gizmo-Rotacionar" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 -msgid "Gizmo cut" -msgstr "Gizmo-Cortar" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 -msgid "Gizmo Place face on bed" -msgstr "Colocar face do Gizmo na mesa" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 -msgid "Gizmo SLA support points" -msgstr "Pontos de suporte do Gizmo SLA" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:150 -#, c-format -msgid "" -"Press to activate selection rectangle\n" -"or to snap by 5% in Gizmo scale\n" -"or to snap by 1mm in Gizmo move" -msgstr "" -"Pressione para ativar o retângulo de seleção\n" -"ou para encaixar em 5% i na escala Gizmo\n" -"ou para encaixar por 1mm em Gizmo mover" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 -msgid "" -"Press to scale selection to fit print volume\n" -"in Gizmo scale" -msgstr "" -"Pressione para dimensionar a seleção ao volume de impressão\n" -"na escala Gizmo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:152 -msgid "" -"Press to activate deselection rectangle\n" -"or to scale or rotate selected objects\n" -"around their own center" -msgstr "" -"Pressione para ativar o retângulo de deseleção\n" -"ou para dimensionar ou girar objetos selecionados\n" -"em torno de seu próprio centro" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "Pressione para ativar um dimensionamento de direção na escala Gizmo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 -msgid "Change camera type (perspective, orthographic)" -msgstr "Alterar tipo de câmera (perspectiva, ortográfica)" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Zoom to Bed" -msgstr "Ampliar para a mesa" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Zoom to all objects in scene, if none selected" -msgstr "Ampliar para todos os objetos na cena, se nenhum selecionado" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 -msgid "Zoom to selected object" -msgstr "Ampliar para o objeto selecionado" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 -msgid "Zoom in" -msgstr "Ampliar" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 -msgid "Zoom out" -msgstr "Dimiuir" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 -msgid "Unselect gizmo / Clear selection" -msgstr "Desmarcar Gizmo/limpar seleção" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -msgid "Plater Shortcuts" -msgstr "Atalhos do prato" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:193 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 msgid "Arrow Up" msgstr "Seta para cima" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 -msgid "Upper Layer" -msgstr "Camada superior" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +msgid "Move selection 10 mm in positive Y direction" +msgstr "Mover seleção 10 mm na direção Y positiva" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:194 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Down" msgstr "Seta para baixo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 -msgid "Lower Layer" -msgstr "Camada inferior" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +msgid "Move selection 10 mm in negative Y direction" +msgstr "Mover seleção 10 mm na direção Y negativa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 -msgid "Show/Hide (L)egend" -msgstr "Mostrar/ocultar (L) egenda" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:187 -msgid "Preview Shortcuts" -msgstr "Atalhos de visualização" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:193 -msgid "Move current slider thumb Up" -msgstr "Mover a barra de rolagem para cima" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:194 -msgid "Move current slider thumb Down" -msgstr "Mover a barra de rolagem para baixo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Left" msgstr "Seta esquerda" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -msgid "Set upper thumb to current slider thumb" -msgstr "Definir o polegar superior para o polegar deslizante atual" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +msgid "Move selection 10 mm in negative X direction" +msgstr "Mover seleção 10 mm na direção X negativa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Arrow Right" msgstr "Seta direita" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +msgid "Move selection 10 mm in positive X direction" +msgstr "Mover seleção 10 mm na direção X positiva" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +msgid "Any arrow" +msgstr "Qualquer flecha" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +msgid "Movement step set to 1 mm" +msgstr "Passo de movimento definido para 1 mm" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +msgid "Movement in camera space" +msgstr "Movimento no espaço da câmera" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +msgid "Page Up" +msgstr "Page Up" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +msgid "Rotate selection 45 degrees CCW" +msgstr "Seleção rotatura 45 graus CCW" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +msgid "Page Down" +msgstr "Page Down" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +msgid "Rotate selection 45 degrees CW" +msgstr "Seleção de rotação 45 graus CW" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +msgid "Gizmo move" +msgstr "Gizmo-Mover" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +msgid "Gizmo scale" +msgstr "Gizmo-Escala" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +msgid "Gizmo rotate" +msgstr "Gizmo-Rotacionar" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +msgid "Gizmo cut" +msgstr "Gizmo-Cortar" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +msgid "Gizmo Place face on bed" +msgstr "Colocar face do Gizmo na mesa" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +msgid "Gizmo SLA hollow" +msgstr "Gizmo de SLA ligado" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +msgid "Gizmo SLA support points" +msgstr "Pontos de suporte do Gizmo SLA" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Unselect gizmo or clear selection" +msgstr "Desmarcar Gizmo/limpar seleção" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Change camera type (perspective, orthographic)" +msgstr "Alterar tipo de câmera (perspectiva, ortográfica)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +msgid "Zoom to Bed" +msgstr "Ampliar para a mesa" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +msgid "" +"Zoom to selected object\n" +"or all objects in scene, if none selected" +msgstr "" +"Zoom para objeto selecionado\n" +"ou todos os objetos em cena, se nenhum selecionado" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +msgid "Zoom in" +msgstr "Ampliar" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +msgid "Zoom out" +msgstr "Dimiuir" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Mostrar/Ocultar a caixa de configurações de dispositivos 3Dconnexion" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:214 +msgid "Plater" +msgstr "Bandeja" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 +#, no-c-format +msgid "" +"Press to snap by 5% in Gizmo scale\n" +"or to snap by 1mm in Gizmo move" +msgstr "" +"Pressione para estalar 5% na escala Gizmo\n" +"ou para estalar por 1mm no movimento Gizmo" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:196 +msgid "" +"Scale selection to fit print volume\n" +"in Gizmo scale" +msgstr "" +"Seleção de escala para caber volume de impressão\n" +"na escala Gizmo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "Press to activate one direction scaling in Gizmo scale" +msgstr "Pressione para ativar um dimensionamento de direção na escala Gizmo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "" +"Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\n" +"selected objects around their own center" +msgstr "" +"Pressione para escalar (na escala de Gizmo) ou girar (em Gizmo girar)\n" +"objetos selecionados em torno de seu próprio centro" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmos" +msgstr "Aparelhos" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +msgid "Upper Layer" +msgstr "Camada superior" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +msgid "Lower Layer" +msgstr "Camada inferior" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 +msgid "Show/Hide Legend" +msgstr "Ligar/Desligar Legenda" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4107 +#: src/slic3r/GUI/Tab.cpp:2392 +msgid "Preview" +msgstr "Visualização" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +msgid "Move current slider thumb Up" +msgstr "Mover a barra de rolagem para cima" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +msgid "Move current slider thumb Down" +msgstr "Mover a barra de rolagem para baixo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Set upper thumb to current slider thumb" +msgstr "Definir o polegar superior para o polegar deslizante atual" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set lower thumb to current slider thumb" msgstr "Definir o polegar inferior para o polegar deslizante atual" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Add color change marker for current layer" msgstr "Adicionar mudança de cor para a camada atual" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Delete color change marker for current layer" msgstr "Excluir mudança de cor para a camada atual" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 -msgid "Layers Slider Shortcuts" -msgstr "Atalhos da barra de rolagem de camadas" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +msgid "Layers Slider" +msgstr "Controle deslizante de camadas" -#: src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +msgid "Keyboard shortcuts" +msgstr "Atalhos do teclado" + +#: src/slic3r/GUI/MainFrame.cpp:66 msgid "" " - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/" "releases" @@ -2540,571 +3480,616 @@ msgstr "" " - Lembre-se de verificar por atualizações em http://github.com/prusa3d/" "PrusaSlicer/releases" -#: src/slic3r/GUI/MainFrame.cpp:159 +#: src/slic3r/GUI/MainFrame.cpp:184 msgid "based on Slic3r" msgstr "baseado no Slic3r" -#: src/slic3r/GUI/MainFrame.cpp:189 -msgid "Plater" -msgstr "Prato" - -#: src/slic3r/GUI/MainFrame.cpp:400 +#: src/slic3r/GUI/MainFrame.cpp:415 msgid "&New Project" msgstr "&Novo projeto" -#: src/slic3r/GUI/MainFrame.cpp:400 +#: src/slic3r/GUI/MainFrame.cpp:415 msgid "Start a new project" msgstr "Começar um novo projeto" -#: src/slic3r/GUI/MainFrame.cpp:403 +#: src/slic3r/GUI/MainFrame.cpp:418 msgid "&Open Project" msgstr "&Abrir projeto" -#: src/slic3r/GUI/MainFrame.cpp:403 +#: src/slic3r/GUI/MainFrame.cpp:418 msgid "Open a project file" msgstr "Abrir novo projeto" -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:423 msgid "Recent projects" msgstr "Projetos recentes" -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "The selected project is no more available" -msgstr "O projeto selecionado não está mais disponível" +#: src/slic3r/GUI/MainFrame.cpp:432 +msgid "" +"The selected project is no longer available.\n" +"Do you want to remove it from the recent projects list ?" +msgstr "" +"O projeto selecionado não está mais disponível.\n" +"Você quer removê-lo da lista de projetos recentes?" -#: src/slic3r/GUI/MainFrame.cpp:417 src/slic3r/GUI/MainFrame.cpp:755 +#: src/slic3r/GUI/MainFrame.cpp:432 src/slic3r/GUI/MainFrame.cpp:796 #: src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Error" msgstr "Erro" -#: src/slic3r/GUI/MainFrame.cpp:441 +#: src/slic3r/GUI/MainFrame.cpp:457 msgid "&Save Project" msgstr "&Salvar projeto" -#: src/slic3r/GUI/MainFrame.cpp:441 +#: src/slic3r/GUI/MainFrame.cpp:457 msgid "Save current project file" msgstr "Salvar arquivo" -#: src/slic3r/GUI/MainFrame.cpp:445 src/slic3r/GUI/MainFrame.cpp:447 +#: src/slic3r/GUI/MainFrame.cpp:461 src/slic3r/GUI/MainFrame.cpp:463 msgid "Save Project &as" msgstr "Salvar projeto &como" -#: src/slic3r/GUI/MainFrame.cpp:445 src/slic3r/GUI/MainFrame.cpp:447 +#: src/slic3r/GUI/MainFrame.cpp:461 src/slic3r/GUI/MainFrame.cpp:463 msgid "Save current project file as" msgstr "Salvar arquivo atual como" -#: src/slic3r/GUI/MainFrame.cpp:455 +#: src/slic3r/GUI/MainFrame.cpp:471 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Import STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/MainFrame.cpp:455 +#: src/slic3r/GUI/MainFrame.cpp:471 msgid "Load a model" msgstr "Carregar um modelo" -#: src/slic3r/GUI/MainFrame.cpp:459 +#: src/slic3r/GUI/MainFrame.cpp:475 msgid "Import &Config" msgstr "Importar &config." -#: src/slic3r/GUI/MainFrame.cpp:459 +#: src/slic3r/GUI/MainFrame.cpp:475 msgid "Load exported configuration file" msgstr "Carregar config. de arquivo exportado" -#: src/slic3r/GUI/MainFrame.cpp:461 +#: src/slic3r/GUI/MainFrame.cpp:478 msgid "Import Config from &project" msgstr "Importar Config do &projeto" -#: src/slic3r/GUI/MainFrame.cpp:461 +#: src/slic3r/GUI/MainFrame.cpp:478 msgid "Load configuration from project file" msgstr "Carregar config. de arquivo de projeto" -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:482 msgid "Import Config &Bundle" msgstr "Importar coleção &de config." -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:482 msgid "Load presets from a bundle" msgstr "Carregar predefinições de um pacote" -#: src/slic3r/GUI/MainFrame.cpp:466 +#: src/slic3r/GUI/MainFrame.cpp:485 msgid "&Import" msgstr "&Importar" -#: src/slic3r/GUI/MainFrame.cpp:469 src/slic3r/GUI/MainFrame.cpp:719 +#: src/slic3r/GUI/MainFrame.cpp:488 src/slic3r/GUI/MainFrame.cpp:760 msgid "Export &G-code" msgstr "Exportar &G-code" -#: src/slic3r/GUI/MainFrame.cpp:469 +#: src/slic3r/GUI/MainFrame.cpp:488 msgid "Export current plate as G-code" -msgstr "Exporte o prato atual como o G-code" +msgstr "Exporte a bandeja atual como o G-code" -#: src/slic3r/GUI/MainFrame.cpp:473 src/slic3r/GUI/MainFrame.cpp:720 +#: src/slic3r/GUI/MainFrame.cpp:492 src/slic3r/GUI/MainFrame.cpp:761 msgid "S&end G-code" msgstr "E&nviar G-code" -#: src/slic3r/GUI/MainFrame.cpp:473 +#: src/slic3r/GUI/MainFrame.cpp:492 msgid "Send to print current plate as G-code" -msgstr "Enviar para imprimir prato atual como G-code" +msgstr "Enviar para imprimir a bandeja atual como G-code" -#: src/slic3r/GUI/MainFrame.cpp:478 +#: src/slic3r/GUI/MainFrame.cpp:497 msgid "Export plate as &STL" -msgstr "Exportar prato como &STL" +msgstr "Exportar bandeja como &STL" -#: src/slic3r/GUI/MainFrame.cpp:478 +#: src/slic3r/GUI/MainFrame.cpp:497 msgid "Export current plate as STL" -msgstr "Exporte o prato atual como STL" +msgstr "Exporte a bandeja atual como STL" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:500 msgid "Export plate as STL &including supports" -msgstr "Exportar prato como STL &incluindo suportes" +msgstr "Exportar bandeja como STL &incluindo suportes" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:500 msgid "Export current plate as STL including supports" -msgstr "Exporte o prato atual como o STL que inclui suportes" +msgstr "Exporte a bandeja atual como o STL que inclui suportes" -#: src/slic3r/GUI/MainFrame.cpp:484 +#: src/slic3r/GUI/MainFrame.cpp:503 msgid "Export plate as &AMF" -msgstr "Exportar prato como &AMF" +msgstr "Exportar bandeja como &AMF" -#: src/slic3r/GUI/MainFrame.cpp:484 +#: src/slic3r/GUI/MainFrame.cpp:503 msgid "Export current plate as AMF" -msgstr "Exporte o prato atual como o AMF" +msgstr "Exporte a bandeja atual como o AMF" -#: src/slic3r/GUI/MainFrame.cpp:488 +#: src/slic3r/GUI/MainFrame.cpp:507 msgid "Export &toolpaths as OBJ" msgstr "Exportar &percurso da ferramenta como OBJ" -#: src/slic3r/GUI/MainFrame.cpp:488 +#: src/slic3r/GUI/MainFrame.cpp:507 msgid "Export toolpaths as OBJ" msgstr "Exportar percursos como OBJ" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:511 msgid "Export &Config" msgstr "Exportar &config." -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:511 msgid "Export current configuration to file" msgstr "Exporte a config. atual para o arquivo" -#: src/slic3r/GUI/MainFrame.cpp:494 +#: src/slic3r/GUI/MainFrame.cpp:514 msgid "Export Config &Bundle" msgstr "Exportar coleção &de config." -#: src/slic3r/GUI/MainFrame.cpp:494 +#: src/slic3r/GUI/MainFrame.cpp:514 msgid "Export all presets to file" msgstr "Exporte todas as predefinições para o arquivo" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:517 msgid "&Export" msgstr "&Exportar" -#: src/slic3r/GUI/MainFrame.cpp:502 +#: src/slic3r/GUI/MainFrame.cpp:523 msgid "Quick Slice" msgstr "Fatiamento rápido" -#: src/slic3r/GUI/MainFrame.cpp:502 +#: src/slic3r/GUI/MainFrame.cpp:523 msgid "Slice a file into a G-code" msgstr "Fatiar um arquivo em um G-code" -#: src/slic3r/GUI/MainFrame.cpp:508 +#: src/slic3r/GUI/MainFrame.cpp:529 msgid "Quick Slice and Save As" msgstr "Salvamento rápido e salvar como" -#: src/slic3r/GUI/MainFrame.cpp:508 +#: src/slic3r/GUI/MainFrame.cpp:529 msgid "Slice a file into a G-code, save as" msgstr "Fatiar um arquivo em um G-code, salvar como" -#: src/slic3r/GUI/MainFrame.cpp:514 +#: src/slic3r/GUI/MainFrame.cpp:535 msgid "Repeat Last Quick Slice" msgstr "Repetir Último Fatiamento Rápido" -#: src/slic3r/GUI/MainFrame.cpp:514 +#: src/slic3r/GUI/MainFrame.cpp:535 msgid "Repeat last quick slice" msgstr "Repetir último fatiamento rápido" -#: src/slic3r/GUI/MainFrame.cpp:522 +#: src/slic3r/GUI/MainFrame.cpp:543 msgid "(Re)Slice No&w" msgstr "(Re)Fatiar ago&ra" -#: src/slic3r/GUI/MainFrame.cpp:522 +#: src/slic3r/GUI/MainFrame.cpp:543 msgid "Start new slicing process" msgstr "Começar novo processo de fatiamento" -#: src/slic3r/GUI/MainFrame.cpp:526 +#: src/slic3r/GUI/MainFrame.cpp:547 msgid "&Repair STL file" msgstr "&Reparar arquivo STL" -#: src/slic3r/GUI/MainFrame.cpp:526 +#: src/slic3r/GUI/MainFrame.cpp:547 msgid "Automatically repair an STL file" msgstr "Reparar automaticamente um arquivo STL" -#: src/slic3r/GUI/MainFrame.cpp:529 +#: src/slic3r/GUI/MainFrame.cpp:551 msgid "&Quit" msgstr "&Sair" -#: src/slic3r/GUI/MainFrame.cpp:529 +#: src/slic3r/GUI/MainFrame.cpp:551 #, c-format msgid "Quit %s" msgstr "Sair %s" -#: src/slic3r/GUI/MainFrame.cpp:554 +#: src/slic3r/GUI/MainFrame.cpp:576 msgid "&Select all" msgstr "&Selecionar todos" -#: src/slic3r/GUI/MainFrame.cpp:555 +#: src/slic3r/GUI/MainFrame.cpp:577 msgid "Selects all objects" msgstr "Selecionar todos os objetos" -#: src/slic3r/GUI/MainFrame.cpp:557 +#: src/slic3r/GUI/MainFrame.cpp:579 msgid "D&eselect all" msgstr "D&eselecionar todos" -#: src/slic3r/GUI/MainFrame.cpp:558 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid "Deselects all objects" msgstr "Deselecionar todos os objetos" -#: src/slic3r/GUI/MainFrame.cpp:561 +#: src/slic3r/GUI/MainFrame.cpp:583 msgid "&Delete selected" msgstr "&Excluir seleção" -#: src/slic3r/GUI/MainFrame.cpp:562 +#: src/slic3r/GUI/MainFrame.cpp:584 msgid "Deletes the current selection" msgstr "Excluir a seleção atual" -#: src/slic3r/GUI/MainFrame.cpp:564 +#: src/slic3r/GUI/MainFrame.cpp:586 msgid "Delete &all" msgstr "Excluir &todos" -#: src/slic3r/GUI/MainFrame.cpp:565 +#: src/slic3r/GUI/MainFrame.cpp:587 msgid "Deletes all objects" msgstr "Excluir todos os objetos" -#: src/slic3r/GUI/MainFrame.cpp:569 +#: src/slic3r/GUI/MainFrame.cpp:591 msgid "&Undo" msgstr "&Desfazer" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:594 msgid "&Redo" msgstr "&Refazer" -#: src/slic3r/GUI/MainFrame.cpp:577 +#: src/slic3r/GUI/MainFrame.cpp:599 msgid "&Copy" msgstr "&Copiar" -#: src/slic3r/GUI/MainFrame.cpp:578 +#: src/slic3r/GUI/MainFrame.cpp:600 msgid "Copy selection to clipboard" msgstr "Copiar seleção para a área de transferência" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:602 msgid "&Paste" msgstr "&Colar" -#: src/slic3r/GUI/MainFrame.cpp:581 +#: src/slic3r/GUI/MainFrame.cpp:603 msgid "Paste clipboard" msgstr "Colar área de transferência" -#: src/slic3r/GUI/MainFrame.cpp:590 +#: src/slic3r/GUI/MainFrame.cpp:607 +msgid "Re&load from disk" +msgstr "Re&load do disco" + +#: src/slic3r/GUI/MainFrame.cpp:608 +msgid "Reload the plater from disk" +msgstr "Recarregar a bendeja do disco" + +#: src/slic3r/GUI/MainFrame.cpp:617 msgid "&Plater Tab" -msgstr "&Prato" +msgstr "&Bandeja" -#: src/slic3r/GUI/MainFrame.cpp:590 +#: src/slic3r/GUI/MainFrame.cpp:617 msgid "Show the plater" -msgstr "Mostrar o prato" +msgstr "Mostrar a bandeja" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:625 msgid "P&rint Settings Tab" msgstr "C&onfig. de impressão" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:625 msgid "Show the print settings" msgstr "Mostrar as config. de impressão" -#: src/slic3r/GUI/MainFrame.cpp:599 src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:628 src/slic3r/GUI/MainFrame.cpp:763 msgid "&Filament Settings Tab" msgstr "&config. de filamentos" -#: src/slic3r/GUI/MainFrame.cpp:599 +#: src/slic3r/GUI/MainFrame.cpp:628 msgid "Show the filament settings" msgstr "Mostrar as config. de filamento" -#: src/slic3r/GUI/MainFrame.cpp:602 +#: src/slic3r/GUI/MainFrame.cpp:632 msgid "Print&er Settings Tab" msgstr "A&ba de config. da impressora" -#: src/slic3r/GUI/MainFrame.cpp:602 +#: src/slic3r/GUI/MainFrame.cpp:632 msgid "Show the printer settings" msgstr "Mostrar as config. da impressora" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:637 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:637 msgid "Show the 3D editing view" msgstr "Mostrar a vista de edição 3D" -#: src/slic3r/GUI/MainFrame.cpp:609 +#: src/slic3r/GUI/MainFrame.cpp:640 msgid "Pre&view" msgstr "Pre&visualização" -#: src/slic3r/GUI/MainFrame.cpp:609 +#: src/slic3r/GUI/MainFrame.cpp:640 msgid "Show the 3D slices preview" msgstr "Mostrar a pré-visualização do fatiamento 3D" -#: src/slic3r/GUI/MainFrame.cpp:628 +#: src/slic3r/GUI/MainFrame.cpp:659 msgid "Print &Host Upload Queue" msgstr "Imprimir &Fila de upload do Host" -#: src/slic3r/GUI/MainFrame.cpp:628 +#: src/slic3r/GUI/MainFrame.cpp:659 msgid "Display the Print Host Upload Queue window" msgstr "Exibir a janela fila de upload do host de impressão" -#: src/slic3r/GUI/MainFrame.cpp:637 +#: src/slic3r/GUI/MainFrame.cpp:669 msgid "Iso" msgstr "Isométrico" -#: src/slic3r/GUI/MainFrame.cpp:637 +#: src/slic3r/GUI/MainFrame.cpp:669 msgid "Iso View" msgstr "Vista isométrica" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:641 src/libslic3r/PrintConfig.cpp:2094 +#: src/slic3r/GUI/MainFrame.cpp:673 src/libslic3r/PrintConfig.cpp:2132 +#: src/libslic3r/PrintConfig.cpp:2141 msgid "Top" msgstr "Topo" -#: src/slic3r/GUI/MainFrame.cpp:641 +#: src/slic3r/GUI/MainFrame.cpp:673 msgid "Top View" msgstr "Vista do topo" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" -#: src/slic3r/GUI/MainFrame.cpp:644 src/libslic3r/PrintConfig.cpp:159 +#. TRN To be shown in Print Settings "Top solid layers" +#: src/slic3r/GUI/MainFrame.cpp:676 src/libslic3r/PrintConfig.cpp:174 +#: src/libslic3r/PrintConfig.cpp:183 msgid "Bottom" msgstr "Base" -#: src/slic3r/GUI/MainFrame.cpp:644 +#: src/slic3r/GUI/MainFrame.cpp:676 msgid "Bottom View" msgstr "Vista da base" -#: src/slic3r/GUI/MainFrame.cpp:646 +#: src/slic3r/GUI/MainFrame.cpp:678 msgid "Front" msgstr "Frente" -#: src/slic3r/GUI/MainFrame.cpp:646 +#: src/slic3r/GUI/MainFrame.cpp:678 msgid "Front View" msgstr "Vista da frente" -#: src/slic3r/GUI/MainFrame.cpp:648 src/libslic3r/PrintConfig.cpp:1611 +#: src/slic3r/GUI/MainFrame.cpp:680 src/libslic3r/PrintConfig.cpp:1632 msgid "Rear" msgstr "Traseira" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/MainFrame.cpp:680 msgid "Rear View" msgstr "Vista traseira" -#: src/slic3r/GUI/MainFrame.cpp:650 +#: src/slic3r/GUI/MainFrame.cpp:682 msgid "Left" msgstr "Esquerda" -#: src/slic3r/GUI/MainFrame.cpp:650 +#: src/slic3r/GUI/MainFrame.cpp:682 msgid "Left View" msgstr "Vista esquerda" -#: src/slic3r/GUI/MainFrame.cpp:652 +#: src/slic3r/GUI/MainFrame.cpp:684 msgid "Right" msgstr "Direita" -#: src/slic3r/GUI/MainFrame.cpp:652 +#: src/slic3r/GUI/MainFrame.cpp:684 msgid "Right View" msgstr "Vista direita" -#: src/slic3r/GUI/MainFrame.cpp:659 +#: src/slic3r/GUI/MainFrame.cpp:687 +msgid "Show &labels" +msgstr "Mostrar &rótulos" + +#: src/slic3r/GUI/MainFrame.cpp:687 +msgid "Show object/instance labels in 3D scene" +msgstr "Mostrar rótulos de objeto/instância em cena 3D" + +#: src/slic3r/GUI/MainFrame.cpp:695 msgid "Prusa 3D &Drivers" msgstr "Drivers 3D &Prusa" -#: src/slic3r/GUI/MainFrame.cpp:659 +#: src/slic3r/GUI/MainFrame.cpp:695 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Abrir a página para baixar os drivers da Prusa3D no seu navegador" -#: src/slic3r/GUI/MainFrame.cpp:661 +#: src/slic3r/GUI/MainFrame.cpp:697 msgid "Software &Releases" msgstr "Lançamentos de &software" -#: src/slic3r/GUI/MainFrame.cpp:661 +#: src/slic3r/GUI/MainFrame.cpp:697 msgid "Open the software releases page in your browser" msgstr "Abrir a página de lançamentos de software no seu navegador" -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:703 #, c-format msgid "%s &Website" msgstr "%s &Site" -#: src/slic3r/GUI/MainFrame.cpp:668 +#: src/slic3r/GUI/MainFrame.cpp:704 #, c-format msgid "Open the %s website in your browser" msgstr "Abra o site do %s no seu navegador" -#: src/slic3r/GUI/MainFrame.cpp:674 +#: src/slic3r/GUI/MainFrame.cpp:710 msgid "System &Info" msgstr "Informação &do sistema" -#: src/slic3r/GUI/MainFrame.cpp:674 +#: src/slic3r/GUI/MainFrame.cpp:710 msgid "Show system information" msgstr "Mostrar a informação do sistema" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:712 msgid "Show &Configuration Folder" msgstr "Mostrar &pasta de config." -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:712 msgid "Show user configuration folder (datadir)" msgstr "Mostrar pasta de config. do usuário (datadir)" -#: src/slic3r/GUI/MainFrame.cpp:678 +#: src/slic3r/GUI/MainFrame.cpp:714 msgid "Report an I&ssue" msgstr "Reportar um p&roblema" -#: src/slic3r/GUI/MainFrame.cpp:678 +#: src/slic3r/GUI/MainFrame.cpp:714 #, c-format msgid "Report an issue on %s" msgstr "Relatar um problema em %s" -#: src/slic3r/GUI/MainFrame.cpp:680 +#: src/slic3r/GUI/MainFrame.cpp:716 #, c-format msgid "&About %s" msgstr "&Sobre %s" -#: src/slic3r/GUI/MainFrame.cpp:680 +#: src/slic3r/GUI/MainFrame.cpp:716 msgid "Show about dialog" msgstr "Mostrar diálogo sobre" -#: src/slic3r/GUI/MainFrame.cpp:683 +#: src/slic3r/GUI/MainFrame.cpp:719 msgid "Show the list of the keyboard shortcuts" msgstr "Mostrar lista dos atalhos no teclado" -#: src/slic3r/GUI/MainFrame.cpp:691 +#: src/slic3r/GUI/MainFrame.cpp:732 msgid "&File" msgstr "&Arquivo" -#: src/slic3r/GUI/MainFrame.cpp:692 +#: src/slic3r/GUI/MainFrame.cpp:733 msgid "&Edit" msgstr "&Editar" -#: src/slic3r/GUI/MainFrame.cpp:693 +#: src/slic3r/GUI/MainFrame.cpp:734 msgid "&Window" msgstr "&Janela" -#: src/slic3r/GUI/MainFrame.cpp:694 +#: src/slic3r/GUI/MainFrame.cpp:735 msgid "&View" msgstr "&Vista" -#: src/slic3r/GUI/MainFrame.cpp:697 +#: src/slic3r/GUI/MainFrame.cpp:738 msgid "&Help" msgstr "&Ajuda" -#: src/slic3r/GUI/MainFrame.cpp:719 +#: src/slic3r/GUI/MainFrame.cpp:760 msgid "E&xport" msgstr "E&xportar" -#: src/slic3r/GUI/MainFrame.cpp:720 +#: src/slic3r/GUI/MainFrame.cpp:761 msgid "S&end to print" msgstr "E&nviar para impressora" -#: src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:763 msgid "Mate&rial Settings Tab" msgstr "A&ba de config. de material" -#: src/slic3r/GUI/MainFrame.cpp:743 +#: src/slic3r/GUI/MainFrame.cpp:784 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Escolha um arquivo para fatiar (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:754 +#: src/slic3r/GUI/MainFrame.cpp:795 msgid "No previously sliced file." msgstr "Sem arquivo fatiado anteriormente." -#: src/slic3r/GUI/MainFrame.cpp:760 +#: src/slic3r/GUI/MainFrame.cpp:801 msgid "Previously sliced file (" msgstr "Arquivo fatiado anteriormente (" -#: src/slic3r/GUI/MainFrame.cpp:760 +#: src/slic3r/GUI/MainFrame.cpp:801 msgid ") not found." msgstr ") não encontrado." -#: src/slic3r/GUI/MainFrame.cpp:761 +#: src/slic3r/GUI/MainFrame.cpp:802 msgid "File Not Found" msgstr "Arquivo não encontrado" -#: src/slic3r/GUI/MainFrame.cpp:796 +#: src/slic3r/GUI/MainFrame.cpp:837 #, c-format msgid "Save %s file as:" msgstr "Salve o arquivo %s como:" -#: src/slic3r/GUI/MainFrame.cpp:796 +#: src/slic3r/GUI/MainFrame.cpp:837 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:796 +#: src/slic3r/GUI/MainFrame.cpp:837 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/MainFrame.cpp:808 +#: src/slic3r/GUI/MainFrame.cpp:849 msgid "Save zip file as:" msgstr "Salvar arquivo compactado(zip) como:" -#: src/slic3r/GUI/MainFrame.cpp:817 src/slic3r/GUI/Plater.cpp:2981 -#: src/slic3r/GUI/Plater.cpp:4533 src/slic3r/GUI/Tab.cpp:1194 -#: src/slic3r/GUI/Tab.cpp:3786 +#: src/slic3r/GUI/MainFrame.cpp:858 src/slic3r/GUI/Plater.cpp:3123 +#: src/slic3r/GUI/Plater.cpp:5109 src/slic3r/GUI/Tab.cpp:1220 +#: src/slic3r/GUI/Tab.cpp:3666 msgid "Slicing" msgstr "Fatiamento" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:819 +#: src/slic3r/GUI/MainFrame.cpp:860 #, c-format msgid "Processing %s" msgstr "Processando %s" -#: src/slic3r/GUI/MainFrame.cpp:842 +#: src/slic3r/GUI/MainFrame.cpp:883 msgid " was successfully sliced." msgstr " foi fatiado com sucesso." -#: src/slic3r/GUI/MainFrame.cpp:844 +#: src/slic3r/GUI/MainFrame.cpp:885 msgid "Slicing Done!" msgstr "Fatiamento completo!" -#: src/slic3r/GUI/MainFrame.cpp:859 +#: src/slic3r/GUI/MainFrame.cpp:900 msgid "Select the STL file to repair:" msgstr "Selecione o arquivo STL para corrigir:" -#: src/slic3r/GUI/MainFrame.cpp:869 +#: src/slic3r/GUI/MainFrame.cpp:910 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" "Salvar arquivo OBJ (menos propenso a erros de coordenada que STL) como:" -#: src/slic3r/GUI/MainFrame.cpp:881 +#: src/slic3r/GUI/MainFrame.cpp:922 msgid "Your file was repaired." msgstr "Seu arquivo foi corrigido." -#: src/slic3r/GUI/MainFrame.cpp:881 src/libslic3r/PrintConfig.cpp:3257 +#: src/slic3r/GUI/MainFrame.cpp:922 src/libslic3r/PrintConfig.cpp:3457 msgid "Repair" msgstr "Corrigir" -#: src/slic3r/GUI/MainFrame.cpp:895 +#: src/slic3r/GUI/MainFrame.cpp:936 msgid "Save configuration as:" msgstr "Salvar config. como:" -#: src/slic3r/GUI/MainFrame.cpp:914 src/slic3r/GUI/MainFrame.cpp:976 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1017 msgid "Select configuration to load:" msgstr "Selecionar config. para carregar:" -#: src/slic3r/GUI/MainFrame.cpp:950 +#: src/slic3r/GUI/MainFrame.cpp:991 msgid "Save presets bundle as:" msgstr "Salvar pacote de predefinições como:" -#: src/slic3r/GUI/MainFrame.cpp:997 +#: src/slic3r/GUI/MainFrame.cpp:1038 #, c-format msgid "%d presets successfully imported." msgstr "%d predefinições importadas com êxito." +#: src/slic3r/GUI/Mouse3DController.cpp:239 +msgid "3Dconnexion settings" +msgstr "Configurações de 3Dconnexion" + +#: src/slic3r/GUI/Mouse3DController.cpp:254 +msgid "Device:" +msgstr "Dispositivo:" + +#: src/slic3r/GUI/Mouse3DController.cpp:261 +msgid "Speed:" +msgstr "Velocidade:" + +#: src/slic3r/GUI/Mouse3DController.cpp:265 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +msgid "Translation" +msgstr "Tradução" + +#: src/slic3r/GUI/Mouse3DController.cpp:277 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +msgid "Zoom" +msgstr "Zoom" + +#: src/slic3r/GUI/Mouse3DController.cpp:284 +msgid "Deadzone:" +msgstr "Zona morta:" + #: src/slic3r/GUI/MsgDialog.cpp:73 #, c-format msgid "%s error" @@ -3115,92 +4100,110 @@ msgstr "%s erro" msgid "%s has encountered an error" msgstr "%s encontrou um erro" -#: src/slic3r/GUI/OptionsGroup.cpp:249 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +msgid "Instances" +msgstr "Instâncias" + +#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 +#, c-format +msgid "Instance %d" +msgstr "Instância %d" + +#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3514 +#: src/slic3r/GUI/Tab.cpp:3602 +msgid "Layers" +msgstr "Camadas" + +#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +msgid "Range" +msgstr "Intervalo" + +#: src/slic3r/GUI/OptionsGroup.cpp:259 msgctxt "Layers" msgid "Top" msgstr "Topo" -#: src/slic3r/GUI/OptionsGroup.cpp:249 +#: src/slic3r/GUI/OptionsGroup.cpp:259 msgctxt "Layers" msgid "Bottom" msgstr "Base" -#: src/slic3r/GUI/Plater.cpp:146 +#: src/slic3r/GUI/Plater.cpp:161 msgid "Volume" msgstr "Volume" -#: src/slic3r/GUI/Plater.cpp:147 +#: src/slic3r/GUI/Plater.cpp:162 msgid "Facets" msgstr "Facetas" -#: src/slic3r/GUI/Plater.cpp:148 +#: src/slic3r/GUI/Plater.cpp:163 msgid "Materials" msgstr "Materiais" -#: src/slic3r/GUI/Plater.cpp:151 +#: src/slic3r/GUI/Plater.cpp:166 msgid "Manifold" msgstr "Múltiplo" -#: src/slic3r/GUI/Plater.cpp:201 +#: src/slic3r/GUI/Plater.cpp:216 msgid "Sliced Info" msgstr "Informações fatiadas" -#: src/slic3r/GUI/Plater.cpp:220 src/slic3r/GUI/Plater.cpp:1150 +#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 msgid "Used Filament (m)" msgstr "Filamento utilizado (m)" -#: src/slic3r/GUI/Plater.cpp:221 +#: src/slic3r/GUI/Plater.cpp:236 msgid "Used Filament (mm³)" msgstr "Filamento utilizado (mm³)" -#: src/slic3r/GUI/Plater.cpp:222 +#: src/slic3r/GUI/Plater.cpp:237 msgid "Used Filament (g)" msgstr "Filamento utilizado (g)" -#: src/slic3r/GUI/Plater.cpp:223 +#: src/slic3r/GUI/Plater.cpp:238 msgid "Used Material (unit)" msgstr "Material utilizado (unidade)" -#: src/slic3r/GUI/Plater.cpp:224 src/slic3r/GUI/Plater.cpp:1165 -#: src/libslic3r/PrintConfig.cpp:742 -msgid "Cost" -msgstr "Custo" +#: src/slic3r/GUI/Plater.cpp:239 +msgid "Cost (money)" +msgstr "Custo (dinheiro)" -#: src/slic3r/GUI/Plater.cpp:225 src/slic3r/GUI/Plater.cpp:1137 -#: src/slic3r/GUI/Plater.cpp:1179 +#: src/slic3r/GUI/Plater.cpp:240 src/slic3r/GUI/Plater.cpp:1216 +#: src/slic3r/GUI/Plater.cpp:1258 msgid "Estimated printing time" msgstr "Tempo estimado de impressão" -#: src/slic3r/GUI/Plater.cpp:226 +#: src/slic3r/GUI/Plater.cpp:241 msgid "Number of tool changes" msgstr "Número de mudanças de ferramenta" -#: src/slic3r/GUI/Plater.cpp:316 +#: src/slic3r/GUI/Plater.cpp:343 msgid "Click to edit preset" msgstr "Clique para editar a predefinição" -#: src/slic3r/GUI/Plater.cpp:468 +#: src/slic3r/GUI/Plater.cpp:498 msgid "Select what kind of support do you need" msgstr "Selecione o tipo de suporte que você precisa" -#: src/slic3r/GUI/Plater.cpp:470 src/libslic3r/PrintConfig.cpp:1865 -#: src/libslic3r/PrintConfig.cpp:2561 +#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 +#: src/libslic3r/PrintConfig.cpp:2684 msgid "Support on build plate only" msgstr "Suportes somente na mesa de impressão" -#: src/slic3r/GUI/Plater.cpp:471 src/slic3r/GUI/Plater.cpp:592 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 msgid "For support enforcers only" msgstr "Para apenas reforçadores de suporte" -#: src/slic3r/GUI/Plater.cpp:472 +#: src/slic3r/GUI/Plater.cpp:502 msgid "Everywhere" msgstr "Em toda parte" -#: src/slic3r/GUI/Plater.cpp:504 src/slic3r/GUI/Tab.cpp:1091 +#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1116 msgid "Brim" msgstr "Aba" -#: src/slic3r/GUI/Plater.cpp:506 +#: src/slic3r/GUI/Plater.cpp:536 msgid "" "This flag enables the brim that will be printed around each object on the " "first layer." @@ -3208,67 +4211,75 @@ msgstr "" "Este sinalizador permite que a aba que será impressa em torno de cada objeto " "na primeira camada." -#: src/slic3r/GUI/Plater.cpp:514 +#: src/slic3r/GUI/Plater.cpp:544 msgid "Purging volumes" msgstr "Volumes de purga" -#: src/slic3r/GUI/Plater.cpp:606 +#: src/slic3r/GUI/Plater.cpp:638 msgid "Select what kind of pad do you need" msgstr "Selecione o tipo de bloco que você precisa" -#: src/slic3r/GUI/Plater.cpp:608 +#: src/slic3r/GUI/Plater.cpp:640 msgid "Below object" msgstr "Abaixo do objeto" -#: src/slic3r/GUI/Plater.cpp:609 +#: src/slic3r/GUI/Plater.cpp:641 msgid "Around object" msgstr "Em torno do objeto" -#: src/slic3r/GUI/Plater.cpp:781 +#: src/slic3r/GUI/Plater.cpp:815 msgid "Print settings" msgstr "Config. de impressão" -#: src/slic3r/GUI/Plater.cpp:782 src/slic3r/GUI/Tab.cpp:1640 -#: src/slic3r/GUI/Tab.cpp:1641 +#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1424 +#: src/slic3r/GUI/Tab.cpp:1425 msgid "Filament" msgstr "Filamento" -#: src/slic3r/GUI/Plater.cpp:783 +#: src/slic3r/GUI/Plater.cpp:817 msgid "SLA print settings" msgstr "Config. de impressão de SLA" -#: src/slic3r/GUI/Plater.cpp:784 src/slic3r/GUI/Preset.cpp:1314 +#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1536 msgid "SLA material" msgstr "Material de SLA" -#: src/slic3r/GUI/Plater.cpp:785 +#: src/slic3r/GUI/Plater.cpp:819 msgid "Printer" msgstr "Impressora" -#: src/slic3r/GUI/Plater.cpp:835 src/slic3r/GUI/Plater.cpp:4823 +#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5523 msgid "Send to printer" msgstr "Enviar para a impressora" -#: src/slic3r/GUI/Plater.cpp:838 src/slic3r/GUI/Plater.cpp:2981 -#: src/slic3r/GUI/Plater.cpp:4536 +#: src/slic3r/GUI/Plater.cpp:879 +msgid "Remove device" +msgstr "Remover dispositivo" + +#: src/slic3r/GUI/Plater.cpp:880 +msgid "Export to SD card / Flash drive" +msgstr "Exportar para cartão SD / unidade Flash" + +#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3123 +#: src/slic3r/GUI/Plater.cpp:5112 msgid "Slice now" msgstr "Fatiar agora" -#: src/slic3r/GUI/Plater.cpp:978 +#: src/slic3r/GUI/Plater.cpp:1042 msgid "Hold Shift to Slice & Export G-code" msgstr "Hold Shift to Slice & Export G-code" -#: src/slic3r/GUI/Plater.cpp:1083 +#: src/slic3r/GUI/Plater.cpp:1152 #, c-format msgid "%d (%d shells)" msgstr "%d (%d paredes)" -#: src/slic3r/GUI/Plater.cpp:1088 +#: src/slic3r/GUI/Plater.cpp:1157 #, c-format msgid "Auto-repaired (%d errors)" msgstr "Auto reparando (%d erros):" -#: src/slic3r/GUI/Plater.cpp:1091 +#: src/slic3r/GUI/Plater.cpp:1160 #, c-format msgid "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " @@ -3277,107 +4288,108 @@ msgstr "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " "facets reversed, %d backwards edges" -#: src/slic3r/GUI/Plater.cpp:1101 +#: src/slic3r/GUI/Plater.cpp:1170 msgid "Yes" msgstr "Sim" -#: src/slic3r/GUI/Plater.cpp:1124 +#: src/slic3r/GUI/Plater.cpp:1191 msgid "Used Material (ml)" msgstr "Material usado (ml)" -#: src/slic3r/GUI/Plater.cpp:1127 +#: src/slic3r/GUI/Plater.cpp:1194 msgid "object(s)" msgstr "objeto(s)" -#: src/slic3r/GUI/Plater.cpp:1127 +#: src/slic3r/GUI/Plater.cpp:1194 msgid "supports and pad" msgstr "suportes e bloco" -#: src/slic3r/GUI/Plater.cpp:1152 src/slic3r/GUI/Plater.cpp:1167 +#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 msgid "objects" msgstr "objetos" -#: src/slic3r/GUI/Plater.cpp:1152 src/slic3r/GUI/Plater.cpp:1167 +#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 msgid "wipe tower" msgstr "torre de limpeza" -#: src/slic3r/GUI/Plater.cpp:1182 -msgid "normal mode" -msgstr "modo normal" +#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 +#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +msgid "Cost" +msgstr "Custo" -#: src/slic3r/GUI/Plater.cpp:1186 src/slic3r/GUI/Plater.cpp:1195 -#: src/libslic3r/PrintConfig.cpp:565 +#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 msgid "Color" msgstr "Cor" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1261 +msgid "Pause" +msgstr "Pausar" + +#: src/slic3r/GUI/Plater.cpp:1286 +msgid "normal mode" +msgstr "modo normal" + +#: src/slic3r/GUI/Plater.cpp:1291 msgid "stealth mode" msgstr "modo silencioso" -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1395 msgid "Load File" msgstr "Carregar arquivo" -#: src/slic3r/GUI/Plater.cpp:1290 +#: src/slic3r/GUI/Plater.cpp:1399 msgid "Load Files" msgstr "Carregar arquivos" -#: src/slic3r/GUI/Plater.cpp:1519 -msgid "ERROR: not enough resources to execute a new job." -msgstr "ERRO: não há recursos suficientes para executar um novo trabalho." - -#: src/slic3r/GUI/Plater.cpp:2089 +#: src/slic3r/GUI/Plater.cpp:2155 msgid "New Project" msgstr "Novo projeto" -#: src/slic3r/GUI/Plater.cpp:2206 +#: src/slic3r/GUI/Plater.cpp:2275 msgid "Loading" msgstr "Carregando" -#: src/slic3r/GUI/Plater.cpp:2216 +#: src/slic3r/GUI/Plater.cpp:2285 #, c-format -msgid "Processing input file %s\n" -msgstr "Processando o arquivo de entrada %s\n" +msgid "Processing input file %s" +msgstr "Processando o arquivo de entrada %s" -#: src/slic3r/GUI/Plater.cpp:2244 -msgid "" -"You can't load SLA project if there is at least one multi-part object on the " -"bed" +#: src/slic3r/GUI/Plater.cpp:2313 +msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "" -"Não é possível carregar o projeto de SLA se houver pelo menos um objeto de " -"várias partes na mesa" +"Você não pode carregar o projeto SLA com um objeto de várias partes na cama" -#: src/slic3r/GUI/Plater.cpp:2245 src/slic3r/GUI/Tab.cpp:3146 +#: src/slic3r/GUI/Plater.cpp:2314 src/slic3r/GUI/Tab.cpp:2961 msgid "Please check your object list before preset changing." msgstr "Verifique a lista de objetos antes de alterar a predefinição." -#: src/slic3r/GUI/Plater.cpp:2288 +#: src/slic3r/GUI/Plater.cpp:2359 msgid "" -"This file contains several objects positioned at multiple heights. Instead " -"of considering them as multiple objects, should I consider\n" -"this file as a single object having multiple parts?\n" +"This file contains several objects positioned at multiple heights.\n" +"Instead of considering them as multiple objects, should I consider\n" +"this file as a single object having multiple parts?" msgstr "" -"Este arquivo contém vários objetos posicionados em várias alturas. Em vez de " -"considerá-los como múltiplos objetos, devo considerar\n" -"Este arquivo como um único objeto com várias partes?\n" +"Este arquivo contém vários objetos posicionados em várias alturas. \n" +"Em vez de considerá-los como múltiplos objetos, devo considerar\n" +"Este arquivo como um único objeto com várias partes?" -#: src/slic3r/GUI/Plater.cpp:2291 src/slic3r/GUI/Plater.cpp:2343 +#: src/slic3r/GUI/Plater.cpp:2362 src/slic3r/GUI/Plater.cpp:2415 msgid "Multi-part object detected" msgstr "Objeto de várias partes detectado" -#: src/slic3r/GUI/Plater.cpp:2298 +#: src/slic3r/GUI/Plater.cpp:2369 msgid "" "This file cannot be loaded in a simple mode. Do you want to switch to an " -"advanced mode?\n" +"advanced mode?" msgstr "" "Este arquivo não pode ser carregado em um modo simples. Deseja mudar para um " -"modo avançado?\n" +"modo avançado?" -#: src/slic3r/GUI/Plater.cpp:2299 +#: src/slic3r/GUI/Plater.cpp:2370 msgid "Detected advanced data" msgstr "Dados avançados detectados" -#: src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/Plater.cpp:2392 #, c-format msgid "" "You can't to add the object(s) from %s because of one or some of them " @@ -3386,21 +4398,21 @@ msgstr "" "Você não pode adicionar o objeto (s) %s por causa de um ou alguns deles é " "(são) de várias partes" -#: src/slic3r/GUI/Plater.cpp:2340 +#: src/slic3r/GUI/Plater.cpp:2412 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" -"these files to represent a single object having multiple parts?\n" +"these files to represent a single object having multiple parts?" msgstr "" "Vários objetos foram carregados para uma impressora de vários materiais.\n" "Em vez de considerá-los como múltiplos objetos, devo considerar\n" -"esses arquivos para representar um único objeto com várias partes?\n" +"esses arquivos para representar um único objeto com várias partes?" -#: src/slic3r/GUI/Plater.cpp:2356 +#: src/slic3r/GUI/Plater.cpp:2428 msgid "Loaded" msgstr "Carregado" -#: src/slic3r/GUI/Plater.cpp:2458 +#: src/slic3r/GUI/Plater.cpp:2530 msgid "" "Your object appears to be too large, so it was automatically scaled down to " "fit your print bed." @@ -3408,69 +4420,89 @@ msgstr "" "Seu objeto parece ser muito grande, por isso foi automaticamente " "dimensionado para baixo para caber sua mesa de impressão." -#: src/slic3r/GUI/Plater.cpp:2459 +#: src/slic3r/GUI/Plater.cpp:2531 msgid "Object too large?" msgstr "Objeto muito grande?" -#: src/slic3r/GUI/Plater.cpp:2517 +#: src/slic3r/GUI/Plater.cpp:2593 msgid "Export STL file:" msgstr "Exportar arquivo STL:" -#: src/slic3r/GUI/Plater.cpp:2524 +#: src/slic3r/GUI/Plater.cpp:2600 msgid "Export AMF file:" msgstr "Exportar arquivo AMF:" -#: src/slic3r/GUI/Plater.cpp:2530 +#: src/slic3r/GUI/Plater.cpp:2606 msgid "Save file as:" msgstr "Salvar arquivo como:" -#: src/slic3r/GUI/Plater.cpp:2536 +#: src/slic3r/GUI/Plater.cpp:2612 msgid "Export OBJ file:" msgstr "Exportar arquivo OBJ:" -#: src/slic3r/GUI/Plater.cpp:2638 +#: src/slic3r/GUI/Plater.cpp:2714 msgid "Delete Object" msgstr "Excluir objeto" -#: src/slic3r/GUI/Plater.cpp:2649 +#: src/slic3r/GUI/Plater.cpp:2725 msgid "Reset Project" msgstr "Redefinir projeto" -#: src/slic3r/GUI/Plater.cpp:2688 +#: src/slic3r/GUI/Plater.cpp:2762 +msgid "Hollow" +msgstr "Vazado" + +#: src/slic3r/GUI/Plater.cpp:2769 msgid "Optimize Rotation" msgstr "Otimize a rotação" -#: src/slic3r/GUI/Plater.cpp:2734 +#: src/slic3r/GUI/Plater.cpp:2815 msgid "Arranging" msgstr "Organizar" -#: src/slic3r/GUI/Plater.cpp:2757 +#: src/slic3r/GUI/Plater.cpp:2837 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "" "Não foi possível organizar objetos de modelo! Algumas geometrias podem ser " "inválidas." -#: src/slic3r/GUI/Plater.cpp:2763 +#: src/slic3r/GUI/Plater.cpp:2843 msgid "Arranging canceled." msgstr "Arranjo cancelado." -#: src/slic3r/GUI/Plater.cpp:2764 +#: src/slic3r/GUI/Plater.cpp:2844 msgid "Arranging done." msgstr "Arranjo feito." -#: src/slic3r/GUI/Plater.cpp:2780 +#: src/slic3r/GUI/Plater.cpp:2860 msgid "Searching for optimal orientation" msgstr "Procurando orientação ideal" -#: src/slic3r/GUI/Plater.cpp:2813 +#: src/slic3r/GUI/Plater.cpp:2893 msgid "Orientation search canceled." msgstr "Pesquisa de orientação cancelada." -#: src/slic3r/GUI/Plater.cpp:2814 +#: src/slic3r/GUI/Plater.cpp:2894 msgid "Orientation found." msgstr "Orientação encontrada." -#: src/slic3r/GUI/Plater.cpp:2830 +#: src/slic3r/GUI/Plater.cpp:2924 +msgid "Indexing hollowed object" +msgstr "Indexando objeto oco" + +#: src/slic3r/GUI/Plater.cpp:2928 +msgid "Hollowing cancelled." +msgstr "Cancelado" + +#: src/slic3r/GUI/Plater.cpp:2929 +msgid "Hollowing done." +msgstr "Deixado oco pronto." + +#: src/slic3r/GUI/Plater.cpp:2931 +msgid "Hollowing failed." +msgstr "Deixar oco falhou." + +#: src/slic3r/GUI/Plater.cpp:2972 msgid "" "The selected object can't be split because it contains more than one volume/" "material." @@ -3478,145 +4510,165 @@ msgstr "" "O objeto selecionado não pode ser dividido porque contém mais de um volume/" "material." -#: src/slic3r/GUI/Plater.cpp:2841 +#: src/slic3r/GUI/Plater.cpp:2983 msgid "Split to Objects" msgstr "Dividir em objetos" -#: src/slic3r/GUI/Plater.cpp:2966 +#: src/slic3r/GUI/Plater.cpp:3108 msgid "Invalid data" msgstr "Dados inválidos" -#: src/slic3r/GUI/Plater.cpp:2975 +#: src/slic3r/GUI/Plater.cpp:3117 msgid "Ready to slice" msgstr "Pronto para fatiar" -#: src/slic3r/GUI/Plater.cpp:3013 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:3155 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Cancelar" -#: src/slic3r/GUI/Plater.cpp:3030 +#: src/slic3r/GUI/Plater.cpp:3172 msgid "Another export job is currently running." msgstr "Outro trabalho de exportação está em execução no momento." -#: src/slic3r/GUI/Plater.cpp:3084 src/slic3r/GUI/Plater.cpp:3549 -msgid "Reload from Disk" -msgstr "Recarregar a partir do disco" +#: src/slic3r/GUI/Plater.cpp:3288 +msgid "Please select the file to reload" +msgstr "Selecione o arquivo STL para recarregar" -#: src/slic3r/GUI/Plater.cpp:3120 +#: src/slic3r/GUI/Plater.cpp:3323 +msgid "It is not allowed to change the file to reload" +msgstr "Não é permitido alterar o arquivo para recarregar" + +#: src/slic3r/GUI/Plater.cpp:3323 +msgid "Do you want to retry" +msgstr "Você quer prosseguir" + +#: src/slic3r/GUI/Plater.cpp:3341 +msgid "Reload from:" +msgstr "Recarregar a partir do disco:" + +#: src/slic3r/GUI/Plater.cpp:3430 +msgid "Unable to reload:" +msgstr "Não é possível recarregar:" + +#: src/slic3r/GUI/Plater.cpp:3435 +msgid "Error during reload" +msgstr "Erro durante a recarga" + +#: src/slic3r/GUI/Plater.cpp:3454 +msgid "Reload all from disk" +msgstr "Recarregar tudo do disco" + +#: src/slic3r/GUI/Plater.cpp:3475 msgid "Fix Throught NetFabb" msgstr "Arrumar através do NetFabb" -#: src/slic3r/GUI/Plater.cpp:3307 +#: src/slic3r/GUI/Plater.cpp:3666 msgid "Export failed" msgstr "Falha na exportação" -#: src/slic3r/GUI/Plater.cpp:3312 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3671 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Cancelado" -#: src/slic3r/GUI/Plater.cpp:3520 src/slic3r/GUI/Plater.cpp:3539 +#: src/slic3r/GUI/Plater.cpp:3933 src/slic3r/GUI/Plater.cpp:3955 msgid "Remove the selected object" msgstr "Remover o objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:3526 +#: src/slic3r/GUI/Plater.cpp:3942 msgid "Add one more instance of the selected object" msgstr "Adicionar mais uma instância do objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:3528 +#: src/slic3r/GUI/Plater.cpp:3944 msgid "Remove one instance of the selected object" msgstr "Remover uma instância do objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:3530 +#: src/slic3r/GUI/Plater.cpp:3946 msgid "Set number of instances" msgstr "Definir o número de instâncias" -#: src/slic3r/GUI/Plater.cpp:3530 +#: src/slic3r/GUI/Plater.cpp:3946 msgid "Change the number of instances of the selected object" msgstr "Alterar o número de instâncias do objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:3549 -msgid "Reload the selected file from Disk" -msgstr "Recarregar o arquivo selecionado a partir do disco" +#: src/slic3r/GUI/Plater.cpp:3965 +msgid "Reload the selected object from disk" +msgstr "Recarregue o objeto selecionado do disco" -#: src/slic3r/GUI/Plater.cpp:3552 +#: src/slic3r/GUI/Plater.cpp:3968 msgid "Export the selected object as STL file" msgstr "Exportar o objeto selecionado como arquivo STL" -#: src/slic3r/GUI/Plater.cpp:3577 +#: src/slic3r/GUI/Plater.cpp:3997 msgid "Along X axis" msgstr "Ao longo do eixo X" -#: src/slic3r/GUI/Plater.cpp:3577 +#: src/slic3r/GUI/Plater.cpp:3997 msgid "Mirror the selected object along the X axis" msgstr "Espelhar o objeto selecionado ao longo do eixo X" -#: src/slic3r/GUI/Plater.cpp:3579 +#: src/slic3r/GUI/Plater.cpp:3999 msgid "Along Y axis" msgstr "Ao longo do eixo Y" -#: src/slic3r/GUI/Plater.cpp:3579 +#: src/slic3r/GUI/Plater.cpp:3999 msgid "Mirror the selected object along the Y axis" msgstr "Espelhar o objeto selecionado ao longo do eixo Y" -#: src/slic3r/GUI/Plater.cpp:3581 +#: src/slic3r/GUI/Plater.cpp:4001 msgid "Along Z axis" msgstr "Ao longo do eixo Z" -#: src/slic3r/GUI/Plater.cpp:3581 +#: src/slic3r/GUI/Plater.cpp:4001 msgid "Mirror the selected object along the Z axis" msgstr "Espelhar o objeto selecionado ao longo do eixo Z" -#: src/slic3r/GUI/Plater.cpp:3584 +#: src/slic3r/GUI/Plater.cpp:4004 msgid "Mirror" msgstr "Espelhar" -#: src/slic3r/GUI/Plater.cpp:3584 +#: src/slic3r/GUI/Plater.cpp:4004 msgid "Mirror the selected object" msgstr "Espelhar o objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:3596 +#: src/slic3r/GUI/Plater.cpp:4016 msgid "To objects" msgstr "Para objetos" -#: src/slic3r/GUI/Plater.cpp:3596 src/slic3r/GUI/Plater.cpp:3616 +#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4036 msgid "Split the selected object into individual objects" msgstr "Dividir o objeto selecionado em objetos individuais" -#: src/slic3r/GUI/Plater.cpp:3598 +#: src/slic3r/GUI/Plater.cpp:4018 msgid "To parts" msgstr "Para peças" -#: src/slic3r/GUI/Plater.cpp:3598 src/slic3r/GUI/Plater.cpp:3630 +#: src/slic3r/GUI/Plater.cpp:4018 src/slic3r/GUI/Plater.cpp:4050 msgid "Split the selected object into individual sub-parts" msgstr "Dividir o objeto selecionado em subpartes individuais" -#: src/slic3r/GUI/Plater.cpp:3601 src/slic3r/GUI/Plater.cpp:3616 -#: src/slic3r/GUI/Plater.cpp:3630 src/libslic3r/PrintConfig.cpp:3281 +#: src/slic3r/GUI/Plater.cpp:4021 src/slic3r/GUI/Plater.cpp:4036 +#: src/slic3r/GUI/Plater.cpp:4050 src/libslic3r/PrintConfig.cpp:3481 msgid "Split" msgstr "Dividir" -#: src/slic3r/GUI/Plater.cpp:3601 +#: src/slic3r/GUI/Plater.cpp:4021 msgid "Split the selected object" msgstr "Dividir o objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:3622 +#: src/slic3r/GUI/Plater.cpp:4042 msgid "Optimize orientation" msgstr "Otimize a orientação" -#: src/slic3r/GUI/Plater.cpp:3622 +#: src/slic3r/GUI/Plater.cpp:4042 msgid "Optimize the rotation of the object for better print results." msgstr "" "Otimize a rotação do objeto para obter melhores resultados de impressão." -#: src/slic3r/GUI/Plater.cpp:3662 +#: src/slic3r/GUI/Plater.cpp:4099 msgid "3D editor view" msgstr "vista do editor 3D" -#: src/slic3r/GUI/Plater.cpp:3670 src/slic3r/GUI/Tab.cpp:2590 -msgid "Preview" -msgstr "Visualização" - -#: src/slic3r/GUI/Plater.cpp:3907 +#: src/slic3r/GUI/Plater.cpp:4402 msgid "" "%1% printer was active at the time the target Undo / Redo snapshot was " "taken. Switching to %1% printer requires reloading of %1% presets." @@ -3625,98 +4677,111 @@ msgstr "" "refazer de destino foi tirado. Mudar para %1% impressora requer recarga de " "%1% predefinições." -#: src/slic3r/GUI/Plater.cpp:4081 +#: src/slic3r/GUI/Plater.cpp:4577 msgid "Load Project" msgstr "Carregar projeto" -#: src/slic3r/GUI/Plater.cpp:4109 +#: src/slic3r/GUI/Plater.cpp:4605 msgid "Import Object" msgstr "Importar objeto" -#: src/slic3r/GUI/Plater.cpp:4113 +#: src/slic3r/GUI/Plater.cpp:4609 msgid "Import Objects" msgstr "Importar objetos" -#: src/slic3r/GUI/Plater.cpp:4172 -msgid "All objects will be removed, continue ?" +#: src/slic3r/GUI/Plater.cpp:4671 +msgid "All objects will be removed, continue?" msgstr "Todos os objetos serão removidos, continuar?" -#: src/slic3r/GUI/Plater.cpp:4180 +#: src/slic3r/GUI/Plater.cpp:4679 msgid "Delete Selected Objects" msgstr "Excluir objetos selecionados" -#: src/slic3r/GUI/Plater.cpp:4188 +#: src/slic3r/GUI/Plater.cpp:4687 msgid "Increase Instances" msgstr "Aumentar instâncias" -#: src/slic3r/GUI/Plater.cpp:4224 +#: src/slic3r/GUI/Plater.cpp:4722 msgid "Decrease Instances" msgstr "Diminuir instâncias" -#: src/slic3r/GUI/Plater.cpp:4260 +#: src/slic3r/GUI/Plater.cpp:4753 +msgid "Enter the number of copies:" +msgstr "Definir números de cópias:" + +#: src/slic3r/GUI/Plater.cpp:4754 +msgid "Copies of the selected object" +msgstr "Cópias do objeto selecionado" + +#: src/slic3r/GUI/Plater.cpp:4758 #, c-format msgid "Set numbers of copies to %d" msgstr "Definir números de cópias para %d" -#: src/slic3r/GUI/Plater.cpp:4290 +#: src/slic3r/GUI/Plater.cpp:4788 msgid "Cut by Plane" msgstr "Cortado por plano" -#: src/slic3r/GUI/Plater.cpp:4322 +#: src/slic3r/GUI/Plater.cpp:4841 msgid "Save G-code file as:" msgstr "Salve o arquivo G-code como:" -#: src/slic3r/GUI/Plater.cpp:4322 +#: src/slic3r/GUI/Plater.cpp:4841 msgid "Save SL1 file as:" msgstr "Salvar SL1 arquivo como:" -#: src/slic3r/GUI/Plater.cpp:4434 +#: src/slic3r/GUI/Plater.cpp:4987 #, c-format msgid "STL file exported to %s" msgstr "Arquivo STL exportado para %s" -#: src/slic3r/GUI/Plater.cpp:4450 +#: src/slic3r/GUI/Plater.cpp:5004 #, c-format msgid "AMF file exported to %s" msgstr "Arquivo AMF exportado para %s" -#: src/slic3r/GUI/Plater.cpp:4453 +#: src/slic3r/GUI/Plater.cpp:5007 #, c-format msgid "Error exporting AMF file %s" msgstr "Erro ao exportar arquivo AMF %s" -#: src/slic3r/GUI/Plater.cpp:4479 +#: src/slic3r/GUI/Plater.cpp:5040 #, c-format msgid "3MF file exported to %s" msgstr "Arquivo 3MF exportado para %s" -#: src/slic3r/GUI/Plater.cpp:4484 +#: src/slic3r/GUI/Plater.cpp:5045 #, c-format msgid "Error exporting 3MF file %s" msgstr "Erro ao exportar arquivo 3MF %s" -#: src/slic3r/GUI/Plater.cpp:4822 +#: src/slic3r/GUI/Plater.cpp:5205 +#, c-format +msgid "" +"Unmounting successful. The device %s(%s) can now be safely removed from the " +"computer." +msgstr "" +"Não montando bem sucedido. O dispositivo %s(%s) agora pode ser removido com " +"segurança do computador." + +#: src/slic3r/GUI/Plater.cpp:5522 msgid "Export" msgstr "Exportar" -#: src/slic3r/GUI/Plater.cpp:4823 -msgid "Send G-code" -msgstr "Enviar G-code" - -#: src/slic3r/GUI/Plater.cpp:4907 +#: src/slic3r/GUI/Plater.cpp:5608 msgid "Paste From Clipboard" msgstr "Colar da área de transferência" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:2001 -#: src/slic3r/GUI/Tab.cpp:2242 +#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1798 +#: src/slic3r/GUI/Tab.cpp:2042 msgid "General" msgstr "Geral" -#: src/slic3r/GUI/Preferences.cpp:44 +#: src/slic3r/GUI/Preferences.cpp:39 msgid "Remember output directory" msgstr "Lembrar diretório de saída" -#: src/slic3r/GUI/Preferences.cpp:46 +#: src/slic3r/GUI/Preferences.cpp:41 msgid "" "If this is enabled, Slic3r will prompt the last output directory instead of " "the one containing the input files." @@ -3724,11 +4789,11 @@ msgstr "" "Se isso estiver habilitado, Slic3r solicitará o último diretório de saída em " "vez de um contendo os arquivos de entrada." -#: src/slic3r/GUI/Preferences.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:47 msgid "Auto-center parts" msgstr "Centrar automaticamente as partes" -#: src/slic3r/GUI/Preferences.cpp:54 +#: src/slic3r/GUI/Preferences.cpp:49 msgid "" "If this is enabled, Slic3r will auto-center objects around the print bed " "center." @@ -3736,11 +4801,11 @@ msgstr "" "Se isso estiver habilitado, o Slic3r irá centralizar objetos automaticamente " "ao redor do centro de mesa de impressão." -#: src/slic3r/GUI/Preferences.cpp:60 +#: src/slic3r/GUI/Preferences.cpp:55 msgid "Background processing" msgstr "Processamento em segundo plano" -#: src/slic3r/GUI/Preferences.cpp:62 +#: src/slic3r/GUI/Preferences.cpp:57 msgid "" "If this is enabled, Slic3r will pre-process objects as soon as they're " "loaded in order to save time when exporting G-code." @@ -3748,7 +4813,7 @@ msgstr "" "Se isso estiver ativado, o Slic3r irá pré-processar objetos assim que eles " "forem carregados para economizar tempo ao exportar o G-code." -#: src/slic3r/GUI/Preferences.cpp:71 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "" "If enabled, PrusaSlicer will check for the new versions of itself online. " "When a new version becomes available a notification is displayed at the next " @@ -3761,7 +4826,19 @@ msgstr "" "Este é apenas um mecanismos de notificação, nenhuma instalação automática é " "feita." -#: src/slic3r/GUI/Preferences.cpp:79 +#: src/slic3r/GUI/Preferences.cpp:72 +msgid "Export sources full pathnames to 3mf and amf" +msgstr "Fontes de exportação completas para 3mf e amf" + +#: src/slic3r/GUI/Preferences.cpp:74 +msgid "" +"If enabled, allows the Reload from disk command to automatically find and " +"load the files when invoked." +msgstr "" +"Se ativado, permite que o comando Reload from disk encontre e carregue " +"automaticamente os arquivos quando invocado." + +#: src/slic3r/GUI/Preferences.cpp:82 msgid "" "If enabled, Slic3r downloads updates of built-in system presets in the " "background. These updates are downloaded into a separate temporary location. " @@ -3773,11 +4850,11 @@ msgstr "" "temporário separado. Quando uma nova versão predefinida se torna disponível, " "ela é oferecida na inicialização do aplicativo." -#: src/slic3r/GUI/Preferences.cpp:84 +#: src/slic3r/GUI/Preferences.cpp:87 msgid "Suppress \" - default - \" presets" msgstr "Suprimir predefinições \"-padrão-\"" -#: src/slic3r/GUI/Preferences.cpp:86 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "" "Suppress \" - default - \" presets in the Print / Filament / Printer " "selections once there are any other valid presets available." @@ -3785,11 +4862,11 @@ msgstr "" "Suprimir predefinições \"-padrão-\" em impressão/filamento/impressora, uma " "vez que existam outras predefinições válidas disponíveis." -#: src/slic3r/GUI/Preferences.cpp:92 +#: src/slic3r/GUI/Preferences.cpp:95 msgid "Show incompatible print and filament presets" msgstr "Mostrar predefinições de impressão e filamento incompatíveis" -#: src/slic3r/GUI/Preferences.cpp:94 +#: src/slic3r/GUI/Preferences.cpp:97 msgid "" "When checked, the print and filament presets are shown in the preset editor " "even if they are marked as incompatible with the active printer" @@ -3798,11 +4875,11 @@ msgstr "" "editor de predefinições, mesmo que estejam marcadas como incompatíveis com a " "impressora ativa" -#: src/slic3r/GUI/Preferences.cpp:101 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Use Retina resolution for the 3D scene" msgstr "Usar a resolução retina para a cena 3D" -#: src/slic3r/GUI/Preferences.cpp:103 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "" "If enabled, the 3D scene will be rendered in Retina resolution. If you are " "experiencing 3D performance problems, disabling this option may help." @@ -3810,69 +4887,95 @@ msgstr "" "Se ativada, a cena 3D será renderizada na resolução retina. Se você estiver " "enfrentando problemas de desempenho 3D, desabilitar essa opção pode ajudar." -#: src/slic3r/GUI/Preferences.cpp:110 +#: src/slic3r/GUI/Preferences.cpp:113 +msgid "Camera" +msgstr "Câmera" + +#: src/slic3r/GUI/Preferences.cpp:119 msgid "Use perspective camera" msgstr "Usar a câmera em perspectiva" -#: src/slic3r/GUI/Preferences.cpp:112 +#: src/slic3r/GUI/Preferences.cpp:121 msgid "" "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "" "Se ativada, use a câmera em perspectiva. Se não estiver ativada, use a " "câmera ortográfica." -#: src/slic3r/GUI/Preferences.cpp:117 +#: src/slic3r/GUI/Preferences.cpp:126 +msgid "Use free camera" +msgstr "Use câmera livre" + +#: src/slic3r/GUI/Preferences.cpp:128 +msgid "If enabled, use free camera. If not enabled, use constrained camera." +msgstr "" +"Se ativado, use câmera livre. Se não estiver habilitado, use a câmera " +"restrita." + +#: src/slic3r/GUI/Preferences.cpp:133 +msgid "GUI" +msgstr "GUI" + +#: src/slic3r/GUI/Preferences.cpp:143 msgid "Use custom size for toolbar icons" msgstr "Usar tamanho personalizado para ícones da barra de ferramentas" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:145 msgid "If enabled, you can change size of toolbar icons manually." msgstr "" "Se ativado, você pode alterar o tamanho dos ícones da barra de ferramentas " "manualmente." -#: src/slic3r/GUI/Preferences.cpp:144 +#: src/slic3r/GUI/Preferences.cpp:172 #, c-format msgid "You need to restart %s to make the changes effective." msgstr "Você precisa reiniciar %s para tornar as alterações efetivas." -#: src/slic3r/GUI/Preferences.cpp:192 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "Icon size in a respect to the default size" msgstr "Tamanho do ícone em relação ao tamanho padrão" -#: src/slic3r/GUI/Preferences.cpp:207 +#: src/slic3r/GUI/Preferences.cpp:237 msgid "Select toolbar icon size in respect to the default one." msgstr "" "Selecione o tamanho do ícone da barra de ferramentas em relação ao padrão." -#: src/slic3r/GUI/Preset.cpp:212 +#: src/slic3r/GUI/Preset.cpp:247 msgid "modified" msgstr "modificado" -#: src/slic3r/GUI/Preset.cpp:967 src/slic3r/GUI/Preset.cpp:1007 -#: src/slic3r/GUI/Preset.cpp:1072 src/slic3r/GUI/Preset.cpp:1104 -#: src/slic3r/GUI/PresetBundle.cpp:1484 src/slic3r/GUI/PresetBundle.cpp:1559 +#: src/slic3r/GUI/Preset.cpp:1121 src/slic3r/GUI/Preset.cpp:1176 +#: src/slic3r/GUI/Preset.cpp:1254 src/slic3r/GUI/Preset.cpp:1296 +#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1679 msgid "System presets" msgstr "Predefinições do sistema" -#: src/slic3r/GUI/Preset.cpp:1011 src/slic3r/GUI/Preset.cpp:1108 -#: src/slic3r/GUI/PresetBundle.cpp:1564 +#: src/slic3r/GUI/Preset.cpp:1180 src/slic3r/GUI/Preset.cpp:1300 +#: src/slic3r/GUI/PresetBundle.cpp:1684 msgid "User presets" msgstr "Predefinições do usuário" -#: src/slic3r/GUI/Preset.cpp:1040 src/slic3r/GUI/Tab.cpp:243 -msgid "Add a new printer" -msgstr "Adicionar uma nova impressora" +#: src/slic3r/GUI/Preset.cpp:1213 +msgid "Add/Remove materials" +msgstr "Adicionar/Remover materiais" -#: src/slic3r/GUI/Preset.cpp:1312 +#: src/slic3r/GUI/Preset.cpp:1215 +msgid "Add/Remove printers" +msgstr "Adicionar/Remover impressoras" + +#: src/slic3r/GUI/Preset.cpp:1534 msgid "filament" msgstr "filamento" -#: src/slic3r/GUI/Preset.cpp:1313 +#: src/slic3r/GUI/Preset.cpp:1535 msgid "SLA print" msgstr "Impressão de SLA" -#: src/slic3r/GUI/PresetHints.cpp:28 +#: src/slic3r/GUI/PresetBundle.cpp:1711 +msgid "Add/Remove filaments" +msgstr "Adicionar/Remover filamentos" + +#: src/slic3r/GUI/PresetHints.cpp:29 msgid "" "If estimated layer time is below ~%1%s, fan will run at %2%%% and print " "speed will be reduced so that no less than %3%s are spent on that layer " @@ -3883,107 +4986,101 @@ msgstr "" "menos de %3%s sejam gastos nessa camada (no entanto, a velocidade nunca será " "reduzida abaixo de %4% mm/s)." -#: src/slic3r/GUI/PresetHints.cpp:35 +#: src/slic3r/GUI/PresetHints.cpp:36 msgid "" -"\n" "If estimated layer time is greater, but still below ~%1%s, fan will run at a " "proportionally decreasing speed between %2%%% and %3%%%." msgstr "" -"\n" "Se o tempo estimado da camada for maior, mas ainda abaixo de ~%1%s, o " "ventoinha será executado em uma velocidade proporcionalmente decrescente " "entre %2%%% e %3%%%." -#: src/slic3r/GUI/PresetHints.cpp:39 -msgid "" -"\n" -"During the other layers, fan" -msgstr "" -"\n" -"Durante as outras camadas, o ventoinha" +#: src/slic3r/GUI/PresetHints.cpp:40 +msgid "During the other layers, fan" +msgstr "Durante as outras camadas, a ventoinha" -#: src/slic3r/GUI/PresetHints.cpp:41 +#: src/slic3r/GUI/PresetHints.cpp:42 msgid "Fan" msgstr "Ventoinha" -#: src/slic3r/GUI/PresetHints.cpp:47 +#: src/slic3r/GUI/PresetHints.cpp:48 msgid "will always run at %1%%%" msgstr "será sempre executado em %1%%%" -#: src/slic3r/GUI/PresetHints.cpp:50 +#: src/slic3r/GUI/PresetHints.cpp:51 msgid "except for the first %1% layers." msgstr "exceto para as primeiras camadas %1%." -#: src/slic3r/GUI/PresetHints.cpp:52 +#: src/slic3r/GUI/PresetHints.cpp:53 msgid "except for the first layer." msgstr "exceto para a primeira camada." -#: src/slic3r/GUI/PresetHints.cpp:54 +#: src/slic3r/GUI/PresetHints.cpp:55 msgid "will be turned off." msgstr "será desligado." -#: src/slic3r/GUI/PresetHints.cpp:155 +#: src/slic3r/GUI/PresetHints.cpp:156 msgid "external perimeters" msgstr "perímetros externos" -#: src/slic3r/GUI/PresetHints.cpp:164 +#: src/slic3r/GUI/PresetHints.cpp:165 msgid "perimeters" msgstr "perímetros" -#: src/slic3r/GUI/PresetHints.cpp:173 +#: src/slic3r/GUI/PresetHints.cpp:174 msgid "infill" msgstr "preenchimento" -#: src/slic3r/GUI/PresetHints.cpp:183 +#: src/slic3r/GUI/PresetHints.cpp:184 msgid "solid infill" msgstr "preenchimento sólido" -#: src/slic3r/GUI/PresetHints.cpp:191 +#: src/slic3r/GUI/PresetHints.cpp:192 msgid "top solid infill" msgstr "preenchimento sólido do topo" -#: src/slic3r/GUI/PresetHints.cpp:202 +#: src/slic3r/GUI/PresetHints.cpp:203 msgid "support" msgstr "suporte" -#: src/slic3r/GUI/PresetHints.cpp:212 +#: src/slic3r/GUI/PresetHints.cpp:213 msgid "support interface" msgstr "interface de suporte" -#: src/slic3r/GUI/PresetHints.cpp:218 +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "First layer volumetric" msgstr "Primeira camada volumétrica" -#: src/slic3r/GUI/PresetHints.cpp:218 +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "Bridging volumetric" msgstr "Ponteamento volumétrico" -#: src/slic3r/GUI/PresetHints.cpp:218 +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "Volumetric" msgstr "Volumétrica" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:220 msgid "flow rate is maximized" msgstr "a taxa de fluxo é maximizada" -#: src/slic3r/GUI/PresetHints.cpp:222 +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "by the print profile maximum" msgstr "pelo perfil de impressão máximo" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "when printing" msgstr "ao imprimir" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/PresetHints.cpp:225 msgid "with a volumetric rate" msgstr "com uma taxa volumétrica" -#: src/slic3r/GUI/PresetHints.cpp:228 +#: src/slic3r/GUI/PresetHints.cpp:229 #, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm ³/s na velocidade do filamento %3.2f mm/s." -#: src/slic3r/GUI/PresetHints.cpp:246 +#: src/slic3r/GUI/PresetHints.cpp:247 msgid "" "Recommended object thin wall thickness: Not available due to invalid layer " "height." @@ -3991,17 +5088,56 @@ msgstr "" "Espessura de parede fina do objeto recomendado: não disponível devido à " "altura da camada inválida." -#: src/slic3r/GUI/PresetHints.cpp:262 +#: src/slic3r/GUI/PresetHints.cpp:263 #, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "" "Espessura de parede fina do objeto recomendado para a altura da camada %.2f e" -#: src/slic3r/GUI/PresetHints.cpp:268 +#: src/slic3r/GUI/PresetHints.cpp:270 #, c-format msgid "%d lines: %.2f mm" msgstr "%d linhas: %.2f mm" +#: src/slic3r/GUI/PresetHints.cpp:274 +msgid "" +"Recommended object thin wall thickness: Not available due to excessively " +"small extrusion width." +msgstr "" +"Espessura fina da parede do objeto recomendada: Não disponível devido à " +"largura de extrusão excessivamente pequena." + +#: src/slic3r/GUI/PresetHints.cpp:304 +msgid "" +"Top / bottom shell thickness hint: Not available due to invalid layer height." +msgstr "" +"Espessura superior/inferior da concha. Dica: Não disponível devido à altura " +"da camada inválida." + +#: src/slic3r/GUI/PresetHints.cpp:317 +msgid "Top shell is %1% mm thick for layer height %2% mm." +msgstr "A camada superior tem %1% de espessura para altura da camada %2% mm." + +#: src/slic3r/GUI/PresetHints.cpp:320 +msgid "Minimum top shell thickness is %1% mm." +msgstr "A espessura mínima da camada superior é de %1% mm." + +#: src/slic3r/GUI/PresetHints.cpp:323 +msgid "Top is open." +msgstr "Topo está aberto" + +#: src/slic3r/GUI/PresetHints.cpp:336 +msgid "Bottom shell is %1% mm thick for layer height %2% mm." +msgstr "A camada inferior tem %1% de espessura para a altura da camada %2% mm." + +#: src/slic3r/GUI/PresetHints.cpp:339 +msgid "Minimum bottom shell thickness is %1% mm." +msgstr "A espessura mínima da camada inferior é de %1% mm." + +#: src/slic3r/GUI/PresetHints.cpp:342 +msgid "Bottom is open." +msgstr "Base está aberta" + #: src/slic3r/GUI/PrintHostDialogs.cpp:33 msgid "Send G-Code to printer host" msgstr "Enviar G-code para o host da impressora" @@ -4075,13 +5211,13 @@ msgstr "Não usar Ramming" msgid "Time" msgstr "Tempo" -#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:82 -#: src/libslic3r/PrintConfig.cpp:627 src/libslic3r/PrintConfig.cpp:671 -#: src/libslic3r/PrintConfig.cpp:686 src/libslic3r/PrintConfig.cpp:2349 -#: src/libslic3r/PrintConfig.cpp:2358 src/libslic3r/PrintConfig.cpp:2418 -#: src/libslic3r/PrintConfig.cpp:2426 src/libslic3r/PrintConfig.cpp:2434 -#: src/libslic3r/PrintConfig.cpp:2441 src/libslic3r/PrintConfig.cpp:2449 -#: src/libslic3r/PrintConfig.cpp:2457 +#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 +#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 +#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 +#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 +#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 +#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "s" msgstr "s" @@ -4089,52 +5225,52 @@ msgstr "s" msgid "Volumetric speed" msgstr "Velocidade volumétrica" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:584 -#: src/libslic3r/PrintConfig.cpp:1234 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "mm³/s" msgstr "mm ³/s" -#: src/slic3r/GUI/Selection.cpp:146 +#: src/slic3r/GUI/Selection.cpp:147 msgid "Selection-Add" msgstr "Seleção-Adicionar" -#: src/slic3r/GUI/Selection.cpp:187 +#: src/slic3r/GUI/Selection.cpp:188 msgid "Selection-Remove" msgstr "Seleção-remover" -#: src/slic3r/GUI/Selection.cpp:219 +#: src/slic3r/GUI/Selection.cpp:220 msgid "Selection-Add Object" msgstr "Seleção-Adicionar objeto" -#: src/slic3r/GUI/Selection.cpp:238 +#: src/slic3r/GUI/Selection.cpp:239 msgid "Selection-Remove Object" msgstr "Seleção-remover objeto" -#: src/slic3r/GUI/Selection.cpp:256 +#: src/slic3r/GUI/Selection.cpp:257 msgid "Selection-Add Instance" msgstr "Instância de seleção-Adicionar" -#: src/slic3r/GUI/Selection.cpp:275 +#: src/slic3r/GUI/Selection.cpp:276 msgid "Selection-Remove Instance" msgstr "Seleção-remover instância" -#: src/slic3r/GUI/Selection.cpp:376 +#: src/slic3r/GUI/Selection.cpp:377 msgid "Selection-Add All" msgstr "Seleção-adicionar todos" -#: src/slic3r/GUI/Selection.cpp:402 +#: src/slic3r/GUI/Selection.cpp:403 msgid "Selection-Remove All" msgstr "Seleção-remover todos" -#: src/slic3r/GUI/Selection.cpp:939 +#: src/slic3r/GUI/Selection.cpp:940 msgid "Scale To Fit" msgstr "Dimensionar para caber" -#: src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/Selection.cpp:1477 msgid "Set Printable Instance" msgstr "Definir instância imprimível" -#: src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/Selection.cpp:1477 msgid "Set Unprintable Instance" msgstr "Definir instância não imprimível" @@ -4146,34 +5282,34 @@ msgstr "Informações do sistema" msgid "Copy to Clipboard" msgstr "Copiar para a Área de Transferência" -#: src/slic3r/GUI/Tab.cpp:52 src/libslic3r/PrintConfig.cpp:239 +#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 msgid "Compatible printers" msgstr "Impressoras compatíveis" -#: src/slic3r/GUI/Tab.cpp:53 +#: src/slic3r/GUI/Tab.cpp:51 msgid "Select the printers this profile is compatible with." msgstr "Selecione as impressoras com as quais este perfil é compatível." -#: src/slic3r/GUI/Tab.cpp:58 src/libslic3r/PrintConfig.cpp:254 +#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 msgid "Compatible print profiles" msgstr "Perfis de impressão compatíveis" -#: src/slic3r/GUI/Tab.cpp:59 +#: src/slic3r/GUI/Tab.cpp:57 msgid "Select the print profiles this profile is compatible with." msgstr "" "Selecione os perfis de impressão com os quais este perfil é compatível." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:135 +#: src/slic3r/GUI/Tab.cpp:133 #, c-format msgid "Save current %s" msgstr "Salvar %s atual" -#: src/slic3r/GUI/Tab.cpp:136 +#: src/slic3r/GUI/Tab.cpp:134 msgid "Delete this preset" msgstr "Exclua esta predefinição" -#: src/slic3r/GUI/Tab.cpp:141 +#: src/slic3r/GUI/Tab.cpp:139 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." @@ -4181,277 +5317,284 @@ msgstr "" "Passe o cursor sobre os botões para encontrar mais informações \n" "ou clique neste botão." -#: src/slic3r/GUI/Tab.cpp:943 +#: src/slic3r/GUI/Tab.cpp:241 +msgid "Add a new printer" +msgstr "Adicionar uma nova impressora" + +#: src/slic3r/GUI/Tab.cpp:953 msgid "This is a default preset." msgstr "Esta é uma predefinição padrão." -#: src/slic3r/GUI/Tab.cpp:945 +#: src/slic3r/GUI/Tab.cpp:955 msgid "This is a system preset." msgstr "Esta é uma predefinição do sistema." -#: src/slic3r/GUI/Tab.cpp:947 +#: src/slic3r/GUI/Tab.cpp:957 msgid "Current preset is inherited from the default preset." msgstr "Predefinição atual é herdada da predefinição padrão." -#: src/slic3r/GUI/Tab.cpp:950 -#, c-format -msgid "" -"Current preset is inherited from:\n" -"\t%s" -msgstr "" -"Predefinição atual é herdada de:\n" -"\t%s" +#: src/slic3r/GUI/Tab.cpp:959 +msgid "Current preset is inherited from" +msgstr "Predefinição atual é herdada de" -#: src/slic3r/GUI/Tab.cpp:954 +#: src/slic3r/GUI/Tab.cpp:963 msgid "It can't be deleted or modified." msgstr "Ele não pode ser excluído ou modificado." -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:964 msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" "Todas as modificações devem ser salvas como uma nova predefinição herdada de " "uma presente." -#: src/slic3r/GUI/Tab.cpp:956 +#: src/slic3r/GUI/Tab.cpp:965 msgid "To do that please specify a new name for the preset." msgstr "Para fazer isso, especifique um novo nome para a predefinição." -#: src/slic3r/GUI/Tab.cpp:960 +#: src/slic3r/GUI/Tab.cpp:969 msgid "Additional information:" msgstr "Informações adicionais:" -#: src/slic3r/GUI/Tab.cpp:966 +#: src/slic3r/GUI/Tab.cpp:975 msgid "printer model" msgstr "modelo de impressora" -#: src/slic3r/GUI/Tab.cpp:974 +#: src/slic3r/GUI/Tab.cpp:983 msgid "default print profile" msgstr "perfil de impressão padrão" -#: src/slic3r/GUI/Tab.cpp:977 +#: src/slic3r/GUI/Tab.cpp:986 msgid "default filament profile" msgstr "perfil de filamento padrão" -#: src/slic3r/GUI/Tab.cpp:991 +#: src/slic3r/GUI/Tab.cpp:1000 msgid "default SLA material profile" msgstr "perfil de material SLA padrão" -#: src/slic3r/GUI/Tab.cpp:995 +#: src/slic3r/GUI/Tab.cpp:1004 msgid "default SLA print profile" msgstr "perfil de impressão padrão do SLA" -#: src/slic3r/GUI/Tab.cpp:1032 src/slic3r/GUI/Tab.cpp:3731 +#: src/slic3r/GUI/Tab.cpp:1012 +msgid "full profile name" +msgstr "Nome customizado da config." + +#: src/slic3r/GUI/Tab.cpp:1013 +msgid "symbolic profile name" +msgstr "nome customizado da config.:" + +#: src/slic3r/GUI/Tab.cpp:1047 src/slic3r/GUI/Tab.cpp:3600 msgid "Layers and perimeters" msgstr "Camadas e perímetros" -#: src/slic3r/GUI/Tab.cpp:1037 +#: src/slic3r/GUI/Tab.cpp:1052 msgid "Vertical shells" msgstr "Paredes verticais" -#: src/slic3r/GUI/Tab.cpp:1048 +#: src/slic3r/GUI/Tab.cpp:1063 msgid "Horizontal shells" msgstr "Paredes horizontais" -#: src/slic3r/GUI/Tab.cpp:1049 src/libslic3r/PrintConfig.cpp:1759 +#: src/slic3r/GUI/Tab.cpp:1064 src/libslic3r/PrintConfig.cpp:1780 msgid "Solid layers" msgstr "Camadas sólidas" -#: src/slic3r/GUI/Tab.cpp:1054 +#: src/slic3r/GUI/Tab.cpp:1068 +msgid "Minimum shell thickness" +msgstr "Espessura mínima da concha" + +#: src/slic3r/GUI/Tab.cpp:1079 msgid "Quality (slower slicing)" msgstr "Qualidade (fatiamento mais lento)" -#: src/slic3r/GUI/Tab.cpp:1072 +#: src/slic3r/GUI/Tab.cpp:1097 msgid "Reducing printing time" msgstr "Reduzindo o tempo de impressão" -#: src/slic3r/GUI/Tab.cpp:1084 +#: src/slic3r/GUI/Tab.cpp:1109 msgid "Skirt and brim" msgstr "Saia e aba" -#: src/slic3r/GUI/Tab.cpp:1101 +#: src/slic3r/GUI/Tab.cpp:1126 msgid "Raft" msgstr "Estrado" -#: src/slic3r/GUI/Tab.cpp:1105 +#: src/slic3r/GUI/Tab.cpp:1130 msgid "Options for support material and raft" msgstr "Opções para material de suporte e estrado" -#: src/slic3r/GUI/Tab.cpp:1120 +#: src/slic3r/GUI/Tab.cpp:1145 msgid "Speed for print moves" msgstr "Velocidade para movimentos de impressão" -#: src/slic3r/GUI/Tab.cpp:1132 +#: src/slic3r/GUI/Tab.cpp:1157 msgid "Speed for non-print moves" msgstr "Velocidade para movimentos não impressos" -#: src/slic3r/GUI/Tab.cpp:1135 +#: src/slic3r/GUI/Tab.cpp:1160 msgid "Modifiers" msgstr "Modificadores" -#: src/slic3r/GUI/Tab.cpp:1138 +#: src/slic3r/GUI/Tab.cpp:1163 msgid "Acceleration control (advanced)" msgstr "Controle de aceleração (avançado)" -#: src/slic3r/GUI/Tab.cpp:1145 +#: src/slic3r/GUI/Tab.cpp:1170 msgid "Autospeed (advanced)" msgstr "Velocidade automática (avançado)" -#: src/slic3r/GUI/Tab.cpp:1153 +#: src/slic3r/GUI/Tab.cpp:1178 msgid "Multiple Extruders" msgstr "Extrusoras múltiplas" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1186 msgid "Ooze prevention" msgstr "Prevenção de vazão" -#: src/slic3r/GUI/Tab.cpp:1178 +#: src/slic3r/GUI/Tab.cpp:1204 msgid "Extrusion width" msgstr "Espessura da extrusão" -#: src/slic3r/GUI/Tab.cpp:1188 +#: src/slic3r/GUI/Tab.cpp:1214 msgid "Overlap" msgstr "Cobrir" -#: src/slic3r/GUI/Tab.cpp:1191 +#: src/slic3r/GUI/Tab.cpp:1217 msgid "Flow" msgstr "Fluxo" -#: src/slic3r/GUI/Tab.cpp:1200 +#: src/slic3r/GUI/Tab.cpp:1226 msgid "Other" msgstr "Outro" -#: src/slic3r/GUI/Tab.cpp:1203 src/slic3r/GUI/Tab.cpp:3789 +#: src/slic3r/GUI/Tab.cpp:1229 src/slic3r/GUI/Tab.cpp:3669 msgid "Output options" msgstr "Opções de saída" -#: src/slic3r/GUI/Tab.cpp:1204 +#: src/slic3r/GUI/Tab.cpp:1230 msgid "Sequential printing" msgstr "Impressão sequencial" -#: src/slic3r/GUI/Tab.cpp:1206 +#: src/slic3r/GUI/Tab.cpp:1232 msgid "Extruder clearance (mm)" msgstr "Folga da extrusora (milímetro)" -#: src/slic3r/GUI/Tab.cpp:1215 src/slic3r/GUI/Tab.cpp:3790 +#: src/slic3r/GUI/Tab.cpp:1237 src/slic3r/GUI/Tab.cpp:3670 msgid "Output file" msgstr "Arquivo de saída" -#: src/slic3r/GUI/Tab.cpp:1222 src/libslic3r/PrintConfig.cpp:1432 +#: src/slic3r/GUI/Tab.cpp:1244 src/libslic3r/PrintConfig.cpp:1453 msgid "Post-processing scripts" msgstr "Scripts de pós-processamento" -#: src/slic3r/GUI/Tab.cpp:1228 src/slic3r/GUI/Tab.cpp:1229 -#: src/slic3r/GUI/Tab.cpp:1752 src/slic3r/GUI/Tab.cpp:1753 -#: src/slic3r/GUI/Tab.cpp:2214 src/slic3r/GUI/Tab.cpp:2215 -#: src/slic3r/GUI/Tab.cpp:2328 src/slic3r/GUI/Tab.cpp:2329 -#: src/slic3r/GUI/Tab.cpp:3668 src/slic3r/GUI/Tab.cpp:3669 +#: src/slic3r/GUI/Tab.cpp:1250 src/slic3r/GUI/Tab.cpp:1251 +#: src/slic3r/GUI/Tab.cpp:1539 src/slic3r/GUI/Tab.cpp:1540 +#: src/slic3r/GUI/Tab.cpp:2014 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/Tab.cpp:2130 src/slic3r/GUI/Tab.cpp:2131 +#: src/slic3r/GUI/Tab.cpp:3537 src/slic3r/GUI/Tab.cpp:3538 msgid "Notes" msgstr "Notas" -#: src/slic3r/GUI/Tab.cpp:1235 src/slic3r/GUI/Tab.cpp:1760 -#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2335 -#: src/slic3r/GUI/Tab.cpp:3676 src/slic3r/GUI/Tab.cpp:3795 +#: src/slic3r/GUI/Tab.cpp:1257 src/slic3r/GUI/Tab.cpp:1547 +#: src/slic3r/GUI/Tab.cpp:2021 src/slic3r/GUI/Tab.cpp:2137 +#: src/slic3r/GUI/Tab.cpp:3545 src/slic3r/GUI/Tab.cpp:3675 msgid "Dependencies" msgstr "Dependências" -#: src/slic3r/GUI/Tab.cpp:1236 src/slic3r/GUI/Tab.cpp:1761 -#: src/slic3r/GUI/Tab.cpp:2222 src/slic3r/GUI/Tab.cpp:2336 -#: src/slic3r/GUI/Tab.cpp:3677 src/slic3r/GUI/Tab.cpp:3796 +#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 +#: src/slic3r/GUI/Tab.cpp:2022 src/slic3r/GUI/Tab.cpp:2138 +#: src/slic3r/GUI/Tab.cpp:3546 src/slic3r/GUI/Tab.cpp:3676 msgid "Profile dependencies" msgstr "Dependências de perfil" -#: src/slic3r/GUI/Tab.cpp:1538 src/slic3r/GUI/Tab.cpp:1593 +#: src/slic3r/GUI/Tab.cpp:1322 src/slic3r/GUI/Tab.cpp:1377 msgid "Filament Overrides" -msgstr "Sobrescrever config." +msgstr "Sobrescrever config. de filamento" -#: src/slic3r/GUI/Tab.cpp:1539 src/slic3r/GUI/Tab.cpp:1598 -#: src/slic3r/GUI/Tab.cpp:2570 +#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1382 +#: src/slic3r/GUI/Tab.cpp:2372 msgid "Retraction" msgstr "Retração" -#: src/slic3r/GUI/Tab.cpp:1648 src/libslic3r/PrintConfig.cpp:2030 +#: src/slic3r/GUI/Tab.cpp:1432 src/libslic3r/PrintConfig.cpp:2067 msgid "Temperature" msgstr "Temperatura" -#: src/slic3r/GUI/Tab.cpp:1654 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Bed" msgstr "Mesa" -#: src/slic3r/GUI/Tab.cpp:1659 +#: src/slic3r/GUI/Tab.cpp:1443 msgid "Cooling" msgstr "Resfriamento" -#: src/slic3r/GUI/Tab.cpp:1660 src/libslic3r/PrintConfig.cpp:1335 -#: src/libslic3r/PrintConfig.cpp:2150 +#: src/slic3r/GUI/Tab.cpp:1444 src/libslic3r/PrintConfig.cpp:1355 +#: src/libslic3r/PrintConfig.cpp:2200 msgid "Enable" msgstr "Habilitar" -#: src/slic3r/GUI/Tab.cpp:1671 +#: src/slic3r/GUI/Tab.cpp:1455 msgid "Fan settings" msgstr "Config. da ventoinha" -#: src/slic3r/GUI/Tab.cpp:1672 -msgid "Fan speed" -msgstr "Velocidade do ventoinha" - -#: src/slic3r/GUI/Tab.cpp:1680 +#: src/slic3r/GUI/Tab.cpp:1464 msgid "Cooling thresholds" msgstr "Limiares de resfriamento" -#: src/slic3r/GUI/Tab.cpp:1686 +#: src/slic3r/GUI/Tab.cpp:1470 msgid "Filament properties" msgstr "Propriedades de filamento" -#: src/slic3r/GUI/Tab.cpp:1690 +#: src/slic3r/GUI/Tab.cpp:1477 msgid "Print speed override" msgstr "Substituição da velocidade de impressão" -#: src/slic3r/GUI/Tab.cpp:1700 +#: src/slic3r/GUI/Tab.cpp:1487 msgid "Wipe tower parameters" msgstr "Parâmetros da torre de limpeza" -#: src/slic3r/GUI/Tab.cpp:1703 +#: src/slic3r/GUI/Tab.cpp:1490 msgid "Toolchange parameters with single extruder MM printers" msgstr "" "Parâmetros de mudança de ferramenta com impressoras de multi material com " "apenas uma extrusora" -#: src/slic3r/GUI/Tab.cpp:1717 +#: src/slic3r/GUI/Tab.cpp:1504 msgid "Ramming settings" -msgstr "config. de Ramming" +msgstr "Config. de Ramming" -#: src/slic3r/GUI/Tab.cpp:1739 src/slic3r/GUI/Tab.cpp:2177 +#: src/slic3r/GUI/Tab.cpp:1526 src/slic3r/GUI/Tab.cpp:1977 msgid "Custom G-code" msgstr "G-code customizado" -#: src/slic3r/GUI/Tab.cpp:1740 src/slic3r/GUI/Tab.cpp:2178 -#: src/libslic3r/PrintConfig.cpp:1785 src/libslic3r/PrintConfig.cpp:1800 +#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1978 +#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 msgid "Start G-code" msgstr "G-code de início" -#: src/slic3r/GUI/Tab.cpp:1746 src/slic3r/GUI/Tab.cpp:2184 -#: src/libslic3r/PrintConfig.cpp:369 src/libslic3r/PrintConfig.cpp:379 +#: src/slic3r/GUI/Tab.cpp:1533 src/slic3r/GUI/Tab.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 msgid "End G-code" msgstr "G-code de finalização" -#: src/slic3r/GUI/Tab.cpp:1803 +#: src/slic3r/GUI/Tab.cpp:1590 msgid "Volumetric flow hints not available" msgstr "Dicas de fluxo volumétrico não disponíveis" -#: src/slic3r/GUI/Tab.cpp:1889 src/slic3r/GUI/Tab.cpp:2117 +#: src/slic3r/GUI/Tab.cpp:1676 src/slic3r/GUI/Tab.cpp:1917 msgid "Test" msgstr "Teste" -#: src/slic3r/GUI/Tab.cpp:1899 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Could not get a valid Printer Host reference" msgstr "Não foi possível obter uma referência de host de impressora válida" -#: src/slic3r/GUI/Tab.cpp:1905 src/slic3r/GUI/Tab.cpp:2130 +#: src/slic3r/GUI/Tab.cpp:1691 src/slic3r/GUI/Tab.cpp:1930 msgid "Success!" msgstr "Sucesso!" -#: src/slic3r/GUI/Tab.cpp:1920 +#: src/slic3r/GUI/Tab.cpp:1711 msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" "signed certificate." @@ -4459,49 +5602,55 @@ msgstr "" "O arquivo HTTPS CA é opcional. Só é necessário se você usar HTTPS com um " "certificado auto-assinado." -#: src/slic3r/GUI/Tab.cpp:1933 +#: src/slic3r/GUI/Tab.cpp:1726 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "" "Arquivos de certificado (*. CRT, *. pem) | *. CRT; *. pem | Todos os " "arquivos | *. *" -#: src/slic3r/GUI/Tab.cpp:1934 +#: src/slic3r/GUI/Tab.cpp:1727 msgid "Open CA certificate file" msgstr "Abra o arquivo de certificado da CA" -#: src/slic3r/GUI/Tab.cpp:1962 +#: src/slic3r/GUI/Tab.cpp:1754 src/libslic3r/PrintConfig.cpp:111 +msgid "HTTPS CA File" +msgstr "Arquivo de CA HTTPS" + +#: src/slic3r/GUI/Tab.cpp:1755 #, c-format msgid "" -"HTTPS CA File:\n" -" \tOn this system, %s uses HTTPS certificates from the system Certificate " -"Store or Keychain.\n" -" \tTo use a custom CA file, please import your CA file into Certificate " -"Store / Keychain." +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." msgstr "" -"Arquivo HTTPS CA:\n" -" \tNeste sistema, %s usa certificados HTTPS do sistema Certificate Store " -"ou keychain.\n" -" \tPara usar um arquivo de CA personalizado, importe seu arquivo de CA " -"para o repositório de certificados/chaveiro." +"Neste sistema, %s usa certificados HTTPS do sistema Certificate Store ou " +"keychain." -#: src/slic3r/GUI/Tab.cpp:2002 src/slic3r/GUI/Tab.cpp:2243 +#: src/slic3r/GUI/Tab.cpp:1756 +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Para usar um arquivo de CA personalizado, importe seu arquivo de CA para o " +"repositório de certificados/chaveiro." + +#: src/slic3r/GUI/Tab.cpp:1799 src/slic3r/GUI/Tab.cpp:2043 msgid "Size and coordinates" msgstr "Tamanho e coordenadas" -#: src/slic3r/GUI/Tab.cpp:2007 src/slic3r/GUI/Tab.cpp:2248 -#: src/slic3r/GUI/Tab.cpp:3338 +#: src/slic3r/GUI/Tab.cpp:1804 src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:3178 msgid "Set" msgstr "Definir" -#: src/slic3r/GUI/Tab.cpp:2039 +#: src/slic3r/GUI/Tab.cpp:1836 msgid "Capabilities" msgstr "Capacidades" -#: src/slic3r/GUI/Tab.cpp:2044 +#: src/slic3r/GUI/Tab.cpp:1841 msgid "Number of extruders of the printer." msgstr "Número de extrusoras da impressora." -#: src/slic3r/GUI/Tab.cpp:2069 +#: src/slic3r/GUI/Tab.cpp:1869 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -4513,125 +5662,120 @@ msgstr "" "Você quer mudar o diâmetro para todas as extrusoras ao primeiro valor do " "diâmetro da ponteira da extrusora?" -#: src/slic3r/GUI/Tab.cpp:2072 src/slic3r/GUI/Tab.cpp:2540 -#: src/libslic3r/PrintConfig.cpp:1310 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2342 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "Nozzle diameter" msgstr "Diâmetro do bico" -#: src/slic3r/GUI/Tab.cpp:2102 +#: src/slic3r/GUI/Tab.cpp:1902 msgid "USB/Serial connection" msgstr "Conexão USB/serial" -#: src/slic3r/GUI/Tab.cpp:2103 src/libslic3r/PrintConfig.cpp:1640 +#: src/slic3r/GUI/Tab.cpp:1903 src/libslic3r/PrintConfig.cpp:1661 msgid "Serial port" msgstr "Porte Serial" -#: src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:1908 msgid "Rescan serial ports" msgstr "Portas seriais de Rescan" -#: src/slic3r/GUI/Tab.cpp:2130 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Connection to printer works correctly." msgstr "A ligação à impressora funciona corretamente." -#: src/slic3r/GUI/Tab.cpp:2133 +#: src/slic3r/GUI/Tab.cpp:1933 msgid "Connection failed." msgstr "A conexão falhou." -#: src/slic3r/GUI/Tab.cpp:2146 src/slic3r/GUI/Tab.cpp:2323 +#: src/slic3r/GUI/Tab.cpp:1946 src/slic3r/GUI/Tab.cpp:2125 msgid "Print Host upload" msgstr "Upload do host de impressão" -#: src/slic3r/GUI/Tab.cpp:2190 src/libslic3r/PrintConfig.cpp:138 +#: src/slic3r/GUI/Tab.cpp:1990 src/libslic3r/PrintConfig.cpp:153 msgid "Before layer change G-code" msgstr "Antes da mudança de camada G-code" -#: src/slic3r/GUI/Tab.cpp:2196 src/libslic3r/PrintConfig.cpp:1056 +#: src/slic3r/GUI/Tab.cpp:1996 src/libslic3r/PrintConfig.cpp:1080 msgid "After layer change G-code" msgstr "Após a mudança da camada do G-code" -#: src/slic3r/GUI/Tab.cpp:2202 src/libslic3r/PrintConfig.cpp:2056 +#: src/slic3r/GUI/Tab.cpp:2002 src/libslic3r/PrintConfig.cpp:2093 msgid "Tool change G-code" msgstr "G-code de troca de ferramenta" -#: src/slic3r/GUI/Tab.cpp:2208 +#: src/slic3r/GUI/Tab.cpp:2008 msgid "Between objects G-code (for sequential printing)" msgstr "G-code entre objetos (para impressão sequencial)" -#: src/slic3r/GUI/Tab.cpp:2280 +#: src/slic3r/GUI/Tab.cpp:2080 msgid "Display" msgstr "Exibição" -#: src/slic3r/GUI/Tab.cpp:2295 +#: src/slic3r/GUI/Tab.cpp:2095 msgid "Tilt" msgstr "Inclinar" -#: src/slic3r/GUI/Tab.cpp:2296 +#: src/slic3r/GUI/Tab.cpp:2096 msgid "Tilt time" msgstr "Tempo de inclinação" -#: src/slic3r/GUI/Tab.cpp:2302 src/slic3r/GUI/Tab.cpp:3650 +#: src/slic3r/GUI/Tab.cpp:2102 src/slic3r/GUI/Tab.cpp:3521 msgid "Corrections" msgstr "Correções" -#: src/slic3r/GUI/Tab.cpp:2317 src/slic3r/GUI/Tab.cpp:3646 +#: src/slic3r/GUI/Tab.cpp:2119 src/slic3r/GUI/Tab.cpp:3517 msgid "Exposure" msgstr "Exposição" -#: src/slic3r/GUI/Tab.cpp:2388 src/slic3r/GUI/Tab.cpp:2473 -#: src/libslic3r/PrintConfig.cpp:1106 src/libslic3r/PrintConfig.cpp:1124 -#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1159 -#: src/libslic3r/PrintConfig.cpp:1170 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1192 +#: src/slic3r/GUI/Tab.cpp:2190 src/slic3r/GUI/Tab.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 +#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 +#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 +#: src/libslic3r/PrintConfig.cpp:1209 msgid "Machine limits" msgstr "Limites da máquina" -#: src/slic3r/GUI/Tab.cpp:2402 +#: src/slic3r/GUI/Tab.cpp:2204 msgid "Values in this column are for Normal mode" msgstr "Valores nesta coluna são para o modo normal" -#: src/slic3r/GUI/Tab.cpp:2403 +#: src/slic3r/GUI/Tab.cpp:2205 msgid "Normal" msgstr "Normal" -#: src/slic3r/GUI/Tab.cpp:2408 +#: src/slic3r/GUI/Tab.cpp:2210 msgid "Values in this column are for Stealth mode" msgstr "Valores nesta coluna são para o modo furtivo" -#: src/slic3r/GUI/Tab.cpp:2409 +#: src/slic3r/GUI/Tab.cpp:2211 msgid "Stealth" msgstr "Furtivo" -#: src/slic3r/GUI/Tab.cpp:2417 +#: src/slic3r/GUI/Tab.cpp:2219 msgid "Maximum feedrates" msgstr "Velocidade máxima de alimentação" -#: src/slic3r/GUI/Tab.cpp:2422 +#: src/slic3r/GUI/Tab.cpp:2224 msgid "Maximum accelerations" msgstr "Acelerações máximas" -#: src/slic3r/GUI/Tab.cpp:2429 +#: src/slic3r/GUI/Tab.cpp:2231 msgid "Jerk limits" msgstr "Limites de empurrão" -#: src/slic3r/GUI/Tab.cpp:2434 +#: src/slic3r/GUI/Tab.cpp:2236 msgid "Minimum feedrates" msgstr "Velocidades alimentação mínimos" -#: src/slic3r/GUI/Tab.cpp:2498 src/slic3r/GUI/Tab.cpp:2506 +#: src/slic3r/GUI/Tab.cpp:2300 src/slic3r/GUI/Tab.cpp:2308 msgid "Single extruder MM setup" -msgstr "config. de extrusora multi material" +msgstr "Config. de extrusora multi material" -#: src/slic3r/GUI/Tab.cpp:2507 +#: src/slic3r/GUI/Tab.cpp:2309 msgid "Single extruder multimaterial parameters" msgstr "Parâmetros para extrusora única multimaterial" -#: src/slic3r/GUI/Tab.cpp:2520 src/libslic3r/GCode/PreviewData.cpp:461 -#, c-format -msgid "Extruder %d" -msgstr "Extrusora %d" - -#: src/slic3r/GUI/Tab.cpp:2538 +#: src/slic3r/GUI/Tab.cpp:2340 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -4639,19 +5783,19 @@ msgstr "" "Esta é uma única impressora multimaterial extrusora, diâmetros de todas as " "extrusoras será definido para o novo valor. Você quer prosseguir?" -#: src/slic3r/GUI/Tab.cpp:2562 +#: src/slic3r/GUI/Tab.cpp:2364 msgid "Layer height limits" msgstr "Limites de altura da camada" -#: src/slic3r/GUI/Tab.cpp:2567 +#: src/slic3r/GUI/Tab.cpp:2369 msgid "Position (for multi-extruder printers)" msgstr "Posição (para impressoras multiextrusoras)" -#: src/slic3r/GUI/Tab.cpp:2573 +#: src/slic3r/GUI/Tab.cpp:2375 msgid "Only lift Z" msgstr "Apenas elevar Z" -#: src/slic3r/GUI/Tab.cpp:2586 +#: src/slic3r/GUI/Tab.cpp:2388 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -4659,11 +5803,11 @@ msgstr "" "Retração quando a ferramenta está desativada (config. avançadas para " "instalações multiextrusoras)" -#: src/slic3r/GUI/Tab.cpp:2594 +#: src/slic3r/GUI/Tab.cpp:2396 msgid "Reset to Filament Color" msgstr "Restabelecer cor do filamento" -#: src/slic3r/GUI/Tab.cpp:2775 +#: src/slic3r/GUI/Tab.cpp:2577 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -4673,80 +5817,89 @@ msgstr "" "\n" "Devo desativá-lo, a fim de permitir a retração de firmware?" -#: src/slic3r/GUI/Tab.cpp:2777 +#: src/slic3r/GUI/Tab.cpp:2579 msgid "Firmware Retraction" msgstr "Retração do firmware" -#: src/slic3r/GUI/Tab.cpp:3106 +#: src/slic3r/GUI/Tab.cpp:2921 #, c-format msgid "Default preset (%s)" msgstr "Predefinição padrão ( %s)" -#: src/slic3r/GUI/Tab.cpp:3107 +#: src/slic3r/GUI/Tab.cpp:2922 #, c-format msgid "Preset (%s)" msgstr "Predefinição ( %s)" -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/Tab.cpp:2939 msgid "has the following unsaved changes:" msgstr "tem as seguintes alterações não salvas:" -#: src/slic3r/GUI/Tab.cpp:3127 +#: src/slic3r/GUI/Tab.cpp:2942 msgid "is not compatible with printer" msgstr "não é compatível com a impressora" -#: src/slic3r/GUI/Tab.cpp:3128 +#: src/slic3r/GUI/Tab.cpp:2943 msgid "is not compatible with print profile" msgstr "não é compatível com o perfil de impressão" -#: src/slic3r/GUI/Tab.cpp:3130 +#: src/slic3r/GUI/Tab.cpp:2945 msgid "and it has the following unsaved changes:" msgstr "e tem as seguintes alterações não salvas:" -#: src/slic3r/GUI/Tab.cpp:3134 +#: src/slic3r/GUI/Tab.cpp:2949 msgid "Unsaved Changes" msgstr "Alterações não salvas" -#: src/slic3r/GUI/Tab.cpp:3225 +#: src/slic3r/GUI/Tab.cpp:3047 +msgctxt "PresetName" msgid "%1% - Copy" msgstr "%1% - cópia" -#: src/slic3r/GUI/Tab.cpp:3248 +#: src/slic3r/GUI/Tab.cpp:3070 msgid "The supplied name is empty. It can't be saved." msgstr "O nome fornecido está vazio. Não pode ser salvo." -#: src/slic3r/GUI/Tab.cpp:3253 +#: src/slic3r/GUI/Tab.cpp:3075 msgid "Cannot overwrite a system profile." msgstr "Não é possível substituir um perfil de sistema." -#: src/slic3r/GUI/Tab.cpp:3257 +#: src/slic3r/GUI/Tab.cpp:3079 msgid "Cannot overwrite an external profile." msgstr "Não é possível substituir um perfil externo." -#: src/slic3r/GUI/Tab.cpp:3283 +#: src/slic3r/GUI/Tab.cpp:3084 +msgid "Preset with name \"%1%\" already exists." +msgstr "Predefinido com nome \"%1%\" já existe." + +#: src/slic3r/GUI/Tab.cpp:3085 +msgid "Replace?" +msgstr "Substituir?" + +#: src/slic3r/GUI/Tab.cpp:3123 msgid "remove" msgstr "remover" -#: src/slic3r/GUI/Tab.cpp:3283 +#: src/slic3r/GUI/Tab.cpp:3123 msgid "delete" msgstr "excluir" #. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3285 +#: src/slic3r/GUI/Tab.cpp:3125 msgid "Are you sure you want to %1% the selected preset?" msgstr "Tem certeza de que deseja %1% da predefinição selecionada?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3288 +#: src/slic3r/GUI/Tab.cpp:3128 msgid "%1% Preset" msgstr "%1% Predefinição" -#: src/slic3r/GUI/Tab.cpp:3414 +#: src/slic3r/GUI/Tab.cpp:3254 msgid "LOCKED LOCK" msgstr "CADEADO FECHADO" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3416 +#: src/slic3r/GUI/Tab.cpp:3256 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -4754,12 +5907,12 @@ msgstr "" "indica que as config. são as mesmas que os valores do sistema (ou padrão) " "para o grupo de opções atual" -#: src/slic3r/GUI/Tab.cpp:3418 +#: src/slic3r/GUI/Tab.cpp:3258 msgid "UNLOCKED LOCK" msgstr "CADEADO ABERTO" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3420 +#: src/slic3r/GUI/Tab.cpp:3260 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -4771,26 +5924,26 @@ msgstr "" "Clique no ícone DESBLOQUEAR para redefinir todas as config. do grupo de " "opções atual para os valores do sistema (ou padrão)." -#: src/slic3r/GUI/Tab.cpp:3425 +#: src/slic3r/GUI/Tab.cpp:3265 msgid "WHITE BULLET" msgstr "PONTO BRANCO" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3427 +#: src/slic3r/GUI/Tab.cpp:3267 msgid "" -"for the left button: \tindicates a non-system (or non-default) preset,\n" -"for the right button: \tindicates that the settings hasn't been modified." +"for the left button: indicates a non-system (or non-default) preset,\n" +"for the right button: indicates that the settings hasn't been modified." msgstr "" -"para o botão esquerdo: \t indica uma predefinição que não é do sistema (ou " -"não-padrão),\n" -"para o botão direito: \t indica que as config. não foram modificadas." +"para o botão esquerdo: indica uma predefinição que não é do sistema (ou não-" +"padrão),\n" +"para o botão direito: indica que as config. não foram modificadas." -#: src/slic3r/GUI/Tab.cpp:3430 +#: src/slic3r/GUI/Tab.cpp:3270 msgid "BACK ARROW" msgstr "REDEFINIR" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3432 +#: src/slic3r/GUI/Tab.cpp:3272 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -4802,7 +5955,7 @@ msgstr "" "Clique no ícone REDEFINIR para redefinir todas as config. do grupo de opções " "atual para a última predefinição salva." -#: src/slic3r/GUI/Tab.cpp:3442 +#: src/slic3r/GUI/Tab.cpp:3282 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -4810,7 +5963,7 @@ msgstr "" "O ícone CADEADO FECHADO indica que as config. são as mesmas que os valores " "do sistema (ou padrão) para o grupo de opções atual" -#: src/slic3r/GUI/Tab.cpp:3444 +#: src/slic3r/GUI/Tab.cpp:3284 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -4822,13 +5975,13 @@ msgstr "" "Clique para redefinir todas as config. para o grupo de opções atual para os " "valores do sistema (ou padrão)." -#: src/slic3r/GUI/Tab.cpp:3447 +#: src/slic3r/GUI/Tab.cpp:3287 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" "O ícone PONTO BRANCO indica uma predefinição que não é do sistema (ou não " "predefinida)." -#: src/slic3r/GUI/Tab.cpp:3450 +#: src/slic3r/GUI/Tab.cpp:3290 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -4836,7 +5989,7 @@ msgstr "" "O ícone PONTO BRANCO indica que as config. são as mesmas da última " "predefinição salva para o grupo de opções atual." -#: src/slic3r/GUI/Tab.cpp:3452 +#: src/slic3r/GUI/Tab.cpp:3292 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -4848,7 +6001,7 @@ msgstr "" "Clique para redefinir todas as config. do grupo de opções atual para a " "última predefinição salva." -#: src/slic3r/GUI/Tab.cpp:3458 +#: src/slic3r/GUI/Tab.cpp:3298 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -4856,7 +6009,7 @@ msgstr "" "O ícone CADEADO FECHADO indica que o valor é o mesmo que o valor do sistema " "(ou padrão)." -#: src/slic3r/GUI/Tab.cpp:3459 +#: src/slic3r/GUI/Tab.cpp:3299 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -4866,7 +6019,7 @@ msgstr "" "valor do sistema (ou padrão).\n" "Clique para redefinir o valor atual para o valor do sistema (ou padrão)." -#: src/slic3r/GUI/Tab.cpp:3465 +#: src/slic3r/GUI/Tab.cpp:3305 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -4874,7 +6027,7 @@ msgstr "" "O ícone PONTO BRANCO indica que o valor é o mesmo da última predefinição " "guardada." -#: src/slic3r/GUI/Tab.cpp:3466 +#: src/slic3r/GUI/Tab.cpp:3306 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -4885,61 +6038,56 @@ msgstr "" "Clique para redefinir o valor atual para a última predefinição salva." #. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3579 +#: src/slic3r/GUI/Tab.cpp:3419 #, c-format msgid "Save %s as:" msgstr "Salvar %s como:" -#: src/slic3r/GUI/Tab.cpp:3623 +#: src/slic3r/GUI/Tab.cpp:3463 msgid "the following suffix is not allowed:" msgstr "o sufixo seguinte não é permitido:" -#: src/slic3r/GUI/Tab.cpp:3627 +#: src/slic3r/GUI/Tab.cpp:3467 msgid "The supplied name is not available." msgstr "O nome fornecido não está disponível." -#: src/slic3r/GUI/Tab.cpp:3640 +#: src/slic3r/GUI/Tab.cpp:3480 src/slic3r/GUI/Tab.cpp:3482 msgid "Material" msgstr "Material" -#: src/slic3r/GUI/Tab.cpp:3642 src/slic3r/GUI/Tab.cpp:3733 -#: src/slic3r/GUI/wxExtensions.cpp:482 -msgid "Layers" -msgstr "Camadas" - -#: src/slic3r/GUI/Tab.cpp:3741 +#: src/slic3r/GUI/Tab.cpp:3610 msgid "Support head" msgstr "Cabeça de suporte" -#: src/slic3r/GUI/Tab.cpp:3746 +#: src/slic3r/GUI/Tab.cpp:3615 msgid "Support pillar" msgstr "Pilar de suporte" -#: src/slic3r/GUI/Tab.cpp:3760 +#: src/slic3r/GUI/Tab.cpp:3631 msgid "Connection of the support sticks and junctions" msgstr "Conexão das varas de suporte e junções" -#: src/slic3r/GUI/Tab.cpp:3765 +#: src/slic3r/GUI/Tab.cpp:3636 msgid "Automatic generation" msgstr "Geração Automática" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:428 +#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 msgid "Print Settings" msgstr "Config. de impressão" -#: src/slic3r/GUI/Tab.hpp:353 +#: src/slic3r/GUI/Tab.hpp:355 msgid "Filament Settings" msgstr "Config. de filamento" -#: src/slic3r/GUI/Tab.hpp:389 +#: src/slic3r/GUI/Tab.hpp:391 msgid "Printer Settings" msgstr "Config. da impressora" -#: src/slic3r/GUI/Tab.hpp:413 +#: src/slic3r/GUI/Tab.hpp:416 msgid "Material Settings" msgstr "Config. de material" -#: src/slic3r/GUI/Tab.hpp:440 +#: src/slic3r/GUI/Tab.hpp:443 msgid "Save preset" msgstr "Salvar predefinição" @@ -4952,39 +6100,40 @@ msgstr "Atualização disponível" msgid "New version of %s is available" msgstr "Nova versão do %s está disponível" -#: src/slic3r/GUI/UpdateDialogs.cpp:45 +#: src/slic3r/GUI/UpdateDialogs.cpp:43 msgid "Current version:" msgstr "Versão atual:" -#: src/slic3r/GUI/UpdateDialogs.cpp:47 +#: src/slic3r/GUI/UpdateDialogs.cpp:45 msgid "New version:" msgstr "Nova versão:" -#: src/slic3r/GUI/UpdateDialogs.cpp:55 +#: src/slic3r/GUI/UpdateDialogs.cpp:53 msgid "Changelog && Download" msgstr "Changelog && Download" -#: src/slic3r/GUI/UpdateDialogs.cpp:62 src/slic3r/GUI/UpdateDialogs.cpp:127 +#: src/slic3r/GUI/UpdateDialogs.cpp:60 src/slic3r/GUI/UpdateDialogs.cpp:125 +#: src/slic3r/GUI/UpdateDialogs.cpp:183 msgid "Open changelog page" msgstr "Abra a página do changelog" -#: src/slic3r/GUI/UpdateDialogs.cpp:67 +#: src/slic3r/GUI/UpdateDialogs.cpp:65 msgid "Open download page" msgstr "Abrir página de download" -#: src/slic3r/GUI/UpdateDialogs.cpp:73 +#: src/slic3r/GUI/UpdateDialogs.cpp:71 msgid "Don't notify about new releases any more" msgstr "Não notifique mais sobre novas versões" -#: src/slic3r/GUI/UpdateDialogs.cpp:91 src/slic3r/GUI/UpdateDialogs.cpp:207 +#: src/slic3r/GUI/UpdateDialogs.cpp:89 src/slic3r/GUI/UpdateDialogs.cpp:266 msgid "Configuration update" msgstr "Atualização de config." -#: src/slic3r/GUI/UpdateDialogs.cpp:91 +#: src/slic3r/GUI/UpdateDialogs.cpp:89 msgid "Configuration update is available" msgstr "A atualização de config. está disponível" -#: src/slic3r/GUI/UpdateDialogs.cpp:94 +#: src/slic3r/GUI/UpdateDialogs.cpp:92 msgid "" "Would you like to install it?\n" "\n" @@ -5001,21 +6150,48 @@ msgstr "" "\n" "Pacotes de config. atualizados:" -#: src/slic3r/GUI/UpdateDialogs.cpp:115 +#: src/slic3r/GUI/UpdateDialogs.cpp:113 src/slic3r/GUI/UpdateDialogs.cpp:173 msgid "Comment:" msgstr "Comentário:" -#: src/slic3r/GUI/UpdateDialogs.cpp:151 +#: src/slic3r/GUI/UpdateDialogs.cpp:148 src/slic3r/GUI/UpdateDialogs.cpp:210 #, c-format msgid "%s incompatibility" msgstr "%s incompatibilidade" -#: src/slic3r/GUI/UpdateDialogs.cpp:152 +#: src/slic3r/GUI/UpdateDialogs.cpp:148 +msgid "You must install a configuration update." +msgstr "Você deve instalar uma atualização de configuração." + +#: src/slic3r/GUI/UpdateDialogs.cpp:151 +#, c-format +msgid "" +"%s will now start updates. Otherwise it won't be able to start.\n" +"\n" +"Note that a full configuration snapshot will be created first. It can then " +"be restored at any time should there be a problem with the new version.\n" +"\n" +"Updated configuration bundles:" +msgstr "" +"%s agora iniciará atualizações. Caso contrário, não será capaz de começar.\n" +"\n" +"Observe que um instantâneo de configuração completo será criado primeiro. " +"Ele pode então ser restaurado a qualquer momento caso haja um problema com a " +"nova versão.\n" +"\n" +"Pacotes de configuração atualizados:" + +#: src/slic3r/GUI/UpdateDialogs.cpp:191 src/slic3r/GUI/UpdateDialogs.cpp:246 +#, c-format +msgid "Exit %s" +msgstr "Saída %s" + +#: src/slic3r/GUI/UpdateDialogs.cpp:211 #, c-format msgid "%s configuration is incompatible" msgstr "%s config. é incompatível" -#: src/slic3r/GUI/UpdateDialogs.cpp:157 +#: src/slic3r/GUI/UpdateDialogs.cpp:216 #, c-format msgid "" "This version of %s is not compatible with currently installed configuration " @@ -5025,7 +6201,7 @@ msgid "" "\n" "You may either exit %s and try again with a newer version, or you may re-run " "the initial configuration. Doing so will create a backup snapshot of the " -"existing configuration before installing files compatible with this %s.\n" +"existing configuration before installing files compatible with this %s." msgstr "" "Esta versão do %s não é compatível com pacotes de config. atualmente " "instalados.\n" @@ -5035,27 +6211,22 @@ msgstr "" "Você pode sair %s e tente novamente com uma versão mais recente, ou você " "pode executar novamente a config. inicial. Isso criará um instantâneo de " "backup da config. existente antes de instalar os arquivos compatíveis com " -"este %s.\n" +"este %s." -#: src/slic3r/GUI/UpdateDialogs.cpp:166 +#: src/slic3r/GUI/UpdateDialogs.cpp:225 #, c-format msgid "This %s version: %s" msgstr "Esta versão %s : %s" -#: src/slic3r/GUI/UpdateDialogs.cpp:171 +#: src/slic3r/GUI/UpdateDialogs.cpp:230 msgid "Incompatible bundles:" msgstr "Pacotes incompatíveis:" -#: src/slic3r/GUI/UpdateDialogs.cpp:187 -#, c-format -msgid "Exit %s" -msgstr "Saída %s" - -#: src/slic3r/GUI/UpdateDialogs.cpp:190 +#: src/slic3r/GUI/UpdateDialogs.cpp:249 msgid "Re-configure" msgstr "Re-config.urar" -#: src/slic3r/GUI/UpdateDialogs.cpp:211 +#: src/slic3r/GUI/UpdateDialogs.cpp:270 #, c-format msgid "" "%s now uses an updated configuration structure.\n" @@ -5084,15 +6255,28 @@ msgstr "" "predefinições e para escolher se deseja ativar as atualizações automáticas " "predefinidas." -#: src/slic3r/GUI/UpdateDialogs.cpp:227 +#: src/slic3r/GUI/UpdateDialogs.cpp:287 msgid "For more information please visit our wiki page:" msgstr "Para mais informações, visite a nossa página wiki:" -#: src/slic3r/GUI/WipeTowerDialog.cpp:14 +#: src/slic3r/GUI/UpdateDialogs.cpp:304 +msgid "Configuration updates" +msgstr "Atualizações de configuração" + +#: src/slic3r/GUI/UpdateDialogs.cpp:304 +msgid "No updates available" +msgstr "Nenhuma atualização disponível" + +#: src/slic3r/GUI/UpdateDialogs.cpp:309 +#, c-format +msgid "%s has no configuration updates available." +msgstr "%s não tem atualizações de configuração disponíveis." + +#: src/slic3r/GUI/WipeTowerDialog.cpp:15 msgid "Ramming customization" msgstr "Personalização de Ramming" -#: src/slic3r/GUI/WipeTowerDialog.cpp:40 +#: src/slic3r/GUI/WipeTowerDialog.cpp:41 msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" "extruder MM printer. Its purpose is to properly shape the end of the " @@ -5115,27 +6299,27 @@ msgstr "" "Esta é uma config. de nível especialista, ajuste incorreto provavelmente " "levará a compotas, roda extrusora moagem em filamento etc." -#: src/slic3r/GUI/WipeTowerDialog.cpp:82 +#: src/slic3r/GUI/WipeTowerDialog.cpp:83 msgid "Total ramming time" msgstr "Tempo total de Ramming" -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 +#: src/slic3r/GUI/WipeTowerDialog.cpp:85 msgid "Total rammed volume" msgstr "Volume total de Ramming" -#: src/slic3r/GUI/WipeTowerDialog.cpp:88 +#: src/slic3r/GUI/WipeTowerDialog.cpp:89 msgid "Ramming line width" msgstr "Largura da linha de Ramming" -#: src/slic3r/GUI/WipeTowerDialog.cpp:90 +#: src/slic3r/GUI/WipeTowerDialog.cpp:91 msgid "Ramming line spacing" msgstr "Espaçamento de linha de Ramming" -#: src/slic3r/GUI/WipeTowerDialog.cpp:141 +#: src/slic3r/GUI/WipeTowerDialog.cpp:142 msgid "Wipe tower - Purging volume adjustment" msgstr "Torre de limpeza - Ajuste de volume de purga" -#: src/slic3r/GUI/WipeTowerDialog.cpp:225 +#: src/slic3r/GUI/WipeTowerDialog.cpp:254 msgid "" "Here you can adjust required purging volume (mm³) for any given pair of " "tools." @@ -5143,23 +6327,23 @@ msgstr "" "Aqui você pode ajustar o volume de purga necessário (mm ³) para qualquer par " "dado de ferramentas." -#: src/slic3r/GUI/WipeTowerDialog.cpp:226 +#: src/slic3r/GUI/WipeTowerDialog.cpp:255 msgid "Extruder changed to" msgstr "Extrusora alterada para" -#: src/slic3r/GUI/WipeTowerDialog.cpp:234 +#: src/slic3r/GUI/WipeTowerDialog.cpp:263 msgid "unloaded" msgstr "descarregado" -#: src/slic3r/GUI/WipeTowerDialog.cpp:235 +#: src/slic3r/GUI/WipeTowerDialog.cpp:264 msgid "loaded" msgstr "carregado" -#: src/slic3r/GUI/WipeTowerDialog.cpp:240 +#: src/slic3r/GUI/WipeTowerDialog.cpp:276 msgid "Tool #" msgstr "Ferramenta #" -#: src/slic3r/GUI/WipeTowerDialog.cpp:247 +#: src/slic3r/GUI/WipeTowerDialog.cpp:285 msgid "" "Total purging volume is calculated by summing two values below, depending on " "which tools are loaded/unloaded." @@ -5167,15 +6351,15 @@ msgstr "" "O volume de purga total é calculado somando-se dois valores abaixo, " "dependendo de quais ferramentas são carregadas/descarregadas." -#: src/slic3r/GUI/WipeTowerDialog.cpp:248 +#: src/slic3r/GUI/WipeTowerDialog.cpp:286 msgid "Volume to purge (mm³) when the filament is being" msgstr "Volume a purgar (mm ³) quando o filamento está a ser" -#: src/slic3r/GUI/WipeTowerDialog.cpp:262 +#: src/slic3r/GUI/WipeTowerDialog.cpp:300 msgid "From" msgstr "De" -#: src/slic3r/GUI/WipeTowerDialog.cpp:327 +#: src/slic3r/GUI/WipeTowerDialog.cpp:365 msgid "" "Switching to simple settings will discard changes done in the advanced " "mode!\n" @@ -5187,108 +6371,62 @@ msgstr "" "\n" "Você quer prosseguir?" -#: src/slic3r/GUI/WipeTowerDialog.cpp:339 +#: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show simplified settings" msgstr "Mostrar config. simplificadas" -#: src/slic3r/GUI/WipeTowerDialog.cpp:339 +#: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show advanced settings" msgstr "Mostrar opções avançadas" -#: src/slic3r/GUI/wxExtensions.cpp:471 -msgid "Instances" -msgstr "Instâncias" - -#: src/slic3r/GUI/wxExtensions.cpp:475 src/slic3r/GUI/wxExtensions.cpp:619 -#, c-format -msgid "Instance %d" -msgstr "Instância %d" - -#: src/slic3r/GUI/wxExtensions.cpp:509 -msgid "Range" -msgstr "Intervalo" - -#: src/slic3r/GUI/wxExtensions.cpp:2731 -msgid "One layer mode" -msgstr "Modo de uma camada" - -#: src/slic3r/GUI/wxExtensions.cpp:2732 -msgid "Add/Del color change" -msgstr "Add/Excluir mudança de cor" - -#: src/slic3r/GUI/wxExtensions.cpp:2733 -msgid "Discard all color changes" -msgstr "Descartar todas as alterações de cor" - -#: src/slic3r/GUI/wxExtensions.cpp:2993 +#: src/slic3r/GUI/wxExtensions.cpp:706 #, c-format msgid "Switch to the %s mode" msgstr "Mude para o modo %s" -#: src/slic3r/GUI/wxExtensions.cpp:2994 +#: src/slic3r/GUI/wxExtensions.cpp:707 #, c-format msgid "Current mode is %s" msgstr "O modo atual é %s" -#: src/slic3r/Utils/Duet.cpp:51 -msgid "Connection to Duet works correctly." -msgstr "A conexão com o Duet funciona corretamente." - -#: src/slic3r/Utils/Duet.cpp:56 -msgid "Could not connect to Duet" -msgstr "Não foi possível conectar-se ao Duet" - -#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:154 -msgid "Unknown error occured" -msgstr "Ocorreu um erro desconhecido" - -#: src/slic3r/Utils/Duet.cpp:148 -msgid "Wrong password" -msgstr "Senha incorreta" - -#: src/slic3r/Utils/Duet.cpp:151 -msgid "Could not get resources to create a new connection" -msgstr "Não foi possível obter recursos para criar uma nova conexão" - -#: src/slic3r/Utils/OctoPrint.cpp:70 +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:69 #, c-format msgid "Mismatched type of print host: %s" msgstr "Tipo incompatível de host de impressão: %s" -#: src/slic3r/Utils/OctoPrint.cpp:85 -msgid "Connection to OctoPrint works correctly." -msgstr "A ligação ao OctoPrint funciona correctamente." +#: src/slic3r/Utils/AstroBox.cpp:84 +msgid "Connection to AstroBox works correctly." +msgstr "A conexão com o AstroBox funciona corretamente." -#: src/slic3r/Utils/OctoPrint.cpp:91 -msgid "Could not connect to OctoPrint" -msgstr "Não foi possível conectar-se ao OctoPrint" +#: src/slic3r/Utils/AstroBox.cpp:90 +msgid "Could not connect to AstroBox" +msgstr "Não foi possível conectar-se ao AstroBox" -#: src/slic3r/Utils/OctoPrint.cpp:91 -msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "Nota: OctoPrint versão pelo menos 1.1.0 é necessária." +#: src/slic3r/Utils/AstroBox.cpp:92 +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "Nota: A versão astrobox é necessária pelo menos 1.1.0." -#: src/slic3r/Utils/OctoPrint.cpp:196 -msgid "Connection to Prusa SL1 works correctly." -msgstr "A conexão com o Prusa SL1 funciona corretamente." +#: src/slic3r/Utils/Duet.cpp:49 +msgid "Connection to Duet works correctly." +msgstr "A conexão com o Duet funciona corretamente." -#: src/slic3r/Utils/OctoPrint.cpp:201 -msgid "Could not connect to Prusa SLA" -msgstr "Não foi possível conectar-se a Prusa SLA" +#: src/slic3r/Utils/Duet.cpp:55 +msgid "Could not connect to Duet" +msgstr "Não foi possível conectar-se ao Duet" -#: src/slic3r/Utils/PresetUpdater.cpp:614 -#, c-format -msgid "requires min. %s and max. %s" -msgstr "requer min . %s e máx. %s" +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 +#: src/slic3r/Utils/FlashAir.cpp:159 +msgid "Unknown error occured" +msgstr "Ocorreu um erro desconhecido" -#: src/slic3r/Utils/PresetUpdater.cpp:619 -#, c-format -msgid "requires min. %s" -msgstr "requer min . %s" +#: src/slic3r/Utils/Duet.cpp:133 +msgid "Wrong password" +msgstr "Senha incorreta" -#: src/slic3r/Utils/PresetUpdater.cpp:621 -#, c-format -msgid "requires max. %s" -msgstr "requer Max. %s" +#: src/slic3r/Utils/Duet.cpp:136 +msgid "Could not get resources to create a new connection" +msgstr "Não foi possível obter recursos para criar uma nova conexão" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 @@ -5368,8 +6506,68 @@ msgid "Model Repair by the Netfabb service" msgstr "Reparação de modelos pelo serviço Netfabb" #: src/slic3r/Utils/FixModelByWin10.cpp:426 -msgid "Model repair failed: \n" -msgstr "Falha no reparo do modelo:\n" +msgid "Model repair failed:" +msgstr "Falha no reparo do modelo:" + +#: src/slic3r/Utils/FlashAir.cpp:58 +msgid "Upload not enabled on FlashAir card." +msgstr "Upload não ativado no cartão FlashAir." + +#: src/slic3r/Utils/FlashAir.cpp:68 +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" +"A conexão com o FlashAir funciona corretamente e o upload está ativado." + +#: src/slic3r/Utils/FlashAir.cpp:74 +msgid "Could not connect to FlashAir" +msgstr "Não foi possível conectar-se ao FlashAir" + +#: src/slic3r/Utils/FlashAir.cpp:76 +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" +"Nota: O FlashAir com firmware 2.00.02 ou função de upload mais nova e " +"ativada é necessário." + +#: src/slic3r/Utils/OctoPrint.cpp:84 +msgid "Connection to OctoPrint works correctly." +msgstr "A ligação ao OctoPrint funciona correctamente." + +#: src/slic3r/Utils/OctoPrint.cpp:90 +msgid "Could not connect to OctoPrint" +msgstr "Não foi possível conectar-se ao OctoPrint" + +#: src/slic3r/Utils/OctoPrint.cpp:92 +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "Nota: OctoPrint versão pelo menos 1.1.0 é necessária." + +#: src/slic3r/Utils/OctoPrint.cpp:179 +msgid "Connection to Prusa SL1 works correctly." +msgstr "A conexão com o Prusa SL1 funciona corretamente." + +#: src/slic3r/Utils/OctoPrint.cpp:185 +msgid "Could not connect to Prusa SLA" +msgstr "Não foi possível conectar-se a Prusa SLA" + +#: src/slic3r/Utils/PresetUpdater.cpp:705 +#, c-format +msgid "requires min. %s and max. %s" +msgstr "requer min . %s e máx. %s" + +#: src/slic3r/Utils/PresetUpdater.cpp:710 +#, c-format +msgid "requires min. %s" +msgstr "requer min . %s" + +#: src/slic3r/Utils/PresetUpdater.cpp:713 +#, c-format +msgid "requires max. %s" +msgstr "requer Max. %s" + +#: src/libslic3r/SLA/Pad.cpp:691 +msgid "Pad brim size is too small for the current configuration." +msgstr "O tamanho da borda do bloco é muito pequeno para a configuração atual." #: src/libslic3r/Zipper.cpp:32 msgid "undefined error" @@ -5499,33 +6697,80 @@ msgstr "write calledback falhou" msgid "Error with zip archive" msgstr "Erro com arquivo zip" -#: src/libslic3r/Print.cpp:1112 +#: src/libslic3r/GCode.cpp:637 +msgid "Empty layers detected, the output would not be printable." +msgstr "Camadas vazias detectadas, a saída não seria imprimível." + +#: src/libslic3r/GCode.cpp:638 +msgid "Print z" +msgstr "Imprimir Z" + +#: src/libslic3r/GCode.cpp:639 +msgid "" +"This is usually caused by negligibly small extrusions or by a faulty model. " +"Try to repair the model or change its orientation on the bed." +msgstr "" +"Isso geralmente é causado por extrusões insignificantes ou por um modelo " +"defeituoso. Tente reparar o modelo ou mudar sua orientação na cama." + +#: src/libslic3r/ExtrusionEntity.cpp:323 +msgid "Mixed" +msgstr "Misto" + +#: src/libslic3r/Flow.cpp:61 +msgid "" +"Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." +msgstr "" +"Não é possível calcular a largura de extrusão para %1%: Variável \"%2%\" não " +"acessível." + +#: src/libslic3r/Format/3mf.cpp:1630 +msgid "" +"The selected 3mf file has been saved with a newer version of %1% and is not " +"compatible." +msgstr "" +"O arquivo 3mf selecionado foi salvo com uma versão mais recente de %1% e não " +"é compatível." + +#: src/libslic3r/Format/AMF.cpp:934 +msgid "" +"The selected amf file has been saved with a newer version of %1% and is not " +"compatible." +msgstr "" +"O arquivo amf selecionado foi salvo com uma versão mais recente de %1% e não " +"é compatível." + +#: src/libslic3r/Print.cpp:1219 msgid "All objects are outside of the print volume." msgstr "Todos os objetos estão fora do volume de impressão." -#: src/libslic3r/Print.cpp:1139 +#: src/libslic3r/Print.cpp:1222 +msgid "The supplied settings will cause an empty print." +msgstr "As config. fornecidas causarão uma impressão vazia." + +#: src/libslic3r/Print.cpp:1226 msgid "Some objects are too close; your extruder will collide with them." msgstr "Alguns objetos são muito próximos; sua extrusora irá colidir com eles." -#: src/libslic3r/Print.cpp:1154 +#: src/libslic3r/Print.cpp:1228 msgid "" "Some objects are too tall and cannot be printed without extruder collisions." msgstr "" "Alguns objetos são muito altos e não podem ser impressos sem colisões de " "extrusoras." -#: src/libslic3r/Print.cpp:1164 +#: src/libslic3r/Print.cpp:1237 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "A opção vaso espiral só pode ser usada ao imprimir um único objeto." -#: src/libslic3r/Print.cpp:1171 +#: src/libslic3r/Print.cpp:1244 msgid "" "The Spiral Vase option can only be used when printing single material " "objects." msgstr "" "A opção vaso espiral só pode ser usada ao imprimir objetos de material único." -#: src/libslic3r/Print.cpp:1184 +#: src/libslic3r/Print.cpp:1257 msgid "" "The wipe tower is only supported if all extruders have the same nozzle " "diameter and use filaments of the same diameter." @@ -5533,7 +6778,7 @@ msgstr "" "A torre de limpeza só é suportada se todas as extrusoras tiverem o mesmo " "diâmetro da ponteira e usarem filamentos do mesmo diâmetro." -#: src/libslic3r/Print.cpp:1189 +#: src/libslic3r/Print.cpp:1262 msgid "" "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " "and Repetier G-code flavors." @@ -5541,7 +6786,7 @@ msgstr "" "A Wipe Tower é atualmente suportada apenas para os firmwares Marlin, RepRap/" "Sprinter e Repetier G-code." -#: src/libslic3r/Print.cpp:1191 +#: src/libslic3r/Print.cpp:1264 msgid "" "The Wipe Tower is currently only supported with the relative extruder " "addressing (use_relative_e_distances=1)." @@ -5549,13 +6794,27 @@ msgstr "" "A torre da limpeza é suportada atualmente somente com o endereçamento " "relativo da extrusora (use_relative_e_distances = 1)." -#: src/libslic3r/Print.cpp:1193 +#: src/libslic3r/Print.cpp:1266 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "" "A prevenção de escorrimento não é suportada atualmente com a torre da " "limpeza permitida." -#: src/libslic3r/Print.cpp:1214 +#: src/libslic3r/Print.cpp:1268 +msgid "" +"The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." +msgstr "" +"Atualmente, a Torre limpa não suporta E volumétrica (use_volumetric_e=0)." + +#: src/libslic3r/Print.cpp:1270 +msgid "" +"The Wipe Tower is currently not supported for multimaterial sequential " +"prints." +msgstr "" +"A torre de limpeza só é suportada para vários objetos se eles tiverem " +"alturas de camada iguais." + +#: src/libslic3r/Print.cpp:1291 msgid "" "The Wipe Tower is only supported for multiple objects if they have equal " "layer heights" @@ -5563,7 +6822,7 @@ msgstr "" "A torre de limpeza só é suportada para vários objetos se eles tiverem " "alturas de camada iguais" -#: src/libslic3r/Print.cpp:1216 +#: src/libslic3r/Print.cpp:1293 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "over an equal number of raft layers" @@ -5571,7 +6830,7 @@ msgstr "" "A torre de limpeza só é suportada para vários objetos se elas forem " "impressas em um número igual de camadas de estrado" -#: src/libslic3r/Print.cpp:1218 +#: src/libslic3r/Print.cpp:1295 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "with the same support_material_contact_distance" @@ -5579,7 +6838,7 @@ msgstr "" "A torre de limpeza só é suportado para vários objetos se eles são impressos " "com a mesma distância de contato do suporte" -#: src/libslic3r/Print.cpp:1220 +#: src/libslic3r/Print.cpp:1297 msgid "" "The Wipe Tower is only supported for multiple objects if they are sliced " "equally." @@ -5587,36 +6846,32 @@ msgstr "" "A torre de limpeza só é suportada para vários objetos se eles são fatiados " "igualmente." -#: src/libslic3r/Print.cpp:1248 +#: src/libslic3r/Print.cpp:1339 msgid "" -"The Wipe tower is only supported if all objects have the same layer height " -"profile" +"The Wipe tower is only supported if all objects have the same variable layer " +"height" msgstr "" -"A torre de limpeza só é suportada se todos os objetos tiverem o mesmo perfil " -"de altura da camada" +"A torre de limpeza só é suportada se todos os objetos tiverem a mesma altura " +"de camada variável" -#: src/libslic3r/Print.cpp:1258 -msgid "The supplied settings will cause an empty print." -msgstr "As config. fornecidas causarão uma impressão vazia." - -#: src/libslic3r/Print.cpp:1275 +#: src/libslic3r/Print.cpp:1365 msgid "" "One or more object were assigned an extruder that the printer does not have." msgstr "" "Um ou mais objetos foram atribuídos a uma extrusora que a impressora não tem." -#: src/libslic3r/Print.cpp:1284 +#: src/libslic3r/Print.cpp:1374 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "" "%1% = %2% mm é muito baixo para ser impresso a uma altura de camada %3% mm" -#: src/libslic3r/Print.cpp:1287 +#: src/libslic3r/Print.cpp:1377 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "" "Excesso %1%=%2% milímetro a ser imprimível com um diâmetro da ponteira %3% " "milímetro" -#: src/libslic3r/Print.cpp:1298 +#: src/libslic3r/Print.cpp:1388 msgid "" "Printing with multiple extruders of differing nozzle diameters. If support " "is to be printed with the current extruder (support_material_extruder == 0 " @@ -5628,7 +6883,7 @@ msgstr "" "(support_material_extruder = = 0 ou support_material_interface_extruder = = " "0), todos as ponteiras têm que ser do mesmo diâmetro." -#: src/libslic3r/Print.cpp:1306 +#: src/libslic3r/Print.cpp:1396 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers " "need to be synchronized with the object layers." @@ -5636,7 +6891,7 @@ msgstr "" "Para que a torre de limpeza funcione com os suportes solúveis, as camadas de " "suporte precisam ser sincronizadas com as camadas de objeto." -#: src/libslic3r/Print.cpp:1310 +#: src/libslic3r/Print.cpp:1400 msgid "" "The Wipe Tower currently supports the non-soluble supports only if they are " "printed with the current extruder without triggering a tool change. (both " @@ -5648,64 +6903,36 @@ msgstr "" "(ambos support_material_extruder e support_material_interface_extruder " "precisam ser definidos como 0)." -#: src/libslic3r/Print.cpp:1332 +#: src/libslic3r/Print.cpp:1422 msgid "First layer height can't be greater than nozzle diameter" msgstr "" "A primeira altura da camada não pode ser maior do que o diâmetro da ponteira" -#: src/libslic3r/Print.cpp:1337 +#: src/libslic3r/Print.cpp:1427 msgid "Layer height can't be greater than nozzle diameter" msgstr "A altura da camada não pode ser maior do que o diâmetro da ponteira" -#: src/libslic3r/Print.cpp:1492 +#: src/libslic3r/Print.cpp:1584 msgid "Infilling layers" msgstr "Camadas de preenchimento" -#: src/libslic3r/Print.cpp:1500 +#: src/libslic3r/Print.cpp:1606 msgid "Generating skirt" msgstr "Gerando saia" -#: src/libslic3r/Print.cpp:1508 +#: src/libslic3r/Print.cpp:1614 msgid "Generating brim" msgstr "Gerando a aba" -#: src/libslic3r/Print.cpp:1536 +#: src/libslic3r/Print.cpp:1638 msgid "Exporting G-code" msgstr "Exportando o G-code" -#: src/libslic3r/Print.cpp:1540 +#: src/libslic3r/Print.cpp:1642 msgid "Generating G-code" msgstr "Gerando G-code" -#: src/libslic3r/SLAPrint.cpp:64 -msgid "Slicing model" -msgstr "Modelo de fatiamento" - -#: src/libslic3r/SLAPrint.cpp:65 src/libslic3r/SLAPrint.cpp:899 -msgid "Generating support points" -msgstr "Gerando pontos de suporte" - -#: src/libslic3r/SLAPrint.cpp:66 -msgid "Generating support tree" -msgstr "Gerando suporte em árvore" - -#: src/libslic3r/SLAPrint.cpp:67 -msgid "Generating pad" -msgstr "Gerando pad" - -#: src/libslic3r/SLAPrint.cpp:68 -msgid "Slicing supports" -msgstr "Fatiando suportes" - -#: src/libslic3r/SLAPrint.cpp:85 -msgid "Merging slices and calculating statistics" -msgstr "Mesclando camadas e calculando estatísticas" - -#: src/libslic3r/SLAPrint.cpp:86 -msgid "Rasterizing layers" -msgstr "Rasterizando camadas" - -#: src/libslic3r/SLAPrint.cpp:661 +#: src/libslic3r/SLAPrint.cpp:615 msgid "" "Cannot proceed without support points! Add support points or disable support " "generation." @@ -5713,7 +6940,7 @@ msgstr "" "Não pode prosseguir sem pontos de suporte! Adicione pontos de suporte ou " "desative a geração de suporte." -#: src/libslic3r/SLAPrint.cpp:678 +#: src/libslic3r/SLAPrint.cpp:627 msgid "" "Elevation is too low for object. Use the \"Pad around object\" feature to " "print the object without elevation." @@ -5721,7 +6948,7 @@ msgstr "" "A elevação é muito baixa para o objeto. Use o recurso \"pad ao redor do " "objeto\" para imprimir o objeto sem elevação." -#: src/libslic3r/SLAPrint.cpp:684 +#: src/libslic3r/SLAPrint.cpp:633 msgid "" "The endings of the support pillars will be deployed on the gap between the " "object and the pad. 'Support base safety distance' has to be greater than " @@ -5731,30 +6958,90 @@ msgstr "" "objeto e o pad. ' Distância de segurança de base de suporte ' tem de ser " "maior do que o parâmetro ' pad objecto Gap ' para evitar este." -#: src/libslic3r/SLAPrint.cpp:696 +#: src/libslic3r/SLAPrint.cpp:648 msgid "Exposition time is out of printer profile bounds." msgstr "O tempo de exposição está fora dos limites do perfil da impressora." -#: src/libslic3r/SLAPrint.cpp:703 +#: src/libslic3r/SLAPrint.cpp:655 msgid "Initial exposition time is out of printer profile bounds." msgstr "" "O tempo de exposição inicial está fora dos limites do perfil da impressora." -#: src/libslic3r/SLAPrint.cpp:787 +#: src/libslic3r/SLAPrint.cpp:762 +msgid "Slicing done" +msgstr "Fatiamento pronto" + +#: src/libslic3r/SLAPrintSteps.cpp:43 +msgid "Hollowing model" +msgstr "Deixar oco o modelo" + +#: src/libslic3r/SLAPrintSteps.cpp:44 +msgid "Drilling holes into model." +msgstr "Furando o modelo" + +#: src/libslic3r/SLAPrintSteps.cpp:45 +msgid "Slicing model" +msgstr "Modelo de fatiamento" + +#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +msgid "Generating support points" +msgstr "Gerando pontos de suporte" + +#: src/libslic3r/SLAPrintSteps.cpp:47 +msgid "Generating support tree" +msgstr "Gerando suporte em árvore" + +#: src/libslic3r/SLAPrintSteps.cpp:48 +msgid "Generating pad" +msgstr "Gerando pad" + +#: src/libslic3r/SLAPrintSteps.cpp:49 +msgid "Slicing supports" +msgstr "Fatiando suportes" + +#: src/libslic3r/SLAPrintSteps.cpp:64 +msgid "Merging slices and calculating statistics" +msgstr "Mesclando camadas e calculando estatísticas" + +#: src/libslic3r/SLAPrintSteps.cpp:65 +msgid "Rasterizing layers" +msgstr "Rasterizando camadas" + +#: src/libslic3r/SLAPrintSteps.cpp:190 +msgid "Too much overlapping holes." +msgstr "Muitos buracos sobrepostos." + +#: src/libslic3r/SLAPrintSteps.cpp:199 +msgid "" +"Drilling holes into the mesh failed. This is usually caused by broken model. " +"Try to fix it first." +msgstr "" +"Os furos de perfuração na malha falharam. Isso geralmente é causado por " +"modelo quebrado. Tente consertá-lo primeiro." + +#: src/libslic3r/SLAPrintSteps.cpp:245 msgid "" "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "" "O fatiamento teve que ser parado devido a um erro interno: índice de " "fatiamento inconsistente." -#: src/libslic3r/SLAPrint.cpp:982 src/libslic3r/SLAPrint.cpp:992 -#: src/libslic3r/SLAPrint.cpp:1033 +#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 +#: src/libslic3r/SLAPrintSteps.cpp:461 msgid "Visualizing supports" msgstr "Visualizando suportes" -#: src/libslic3r/SLAPrint.cpp:1566 -msgid "Slicing done" -msgstr "Fatiamento pronto" +#: src/libslic3r/SLAPrintSteps.cpp:453 +msgid "No pad can be generated for this model with the current configuration" +msgstr "Nenhum pad pode ser gerado para este modelo com a configuração atual" + +#: src/libslic3r/SLAPrintSteps.cpp:621 +msgid "" +"There are unprintable objects. Try to adjust support settings to make the " +"objects printable." +msgstr "" +"Há objetos imprimíveis. Tente ajustar as configurações de suporte para " +"tornar os objetos imprimíveis." #: src/libslic3r/PrintBase.cpp:71 msgid "Failed processing of the output_filename_format template." @@ -5776,7 +7063,11 @@ msgstr "Textura customizada da mesa" msgid "Bed custom model" msgstr "Modelo customizado da mesa" -#: src/libslic3r/PrintConfig.cpp:68 +#: src/libslic3r/PrintConfig.cpp:66 +msgid "Picture sizes to be stored into a .gcode and .sl1 files" +msgstr "Tamanhos de imagem a serem armazenados em arquivos .gcode e .sl1" + +#: src/libslic3r/PrintConfig.cpp:73 msgid "" "This setting controls the height (and thus the total number) of the slices/" "layers. Thinner layers give better accuracy but take more time to print." @@ -5785,11 +7076,11 @@ msgstr "" "camadas. Camadas mais finas dão melhor precisão, mas levam mais tempo para " "imprimir." -#: src/libslic3r/PrintConfig.cpp:75 +#: src/libslic3r/PrintConfig.cpp:80 msgid "Max print height" msgstr "Altura máxima de impressão" -#: src/libslic3r/PrintConfig.cpp:76 +#: src/libslic3r/PrintConfig.cpp:81 msgid "" "Set this to the maximum height that can be reached by your extruder while " "printing." @@ -5797,11 +7088,11 @@ msgstr "" "Defina isto para a altura máxima que pode ser alcançada pela sua extrusora " "durante a impressão." -#: src/libslic3r/PrintConfig.cpp:82 +#: src/libslic3r/PrintConfig.cpp:87 msgid "Slice gap closing radius" msgstr "Raio de fechamento da abertura da fatia" -#: src/libslic3r/PrintConfig.cpp:84 +#: src/libslic3r/PrintConfig.cpp:89 msgid "" "Cracks smaller than 2x gap closing radius are being filled during the " "triangle mesh slicing. The gap closing operation may reduce the final print " @@ -5812,11 +7103,11 @@ msgstr "" "fechamento de vão pode reduzir a resolução final de impressão, portanto, é " "aconselhável manter o valor razoavelmente baixo." -#: src/libslic3r/PrintConfig.cpp:92 +#: src/libslic3r/PrintConfig.cpp:97 msgid "Hostname, IP or URL" msgstr "Hostname, IP ou URL" -#: src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:98 msgid "" "Slic3r can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance." @@ -5825,11 +7116,11 @@ msgstr "" "campo deve conter o nome de host, o endereço IP ou a URL da instância de " "host da impressora." -#: src/libslic3r/PrintConfig.cpp:99 +#: src/libslic3r/PrintConfig.cpp:104 msgid "API Key / Password" msgstr "Chave de API/senha" -#: src/libslic3r/PrintConfig.cpp:100 +#: src/libslic3r/PrintConfig.cpp:105 msgid "" "Slic3r can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." @@ -5837,11 +7128,7 @@ msgstr "" "Slic3r pode carregar arquivos de G-code para um host de impressora. Este " "campo deve conter a chave de API ou a senha exigida para a autenticação." -#: src/libslic3r/PrintConfig.cpp:106 -msgid "HTTPS CA File" -msgstr "Arquivo de CA HTTPS" - -#: src/libslic3r/PrintConfig.cpp:107 +#: src/libslic3r/PrintConfig.cpp:112 msgid "" "Custom CA certificate file can be specified for HTTPS OctoPrint connections, " "in crt/pem format. If left blank, the default OS CA certificate repository " @@ -5851,11 +7138,23 @@ msgstr "" "conexões HTTPS OctoPrint, no formato CRT/PEM. Se deixado em branco, o " "repositório de certificados do OS CA padrão é usado." -#: src/libslic3r/PrintConfig.cpp:121 +#: src/libslic3r/PrintConfig.cpp:118 +msgid "Elephant foot compensation" +msgstr "Compensação do pé do elefante" + +#: src/libslic3r/PrintConfig.cpp:120 +msgid "" +"The first layer will be shrunk in the XY plane by the configured value to " +"compensate for the 1st layer squish aka an Elephant Foot effect." +msgstr "" +"A primeira camada será encolhido no plano XY pelo valor config.urado para " +"compensar a 1ª camada esmagada, também conhecida como pé de elefante." + +#: src/libslic3r/PrintConfig.cpp:136 msgid "Avoid crossing perimeters" msgstr "Evitar cruzamento de perímetros" -#: src/libslic3r/PrintConfig.cpp:122 +#: src/libslic3r/PrintConfig.cpp:137 msgid "" "Optimize travel moves in order to minimize the crossing of perimeters. This " "is mostly useful with Bowden extruders which suffer from oozing. This " @@ -5865,11 +7164,11 @@ msgstr "" "Isto é principalmente útil com extrusoras Bowden que sofrem de escorrimento. " "Este recurso retarda a impressão e a geração de G-code." -#: src/libslic3r/PrintConfig.cpp:129 src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 msgid "Other layers" msgstr "Outras camadas" -#: src/libslic3r/PrintConfig.cpp:130 +#: src/libslic3r/PrintConfig.cpp:145 msgid "" "Bed temperature for layers after the first one. Set this to zero to disable " "bed temperature control commands in the output." @@ -5877,11 +7176,11 @@ msgstr "" "Temperatura da mesa para camadas após o primeiro. Defina isso como zero para " "desabilitar os comandos de controle de temperatura da mesa na saída." -#: src/libslic3r/PrintConfig.cpp:132 +#: src/libslic3r/PrintConfig.cpp:147 msgid "Bed temperature" msgstr "Temperatura da mesa" -#: src/libslic3r/PrintConfig.cpp:139 +#: src/libslic3r/PrintConfig.cpp:154 msgid "" "This custom code is inserted at every layer change, right before the Z move. " "Note that you can use placeholder variables for all Slic3r settings as well " @@ -5891,11 +7190,11 @@ msgstr "" "da movimentação Z. Observe que você pode usar variáveis de espaço reservado " "para todas as config. Slic3r, bem como [layer_num] e [layer_z]." -#: src/libslic3r/PrintConfig.cpp:149 +#: src/libslic3r/PrintConfig.cpp:164 msgid "Between objects G-code" msgstr "G-code entre objetos" -#: src/libslic3r/PrintConfig.cpp:150 +#: src/libslic3r/PrintConfig.cpp:165 msgid "" "This code is inserted between objects when using sequential printing. By " "default extruder and bed temperature are reset using non-wait command; " @@ -5912,19 +7211,32 @@ msgstr "" "Slic3r, para que você possa colocar um comando \"M109 S " "[temperatura_primeira_camada]\" onde quiser." -#: src/libslic3r/PrintConfig.cpp:161 +#: src/libslic3r/PrintConfig.cpp:176 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Número de camadas sólidas para gerar em superfícies inferiores." -#: src/libslic3r/PrintConfig.cpp:162 +#: src/libslic3r/PrintConfig.cpp:177 msgid "Bottom solid layers" msgstr "Camadas sólidas inferiores" -#: src/libslic3r/PrintConfig.cpp:167 +#: src/libslic3r/PrintConfig.cpp:185 +msgid "" +"The number of bottom solid layers is increased above bottom_solid_layers if " +"necessary to satisfy minimum thickness of bottom shell." +msgstr "" +"O número de camadas sólidas inferiores é aumentado acima de " +"bottom_solid_layers se necessário para satisfazer a espessura mínima da " +"camada inferior." + +#: src/libslic3r/PrintConfig.cpp:187 +msgid "Minimum bottom shell thickness" +msgstr "Espessura mínima da casca inferior" + +#: src/libslic3r/PrintConfig.cpp:193 msgid "Bridge" msgstr "Ponte" -#: src/libslic3r/PrintConfig.cpp:168 +#: src/libslic3r/PrintConfig.cpp:194 msgid "" "This is the acceleration your printer will use for bridges. Set zero to " "disable acceleration control for bridges." @@ -5932,18 +7244,18 @@ msgstr "" "Esta é a aceleração que sua impressora usará para pontes. Defina zero para " "desabilitar o controle de aceleração para pontes." -#: src/libslic3r/PrintConfig.cpp:170 src/libslic3r/PrintConfig.cpp:313 -#: src/libslic3r/PrintConfig.cpp:840 src/libslic3r/PrintConfig.cpp:961 -#: src/libslic3r/PrintConfig.cpp:1130 src/libslic3r/PrintConfig.cpp:1183 -#: src/libslic3r/PrintConfig.cpp:1194 src/libslic3r/PrintConfig.cpp:1383 +#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 +#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 +#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 +#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:202 msgid "Bridging angle" msgstr "Ângulo de ponte" -#: src/libslic3r/PrintConfig.cpp:178 +#: src/libslic3r/PrintConfig.cpp:204 msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for all " @@ -5953,35 +7265,35 @@ msgstr "" "calculado automaticamente. Caso contrário, o ângulo fornecido será usado " "para todas as pontes. Use 180 ° para o ângulo zero." -#: src/libslic3r/PrintConfig.cpp:181 src/libslic3r/PrintConfig.cpp:758 -#: src/libslic3r/PrintConfig.cpp:1619 src/libslic3r/PrintConfig.cpp:1629 -#: src/libslic3r/PrintConfig.cpp:1858 src/libslic3r/PrintConfig.cpp:2012 -#: src/libslic3r/PrintConfig.cpp:2197 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 +#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 +#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 +#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2737 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "°" msgstr "°" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:213 msgid "Bridges fan speed" msgstr "Velocidade da ventoinha nas pontes" -#: src/libslic3r/PrintConfig.cpp:188 +#: src/libslic3r/PrintConfig.cpp:214 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "" "Esta velocidade da ventoinha é imposta durante todas as pontes e angulações." -#: src/libslic3r/PrintConfig.cpp:189 src/libslic3r/PrintConfig.cpp:770 -#: src/libslic3r/PrintConfig.cpp:1203 src/libslic3r/PrintConfig.cpp:1266 -#: src/libslic3r/PrintConfig.cpp:1511 src/libslic3r/PrintConfig.cpp:2366 -#: src/libslic3r/PrintConfig.cpp:2654 +#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 +#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 +#: src/libslic3r/PrintConfig.cpp:2777 msgid "%" msgstr "%" -#: src/libslic3r/PrintConfig.cpp:196 +#: src/libslic3r/PrintConfig.cpp:222 msgid "Bridge flow ratio" msgstr "Relação de fluxo da ponte" -#: src/libslic3r/PrintConfig.cpp:198 +#: src/libslic3r/PrintConfig.cpp:224 msgid "" "This factor affects the amount of plastic for bridging. You can decrease it " "slightly to pull the extrudates and prevent sagging, although default " @@ -5993,32 +7305,32 @@ msgstr "" "padrão são geralmente boas e você deve experimentar com refrigeração (use " "uma ventoinha) antes de ajustes isso." -#: src/libslic3r/PrintConfig.cpp:208 +#: src/libslic3r/PrintConfig.cpp:234 msgid "Bridges" msgstr "Pontes" -#: src/libslic3r/PrintConfig.cpp:210 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Speed for printing bridges." msgstr "Velocidade para a impressão de pontes." -#: src/libslic3r/PrintConfig.cpp:211 src/libslic3r/PrintConfig.cpp:592 -#: src/libslic3r/PrintConfig.cpp:600 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:644 -#: src/libslic3r/PrintConfig.cpp:663 src/libslic3r/PrintConfig.cpp:899 -#: src/libslic3r/PrintConfig.cpp:1026 src/libslic3r/PrintConfig.cpp:1112 -#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1161 -#: src/libslic3r/PrintConfig.cpp:1172 src/libslic3r/PrintConfig.cpp:1225 -#: src/libslic3r/PrintConfig.cpp:1284 src/libslic3r/PrintConfig.cpp:1412 -#: src/libslic3r/PrintConfig.cpp:1586 src/libslic3r/PrintConfig.cpp:1595 -#: src/libslic3r/PrintConfig.cpp:1991 src/libslic3r/PrintConfig.cpp:2104 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 +#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 +#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 +#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 +#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 +#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 +#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 +#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 +#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:244 msgid "Brim width" msgstr "Largura da aba" -#: src/libslic3r/PrintConfig.cpp:219 +#: src/libslic3r/PrintConfig.cpp:245 msgid "" "Horizontal width of the brim that will be printed around each object on the " "first layer." @@ -6026,11 +7338,11 @@ msgstr "" "Largura horizontal da aba que será impressa em torno de cada objeto na " "primeira camada." -#: src/libslic3r/PrintConfig.cpp:226 +#: src/libslic3r/PrintConfig.cpp:252 msgid "Clip multi-part objects" msgstr "Clip objetos de várias partes" -#: src/libslic3r/PrintConfig.cpp:227 +#: src/libslic3r/PrintConfig.cpp:253 msgid "" "When printing multi-material objects, this settings will make Slic3r to clip " "the overlapping object parts one by the other (2nd part will be clipped by " @@ -6040,19 +7352,19 @@ msgstr "" "Slic3r recorte as partes do objeto sobrepostas uma pela outra (2ª parte será " "cortada pela 1ª, 3ª parte será cortada pela 1ª e 2ª, etc.)." -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:260 msgid "Colorprint height" msgstr "Altura da impressão colorida" -#: src/libslic3r/PrintConfig.cpp:235 +#: src/libslic3r/PrintConfig.cpp:261 msgid "Heights at which a filament change is to occur." msgstr "Alturas em que uma mudança do filamento ocorre." -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:271 msgid "Compatible printers condition" msgstr "Condição de impressoras compatíveis" -#: src/libslic3r/PrintConfig.cpp:246 +#: src/libslic3r/PrintConfig.cpp:272 msgid "" "A boolean expression using the configuration values of an active printer " "profile. If this expression evaluates to true, this profile is considered " @@ -6062,11 +7374,11 @@ msgstr "" "impressora ativo. Se essa expressão for avaliada como verdadeira, esse " "perfil será considerado compatível com o perfil de impressora ativo." -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:286 msgid "Compatible print profiles condition" msgstr "Condição de perfis de impressão compatíveis" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:287 msgid "" "A boolean expression using the configuration values of an active print " "profile. If this expression evaluates to true, this profile is considered " @@ -6076,11 +7388,11 @@ msgstr "" "impressão ativo. Se essa expressão for avaliada como verdadeira, esse perfil " "será considerado compatível com o perfil de impressão ativo." -#: src/libslic3r/PrintConfig.cpp:278 +#: src/libslic3r/PrintConfig.cpp:304 msgid "Complete individual objects" msgstr "Complete objetos individuais" -#: src/libslic3r/PrintConfig.cpp:279 +#: src/libslic3r/PrintConfig.cpp:305 msgid "" "When printing multiple objects or copies, this feature will complete each " "object before moving onto next one (and starting it from its bottom layer). " @@ -6092,11 +7404,11 @@ msgstr "" "recurso é útil para evitar o risco de impressões arruinadas. Slic3r deve " "avisar e impedi-lo de colisões de extrusoras, mas cuidado." -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:313 msgid "Enable auto cooling" msgstr "Ativar o resfriamento automático" -#: src/libslic3r/PrintConfig.cpp:288 +#: src/libslic3r/PrintConfig.cpp:314 msgid "" "This flag enables the automatic cooling logic that adjusts print speed and " "fan speed according to layer printing time." @@ -6105,26 +7417,26 @@ msgstr "" "velocidade de impressão e a velocidade do ventoinha de acordo com o tempo de " "impressão da camada." -#: src/libslic3r/PrintConfig.cpp:293 +#: src/libslic3r/PrintConfig.cpp:319 msgid "Cooling tube position" msgstr "Posição do tubo de resfriamento" -#: src/libslic3r/PrintConfig.cpp:294 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "" "Distância do ponto central do tubo de resfriamento da ponta da extrusora." -#: src/libslic3r/PrintConfig.cpp:301 +#: src/libslic3r/PrintConfig.cpp:327 msgid "Cooling tube length" msgstr "Comprimento do tubo de resfriamento" -#: src/libslic3r/PrintConfig.cpp:302 +#: src/libslic3r/PrintConfig.cpp:328 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "" "Comprimento do tubo de resfriamento para limitar o espaço para movimentos de " "resfriamento dentro dele." -#: src/libslic3r/PrintConfig.cpp:310 +#: src/libslic3r/PrintConfig.cpp:336 msgid "" "This is the acceleration your printer will be reset to after the role-" "specific acceleration values are used (perimeter/infill). Set zero to " @@ -6134,11 +7446,11 @@ msgstr "" "valores de aceleração específicos da função forem usados (perímetro/" "preenchimento). Defina zero para evitar redefinir a aceleração em tudo." -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:345 msgid "Default filament profile" msgstr "Perfil de filamento padrão" -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:346 msgid "" "Default filament profile associated with the current printer profile. On " "selection of the current printer profile, this filament profile will be " @@ -6147,12 +7459,12 @@ msgstr "" "Perfil de filamento padrão associado ao perfil de impressora atual. Na " "seleção do perfil da impressora atual, este perfil de filamento será ativado." -#: src/libslic3r/PrintConfig.cpp:326 +#: src/libslic3r/PrintConfig.cpp:352 msgid "Default print profile" msgstr "Perfil de impressão padrão" -#: src/libslic3r/PrintConfig.cpp:327 src/libslic3r/PrintConfig.cpp:2479 -#: src/libslic3r/PrintConfig.cpp:2490 +#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 +#: src/libslic3r/PrintConfig.cpp:2603 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -6161,11 +7473,11 @@ msgstr "" "Perfil de impressão padrão associado ao perfil de impressora atual. Na " "seleção do perfil de impressora atual, este perfil de impressão será ativado." -#: src/libslic3r/PrintConfig.cpp:333 +#: src/libslic3r/PrintConfig.cpp:359 msgid "Disable fan for the first" msgstr "Desabilite o ventoinha para a(s) primeira(s)" -#: src/libslic3r/PrintConfig.cpp:334 +#: src/libslic3r/PrintConfig.cpp:360 msgid "" "You can set this to a positive value to disable fan at all during the first " "layers, so that it does not make adhesion worse." @@ -6173,18 +7485,11 @@ msgstr "" "Você pode ajustar isto a um valor positivo para desabilitar a ventoinha " "durante as primeiras camadas, de modo que melhore a adesão." -#: src/libslic3r/PrintConfig.cpp:336 src/libslic3r/PrintConfig.cpp:971 -#: src/libslic3r/PrintConfig.cpp:1484 src/libslic3r/PrintConfig.cpp:1669 -#: src/libslic3r/PrintConfig.cpp:1730 src/libslic3r/PrintConfig.cpp:1894 -#: src/libslic3r/PrintConfig.cpp:1939 -msgid "layers" -msgstr "camadas" - -#: src/libslic3r/PrintConfig.cpp:343 +#: src/libslic3r/PrintConfig.cpp:369 msgid "Don't support bridges" msgstr "Não suporte pontes" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:371 msgid "" "Experimental option for preventing support material from being generated " "under bridged areas." @@ -6192,27 +7497,15 @@ msgstr "" "Opção experimental para impedir que o material de suporte seja gerado em " "áreas com ponte." -#: src/libslic3r/PrintConfig.cpp:351 +#: src/libslic3r/PrintConfig.cpp:377 msgid "Distance between copies" msgstr "Distância entre cópias" -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:378 msgid "Distance used for the auto-arrange feature of the plater." -msgstr "Distância usada para o recurso de organizar automaticamente o prato." +msgstr "Distância usada para o recurso de organizar automaticamente a bandeja." -#: src/libslic3r/PrintConfig.cpp:359 -msgid "Elephant foot compensation" -msgstr "Compensação do pé do elefante" - -#: src/libslic3r/PrintConfig.cpp:361 -msgid "" -"The first layer will be shrunk in the XY plane by the configured value to " -"compensate for the 1st layer squish aka an Elephant Foot effect." -msgstr "" -"A primeira camada será encolhido no plano XY pelo valor config.urado para " -"compensar a 1ª camada esmagada, também conhecida como pé de elefante." - -#: src/libslic3r/PrintConfig.cpp:370 +#: src/libslic3r/PrintConfig.cpp:386 msgid "" "This end procedure is inserted at the end of the output file. Note that you " "can use placeholder variables for all PrusaSlicer settings." @@ -6221,7 +7514,7 @@ msgstr "" "você pode usar variáveis de espaço reservado para todas as config. de " "PrusaSlicer." -#: src/libslic3r/PrintConfig.cpp:380 +#: src/libslic3r/PrintConfig.cpp:396 msgid "" "This end procedure is inserted at the end of the output file, before the " "printer end gcode (and before any toolchange from this filament in case of " @@ -6235,11 +7528,11 @@ msgstr "" "usar variáveis de espaço reservado para todas as config. de PrusaSlicer. Se " "você tiver várias extrusoras, o Gcode é processado em ordem de extrusora." -#: src/libslic3r/PrintConfig.cpp:391 +#: src/libslic3r/PrintConfig.cpp:407 msgid "Ensure vertical shell thickness" msgstr "Assegure a espessura vertical da parede" -#: src/libslic3r/PrintConfig.cpp:393 +#: src/libslic3r/PrintConfig.cpp:409 msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." @@ -6247,11 +7540,11 @@ msgstr "" "Adicionar preenchimento sólido perto de superfícies inclinadas para garantir " "a espessura do escudo vertical (camadas sólidas no topo + base )." -#: src/libslic3r/PrintConfig.cpp:399 +#: src/libslic3r/PrintConfig.cpp:415 msgid "Top fill pattern" msgstr "Padrão de preenchimento do topo" -#: src/libslic3r/PrintConfig.cpp:401 +#: src/libslic3r/PrintConfig.cpp:417 msgid "" "Fill pattern for top infill. This only affects the top visible layer, and " "not its adjacent solid shells." @@ -6259,32 +7552,32 @@ msgstr "" "Padrão de preenchimento para preenchimento do topo. Isto afeta somente a " "camada visível superior, e não suas paredes adjacentes." -#: src/libslic3r/PrintConfig.cpp:409 src/libslic3r/PrintConfig.cpp:821 -#: src/libslic3r/PrintConfig.cpp:1972 +#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Rectilinear" msgstr "Rectilíneo" -#: src/libslic3r/PrintConfig.cpp:410 src/libslic3r/PrintConfig.cpp:827 +#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 msgid "Concentric" msgstr "Concêntrico" -#: src/libslic3r/PrintConfig.cpp:411 src/libslic3r/PrintConfig.cpp:831 +#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 msgid "Hilbert Curve" msgstr "Curva de Hilbert" -#: src/libslic3r/PrintConfig.cpp:412 src/libslic3r/PrintConfig.cpp:832 +#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 msgid "Archimedean Chords" msgstr "Cordas Archimedean" -#: src/libslic3r/PrintConfig.cpp:413 src/libslic3r/PrintConfig.cpp:833 +#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 msgid "Octagram Spiral" msgstr "Espiral estrelado" -#: src/libslic3r/PrintConfig.cpp:419 +#: src/libslic3r/PrintConfig.cpp:435 msgid "Bottom fill pattern" msgstr "Padrão de preenchimento da base" -#: src/libslic3r/PrintConfig.cpp:421 +#: src/libslic3r/PrintConfig.cpp:437 msgid "" "Fill pattern for bottom infill. This only affects the bottom external " "visible layer, and not its adjacent solid shells." @@ -6292,11 +7585,11 @@ msgstr "" "Padrão de preenchimento para preenchimento da base. Isto afeta somente a " "camada visível externa inferior, e não suas paredes adjacentes." -#: src/libslic3r/PrintConfig.cpp:430 src/libslic3r/PrintConfig.cpp:440 +#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 msgid "External perimeters" msgstr "Perímetros externos" -#: src/libslic3r/PrintConfig.cpp:432 +#: src/libslic3r/PrintConfig.cpp:448 msgid "" "Set this to a non-zero value to set a manual extrusion width for external " "perimeters. If left zero, default extrusion width will be used if set, " @@ -6309,16 +7602,16 @@ msgstr "" "ponteira será usado. Se expresso em porcentagem(por exemplo 200%), será " "calculado sobre a altura da camada." -#: src/libslic3r/PrintConfig.cpp:435 src/libslic3r/PrintConfig.cpp:543 -#: src/libslic3r/PrintConfig.cpp:860 src/libslic3r/PrintConfig.cpp:872 -#: src/libslic3r/PrintConfig.cpp:992 src/libslic3r/PrintConfig.cpp:1017 -#: src/libslic3r/PrintConfig.cpp:1403 src/libslic3r/PrintConfig.cpp:1741 -#: src/libslic3r/PrintConfig.cpp:1847 src/libslic3r/PrintConfig.cpp:1915 -#: src/libslic3r/PrintConfig.cpp:2074 +#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 +#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 +#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 +#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 +#: src/libslic3r/PrintConfig.cpp:2111 msgid "mm or %" msgstr "mm ou %" -#: src/libslic3r/PrintConfig.cpp:442 +#: src/libslic3r/PrintConfig.cpp:459 msgid "" "This separate setting will affect the speed of external perimeters (the " "visible ones). If expressed as percentage (for example: 80%) it will be " @@ -6328,17 +7621,17 @@ msgstr "" "visíveis). Se expresso em porcentagem(por exemplo: 80%) Ele será calculado " "sobre a velocidade de perímetros config. acima. Defina como zero para auto." -#: src/libslic3r/PrintConfig.cpp:445 src/libslic3r/PrintConfig.cpp:881 -#: src/libslic3r/PrintConfig.cpp:1700 src/libslic3r/PrintConfig.cpp:1751 -#: src/libslic3r/PrintConfig.cpp:1958 src/libslic3r/PrintConfig.cpp:2086 +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 +#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 msgid "mm/s or %" msgstr "mm/s ou %" -#: src/libslic3r/PrintConfig.cpp:452 +#: src/libslic3r/PrintConfig.cpp:469 msgid "External perimeters first" msgstr "Perímetros externos primeiro" -#: src/libslic3r/PrintConfig.cpp:454 +#: src/libslic3r/PrintConfig.cpp:471 msgid "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." @@ -6346,12 +7639,12 @@ msgstr "" "Imprima perímetros de contorno do mais externo para o mais interno em vez da " "ordem inversa padrão." -#: src/libslic3r/PrintConfig.cpp:460 +#: src/libslic3r/PrintConfig.cpp:477 msgid "Extra perimeters if needed" msgstr "Perímetros extras se necessário" -#: src/libslic3r/PrintConfig.cpp:462 -#, c-format +#: src/libslic3r/PrintConfig.cpp:479 +#, no-c-format msgid "" "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " "keeps adding perimeters, until more than 70% of the loop immediately above " @@ -6361,7 +7654,7 @@ msgstr "" "inclinados. Slic3r continua adicionando perímetros, até que mais de 70% o do " "loop imediatamente acima é suportado." -#: src/libslic3r/PrintConfig.cpp:472 +#: src/libslic3r/PrintConfig.cpp:489 msgid "" "The extruder to use (unless more specific extruder settings are specified). " "This value overrides perimeter and infill extruders, but not the support " @@ -6371,7 +7664,7 @@ msgstr "" "sejam especificadas). Esse valor substitui as extrusoras de perímetro e " "preenchimento, mas não as extrusoras de suporte." -#: src/libslic3r/PrintConfig.cpp:484 +#: src/libslic3r/PrintConfig.cpp:501 msgid "" "Set this to the vertical distance between your nozzle tip and (usually) the " "X carriage rods. In other words, this is the height of the clearance " @@ -6383,11 +7676,7 @@ msgstr "" "torno de sua extrusora, e representa a profundidade máxima que a extrusora " "pode espreitar antes de colidir com outros objetos impressos." -#: src/libslic3r/PrintConfig.cpp:494 -msgid "Radius" -msgstr "Raio" - -#: src/libslic3r/PrintConfig.cpp:495 +#: src/libslic3r/PrintConfig.cpp:512 msgid "" "Set this to the clearance radius around your extruder. If the extruder is " "not centered, choose the largest value for safety. This setting is used to " @@ -6395,22 +7684,22 @@ msgid "" msgstr "" "Defina isso para o raio de folga em torno de sua extrusora. Se a extrusora " "não estiver centralizada, escolha o maior valor para a segurança. Essa " -"config. é usada para verificar colisões e exibir a visualização gráfica no " -"prato." +"config. é usada para verificar colisões e exibir a visualização gráfica na " +"bandeja." -#: src/libslic3r/PrintConfig.cpp:505 +#: src/libslic3r/PrintConfig.cpp:522 msgid "Extruder Color" msgstr "Cor da extrusora" -#: src/libslic3r/PrintConfig.cpp:506 src/libslic3r/PrintConfig.cpp:566 +#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Isso é usado apenas na interface Slic3r como uma ajuda visual." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:529 msgid "Extruder offset" msgstr "Compensamento da extrusora" -#: src/libslic3r/PrintConfig.cpp:513 +#: src/libslic3r/PrintConfig.cpp:530 msgid "" "If your firmware doesn't handle the extruder displacement you need the G-" "code to take it into account. This option lets you specify the displacement " @@ -6422,11 +7711,11 @@ msgstr "" "de cada extrusora em relação à primeira. Ele espera coordenadas positivas " "(eles serão subtraída da coordenada XY)." -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:539 msgid "Extrusion axis" msgstr "Eixo de extrusão" -#: src/libslic3r/PrintConfig.cpp:523 +#: src/libslic3r/PrintConfig.cpp:540 msgid "" "Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)." @@ -6434,11 +7723,11 @@ msgstr "" "Use esta opção para definir a letra do eixo associada à extrusora da sua " "impressora (geralmente E, mas algumas impressoras usam A)." -#: src/libslic3r/PrintConfig.cpp:528 +#: src/libslic3r/PrintConfig.cpp:545 msgid "Extrusion multiplier" msgstr "Multiplicador de extrusão" -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:546 msgid "" "This factor changes the amount of flow proportionally. You may need to tweak " "this setting to get nice surface finish and correct single wall widths. " @@ -6451,11 +7740,11 @@ msgstr "" "0,9 e 1,1. Se você acha que precisa mudar isso mais, verifique o diâmetro do " "filamento e os passos configurados no firmware da extrusora." -#: src/libslic3r/PrintConfig.cpp:537 +#: src/libslic3r/PrintConfig.cpp:554 msgid "Default extrusion width" msgstr "Largura de extrusão padrão" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/libslic3r/PrintConfig.cpp:556 msgid "" "Set this to a non-zero value to allow a manual extrusion width. If left to " "zero, Slic3r derives extrusion widths from the nozzle diameter (see the " @@ -6469,11 +7758,11 @@ msgstr "" "do perímetro, a largura de extrusão do preenchimento etc.). Se expresso como " "porcentagem (por exemplo: 230%), ele será calculado sobre a altura da camada." -#: src/libslic3r/PrintConfig.cpp:548 +#: src/libslic3r/PrintConfig.cpp:566 msgid "Keep fan always on" msgstr "Mantenha a ventoinha sempre ligada" -#: src/libslic3r/PrintConfig.cpp:549 +#: src/libslic3r/PrintConfig.cpp:567 msgid "" "If this is enabled, fan will never be disabled and will be kept running at " "least at its minimum speed. Useful for PLA, harmful for ABS." @@ -6482,11 +7771,11 @@ msgstr "" "funcionando pelo menos em sua velocidade mínima. Útil para o PLA, " "prejudicial para o ABS." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/libslic3r/PrintConfig.cpp:572 msgid "Enable fan if layer print time is below" msgstr "Ative o ventoinha se o tempo de impressão da camada estiver abaixo" -#: src/libslic3r/PrintConfig.cpp:555 +#: src/libslic3r/PrintConfig.cpp:573 msgid "" "If layer print time is estimated below this number of seconds, fan will be " "enabled and its speed will be calculated by interpolating the minimum and " @@ -6496,23 +7785,23 @@ msgstr "" "segundos, a ventoinha será ativada e sua velocidade será calculada " "interpolando as velocidades mínima e máxima." -#: src/libslic3r/PrintConfig.cpp:557 src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 msgid "approximate seconds" msgstr "segundos aproximados" -#: src/libslic3r/PrintConfig.cpp:571 +#: src/libslic3r/PrintConfig.cpp:588 msgid "Filament notes" msgstr "Notas de filamento" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:589 msgid "You can put your notes regarding the filament here." msgstr "Você pode colocar suas anotações sobre o filamento aqui." -#: src/libslic3r/PrintConfig.cpp:580 src/libslic3r/PrintConfig.cpp:1231 +#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 msgid "Max volumetric speed" msgstr "Máxima velocidade volumétrica" -#: src/libslic3r/PrintConfig.cpp:581 +#: src/libslic3r/PrintConfig.cpp:598 msgid "" "Maximum volumetric speed allowed for this filament. Limits the maximum " "volumetric speed of a print to the minimum of print and filament volumetric " @@ -6522,27 +7811,27 @@ msgstr "" "velocidade volumétrica máxima de uma impressão ao mínimo de velocidade " "volumétrica de impressão e de filamento. Defina como zero para nenhum limite." -#: src/libslic3r/PrintConfig.cpp:590 +#: src/libslic3r/PrintConfig.cpp:607 msgid "Loading speed" msgstr "Velocidade de carregamento" -#: src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Speed used for loading the filament on the wipe tower." msgstr "Velocidade utilizada para carregar o filamento na torre de limpeza." -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:615 msgid "Loading speed at the start" msgstr "Velocidade de carregamento no início" -#: src/libslic3r/PrintConfig.cpp:599 +#: src/libslic3r/PrintConfig.cpp:616 msgid "Speed used at the very beginning of loading phase." msgstr "Velocidade utilizada no início da fase de carregamento." -#: src/libslic3r/PrintConfig.cpp:606 +#: src/libslic3r/PrintConfig.cpp:623 msgid "Unloading speed" msgstr "Velocidade de descarregamento" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:624 msgid "" "Speed used for unloading the filament on the wipe tower (does not affect " "initial part of unloading just after ramming)." @@ -6550,22 +7839,22 @@ msgstr "" "Velocidade utilizada para descarregar o filamento na torre de limpeza (não " "afeta a parte inicial do descarregamento logo após o Ramming)." -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:632 msgid "Unloading speed at the start" msgstr "Velocidade de descarregamento no início" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:633 msgid "" "Speed used for unloading the tip of the filament immediately after ramming." msgstr "" "Velocidade usada para descarregar a ponta do filamento imediatamente após o " "Ramming." -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:640 msgid "Delay after unloading" msgstr "Atraso após o descarregamento" -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:641 msgid "" "Time to wait after the filament is unloaded. May help to get reliable " "toolchanges with flexible materials that may need more time to shrink to " @@ -6575,11 +7864,11 @@ msgstr "" "trocas de ferramenta confiáveis com materiais flexíveis que podem precisar " "de mais tempo para reduzir as dimensões originais." -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:650 msgid "Number of cooling moves" msgstr "Número de movimentos de resfriamento" -#: src/libslic3r/PrintConfig.cpp:634 +#: src/libslic3r/PrintConfig.cpp:651 msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves." @@ -6587,21 +7876,21 @@ msgstr "" "O filamento é resfriado por ser movido para frente e para trás nos tubos de " "resfriamento. Especifique o número desejado desses movimentos." -#: src/libslic3r/PrintConfig.cpp:642 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Speed of the first cooling move" msgstr "Velocidade do primeiro movimento de resfriamento" -#: src/libslic3r/PrintConfig.cpp:643 +#: src/libslic3r/PrintConfig.cpp:660 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "" "Movimentos de resfriamento estão gradualmente acelerando a partir desta " "velocidade." -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:667 msgid "Minimal purge on wipe tower" msgstr "Remoção mínima na torre da limpeza" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:668 msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " @@ -6616,25 +7905,25 @@ msgstr "" "Prime esta quantidade de material para a torre de limpeza para produzir " "sucessivas preenchimento ou sacrificial objeto extrusões de forma confiável." -#: src/libslic3r/PrintConfig.cpp:655 +#: src/libslic3r/PrintConfig.cpp:672 msgid "mm³" msgstr "mm³" -#: src/libslic3r/PrintConfig.cpp:661 +#: src/libslic3r/PrintConfig.cpp:678 msgid "Speed of the last cooling move" msgstr "Velocidade do último movimento de resfriamento" -#: src/libslic3r/PrintConfig.cpp:662 +#: src/libslic3r/PrintConfig.cpp:679 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "" "Movimentos de resfriamento estão gradualmente acelerando para esta " "velocidade." -#: src/libslic3r/PrintConfig.cpp:669 +#: src/libslic3r/PrintConfig.cpp:686 msgid "Filament load time" msgstr "Tempo de carga do filamento" -#: src/libslic3r/PrintConfig.cpp:670 +#: src/libslic3r/PrintConfig.cpp:687 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " "filament during a tool change (when executing the T code). This time is " @@ -6645,11 +7934,11 @@ msgstr "" "código T). Esse tempo é adicionado ao tempo total de impressão pelo " "estimador de tempo do G-code." -#: src/libslic3r/PrintConfig.cpp:677 +#: src/libslic3r/PrintConfig.cpp:694 msgid "Ramming parameters" msgstr "Parâmetros de Ramming" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:695 msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters." @@ -6657,11 +7946,11 @@ msgstr "" "Essa cadeia de caracteres é editada por rammingdialog e contém parâmetros " "específicos de Ramming." -#: src/libslic3r/PrintConfig.cpp:684 +#: src/libslic3r/PrintConfig.cpp:701 msgid "Filament unload time" msgstr "Tempo de descarregamento do filamento" -#: src/libslic3r/PrintConfig.cpp:685 +#: src/libslic3r/PrintConfig.cpp:702 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " "filament during a tool change (when executing the T code). This time is " @@ -6672,7 +7961,7 @@ msgstr "" "o código T). Esse tempo é adicionado ao tempo total de impressão pelo " "estimador de tempo do G-code." -#: src/libslic3r/PrintConfig.cpp:693 +#: src/libslic3r/PrintConfig.cpp:710 msgid "" "Enter your filament diameter here. Good precision is required, so use a " "caliper and do multiple measurements along the filament, then compute the " @@ -6682,11 +7971,12 @@ msgstr "" "paquímetro e fazer várias medições ao longo do filamento, em seguida, " "calcular a média." -#: src/libslic3r/PrintConfig.cpp:700 +#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 +#: src/libslic3r/PrintConfig.cpp:2504 msgid "Density" msgstr "Densidade" -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:718 msgid "" "Enter your filament density here. This is only for statistical information. " "A decent way is to weigh a known length of filament and compute the ratio of " @@ -6698,27 +7988,27 @@ msgstr "" "filamento e computar a relação do comprimento ao volume. Melhor é calcular o " "volume diretamente através do deslocamento." -#: src/libslic3r/PrintConfig.cpp:704 +#: src/libslic3r/PrintConfig.cpp:721 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:709 +#: src/libslic3r/PrintConfig.cpp:726 msgid "Filament type" msgstr "Tipo de filamento" -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:727 msgid "The filament material type for use in custom G-codes." msgstr "O tipo de material de filamento para uso em G-code customizados." -#: src/libslic3r/PrintConfig.cpp:736 +#: src/libslic3r/PrintConfig.cpp:754 msgid "Soluble material" msgstr "Material solúvel" -#: src/libslic3r/PrintConfig.cpp:737 +#: src/libslic3r/PrintConfig.cpp:755 msgid "Soluble material is most likely used for a soluble support." msgstr "O material solúvel é mais provável usado para um suporte solúvel." -#: src/libslic3r/PrintConfig.cpp:743 +#: src/libslic3r/PrintConfig.cpp:761 msgid "" "Enter your filament cost per kg here. This is only for statistical " "information." @@ -6726,15 +8016,19 @@ msgstr "" "Insira o seu custo de filamento por kg aqui. Isto é apenas para informação " "estatística." -#: src/libslic3r/PrintConfig.cpp:744 +#: src/libslic3r/PrintConfig.cpp:762 msgid "money/kg" msgstr "dinheiro/kg" -#: src/libslic3r/PrintConfig.cpp:753 +#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +msgid "(Unknown)" +msgstr "(Desconhecido)" + +#: src/libslic3r/PrintConfig.cpp:775 msgid "Fill angle" msgstr "Ângulo de preenchimento" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:777 msgid "" "Default base angle for infill orientation. Cross-hatching will be applied to " "this. Bridges will be infilled using the best direction Slic3r can detect, " @@ -6744,60 +8038,60 @@ msgstr "" "aplicada a isso. Pontes serão preenchidas usando a melhor direção Slic3r " "pode detectar, portanto, essa config. não vai afeta-los." -#: src/libslic3r/PrintConfig.cpp:767 +#: src/libslic3r/PrintConfig.cpp:789 msgid "Fill density" msgstr "Densidade de preenchimento" -#: src/libslic3r/PrintConfig.cpp:769 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Densidade de preenchimento interno, expresso na faixa de 0%-100%." -#: src/libslic3r/PrintConfig.cpp:804 +#: src/libslic3r/PrintConfig.cpp:826 msgid "Fill pattern" msgstr "Padrão de preenchimento" -#: src/libslic3r/PrintConfig.cpp:806 +#: src/libslic3r/PrintConfig.cpp:828 msgid "Fill pattern for general low-density infill." msgstr "Padrão de preenchimento para preenchimento de baixa densidade." -#: src/libslic3r/PrintConfig.cpp:822 +#: src/libslic3r/PrintConfig.cpp:844 msgid "Grid" msgstr "Grade" -#: src/libslic3r/PrintConfig.cpp:823 +#: src/libslic3r/PrintConfig.cpp:845 msgid "Triangles" msgstr "Triângulos" -#: src/libslic3r/PrintConfig.cpp:824 +#: src/libslic3r/PrintConfig.cpp:846 msgid "Stars" msgstr "Estrelas" -#: src/libslic3r/PrintConfig.cpp:825 +#: src/libslic3r/PrintConfig.cpp:847 msgid "Cubic" msgstr "Cúbico" -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:848 msgid "Line" msgstr "Linha" -#: src/libslic3r/PrintConfig.cpp:828 src/libslic3r/PrintConfig.cpp:1974 +#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 msgid "Honeycomb" msgstr "Hexágono" -#: src/libslic3r/PrintConfig.cpp:829 +#: src/libslic3r/PrintConfig.cpp:851 msgid "3D Honeycomb" msgstr "Hexágono 3D" -#: src/libslic3r/PrintConfig.cpp:830 +#: src/libslic3r/PrintConfig.cpp:852 msgid "Gyroid" msgstr "Giróide" -#: src/libslic3r/PrintConfig.cpp:837 src/libslic3r/PrintConfig.cpp:846 -#: src/libslic3r/PrintConfig.cpp:854 src/libslic3r/PrintConfig.cpp:887 +#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 +#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 msgid "First layer" msgstr "Primeira camada" -#: src/libslic3r/PrintConfig.cpp:838 +#: src/libslic3r/PrintConfig.cpp:860 msgid "" "This is the acceleration your printer will use for first layer. Set zero to " "disable acceleration control for first layer." @@ -6805,7 +8099,7 @@ msgstr "" "Esta é a aceleração que sua impressora usará para a primeira camada. Defina " "zero para desabilitar o controle de aceleração para a primeira camada." -#: src/libslic3r/PrintConfig.cpp:847 +#: src/libslic3r/PrintConfig.cpp:869 msgid "" "Heated build plate temperature for the first layer. Set this to zero to " "disable bed temperature control commands in the output." @@ -6813,7 +8107,7 @@ msgstr "" "Temperatura da mesa aquecida para a primeira camada. Defina isso como zero " "para desabilitar os comandos de controle de temperatura da mesa na saída." -#: src/libslic3r/PrintConfig.cpp:856 +#: src/libslic3r/PrintConfig.cpp:878 msgid "" "Set this to a non-zero value to set a manual extrusion width for first " "layer. You can use this to force fatter extrudates for better adhesion. If " @@ -6826,11 +8120,7 @@ msgstr "" "exemplo, 120%) será computado sobre a primeira altura da camada. Se definido " "como zero, ele usará a largura de extrusão padrão." -#: src/libslic3r/PrintConfig.cpp:866 -msgid "First layer height" -msgstr "Altura da primeira camada" - -#: src/libslic3r/PrintConfig.cpp:868 +#: src/libslic3r/PrintConfig.cpp:891 msgid "" "When printing with very low layer heights, you might still want to print a " "thicker bottom layer to improve adhesion and tolerance for non perfect build " @@ -6843,11 +8133,11 @@ msgstr "" "absoluto ou como uma porcentagem (por exemplo: 150%) sobre a altura da " "camada padrão." -#: src/libslic3r/PrintConfig.cpp:877 +#: src/libslic3r/PrintConfig.cpp:900 msgid "First layer speed" msgstr "Velocidade da primeira camada" -#: src/libslic3r/PrintConfig.cpp:878 +#: src/libslic3r/PrintConfig.cpp:901 msgid "" "If expressed as absolute value in mm/s, this speed will be applied to all " "the print moves of the first layer, regardless of their type. If expressed " @@ -6858,7 +8148,7 @@ msgstr "" "seu tipo. Se expresso em porcentagem(por exemplo: 40%) Ele dimensionará as " "velocidades padrão." -#: src/libslic3r/PrintConfig.cpp:888 +#: src/libslic3r/PrintConfig.cpp:911 msgid "" "Extruder temperature for first layer. If you want to control temperature " "manually during print, set this to zero to disable temperature control " @@ -6868,7 +8158,7 @@ msgstr "" "temperatura manualmente durante a impressão, defina isso como zero para " "desabilitar os comandos de controle de temperatura no arquivo de saída." -#: src/libslic3r/PrintConfig.cpp:897 +#: src/libslic3r/PrintConfig.cpp:920 msgid "" "Speed for filling small gaps using short zigzag moves. Keep this reasonably " "low to avoid too much shaking and resonance issues. Set zero to disable gaps " @@ -6879,11 +8169,11 @@ msgstr "" "problemas de ressonância. Defina zero para desabilitar o preenchimento de " "lacunas." -#: src/libslic3r/PrintConfig.cpp:905 +#: src/libslic3r/PrintConfig.cpp:928 msgid "Verbose G-code" msgstr "Gcode detalhado" -#: src/libslic3r/PrintConfig.cpp:906 +#: src/libslic3r/PrintConfig.cpp:929 msgid "" "Enable this to get a commented G-code file, with each line explained by a " "descriptive text. If you print from SD card, the additional weight of the " @@ -6893,11 +8183,11 @@ msgstr "" "explicada por um texto descritivo. Se você imprimir a partir do cartão SD, o " "peso adicional do arquivo pode fazer o seu firmware ficar mais lento." -#: src/libslic3r/PrintConfig.cpp:913 +#: src/libslic3r/PrintConfig.cpp:936 msgid "G-code flavor" msgstr "Tipo de G-code" -#: src/libslic3r/PrintConfig.cpp:914 +#: src/libslic3r/PrintConfig.cpp:937 msgid "" "Some G/M-code commands, including temperature control and others, are not " "universal. Set this option to your printer's firmware to get a compatible " @@ -6909,15 +8199,15 @@ msgstr "" "uma saída compatível. O \"sem extrusão\" tipo impede PrusaSlicer de exportar " "qualquer valor de extrusão em tudo." -#: src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:960 msgid "No extrusion" msgstr "Sem extrusão" -#: src/libslic3r/PrintConfig.cpp:942 +#: src/libslic3r/PrintConfig.cpp:965 msgid "Label objects" msgstr "Rotular objetos" -#: src/libslic3r/PrintConfig.cpp:943 +#: src/libslic3r/PrintConfig.cpp:966 msgid "" "Enable this to add comments into the G-Code labeling print moves with what " "object they belong to, which is useful for the Octoprint CancelObject " @@ -6930,11 +8220,11 @@ msgstr "" "config. de multi material de extrusora única e limpe em objeto/limpar em " "preenchimento." -#: src/libslic3r/PrintConfig.cpp:950 +#: src/libslic3r/PrintConfig.cpp:973 msgid "High extruder current on filament swap" msgstr "Corrente elevada da extrusora na troca do filamento" -#: src/libslic3r/PrintConfig.cpp:951 +#: src/libslic3r/PrintConfig.cpp:974 msgid "" "It may be beneficial to increase the extruder motor current during the " "filament exchange sequence to allow for rapid ramming feed rates and to " @@ -6945,7 +8235,7 @@ msgstr "" "Ramming rápidas e para superar a resistência ao carregar um filamento com " "uma ponta feia." -#: src/libslic3r/PrintConfig.cpp:959 +#: src/libslic3r/PrintConfig.cpp:982 msgid "" "This is the acceleration your printer will use for infill. Set zero to " "disable acceleration control for infill." @@ -6953,11 +8243,11 @@ msgstr "" "Esta é a aceleração que sua impressora usará para preenchimento. Defina zero " "para desabilitar o controle de aceleração para preenchimento." -#: src/libslic3r/PrintConfig.cpp:967 +#: src/libslic3r/PrintConfig.cpp:990 msgid "Combine infill every" msgstr "Combine preenchimento a cada" -#: src/libslic3r/PrintConfig.cpp:969 +#: src/libslic3r/PrintConfig.cpp:992 msgid "" "This feature allows to combine infill and speed up your print by extruding " "thicker infill layers while preserving thin perimeters, thus accuracy." @@ -6966,20 +8256,20 @@ msgstr "" "extrusão camadas de preenchimento mais espessa, preservando perímetros " "finos, assim, a precisão." -#: src/libslic3r/PrintConfig.cpp:972 +#: src/libslic3r/PrintConfig.cpp:995 msgid "Combine infill every n layers" msgstr "Combine preenchimento cada n camadas" -#: src/libslic3r/PrintConfig.cpp:978 +#: src/libslic3r/PrintConfig.cpp:1001 msgid "Infill extruder" msgstr "Extrusora de preenchimento" -#: src/libslic3r/PrintConfig.cpp:980 +#: src/libslic3r/PrintConfig.cpp:1003 msgid "The extruder to use when printing infill." msgstr "" "A extrusora a ser utilizada quando estiver imprimindo preenchimento sólido." -#: src/libslic3r/PrintConfig.cpp:988 +#: src/libslic3r/PrintConfig.cpp:1011 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill. If " "left zero, default extrusion width will be used if set, otherwise 1.125 x " @@ -6994,11 +8284,11 @@ msgstr "" "acelerar o preenchimento e tornar suas peças mais fortes. Se expresso em " "porcentagem(por exemplo, 90%) Ele será calculado sobre a altura da camada." -#: src/libslic3r/PrintConfig.cpp:997 +#: src/libslic3r/PrintConfig.cpp:1021 msgid "Infill before perimeters" msgstr "Preenchimento antes dos perímetros" -#: src/libslic3r/PrintConfig.cpp:998 +#: src/libslic3r/PrintConfig.cpp:1022 msgid "" "This option will switch the print order of perimeters and infill, making the " "latter first." @@ -7006,11 +8296,11 @@ msgstr "" "Esta opção irá mudar a ordem de impressão de perímetros e preenchimento, " "tornando o último primeiro." -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1027 msgid "Only infill where needed" msgstr "Somente preenchimento onde necessário" -#: src/libslic3r/PrintConfig.cpp:1005 +#: src/libslic3r/PrintConfig.cpp:1029 msgid "" "This option will limit infill to the areas actually needed for supporting " "ceilings (it will act as internal support material). If enabled, slows down " @@ -7021,11 +8311,11 @@ msgstr "" "habilitada, retarda a geração de G-code devido às várias verificações " "envolvidas." -#: src/libslic3r/PrintConfig.cpp:1012 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "Infill/perimeters overlap" msgstr "Sobreposição de preenchimento/perímetros" -#: src/libslic3r/PrintConfig.cpp:1014 +#: src/libslic3r/PrintConfig.cpp:1038 msgid "" "This setting applies an additional overlap between infill and perimeters for " "better bonding. Theoretically this shouldn't be needed, but backlash might " @@ -7038,24 +8328,24 @@ msgstr "" "porcentagem(exemplo: 15%) é calculado sobre a largura da extrusão do " "perímetro." -#: src/libslic3r/PrintConfig.cpp:1025 +#: src/libslic3r/PrintConfig.cpp:1049 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "" "Velocidade para imprimir o preenchimento interno. Defina como zero para auto." -#: src/libslic3r/PrintConfig.cpp:1033 +#: src/libslic3r/PrintConfig.cpp:1057 msgid "Inherits profile" msgstr "Herda o perfil" -#: src/libslic3r/PrintConfig.cpp:1034 +#: src/libslic3r/PrintConfig.cpp:1058 msgid "Name of the profile, from which this profile inherits." msgstr "Nome do perfil, a partir do qual este perfil herda." -#: src/libslic3r/PrintConfig.cpp:1047 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Interface shells" msgstr "Interface dos perímetros externos." -#: src/libslic3r/PrintConfig.cpp:1048 +#: src/libslic3r/PrintConfig.cpp:1072 msgid "" "Force the generation of solid shells between adjacent materials/volumes. " "Useful for multi-extruder prints with translucent materials or manual " @@ -7065,7 +8355,7 @@ msgstr "" "adjacentes. Útil para cópias da multi-extrusora com materiais translúcidos " "ou material de sustentação solúvel manual." -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/libslic3r/PrintConfig.cpp:1081 msgid "" "This custom code is inserted at every layer change, right after the Z move " "and before the extruder moves to the first layer point. Note that you can " @@ -7077,11 +8367,11 @@ msgstr "" "Observe que você pode usar variáveis de espaço reservado para todas as " "config. Slic3r, bem como [layer_num] e [layer_z]." -#: src/libslic3r/PrintConfig.cpp:1068 +#: src/libslic3r/PrintConfig.cpp:1092 msgid "Supports remaining times" msgstr "Tempo de impressão restante" -#: src/libslic3r/PrintConfig.cpp:1069 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "" "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " "intervals into the G-code to let the firmware show accurate remaining time. " @@ -7094,152 +8384,152 @@ msgstr "" "M73. Além disso, o firmware i3 MK3 suporta M73 QXX Sxx para o modo " "silencioso." -#: src/libslic3r/PrintConfig.cpp:1077 +#: src/libslic3r/PrintConfig.cpp:1101 msgid "Supports stealth mode" msgstr "Suporta o modo silencioso" -#: src/libslic3r/PrintConfig.cpp:1078 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "The firmware supports stealth mode" msgstr "O firmware suporta o modo silencioso" -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1125 msgid "Maximum feedrate X" msgstr "Máxima taxa de alimentação do X" -#: src/libslic3r/PrintConfig.cpp:1103 +#: src/libslic3r/PrintConfig.cpp:1126 msgid "Maximum feedrate Y" msgstr "Máxima taxa de alimentação do Y" -#: src/libslic3r/PrintConfig.cpp:1104 +#: src/libslic3r/PrintConfig.cpp:1127 msgid "Maximum feedrate Z" msgstr "Máxima taxa de alimentação do Z" -#: src/libslic3r/PrintConfig.cpp:1105 +#: src/libslic3r/PrintConfig.cpp:1128 msgid "Maximum feedrate E" msgstr "Máxima taxa de alimentação do E" -#: src/libslic3r/PrintConfig.cpp:1108 +#: src/libslic3r/PrintConfig.cpp:1131 msgid "Maximum feedrate of the X axis" msgstr "Máxima taxa de alimentação do eixo X" -#: src/libslic3r/PrintConfig.cpp:1109 +#: src/libslic3r/PrintConfig.cpp:1132 msgid "Maximum feedrate of the Y axis" msgstr "Máxima taxa de alimentação do eixo Y" -#: src/libslic3r/PrintConfig.cpp:1110 +#: src/libslic3r/PrintConfig.cpp:1133 msgid "Maximum feedrate of the Z axis" msgstr "Máxima taxa de alimentação do eixo Z" -#: src/libslic3r/PrintConfig.cpp:1111 +#: src/libslic3r/PrintConfig.cpp:1134 msgid "Maximum feedrate of the E axis" msgstr "Máxima taxa de alimentação do eixo E" -#: src/libslic3r/PrintConfig.cpp:1120 +#: src/libslic3r/PrintConfig.cpp:1142 msgid "Maximum acceleration X" msgstr "Aceleração máxima do X" -#: src/libslic3r/PrintConfig.cpp:1121 +#: src/libslic3r/PrintConfig.cpp:1143 msgid "Maximum acceleration Y" msgstr "Aceleração máxima do Y" -#: src/libslic3r/PrintConfig.cpp:1122 +#: src/libslic3r/PrintConfig.cpp:1144 msgid "Maximum acceleration Z" msgstr "Aceleração máxima do Z" -#: src/libslic3r/PrintConfig.cpp:1123 +#: src/libslic3r/PrintConfig.cpp:1145 msgid "Maximum acceleration E" msgstr "Aceleração máxima do E" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1148 msgid "Maximum acceleration of the X axis" msgstr "Aceleração máxima do eixo X" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1149 msgid "Maximum acceleration of the Y axis" msgstr "Aceleração máxima do eixo Y" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1150 msgid "Maximum acceleration of the Z axis" msgstr "Aceleração máxima do eixo Z" -#: src/libslic3r/PrintConfig.cpp:1129 +#: src/libslic3r/PrintConfig.cpp:1151 msgid "Maximum acceleration of the E axis" msgstr "Aceleração máxima do eixo E" -#: src/libslic3r/PrintConfig.cpp:1138 +#: src/libslic3r/PrintConfig.cpp:1159 msgid "Maximum jerk X" msgstr "Máximo empurrão X" -#: src/libslic3r/PrintConfig.cpp:1139 +#: src/libslic3r/PrintConfig.cpp:1160 msgid "Maximum jerk Y" msgstr "Máximo empurrão Y" -#: src/libslic3r/PrintConfig.cpp:1140 +#: src/libslic3r/PrintConfig.cpp:1161 msgid "Maximum jerk Z" msgstr "Máximo empurrão Z" -#: src/libslic3r/PrintConfig.cpp:1141 +#: src/libslic3r/PrintConfig.cpp:1162 msgid "Maximum jerk E" msgstr "Máximo empurrão E" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1165 msgid "Maximum jerk of the X axis" msgstr "Máximo empurrão do eixo X" -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1166 msgid "Maximum jerk of the Y axis" msgstr "Máximo empurrão do eixo Y" -#: src/libslic3r/PrintConfig.cpp:1146 +#: src/libslic3r/PrintConfig.cpp:1167 msgid "Maximum jerk of the Z axis" msgstr "Máximo empurrão do eixo Z" -#: src/libslic3r/PrintConfig.cpp:1147 +#: src/libslic3r/PrintConfig.cpp:1168 msgid "Maximum jerk of the E axis" msgstr "Máximo empurrão do eixo E" -#: src/libslic3r/PrintConfig.cpp:1158 +#: src/libslic3r/PrintConfig.cpp:1178 msgid "Minimum feedrate when extruding" msgstr "Taxa de alimentação mínima ao extrudar" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1180 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Taxa de alimentação mínima ao extrudar (M205 S)" -#: src/libslic3r/PrintConfig.cpp:1169 +#: src/libslic3r/PrintConfig.cpp:1188 msgid "Minimum travel feedrate" msgstr "Taxa de alimentação mínima ao viajar" -#: src/libslic3r/PrintConfig.cpp:1171 +#: src/libslic3r/PrintConfig.cpp:1190 msgid "Minimum travel feedrate (M205 T)" msgstr "Taxa de alimentação mínima ao viajar (M205 T)" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1198 msgid "Maximum acceleration when extruding" msgstr "Aceleração máxima quando expurgando" -#: src/libslic3r/PrintConfig.cpp:1182 +#: src/libslic3r/PrintConfig.cpp:1200 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Aceleração máxima quando extrudando (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1191 +#: src/libslic3r/PrintConfig.cpp:1208 msgid "Maximum acceleration when retracting" msgstr "Aceleração máxima durante a retração" -#: src/libslic3r/PrintConfig.cpp:1193 +#: src/libslic3r/PrintConfig.cpp:1210 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Aceleração máxima quando retração (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1201 src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 msgid "Max" msgstr "Máx" -#: src/libslic3r/PrintConfig.cpp:1202 +#: src/libslic3r/PrintConfig.cpp:1218 msgid "This setting represents the maximum speed of your fan." msgstr "Esta config. representa a velocidade máxima da sua ventoinha." -#: src/libslic3r/PrintConfig.cpp:1211 -#, c-format +#: src/libslic3r/PrintConfig.cpp:1227 +#, no-c-format msgid "" "This is the highest printable layer height for this extruder, used to cap " "the variable layer height and support layer height. Maximum recommended " @@ -7252,11 +8542,11 @@ msgstr "" "adesão razoável entre camadas. Se definido como 0, a altura da camada é " "limitada a 75% o do diâmetro da ponteira." -#: src/libslic3r/PrintConfig.cpp:1221 +#: src/libslic3r/PrintConfig.cpp:1237 msgid "Max print speed" msgstr "Velocidade máxima de impressão" -#: src/libslic3r/PrintConfig.cpp:1222 +#: src/libslic3r/PrintConfig.cpp:1238 msgid "" "When setting other speed settings to 0 Slic3r will autocalculate the optimal " "speed in order to keep constant extruder pressure. This experimental setting " @@ -7267,7 +8557,7 @@ msgstr "" "extrusora. Esta config. experimental é usada para definir a velocidade de " "impressão mais alta que você deseja permitir." -#: src/libslic3r/PrintConfig.cpp:1232 +#: src/libslic3r/PrintConfig.cpp:1248 msgid "" "This experimental setting is used to set the maximum volumetric speed your " "extruder supports." @@ -7275,11 +8565,11 @@ msgstr "" "Esta config. experimental é usada para definir a velocidade máxima " "volumétrica que sua extrusora suporta." -#: src/libslic3r/PrintConfig.cpp:1241 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Max volumetric slope positive" msgstr "Inclinação volumétrica máx positiva" -#: src/libslic3r/PrintConfig.cpp:1242 src/libslic3r/PrintConfig.cpp:1253 +#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 msgid "" "This experimental setting is used to limit the speed of change in extrusion " "rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " @@ -7292,25 +8582,25 @@ msgstr "" "extrusão de 0,2 mm, avanço de 20 mm/s) para 5,4 mm ³/s (avanço 60 mm/s) " "levará pelo menos 2 segundos." -#: src/libslic3r/PrintConfig.cpp:1246 src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 msgid "mm³/s²" msgstr "mm ³/s ²" -#: src/libslic3r/PrintConfig.cpp:1252 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Max volumetric slope negative" msgstr "Inclinação volumétrica máx negativa" -#: src/libslic3r/PrintConfig.cpp:1264 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 msgid "Min" msgstr "Min" -#: src/libslic3r/PrintConfig.cpp:1265 +#: src/libslic3r/PrintConfig.cpp:1281 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "" "Esta config. representa o PWM mínimo que seu ventoinha precisa para " "trabalhar." -#: src/libslic3r/PrintConfig.cpp:1274 +#: src/libslic3r/PrintConfig.cpp:1290 msgid "" "This is the lowest printable layer height for this extruder and limits the " "resolution for variable layer height. Typical values are between 0.05 mm and " @@ -7320,19 +8610,19 @@ msgstr "" "definição para a altura variável da camada. Os valores típicos são entre 0, " "5 mm e 0,1 mm." -#: src/libslic3r/PrintConfig.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Min print speed" msgstr "Velocidade mínima de impressão" -#: src/libslic3r/PrintConfig.cpp:1283 +#: src/libslic3r/PrintConfig.cpp:1299 msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r não vai escalar a velocidade abaixo desta velocidade." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Minimal filament extrusion length" msgstr "Comprimento mínimo da extrusão do filamento" -#: src/libslic3r/PrintConfig.cpp:1291 +#: src/libslic3r/PrintConfig.cpp:1307 msgid "" "Generate no less than the number of skirt loops required to consume the " "specified amount of filament on the bottom layer. For multi-extruder " @@ -7342,11 +8632,11 @@ msgstr "" "a quantidade especificada de filamento na camada inferior. Para máquinas " "multiextrusoras, este mínimo aplica-se a cada extrusora." -#: src/libslic3r/PrintConfig.cpp:1300 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Configuration notes" msgstr "Notas de config." -#: src/libslic3r/PrintConfig.cpp:1301 +#: src/libslic3r/PrintConfig.cpp:1317 msgid "" "You can put here your personal notes. This text will be added to the G-code " "header comments." @@ -7354,17 +8644,17 @@ msgstr "" "Você pode colocar aqui suas anotações pessoais. Este texto será adicionado " "aos comentários do cabeçalho do G-code." -#: src/libslic3r/PrintConfig.cpp:1311 +#: src/libslic3r/PrintConfig.cpp:1327 msgid "" "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "" "Este é o diâmetro da ponteira da extrusora (por exemplo: 0.5, 0.35 etc.)" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1332 msgid "Host Type" msgstr "Tipo de host" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/libslic3r/PrintConfig.cpp:1333 msgid "" "Slic3r can upload G-code files to a printer host. This field must contain " "the kind of the host." @@ -7372,11 +8662,11 @@ msgstr "" "Slic3r pode carregar arquivos de G-code para um host de impressora. Este " "campo deve conter o tipo do host." -#: src/libslic3r/PrintConfig.cpp:1328 +#: src/libslic3r/PrintConfig.cpp:1348 msgid "Only retract when crossing perimeters" msgstr "Apenas retrair quando cruzar perímetros" -#: src/libslic3r/PrintConfig.cpp:1329 +#: src/libslic3r/PrintConfig.cpp:1349 msgid "" "Disables retraction when the travel path does not exceed the upper layer's " "perimeters (and thus any ooze will be probably invisible)." @@ -7385,7 +8675,7 @@ msgstr "" "camada superior (e, portanto, qualquer escorrimento será provavelmente " "invisível)." -#: src/libslic3r/PrintConfig.cpp:1336 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing. It will enable a tall skirt automatically and move extruders outside " @@ -7395,11 +8685,11 @@ msgstr "" "escorrimento. Ele vai permitir uma saia alta automaticamente e mover " "extrusoras fora de tal saia quando a mudança de temperatura." -#: src/libslic3r/PrintConfig.cpp:1343 +#: src/libslic3r/PrintConfig.cpp:1363 msgid "Output filename format" msgstr "Formato de nome de arquivo de saída" -#: src/libslic3r/PrintConfig.cpp:1344 +#: src/libslic3r/PrintConfig.cpp:1364 msgid "" "You can use all configuration options as variables inside this template. For " "example: [layer_height], [fill_density] etc. You can also use [timestamp], " @@ -7411,11 +8701,11 @@ msgstr "" "também pode usar [tempo], [ano], [mês], [dia], [hora], [minuto], [segundo], " "[versão], [nome_entrada], [nome_entrada_base]." -#: src/libslic3r/PrintConfig.cpp:1353 +#: src/libslic3r/PrintConfig.cpp:1373 msgid "Detect bridging perimeters" msgstr "Detectar perímetros de ponte" -#: src/libslic3r/PrintConfig.cpp:1355 +#: src/libslic3r/PrintConfig.cpp:1375 msgid "" "Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan." @@ -7424,11 +8714,11 @@ msgstr "" "será usado), para aplicar a velocidade da ponte a eles e para habilitar a " "ventoinha." -#: src/libslic3r/PrintConfig.cpp:1361 +#: src/libslic3r/PrintConfig.cpp:1381 msgid "Filament parking position" msgstr "Posição de estacionamento do filamento" -#: src/libslic3r/PrintConfig.cpp:1362 +#: src/libslic3r/PrintConfig.cpp:1382 msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware." @@ -7437,11 +8727,11 @@ msgstr "" "quando descarregado. Isso deve corresponder ao valor no firmware da " "impressora." -#: src/libslic3r/PrintConfig.cpp:1370 +#: src/libslic3r/PrintConfig.cpp:1390 msgid "Extra loading distance" msgstr "Distância de carregamento extra" -#: src/libslic3r/PrintConfig.cpp:1371 +#: src/libslic3r/PrintConfig.cpp:1391 msgid "" "When set to zero, the distance the filament is moved from parking position " "during load is exactly the same as it was moved back during unload. When " @@ -7453,12 +8743,12 @@ msgstr "" "durante o descarregamento. Quando positivo, ele é carregado ainda mais, se " "negativo, o movimento de carga é menor do que o descarregamento." -#: src/libslic3r/PrintConfig.cpp:1379 src/libslic3r/PrintConfig.cpp:1397 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1419 +#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 +#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 msgid "Perimeters" msgstr "Perímetros" -#: src/libslic3r/PrintConfig.cpp:1380 +#: src/libslic3r/PrintConfig.cpp:1400 msgid "" "This is the acceleration your printer will use for perimeters. A high value " "like 9000 usually gives good results if your hardware is up to the job. Set " @@ -7468,17 +8758,17 @@ msgstr "" "como 9000 geralmente dá bons resultados se o seu hardware suporta. Defina " "zero para desabilitar o controle de aceleração para perímetros." -#: src/libslic3r/PrintConfig.cpp:1388 +#: src/libslic3r/PrintConfig.cpp:1408 msgid "Perimeter extruder" msgstr "Extrusora de perímetro" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1410 msgid "" "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "" "A extrusora para usar ao imprimir perímetros e aba. A primeira extrusora é 1." -#: src/libslic3r/PrintConfig.cpp:1399 +#: src/libslic3r/PrintConfig.cpp:1419 msgid "" "Set this to a non-zero value to set a manual extrusion width for perimeters. " "You may want to use thinner extrudates to get more accurate surfaces. If " @@ -7493,14 +8783,14 @@ msgstr "" "ponteira será usado. Se expresso em porcentagem(por exemplo, 200%) Ele será " "calculado sobre a altura da camada." -#: src/libslic3r/PrintConfig.cpp:1411 +#: src/libslic3r/PrintConfig.cpp:1432 msgid "" "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "" "Velocidade para perímetros (contornos, também chamadas de perímetros " "externos verticais). Defina como zero para auto." -#: src/libslic3r/PrintConfig.cpp:1421 +#: src/libslic3r/PrintConfig.cpp:1442 msgid "" "This option sets the number of perimeters to generate for each layer. Note " "that Slic3r may increase this number automatically when it detects sloping " @@ -7512,11 +8802,11 @@ msgstr "" "superfícies inclinadas que se beneficiam de um número maior de perímetros se " "a opção extra perímetros estiver habilitada." -#: src/libslic3r/PrintConfig.cpp:1425 +#: src/libslic3r/PrintConfig.cpp:1446 msgid "(minimum)" msgstr "(mínimo)" -#: src/libslic3r/PrintConfig.cpp:1433 +#: src/libslic3r/PrintConfig.cpp:1454 msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " @@ -7530,35 +8820,35 @@ msgstr "" "para o arquivo de G-code como o primeiro argumento, e eles poderão acessar " "as config. de config. do Slic3r lendo variáveis de ambiente." -#: src/libslic3r/PrintConfig.cpp:1445 +#: src/libslic3r/PrintConfig.cpp:1466 msgid "Printer type" msgstr "Tipo de impressora" -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1467 msgid "Type of the printer." msgstr "Tipo da impressora." -#: src/libslic3r/PrintConfig.cpp:1451 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "Printer notes" msgstr "Notas da impressora" -#: src/libslic3r/PrintConfig.cpp:1452 +#: src/libslic3r/PrintConfig.cpp:1473 msgid "You can put your notes regarding the printer here." msgstr "Você pode colocar suas anotações sobre a impressora aqui." -#: src/libslic3r/PrintConfig.cpp:1460 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Printer vendor" msgstr "Fornecedor da impressora" -#: src/libslic3r/PrintConfig.cpp:1461 +#: src/libslic3r/PrintConfig.cpp:1482 msgid "Name of the printer vendor." msgstr "Nome do fornecedor da impressora." -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1487 msgid "Printer variant" msgstr "Variante da impressora" -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/libslic3r/PrintConfig.cpp:1488 msgid "" "Name of the printer variant. For example, the printer variants may be " "differentiated by a nozzle diameter." @@ -7566,11 +8856,11 @@ msgstr "" "Nome da variante da impressora. Por exemplo, as variantes da impressora " "podem ser diferenciadas por um diâmetro da ponteira." -#: src/libslic3r/PrintConfig.cpp:1480 +#: src/libslic3r/PrintConfig.cpp:1501 msgid "Raft layers" msgstr "Camadas da estrado" -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1503 msgid "" "The object will be raised by this number of layers, and support material " "will be generated under it." @@ -7578,11 +8868,11 @@ msgstr "" "O objeto será elevado por este número de camadas, e o material de suporte " "será gerado em baixo dele." -#: src/libslic3r/PrintConfig.cpp:1490 +#: src/libslic3r/PrintConfig.cpp:1511 msgid "Resolution" msgstr "Resolução" -#: src/libslic3r/PrintConfig.cpp:1491 +#: src/libslic3r/PrintConfig.cpp:1512 msgid "" "Minimum detail resolution, used to simplify the input file for speeding up " "the slicing job and reducing memory usage. High-resolution models often " @@ -7595,22 +8885,22 @@ msgstr "" "podem renderizar. Defina como zero para desabilitar qualquer simplificação e " "usar a resolução completa da entrada." -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1522 msgid "Minimum travel after retraction" msgstr "Retração em viagens acima de" -#: src/libslic3r/PrintConfig.cpp:1502 +#: src/libslic3r/PrintConfig.cpp:1523 msgid "" "Retraction is not triggered when travel moves are shorter than this length." msgstr "" "A retração não é acionada quando os movimentos de viagem são mais curtos que " "esse comprimento." -#: src/libslic3r/PrintConfig.cpp:1508 +#: src/libslic3r/PrintConfig.cpp:1529 msgid "Retract amount before wipe" msgstr "Quantidade de retração antes da limpeza" -#: src/libslic3r/PrintConfig.cpp:1509 +#: src/libslic3r/PrintConfig.cpp:1530 msgid "" "With bowden extruders, it may be wise to do some amount of quick retract " "before doing the wipe movement." @@ -7618,23 +8908,23 @@ msgstr "" "Com extrusoras Bowden, pode ser sábio fazer alguma quantidade de retração " "rápida antes de fazer o movimento da limpeza." -#: src/libslic3r/PrintConfig.cpp:1516 +#: src/libslic3r/PrintConfig.cpp:1537 msgid "Retract on layer change" msgstr "Retrair na mudança de camada" -#: src/libslic3r/PrintConfig.cpp:1517 +#: src/libslic3r/PrintConfig.cpp:1538 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Este sinalizador impõe uma retração sempre que um movimento Z é feito." -#: src/libslic3r/PrintConfig.cpp:1522 src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 msgid "Length" msgstr "Comprimento" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1544 msgid "Retraction Length" msgstr "Comprimento de retração" -#: src/libslic3r/PrintConfig.cpp:1524 +#: src/libslic3r/PrintConfig.cpp:1545 msgid "" "When retraction is triggered, filament is pulled back by the specified " "amount (the length is measured on raw filament, before it enters the " @@ -7644,15 +8934,15 @@ msgstr "" "especificada (o comprimento é medido em filamento cru, antes de entrar na " "extrusora)." -#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1535 +#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 msgid "mm (zero to disable)" msgstr "mm (zero para desativar)" -#: src/libslic3r/PrintConfig.cpp:1531 +#: src/libslic3r/PrintConfig.cpp:1552 msgid "Retraction Length (Toolchange)" msgstr "Comprimento de retração (mudança de ferramenta)" -#: src/libslic3r/PrintConfig.cpp:1532 +#: src/libslic3r/PrintConfig.cpp:1553 msgid "" "When retraction is triggered before changing tool, filament is pulled back " "by the specified amount (the length is measured on raw filament, before it " @@ -7662,11 +8952,11 @@ msgstr "" "puxado para trás pela quantidade especificada (o comprimento é medido em " "filamento cru, antes de entrar na extrusora)." -#: src/libslic3r/PrintConfig.cpp:1540 +#: src/libslic3r/PrintConfig.cpp:1561 msgid "Lift Z" msgstr "Elevar Z" -#: src/libslic3r/PrintConfig.cpp:1541 +#: src/libslic3r/PrintConfig.cpp:1562 msgid "" "If you set this to a positive value, Z is quickly raised every time a " "retraction is triggered. When using multiple extruders, only the setting for " @@ -7676,15 +8966,15 @@ msgstr "" "que uma retração é acionada. Ao usar várias extrusoras, somente a config. " "para a primeira extrusora será considerada." -#: src/libslic3r/PrintConfig.cpp:1548 +#: src/libslic3r/PrintConfig.cpp:1569 msgid "Above Z" msgstr "Acima de Z" -#: src/libslic3r/PrintConfig.cpp:1549 +#: src/libslic3r/PrintConfig.cpp:1570 msgid "Only lift Z above" msgstr "Apenas elevar Z acima" -#: src/libslic3r/PrintConfig.cpp:1550 +#: src/libslic3r/PrintConfig.cpp:1571 msgid "" "If you set this to a positive value, Z lift will only take place above the " "specified absolute Z. You can tune this setting for skipping lift on the " @@ -7694,15 +8984,15 @@ msgstr "" "acima do Z absoluto especificado. Você pode ajustar essa config. para pular " "o elevador nas primeiras camadas." -#: src/libslic3r/PrintConfig.cpp:1557 +#: src/libslic3r/PrintConfig.cpp:1578 msgid "Below Z" msgstr "Abaixo de Z" -#: src/libslic3r/PrintConfig.cpp:1558 +#: src/libslic3r/PrintConfig.cpp:1579 msgid "Only lift Z below" msgstr "Apenas elevar Z abaixo" -#: src/libslic3r/PrintConfig.cpp:1559 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "" "If you set this to a positive value, Z lift will only take place below the " "specified absolute Z. You can tune this setting for limiting lift to the " @@ -7712,11 +9002,11 @@ msgstr "" "abaixo do Z absoluto especificado. Você pode ajustar essa config. para " "limitar a elevação às primeiras camadas." -#: src/libslic3r/PrintConfig.cpp:1567 src/libslic3r/PrintConfig.cpp:1575 +#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 msgid "Extra length on restart" msgstr "Comprimento extra no reinício" -#: src/libslic3r/PrintConfig.cpp:1568 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "" "When the retraction is compensated after the travel move, the extruder will " "push this additional amount of filament. This setting is rarely needed." @@ -7725,7 +9015,7 @@ msgstr "" "empurrar esta quantidade adicional de filamento. Essa config. raramente é " "necessária." -#: src/libslic3r/PrintConfig.cpp:1576 +#: src/libslic3r/PrintConfig.cpp:1597 msgid "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." @@ -7733,19 +9023,19 @@ msgstr "" "Quando a retração é compensada após a ferramenta de mudança, a extrusora " "empurrará esta quantidade adicional de filamento." -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1584 +#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 msgid "Retraction Speed" msgstr "Velocidade da retração" -#: src/libslic3r/PrintConfig.cpp:1585 +#: src/libslic3r/PrintConfig.cpp:1606 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "A velocidade para retrações (aplica-se somente ao motor da extrusora)." -#: src/libslic3r/PrintConfig.cpp:1591 src/libslic3r/PrintConfig.cpp:1592 +#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 msgid "Deretraction Speed" msgstr "Velocidade de retorno de retração" -#: src/libslic3r/PrintConfig.cpp:1593 +#: src/libslic3r/PrintConfig.cpp:1614 msgid "" "The speed for loading of a filament into extruder after retraction (it only " "applies to the extruder motor). If left to zero, the retraction speed is " @@ -7755,67 +9045,67 @@ msgstr "" "retração (aplica-se somente ao motor da extrusora). Se deixada como zero, a " "velocidade de retração é usada." -#: src/libslic3r/PrintConfig.cpp:1600 +#: src/libslic3r/PrintConfig.cpp:1621 msgid "Seam position" msgstr "Posição da costura" -#: src/libslic3r/PrintConfig.cpp:1602 +#: src/libslic3r/PrintConfig.cpp:1623 msgid "Position of perimeters starting points." msgstr "Posição inicial dos pontos do perímetro." -#: src/libslic3r/PrintConfig.cpp:1608 +#: src/libslic3r/PrintConfig.cpp:1629 msgid "Random" msgstr "Aleatório" -#: src/libslic3r/PrintConfig.cpp:1609 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Nearest" msgstr "Próximo" -#: src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "Aligned" msgstr "Alinhado(a)" -#: src/libslic3r/PrintConfig.cpp:1618 +#: src/libslic3r/PrintConfig.cpp:1639 msgid "Direction" msgstr "Direção" -#: src/libslic3r/PrintConfig.cpp:1620 +#: src/libslic3r/PrintConfig.cpp:1641 msgid "Preferred direction of the seam" msgstr "Direção preferida da costura" -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/libslic3r/PrintConfig.cpp:1642 msgid "Seam preferred direction" msgstr "Direção de preferência da costura" -#: src/libslic3r/PrintConfig.cpp:1628 +#: src/libslic3r/PrintConfig.cpp:1649 msgid "Jitter" msgstr "Jitter" -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1651 msgid "Seam preferred direction jitter" msgstr "Direção da costura preferencial para Jitter" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Preferred direction of the seam - jitter" msgstr "Direção preferida da costura-jitter" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1662 msgid "USB/serial port for printer connection." msgstr "USB/porta serial para conexão da impressora." -#: src/libslic3r/PrintConfig.cpp:1648 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Serial port speed" msgstr "Velocidade da porta serial" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1670 msgid "Speed (baud) of USB/serial port for printer connection." msgstr "Velocidade (baud) do USB/porta serial para conexão da impressora." -#: src/libslic3r/PrintConfig.cpp:1658 +#: src/libslic3r/PrintConfig.cpp:1679 msgid "Distance from object" msgstr "Distância do objeto" -#: src/libslic3r/PrintConfig.cpp:1659 +#: src/libslic3r/PrintConfig.cpp:1680 msgid "" "Distance between skirt and object(s). Set this to zero to attach the skirt " "to the object(s) and get a brim for better adhesion." @@ -7823,11 +9113,11 @@ msgstr "" "Distância entre a saia e o objeto (s). Defina isso como zero para anexar a " "saia para o objeto (s) e obter uma aba para uma melhor aderência." -#: src/libslic3r/PrintConfig.cpp:1666 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Skirt height" msgstr "Altura da saia" -#: src/libslic3r/PrintConfig.cpp:1667 +#: src/libslic3r/PrintConfig.cpp:1688 msgid "" "Height of skirt expressed in layers. Set this to a tall value to use skirt " "as a shield against drafts." @@ -7835,15 +9125,15 @@ msgstr "" "Altura da saia expressa em camadas. Defina isso como um valor alto para usar " "a saia como um escudo contra rascunhos." -#: src/libslic3r/PrintConfig.cpp:1674 +#: src/libslic3r/PrintConfig.cpp:1695 msgid "Loops (minimum)" msgstr "Voltas (mínimo)" -#: src/libslic3r/PrintConfig.cpp:1675 +#: src/libslic3r/PrintConfig.cpp:1696 msgid "Skirt Loops" msgstr "Voltas de saia" -#: src/libslic3r/PrintConfig.cpp:1676 +#: src/libslic3r/PrintConfig.cpp:1697 msgid "" "Number of loops for the skirt. If the Minimum Extrusion Length option is " "set, the number of loops might be greater than the one configured here. Set " @@ -7854,11 +9144,11 @@ msgstr "" "configurado aqui. Defina isso como zero para desabilitar a saia " "completamente." -#: src/libslic3r/PrintConfig.cpp:1684 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "Slow down if layer print time is below" msgstr "Diminuir a velocidade quando o tempo de impressão for menor que" -#: src/libslic3r/PrintConfig.cpp:1685 +#: src/libslic3r/PrintConfig.cpp:1706 msgid "" "If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value." @@ -7867,11 +9157,11 @@ msgstr "" "segundos, a velocidade de impressão será reduzida para estender a duração a " "esse valor." -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1715 msgid "Small perimeters" msgstr "Perímetro pequeno" -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1717 msgid "" "This separate setting will affect the speed of perimeters having radius <= " "6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " @@ -7882,11 +9172,11 @@ msgstr "" "será calculado sobre a velocidade de perímetros configurados acima. Defina " "como zero para auto." -#: src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1727 msgid "Solid infill threshold area" msgstr "Área de limiar de preenchimento sólido" -#: src/libslic3r/PrintConfig.cpp:1709 +#: src/libslic3r/PrintConfig.cpp:1729 msgid "" "Force solid infill for regions having a smaller area than the specified " "threshold." @@ -7894,24 +9184,24 @@ msgstr "" "Forçar preenchimento sólido para regiões com uma área menor do que o limite " "especificado." -#: src/libslic3r/PrintConfig.cpp:1710 +#: src/libslic3r/PrintConfig.cpp:1730 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:1716 +#: src/libslic3r/PrintConfig.cpp:1736 msgid "Solid infill extruder" msgstr "Extrusora de preenchimento sólido" -#: src/libslic3r/PrintConfig.cpp:1718 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "The extruder to use when printing solid infill." msgstr "" "A extrusora a ser utilizada quando estiver imprimindo preenchimento sólido." -#: src/libslic3r/PrintConfig.cpp:1724 +#: src/libslic3r/PrintConfig.cpp:1744 msgid "Solid infill every" msgstr "Preenchimento sólido a cada" -#: src/libslic3r/PrintConfig.cpp:1726 +#: src/libslic3r/PrintConfig.cpp:1746 msgid "" "This feature allows to force a solid layer every given number of layers. " "Zero to disable. You can set this to any value (for example 9999); Slic3r " @@ -7924,7 +9214,7 @@ msgstr "" "possível de camadas para combinar de acordo com o diâmetro da ponteira e a " "altura da camada." -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1758 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "solid surfaces. If left zero, default extrusion width will be used if set, " @@ -7937,7 +9227,7 @@ msgstr "" "1,125 x diâmetro da ponteira será usado. Se expresso em porcentagem(por " "exemplo, 90%) Ele será calculado sobre a altura da camada." -#: src/libslic3r/PrintConfig.cpp:1748 +#: src/libslic3r/PrintConfig.cpp:1769 msgid "" "Speed for printing solid regions (top/bottom/internal horizontal shells). " "This can be expressed as a percentage (for example: 80%) over the default " @@ -7948,16 +9238,20 @@ msgstr "" "80%) sobre a velocidade de preenchimento padrão acima. Defina como zero para " "auto." -#: src/libslic3r/PrintConfig.cpp:1760 +#: src/libslic3r/PrintConfig.cpp:1781 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "" "Número de camadas sólidas a serem geradas nas interfaces do topo e base." -#: src/libslic3r/PrintConfig.cpp:1766 +#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +msgid "Minimum thickness of a top / bottom shell" +msgstr "Espessura mínima de uma parede superior/inferior" + +#: src/libslic3r/PrintConfig.cpp:1794 msgid "Spiral vase" msgstr "Vaso espiral" -#: src/libslic3r/PrintConfig.cpp:1767 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "" "This feature will raise Z gradually while printing a single-walled object in " "order to remove any visible seam. This option requires a single perimeter, " @@ -7972,11 +9266,11 @@ msgstr "" "camadas sólidas de fundo, bem como saia/aba voltas. Ele não funcionará ao " "imprimir mais de um objeto." -#: src/libslic3r/PrintConfig.cpp:1775 +#: src/libslic3r/PrintConfig.cpp:1803 msgid "Temperature variation" msgstr "Variação de temperatura" -#: src/libslic3r/PrintConfig.cpp:1776 +#: src/libslic3r/PrintConfig.cpp:1804 msgid "" "Temperature difference to be applied when an extruder is not active. Enables " "a full-height \"sacrificial\" skirt on which the nozzles are periodically " @@ -7986,7 +9280,7 @@ msgstr "" "Permite uma saia \"sacrificial\" em que as ponteiras são limpadas " "periodicamente." -#: src/libslic3r/PrintConfig.cpp:1786 +#: src/libslic3r/PrintConfig.cpp:1814 msgid "" "This start procedure is inserted at the beginning, after bed has reached the " "target temperature and extruder just started heating, and before extruder " @@ -8006,7 +9300,7 @@ msgstr "" "para que você possa colocar um comando \"M109 S " "[temperatura_primeira_camada]\" onde quiser." -#: src/libslic3r/PrintConfig.cpp:1801 +#: src/libslic3r/PrintConfig.cpp:1829 msgid "" "This start procedure is inserted at the beginning, after any printer start " "gcode (and after any toolchange to this filament in case of multi-material " @@ -8030,19 +9324,19 @@ msgstr "" "\"M109 S [temperatura_primeira_camada]\" onde quiser. Se você tiver várias " "extrusoras, o Gcode é processado em ordem de extrusora." -#: src/libslic3r/PrintConfig.cpp:1817 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "Single Extruder Multi Material" msgstr "Única extrusora multi material" -#: src/libslic3r/PrintConfig.cpp:1818 +#: src/libslic3r/PrintConfig.cpp:1846 msgid "The printer multiplexes filaments into a single hot end." msgstr "A impressora multiplexes filamentos em uma única extremidade quente." -#: src/libslic3r/PrintConfig.cpp:1823 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Prime all printing extruders" msgstr "Extrusar todas as extrusoras de impressão" -#: src/libslic3r/PrintConfig.cpp:1824 +#: src/libslic3r/PrintConfig.cpp:1852 msgid "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." @@ -8050,19 +9344,35 @@ msgstr "" "Se ativada, todas as extrusoras de impressão extrusarão na aba dianteira da " "mesa de impressão no início da impressão." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1857 +msgid "No sparse layers (EXPERIMENTAL)" +msgstr "Sem camadas esparsas (EXPERIMENTAL)" + +#: src/libslic3r/PrintConfig.cpp:1858 +msgid "" +"If enabled, the wipe tower will not be printed on layers with no " +"toolchanges. On layers with a toolchange, extruder will travel downward to " +"print the wipe tower. User is responsible for ensuring there is no collision " +"with the print." +msgstr "" +"Se ativada, a torre de limpeza não será impressa em camadas sem alterações " +"de ferramentas. Em camadas com uma troca de ferramentas, o extrusor viajará " +"para baixo para imprimir a torre de limpeza. O usuário é responsável por " +"garantir que não haja colisão com a impressão." + +#: src/libslic3r/PrintConfig.cpp:1865 msgid "Generate support material" msgstr "Gerar material de suporte" -#: src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1867 msgid "Enable support material generation." msgstr "Habilitar geração de material de suporte." -#: src/libslic3r/PrintConfig.cpp:1835 +#: src/libslic3r/PrintConfig.cpp:1871 msgid "Auto generated supports" msgstr "Gerar suportes automaticamente" -#: src/libslic3r/PrintConfig.cpp:1837 +#: src/libslic3r/PrintConfig.cpp:1873 msgid "" "If checked, supports will be generated automatically based on the overhang " "threshold value. If unchecked, supports will be generated inside the " @@ -8072,11 +9382,11 @@ msgstr "" "limite de angulação. Se desmarcada, as sustentações serão geradas dentro dos " "volumes do \"reforçador de suporte\" somente." -#: src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1879 msgid "XY separation between an object and its support" msgstr "Separação entre o objeto e seu suporte em XY" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1881 msgid "" "XY separation between an object and its support. If expressed as percentage " "(for example 50%), it will be calculated over external perimeter width." @@ -8085,11 +9395,11 @@ msgstr "" "(por exemplo, 50%), será calculado com base na espessura do perímetro " "externo." -#: src/libslic3r/PrintConfig.cpp:1855 +#: src/libslic3r/PrintConfig.cpp:1891 msgid "Pattern angle" msgstr "Ângulo do padrão" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1893 msgid "" "Use this setting to rotate the support material pattern on the horizontal " "plane." @@ -8097,7 +9407,7 @@ msgstr "" "Use essa config. para girar o padrão de material de suporte no plano " "horizontal." -#: src/libslic3r/PrintConfig.cpp:1867 src/libslic3r/PrintConfig.cpp:2563 +#: src/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2686 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -8105,11 +9415,11 @@ msgstr "" "Apenas criar suporte se ele está em uma mesa. Não crie suporte em uma " "impressão." -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Contact Z distance" msgstr "Distância de contato Z" -#: src/libslic3r/PrintConfig.cpp:1875 +#: src/libslic3r/PrintConfig.cpp:1911 msgid "" "The vertical distance between object and support material interface. Setting " "this to 0 will also prevent Slic3r from using bridge flow and speed for the " @@ -8119,19 +9429,19 @@ msgstr "" "Definir isso como 0 também impedirá Slic3r de usar o fluxo de ponte e a " "velocidade para a primeira camada de objeto." -#: src/libslic3r/PrintConfig.cpp:1882 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "0 (soluble)" msgstr "0 (solúvel)" -#: src/libslic3r/PrintConfig.cpp:1883 +#: src/libslic3r/PrintConfig.cpp:1919 msgid "0.2 (detachable)" msgstr "0.2 (destacável)" -#: src/libslic3r/PrintConfig.cpp:1888 +#: src/libslic3r/PrintConfig.cpp:1924 msgid "Enforce support for the first" msgstr "Reforçar suportes para a(s) primeira(s)" -#: src/libslic3r/PrintConfig.cpp:1890 +#: src/libslic3r/PrintConfig.cpp:1926 msgid "" "Generate support material for the specified number of layers counting from " "bottom, regardless of whether normal support material is enabled or not and " @@ -8144,15 +9454,15 @@ msgstr "" "para obter mais aderência de objetos com uma pegada muito fina ou fraca na " "placa de construção." -#: src/libslic3r/PrintConfig.cpp:1895 +#: src/libslic3r/PrintConfig.cpp:1931 msgid "Enforce support for the first n layers" msgstr "Reforçar suportes na(s) primera(s) n camada(s)" -#: src/libslic3r/PrintConfig.cpp:1901 +#: src/libslic3r/PrintConfig.cpp:1937 msgid "Support material/raft/skirt extruder" msgstr "Extrusora de material de suporte/estrado/saia" -#: src/libslic3r/PrintConfig.cpp:1903 +#: src/libslic3r/PrintConfig.cpp:1939 msgid "" "The extruder to use when printing support material, raft and skirt (1+, 0 to " "use the current extruder to minimize tool changes)." @@ -8160,7 +9470,7 @@ msgstr "" "A extrusora a ser usada ao imprimir material de suporte, estrado e saia (1 " "+, 0 para usar a extrusora atual para minimizar as mudanças na ferramenta)." -#: src/libslic3r/PrintConfig.cpp:1912 +#: src/libslic3r/PrintConfig.cpp:1948 msgid "" "Set this to a non-zero value to set a manual extrusion width for support " "material. If left zero, default extrusion width will be used if set, " @@ -8173,22 +9483,22 @@ msgstr "" "expresso em porcentagem(por exemplo, 90%) Ele será calculado sobre a altura " "da camada." -#: src/libslic3r/PrintConfig.cpp:1920 +#: src/libslic3r/PrintConfig.cpp:1957 msgid "Interface loops" msgstr "Voltas da interface" -#: src/libslic3r/PrintConfig.cpp:1922 +#: src/libslic3r/PrintConfig.cpp:1959 msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" "Cubra a camada de contato superior dos suportes com laços. Desativado por " "padrão." -#: src/libslic3r/PrintConfig.cpp:1927 +#: src/libslic3r/PrintConfig.cpp:1964 msgid "Support material/raft interface extruder" msgstr "Extrusora de material de suporte/estrado" -#: src/libslic3r/PrintConfig.cpp:1929 +#: src/libslic3r/PrintConfig.cpp:1966 msgid "" "The extruder to use when printing support material interface (1+, 0 to use " "the current extruder to minimize tool changes). This affects raft too." @@ -8197,11 +9507,11 @@ msgstr "" "usar o extrusor atual para minimizar mudanças da ferramenta). Isso afeta o " "estrado também." -#: src/libslic3r/PrintConfig.cpp:1936 +#: src/libslic3r/PrintConfig.cpp:1973 msgid "Interface layers" msgstr "Camadas de interface" -#: src/libslic3r/PrintConfig.cpp:1938 +#: src/libslic3r/PrintConfig.cpp:1975 msgid "" "Number of interface layers to insert between the object(s) and support " "material." @@ -8209,17 +9519,17 @@ msgstr "" "Número de camadas de interface para inserir entre o objeto(s) e material de " "suporte." -#: src/libslic3r/PrintConfig.cpp:1945 +#: src/libslic3r/PrintConfig.cpp:1982 msgid "Interface pattern spacing" msgstr "Espaçamento do padrão da interface" -#: src/libslic3r/PrintConfig.cpp:1947 +#: src/libslic3r/PrintConfig.cpp:1984 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "" "Espaçamento entre as linhas de interface. Defina zero para obter uma " "interface sólida." -#: src/libslic3r/PrintConfig.cpp:1956 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "" "Speed for printing support material interface layers. If expressed as " "percentage (for example 50%) it will be calculated over support material " @@ -8229,35 +9539,35 @@ msgstr "" "expresso em porcentagem(por exemplo, 50%) Ele será calculado sobre a " "velocidade do material de suporte." -#: src/libslic3r/PrintConfig.cpp:1965 +#: src/libslic3r/PrintConfig.cpp:2002 msgid "Pattern" msgstr "Padrão" -#: src/libslic3r/PrintConfig.cpp:1967 +#: src/libslic3r/PrintConfig.cpp:2004 msgid "Pattern used to generate support material." msgstr "Padrão usado para gerar material de suporte." -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2010 msgid "Rectilinear grid" msgstr "Grade rectilínea" -#: src/libslic3r/PrintConfig.cpp:1979 +#: src/libslic3r/PrintConfig.cpp:2016 msgid "Pattern spacing" msgstr "Padrão de espaçamento" -#: src/libslic3r/PrintConfig.cpp:1981 +#: src/libslic3r/PrintConfig.cpp:2018 msgid "Spacing between support material lines." msgstr "Espaçamento entre linhas de material de suporte." -#: src/libslic3r/PrintConfig.cpp:1990 +#: src/libslic3r/PrintConfig.cpp:2027 msgid "Speed for printing support material." msgstr "Velocidade para imprimir material de suporte." -#: src/libslic3r/PrintConfig.cpp:1997 +#: src/libslic3r/PrintConfig.cpp:2034 msgid "Synchronize with object layers" msgstr "Sincronizar com camadas de objeto" -#: src/libslic3r/PrintConfig.cpp:1999 +#: src/libslic3r/PrintConfig.cpp:2036 msgid "" "Synchronize support layers with the object print layers. This is useful with " "multi-material printers, where the extruder switch is expensive." @@ -8266,11 +9576,11 @@ msgstr "" "útil com as impressoras do multi-material, onde o interruptor da extrusora é " "caro." -#: src/libslic3r/PrintConfig.cpp:2005 +#: src/libslic3r/PrintConfig.cpp:2042 msgid "Overhang threshold" msgstr "Limite de angulação" -#: src/libslic3r/PrintConfig.cpp:2007 +#: src/libslic3r/PrintConfig.cpp:2044 msgid "" "Support material will not be generated for overhangs whose slope angle (90° " "= vertical) is above the given threshold. In other words, this value " @@ -8284,11 +9594,11 @@ msgstr "" "partir do plano horizontal) que você pode imprimir sem material de suporte. " "Defina como zero para detecção automática (recomendado)." -#: src/libslic3r/PrintConfig.cpp:2019 +#: src/libslic3r/PrintConfig.cpp:2056 msgid "With sheath around the support" msgstr "Com bainha em torno do apoio" -#: src/libslic3r/PrintConfig.cpp:2021 +#: src/libslic3r/PrintConfig.cpp:2058 msgid "" "Add a sheath (a single perimeter line) around the base support. This makes " "the support more reliable, but also more difficult to remove." @@ -8296,7 +9606,7 @@ msgstr "" "Adicione uma bainha (uma única linha de perímetro) em torno do suporte base. " "Isso torna o suporte mais confiável, mas também mais difícil de remover." -#: src/libslic3r/PrintConfig.cpp:2028 +#: src/libslic3r/PrintConfig.cpp:2065 msgid "" "Extruder temperature for layers after the first one. Set this to zero to " "disable temperature control commands in the output." @@ -8304,11 +9614,11 @@ msgstr "" "Temperatura da extrusora para camadas após a primeira. Defina como zero para " "desabilitar os comandos de controle de temperatura na saída." -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Detect thin walls" msgstr "Detectar paredes finas" -#: src/libslic3r/PrintConfig.cpp:2038 +#: src/libslic3r/PrintConfig.cpp:2075 msgid "" "Detect single-width walls (parts where two extrusions don't fit and we need " "to collapse them into a single trace)." @@ -8316,11 +9626,11 @@ msgstr "" "Detecte paredes de largura única (partes onde duas extrusões não cabem e " "precisamos recolhê-las em um único traço)." -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "Threads" msgstr "Roscas" -#: src/libslic3r/PrintConfig.cpp:2045 +#: src/libslic3r/PrintConfig.cpp:2082 msgid "" "Threads are used to parallelize long-running tasks. Optimal threads number " "is slightly above the number of available cores/processors." @@ -8329,7 +9639,7 @@ msgstr "" "de tópicos ideais está ligeiramente acima do número de núcleos/processadores " "disponíveis." -#: src/libslic3r/PrintConfig.cpp:2057 +#: src/libslic3r/PrintConfig.cpp:2094 msgid "" "This custom code is inserted before every toolchange. Placeholder variables " "for all PrusaSlicer settings as well as {previous_extruder} and " @@ -8346,7 +9656,7 @@ msgstr "" "é possível script comportamento personalizado antes e depois da mudança de " "ferramenta." -#: src/libslic3r/PrintConfig.cpp:2070 +#: src/libslic3r/PrintConfig.cpp:2107 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "top surfaces. You may want to use thinner extrudates to fill all narrow " @@ -8362,7 +9672,7 @@ msgstr "" "Se expresso em porcentagem(por exemplo, 90%) Ele será calculado sobre a " "altura da camada." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2119 msgid "" "Speed for printing top solid layers (it only applies to the uppermost " "external layers and not to their internal solid layers). You may want to " @@ -8376,25 +9686,40 @@ msgstr "" "Isto pode ser expresso em porcentagem(por exemplo: 80%) sobre a velocidade " "de preenchimento sólido acima. Defina como zero para auto." -#: src/libslic3r/PrintConfig.cpp:2096 +#: src/libslic3r/PrintConfig.cpp:2134 msgid "Number of solid layers to generate on top surfaces." msgstr "Número de camadas sólidas para gerar em superfícies superiores." -#: src/libslic3r/PrintConfig.cpp:2097 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Top solid layers" msgstr "Camadas sólidas de topo" -#: src/libslic3r/PrintConfig.cpp:2103 +#: src/libslic3r/PrintConfig.cpp:2143 +msgid "" +"The number of top solid layers is increased above top_solid_layers if " +"necessary to satisfy minimum thickness of top shell. This is useful to " +"prevent pillowing effect when printing with variable layer height." +msgstr "" +"O número de camadas sólidas superiores é aumentado acima de top_solid_layers " +"se necessário para satisfazer a espessura mínima da camada superior. Isso é " +"útil para evitar o efeito de travesseiro ao imprimir com altura de camada " +"variável." + +#: src/libslic3r/PrintConfig.cpp:2146 +msgid "Minimum top shell thickness" +msgstr "Espessura mínima vertical da parede" + +#: src/libslic3r/PrintConfig.cpp:2153 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "" "Velocidade para movimentos de viagem (saltos entre pontos de extrusão " "distantes)." -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:2161 msgid "Use firmware retraction" msgstr "Usar retração do firmware" -#: src/libslic3r/PrintConfig.cpp:2112 +#: src/libslic3r/PrintConfig.cpp:2162 msgid "" "This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin." @@ -8402,11 +9727,11 @@ msgstr "" "Esta config. experimental usa comandos G10 e G11 para que o firmware " "manipule a retração. Isso só é suportado no recente Marlin." -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/libslic3r/PrintConfig.cpp:2168 msgid "Use relative E distances" msgstr "Utilizar distâncias relativas do E" -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "" "If your firmware requires relative E values, check this, otherwise leave it " "unchecked. Most firmwares use absolute values." @@ -8414,11 +9739,11 @@ msgstr "" "Se o firmware necessitar de valores relativos E, verifique isto, caso " "contrário, deixe-o desmarcado. A maioria dos firmwares usa valores absolutos." -#: src/libslic3r/PrintConfig.cpp:2125 +#: src/libslic3r/PrintConfig.cpp:2175 msgid "Use volumetric E" msgstr "Usar E volumétrico" -#: src/libslic3r/PrintConfig.cpp:2126 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "" "This experimental setting uses outputs the E values in cubic millimeters " "instead of linear millimeters. If your firmware doesn't already know " @@ -8434,11 +9759,11 @@ msgstr "" "do filamento associado ao filamento selecionado em Slic3r. Isso só é " "suportado no recente Marlin." -#: src/libslic3r/PrintConfig.cpp:2136 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "Enable variable layer height feature" msgstr "Habilitar altura de camada variável" -#: src/libslic3r/PrintConfig.cpp:2137 +#: src/libslic3r/PrintConfig.cpp:2187 msgid "" "Some printers or printer setups may have difficulties printing with a " "variable layer height. Enabled by default." @@ -8446,11 +9771,11 @@ msgstr "" "Algumas impressoras ou config. de impressora podem ter dificuldades para " "imprimir com uma altura de camada variável. Ativado por padrão." -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2193 msgid "Wipe while retracting" msgstr "Limpe durante a retração" -#: src/libslic3r/PrintConfig.cpp:2144 +#: src/libslic3r/PrintConfig.cpp:2194 msgid "" "This flag will move the nozzle while retracting to minimize the possible " "blob on leaky extruders." @@ -8458,7 +9783,7 @@ msgstr "" "Esta bandeira moverá a ponteira ao retrair para minimizar a bolha possível " "em extrusoras vazando." -#: src/libslic3r/PrintConfig.cpp:2151 +#: src/libslic3r/PrintConfig.cpp:2201 msgid "" "Multi material printers may need to prime or purge extruders on tool " "changes. Extrude the excess material into the wipe tower." @@ -8467,11 +9792,11 @@ msgstr "" "alterações de ferramenta. EXTRUDE o excesso de material para a torre de " "limpeza." -#: src/libslic3r/PrintConfig.cpp:2157 +#: src/libslic3r/PrintConfig.cpp:2207 msgid "Purging volumes - load/unload volumes" msgstr "Volumes de purga-volumes de carga/descarregamento" -#: src/libslic3r/PrintConfig.cpp:2158 +#: src/libslic3r/PrintConfig.cpp:2208 msgid "" "This vector saves required volumes to change from/to each tool used on the " "wipe tower. These values are used to simplify creation of the full purging " @@ -8481,11 +9806,11 @@ msgstr "" "usada na torre de limpeza. Esses valores são usados para simplificar a " "criação dos volumes de purga completos abaixo." -#: src/libslic3r/PrintConfig.cpp:2164 +#: src/libslic3r/PrintConfig.cpp:2214 msgid "Purging volumes - matrix" msgstr "Volumes de purga-matriz" -#: src/libslic3r/PrintConfig.cpp:2165 +#: src/libslic3r/PrintConfig.cpp:2215 msgid "" "This matrix describes volumes (in cubic milimetres) required to purge the " "new filament on the wipe tower for any given pair of tools." @@ -8493,39 +9818,39 @@ msgstr "" "Esta matriz descreve volumes (em milimetros cúbicos) necessários para limpar " "o novo filamento na torre de limpeza para qualquer dado par de ferramentas." -#: src/libslic3r/PrintConfig.cpp:2174 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Position X" msgstr "Posição X" -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "X coordinate of the left front corner of a wipe tower" msgstr "Coordenada X do canto frontal esquerdo de uma torre de limpeza" -#: src/libslic3r/PrintConfig.cpp:2181 +#: src/libslic3r/PrintConfig.cpp:2231 msgid "Position Y" msgstr "Posição Y" -#: src/libslic3r/PrintConfig.cpp:2182 +#: src/libslic3r/PrintConfig.cpp:2232 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Coordenada Y do canto dianteiro esquerdo de uma torre de limpeza" -#: src/libslic3r/PrintConfig.cpp:2189 +#: src/libslic3r/PrintConfig.cpp:2239 msgid "Width of a wipe tower" msgstr "Largura de uma torre da limpeza" -#: src/libslic3r/PrintConfig.cpp:2195 +#: src/libslic3r/PrintConfig.cpp:2245 msgid "Wipe tower rotation angle" msgstr "Ângulo de rotação da torre" -#: src/libslic3r/PrintConfig.cpp:2196 +#: src/libslic3r/PrintConfig.cpp:2246 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Ângulo de rotação da torre de limpeza em relação ao eixo X." -#: src/libslic3r/PrintConfig.cpp:2203 +#: src/libslic3r/PrintConfig.cpp:2253 msgid "Wipe into this object's infill" msgstr "Limpe no preenchimento deste objeto" -#: src/libslic3r/PrintConfig.cpp:2204 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "" "Purging after toolchange will done inside this object's infills. This lowers " "the amount of waste but may result in longer print time due to additional " @@ -8535,11 +9860,11 @@ msgstr "" "objeto. Isso diminui a quantidade de resíduos, mas pode resultar em tempo de " "impressão mais longo devido a movimentos de viagem adicionais." -#: src/libslic3r/PrintConfig.cpp:2211 +#: src/libslic3r/PrintConfig.cpp:2261 msgid "Wipe into this object" msgstr "Limpar neste objeto" -#: src/libslic3r/PrintConfig.cpp:2212 +#: src/libslic3r/PrintConfig.cpp:2262 msgid "" "Object will be used to purge the nozzle after a toolchange to save material " "that would otherwise end up in the wipe tower and decrease print time. " @@ -8549,20 +9874,20 @@ msgstr "" "salvar o material que de outra forma acabaria na torre de limpeza e diminuir " "o tempo de impressão. As cores dos objetos serão misturadas como resultado." -#: src/libslic3r/PrintConfig.cpp:2218 +#: src/libslic3r/PrintConfig.cpp:2268 msgid "Maximal bridging distance" msgstr "Distância de ponte máxima" -#: src/libslic3r/PrintConfig.cpp:2219 +#: src/libslic3r/PrintConfig.cpp:2269 msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Distância máxima entre as sustentações em seções preenchimento esparsas." -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2275 msgid "XY Size Compensation" msgstr "Compensação de tamanho em XY" -#: src/libslic3r/PrintConfig.cpp:2227 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "" "The object will be grown/shrunk in the XY plane by the configured value " "(negative = inwards, positive = outwards). This might be useful for fine-" @@ -8572,11 +9897,11 @@ msgstr "" "(negativo = para dentro, positivo = para fora). Isso pode ser útil para " "ajustar os tamanhos dos furos." -#: src/libslic3r/PrintConfig.cpp:2235 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Z offset" msgstr "Compensamento do Z" -#: src/libslic3r/PrintConfig.cpp:2236 +#: src/libslic3r/PrintConfig.cpp:2286 msgid "" "This value will be added (or subtracted) from all the Z coordinates in the " "output G-code. It is used to compensate for bad Z endstop position: for " @@ -8589,63 +9914,63 @@ msgstr "" "mm longe da mesa de impressão, defina este para-0,3 (ou corrigir o seu final " "de curso)." -#: src/libslic3r/PrintConfig.cpp:2294 +#: src/libslic3r/PrintConfig.cpp:2353 msgid "Display width" msgstr "Largura do display" -#: src/libslic3r/PrintConfig.cpp:2295 +#: src/libslic3r/PrintConfig.cpp:2354 msgid "Width of the display" msgstr "Largura do display" -#: src/libslic3r/PrintConfig.cpp:2300 +#: src/libslic3r/PrintConfig.cpp:2359 msgid "Display height" msgstr "Altura do display" -#: src/libslic3r/PrintConfig.cpp:2301 +#: src/libslic3r/PrintConfig.cpp:2360 msgid "Height of the display" msgstr "Altura do display" -#: src/libslic3r/PrintConfig.cpp:2306 +#: src/libslic3r/PrintConfig.cpp:2365 msgid "Number of pixels in" msgstr "Número de pixels em" -#: src/libslic3r/PrintConfig.cpp:2308 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Number of pixels in X" msgstr "Número de pixels em X" -#: src/libslic3r/PrintConfig.cpp:2314 +#: src/libslic3r/PrintConfig.cpp:2373 msgid "Number of pixels in Y" msgstr "Número de pixels em Y" -#: src/libslic3r/PrintConfig.cpp:2319 +#: src/libslic3r/PrintConfig.cpp:2378 msgid "Display horizontal mirroring" msgstr "Exibir espelhamento horizontal" -#: src/libslic3r/PrintConfig.cpp:2320 +#: src/libslic3r/PrintConfig.cpp:2379 msgid "Mirror horizontally" msgstr "Espelhar horizontalmente" -#: src/libslic3r/PrintConfig.cpp:2321 +#: src/libslic3r/PrintConfig.cpp:2380 msgid "Enable horizontal mirroring of output images" msgstr "Habilitar espelhamento horizontal de imagens de saída" -#: src/libslic3r/PrintConfig.cpp:2326 +#: src/libslic3r/PrintConfig.cpp:2385 msgid "Display vertical mirroring" msgstr "Exibir espelhamento vertical" -#: src/libslic3r/PrintConfig.cpp:2327 +#: src/libslic3r/PrintConfig.cpp:2386 msgid "Mirror vertically" msgstr "Espelharvertical" -#: src/libslic3r/PrintConfig.cpp:2328 +#: src/libslic3r/PrintConfig.cpp:2387 msgid "Enable vertical mirroring of output images" msgstr "Habilitar espelhamento vertical de imagens de saída" -#: src/libslic3r/PrintConfig.cpp:2333 +#: src/libslic3r/PrintConfig.cpp:2392 msgid "Display orientation" msgstr "Orientação do display" -#: src/libslic3r/PrintConfig.cpp:2334 +#: src/libslic3r/PrintConfig.cpp:2393 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -8655,43 +9980,43 @@ msgstr "" "retrato inverterá o significado dos parâmetros de largura e altura da tela e " "as imagens de saída serão giradas por 90 graus." -#: src/libslic3r/PrintConfig.cpp:2340 +#: src/libslic3r/PrintConfig.cpp:2399 msgid "Landscape" msgstr "Paisagem" -#: src/libslic3r/PrintConfig.cpp:2341 +#: src/libslic3r/PrintConfig.cpp:2400 msgid "Portrait" msgstr "Retrato" -#: src/libslic3r/PrintConfig.cpp:2346 +#: src/libslic3r/PrintConfig.cpp:2405 msgid "Fast" msgstr "Rápido" -#: src/libslic3r/PrintConfig.cpp:2347 +#: src/libslic3r/PrintConfig.cpp:2406 msgid "Fast tilt" msgstr "Inclinação rápida" -#: src/libslic3r/PrintConfig.cpp:2348 +#: src/libslic3r/PrintConfig.cpp:2407 msgid "Time of the fast tilt" msgstr "Tempo da inclinação rápida" -#: src/libslic3r/PrintConfig.cpp:2355 +#: src/libslic3r/PrintConfig.cpp:2414 msgid "Slow" msgstr "Lento" -#: src/libslic3r/PrintConfig.cpp:2356 +#: src/libslic3r/PrintConfig.cpp:2415 msgid "Slow tilt" msgstr "Inclinação lenta" -#: src/libslic3r/PrintConfig.cpp:2357 +#: src/libslic3r/PrintConfig.cpp:2416 msgid "Time of the slow tilt" msgstr "Tempo da inclinação lenta" -#: src/libslic3r/PrintConfig.cpp:2364 +#: src/libslic3r/PrintConfig.cpp:2423 msgid "Area fill" msgstr "Preenchimento de área" -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2424 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -8702,16 +10027,16 @@ msgstr "" "em seguida, uma inclinação lenta será usada, caso contrário-uma inclinação " "rápida" -#: src/libslic3r/PrintConfig.cpp:2372 src/libslic3r/PrintConfig.cpp:2373 -#: src/libslic3r/PrintConfig.cpp:2374 +#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 +#: src/libslic3r/PrintConfig.cpp:2433 msgid "Printer scaling correction" msgstr "Correção de dimensionamento da impressora" -#: src/libslic3r/PrintConfig.cpp:2380 src/libslic3r/PrintConfig.cpp:2381 +#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 msgid "Printer absolute correction" msgstr "Correção absoluta da impressora" -#: src/libslic3r/PrintConfig.cpp:2382 +#: src/libslic3r/PrintConfig.cpp:2441 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -8719,11 +10044,22 @@ msgstr "" "Irá inflar ou esvaziar os polígonos 2D cortados de acordo com o sinal da " "correção." -#: src/libslic3r/PrintConfig.cpp:2388 src/libslic3r/PrintConfig.cpp:2389 +#: src/libslic3r/PrintConfig.cpp:2447 +msgid "Elephant foot minimum width" +msgstr "Largura mínima do pé de elefante" + +#: src/libslic3r/PrintConfig.cpp:2449 +msgid "" +"Minimum width of features to maintain when doing elephant foot compensation." +msgstr "" +"Largura mínima de características para manter ao fazer compensação do pé de " +"elefante." + +#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 msgid "Printer gamma correction" msgstr "Correção de gama de impressora" -#: src/libslic3r/PrintConfig.cpp:2390 +#: src/libslic3r/PrintConfig.cpp:2458 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -8733,15 +10069,43 @@ msgstr "" "valor gama de zero significa limiarização com o limiar no meio. Este " "comportamento elimina suavização sem perder buracos em polígonos." -#: src/libslic3r/PrintConfig.cpp:2401 src/libslic3r/PrintConfig.cpp:2402 +#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +msgid "SLA material type" +msgstr "Tipo de Material de SLA" + +#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 msgid "Initial layer height" msgstr "Altura da camada inicial" -#: src/libslic3r/PrintConfig.cpp:2408 +#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 +msgid "Bottle volume" +msgstr "Volume do pote" + +#: src/libslic3r/PrintConfig.cpp:2491 +msgid "ml" +msgstr "ml" + +#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +msgid "Bottle weight" +msgstr "Peso do pote" + +#: src/libslic3r/PrintConfig.cpp:2498 +msgid "kg" +msgstr "kg" + +#: src/libslic3r/PrintConfig.cpp:2505 +msgid "g/ml" +msgstr "g/ml" + +#: src/libslic3r/PrintConfig.cpp:2512 +msgid "money/bottle" +msgstr "dinheiro/pote" + +#: src/libslic3r/PrintConfig.cpp:2517 msgid "Faded layers" msgstr "Camadas desbotadas" -#: src/libslic3r/PrintConfig.cpp:2409 +#: src/libslic3r/PrintConfig.cpp:2518 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -8749,92 +10113,104 @@ msgstr "" "Número de camadas necessárias para o tempo de exposição desvanecer-se do " "tempo de exposição inicial ao tempo de exposição" -#: src/libslic3r/PrintConfig.cpp:2416 src/libslic3r/PrintConfig.cpp:2417 +#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 msgid "Minimum exposure time" msgstr "Tempo mínimo de exposição" -#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2425 +#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 msgid "Maximum exposure time" msgstr "Tempo máximo de exposição" -#: src/libslic3r/PrintConfig.cpp:2432 src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 msgid "Exposure time" msgstr "Tempo de exposição" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 msgid "Minimum initial exposure time" msgstr "Tempo inicial mínimo de exposição" -#: src/libslic3r/PrintConfig.cpp:2447 src/libslic3r/PrintConfig.cpp:2448 +#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 msgid "Maximum initial exposure time" msgstr "Tempo inicial máximo de exposição" -#: src/libslic3r/PrintConfig.cpp:2455 src/libslic3r/PrintConfig.cpp:2456 +#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 msgid "Initial exposure time" msgstr "Tempo inicial mínimo de exposição" -#: src/libslic3r/PrintConfig.cpp:2462 src/libslic3r/PrintConfig.cpp:2463 +#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 msgid "Correction for expansion" msgstr "Correção para expansão" -#: src/libslic3r/PrintConfig.cpp:2469 +#: src/libslic3r/PrintConfig.cpp:2578 msgid "SLA print material notes" msgstr "Notas de material de impressão de SLA" -#: src/libslic3r/PrintConfig.cpp:2470 +#: src/libslic3r/PrintConfig.cpp:2579 msgid "You can put your notes regarding the SLA print material here." msgstr "" "Você pode colocar suas anotações sobre o material de impressão de SLA aqui." -#: src/libslic3r/PrintConfig.cpp:2478 src/libslic3r/PrintConfig.cpp:2489 +#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 msgid "Default SLA material profile" msgstr "Perfil de material de SLA padrão" -#: src/libslic3r/PrintConfig.cpp:2500 +#: src/libslic3r/PrintConfig.cpp:2613 msgid "Generate supports" msgstr "Gerar suportes" -#: src/libslic3r/PrintConfig.cpp:2502 +#: src/libslic3r/PrintConfig.cpp:2615 msgid "Generate supports for the models" msgstr "Gere suportes para os modelos" -#: src/libslic3r/PrintConfig.cpp:2507 +#: src/libslic3r/PrintConfig.cpp:2620 msgid "Support head front diameter" msgstr "Diâmetro dianteiro principal da sustentação" -#: src/libslic3r/PrintConfig.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:2622 msgid "Diameter of the pointing side of the head" msgstr "Diâmetro do lado apontando da cabeça" -#: src/libslic3r/PrintConfig.cpp:2516 +#: src/libslic3r/PrintConfig.cpp:2629 msgid "Support head penetration" msgstr "Suporte de penetração da cabeça" -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2631 msgid "How much the pinhead has to penetrate the model surface" msgstr "Quanto a cabeça de alfinete tem de penetrar na superfície do modelo" -#: src/libslic3r/PrintConfig.cpp:2525 +#: src/libslic3r/PrintConfig.cpp:2638 msgid "Support head width" msgstr "Largura da cabeça de suporte" -#: src/libslic3r/PrintConfig.cpp:2527 +#: src/libslic3r/PrintConfig.cpp:2640 msgid "Width from the back sphere center to the front sphere center" msgstr "Largura do centro da esfera traseira ao centro da esfera dianteira" -#: src/libslic3r/PrintConfig.cpp:2535 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "Support pillar diameter" msgstr "Diâmetro do pilar do suporte" -#: src/libslic3r/PrintConfig.cpp:2537 +#: src/libslic3r/PrintConfig.cpp:2650 msgid "Diameter in mm of the support pillars" msgstr "Diâmetro em mm dos pilares de suporte" -#: src/libslic3r/PrintConfig.cpp:2545 +#: src/libslic3r/PrintConfig.cpp:2658 +msgid "Max bridges on a pillar" +msgstr "Distância máxima de conexão entre pilares" + +#: src/libslic3r/PrintConfig.cpp:2660 +msgid "" +"Maximum number of bridges that can be placed on a pillar. Bridges hold " +"support point pinheads and connect to pillars as small branches." +msgstr "" +"Número máximo de pontes que podem ser colocadas em um pilar. As pontes " +"seguram pinças de ponto de apoio e se conectam a pilares como pequenos ramos." + +#: src/libslic3r/PrintConfig.cpp:2668 msgid "Support pillar connection mode" msgstr "Modalidade da conexão da coluna da sustentação" -#: src/libslic3r/PrintConfig.cpp:2546 +#: src/libslic3r/PrintConfig.cpp:2669 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -8844,23 +10220,23 @@ msgstr "" "(zig-zag dobro) ou dinâmico que comutará automaticamente entre os primeiros " "dois dependendo da distância dos dois pilares." -#: src/libslic3r/PrintConfig.cpp:2554 +#: src/libslic3r/PrintConfig.cpp:2677 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/libslic3r/PrintConfig.cpp:2555 +#: src/libslic3r/PrintConfig.cpp:2678 msgid "Cross" msgstr "Cruz" -#: src/libslic3r/PrintConfig.cpp:2556 +#: src/libslic3r/PrintConfig.cpp:2679 msgid "Dynamic" msgstr "Dinâmico" -#: src/libslic3r/PrintConfig.cpp:2568 +#: src/libslic3r/PrintConfig.cpp:2691 msgid "Pillar widening factor" msgstr "Fator de alargamento da coluna" -#: src/libslic3r/PrintConfig.cpp:2570 +#: src/libslic3r/PrintConfig.cpp:2693 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -8868,27 +10244,27 @@ msgstr "" "Mesclar pontes ou pilares em outros pilares pode aumentar o raio. Zero " "significa que não há aumento, um significa aumento total." -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2702 msgid "Support base diameter" msgstr "Diâmetro base do suporte" -#: src/libslic3r/PrintConfig.cpp:2581 +#: src/libslic3r/PrintConfig.cpp:2704 msgid "Diameter in mm of the pillar base" msgstr "Diâmetro em mm da base do pilar" -#: src/libslic3r/PrintConfig.cpp:2589 +#: src/libslic3r/PrintConfig.cpp:2712 msgid "Support base height" msgstr "Altura base do suporte" -#: src/libslic3r/PrintConfig.cpp:2591 +#: src/libslic3r/PrintConfig.cpp:2714 msgid "The height of the pillar base cone" msgstr "A altura do cone da base da coluna" -#: src/libslic3r/PrintConfig.cpp:2598 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "Support base safety distance" msgstr "Distância da segurança da base da sustentação" -#: src/libslic3r/PrintConfig.cpp:2601 +#: src/libslic3r/PrintConfig.cpp:2724 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -8898,27 +10274,27 @@ msgstr "" "elevação zero, onde uma lacuna de acordo com este parâmetro é inserida entre " "o modelo e o pad." -#: src/libslic3r/PrintConfig.cpp:2611 +#: src/libslic3r/PrintConfig.cpp:2734 msgid "Critical angle" msgstr "Ângulo crítico" -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2736 msgid "The default angle for connecting support sticks and junctions." msgstr "O ângulo padrão para conectar suportes e junções." -#: src/libslic3r/PrintConfig.cpp:2621 +#: src/libslic3r/PrintConfig.cpp:2744 msgid "Max bridge length" msgstr "Comprimento máximo da ponte" -#: src/libslic3r/PrintConfig.cpp:2623 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "The max length of a bridge" msgstr "O comprimento máximo de uma ponte" -#: src/libslic3r/PrintConfig.cpp:2630 +#: src/libslic3r/PrintConfig.cpp:2753 msgid "Max pillar linking distance" msgstr "Distância máxima de conexão entre pilares" -#: src/libslic3r/PrintConfig.cpp:2632 +#: src/libslic3r/PrintConfig.cpp:2755 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -8926,11 +10302,11 @@ msgstr "" "A distância máxima de dois pilares para ficar ligado uns com os outros. Um " "valor zero irá proibir o pilar em cascata." -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2763 msgid "Object elevation" msgstr "Elevação do objeto" -#: src/libslic3r/PrintConfig.cpp:2642 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -8938,39 +10314,39 @@ msgstr "" "Quanto os suportes devem levantar o objecto suportado. Se \"pad em torno do " "objeto\" estiver habilitado, esse valor será ignorado." -#: src/libslic3r/PrintConfig.cpp:2653 +#: src/libslic3r/PrintConfig.cpp:2776 msgid "This is a relative measure of support points density." msgstr "Esta é uma medida relativa de densidade de pontos de suporte." -#: src/libslic3r/PrintConfig.cpp:2659 +#: src/libslic3r/PrintConfig.cpp:2782 msgid "Minimal distance of the support points" msgstr "Distância mínima dos pontos de suporte" -#: src/libslic3r/PrintConfig.cpp:2661 +#: src/libslic3r/PrintConfig.cpp:2784 msgid "No support points will be placed closer than this threshold." msgstr "Nenhum ponto de apoio será colocado mais perto do que este limiar." -#: src/libslic3r/PrintConfig.cpp:2667 +#: src/libslic3r/PrintConfig.cpp:2790 msgid "Use pad" msgstr "Use pad" -#: src/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2792 msgid "Add a pad underneath the supported model" msgstr "Adicionar um pad por baixo do modelo suportado" -#: src/libslic3r/PrintConfig.cpp:2674 +#: src/libslic3r/PrintConfig.cpp:2797 msgid "Pad wall thickness" msgstr "Espessura da parede do pad" -#: src/libslic3r/PrintConfig.cpp:2676 +#: src/libslic3r/PrintConfig.cpp:2799 msgid "The thickness of the pad and its optional cavity walls." msgstr "A espessura da pad e suas paredes de cavidade opcionais." -#: src/libslic3r/PrintConfig.cpp:2684 +#: src/libslic3r/PrintConfig.cpp:2807 msgid "Pad wall height" msgstr "Altura da parede do pad" -#: src/libslic3r/PrintConfig.cpp:2685 +#: src/libslic3r/PrintConfig.cpp:2808 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -8982,11 +10358,19 @@ msgstr "" "produzir um efeito de sucção extrema dentro da cavidade, o que torna a " "descascar a impressão fora da folha de IVA difícil." -#: src/libslic3r/PrintConfig.cpp:2698 +#: src/libslic3r/PrintConfig.cpp:2821 +msgid "Pad brim size" +msgstr "Tamanho da borda do bloco" + +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "How far should the pad extend around the contained geometry" +msgstr "Até onde o bloco deve se estender em torno da geometria contida" + +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Max merge distance" msgstr "Distância máxima da fusão" -#: src/libslic3r/PrintConfig.cpp:2700 +#: src/libslic3r/PrintConfig.cpp:2834 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -8996,11 +10380,11 @@ msgstr "" "grande. Este parâmetro define até que ponto o centro de duas pads menores " "deve ser. Se eles estão mais perto, eles vão se fundir em uma pad." -#: src/libslic3r/PrintConfig.cpp:2720 +#: src/libslic3r/PrintConfig.cpp:2854 msgid "Pad wall slope" msgstr "Inclinação da parede da pad" -#: src/libslic3r/PrintConfig.cpp:2722 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -9008,19 +10392,27 @@ msgstr "" "A inclinação da parede da pad em relação ao plano da mesa. 90 graus " "significa paredes retas." -#: src/libslic3r/PrintConfig.cpp:2731 +#: src/libslic3r/PrintConfig.cpp:2865 msgid "Pad around object" msgstr "Pad em torno do objeto" -#: src/libslic3r/PrintConfig.cpp:2733 +#: src/libslic3r/PrintConfig.cpp:2867 msgid "Create pad around object and ignore the support elevation" msgstr "Criar pad ao redor do objeto e ignorar a elevação de suporte" -#: src/libslic3r/PrintConfig.cpp:2738 +#: src/libslic3r/PrintConfig.cpp:2872 +msgid "Pad around object everywhere" +msgstr "Pad em torno do objeto em todo lugar" + +#: src/libslic3r/PrintConfig.cpp:2874 +msgid "Force pad around object everywhere" +msgstr "Forçar Pad em torno do objeto em todo lugar" + +#: src/libslic3r/PrintConfig.cpp:2879 msgid "Pad object gap" msgstr "Vão entre o pad e o objeto" -#: src/libslic3r/PrintConfig.cpp:2740 +#: src/libslic3r/PrintConfig.cpp:2881 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." @@ -9028,83 +10420,125 @@ msgstr "" "A lacuna entre a parte inferior do objeto e o pad gerado no modo de elevação " "zero." -#: src/libslic3r/PrintConfig.cpp:2749 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "Pad object connector stride" msgstr "Inserir pad entre o objeto" -#: src/libslic3r/PrintConfig.cpp:2751 +#: src/libslic3r/PrintConfig.cpp:2892 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "" "Distância entre duas varas do conector que conectam o objeto e a pad gerada." -#: src/libslic3r/PrintConfig.cpp:2758 +#: src/libslic3r/PrintConfig.cpp:2899 msgid "Pad object connector width" msgstr "Largura do conector do objeto pad" -#: src/libslic3r/PrintConfig.cpp:2760 +#: src/libslic3r/PrintConfig.cpp:2901 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "Largura das varas do conector que conectam o objeto e a pad gerada." -#: src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:2908 msgid "Pad object connector penetration" msgstr "Pad objeto conector de penetração" -#: src/libslic3r/PrintConfig.cpp:2770 +#: src/libslic3r/PrintConfig.cpp:2911 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Quanto deve os conectores minúsculos penetrar no corpo do modelo." -#: src/libslic3r/PrintConfig.cpp:3130 +#: src/libslic3r/PrintConfig.cpp:2918 +msgid "Enable hollowing" +msgstr "Ativar o modo oco" + +#: src/libslic3r/PrintConfig.cpp:2920 +msgid "Hollow out a model to have an empty interior" +msgstr "Deixar o modelo oco para ter um interior vazio" + +#: src/libslic3r/PrintConfig.cpp:2925 +msgid "Wall thickness" +msgstr "Espessura da parede" + +#: src/libslic3r/PrintConfig.cpp:2927 +msgid "Minimum wall thickness of a hollowed model." +msgstr "Espessura mínima da parede de um modelo oco." + +#: src/libslic3r/PrintConfig.cpp:2935 +msgid "Accuracy" +msgstr "Precisão" + +#: src/libslic3r/PrintConfig.cpp:2937 +msgid "" +"Performance vs accuracy of calculation. Lower values may produce unwanted " +"artifacts." +msgstr "" +"Desempenho versus precisão do cálculo. Valores mais baixos podem produzir " +"artefatos indesejados." + +#: src/libslic3r/PrintConfig.cpp:2947 +msgid "" +"Hollowing is done in two steps: first, an imaginary interior is calculated " +"deeper (offset plus the closing distance) in the object and then it's " +"inflated back to the specified offset. A greater closing distance makes the " +"interior more rounded. At zero, the interior will resemble the exterior the " +"most." +msgstr "" +"O oco é feito em duas etapas: primeiro, um interior imaginário é calculado " +"mais fundo (deslocamento mais a distância de fechamento) no objeto e, em " +"seguida, é inflado de volta para o deslocamento especificado. Uma maior " +"distância de fechamento torna o interior mais arredondado. Ao zero, o " +"interior será o mais parecido com o exterior." + +#: src/libslic3r/PrintConfig.cpp:3330 msgid "Export OBJ" msgstr "Exportar OBJ" -#: src/libslic3r/PrintConfig.cpp:3131 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "Export the model(s) as OBJ." msgstr "Exportar modelo(s) como OBJ." -#: src/libslic3r/PrintConfig.cpp:3142 +#: src/libslic3r/PrintConfig.cpp:3342 msgid "Export SLA" msgstr "Exportar SLA" -#: src/libslic3r/PrintConfig.cpp:3143 +#: src/libslic3r/PrintConfig.cpp:3343 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Fatiar o modelo e exportar as camadas de impressão SLA como PNG." -#: src/libslic3r/PrintConfig.cpp:3148 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "Export 3MF" msgstr "Exportar 3MF" -#: src/libslic3r/PrintConfig.cpp:3149 +#: src/libslic3r/PrintConfig.cpp:3349 msgid "Export the model(s) as 3MF." msgstr "Exportar modelo(s) como 3MF." -#: src/libslic3r/PrintConfig.cpp:3153 +#: src/libslic3r/PrintConfig.cpp:3353 msgid "Export AMF" msgstr "Exportar AMF" -#: src/libslic3r/PrintConfig.cpp:3154 +#: src/libslic3r/PrintConfig.cpp:3354 msgid "Export the model(s) as AMF." msgstr "Exportar modelo(s) como AMF." -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3358 msgid "Export STL" msgstr "Exportar STL" -#: src/libslic3r/PrintConfig.cpp:3159 +#: src/libslic3r/PrintConfig.cpp:3359 msgid "Export the model(s) as STL." msgstr "Exportar modelo(s) como STL." -#: src/libslic3r/PrintConfig.cpp:3164 +#: src/libslic3r/PrintConfig.cpp:3364 msgid "Slice the model and export toolpaths as G-code." msgstr "Fatiar o modelo e exportar o percurso da ferramenta como G-code." -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3369 msgid "Slice" msgstr "Fatiar" -#: src/libslic3r/PrintConfig.cpp:3170 +#: src/libslic3r/PrintConfig.cpp:3370 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -9112,71 +10546,71 @@ msgstr "" "Divida o modelo como FFF ou SLA com base no valor de config. " "printer_technology." -#: src/libslic3r/PrintConfig.cpp:3175 +#: src/libslic3r/PrintConfig.cpp:3375 msgid "Help" msgstr "Ajuda" -#: src/libslic3r/PrintConfig.cpp:3176 +#: src/libslic3r/PrintConfig.cpp:3376 msgid "Show this help." msgstr "Mostrar esta ajuda." -#: src/libslic3r/PrintConfig.cpp:3181 +#: src/libslic3r/PrintConfig.cpp:3381 msgid "Help (FFF options)" msgstr "Ajuda (opções FDM)" -#: src/libslic3r/PrintConfig.cpp:3182 +#: src/libslic3r/PrintConfig.cpp:3382 msgid "Show the full list of print/G-code configuration options." msgstr "Mostre a lista completa de opções de config. do Print/G-code." -#: src/libslic3r/PrintConfig.cpp:3186 +#: src/libslic3r/PrintConfig.cpp:3386 msgid "Help (SLA options)" msgstr "Ajuda (opções SLA)" -#: src/libslic3r/PrintConfig.cpp:3187 +#: src/libslic3r/PrintConfig.cpp:3387 msgid "Show the full list of SLA print configuration options." msgstr "Mostrar a lista completa de opções de config. de impressão de SLA." -#: src/libslic3r/PrintConfig.cpp:3191 +#: src/libslic3r/PrintConfig.cpp:3391 msgid "Output Model Info" msgstr "Informações do modelo de saída" -#: src/libslic3r/PrintConfig.cpp:3192 +#: src/libslic3r/PrintConfig.cpp:3392 msgid "Write information about the model to the console." msgstr "Escreva informações sobre o modelo para o console." -#: src/libslic3r/PrintConfig.cpp:3196 +#: src/libslic3r/PrintConfig.cpp:3396 msgid "Save config file" msgstr "Salvar arquivo de config." -#: src/libslic3r/PrintConfig.cpp:3197 +#: src/libslic3r/PrintConfig.cpp:3397 msgid "Save configuration to the specified file." msgstr "Salvar config. para o arquivo específico." -#: src/libslic3r/PrintConfig.cpp:3207 +#: src/libslic3r/PrintConfig.cpp:3407 msgid "Align XY" msgstr "Alinhar XY" -#: src/libslic3r/PrintConfig.cpp:3208 +#: src/libslic3r/PrintConfig.cpp:3408 msgid "Align the model to the given point." msgstr "Alinhar modelo de acordo com o ponto inserido." -#: src/libslic3r/PrintConfig.cpp:3213 +#: src/libslic3r/PrintConfig.cpp:3413 msgid "Cut model at the given Z." msgstr "Cortar modelo ao Z fornecido." -#: src/libslic3r/PrintConfig.cpp:3234 +#: src/libslic3r/PrintConfig.cpp:3434 msgid "Center" msgstr "Centralizar" -#: src/libslic3r/PrintConfig.cpp:3235 +#: src/libslic3r/PrintConfig.cpp:3435 msgid "Center the print around the given center." msgstr "Centralizar a impressão de acordo com o centro informado." -#: src/libslic3r/PrintConfig.cpp:3239 +#: src/libslic3r/PrintConfig.cpp:3439 msgid "Don't arrange" msgstr "Não organizar" -#: src/libslic3r/PrintConfig.cpp:3240 +#: src/libslic3r/PrintConfig.cpp:3440 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -9184,27 +10618,27 @@ msgstr "" "Não reorganize os modelos fornecidos antes de Mesclar e manter suas " "coordenadas XY originais." -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3443 msgid "Duplicate" msgstr "Duplicar" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3444 msgid "Multiply copies by this factor." msgstr "Multiplicar cópias por esse fator." -#: src/libslic3r/PrintConfig.cpp:3248 +#: src/libslic3r/PrintConfig.cpp:3448 msgid "Duplicate by grid" msgstr "Duplicar por grade" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3449 msgid "Multiply copies by creating a grid." msgstr "Multiplique cópias criando uma grade." -#: src/libslic3r/PrintConfig.cpp:3252 +#: src/libslic3r/PrintConfig.cpp:3452 msgid "Merge" msgstr "Mesclar" -#: src/libslic3r/PrintConfig.cpp:3253 +#: src/libslic3r/PrintConfig.cpp:3453 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -9212,7 +10646,7 @@ msgstr "" "Organize os modelos fornecidos em uma placa e junte-os em um único modelo, a " "fim de executar ações uma só vez." -#: src/libslic3r/PrintConfig.cpp:3258 +#: src/libslic3r/PrintConfig.cpp:3458 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -9221,31 +10655,31 @@ msgstr "" "adicionada sempre que precisamos cortar o modelo para executar a ação " "solicitada)." -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3462 msgid "Rotation angle around the Z axis in degrees." msgstr "Ângulo de rotação ao redor do eixo Zem graus." -#: src/libslic3r/PrintConfig.cpp:3266 +#: src/libslic3r/PrintConfig.cpp:3466 msgid "Rotate around X" msgstr "Rotacionar no X" -#: src/libslic3r/PrintConfig.cpp:3267 +#: src/libslic3r/PrintConfig.cpp:3467 msgid "Rotation angle around the X axis in degrees." msgstr "Ângulo de rotação ao redor do eixo X em graus." -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3471 msgid "Rotate around Y" msgstr "Rotacionar no Y" -#: src/libslic3r/PrintConfig.cpp:3272 +#: src/libslic3r/PrintConfig.cpp:3472 msgid "Rotation angle around the Y axis in degrees." msgstr "Ângulo de rotação ao redor do eixo Y em graus." -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3477 msgid "Scaling factor or percentage." msgstr "Escalando fator ou porcentagem." -#: src/libslic3r/PrintConfig.cpp:3282 +#: src/libslic3r/PrintConfig.cpp:3482 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -9253,27 +10687,27 @@ msgstr "" "Detecte peças não conectadas em um determinado modelo (s) e divida-as em " "objetos separados." -#: src/libslic3r/PrintConfig.cpp:3285 +#: src/libslic3r/PrintConfig.cpp:3485 msgid "Scale to Fit" msgstr "Dimensionar para caber" -#: src/libslic3r/PrintConfig.cpp:3286 +#: src/libslic3r/PrintConfig.cpp:3486 msgid "Scale to fit the given volume." msgstr "Escalar para se adequar ao volume informado." -#: src/libslic3r/PrintConfig.cpp:3295 +#: src/libslic3r/PrintConfig.cpp:3495 msgid "Ignore non-existent config files" msgstr "Ignorar arquivos de config. não existentes" -#: src/libslic3r/PrintConfig.cpp:3296 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Não falhe se um arquivo fornecido para--carregamento não existe." -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3499 msgid "Load config file" msgstr "Carregar arquivo de config." -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3500 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -9281,11 +10715,11 @@ msgstr "" "Carregar a config. do arquivo especificado. Ele pode ser usado mais de uma " "vez para carregar opções de vários arquivos." -#: src/libslic3r/PrintConfig.cpp:3303 +#: src/libslic3r/PrintConfig.cpp:3503 msgid "Output File" msgstr "Arquivo de saída" -#: src/libslic3r/PrintConfig.cpp:3304 +#: src/libslic3r/PrintConfig.cpp:3504 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -9293,11 +10727,11 @@ msgstr "" "O arquivo onde a saída será gravada (se não for especificado, ele será " "baseado no arquivo de entrada)." -#: src/libslic3r/PrintConfig.cpp:3314 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Data directory" msgstr "Diretório de dados" -#: src/libslic3r/PrintConfig.cpp:3315 +#: src/libslic3r/PrintConfig.cpp:3515 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -9306,23 +10740,26 @@ msgstr "" "Carregar e armazenar as config. no diretório especificado. Isso é útil para " "manter perfis diferentes ou incluir config. de um armazenamento de rede." -#: src/libslic3r/PrintConfig.cpp:3318 +#: src/libslic3r/PrintConfig.cpp:3518 msgid "Logging level" msgstr "Nível de registro" -#: src/libslic3r/PrintConfig.cpp:3319 +#: src/libslic3r/PrintConfig.cpp:3519 msgid "" -"Messages with severity lower or eqal to the loglevel will be printed out. 0:" -"trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" +"Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +"trace\n" +"For example. loglevel=2 logs fatal, error and warning level messages." msgstr "" -"Mensagens com severidade menor ou igual para o LogLevel serão impressos. 0: " -"Trace, 1: debug, 2: info, 3: aviso, 4: erro, 5: fatal" +"Define a sensibilidade de registro. 0:fatal, 1:erro, 2:warning, 3:info, 4:" +"debug, 5:trace\n" +"Por exemplo. loglevel=2 logs de mensagens fatais, de nível de erro e de " +"aviso." -#: src/libslic3r/PrintConfig.cpp:3324 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Render with a software renderer" msgstr "Renderizar com um software renderizador" -#: src/libslic3r/PrintConfig.cpp:3325 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." @@ -9330,57 +10767,94 @@ msgstr "" "Renderizar com um software renderizador. O renderizador de software MESA " "empacotado é carregado em vez do driver OpenGL padrão." -#: src/libslic3r/PrintObject.cpp:110 +#: src/libslic3r/PrintObject.cpp:108 msgid "Processing triangulated mesh" msgstr "Processando malha triangulada" -#: src/libslic3r/PrintObject.cpp:141 +#: src/libslic3r/PrintObject.cpp:152 msgid "Generating perimeters" msgstr "Gerando perímetros" -#: src/libslic3r/PrintObject.cpp:251 +#: src/libslic3r/PrintObject.cpp:255 msgid "Preparing infill" msgstr "Preparando o preenchimento" -#: src/libslic3r/PrintObject.cpp:391 +#: src/libslic3r/PrintObject.cpp:395 msgid "Generating support material" msgstr "Gerando material de suporte" -#: src/libslic3r/GCode/PreviewData.cpp:160 -msgid "Mixed" -msgstr "Misto" - -#: src/libslic3r/GCode/PreviewData.cpp:380 +#: src/libslic3r/GCode/PreviewData.cpp:347 msgid "Height (mm)" msgstr "Altura (mm)" -#: src/libslic3r/GCode/PreviewData.cpp:382 +#: src/libslic3r/GCode/PreviewData.cpp:349 msgid "Width (mm)" msgstr "Espessura (mm)" -#: src/libslic3r/GCode/PreviewData.cpp:384 +#: src/libslic3r/GCode/PreviewData.cpp:351 msgid "Speed (mm/s)" msgstr "Velocidade (mm/s)" -#: src/libslic3r/GCode/PreviewData.cpp:386 -msgid "Volumetric flow rate (mm3/s)" -msgstr "Fluxo volumétrico (mm3/s)" +#: src/libslic3r/GCode/PreviewData.cpp:353 +msgid "Fan Speed (%)" +msgstr "Velocidade da ventoinha (%)" -#: src/libslic3r/GCode/PreviewData.cpp:477 -msgid "Default print color" -msgstr "Cor de impressão padrão" +#: src/libslic3r/GCode/PreviewData.cpp:355 +msgid "Volumetric flow rate (mm³/s)" +msgstr "Vazão volumétrica (mm³/s)" -#: src/libslic3r/GCode/PreviewData.cpp:484 -#, c-format -msgid "up to %.2f mm" -msgstr "até %.2f mm" +#~ msgid "Layers heights" +#~ msgstr "Altura de camada" -#: src/libslic3r/GCode/PreviewData.cpp:488 -#, c-format -msgid "above %.2f mm" -msgstr "acima de %.2f mm" +#~ msgid "Position (mm)" +#~ msgstr "Posição (mm)" -#: src/libslic3r/GCode/PreviewData.cpp:493 -#, c-format -msgid "%.2f - %.2f mm" -msgstr "%.2f - %.2f mm" +#~ msgid "Displacement (mm)" +#~ msgstr "Deslocamento (mm)" + +#~ msgid "Rotation (deg)" +#~ msgstr "Rotacionar (graus)" + +#~ msgid "Scale (%)" +#~ msgstr "Escala (%)" + +#~ msgid "Change Application &Language" +#~ msgstr "Mudar &idioma" + +#~ msgid "Select new extruder for the object/part" +#~ msgstr "Selecionar nova extrusora para objeto/parte" + +#~ msgid "Select extruder number for selected objects and/or parts" +#~ msgstr "" +#~ "Selecione o número da extrusora para objetos e/ou peças selecionados" + +#~ msgid "Object Manipulation" +#~ msgstr "Manipulação de objeto" + +#~ msgid "Main Shortcuts" +#~ msgstr "Atalhos principais" + +#~ msgid "Select All objects" +#~ msgstr "Selecionar todos os objetos" + +#~ msgid "Delete All" +#~ msgstr "Deletar todos" + +#~ msgid "Zoom to selected object" +#~ msgstr "Ampliar para o objeto selecionado" + +#~ msgid "Plater Shortcuts" +#~ msgstr "Atalhos da bandeja" + +#~ msgid "Preview Shortcuts" +#~ msgstr "Atalhos de visualização" + +#~ msgid "The selected project is no more available" +#~ msgstr "O projeto selecionado não está mais disponível" + +#~ msgid "" +#~ "Messages with severity lower or eqal to the loglevel will be printed out. " +#~ "0:trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" +#~ msgstr "" +#~ "Mensagens com severidade menor ou igual para o LogLevel serão impressos. " +#~ "0: Trace, 1: debug, 2: info, 3: aviso, 4: erro, 5: fatal" From e9423ab86d1a110d23395626743ff97f98b52b33 Mon Sep 17 00:00:00 2001 From: Aegean Odyssey <57586704+aegean-odyssey@users.noreply.github.com> Date: Sat, 25 Apr 2020 02:51:02 +0000 Subject: [PATCH 005/138] Also search vendor directory for printer profile resources. Search the vendor directory using the same conventions used to search the profiles directory when looking for thumbnails, bed_models, and bed_textures. Allows a complete, "Config Wizard"-friendly custom vendor profile to be placed in the (user's configuration) vendor directory. --- src/slic3r/GUI/3DBed.cpp | 10 ++++++++-- src/slic3r/GUI/ConfigWizard.cpp | 30 ++++++++++++++++++------------ 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/slic3r/GUI/3DBed.cpp b/src/slic3r/GUI/3DBed.cpp index 742941b84..99c58c84f 100644 --- a/src/slic3r/GUI/3DBed.cpp +++ b/src/slic3r/GUI/3DBed.cpp @@ -338,8 +338,11 @@ static std::string system_print_bed_model(const Preset &preset) { std::string out; const VendorProfile::PrinterModel *pm = PresetUtils::system_printer_model(preset); - if (pm != nullptr && ! pm->bed_model.empty()) + if (pm != nullptr && ! pm->bed_model.empty()) { + out = Slic3r::data_dir() + "/vendor/" + preset.vendor->id + "/" + pm->bed_model; + if (! boost::filesystem::exists(boost::filesystem::path(out))) out = Slic3r::resources_dir() + "/profiles/" + preset.vendor->id + "/" + pm->bed_model; + } return out; } @@ -347,8 +350,11 @@ static std::string system_print_bed_texture(const Preset &preset) { std::string out; const VendorProfile::PrinterModel *pm = PresetUtils::system_printer_model(preset); - if (pm != nullptr && ! pm->bed_texture.empty()) + if (pm != nullptr && ! pm->bed_texture.empty()) { + out = Slic3r::data_dir() + "/vendor/" + preset.vendor->id + "/" + pm->bed_texture; + if (! boost::filesystem::exists(boost::filesystem::path(out))) out = Slic3r::resources_dir() + "/profiles/" + preset.vendor->id + "/" + pm->bed_texture; + } return out; } diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index e242033d9..99ab57cd4 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -188,22 +188,28 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt wxBitmap bitmap; int bitmap_width = 0; - const wxString bitmap_file = GUI::from_u8(Slic3r::resources_dir() + "/profiles/" + vendor.id + "/" + model.id + "_thumbnail.png"); - if (wxFileExists(bitmap_file)) { + const wxString bitmap_file = GUI::from_u8(Slic3r::data_dir() + "/vendor/" + vendor.id + "/" + model.id + "_thumbnail.png"); + if (wxFileExists(bitmap_file)) { bitmap.LoadFile(bitmap_file, wxBITMAP_TYPE_PNG); bitmap_width = bitmap.GetWidth(); } else { - BOOST_LOG_TRIVIAL(warning) << boost::format("Can't find bitmap file `%1%` for vendor `%2%`, printer `%3%`, using placeholder icon instead") - % bitmap_file - % vendor.id - % model.id; + const wxString bitmap_file = GUI::from_u8(Slic3r::resources_dir() + "/profiles/" + vendor.id + "/" + model.id + "_thumbnail.png"); + if (wxFileExists(bitmap_file)) { + bitmap.LoadFile(bitmap_file, wxBITMAP_TYPE_PNG); + bitmap_width = bitmap.GetWidth(); + } else { + BOOST_LOG_TRIVIAL(warning) << boost::format("Can't find bitmap file `%1%` for vendor `%2%`, printer `%3%`, using placeholder icon instead") + % bitmap_file + % vendor.id + % model.id; - const wxString placeholder_file = GUI::from_u8(Slic3r::var(PRINTER_PLACEHOLDER)); - if (wxFileExists(placeholder_file)) { - bitmap.LoadFile(placeholder_file, wxBITMAP_TYPE_PNG); - bitmap_width = bitmap.GetWidth(); - } - } + const wxString placeholder_file = GUI::from_u8(Slic3r::var(PRINTER_PLACEHOLDER)); + if (wxFileExists(placeholder_file)) { + bitmap.LoadFile(placeholder_file, wxBITMAP_TYPE_PNG); + bitmap_width = bitmap.GetWidth(); + } + } + } auto *title = new wxStaticText(this, wxID_ANY, model.name, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); title->SetFont(font_name); From 1a8a5984adf1c0ec341b92a413e24261a277e4b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= <hejl.lukas@gmail.com> Date: Fri, 2 Oct 2020 04:18:44 +0200 Subject: [PATCH 006/138] Connect lines in the adaptive infill using hooks --- src/libslic3r/Fill/FillAdaptive.cpp | 250 +++++++++++++++++++++++++++- 1 file changed, 246 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 7813d64a3..4a3c1b9b2 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -14,11 +14,18 @@ #include <cstdlib> #include <cmath> #include <algorithm> +#include <numeric> // Boost pool: Don't use mutexes to synchronize memory allocation. #define BOOST_POOL_NO_MT #include <boost/pool/object_pool.hpp> +#include <boost/geometry.hpp> +#include <boost/geometry/geometries/point.hpp> +#include <boost/geometry/geometries/segment.hpp> +#include <boost/geometry/index/rtree.hpp> + + namespace Slic3r { namespace FillAdaptive { @@ -475,7 +482,7 @@ static void generate_infill_lines_recursive( Line new_line(Point::new_scale(from), Point::new_scale(to)); if (last_line.a.x() == std::numeric_limits<coord_t>::max()) { last_line.a = new_line.a; - } else if ((new_line.a - last_line.b).cwiseAbs().maxCoeff() > 300) { // SCALED_EPSILON is 100 and it is not enough + } else if ((new_line.a - last_line.b).cwiseAbs().maxCoeff() > 1000) { // SCALED_EPSILON is 100 and it is not enough context.output_lines.emplace_back(last_line); last_line.a = new_line.a; } @@ -546,6 +553,234 @@ static void export_infill_lines_to_svg(const ExPolygon &expoly, const Polylines } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ +static Matrix2d rotation_matrix_from_vector(const Point &vector) +{ + Matrix2d rotation; + rotation.block<1, 2>(0, 0) = vector.cast<double>() / vector.cast<double>().norm(); + rotation(1, 0) = -rotation(0, 1); + rotation(1, 1) = rotation(0, 0); + + return rotation; +} + +struct Intersection +{ + size_t closest_line_idx; + Line closest_line; + Point closest_point; + size_t intersect_pl_idx; + Polyline *intersect_pl; + Line intersect_line; + bool forward; + bool used = false; + + Intersection(const size_t closest_line_idx, + const Line & closest_line, + const Point &closest_point, + size_t intersect_pl_idx, + Polyline * intersect_pl, + const Line & intersect_line, + bool forward) + : closest_line_idx(closest_line_idx) + , closest_line(closest_line) + , closest_point(closest_point) + , intersect_pl_idx(intersect_pl_idx) + , intersect_pl(intersect_pl) + , intersect_line(intersect_line) + , forward(forward){}; +}; + +static inline Intersection *get_nearest_intersection(std::vector<std::pair<Intersection, double>> &intersect_line, const size_t first_idx) +{ + if (first_idx == 0) + return &intersect_line[first_idx + 1].first; + else if (first_idx == (intersect_line.size() - 1)) + return &intersect_line[first_idx - 1].first; + else if ((intersect_line[first_idx].second - intersect_line[first_idx - 1].second) < (intersect_line[first_idx + 1].second - intersect_line[first_idx].second)) + return &intersect_line[first_idx - 1].first; + else + return &intersect_line[first_idx + 1].first; +}; + +static Line create_offset_line(const Line &line_to_offset, const Intersection &intersection, const double scaled_spacing) +{ + Matrix2d rotation = rotation_matrix_from_vector(line_to_offset.vector()); + Vec2d offset_vector = ((scaled_spacing / 2.) * line_to_offset.normal().cast<double>().normalized()); + Vec2d offset_line_point = line_to_offset.a.cast<double>(); + Vec2d furthest_point = (intersection.forward ? intersection.intersect_line.b : intersection.intersect_line.a).cast<double>(); + + if ((rotation * furthest_point).y() >= (rotation * offset_line_point).y()) offset_vector *= -1; + + Line offset_line = line_to_offset; + Point line_extension = (1000000. * line_to_offset.vector().cast<double>().normalized()).cast<coord_t>(); + + offset_line.translate(offset_vector.x(), offset_vector.y()); + offset_line.a -= line_extension; + offset_line.b += line_extension; + + return offset_line; +}; + +static void connect_lines_with_hooks(Polylines &&lines, Polylines &polylines_out, const double spacing, const int hook_length) +{ + namespace bgm = boost::geometry::model; + namespace bgi = boost::geometry::index; + + using rtree_point_t = bgm::point<coord_t, 2, boost::geometry::cs::cartesian>; + using rtree_segment_t = bgm::segment<rtree_point_t>; + using rtree_t = bgi::rtree<std::pair<rtree_segment_t, size_t>, bgi::rstar<16, 4>>; + + std::vector<std::pair<rtree_segment_t, size_t>> rtee_segments; + size_t poly_idx = 0; + for (const Polyline &poly : lines) { + rtee_segments.emplace_back(rtree_segment_t(rtree_point_t(poly.points.front().x(), poly.points.front().y()), + rtree_point_t(poly.points.back().x(), poly.points.back().y())), + poly_idx); + ++poly_idx; + } + rtree_t rtree(rtee_segments.begin(), rtee_segments.end()); + + std::vector<Intersection> intersections; + for (Polyline &line : lines) { + Point front_point = line.points.front(); + Point back_point = line.points.back(); + std::vector<std::pair<rtree_segment_t, size_t>> closest; + + closest.reserve(2); + rtree.query(bgi::nearest(rtree_point_t(front_point.x(), front_point.y()), 2), std::back_inserter(closest)); + if (((Line) lines[closest[0].second]).distance_to(front_point) <= 1000) + intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], front_point, &line - lines.data(), &line, (Line) line, true); + + closest.clear(); + closest.reserve(2); + rtree.query(bgi::nearest(rtree_point_t(back_point.x(), back_point.y()), 2), std::back_inserter(closest)); + if (((Line) lines[closest[0].second]).distance_to(back_point) <= 1000) + intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], back_point, &line - lines.data(), &line, (Line) line, false); + } + + std::sort(intersections.begin(), intersections.end(), + [](const Intersection &i1, const Intersection &i2) { return i1.closest_line_idx < i2.closest_line_idx; }); + + std::vector<size_t> merged_with(lines.size()); + std::iota(merged_with.begin(), merged_with.end(), 0); + + auto get_merged_index = [&merged_with](size_t polyline_idx) { + for (size_t last = polyline_idx;;) { + size_t lower = merged_with[last]; + if (lower == last) { + merged_with[polyline_idx] = lower; + polyline_idx = lower; + break; + } + last = lower; + } + + return polyline_idx; + }; + + for (size_t min_idx = 0; min_idx < intersections.size(); ++min_idx) { + std::vector<std::pair<Intersection, double>> intersect_line; + Matrix2d rotation = rotation_matrix_from_vector(intersections[min_idx].closest_line.vector()); + intersect_line.emplace_back(intersections[min_idx], (rotation * intersections[min_idx].closest_point.cast<double>()).x()); + + for (size_t max_idx = min_idx + 1; max_idx < intersections.size(); ++max_idx) { + if (intersections[min_idx].closest_line_idx == intersections[max_idx].closest_line_idx) { + intersect_line.emplace_back(intersections[max_idx], (rotation * intersections[max_idx].closest_point.cast<double>()).x()); + min_idx = max_idx; + } + } + + if (intersect_line.size() <= 1) continue; + + std::sort(intersect_line.begin(), intersect_line.end(), [](const auto &i1, const auto &i2) { return i1.second < i2.second; }); + + for (size_t first_idx = 0; first_idx < intersect_line.size(); ++first_idx) { + Intersection &first_i = intersect_line[first_idx].first; + Intersection &nearest_i = *get_nearest_intersection(intersect_line, first_idx); + + if (first_i.used || first_i.intersect_pl->points.size() == 0) continue; + + Line intersection_line(first_i.closest_point, nearest_i.closest_point); + Point hook_vector = (hook_length * intersection_line.vector().cast<double>().normalized()).cast<coord_t>(); + Line offset_line = create_offset_line(intersection_line, first_i, scale_(spacing)); + double intersection_line_length = intersection_line.length(); + + { + nearest_i.intersect_pl_idx = get_merged_index(nearest_i.intersect_pl_idx); + nearest_i.intersect_pl = &lines[nearest_i.intersect_pl_idx]; + + if (!nearest_i.used && nearest_i.intersect_pl->points.size() != 0) + nearest_i.forward = (nearest_i.intersect_pl->points.front() == nearest_i.closest_point); + } + + Point first_i_point, nearest_i_point; + if (first_i.intersect_line.intersection(offset_line, &first_i_point) && + nearest_i.intersect_line.intersection(offset_line, &nearest_i_point)) { + if (!nearest_i.used && nearest_i.intersect_pl->points.size() != 0 && intersection_line_length <= 2 * hook_length) { + if (first_i.intersect_pl_idx == nearest_i.intersect_pl_idx) { + if (!first_i.forward) { std::swap(first_i_point, nearest_i_point); } + + first_i.intersect_pl->points.front() = first_i_point; + first_i.intersect_pl->points.back() = nearest_i_point; + first_i.intersect_pl->points.emplace(first_i.intersect_pl->points.begin(), nearest_i_point); + } else { + Points merge_polyline_points; + size_t first_polyline_lenght = first_i.intersect_pl->points.size(); + size_t short_polyline_lenght = nearest_i.intersect_pl->points.size(); + merge_polyline_points.reserve(first_polyline_lenght + short_polyline_lenght); + + if (first_i.forward) { + if (nearest_i.forward) + for (auto it = nearest_i.intersect_pl->points.rbegin(); it != nearest_i.intersect_pl->points.rend(); ++it) + merge_polyline_points.emplace_back(*it); + else + for (auto it = nearest_i.intersect_pl->points.begin(); it != nearest_i.intersect_pl->points.end(); ++it) + merge_polyline_points.emplace_back(*it); + + append(merge_polyline_points, std::move(first_i.intersect_pl->points)); + merge_polyline_points[short_polyline_lenght - 1] = nearest_i_point; + merge_polyline_points[short_polyline_lenght] = first_i_point; + } else { + append(merge_polyline_points, std::move(first_i.intersect_pl->points)); + if (nearest_i.forward) + for (auto it = nearest_i.intersect_pl->points.begin(); it != nearest_i.intersect_pl->points.end(); ++it) + merge_polyline_points.emplace_back(*it); + else + for (auto it = nearest_i.intersect_pl->points.rbegin(); it != nearest_i.intersect_pl->points.rend(); ++it) + merge_polyline_points.emplace_back(*it); + + merge_polyline_points[first_polyline_lenght - 1] = first_i_point; + merge_polyline_points[first_polyline_lenght] = nearest_i_point; + } + + merged_with[nearest_i.intersect_pl_idx] = merged_with[first_i.intersect_pl_idx]; + + nearest_i.intersect_pl->points.clear(); + first_i.intersect_pl->points = merge_polyline_points; + } + + first_i.used = true; + nearest_i.used = true; + } else { + if (first_i.forward) { + first_i.intersect_pl->points.front() = first_i_point; + first_i.intersect_pl->points.emplace(first_i.intersect_pl->points.begin(), first_i_point + hook_vector); + } else { + first_i.intersect_pl->points.back() = first_i_point; + first_i.intersect_pl->points.emplace_back(first_i_point + hook_vector); + } + + first_i.used = true; + } + } + } + } + + polylines_out.reserve(polylines_out.size() + std::count_if(lines.begin(), lines.end(), [](const Polyline &pl) { return !pl.empty(); })); + for (Polyline &pl : lines) + if (!pl.empty()) polylines_out.emplace_back(std::move(pl)); +} + void Filler::_fill_surface_single( const FillParams & params, unsigned int thickness_layers, @@ -591,6 +826,10 @@ void Filler::_fill_surface_single( // Crop all polylines all_polylines = intersection_pl(std::move(all_polylines), to_polygons(expolygon)); + // After intersection_pl some polylines with only one line are split into more lines + for (Polyline &polyline : all_polylines) + if (polyline.points.size() > 2) polyline = Polyline(polyline.points.front(), polyline.points.back()); + #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { static int iRun = 0; @@ -598,10 +837,13 @@ void Filler::_fill_surface_single( } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ - if (params.dont_connect || all_polylines.size() <= 1) - append(polylines_out, std::move(all_polylines)); + Polylines all_polylines_with_hooks; + connect_lines_with_hooks(std::move(all_polylines), all_polylines_with_hooks, this->spacing, int(scale_(2.))); + + if (params.dont_connect || all_polylines_with_hooks.size() <= 1) + append(polylines_out, std::move(all_polylines_with_hooks)); else - connect_infill(chain_polylines(std::move(all_polylines)), expolygon, polylines_out, this->spacing, params); + connect_infill(chain_polylines(std::move(all_polylines_with_hooks)), expolygon, polylines_out, this->spacing, params); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { From 7a9aec2b0bc24be1253b90efcb2452ec26c1665d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= <hejl.lukas@gmail.com> Date: Fri, 2 Oct 2020 11:15:55 +0200 Subject: [PATCH 007/138] Connect infill with perimeters using hooks --- src/libslic3r/Fill/FillAdaptive.cpp | 2 +- src/libslic3r/Fill/FillBase.cpp | 125 +++++++++++++++++++++++++++- src/libslic3r/Fill/FillBase.hpp | 2 +- 3 files changed, 125 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 4a3c1b9b2..b55a59c3e 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -843,7 +843,7 @@ void Filler::_fill_surface_single( if (params.dont_connect || all_polylines_with_hooks.size() <= 1) append(polylines_out, std::move(all_polylines_with_hooks)); else - connect_infill(chain_polylines(std::move(all_polylines_with_hooks)), expolygon, polylines_out, this->spacing, params); + connect_infill(chain_polylines(std::move(all_polylines_with_hooks)), expolygon, polylines_out, this->spacing, params, int(scale_(2.))); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index fc5f548a3..d68c770ab 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -833,7 +833,67 @@ void mark_boundary_segments_touching_infill( } } -void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_src, Polylines &polylines_out, const double spacing, const FillParams ¶ms) +static double compute_distance_to_consumed_point(const std::vector<Points> & boundary, + const std::vector<std::vector<ContourPointData>> &boundary_data, + size_t contour_idx, + size_t point_index, + bool forward) +{ + Point predecessor = boundary[contour_idx][point_index]; + double total_distance = 0; + + do { + if (forward) + point_index = (point_index == (boundary[contour_idx].size() - 1)) ? 0 : (point_index + 1); + else + point_index = (point_index > 0) ? (point_index - 1) : (boundary[contour_idx].size() - 1); + + Point successor = boundary[contour_idx][point_index]; + total_distance += (successor - predecessor).cast<double>().norm(); + predecessor = successor; + } while (!boundary_data[contour_idx][point_index].point_consumed); + + return total_distance; +} + +static std::pair<Points, double> get_hook_path(const std::vector<Points> & boundary, + const std::vector<std::vector<ContourPointData>> &boundary_data, + size_t contour_idx, + size_t point_index, + bool forward, + int hook_length, + std::vector<Point> & not_connected) +{ + double total_distance = 0; + + Points points; + points.emplace_back(boundary[contour_idx][point_index]); + + do { + if (forward) + point_index = (point_index == (boundary[contour_idx].size() - 1)) ? 0 : (point_index + 1); + else + point_index = (point_index > 0) ? (point_index - 1) : (boundary[contour_idx].size() - 1); + + Point successor = boundary[contour_idx][point_index]; + total_distance += (successor - points.back()).cast<double>().norm(); + points.emplace_back(successor); + } while (!boundary_data[contour_idx][point_index].point_consumed && total_distance < hook_length && + std::find(not_connected.begin(), not_connected.end(), points.back()) == not_connected.end()); + + if (total_distance > hook_length) { + Vec2d vector = (points.back() - points[points.size() - 2]).cast<double>(); + double vector_length = vector.norm(); + double shrink_vec_length = vector_length - (total_distance - hook_length); + + points.back() = ((vector / vector_length) * shrink_vec_length).cast<coord_t>() + points[points.size() - 2]; + // total_distance += (shrink_vec_length - vector_length); + } + + return std::make_pair(points, total_distance); +} + +void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_src, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length) { assert(! infill_ordered.empty()); assert(! boundary_src.contour.points.empty()); @@ -1005,7 +1065,68 @@ void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_ if (next_marked) contour_data[cp2next->second].point_consumed = false; } - polylines_out.reserve(polylines_out.size() + std::count_if(infill_ordered.begin(), infill_ordered.end(), [](const Polyline &pl) { return ! pl.empty(); })); + + auto get_merged_index = [&merged_with](size_t polyline_idx) { + for (size_t last = polyline_idx;;) { + size_t lower = merged_with[last]; + if (lower == last) { + merged_with[polyline_idx] = lower; + polyline_idx = lower; + break; + } + last = lower; + } + + return polyline_idx; + }; + + if (hook_length != 0) { + std::vector<Point> not_connect_points; + for (const std::pair<size_t, size_t> &contour_point : map_infill_end_point_to_boundary) + if (contour_point.first != boundary_idx_unconnected && !boundary_data[contour_point.first][contour_point.second].point_consumed) + not_connect_points.emplace_back(boundary[contour_point.first][contour_point.second]); + + for (size_t endpoint_idx = 0; endpoint_idx < map_infill_end_point_to_boundary.size(); ++endpoint_idx) { + Polyline & polyline = infill_ordered[get_merged_index(endpoint_idx / 2)]; + const std::pair<size_t, size_t> &contour_point = map_infill_end_point_to_boundary[endpoint_idx]; + + if (contour_point.first != boundary_idx_unconnected && + !boundary_data[contour_point.first][contour_point.second].point_consumed) { + Point boundary_point = boundary[contour_point.first][contour_point.second]; + auto [points_forward, total_length_forward] = get_hook_path(boundary, boundary_data, contour_point.first, + contour_point.second, true, hook_length, not_connect_points); + auto [points_backward, total_length_backward] = get_hook_path(boundary, boundary_data, contour_point.first, + contour_point.second, false, hook_length, not_connect_points); + + Points points; + if (total_length_forward < hook_length && total_length_backward < hook_length) { + continue; + } else if (total_length_forward < total_length_backward && total_length_forward >= hook_length) { + points = std::move(points_forward); + } else if (total_length_backward < total_length_forward && total_length_backward >= hook_length) { + points = std::move(points_backward); + } else if (total_length_forward > total_length_backward) { + points = std::move(points_forward); + } else { + points = std::move(points_backward); + } + + if ((boundary_point - polyline.points.front()).cast<double>().squaredNorm() <= (SCALED_EPSILON * SCALED_EPSILON)) { + Points merge_points; + merge_points.reserve(polyline.points.size() + points.size() - 1); + + for (auto it = points.rbegin(); it != points.rend() - 1; ++it) merge_points.emplace_back(*it); + + append(merge_points, std::move(polyline.points)); + polyline.points = std::move(merge_points); + } else { + for (auto it = points.begin() + 1; it != points.end(); ++it) polyline.points.emplace_back(*it); + } + } + } + } + + polylines_out.reserve(polylines_out.size() + std::count_if(infill_ordered.begin(), infill_ordered.end(), [](const Polyline &pl) { return ! pl.empty(); })); for (Polyline &pl : infill_ordered) if (! pl.empty()) polylines_out.emplace_back(std::move(pl)); diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index 0779117eb..aedf39c81 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -124,7 +124,7 @@ protected: virtual std::pair<float, Point> _infill_direction(const Surface *surface) const; public: - static void connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, Polylines &polylines_out, double spacing, const FillParams ¶ms); + static void connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, Polylines &polylines_out, double spacing, const FillParams ¶ms, const int hook_length = 0); static coord_t _adjust_solid_spacing(const coord_t width, const coord_t distance); From 0b4733f656dc953e1c72a00c69d60e1456753297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= <hejl.lukas@gmail.com> Date: Sat, 10 Oct 2020 21:34:04 +0200 Subject: [PATCH 008/138] The length of the hook is derived from spacing --- src/libslic3r/Fill/FillAdaptive.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index b55a59c3e..de6a596c5 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -781,6 +781,10 @@ static void connect_lines_with_hooks(Polylines &&lines, Polylines &polylines_out if (!pl.empty()) polylines_out.emplace_back(std::move(pl)); } +coord_t get_hook_length(const double spacing) { + return scale_(spacing) * 5; +} + void Filler::_fill_surface_single( const FillParams & params, unsigned int thickness_layers, @@ -837,13 +841,21 @@ void Filler::_fill_surface_single( } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ + coord_t hook_length = get_hook_length(this->spacing); Polylines all_polylines_with_hooks; - connect_lines_with_hooks(std::move(all_polylines), all_polylines_with_hooks, this->spacing, int(scale_(2.))); + connect_lines_with_hooks(std::move(all_polylines), all_polylines_with_hooks, this->spacing, hook_length); + +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + { + static int iRun = 0; + export_infill_lines_to_svg(expolygon, all_polylines_with_hooks, debug_out_path("FillAdaptive-hooks-%d.svg", iRun ++)); + } +#endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ if (params.dont_connect || all_polylines_with_hooks.size() <= 1) append(polylines_out, std::move(all_polylines_with_hooks)); else - connect_infill(chain_polylines(std::move(all_polylines_with_hooks)), expolygon, polylines_out, this->spacing, params, int(scale_(2.))); + connect_infill(chain_polylines(std::move(all_polylines_with_hooks)), expolygon, polylines_out, this->spacing, params, hook_length); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { From 53975eeaa34e919e1f91234cb9680b7daa46ce31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= <hejl.lukas@gmail.com> Date: Sat, 10 Oct 2020 22:25:51 +0200 Subject: [PATCH 009/138] Rework of hooks adding --- src/libslic3r/Fill/FillAdaptive.cpp | 130 +++++++++++++++++++++------- src/libslic3r/Line.cpp | 7 ++ src/libslic3r/Line.hpp | 2 + 3 files changed, 109 insertions(+), 30 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index de6a596c5..c0583fa9a 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -621,27 +621,99 @@ static Line create_offset_line(const Line &line_to_offset, const Intersection &i return offset_line; }; -static void connect_lines_with_hooks(Polylines &&lines, Polylines &polylines_out, const double spacing, const int hook_length) +namespace bg = boost::geometry; +namespace bgm = boost::geometry::model; +namespace bgi = boost::geometry::index; + +// int64_t is needed because for coord_t bgi::intersects throws "bad numeric conversion: positive overflow" +using rtree_point_t = bgm::point<int64_t, 2, boost::geometry::cs::cartesian>; +using rtree_segment_t = bgm::segment<rtree_point_t>; +using rtree_t = bgi::rtree<std::pair<rtree_segment_t, size_t>, bgi::rstar<16, 4>>; + +static void add_hook(const Intersection &intersection, const Line &hook_line, const double scaled_spacing, const int hook_length, const rtree_t &rtree) { - namespace bgm = boost::geometry::model; - namespace bgi = boost::geometry::index; + Vec2d hook_vector_norm = hook_line.vector().cast<double>().normalized(); + Vector hook_vector = (hook_length * hook_vector_norm).cast<coord_t>(); + Line hook_line_offset = create_offset_line(hook_line, intersection, scaled_spacing); - using rtree_point_t = bgm::point<coord_t, 2, boost::geometry::cs::cartesian>; - using rtree_segment_t = bgm::segment<rtree_point_t>; - using rtree_t = bgi::rtree<std::pair<rtree_segment_t, size_t>, bgi::rstar<16, 4>>; + Point intersection_point; + bool intersection_found = intersection.intersect_line.intersection(hook_line_offset, &intersection_point); + assert(intersection_found); - std::vector<std::pair<rtree_segment_t, size_t>> rtee_segments; - size_t poly_idx = 0; - for (const Polyline &poly : lines) { - rtee_segments.emplace_back(rtree_segment_t(rtree_point_t(poly.points.front().x(), poly.points.front().y()), - rtree_point_t(poly.points.back().x(), poly.points.back().y())), - poly_idx); - ++poly_idx; + Line hook_forward(intersection_point, intersection_point + hook_vector); + Line hook_backward(intersection_point, intersection_point - hook_vector); + Line hook_forward_o = hook_forward, hook_backward_o = hook_backward; + hook_forward_o.offset(-SCALED_EPSILON); + hook_backward_o.offset(-SCALED_EPSILON); + + std::vector<std::pair<rtree_segment_t, size_t>> hook_intersections; + rtree.query(bgi::intersects(rtree_segment_t(rtree_point_t(hook_forward_o.a.x(), hook_forward_o.a.y()), + rtree_point_t(hook_forward_o.b.x(), hook_forward_o.b.y()))), + std::back_inserter(hook_intersections)); + + auto max_hook_length = [&hook_intersections, &hook_length](const Line &hook) { + coord_t max_length = hook_length; + for (const auto &hook_intersection : hook_intersections) { + const rtree_segment_t &segment = hook_intersection.first; + double dist = Line::distance_to(hook.a, Point(bg::get<0, 0>(segment), bg::get<0, 1>(segment)), + Point(bg::get<1, 0>(segment), bg::get<1, 1>(segment))); + max_length = std::min(coord_t(dist), max_length); + } + return max_length; + }; + + Line hook_final; + if (hook_intersections.empty()) { + hook_final = std::move(hook_forward); + } else { + // There is not enough space for the hook, try another direction + coord_t hook_forward_max_length = max_hook_length(hook_forward); + hook_intersections.clear(); + rtree.query(bgi::intersects(rtree_segment_t(rtree_point_t(hook_backward_o.a.x(), hook_backward_o.a.y()), + rtree_point_t(hook_backward_o.b.x(), hook_backward_o.b.y()))), + std::back_inserter(hook_intersections)); + + if (hook_intersections.empty()) { + hook_final = std::move(hook_backward); + } else { + // There is not enough space for hook in both directions, shrink the hook + coord_t hook_backward_max_length = max_hook_length(hook_backward); + if (hook_forward_max_length > hook_backward_max_length) { + Vector hook_vector_reduced = (hook_forward_max_length * hook_vector_norm).cast<coord_t>(); + hook_final = Line(intersection_point, intersection_point + hook_vector_reduced); + } else { + Vector hook_vector_reduced = (hook_backward_max_length * hook_vector_norm).cast<coord_t>(); + hook_final = Line(intersection_point, intersection_point - hook_vector_reduced); + } + } + } + + if (intersection.forward) { + intersection.intersect_pl->points.front() = hook_final.a; + intersection.intersect_pl->points.emplace(intersection.intersect_pl->points.begin(), hook_final.b); + } else { + intersection.intersect_pl->points.back() = hook_final.a; + intersection.intersect_pl->points.emplace_back(hook_final.b); + } +} + +static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_out, const ExPolygon &boundary, const double spacing, const int hook_length) +{ + rtree_t rtree; + size_t poly_idx = 0; + for (const Polyline &poly : lines) { + rtree.insert(std::make_pair(rtree_segment_t(rtree_point_t(poly.points.front().x(), poly.points.front().y()), + rtree_point_t(poly.points.back().x(), poly.points.back().y())), + poly_idx++)); } - rtree_t rtree(rtee_segments.begin(), rtee_segments.end()); std::vector<Intersection> intersections; + coord_t scaled_spacing = scale_(spacing); for (Polyline &line : lines) { + // Lines shorter than spacing are skipped because it is needed to shrink a line by the value of spacing. + // A shorter line than spacing could produce a degenerate polyline. + if (line.length() <= scaled_spacing) continue; + Point front_point = line.points.front(); Point back_point = line.points.back(); std::vector<std::pair<rtree_segment_t, size_t>> closest; @@ -664,6 +736,13 @@ static void connect_lines_with_hooks(Polylines &&lines, Polylines &polylines_out std::vector<size_t> merged_with(lines.size()); std::iota(merged_with.begin(), merged_with.end(), 0); + // Appends the boundary polygon with all holes to rtee for detection if hooks not crossing the boundary + for (const Line &line : boundary.contour.lines()) + rtree.insert(std::make_pair(rtree_segment_t(rtree_point_t(line.a.x(), line.a.y()), rtree_point_t(line.b.x(), line.b.y())), poly_idx++)); + for (const Polygon &polygon : boundary.holes) + for (const Line &line : polygon.lines()) + rtree.insert(std::make_pair(rtree_segment_t(rtree_point_t(line.a.x(), line.a.y()), rtree_point_t(line.b.x(), line.b.y())), poly_idx++)); + auto get_merged_index = [&merged_with](size_t polyline_idx) { for (size_t last = polyline_idx;;) { size_t lower = merged_with[last]; @@ -700,8 +779,8 @@ static void connect_lines_with_hooks(Polylines &&lines, Polylines &polylines_out if (first_i.used || first_i.intersect_pl->points.size() == 0) continue; + // A line between two intersections points Line intersection_line(first_i.closest_point, nearest_i.closest_point); - Point hook_vector = (hook_length * intersection_line.vector().cast<double>().normalized()).cast<coord_t>(); Line offset_line = create_offset_line(intersection_line, first_i, scale_(spacing)); double intersection_line_length = intersection_line.length(); @@ -762,14 +841,7 @@ static void connect_lines_with_hooks(Polylines &&lines, Polylines &polylines_out first_i.used = true; nearest_i.used = true; } else { - if (first_i.forward) { - first_i.intersect_pl->points.front() = first_i_point; - first_i.intersect_pl->points.emplace(first_i.intersect_pl->points.begin(), first_i_point + hook_vector); - } else { - first_i.intersect_pl->points.back() = first_i_point; - first_i.intersect_pl->points.emplace_back(first_i_point + hook_vector); - } - + add_hook(first_i, intersection_line, scale_(spacing), hook_length, rtree); first_i.used = true; } } @@ -781,12 +853,10 @@ static void connect_lines_with_hooks(Polylines &&lines, Polylines &polylines_out if (!pl.empty()) polylines_out.emplace_back(std::move(pl)); } -coord_t get_hook_length(const double spacing) { - return scale_(spacing) * 5; -} +coord_t get_hook_length(const double spacing) { return scale_(spacing) * 5; } void Filler::_fill_surface_single( - const FillParams & params, + const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, ExPolygon &expolygon, @@ -841,14 +911,14 @@ void Filler::_fill_surface_single( } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ - coord_t hook_length = get_hook_length(this->spacing); + coord_t hook_length = get_hook_length(this->spacing); Polylines all_polylines_with_hooks; - connect_lines_with_hooks(std::move(all_polylines), all_polylines_with_hooks, this->spacing, hook_length); + connect_lines_using_hooks(std::move(all_polylines), all_polylines_with_hooks, expolygon, this->spacing, hook_length); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { static int iRun = 0; - export_infill_lines_to_svg(expolygon, all_polylines_with_hooks, debug_out_path("FillAdaptive-hooks-%d.svg", iRun ++)); + export_infill_lines_to_svg(expolygon, all_polylines_with_hooks, debug_out_path("FillAdaptive-hooks-%d.svg", iRun++)); } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ diff --git a/src/libslic3r/Line.cpp b/src/libslic3r/Line.cpp index 0c43154a9..abea80f5f 100644 --- a/src/libslic3r/Line.cpp +++ b/src/libslic3r/Line.cpp @@ -100,6 +100,13 @@ bool Line::clip_with_bbox(const BoundingBox &bbox) return result; } +void Line::offset(double offset) +{ + Vector offset_vector = (offset * this->vector().cast<double>().normalized()).cast<coord_t>(); + this->a -= offset_vector; + this->b += offset_vector; +} + Vec3d Linef3::intersect_plane(double z) const { auto v = (this->b - this->a).cast<double>(); diff --git a/src/libslic3r/Line.hpp b/src/libslic3r/Line.hpp index 980303fed..2cc8139f1 100644 --- a/src/libslic3r/Line.hpp +++ b/src/libslic3r/Line.hpp @@ -75,6 +75,8 @@ public: double ccw(const Point& point) const { return point.ccw(*this); } // Clip a line with a bounding box. Returns false if the line is completely outside of the bounding box. bool clip_with_bbox(const BoundingBox &bbox); + // Resize a line from both sides by the offset. + void offset(double offset); static inline double distance_to_squared(const Point &point, const Point &a, const Point &b) { return line_alg::distance_to_squared(Line{a, b}, Vec<2, coord_t>{point}); } static double distance_to(const Point &point, const Point &a, const Point &b) { return sqrt(distance_to_squared(point, a, b)); } From cd2881e14e25edba51b86853b8e4f1204ca05fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= <hejl.lukas@gmail.com> Date: Sat, 10 Oct 2020 22:38:22 +0200 Subject: [PATCH 010/138] Orient hooks in the direction of the adjacent extrusion line --- src/libslic3r/Fill/FillAdaptive.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index c0583fa9a..8080f16e7 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -769,10 +769,18 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou } } - if (intersect_line.size() <= 1) continue; + assert(!intersect_line.empty()); + if (intersect_line.size() <= 1) { + Intersection &first_i = intersect_line.front().first; + if (first_i.used || first_i.intersect_pl->points.size() == 0) continue; + add_hook(first_i, first_i.closest_line, scale_(spacing), hook_length, rtree); + first_i.used = true; + continue; + } + + assert(intersect_line.size() >= 2); std::sort(intersect_line.begin(), intersect_line.end(), [](const auto &i1, const auto &i2) { return i1.second < i2.second; }); - for (size_t first_idx = 0; first_idx < intersect_line.size(); ++first_idx) { Intersection &first_i = intersect_line[first_idx].first; Intersection &nearest_i = *get_nearest_intersection(intersect_line, first_idx); @@ -841,7 +849,7 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou first_i.used = true; nearest_i.used = true; } else { - add_hook(first_i, intersection_line, scale_(spacing), hook_length, rtree); + add_hook(first_i, first_i.closest_line, scale_(spacing), hook_length, rtree); first_i.used = true; } } From de242f48cb05ea6ed85ccd240747c81e72eae805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= <hejl.lukas@gmail.com> Date: Sun, 11 Oct 2020 03:46:11 +0200 Subject: [PATCH 011/138] Refactoring of the adaptive infill using hooks --- src/libslic3r/Fill/FillAdaptive.cpp | 135 ++++++++++++++++------------ 1 file changed, 80 insertions(+), 55 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 8080f16e7..73dc0845b 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -565,33 +565,43 @@ static Matrix2d rotation_matrix_from_vector(const Point &vector) struct Intersection { + // Index of the closest line to intersect_line size_t closest_line_idx; + // Copy of closest line to intersect_point, used for storing original line in an unchanged state Line closest_line; - Point closest_point; + // Point for which is computed closest line (closest_line) + Point intersect_point; + // Index of the polyline from which is computed closest_line size_t intersect_pl_idx; + // Pointer to the polyline from which is computed closest_line Polyline *intersect_pl; + // The line for which is computed closest line from intersect_point to closest_line Line intersect_line; + // Indicate if intersect_point is the first or the last point of intersect_line bool forward; + // Indication if this intersection has been proceed bool used = false; Intersection(const size_t closest_line_idx, - const Line & closest_line, - const Point &closest_point, + const Line &closest_line, + const Point &intersect_point, size_t intersect_pl_idx, - Polyline * intersect_pl, - const Line & intersect_line, + Polyline *intersect_pl, + const Line &intersect_line, bool forward) : closest_line_idx(closest_line_idx) , closest_line(closest_line) - , closest_point(closest_point) + , intersect_point(intersect_point) , intersect_pl_idx(intersect_pl_idx) , intersect_pl(intersect_pl) , intersect_line(intersect_line) - , forward(forward){}; + , forward(forward) + {} }; static inline Intersection *get_nearest_intersection(std::vector<std::pair<Intersection, double>> &intersect_line, const size_t first_idx) { + assert(intersect_line.size() >= 2); if (first_idx == 0) return &intersect_line[first_idx + 1].first; else if (first_idx == (intersect_line.size() - 1)) @@ -600,8 +610,9 @@ static inline Intersection *get_nearest_intersection(std::vector<std::pair<Inter return &intersect_line[first_idx - 1].first; else return &intersect_line[first_idx + 1].first; -}; +} +// Create a line based on line_to_offset translated it in the direction of the intersection line (intersection.intersect_line) static Line create_offset_line(const Line &line_to_offset, const Intersection &intersection, const double scaled_spacing) { Matrix2d rotation = rotation_matrix_from_vector(line_to_offset.vector()); @@ -612,12 +623,9 @@ static Line create_offset_line(const Line &line_to_offset, const Intersection &i if ((rotation * furthest_point).y() >= (rotation * offset_line_point).y()) offset_vector *= -1; Line offset_line = line_to_offset; - Point line_extension = (1000000. * line_to_offset.vector().cast<double>().normalized()).cast<coord_t>(); - offset_line.translate(offset_vector.x(), offset_vector.y()); - offset_line.a -= line_extension; - offset_line.b += line_extension; - + // Extend the line by small value to guarantee a collision with adjacent lines + offset_line.offset(1000000); return offset_line; }; @@ -630,6 +638,7 @@ using rtree_point_t = bgm::point<int64_t, 2, boost::geometry::cs::cartesian>; using rtree_segment_t = bgm::segment<rtree_point_t>; using rtree_t = bgi::rtree<std::pair<rtree_segment_t, size_t>, bgi::rstar<16, 4>>; +// Create a hook based on hook_line and append it to the begin or end of the polyline in the intersection static void add_hook(const Intersection &intersection, const Line &hook_line, const double scaled_spacing, const int hook_length, const rtree_t &rtree) { Vec2d hook_vector_norm = hook_line.vector().cast<double>().normalized(); @@ -642,13 +651,18 @@ static void add_hook(const Intersection &intersection, const Line &hook_line, co Line hook_forward(intersection_point, intersection_point + hook_vector); Line hook_backward(intersection_point, intersection_point - hook_vector); - Line hook_forward_o = hook_forward, hook_backward_o = hook_backward; - hook_forward_o.offset(-SCALED_EPSILON); - hook_backward_o.offset(-SCALED_EPSILON); + + auto filter_itself = [&intersection](const auto &item) { + const rtree_segment_t &seg = item.first; + const Point &i_point = intersection.intersect_point; + return !((i_point.x() == bg::get<0, 0>(seg) && i_point.y() == bg::get<0, 1>(seg)) || + (i_point.x() == bg::get<1, 0>(seg) && i_point.y() == bg::get<1, 1>(seg))); + }; std::vector<std::pair<rtree_segment_t, size_t>> hook_intersections; - rtree.query(bgi::intersects(rtree_segment_t(rtree_point_t(hook_forward_o.a.x(), hook_forward_o.a.y()), - rtree_point_t(hook_forward_o.b.x(), hook_forward_o.b.y()))), + rtree.query(bgi::intersects( + rtree_segment_t(rtree_point_t(hook_forward.a.x(), hook_forward.a.y()), rtree_point_t(hook_forward.b.x(), hook_forward.b.y()))) && + bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); auto max_hook_length = [&hook_intersections, &hook_length](const Line &hook) { @@ -669,8 +683,9 @@ static void add_hook(const Intersection &intersection, const Line &hook_line, co // There is not enough space for the hook, try another direction coord_t hook_forward_max_length = max_hook_length(hook_forward); hook_intersections.clear(); - rtree.query(bgi::intersects(rtree_segment_t(rtree_point_t(hook_backward_o.a.x(), hook_backward_o.a.y()), - rtree_point_t(hook_backward_o.b.x(), hook_backward_o.b.y()))), + rtree.query(bgi::intersects(rtree_segment_t(rtree_point_t(hook_backward.a.x(), hook_backward.a.y()), + rtree_point_t(hook_backward.b.x(), hook_backward.b.y()))) && + bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); if (hook_intersections.empty()) { @@ -709,7 +724,8 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou std::vector<Intersection> intersections; coord_t scaled_spacing = scale_(spacing); - for (Polyline &line : lines) { + for (size_t line_idx = 0; line_idx < lines.size(); ++line_idx) { + Polyline &line = lines[line_idx]; // Lines shorter than spacing are skipped because it is needed to shrink a line by the value of spacing. // A shorter line than spacing could produce a degenerate polyline. if (line.length() <= scaled_spacing) continue; @@ -718,16 +734,18 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou Point back_point = line.points.back(); std::vector<std::pair<rtree_segment_t, size_t>> closest; - closest.reserve(2); - rtree.query(bgi::nearest(rtree_point_t(front_point.x(), front_point.y()), 2), std::back_inserter(closest)); + auto filter_itself = [line_idx](const auto &item) { return item.second != line_idx; }; + + // Find the nearest line from the start point of the line. + rtree.query(bgi::nearest(rtree_point_t(front_point.x(), front_point.y()), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); if (((Line) lines[closest[0].second]).distance_to(front_point) <= 1000) - intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], front_point, &line - lines.data(), &line, (Line) line, true); + intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], front_point, line_idx, &line, (Line) line, true); closest.clear(); - closest.reserve(2); - rtree.query(bgi::nearest(rtree_point_t(back_point.x(), back_point.y()), 2), std::back_inserter(closest)); + // Find the nearest line from the end point of the line + rtree.query(bgi::nearest(rtree_point_t(back_point.x(), back_point.y()), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); if (((Line) lines[closest[0].second]).distance_to(back_point) <= 1000) - intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], back_point, &line - lines.data(), &line, (Line) line, false); + intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], back_point, line_idx, &line, (Line) line, false); } std::sort(intersections.begin(), intersections.end(), @@ -736,7 +754,7 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou std::vector<size_t> merged_with(lines.size()); std::iota(merged_with.begin(), merged_with.end(), 0); - // Appends the boundary polygon with all holes to rtee for detection if hooks not crossing the boundary + // Appends the boundary polygon with all holes to rtree for detection if hooks not crossing the boundary for (const Line &line : boundary.contour.lines()) rtree.insert(std::make_pair(rtree_segment_t(rtree_point_t(line.a.x(), line.a.y()), rtree_point_t(line.b.x(), line.b.y())), poly_idx++)); for (const Polygon &polygon : boundary.holes) @@ -760,19 +778,20 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou for (size_t min_idx = 0; min_idx < intersections.size(); ++min_idx) { std::vector<std::pair<Intersection, double>> intersect_line; Matrix2d rotation = rotation_matrix_from_vector(intersections[min_idx].closest_line.vector()); - intersect_line.emplace_back(intersections[min_idx], (rotation * intersections[min_idx].closest_point.cast<double>()).x()); - + intersect_line.emplace_back(intersections[min_idx], (rotation * intersections[min_idx].intersect_point.cast<double>()).x()); + // All the nearest points on the same line are projected on this line. Because of it, it can easily find the nearest point for (size_t max_idx = min_idx + 1; max_idx < intersections.size(); ++max_idx) { - if (intersections[min_idx].closest_line_idx == intersections[max_idx].closest_line_idx) { - intersect_line.emplace_back(intersections[max_idx], (rotation * intersections[max_idx].closest_point.cast<double>()).x()); - min_idx = max_idx; - } + if (intersections[min_idx].closest_line_idx != intersections[max_idx].closest_line_idx) break; + + intersect_line.emplace_back(intersections[max_idx], (rotation * intersections[max_idx].intersect_point.cast<double>()).x()); + min_idx = max_idx; } assert(!intersect_line.empty()); if (intersect_line.size() <= 1) { + // On the adjacent line is only one intersection Intersection &first_i = intersect_line.front().first; - if (first_i.used || first_i.intersect_pl->points.size() == 0) continue; + if (first_i.used || first_i.intersect_pl->points.empty()) continue; add_hook(first_i, first_i.closest_line, scale_(spacing), hook_length, rtree); first_i.used = true; @@ -785,59 +804,65 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou Intersection &first_i = intersect_line[first_idx].first; Intersection &nearest_i = *get_nearest_intersection(intersect_line, first_idx); - if (first_i.used || first_i.intersect_pl->points.size() == 0) continue; + // The intersection has been processer or polyline has been merge to another polyline + if (first_i.used || first_i.intersect_pl->points.empty()) continue; // A line between two intersections points - Line intersection_line(first_i.closest_point, nearest_i.closest_point); + Line intersection_line(first_i.intersect_point, nearest_i.intersect_point); Line offset_line = create_offset_line(intersection_line, first_i, scale_(spacing)); double intersection_line_length = intersection_line.length(); - { - nearest_i.intersect_pl_idx = get_merged_index(nearest_i.intersect_pl_idx); - nearest_i.intersect_pl = &lines[nearest_i.intersect_pl_idx]; + // Update the polyline index to index which is merged + nearest_i.intersect_pl_idx = get_merged_index(nearest_i.intersect_pl_idx); + nearest_i.intersect_pl = &lines[nearest_i.intersect_pl_idx]; - if (!nearest_i.used && nearest_i.intersect_pl->points.size() != 0) - nearest_i.forward = (nearest_i.intersect_pl->points.front() == nearest_i.closest_point); - } + // The nearest intersection has been processer or polyline has been merge to another polyline + if (!nearest_i.used && !nearest_i.intersect_pl->points.empty()) + nearest_i.forward = (nearest_i.intersect_pl->points.front() == nearest_i.intersect_point); + // Check if both intersections lie on the offset_line and simultaneously get their points of intersecting. + // These points are used as start and end of the hook Point first_i_point, nearest_i_point; if (first_i.intersect_line.intersection(offset_line, &first_i_point) && nearest_i.intersect_line.intersection(offset_line, &nearest_i_point)) { - if (!nearest_i.used && nearest_i.intersect_pl->points.size() != 0 && intersection_line_length <= 2 * hook_length) { + // Both intersections are so close that their polylines can be connected + if (!nearest_i.used && !nearest_i.intersect_pl->points.empty() && intersection_line_length <= 2 * hook_length) { if (first_i.intersect_pl_idx == nearest_i.intersect_pl_idx) { + // Both intersections are on the same polyline if (!first_i.forward) { std::swap(first_i_point, nearest_i_point); } first_i.intersect_pl->points.front() = first_i_point; first_i.intersect_pl->points.back() = nearest_i_point; first_i.intersect_pl->points.emplace(first_i.intersect_pl->points.begin(), nearest_i_point); } else { + // Both intersections are on different polylines Points merge_polyline_points; - size_t first_polyline_lenght = first_i.intersect_pl->points.size(); - size_t short_polyline_lenght = nearest_i.intersect_pl->points.size(); - merge_polyline_points.reserve(first_polyline_lenght + short_polyline_lenght); + size_t first_polyline_size = first_i.intersect_pl->points.size(); + size_t nearest_polyline_size = nearest_i.intersect_pl->points.size(); + merge_polyline_points.reserve(first_polyline_size + nearest_polyline_size); if (first_i.forward) { if (nearest_i.forward) for (auto it = nearest_i.intersect_pl->points.rbegin(); it != nearest_i.intersect_pl->points.rend(); ++it) merge_polyline_points.emplace_back(*it); else - for (auto it = nearest_i.intersect_pl->points.begin(); it != nearest_i.intersect_pl->points.end(); ++it) - merge_polyline_points.emplace_back(*it); + for (const Point &point : nearest_i.intersect_pl->points) + merge_polyline_points.emplace_back(point); append(merge_polyline_points, std::move(first_i.intersect_pl->points)); - merge_polyline_points[short_polyline_lenght - 1] = nearest_i_point; - merge_polyline_points[short_polyline_lenght] = first_i_point; + merge_polyline_points[nearest_polyline_size - 1] = nearest_i_point; + merge_polyline_points[nearest_polyline_size] = first_i_point; } else { append(merge_polyline_points, std::move(first_i.intersect_pl->points)); if (nearest_i.forward) - for (auto it = nearest_i.intersect_pl->points.begin(); it != nearest_i.intersect_pl->points.end(); ++it) - merge_polyline_points.emplace_back(*it); + for (const Point &point : nearest_i.intersect_pl->points) + merge_polyline_points.emplace_back(point); else for (auto it = nearest_i.intersect_pl->points.rbegin(); it != nearest_i.intersect_pl->points.rend(); ++it) merge_polyline_points.emplace_back(*it); - merge_polyline_points[first_polyline_lenght - 1] = first_i_point; - merge_polyline_points[first_polyline_lenght] = nearest_i_point; + merge_polyline_points[first_polyline_size - 1] = first_i_point; + merge_polyline_points[first_polyline_size] = nearest_i_point; } merged_with[nearest_i.intersect_pl_idx] = merged_with[first_i.intersect_pl_idx]; From b8d574093dfdfee3a2a0b7bf85e5a617c5d1c0f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= <hejl.lukas@gmail.com> Date: Sun, 11 Oct 2020 15:45:50 +0200 Subject: [PATCH 012/138] Small rework of connecting infill with perimeters using hooks Hooks are preferably generated in the direction of printed perimeters. Small refactoring of the algorithm. Some parts of the algorithm are better documented. --- src/libslic3r/Fill/FillBase.cpp | 66 ++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index d68c770ab..85f37de32 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -833,6 +833,7 @@ void mark_boundary_segments_touching_infill( } } +#if 0 static double compute_distance_to_consumed_point(const std::vector<Points> & boundary, const std::vector<std::vector<ContourPointData>> &boundary_data, size_t contour_idx, @@ -855,20 +856,24 @@ static double compute_distance_to_consumed_point(const std::vector<Points> & return total_distance; } +#endif -static std::pair<Points, double> get_hook_path(const std::vector<Points> & boundary, +// Returns possible path for an added hook. The path shrinks to max_lenght, by the closest consumed point or by the closest point in not_connected +// Also returns not shrink path's length to closest consumed point or closest point in not_connected +static std::pair<Points, double> get_hook_path(const std::vector<Points> &boundary, const std::vector<std::vector<ContourPointData>> &boundary_data, size_t contour_idx, size_t point_index, bool forward, int hook_length, - std::vector<Point> & not_connected) + std::unordered_set<Point, PointHash> ¬_connected) { double total_distance = 0; Points points; points.emplace_back(boundary[contour_idx][point_index]); + // Follow the path around the boundary to consumed point or to the point in not_connected do { if (forward) point_index = (point_index == (boundary[contour_idx].size() - 1)) ? 0 : (point_index + 1); @@ -879,8 +884,9 @@ static std::pair<Points, double> get_hook_path(const std::vector<Points> & total_distance += (successor - points.back()).cast<double>().norm(); points.emplace_back(successor); } while (!boundary_data[contour_idx][point_index].point_consumed && total_distance < hook_length && - std::find(not_connected.begin(), not_connected.end(), points.back()) == not_connected.end()); + not_connected.find(points.back()) == not_connected.end()); + // If the path is longer than hook_length, shrink it to this its length if (total_distance > hook_length) { Vec2d vector = (points.back() - points[points.size() - 2]).cast<double>(); double vector_length = vector.norm(); @@ -1081,46 +1087,46 @@ void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_ }; if (hook_length != 0) { - std::vector<Point> not_connect_points; + // Create a set of points which has not been connected by the previous part of the algorithm + std::unordered_set<Point, PointHash> not_connect_points; for (const std::pair<size_t, size_t> &contour_point : map_infill_end_point_to_boundary) if (contour_point.first != boundary_idx_unconnected && !boundary_data[contour_point.first][contour_point.second].point_consumed) - not_connect_points.emplace_back(boundary[contour_point.first][contour_point.second]); + not_connect_points.emplace(boundary[contour_point.first][contour_point.second]); for (size_t endpoint_idx = 0; endpoint_idx < map_infill_end_point_to_boundary.size(); ++endpoint_idx) { - Polyline & polyline = infill_ordered[get_merged_index(endpoint_idx / 2)]; + Polyline &polyline = infill_ordered[get_merged_index(endpoint_idx / 2)]; const std::pair<size_t, size_t> &contour_point = map_infill_end_point_to_boundary[endpoint_idx]; - if (contour_point.first != boundary_idx_unconnected && - !boundary_data[contour_point.first][contour_point.second].point_consumed) { - Point boundary_point = boundary[contour_point.first][contour_point.second]; - auto [points_forward, total_length_forward] = get_hook_path(boundary, boundary_data, contour_point.first, - contour_point.second, true, hook_length, not_connect_points); - auto [points_backward, total_length_backward] = get_hook_path(boundary, boundary_data, contour_point.first, - contour_point.second, false, hook_length, not_connect_points); - - Points points; - if (total_length_forward < hook_length && total_length_backward < hook_length) { - continue; - } else if (total_length_forward < total_length_backward && total_length_forward >= hook_length) { - points = std::move(points_forward); - } else if (total_length_backward < total_length_forward && total_length_backward >= hook_length) { - points = std::move(points_backward); - } else if (total_length_forward > total_length_backward) { - points = std::move(points_forward); + if (contour_point.first != boundary_idx_unconnected && !boundary_data[contour_point.first][contour_point.second].point_consumed) { + Point boundary_point = boundary[contour_point.first][contour_point.second]; + auto [points_forward, forward_free_length] = get_hook_path(boundary, boundary_data, contour_point.first, contour_point.second, true, + hook_length, not_connect_points); + Points hook_points; + // Check if the hook could fit in space in the direction of perimeters + if (forward_free_length >= hook_length) { + hook_points = std::move(points_forward); } else { - points = std::move(points_backward); + auto [points_backward, backward_free_length] = get_hook_path(boundary, boundary_data, contour_point.first, contour_point.second, + false, hook_length, not_connect_points); + // Check if the hook could fit in space in the opposite direction of perimeters. + // In this direction could be another hook. Because of it, it is required free space of size at least 2 * hook_length + if (backward_free_length >= (2 * hook_length)) + hook_points = std::move(points_backward); + else + continue; } + // Identify if the front point or back point of the polyline is touching the boundary if ((boundary_point - polyline.points.front()).cast<double>().squaredNorm() <= (SCALED_EPSILON * SCALED_EPSILON)) { - Points merge_points; - merge_points.reserve(polyline.points.size() + points.size() - 1); + Points merged_points; + merged_points.reserve(polyline.points.size() + hook_points.size() - 1); - for (auto it = points.rbegin(); it != points.rend() - 1; ++it) merge_points.emplace_back(*it); + for (auto it = hook_points.rbegin(); it != hook_points.rend() - 1; ++it) merged_points.emplace_back(*it); - append(merge_points, std::move(polyline.points)); - polyline.points = std::move(merge_points); + append(merged_points, std::move(polyline.points)); + polyline.points = std::move(merged_points); } else { - for (auto it = points.begin() + 1; it != points.end(); ++it) polyline.points.emplace_back(*it); + for (auto it = hook_points.begin() + 1; it != hook_points.end(); ++it) polyline.points.emplace_back(*it); } } } From caafcf43b04d1b2783538b18854a49f748d79410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= <hejl.lukas@gmail.com> Date: Sun, 11 Oct 2020 23:31:59 +0200 Subject: [PATCH 013/138] Fix compiler warning and fix a bug in connecting infill using hooks --- src/libslic3r/Fill/FillAdaptive.cpp | 47 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 73dc0845b..cdc415dee 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -295,7 +295,7 @@ std::pair<double, double> adaptive_fill_line_spacing(const PrintObject &print_ob bool build_octree = false; const std::vector<double> &nozzle_diameters = print_object.print()->config().nozzle_diameter.values; double max_nozzle_diameter = *std::max_element(nozzle_diameters.begin(), nozzle_diameters.end()); - double default_infill_extrusion_width = Flow::auto_extrusion_width(FlowRole::frInfill, max_nozzle_diameter); + double default_infill_extrusion_width = Flow::auto_extrusion_width(FlowRole::frInfill, float(max_nozzle_diameter)); for (const PrintRegion *region : print_object.print()->regions()) { const PrintRegionConfig &config = region->config(); bool nonempty = config.fill_density > 0; @@ -577,7 +577,7 @@ struct Intersection Polyline *intersect_pl; // The line for which is computed closest line from intersect_point to closest_line Line intersect_line; - // Indicate if intersect_point is the first or the last point of intersect_line + // Indicate if intersect_point is the first or the last point of intersect_pl bool forward; // Indication if this intersection has been proceed bool used = false; @@ -618,7 +618,7 @@ static Line create_offset_line(const Line &line_to_offset, const Intersection &i Matrix2d rotation = rotation_matrix_from_vector(line_to_offset.vector()); Vec2d offset_vector = ((scaled_spacing / 2.) * line_to_offset.normal().cast<double>().normalized()); Vec2d offset_line_point = line_to_offset.a.cast<double>(); - Vec2d furthest_point = (intersection.forward ? intersection.intersect_line.b : intersection.intersect_line.a).cast<double>(); + Vec2d furthest_point = (intersection.intersect_point == intersection.intersect_line.a ? intersection.intersect_line.b : intersection.intersect_line.a).cast<double>(); if ((rotation * furthest_point).y() >= (rotation * offset_line_point).y()) offset_vector *= -1; @@ -633,8 +633,8 @@ namespace bg = boost::geometry; namespace bgm = boost::geometry::model; namespace bgi = boost::geometry::index; -// int64_t is needed because for coord_t bgi::intersects throws "bad numeric conversion: positive overflow" -using rtree_point_t = bgm::point<int64_t, 2, boost::geometry::cs::cartesian>; +// float is needed because for coord_t bgi::intersects throws "bad numeric conversion: positive overflow" +using rtree_point_t = bgm::point<float, 2, boost::geometry::cs::cartesian>; using rtree_segment_t = bgm::segment<rtree_point_t>; using rtree_t = bgi::rtree<std::pair<rtree_segment_t, size_t>, bgi::rstar<16, 4>>; @@ -655,8 +655,8 @@ static void add_hook(const Intersection &intersection, const Line &hook_line, co auto filter_itself = [&intersection](const auto &item) { const rtree_segment_t &seg = item.first; const Point &i_point = intersection.intersect_point; - return !((i_point.x() == bg::get<0, 0>(seg) && i_point.y() == bg::get<0, 1>(seg)) || - (i_point.x() == bg::get<1, 0>(seg) && i_point.y() == bg::get<1, 1>(seg))); + return !((float(i_point.x()) == bg::get<0, 0>(seg) && float(i_point.y()) == bg::get<0, 1>(seg)) || + (float(i_point.x()) == bg::get<1, 0>(seg) && float(i_point.y()) == bg::get<1, 1>(seg))); }; std::vector<std::pair<rtree_segment_t, size_t>> hook_intersections; @@ -723,12 +723,12 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou } std::vector<Intersection> intersections; - coord_t scaled_spacing = scale_(spacing); + coord_t scaled_spacing = coord_t(scale_(spacing)); for (size_t line_idx = 0; line_idx < lines.size(); ++line_idx) { Polyline &line = lines[line_idx]; // Lines shorter than spacing are skipped because it is needed to shrink a line by the value of spacing. // A shorter line than spacing could produce a degenerate polyline. - if (line.length() <= scaled_spacing) continue; + if (line.length() <= (scaled_spacing + SCALED_EPSILON)) continue; Point front_point = line.points.front(); Point back_point = line.points.back(); @@ -761,18 +761,22 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou for (const Line &line : polygon.lines()) rtree.insert(std::make_pair(rtree_segment_t(rtree_point_t(line.a.x(), line.a.y()), rtree_point_t(line.b.x(), line.b.y())), poly_idx++)); - auto get_merged_index = [&merged_with](size_t polyline_idx) { - for (size_t last = polyline_idx;;) { + auto update_merged_polyline = [&lines, &merged_with](Intersection &intersection) { + // Update the polyline index to index which is merged + for (size_t last = intersection.intersect_pl_idx;;) { size_t lower = merged_with[last]; if (lower == last) { - merged_with[polyline_idx] = lower; - polyline_idx = lower; + merged_with[intersection.intersect_pl_idx] = lower; + intersection.intersect_pl_idx = lower; break; } last = lower; } - return polyline_idx; + intersection.intersect_pl = &lines[intersection.intersect_pl_idx]; + // After polylines are merged, it is necessary to update "forward" based on if intersect_point is the first or the last point of intersect_pl. + if (!intersection.used && !intersection.intersect_pl->points.empty()) + intersection.forward = (intersection.intersect_pl->points.front() == intersection.intersect_point); }; for (size_t min_idx = 0; min_idx < intersections.size(); ++min_idx) { @@ -804,7 +808,10 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou Intersection &first_i = intersect_line[first_idx].first; Intersection &nearest_i = *get_nearest_intersection(intersect_line, first_idx); - // The intersection has been processer or polyline has been merge to another polyline + update_merged_polyline(first_i); + update_merged_polyline(nearest_i); + + // The intersection has been processed, or the polyline has been merge to another polyline. if (first_i.used || first_i.intersect_pl->points.empty()) continue; // A line between two intersections points @@ -812,14 +819,6 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou Line offset_line = create_offset_line(intersection_line, first_i, scale_(spacing)); double intersection_line_length = intersection_line.length(); - // Update the polyline index to index which is merged - nearest_i.intersect_pl_idx = get_merged_index(nearest_i.intersect_pl_idx); - nearest_i.intersect_pl = &lines[nearest_i.intersect_pl_idx]; - - // The nearest intersection has been processer or polyline has been merge to another polyline - if (!nearest_i.used && !nearest_i.intersect_pl->points.empty()) - nearest_i.forward = (nearest_i.intersect_pl->points.front() == nearest_i.intersect_point); - // Check if both intersections lie on the offset_line and simultaneously get their points of intersecting. // These points are used as start and end of the hook Point first_i_point, nearest_i_point; @@ -886,7 +885,7 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou if (!pl.empty()) polylines_out.emplace_back(std::move(pl)); } -coord_t get_hook_length(const double spacing) { return scale_(spacing) * 5; } +coord_t get_hook_length(const double spacing) { return coord_t(scale_(spacing)) * 5; } void Filler::_fill_surface_single( const FillParams ¶ms, From 958acad85bb5d35f147c1bfb4b10d1814ca2cd6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= <hejl.lukas@gmail.com> Date: Mon, 12 Oct 2020 00:17:17 +0200 Subject: [PATCH 014/138] Fix another compiler warnings --- src/libslic3r/Fill/FillAdaptive.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index cdc415dee..be7f0bc59 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -660,8 +660,8 @@ static void add_hook(const Intersection &intersection, const Line &hook_line, co }; std::vector<std::pair<rtree_segment_t, size_t>> hook_intersections; - rtree.query(bgi::intersects( - rtree_segment_t(rtree_point_t(hook_forward.a.x(), hook_forward.a.y()), rtree_point_t(hook_forward.b.x(), hook_forward.b.y()))) && + rtree.query(bgi::intersects(rtree_segment_t(rtree_point_t(float(hook_forward.a.x()), float(hook_forward.a.y())), + rtree_point_t(float(hook_forward.b.x()), float(hook_forward.b.y())))) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); @@ -683,8 +683,8 @@ static void add_hook(const Intersection &intersection, const Line &hook_line, co // There is not enough space for the hook, try another direction coord_t hook_forward_max_length = max_hook_length(hook_forward); hook_intersections.clear(); - rtree.query(bgi::intersects(rtree_segment_t(rtree_point_t(hook_backward.a.x(), hook_backward.a.y()), - rtree_point_t(hook_backward.b.x(), hook_backward.b.y()))) && + rtree.query(bgi::intersects(rtree_segment_t(rtree_point_t(float(hook_backward.a.x()), float(hook_backward.a.y())), + rtree_point_t(float(hook_backward.b.x()), float(hook_backward.b.y())))) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); @@ -717,8 +717,8 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou rtree_t rtree; size_t poly_idx = 0; for (const Polyline &poly : lines) { - rtree.insert(std::make_pair(rtree_segment_t(rtree_point_t(poly.points.front().x(), poly.points.front().y()), - rtree_point_t(poly.points.back().x(), poly.points.back().y())), + rtree.insert(std::make_pair(rtree_segment_t(rtree_point_t(float(poly.points.front().x()), float(poly.points.front().y())), + rtree_point_t(float(poly.points.back().x()), float(poly.points.back().y()))), poly_idx++)); } @@ -737,13 +737,13 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou auto filter_itself = [line_idx](const auto &item) { return item.second != line_idx; }; // Find the nearest line from the start point of the line. - rtree.query(bgi::nearest(rtree_point_t(front_point.x(), front_point.y()), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); + rtree.query(bgi::nearest(rtree_point_t(float(front_point.x()), float(front_point.y())), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); if (((Line) lines[closest[0].second]).distance_to(front_point) <= 1000) intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], front_point, line_idx, &line, (Line) line, true); closest.clear(); // Find the nearest line from the end point of the line - rtree.query(bgi::nearest(rtree_point_t(back_point.x(), back_point.y()), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); + rtree.query(bgi::nearest(rtree_point_t(float(back_point.x()), float(back_point.y())), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); if (((Line) lines[closest[0].second]).distance_to(back_point) <= 1000) intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], back_point, line_idx, &line, (Line) line, false); } @@ -756,10 +756,14 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou // Appends the boundary polygon with all holes to rtree for detection if hooks not crossing the boundary for (const Line &line : boundary.contour.lines()) - rtree.insert(std::make_pair(rtree_segment_t(rtree_point_t(line.a.x(), line.a.y()), rtree_point_t(line.b.x(), line.b.y())), poly_idx++)); + rtree.insert( + std::make_pair(rtree_segment_t(rtree_point_t(float(line.a.x()), float(line.a.y())), rtree_point_t(float(line.b.x()), float(line.b.y()))), + poly_idx++)); for (const Polygon &polygon : boundary.holes) for (const Line &line : polygon.lines()) - rtree.insert(std::make_pair(rtree_segment_t(rtree_point_t(line.a.x(), line.a.y()), rtree_point_t(line.b.x(), line.b.y())), poly_idx++)); + rtree.insert(std::make_pair(rtree_segment_t(rtree_point_t(float(line.a.x()), float(line.a.y())), + rtree_point_t(float(line.b.x()), float(line.b.y()))), + poly_idx++)); auto update_merged_polyline = [&lines, &merged_with](Intersection &intersection) { // Update the polyline index to index which is merged From 3e50699576dcea42c6f97517f2c7829ee2a6a3a5 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Tue, 20 Oct 2020 09:17:26 +0200 Subject: [PATCH 015/138] Renamed Line::offset to extend Don't use unscaled constants! What if the scaling constant changes in the future? --- src/libslic3r/Fill/FillAdaptive.cpp | 2 +- src/libslic3r/Line.cpp | 2 +- src/libslic3r/Line.hpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index be7f0bc59..4435a43e7 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -625,7 +625,7 @@ static Line create_offset_line(const Line &line_to_offset, const Intersection &i Line offset_line = line_to_offset; offset_line.translate(offset_vector.x(), offset_vector.y()); // Extend the line by small value to guarantee a collision with adjacent lines - offset_line.offset(1000000); + offset_line.extend(coord_t(scale_(1.))); return offset_line; }; diff --git a/src/libslic3r/Line.cpp b/src/libslic3r/Line.cpp index abea80f5f..8a2a2875b 100644 --- a/src/libslic3r/Line.cpp +++ b/src/libslic3r/Line.cpp @@ -100,7 +100,7 @@ bool Line::clip_with_bbox(const BoundingBox &bbox) return result; } -void Line::offset(double offset) +void Line::extend(double offset) { Vector offset_vector = (offset * this->vector().cast<double>().normalized()).cast<coord_t>(); this->a -= offset_vector; diff --git a/src/libslic3r/Line.hpp b/src/libslic3r/Line.hpp index 2cc8139f1..aeb185160 100644 --- a/src/libslic3r/Line.hpp +++ b/src/libslic3r/Line.hpp @@ -75,8 +75,8 @@ public: double ccw(const Point& point) const { return point.ccw(*this); } // Clip a line with a bounding box. Returns false if the line is completely outside of the bounding box. bool clip_with_bbox(const BoundingBox &bbox); - // Resize a line from both sides by the offset. - void offset(double offset); + // Extend the line from both sides by an offset. + void extend(double offset); static inline double distance_to_squared(const Point &point, const Point &a, const Point &b) { return line_alg::distance_to_squared(Line{a, b}, Vec<2, coord_t>{point}); } static double distance_to(const Point &point, const Point &a, const Point &b) { return sqrt(distance_to_squared(point, a, b)); } From 50b603df5d5063d77cad7b5352debb4a970c35bc Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Tue, 20 Oct 2020 10:55:10 +0200 Subject: [PATCH 016/138] Optimized for reduced memory allocation and clarity. --- src/libslic3r/Fill/FillAdaptive.cpp | 101 ++++++++++++++++------------ 1 file changed, 57 insertions(+), 44 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 4435a43e7..66a50dd1f 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -556,10 +556,9 @@ static void export_infill_lines_to_svg(const ExPolygon &expoly, const Polylines static Matrix2d rotation_matrix_from_vector(const Point &vector) { Matrix2d rotation; - rotation.block<1, 2>(0, 0) = vector.cast<double>() / vector.cast<double>().norm(); + rotation.block<1, 2>(0, 0) = vector.cast<double>().normalized(); rotation(1, 0) = -rotation(0, 1); rotation(1, 1) = rotation(0, 0); - return rotation; } @@ -638,6 +637,13 @@ using rtree_point_t = bgm::point<float, 2, boost::geometry::cs::cartesian>; using rtree_segment_t = bgm::segment<rtree_point_t>; using rtree_t = bgi::rtree<std::pair<rtree_segment_t, size_t>, bgi::rstar<16, 4>>; +static inline rtree_segment_t mk_rtree_seg(const Point &a, const Point &b) { + return { rtree_point_t(float(a.x()), float(a.y())), rtree_point_t(float(b.x()), float(b.y())) }; +} +static inline rtree_segment_t mk_rtree_seg(const Line &l) { + return mk_rtree_seg(l.a, l.b); +} + // Create a hook based on hook_line and append it to the begin or end of the polyline in the intersection static void add_hook(const Intersection &intersection, const Line &hook_line, const double scaled_spacing, const int hook_length, const rtree_t &rtree) { @@ -660,9 +666,7 @@ static void add_hook(const Intersection &intersection, const Line &hook_line, co }; std::vector<std::pair<rtree_segment_t, size_t>> hook_intersections; - rtree.query(bgi::intersects(rtree_segment_t(rtree_point_t(float(hook_forward.a.x()), float(hook_forward.a.y())), - rtree_point_t(float(hook_forward.b.x()), float(hook_forward.b.y())))) && - bgi::satisfies(filter_itself), + rtree.query(bgi::intersects(mk_rtree_seg(hook_forward)) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); auto max_hook_length = [&hook_intersections, &hook_length](const Line &hook) { @@ -683,9 +687,7 @@ static void add_hook(const Intersection &intersection, const Line &hook_line, co // There is not enough space for the hook, try another direction coord_t hook_forward_max_length = max_hook_length(hook_forward); hook_intersections.clear(); - rtree.query(bgi::intersects(rtree_segment_t(rtree_point_t(float(hook_backward.a.x()), float(hook_backward.a.y())), - rtree_point_t(float(hook_backward.b.x()), float(hook_backward.b.y())))) && - bgi::satisfies(filter_itself), + rtree.query(bgi::intersects(mk_rtree_seg(hook_backward)) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); if (hook_intersections.empty()) { @@ -712,40 +714,42 @@ static void add_hook(const Intersection &intersection, const Line &hook_line, co } } -static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_out, const ExPolygon &boundary, const double spacing, const int hook_length) +static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &boundary, const double spacing, const int hook_length) { rtree_t rtree; size_t poly_idx = 0; for (const Polyline &poly : lines) { - rtree.insert(std::make_pair(rtree_segment_t(rtree_point_t(float(poly.points.front().x()), float(poly.points.front().y())), - rtree_point_t(float(poly.points.back().x()), float(poly.points.back().y()))), - poly_idx++)); + rtree.insert(std::make_pair(mk_rtree_seg(poly.points.front(), poly.points.back()), poly_idx++)); } std::vector<Intersection> intersections; - coord_t scaled_spacing = coord_t(scale_(spacing)); - for (size_t line_idx = 0; line_idx < lines.size(); ++line_idx) { - Polyline &line = lines[line_idx]; - // Lines shorter than spacing are skipped because it is needed to shrink a line by the value of spacing. - // A shorter line than spacing could produce a degenerate polyline. - if (line.length() <= (scaled_spacing + SCALED_EPSILON)) continue; - - Point front_point = line.points.front(); - Point back_point = line.points.back(); + { + const coord_t scaled_spacing = coord_t(scale_(spacing)); + // Keeping the vector of closest points outside the loop, so the vector does not need to be reallocated. std::vector<std::pair<rtree_segment_t, size_t>> closest; + for (size_t line_idx = 0; line_idx < lines.size(); ++line_idx) { + Polyline &line = lines[line_idx]; + // Lines shorter than spacing are skipped because it is needed to shrink a line by the value of spacing. + // A shorter line than spacing could produce a degenerate polyline. + if (line.length() <= (scaled_spacing + SCALED_EPSILON)) continue; - auto filter_itself = [line_idx](const auto &item) { return item.second != line_idx; }; + Point front_point = line.points.front(); + Point back_point = line.points.back(); - // Find the nearest line from the start point of the line. - rtree.query(bgi::nearest(rtree_point_t(float(front_point.x()), float(front_point.y())), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); - if (((Line) lines[closest[0].second]).distance_to(front_point) <= 1000) - intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], front_point, line_idx, &line, (Line) line, true); + auto filter_itself = [line_idx](const auto &item) { return item.second != line_idx; }; - closest.clear(); - // Find the nearest line from the end point of the line - rtree.query(bgi::nearest(rtree_point_t(float(back_point.x()), float(back_point.y())), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); - if (((Line) lines[closest[0].second]).distance_to(back_point) <= 1000) - intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], back_point, line_idx, &line, (Line) line, false); + // Find the nearest line from the start point of the line. + closest.clear(); + rtree.query(bgi::nearest(rtree_point_t(float(front_point.x()), float(front_point.y())), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); + if (((Line) lines[closest[0].second]).distance_to(front_point) <= 1000) + intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], front_point, line_idx, &line, (Line) line, true); + + // Find the nearest line from the end point of the line + closest.clear(); + rtree.query(bgi::nearest(rtree_point_t(float(back_point.x()), float(back_point.y())), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); + if (((Line) lines[closest[0].second]).distance_to(back_point) <= 1000) + intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], back_point, line_idx, &line, (Line) line, false); + } } std::sort(intersections.begin(), intersections.end(), @@ -755,15 +759,20 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou std::iota(merged_with.begin(), merged_with.end(), 0); // Appends the boundary polygon with all holes to rtree for detection if hooks not crossing the boundary - for (const Line &line : boundary.contour.lines()) - rtree.insert( - std::make_pair(rtree_segment_t(rtree_point_t(float(line.a.x()), float(line.a.y())), rtree_point_t(float(line.b.x()), float(line.b.y()))), - poly_idx++)); - for (const Polygon &polygon : boundary.holes) - for (const Line &line : polygon.lines()) - rtree.insert(std::make_pair(rtree_segment_t(rtree_point_t(float(line.a.x()), float(line.a.y())), - rtree_point_t(float(line.b.x()), float(line.b.y()))), - poly_idx++)); + { + Point prev = boundary.contour.points.back(); + for (const Point &point : boundary.contour.points) { + rtree.insert(std::make_pair(mk_rtree_seg(prev, point), poly_idx++)); + prev = point; + } + for (const Polygon &polygon : boundary.holes) { + Point prev = polygon.points.back(); + for (const Point &point : polygon.points) { + rtree.insert(std::make_pair(mk_rtree_seg(prev, point), poly_idx++)); + prev = point; + } + } + } auto update_merged_polyline = [&lines, &merged_with](Intersection &intersection) { // Update the polyline index to index which is merged @@ -884,9 +893,11 @@ static void connect_lines_using_hooks(Polylines &&lines, Polylines &polylines_ou } } + Polylines polylines_out; polylines_out.reserve(polylines_out.size() + std::count_if(lines.begin(), lines.end(), [](const Polyline &pl) { return !pl.empty(); })); for (Polyline &pl : lines) if (!pl.empty()) polylines_out.emplace_back(std::move(pl)); + return polylines_out; } coord_t get_hook_length(const double spacing) { return coord_t(scale_(spacing)) * 5; } @@ -937,8 +948,11 @@ void Filler::_fill_surface_single( all_polylines = intersection_pl(std::move(all_polylines), to_polygons(expolygon)); // After intersection_pl some polylines with only one line are split into more lines - for (Polyline &polyline : all_polylines) - if (polyline.points.size() > 2) polyline = Polyline(polyline.points.front(), polyline.points.back()); + for (Polyline &polyline : all_polylines) { + //FIXME assert that all the points are collinear and in between the start and end point. + if (polyline.points.size() > 2) + polyline.points.erase(polyline.points.begin() + 1, polyline.points.end() - 1); + } #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { @@ -948,8 +962,7 @@ void Filler::_fill_surface_single( #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ coord_t hook_length = get_hook_length(this->spacing); - Polylines all_polylines_with_hooks; - connect_lines_using_hooks(std::move(all_polylines), all_polylines_with_hooks, expolygon, this->spacing, hook_length); + Polylines all_polylines_with_hooks = connect_lines_using_hooks(std::move(all_polylines), expolygon, this->spacing, hook_length); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { From 239d588c5dbc2a5f8edf698cacfff5aa3a2f8639 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Thu, 5 Nov 2020 17:32:40 +0100 Subject: [PATCH 017/138] 1) Implemented anchoring of infill lines to perimeters with length limited anchors, while before a full perimeter segment was always taken if possible. 2) Adapted the line infills (grid, stars, triangles, cubic) to 1). This also solves a long standing issue of these infills producing anchors for each sweep direction independently, thus possibly overlapping and overextruding, which was quite detrimental in narrow areas. 3) Refactored cubic adaptive infill anchroing algorithm for performance and clarity. --- src/libslic3r/EdgeGrid.cpp | 20 +- src/libslic3r/EdgeGrid.hpp | 1 + src/libslic3r/Fill/FillAdaptive.cpp | 340 ++++---- src/libslic3r/Fill/FillBase.cpp | 1044 ++++++++++++++++------- src/libslic3r/Fill/FillBase.hpp | 4 +- src/libslic3r/Fill/FillRectilinear2.cpp | 207 +++-- src/libslic3r/Fill/FillRectilinear2.hpp | 9 + src/libslic3r/Geometry.cpp | 6 +- src/libslic3r/Geometry.hpp | 136 ++- src/libslic3r/Point.hpp | 7 + src/libslic3r/libslic3r.h | 34 +- tests/libslic3r/test_geometry.cpp | 18 +- 12 files changed, 1200 insertions(+), 626 deletions(-) diff --git a/src/libslic3r/EdgeGrid.cpp b/src/libslic3r/EdgeGrid.cpp index 486a7b1aa..fa68092ee 100644 --- a/src/libslic3r/EdgeGrid.cpp +++ b/src/libslic3r/EdgeGrid.cpp @@ -55,6 +55,24 @@ void EdgeGrid::Grid::create(const Polygons &polygons, coord_t resolution) create_from_m_contours(resolution); } +void EdgeGrid::Grid::create(const std::vector<const Polygon*> &polygons, coord_t resolution) +{ + // Count the contours. + size_t ncontours = 0; + for (size_t j = 0; j < polygons.size(); ++ j) + if (! polygons[j]->points.empty()) + ++ ncontours; + + // Collect the contours. + m_contours.assign(ncontours, nullptr); + ncontours = 0; + for (size_t j = 0; j < polygons.size(); ++ j) + if (! polygons[j]->points.empty()) + m_contours[ncontours ++] = &polygons[j]->points; + + create_from_m_contours(resolution); +} + void EdgeGrid::Grid::create(const std::vector<Points> &polygons, coord_t resolution) { // Count the contours. @@ -1150,7 +1168,7 @@ EdgeGrid::Grid::ClosestPointResult EdgeGrid::Grid::closest_point(const Point &pt if (result.contour_idx != size_t(-1) && d_min <= double(search_radius)) { result.distance = d_min * sign_min; result.t /= l2_seg_min; - assert(result.t >= 0. && result.t < 1.); + assert(result.t >= 0. && result.t <= 1.); #ifndef NDEBUG { const Slic3r::Points &pts = *m_contours[result.contour_idx]; diff --git a/src/libslic3r/EdgeGrid.hpp b/src/libslic3r/EdgeGrid.hpp index 6a9f482a1..fc8e2c8ad 100644 --- a/src/libslic3r/EdgeGrid.hpp +++ b/src/libslic3r/EdgeGrid.hpp @@ -21,6 +21,7 @@ public: void set_bbox(const BoundingBox &bbox) { m_bbox = bbox; } void create(const Polygons &polygons, coord_t resolution); + void create(const std::vector<const Polygon*> &polygons, coord_t resolution); void create(const std::vector<Points> &polygons, coord_t resolution); void create(const ExPolygon &expoly, coord_t resolution); void create(const ExPolygons &expolygons, coord_t resolution); diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index b6f91b30c..65a7b95d6 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -553,21 +553,15 @@ static void export_infill_lines_to_svg(const ExPolygon &expoly, const Polylines } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ -static Matrix2d rotation_matrix_from_vector(const Point &vector) -{ - Matrix2d rotation; - rotation.block<1, 2>(0, 0) = vector.cast<double>().normalized(); - rotation(1, 0) = -rotation(0, 1); - rotation(1, 1) = rotation(0, 0); - return rotation; -} - +// Representing a T-joint (in general case) between two infill lines +// (between one end point of intersect_pl/intersect_line and struct Intersection { // Index of the closest line to intersect_line size_t closest_line_idx; // Copy of closest line to intersect_point, used for storing original line in an unchanged state Line closest_line; + // Point for which is computed closest line (closest_line) Point intersect_point; // Index of the polyline from which is computed closest_line @@ -577,54 +571,53 @@ struct Intersection // The line for which is computed closest line from intersect_point to closest_line Line intersect_line; // Indicate if intersect_point is the first or the last point of intersect_pl - bool forward; + bool front; + // Indication if this intersection has been proceed bool used = false; - Intersection(const size_t closest_line_idx, - const Line &closest_line, - const Point &intersect_point, - size_t intersect_pl_idx, - Polyline *intersect_pl, - const Line &intersect_line, - bool forward) - : closest_line_idx(closest_line_idx) - , closest_line(closest_line) - , intersect_point(intersect_point) - , intersect_pl_idx(intersect_pl_idx) - , intersect_pl(intersect_pl) - , intersect_line(intersect_line) - , forward(forward) - {} + bool fresh() const throw() { return ! used && ! intersect_pl->empty(); } }; -static inline Intersection *get_nearest_intersection(std::vector<std::pair<Intersection, double>> &intersect_line, const size_t first_idx) +static inline Intersection *get_nearest_intersection(std::vector<std::pair<Intersection*, double>> &intersect_line, const size_t first_idx) { assert(intersect_line.size() >= 2); + bool take_next = false; if (first_idx == 0) - return &intersect_line[first_idx + 1].first; - else if (first_idx == (intersect_line.size() - 1)) - return &intersect_line[first_idx - 1].first; - else if ((intersect_line[first_idx].second - intersect_line[first_idx - 1].second) < (intersect_line[first_idx + 1].second - intersect_line[first_idx].second)) - return &intersect_line[first_idx - 1].first; - else - return &intersect_line[first_idx + 1].first; + take_next = true; + else if (first_idx + 1 == intersect_line.size()) + take_next = false; + else { + // Has both prev and next. + const std::pair<Intersection*, double> &ithis = intersect_line[first_idx]; + const std::pair<Intersection*, double> &iprev = intersect_line[first_idx - 1]; + const std::pair<Intersection*, double> &inext = intersect_line[first_idx + 1]; + take_next = iprev.first->fresh() && inext.first->fresh() ? + inext.second - ithis.second < ithis.second - iprev.second : + inext.first->fresh(); + } + return intersect_line[take_next ? first_idx + 1 : first_idx - 1].first; } -// Create a line based on line_to_offset translated it in the direction of the intersection line (intersection.intersect_line) +// Create a line representing the anchor aka hook extrusion based on line_to_offset +// translated in the direction of the intersection line (intersection.intersect_line). static Line create_offset_line(const Line &line_to_offset, const Intersection &intersection, const double scaled_spacing) { - Matrix2d rotation = rotation_matrix_from_vector(line_to_offset.vector()); - Vec2d offset_vector = ((scaled_spacing / 2.) * line_to_offset.normal().cast<double>().normalized()); - Vec2d offset_line_point = line_to_offset.a.cast<double>(); - Vec2d furthest_point = (intersection.intersect_point == intersection.intersect_line.a ? intersection.intersect_line.b : intersection.intersect_line.a).cast<double>(); + Vec2d dir = line_to_offset.vector().cast<double>().normalized(); + // 50% overlap of the extrusion lines to achieve strong bonding. + Vec2d offset_vector = Vec2d(- dir.y(), dir.x()) * (scaled_spacing / 2.); + const Point &furthest_point = (intersection.intersect_point == intersection.intersect_line.a ? intersection.intersect_line.b : intersection.intersect_line.a); - if ((rotation * furthest_point).y() >= (rotation * offset_line_point).y()) offset_vector *= -1; + // Move inside. + if (offset_vector.dot((furthest_point - intersection.intersect_point).cast<double>()) < 0.) + offset_vector *= -1.; Line offset_line = line_to_offset; offset_line.translate(offset_vector.x(), offset_vector.y()); - // Extend the line by small value to guarantee a collision with adjacent lines + // Extend the line by a small value to guarantee a collision with adjacent lines offset_line.extend(coord_t(scale_(1.))); + //FIXME scaled_spacing * tan(PI/6) +// offset_line.extend(coord_t(scaled_spacing * 0.577)); return offset_line; }; @@ -637,26 +630,29 @@ using rtree_point_t = bgm::point<float, 2, boost::geometry::cs::cartesian>; using rtree_segment_t = bgm::segment<rtree_point_t>; using rtree_t = bgi::rtree<std::pair<rtree_segment_t, size_t>, bgi::rstar<16, 4>>; +static inline rtree_point_t mk_rtree_point(const Point &pt) { + return rtree_point_t(float(pt.x()), float(pt.y())); +} static inline rtree_segment_t mk_rtree_seg(const Point &a, const Point &b) { - return { rtree_point_t(float(a.x()), float(a.y())), rtree_point_t(float(b.x()), float(b.y())) }; + return { mk_rtree_point(a), mk_rtree_point(b) }; } static inline rtree_segment_t mk_rtree_seg(const Line &l) { return mk_rtree_seg(l.a, l.b); } // Create a hook based on hook_line and append it to the begin or end of the polyline in the intersection -static void add_hook(const Intersection &intersection, const Line &hook_line, const double scaled_spacing, const int hook_length, const rtree_t &rtree) +static void add_hook(const Intersection &intersection, const double scaled_spacing, const int hook_length, const rtree_t &rtree) { - Vec2d hook_vector_norm = hook_line.vector().cast<double>().normalized(); - Vector hook_vector = (hook_length * hook_vector_norm).cast<coord_t>(); - Line hook_line_offset = create_offset_line(hook_line, intersection, scaled_spacing); - - Point intersection_point; - bool intersection_found = intersection.intersect_line.intersection(hook_line_offset, &intersection_point); + // Trim the hook start by the infill line it will connect to. + Point hook_start; + bool intersection_found = intersection.intersect_line.intersection( + create_offset_line(intersection.closest_line, intersection, scaled_spacing), + &hook_start); assert(intersection_found); - Line hook_forward(intersection_point, intersection_point + hook_vector); - Line hook_backward(intersection_point, intersection_point - hook_vector); + Vec2d hook_vector_norm = intersection.closest_line.vector().cast<double>().normalized(); + Vector hook_vector = (hook_length * hook_vector_norm).cast<coord_t>(); + Line hook_forward(hook_start, hook_start + hook_vector); auto filter_itself = [&intersection](const auto &item) { const rtree_segment_t &seg = item.first; @@ -666,51 +662,66 @@ static void add_hook(const Intersection &intersection, const Line &hook_line, co }; std::vector<std::pair<rtree_segment_t, size_t>> hook_intersections; - rtree.query(bgi::intersects(mk_rtree_seg(hook_forward)) && bgi::satisfies(filter_itself), - std::back_inserter(hook_intersections)); + rtree.query(bgi::intersects(mk_rtree_seg(hook_forward)) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); - auto max_hook_length = [&hook_intersections, &hook_length](const Line &hook) { - coord_t max_length = hook_length; - for (const auto &hook_intersection : hook_intersections) { - const rtree_segment_t &segment = hook_intersection.first; - double dist = Line::distance_to(hook.a, Point(bg::get<0, 0>(segment), bg::get<0, 1>(segment)), - Point(bg::get<1, 0>(segment), bg::get<1, 1>(segment))); - max_length = std::min(coord_t(dist), max_length); - } - return max_length; - }; - - Line hook_final; + Point hook_end; if (hook_intersections.empty()) { - hook_final = std::move(hook_forward); + // The hook is not limited by another infill line. Extrude it in its full length. + hook_end = hook_forward.b; } else { - // There is not enough space for the hook, try another direction - coord_t hook_forward_max_length = max_hook_length(hook_forward); + + // Find closest intersection of a line segment starting with pt pointing in dir + // with any of the hook_intersections, returns Euclidian distance. + // dir is normalized. + auto max_hook_length = [hook_length](const Vec2d &pt, const Vec2d &dir, const std::vector<std::pair<rtree_segment_t, size_t>> &hook_intersections) { + // No hook is longer than hook_length, there shouldn't be any intersection closer than that. + auto max_length = double(hook_length); + auto update_max_length = [&max_length](double d) { + if (d > 0. && d < max_length) + max_length = d; + }; + for (const auto &hook_intersection : hook_intersections) { + const rtree_segment_t &segment = hook_intersection.first; + // Segment start and end points. + Vec2d pt2(bg::get<0, 0>(segment), bg::get<0, 1>(segment)); + Vec2d pt2b(bg::get<1, 0>(segment), bg::get<1, 1>(segment)); + // Segment vector. + Vec2d dir2 = pt2b - pt2; + // Find intersection of (pt, dir) with (pt2, dir2), where dir is normalized. + double denom = cross2(dir, dir2); + if (std::abs(denom) < EPSILON) { + update_max_length((pt2 - pt).dot(dir)); + update_max_length((pt2b - pt).dot(dir)); + } else + update_max_length(cross2(pt2 - pt, dir2) / denom); + } + return max_length; + }; + + // There is not enough space for the full hook length, try the opposite direction. + Vec2d hook_startf = hook_start.cast<double>(); + double hook_forward_max_length = max_hook_length(hook_startf, hook_vector_norm, hook_intersections); hook_intersections.clear(); - rtree.query(bgi::intersects(mk_rtree_seg(hook_backward)) && bgi::satisfies(filter_itself), - std::back_inserter(hook_intersections)); + Line hook_backward(hook_start, hook_start - hook_vector); + rtree.query(bgi::intersects(mk_rtree_seg(hook_backward)) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); if (hook_intersections.empty()) { - hook_final = std::move(hook_backward); + // The hook in the other direction is not limited by another infill line. Extrude it in its full length. + hook_end = hook_backward.b; } else { - // There is not enough space for hook in both directions, shrink the hook - coord_t hook_backward_max_length = max_hook_length(hook_backward); - if (hook_forward_max_length > hook_backward_max_length) { - Vector hook_vector_reduced = (hook_forward_max_length * hook_vector_norm).cast<coord_t>(); - hook_final = Line(intersection_point, intersection_point + hook_vector_reduced); - } else { - Vector hook_vector_reduced = (hook_backward_max_length * hook_vector_norm).cast<coord_t>(); - hook_final = Line(intersection_point, intersection_point - hook_vector_reduced); - } + // There is not enough space for the full hook in both directions, take the longer one. + double hook_backward_max_length = max_hook_length(hook_startf, - hook_vector_norm, hook_intersections); + Vec2d hook_dir = (hook_forward_max_length > hook_backward_max_length ? hook_forward_max_length : - hook_backward_max_length) * hook_vector_norm; + hook_end = hook_start + hook_dir.cast<coord_t>(); } } - if (intersection.forward) { - intersection.intersect_pl->points.front() = hook_final.a; - intersection.intersect_pl->points.emplace(intersection.intersect_pl->points.begin(), hook_final.b); + if (intersection.front) { + intersection.intersect_pl->points.front() = hook_start; + intersection.intersect_pl->points.emplace(intersection.intersect_pl->points.begin(), hook_end); } else { - intersection.intersect_pl->points.back() = hook_final.a; - intersection.intersect_pl->points.emplace_back(hook_final.b); + intersection.intersect_pl->points.back() = hook_start; + intersection.intersect_pl->points.emplace_back(hook_end); } } @@ -719,6 +730,7 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b rtree_t rtree; size_t poly_idx = 0; for (const Polyline &poly : lines) { + assert(poly.points.size() == 2); rtree.insert(std::make_pair(mk_rtree_seg(poly.points.front(), poly.points.back()), poly_idx++)); } @@ -731,24 +743,28 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b Polyline &line = lines[line_idx]; // Lines shorter than spacing are skipped because it is needed to shrink a line by the value of spacing. // A shorter line than spacing could produce a degenerate polyline. - if (line.length() <= (scaled_spacing + SCALED_EPSILON)) continue; + //FIXME we should rather remove such short infill lines earlier! + if (line.length() <= (scaled_spacing + SCALED_EPSILON)) + continue; - Point front_point = line.points.front(); - Point back_point = line.points.back(); + const Point &front_point = line.points.front(); + const Point &back_point = line.points.back(); auto filter_itself = [line_idx](const auto &item) { return item.second != line_idx; }; // Find the nearest line from the start point of the line. closest.clear(); - rtree.query(bgi::nearest(rtree_point_t(float(front_point.x()), float(front_point.y())), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); - if (((Line) lines[closest[0].second]).distance_to(front_point) <= 1000) - intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], front_point, line_idx, &line, (Line) line, true); + rtree.query(bgi::nearest(mk_rtree_point(front_point), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); + if (((Line) lines[closest.front().second]).distance_to(front_point) <= 1000) + // T-joint of line's front point with the 'closest' line. + intersections.push_back({ closest.front().second, (Line)lines[closest.front().second], front_point, line_idx, &line, (Line)line, true }); // Find the nearest line from the end point of the line closest.clear(); - rtree.query(bgi::nearest(rtree_point_t(float(back_point.x()), float(back_point.y())), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); - if (((Line) lines[closest[0].second]).distance_to(back_point) <= 1000) - intersections.emplace_back(closest[0].second, (Line) lines[closest[0].second], back_point, line_idx, &line, (Line) line, false); + rtree.query(bgi::nearest(mk_rtree_point(back_point), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); + if (((Line) lines[closest.front().second]).distance_to(back_point) <= 1000) + // T-joint of line's back point with the 'closest' line. + intersections.push_back({ closest.front().second, (Line)lines[closest.front().second], back_point, line_idx, &line, (Line)line, false }); } } @@ -758,7 +774,7 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b std::vector<size_t> merged_with(lines.size()); std::iota(merged_with.begin(), merged_with.end(), 0); - // Appends the boundary polygon with all holes to rtree for detection if hooks not crossing the boundary + // Appends the boundary polygon with all holes to rtree for detection to check whether hooks are not crossing the boundary { Point prev = boundary.contour.points.back(); for (const Point &point : boundary.contour.points) { @@ -788,107 +804,97 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b intersection.intersect_pl = &lines[intersection.intersect_pl_idx]; // After polylines are merged, it is necessary to update "forward" based on if intersect_point is the first or the last point of intersect_pl. - if (!intersection.used && !intersection.intersect_pl->points.empty()) - intersection.forward = (intersection.intersect_pl->points.front() == intersection.intersect_point); + if (intersection.fresh()) + intersection.front = intersection.intersect_pl->points.front() == intersection.intersect_point; }; - for (size_t min_idx = 0; min_idx < intersections.size(); ++min_idx) { - std::vector<std::pair<Intersection, double>> intersect_line; - Matrix2d rotation = rotation_matrix_from_vector(intersections[min_idx].closest_line.vector()); - intersect_line.emplace_back(intersections[min_idx], (rotation * intersections[min_idx].intersect_point.cast<double>()).x()); - // All the nearest points on the same line are projected on this line. Because of it, it can easily find the nearest point - for (size_t max_idx = min_idx + 1; max_idx < intersections.size(); ++max_idx) { - if (intersections[min_idx].closest_line_idx != intersections[max_idx].closest_line_idx) break; - - intersect_line.emplace_back(intersections[max_idx], (rotation * intersections[max_idx].intersect_point.cast<double>()).x()); + // Keep intersect_line outside the loop, so it does not get reallocated. + std::vector<std::pair<Intersection*, double>> intersect_line; + for (size_t min_idx = 0; min_idx < intersections.size();) { + const Vec2d line_dir = intersections[min_idx].closest_line.vector().cast<double>(); + intersect_line.clear(); + // All the nearest points (T-joints) ending at the same line are projected onto this line. Because of it, it can easily find the nearest point. + { + const Point &p0 = intersections[min_idx].intersect_point; + size_t max_idx = min_idx + 1; + intersect_line.emplace_back(&intersections[min_idx], 0.); + for (; max_idx < intersections.size() && intersections[min_idx].closest_line_idx == intersections[max_idx].closest_line_idx; ++max_idx) + intersect_line.emplace_back(&intersections[max_idx], line_dir.dot((intersections[max_idx].intersect_point - p0).cast<double>())); min_idx = max_idx; } - - assert(!intersect_line.empty()); - if (intersect_line.size() <= 1) { - // On the adjacent line is only one intersection - Intersection &first_i = intersect_line.front().first; - if (first_i.used || first_i.intersect_pl->points.empty()) continue; - - add_hook(first_i, first_i.closest_line, scale_(spacing), hook_length, rtree); - first_i.used = true; + if (intersect_line.size() == 1) { + // Simple case: The current intersection is the only one touching its adjacent line. + Intersection &first_i = *intersect_line.front().first; + if (first_i.fresh()) { + // Try to connect left or right. If not enough space for hook_length, take the longer side. + add_hook(first_i, scale_(spacing), hook_length, rtree); + first_i.used = true; + } continue; } - assert(intersect_line.size() >= 2); + assert(intersect_line.size() > 1); + // Sort the intersections along line_dir. std::sort(intersect_line.begin(), intersect_line.end(), [](const auto &i1, const auto &i2) { return i1.second < i2.second; }); - for (size_t first_idx = 0; first_idx < intersect_line.size(); ++first_idx) { - Intersection &first_i = intersect_line[first_idx].first; - Intersection &nearest_i = *get_nearest_intersection(intersect_line, first_idx); + for (size_t first_idx = 0; first_idx < intersect_line.size(); ++ first_idx) { + Intersection &first_i = *intersect_line[first_idx].first; + if (! first_i.fresh()) + // The intersection has been processed, or the polyline has been merged to another polyline. + continue; + // Get the previous or next intersection on the same line, pick the closer one. + Intersection &nearest_i = *get_nearest_intersection(intersect_line, first_idx); update_merged_polyline(first_i); update_merged_polyline(nearest_i); - // The intersection has been processed, or the polyline has been merge to another polyline. - if (first_i.used || first_i.intersect_pl->points.empty()) continue; - // A line between two intersections points - Line intersection_line(first_i.intersect_point, nearest_i.intersect_point); - Line offset_line = create_offset_line(intersection_line, first_i, scale_(spacing)); - double intersection_line_length = intersection_line.length(); - + Line offset_line = create_offset_line(Line(first_i.intersect_point, nearest_i.intersect_point), first_i, scale_(spacing)); // Check if both intersections lie on the offset_line and simultaneously get their points of intersecting. // These points are used as start and end of the hook Point first_i_point, nearest_i_point; if (first_i.intersect_line.intersection(offset_line, &first_i_point) && nearest_i.intersect_line.intersection(offset_line, &nearest_i_point)) { - // Both intersections are so close that their polylines can be connected - if (!nearest_i.used && !nearest_i.intersect_pl->points.empty() && intersection_line_length <= 2 * hook_length) { + if (nearest_i.fresh() && (nearest_i_point - first_i_point).cast<double>().squaredNorm() <= Slic3r::sqr(3. * hook_length)) { + // Both intersections are so close that their polylines can be connected. if (first_i.intersect_pl_idx == nearest_i.intersect_pl_idx) { - // Both intersections are on the same polyline - if (!first_i.forward) { std::swap(first_i_point, nearest_i_point); } - + // Both intersections are on the same polyline, that means a loop is being closed. + if (! first_i.front) + std::swap(first_i_point, nearest_i_point); first_i.intersect_pl->points.front() = first_i_point; first_i.intersect_pl->points.back() = nearest_i_point; + //FIXME trim the end of a closed loop a bit? first_i.intersect_pl->points.emplace(first_i.intersect_pl->points.begin(), nearest_i_point); } else { // Both intersections are on different polylines - Points merge_polyline_points; - size_t first_polyline_size = first_i.intersect_pl->points.size(); - size_t nearest_polyline_size = nearest_i.intersect_pl->points.size(); - merge_polyline_points.reserve(first_polyline_size + nearest_polyline_size); - - if (first_i.forward) { - if (nearest_i.forward) - for (auto it = nearest_i.intersect_pl->points.rbegin(); it != nearest_i.intersect_pl->points.rend(); ++it) - merge_polyline_points.emplace_back(*it); - else - for (const Point &point : nearest_i.intersect_pl->points) - merge_polyline_points.emplace_back(point); - - append(merge_polyline_points, std::move(first_i.intersect_pl->points)); - merge_polyline_points[nearest_polyline_size - 1] = nearest_i_point; - merge_polyline_points[nearest_polyline_size] = first_i_point; + Points &first_points = first_i.intersect_pl->points; + Points &second_points = nearest_i.intersect_pl->points; + first_points.reserve(first_points.size() + second_points.size()); + if (first_i.front) + std::reverse(first_points.begin(), first_points.end()); + first_points.back() = first_i_point; + first_points.emplace_back(nearest_i_point); + if (nearest_i.front) + first_points.insert(first_points.end(), second_points.begin() + 1, second_points.end()); + else + first_points.insert(first_points.end(), second_points.rbegin() + 1, second_points.rend()); + // Keep the polyline at the lower index slot. + if (first_i.intersect_pl_idx < nearest_i.intersect_pl_idx) { + second_points.clear(); + merged_with[nearest_i.intersect_pl_idx] = merged_with[first_i.intersect_pl_idx]; } else { - append(merge_polyline_points, std::move(first_i.intersect_pl->points)); - if (nearest_i.forward) - for (const Point &point : nearest_i.intersect_pl->points) - merge_polyline_points.emplace_back(point); - else - for (auto it = nearest_i.intersect_pl->points.rbegin(); it != nearest_i.intersect_pl->points.rend(); ++it) - merge_polyline_points.emplace_back(*it); - - merge_polyline_points[first_polyline_size - 1] = first_i_point; - merge_polyline_points[first_polyline_size] = nearest_i_point; + second_points = std::move(first_points); + first_points.clear(); + merged_with[first_i.intersect_pl_idx] = merged_with[nearest_i.intersect_pl_idx]; } - - merged_with[nearest_i.intersect_pl_idx] = merged_with[first_i.intersect_pl_idx]; - - nearest_i.intersect_pl->points.clear(); - first_i.intersect_pl->points = merge_polyline_points; } - - first_i.used = true; nearest_i.used = true; - } else { - add_hook(first_i, first_i.closest_line, scale_(spacing), hook_length, rtree); - first_i.used = true; - } + } else + // Try to connect left or right. If not enough space for hook_length, take the longer side. + add_hook(first_i, scale_(spacing), hook_length, rtree); + first_i.used = true; + } else { + // The first & last point should always be found. + assert(false); } } } diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index 8e0e980e3..bd29594c0 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -3,8 +3,9 @@ #include "../ClipperUtils.hpp" #include "../EdgeGrid.hpp" #include "../Geometry.hpp" -#include "../Surface.hpp" +#include "../Point.hpp" #include "../PrintConfig.hpp" +#include "../Surface.hpp" #include "../libslic3r.h" #include "FillBase.hpp" @@ -79,7 +80,7 @@ Polylines Fill::fill_surface(const Surface *surface, const FillParams ¶ms) params, surface->thickness_layers, _infill_direction(surface), - expp[i], + std::move(expp[i]), polylines_out); return polylines_out; } @@ -524,36 +525,222 @@ void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, #else -struct ContourPointData { - ContourPointData(float param) : param(param) {} - // Eucleidean position of the contour point along the contour. - float param = 0.f; - // Was the segment starting with this contour point extruded? - bool segment_consumed = false; - // Was this point extruded over? - bool point_consumed = false; +// A single T joint of an infill line to a closed contour or one of its holes. +struct ContourIntersectionPoint { + // Contour and point on a contour where an infill line is connected to. + size_t contour_idx; + size_t point_idx; + // Eucleidean parameter of point_idx along its contour. + float param; + // Other intersection points along the same contour. If there is only a single T-joint on a contour + // with an intersection line, then the prev_on_contour and next_on_contour remain nulls. + ContourIntersectionPoint* prev_on_contour { nullptr }; + ContourIntersectionPoint* next_on_contour { nullptr }; + // Length of the contour not yet allocated to some extrusion path going back (clockwise), or masked out by some overlapping infill line. + float contour_not_taken_length_prev { std::numeric_limits<float>::max() }; + // Length of the contour not yet allocated to some extrusion path going forward (counter-clockwise), or masked out by some overlapping infill line. + float contour_not_taken_length_next { std::numeric_limits<float>::max() }; + // End point is consumed if an infill line connected to this T-joint was already connected left or right along the contour, + // or if the infill line was processed, but it was not possible to connect it left or right along the contour. + bool consumed { false }; + // Whether the contour was trimmed by an overlapping infill line, or whether part of this contour was connected to some infill line. + bool prev_trimmed { false }; + bool next_trimmed { false }; + + void consume_prev() { this->contour_not_taken_length_prev = 0.; this->prev_trimmed = true; this->consumed = true; } + void consume_next() { this->contour_not_taken_length_next = 0.; this->next_trimmed = true; this->consumed = true; } + + void trim_prev(const float new_len) { + if (new_len < this->contour_not_taken_length_prev) { + this->contour_not_taken_length_prev = new_len; + this->prev_trimmed = true; + } + } + void trim_next(const float new_len) { + if (new_len < this->contour_not_taken_length_next) { + this->contour_not_taken_length_next = new_len; + this->next_trimmed = true; + } + } + + // The end point of an infill line connected to this T-joint was not processed yet and a piece of the contour could be extruded going backwards. + bool could_take_prev() const throw() { return ! this->consumed && this->contour_not_taken_length_prev > SCALED_EPSILON; } + // The end point of an infill line connected to this T-joint was not processed yet and a piece of the contour could be extruded going forward. + bool could_take_next() const throw() { return ! this->consumed && this->contour_not_taken_length_next > SCALED_EPSILON; } + + // Could extrude a complete segment from this to this->prev_on_contour. + bool could_connect_prev() const throw() + { return ! this->consumed && this->prev_on_contour && ! this->prev_on_contour->consumed && ! this->prev_trimmed && ! this->prev_on_contour->next_trimmed; } + // Could extrude a complete segment from this to this->next_on_contour. + bool could_connect_next() const throw() + { return ! this->consumed && this->next_on_contour && ! this->next_on_contour->consumed && ! this->next_trimmed && ! this->next_on_contour->prev_trimmed; } }; -// Verify whether the contour from point idx_start to point idx_end could be taken (whether all segments along the contour were not yet extruded). -static bool could_take(const std::vector<ContourPointData> &contour_data, size_t idx_start, size_t idx_end) +// Distance from param1 to param2 when going counter-clockwise. +static inline float closed_contour_distance_ccw(float param1, float param2, float contour_length) { - assert(idx_start != idx_end); - for (size_t i = idx_start; i != idx_end; ) { - if (contour_data[i].segment_consumed || contour_data[i].point_consumed) - return false; - if (++ i == contour_data.size()) - i = 0; - } - return ! contour_data[idx_end].point_consumed; + float d = param2 - param1; + if (d < 0.f) + d += contour_length; + return d; +} + +// Distance from param1 to param2 when going clockwise. +static inline float closed_contour_distance_cw(float param1, float param2, float contour_length) +{ + return closed_contour_distance_ccw(param2, param1, contour_length); +} + +// Length along the contour from cp1 to cp2 going counter-clockwise. +float path_length_along_contour_ccw(const ContourIntersectionPoint *cp1, const ContourIntersectionPoint *cp2, float contour_length) +{ + assert(cp1 != nullptr); + assert(cp2 != nullptr); + assert(cp1->contour_idx == cp2->contour_idx); + assert(cp1 != cp2); + // Zero'th param is the length of the contour. + float param_lo = cp1->param; + float param_hi = cp2->param; + assert(param_lo >= 0.f && param_lo <= contour_length); + assert(param_hi >= 0.f && param_hi <= contour_length); + return cp1 < cp2 ? param_hi - param_lo : param_lo + contour_length - param_hi; +} + +// Lengths along the contour from cp1 to cp2 going CCW and going CW. +std::pair<float, float> path_lengths_along_contour(const ContourIntersectionPoint *cp1, const ContourIntersectionPoint *cp2, float contour_length) +{ + // Zero'th param is the length of the contour. + float param_lo = cp1->param; + float param_hi = cp2->param; + assert(param_lo >= 0.f && param_lo <= contour_length); + assert(param_hi >= 0.f && param_hi <= contour_length); + bool reversed = false; + if (param_lo > param_hi) { + std::swap(param_lo, param_hi); + reversed = true; + } + auto out = std::make_pair(param_hi - param_lo, param_lo + contour_length - param_hi); + if (reversed) + std::swap(out.first, out.second); + return out; +} + +// Add contour points from interval (idx_start, idx_end> to polyline. +static inline void take_cw_full(Polyline &pl, const Points& contour, size_t idx_start, size_t idx_end) +{ + assert(! pl.empty() && pl.points.back() == contour[idx_start]); + size_t i = (idx_end == 0) ? contour.size() - 1 : idx_start - 1; + while (i != idx_end) { + pl.points.emplace_back(contour[i]); + if (i == 0) + i = contour.size(); + --i; + } + pl.points.emplace_back(contour[i]); +} + +// Add contour points from interval (idx_start, idx_end> to polyline, limited by the Eucleidean length taken. +static inline float take_cw_limited(Polyline &pl, const Points &contour, const std::vector<float> ¶ms, size_t idx_start, size_t idx_end, float length_to_take) +{ + // If appending to an infill line, then the start point of a perimeter line shall match the end point of an infill line. + assert(pl.empty() || pl.points.back() == contour[idx_start]); + assert(contour.size() + 1 == params.size()); + // Length of the contour. + float length = params.back(); + // Parameter (length from contour.front()) for the first point. + float p0 = params[idx_start]; + // Current (2nd) point of the contour. + size_t i = (idx_start == 0) ? contour.size() - 1 : idx_start - 1; + // Previous point of the contour. + size_t iprev = idx_start; + // Length of the contour curve taken for iprev. + float lprev = 0.f; + + for (;;) { + float l = closed_contour_distance_cw(p0, params[i], length); + if (l >= length_to_take) { + // Trim the last segment. + double t = double(length_to_take - lprev) / (l - lprev); + pl.points.emplace_back(lerp(contour[iprev], contour[i], t)); + return length_to_take; + } + // Continue with the other segments. + pl.points.emplace_back(contour[i]); + if (i == idx_end) + return l; + iprev = i; + lprev = l; + if (i == 0) + i = contour.size(); + -- i; + } + assert(false); + return 0; +} + +// Add contour points from interval (idx_start, idx_end> to polyline. +static inline void take_ccw_full(Polyline &pl, const Points &contour, size_t idx_start, size_t idx_end) +{ + assert(! pl.empty() && pl.points.back() == contour[idx_start]); + size_t i = idx_start; + if (++ i == contour.size()) + i = 0; + while (i != idx_end) { + pl.points.emplace_back(contour[i]); + if (++ i == contour.size()) + i = 0; + } + pl.points.emplace_back(contour[i]); +} + +// Add contour points from interval (idx_start, idx_end> to polyline, limited by the Eucleidean length taken. +// Returns length of the contour taken. +static inline float take_ccw_limited(Polyline &pl, const Points &contour, const std::vector<float> ¶ms, size_t idx_start, size_t idx_end, float length_to_take) +{ + // If appending to an infill line, then the start point of a perimeter line shall match the end point of an infill line. + assert(pl.empty() || pl.points.back() == contour[idx_start]); + assert(contour.size() + 1 == params.size()); + // Length of the contour. + float length = params.back(); + // Parameter (length from contour.front()) for the first point. + float p0 = params[idx_start]; + // Current (2nd) point of the contour. + size_t i = idx_start; + if (++ i == contour.size()) + i = 0; + // Previous point of the contour. + size_t iprev = idx_start; + // Length of the contour curve taken at iprev. + float lprev = 0.f; + for (;;) { + float l = closed_contour_distance_ccw(p0, params[i], length); + if (l >= length_to_take) { + // Trim the last segment. + double t = double(length_to_take - lprev) / (l - lprev); + pl.points.emplace_back(lerp(contour[iprev], contour[i], t)); + return length_to_take; + } + // Continue with the other segments. + pl.points.emplace_back(contour[i]); + if (i == idx_end) + return l; + iprev = i; + lprev = l; + if (++ i == contour.size()) + i = 0; + } + assert(false); + return 0; } // Connect end of pl1 to the start of pl2 using the perimeter contour. -// The idx_start and idx_end are ordered so that the connecting polyline points will be taken with increasing indices. -static void take(Polyline &pl1, Polyline &&pl2, const Points &contour, std::vector<ContourPointData> &contour_data, size_t idx_start, size_t idx_end, bool reversed) +// If clockwise, then a clockwise segment from idx_start to idx_end is taken, otherwise a counter-clockwise segment is being taken. +static void take(Polyline &pl1, const Polyline &pl2, const Points &contour, size_t idx_start, size_t idx_end, bool clockwise) { #ifndef NDEBUG - size_t num_points_initial = pl1.points.size(); assert(idx_start != idx_end); + assert(pl1.size() >= 2); + assert(pl2.size() >= 2); #endif /* NDEBUG */ { @@ -564,34 +751,108 @@ static void take(Polyline &pl1, Polyline &&pl2, const Points &contour, std::vect pl1.points.reserve(pl1.points.size() + size_t(new_points) + pl2.points.size()); } - contour_data[idx_start].point_consumed = true; - contour_data[idx_start].segment_consumed = true; - contour_data[idx_end ].point_consumed = true; + if (clockwise) + take_cw_full(pl1, contour, idx_start, idx_end); + else + take_ccw_full(pl1, contour, idx_start, idx_end); - if (reversed) { - size_t i = (idx_end == 0) ? contour_data.size() - 1 : idx_end - 1; - while (i != idx_start) { - contour_data[i].point_consumed = true; - contour_data[i].segment_consumed = true; - pl1.points.emplace_back(contour[i]); - if (i == 0) - i = contour_data.size(); - -- i; - } - } else { - size_t i = idx_start; - if (++ i == contour_data.size()) - i = 0; - while (i != idx_end) { - contour_data[i].point_consumed = true; - contour_data[i].segment_consumed = true; - pl1.points.emplace_back(contour[i]); - if (++ i == contour_data.size()) - i = 0; - } - } + pl1.points.insert(pl1.points.end(), pl2.points.begin() + 1, pl2.points.end()); +} - append(pl1.points, std::move(pl2.points)); +static void take(Polyline &pl1, const Polyline &pl2, const Points &contour, ContourIntersectionPoint *cp_start, ContourIntersectionPoint *cp_end, bool clockwise) +{ + assert(cp_start != cp_end); + take(pl1, pl2, contour, cp_start->point_idx, cp_end->point_idx, clockwise); + + // Mark the contour segments in between cp_start and cp_end as consumed. + if (clockwise) + std::swap(cp_start, cp_end); + if (cp_start->next_on_contour != cp_end) + for (auto *cp = cp_start->next_on_contour; cp->next_on_contour != cp_end; cp = cp->next_on_contour) { + cp->consume_prev(); + cp->consume_next(); + } + cp_start->consume_next(); + cp_end->consume_prev(); +} + +static void take_limited( + Polyline &pl1, const Points &contour, const std::vector<float> ¶ms, + ContourIntersectionPoint *cp_start, ContourIntersectionPoint *cp_end, bool clockwise, float take_max_length, float line_half_width) +{ +#ifndef NDEBUG + assert(cp_start != cp_end); + assert(pl1.size() >= 2); + assert(contour.size() + 1 == params.size()); +#endif /* NDEBUG */ + + if (! (clockwise ? cp_start->could_take_prev() : cp_start->could_take_next())) + return; + + assert(pl1.points.front() == contour[cp_start->point_idx] || pl1.points.back() == contour[cp_start->point_idx]); + bool add_at_start = pl1.points.front() == contour[cp_start->point_idx]; + Points pl_tmp; + if (add_at_start) { + pl_tmp = std::move(pl1.points); + pl1.points.clear(); + } + + { + // Reserve memory at pl1 for the perimeter segment. + // Pessimizing - take the complete segment. + int new_points = int(cp_end->point_idx) - int(cp_start->point_idx) - 1; + if (new_points < 0) + new_points += int(contour.size()); + pl1.points.reserve(pl1.points.size() + pl_tmp.size() + size_t(new_points)); + } + + float length = params.back(); + float length_to_go = take_max_length; + cp_start->consumed = true; + if (clockwise) { + // Going clockwise from cp_start to cp_end. + for (ContourIntersectionPoint *cp = cp_start; cp != cp_end; cp = cp->prev_on_contour) { + // Length of the segment from cp to cp->prev_on_contour. + float l = closed_contour_distance_cw(cp->param, cp->prev_on_contour->param, length); + length_to_go = std::min(length_to_go, cp->contour_not_taken_length_prev); + if (cp->prev_on_contour->consumed) + // Don't overlap with an already extruded infill line. + length_to_go = std::max(0.f, std::min(length_to_go, l - line_half_width)); + cp->consume_prev(); + if (l >= length_to_go) { + cp->prev_on_contour->trim_next(l - length_to_go); + take_cw_limited(pl1, contour, params, cp->point_idx, cp->prev_on_contour->point_idx, length_to_go); + break; + } else { + cp->prev_on_contour->trim_next(0.f); + take_cw_full(pl1, contour, cp->point_idx, cp->prev_on_contour->point_idx); + length_to_go -= l; + } + } + } else { + for (ContourIntersectionPoint *cp = cp_start; cp != cp_end; cp = cp->next_on_contour) { + float l = closed_contour_distance_ccw(cp->param, cp->next_on_contour->param, length); + length_to_go = std::min(length_to_go, cp->contour_not_taken_length_next); + if (cp->next_on_contour->consumed) + // Don't overlap with an already extruded infill line. + length_to_go = std::max(0.f, std::min(length_to_go, l - line_half_width)); + cp->consume_next(); + if (l >= length_to_go) { + cp->next_on_contour->trim_prev(l - length_to_go); + take_ccw_limited(pl1, contour, params, cp->point_idx, cp->next_on_contour->point_idx, length_to_go); + break; + } else { + cp->next_on_contour->trim_prev(0.f); + take_ccw_full(pl1, contour, cp->point_idx, cp->next_on_contour->point_idx); + length_to_go -= l; + } + } + } + + if (add_at_start) { + pl1.reverse(); + append(pl1.points, pl_tmp); + } } // Return an index of start of a segment and a point of the clipping point at distance from the end of polyline. @@ -657,69 +918,159 @@ static inline SegmentPoint clip_end_segment_and_point(const Points &polyline, do return out; } -// Optimized version with the precalculated v1 = p1b - p1a and l1_2 = v1.squaredNorm(). -// Assumption: l1_2 < EPSILON. -static inline double segment_point_distance_squared(const Vec2d &p1a, const Vec2d &p1b, const Vec2d &v1, const double l1_2, const Vec2d &p2) +// Calculate intersection of a line with a thick segment. +// Returns Eucledian parameters of the line / thick segment overlap. +static inline bool line_rounded_thick_segment_collision( + const Vec2d &line_a, const Vec2d &line_b, + const Vec2d &segment_a, const Vec2d &segment_b, const double offset, + std::pair<double, double> &out_interval) { - assert(l1_2 > EPSILON); - Vec2d v12 = p2 - p1a; - double t = v12.dot(v1); - return (t <= 0. ) ? v12.squaredNorm() : - (t >= l1_2) ? (p2 - p1a).squaredNorm() : - ((t / l1_2) * v1 - v12).squaredNorm(); + const Vec2d line_v0 = line_b - line_a; + double lv = line_v0.squaredNorm(); + + const Vec2d segment_v = segment_b - segment_a; + const double segment_l = segment_v.norm(); + const double offset2 = offset * offset; + + bool intersects = false; + if (lv < SCALED_EPSILON * SCALED_EPSILON) + { + // Very short line vector. Just test whether the center point is inside the offset line. + Vec2d lpt = 0.5 * (line_a + line_b); + + if (segment_l > SCALED_EPSILON) { + intersects = (segment_a - lpt).squaredNorm() < offset2; + intersects |= (segment_b - lpt).squaredNorm() < offset2; + if (! intersects) { + + } + } else + intersects = (0.5 * (segment_a + segment_b) - lpt).squaredNorm() < offset2; + if (intersects) { + out_interval.first = 0.; + out_interval.second = sqrt(lv); + } + } + else + { + // Output interval. + double tmin = std::numeric_limits<double>::max(); + double tmax = -tmin; + auto extend_interval = [&tmin, &tmax](double atmin, double atmax) { + tmin = std::min(tmin, atmin); + tmax = std::max(tmax, atmax); + }; + + // Intersections with the inflated segment end points. + auto ray_circle_intersection_interval_extend = [&extend_interval, &line_v0](const Vec2d &segment_pt, const double offset2, const Vec2d &line_pt, const Vec2d &line_vec) { + std::pair<Vec2d, Vec2d> pts; + Vec2d p0 = line_pt - segment_pt; + double c = - line_pt.dot(p0); + if (Geometry::ray_circle_intersections_r2_lv2_c(offset2, line_vec.x(), line_vec.y(), line_vec.squaredNorm(), c, pts)) { + double tmin = (pts.first - p0).dot(line_v0); + double tmax = (pts.second - p0).dot(line_v0); + if (tmin > tmax) + std::swap(tmin, tmax); + tmin = std::max(tmin, 0.); + tmax = std::min(tmax, 1.); + if (tmin <= tmax) + extend_interval(tmin, tmax); + } + }; + + // Intersections with the inflated segment. + if (segment_l > SCALED_EPSILON) { + ray_circle_intersection_interval_extend(segment_a, offset2, line_a, line_v0); + ray_circle_intersection_interval_extend(segment_b, offset2, line_a, line_v0); + // Clip the line segment transformed into a coordinate space of the segment, + // where the segment spans (0, 0) to (segment_l, 0). + const Vec2d dir_x = segment_v / segment_l; + const Vec2d dir_y(- dir_x.y(), dir_x.x()); + std::pair<double, double> interval; + if (Geometry::liang_barsky_line_clipping_interval( + Vec2d(line_a - segment_a), + Vec2d(line_v0.dot(dir_x), line_v0.dot(dir_y)), + BoundingBoxf(Vec2d(0., - offset), Vec2d(segment_l, offset)), + interval)) + extend_interval(interval.first, interval.second); + } else + ray_circle_intersection_interval_extend(0.5 * (segment_a + segment_b), offset, line_a, line_v0); + + intersects = tmin <= tmax; + if (intersects) { + lv = sqrt(lv); + out_interval.first = tmin * lv; + out_interval.second = tmax * lv; + } + } + + return intersects; } -static inline double segment_point_distance_squared(const Vec2d &p1a, const Vec2d &p1b, const Vec2d &p2) +static inline bool inside_interval(float low, float high, float p) { - const Vec2d v = p1b - p1a; - const double l2 = v.squaredNorm(); - if (l2 < EPSILON) - // p1a == p1b - return (p2 - p1a).squaredNorm(); - return segment_point_distance_squared(p1a, p1b, v, v.squaredNorm(), p2); + return p >= low && p <= high; } -// Distance to the closest point of line. -static inline double min_distance_of_segments(const Vec2d &p1a, const Vec2d &p1b, const Vec2d &p2a, const Vec2d &p2b) +static inline bool interval_inside_interval(float outer_low, float outer_high, float inner_low, float inner_high, float epsilon) { - Vec2d v1 = p1b - p1a; - double l1_2 = v1.squaredNorm(); - if (l1_2 < EPSILON) - // p1a == p1b: Return distance of p1a from the (p2a, p2b) segment. - return segment_point_distance_squared(p2a, p2b, p1a); + outer_low -= epsilon; + outer_high += epsilon; + return inside_interval(outer_low, outer_high, inner_low) && inside_interval(outer_low, outer_high, inner_high); +} - Vec2d v2 = p2b - p2a; - double l2_2 = v2.squaredNorm(); - if (l2_2 < EPSILON) - // p2a == p2b: Return distance of p2a from the (p1a, p1b) segment. - return segment_point_distance_squared(p1a, p1b, v1, l1_2, p2a); - - return std::min( - std::min(segment_point_distance_squared(p1a, p1b, v1, l1_2, p2a), segment_point_distance_squared(p1a, p1b, v1, l1_2, p2b)), - std::min(segment_point_distance_squared(p2a, p2b, v2, l2_2, p1a), segment_point_distance_squared(p2a, p2b, v2, l2_2, p1b))); +static inline bool cyclic_interval_inside_interval(float outer_low, float outer_high, float inner_low, float inner_high, float length) +{ + if (outer_low > outer_high) + outer_high += length; + if (inner_low > inner_high) + inner_high += length; + else if (inner_high < outer_low) { + inner_low += length; + inner_high += length; + } + return interval_inside_interval(outer_low, outer_high, inner_low, inner_high, float(SCALED_EPSILON)); } // Mark the segments of split boundary as consumed if they are very close to some of the infill line. void mark_boundary_segments_touching_infill( - const std::vector<Points> &boundary, - std::vector<std::vector<ContourPointData>> &boundary_data, - const BoundingBox &boundary_bbox, - const Polylines &infill, - const double clip_distance, - const double distance_colliding) + // Boundary contour, along which the perimeter extrusions will be drawn. + const std::vector<Points> &boundary, + // Parametrization of boundary with Euclidian length. + const std::vector<std::vector<float>> &boundary_parameters, + // Intersections (T-joints) of the infill lines with the boundary. + std::vector<std::vector<ContourIntersectionPoint*>> &boundary_intersections, + // Bounding box around the boundary. + const BoundingBox &boundary_bbox, + // Infill lines, either completely inside the boundary, or touching the boundary. + const Polylines &infill, + // How much of the infill ends should be ignored when marking the boundary segments? + const double clip_distance, + // Roughly width of the infill line. + const double distance_colliding) { + assert(boundary.size() == boundary_parameters.size()); +#ifndef NDEBUG + for (size_t i = 0; i < boundary.size(); ++ i) + assert(boundary[i].size() + 1 == boundary_parameters[i].size()); +#endif + EdgeGrid::Grid grid; grid.set_bbox(boundary_bbox); // Inflate the bounding box by a thick line width. - grid.create(boundary, clip_distance + scale_(10.)); + grid.create(boundary, std::max(clip_distance, distance_colliding) + scale_(10.)); + // Visitor for the EdgeGrid to trim boundary_intersections with existing infill lines. struct Visitor { - Visitor(const EdgeGrid::Grid &grid, const std::vector<Points> &boundary, std::vector<std::vector<ContourPointData>> &boundary_data, const double dist2_max) : - grid(grid), boundary(boundary), boundary_data(boundary_data), dist2_max(dist2_max) {} + Visitor(const EdgeGrid::Grid &grid, + const std::vector<Points> &boundary, const std::vector<std::vector<float>> &boundary_parameters, std::vector<std::vector<ContourIntersectionPoint*>> &boundary_intersections, + const double radius) : + grid(grid), boundary(boundary), boundary_parameters(boundary_parameters), boundary_intersections(boundary_intersections), radius(radius) {} - void init(const Vec2d &pt1, const Vec2d &pt2) { - this->pt1 = &pt1; - this->pt2 = &pt2; + // Init with a segment of an infill line. + void init(const Vec2d &infill_pt1, const Vec2d &infill_pt2) { + this->infill_pt1 = &infill_pt1; + this->infill_pt2 = &infill_pt2; } bool operator()(coord_t iy, coord_t ix) { @@ -730,16 +1081,42 @@ void mark_boundary_segments_touching_infill( auto segment = this->grid.segment(*it_contour_and_segment); const Vec2d seg_pt1 = segment.first.cast<double>(); const Vec2d seg_pt2 = segment.second.cast<double>(); - if (min_distance_of_segments(seg_pt1, seg_pt2, *this->pt1, *this->pt2) < this->dist2_max) { - // Mark this boundary segment as touching the infill line. - ContourPointData &bdp = boundary_data[it_contour_and_segment->first][it_contour_and_segment->second]; - bdp.segment_consumed = true; - // There is no need for checking seg_pt2 as it will be checked the next time. - bool point_touching = false; - if (segment_point_distance_squared(*this->pt1, *this->pt2, seg_pt1) < this->dist2_max) { - point_touching = true; - bdp.point_consumed = true; - } + std::pair<double, double> interval; + if (line_rounded_thick_segment_collision(seg_pt1, seg_pt2, *this->infill_pt1, *this->infill_pt2, this->radius, interval)) { + // The boundary segment intersects with the infill segment thickened by radius. + // Interval is specified in Euclidian length from seg_pt1 to seg_pt2. + // 1) Find the Euclidian parameters of seg_pt1 and seg_pt2 on its boundary contour. + const std::vector<float> &contour_parameters = boundary_parameters[it_contour_and_segment->first]; + const float contour_length = contour_parameters.back(); + const float param_seg_pt1 = contour_parameters[it_contour_and_segment->second]; + const float param_overlap1 = param_seg_pt1 + interval.first; + const float param_overlap2 = param_seg_pt1 + interval.second; + // 2) Find the ContourIntersectionPoints before param_overlap1 and after param_overlap2. + std::vector<ContourIntersectionPoint*> &intersections = boundary_intersections[it_contour_and_segment->first]; + // Find the span of ContourIntersectionPoints, that is trimmed by the interval (param_overlap1, param_overlap2). + ContourIntersectionPoint *ip_low, *ip_high; + { + auto it_low = Slic3r::lower_bound_by_predicate(intersections.begin(), intersections.end(), [param_overlap1](const ContourIntersectionPoint *l) { return l->param < param_overlap1; }); + auto it_high = Slic3r::lower_bound_by_predicate(intersections.begin(), intersections.end(), [param_overlap2](const ContourIntersectionPoint *l) { return l->param < param_overlap2; }); + ip_low = it_low == intersections.end() ? intersections.front() : *it_low; + ip_high = it_high == intersections.end() ? intersections.front() : *it_high; + if (ip_low->param != param_overlap1) + ip_low = ip_low->prev_on_contour; + } + assert(ip_low != ip_high); + // Verify that the interval (param_overlap1, param_overlap2) is inside the interval (ip_low->param, ip_high->param). + assert(cyclic_interval_inside_interval(ip_low->param, ip_high->param, param_overlap1, param_overlap2, contour_length)); + // Mark all ContourIntersectionPoints between ip_low and ip_high as consumed. + if (ip_low->next_on_contour != ip_high) + for (ContourIntersectionPoint *ip = ip_low->next_on_contour; ip->next_on_contour != ip_high; ip = ip->next_on_contour) { + ip->consume_prev(); + ip->consume_next(); + } + // Subtract the interval from the first and last segments. + ip_low->trim_next(closed_contour_distance_ccw(ip_low->param, param_overlap1, contour_length)); + ip_high->trim_prev(closed_contour_distance_ccw(param_overlap2, ip_high->param, contour_length)); + //FIXME mark point as consumed? + //FIXME verify the sequence between prev and next? #if 0 { static size_t iRun = 0; @@ -758,15 +1135,16 @@ void mark_boundary_segments_touching_infill( return true; } - const EdgeGrid::Grid &grid; - const std::vector<Points> &boundary; - std::vector<std::vector<ContourPointData>> &boundary_data; + const EdgeGrid::Grid &grid; + const std::vector<Points> &boundary; + const std::vector<std::vector<float>> &boundary_parameters; + std::vector<std::vector<ContourIntersectionPoint*>> &boundary_intersections; // Maximum distance between the boundary and the infill line allowed to consider the boundary not touching the infill line. - const double dist2_max; + const double radius; - const Vec2d *pt1; - const Vec2d *pt2; - } visitor(grid, boundary, boundary_data, distance_colliding * distance_colliding); + const Vec2d *infill_pt1; + const Vec2d *infill_pt2; + } visitor(grid, boundary, boundary_parameters, boundary_intersections, distance_colliding); BoundingBoxf bboxf(boundary_bbox.min.cast<double>(), boundary_bbox.max.cast<double>()); bboxf.offset(- SCALED_EPSILON); @@ -832,89 +1210,46 @@ void mark_boundary_segments_touching_infill( } } -#if 0 -static double compute_distance_to_consumed_point(const std::vector<Points> & boundary, - const std::vector<std::vector<ContourPointData>> &boundary_data, - size_t contour_idx, - size_t point_index, - bool forward) -{ - Point predecessor = boundary[contour_idx][point_index]; - double total_distance = 0; - - do { - if (forward) - point_index = (point_index == (boundary[contour_idx].size() - 1)) ? 0 : (point_index + 1); - else - point_index = (point_index > 0) ? (point_index - 1) : (boundary[contour_idx].size() - 1); - - Point successor = boundary[contour_idx][point_index]; - total_distance += (successor - predecessor).cast<double>().norm(); - predecessor = successor; - } while (!boundary_data[contour_idx][point_index].point_consumed); - - return total_distance; -} -#endif - -// Returns possible path for an added hook. The path shrinks to max_lenght, by the closest consumed point or by the closest point in not_connected -// Also returns not shrink path's length to closest consumed point or closest point in not_connected -static std::pair<Points, double> get_hook_path(const std::vector<Points> &boundary, - const std::vector<std::vector<ContourPointData>> &boundary_data, - size_t contour_idx, - size_t point_index, - bool forward, - int hook_length, - std::unordered_set<Point, PointHash> ¬_connected) -{ - double total_distance = 0; - - Points points; - points.emplace_back(boundary[contour_idx][point_index]); - - // Follow the path around the boundary to consumed point or to the point in not_connected - do { - if (forward) - point_index = (point_index == (boundary[contour_idx].size() - 1)) ? 0 : (point_index + 1); - else - point_index = (point_index > 0) ? (point_index - 1) : (boundary[contour_idx].size() - 1); - - Point successor = boundary[contour_idx][point_index]; - total_distance += (successor - points.back()).cast<double>().norm(); - points.emplace_back(successor); - } while (!boundary_data[contour_idx][point_index].point_consumed && total_distance < hook_length && - not_connected.find(points.back()) == not_connected.end()); - - // If the path is longer than hook_length, shrink it to this its length - if (total_distance > hook_length) { - Vec2d vector = (points.back() - points[points.size() - 2]).cast<double>(); - double vector_length = vector.norm(); - double shrink_vec_length = vector_length - (total_distance - hook_length); - - points.back() = ((vector / vector_length) * shrink_vec_length).cast<coord_t>() + points[points.size() - 2]; - // total_distance += (shrink_vec_length - vector_length); - } - - return std::make_pair(points, total_distance); -} - void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_src, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length) { - assert(! infill_ordered.empty()); assert(! boundary_src.contour.points.empty()); + BoundingBox bbox = get_extents(boundary_src.contour); + bbox.offset(SCALED_EPSILON); - BoundingBox bbox = get_extents(boundary_src.contour); - bbox.offset(SCALED_EPSILON); + auto polygons_src = reserve_vector<const Polygon*>(boundary_src.holes.size() + 1); + polygons_src.emplace_back(&boundary_src.contour); + for (const Polygon &polygon : boundary_src.holes) + polygons_src.emplace_back(&polygon); + + connect_infill(std::move(infill_ordered), polygons_src, bbox, polylines_out, spacing, params, hook_length); +} + +void Fill::connect_infill(Polylines &&infill_ordered, const Polygons &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length) +{ + auto polygons_src = reserve_vector<const Polygon*>(boundary_src.size()); + for (const Polygon &polygon : boundary_src) + polygons_src.emplace_back(&polygon); + + connect_infill(std::move(infill_ordered), polygons_src, bbox, polylines_out, spacing, params, hook_length); +} + +void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Polygon*> &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length) +{ + assert(! infill_ordered.empty()); + +#if 0 + append(polylines_out, infill_ordered); + return; +#endif // 1) Add the end points of infill_ordered to boundary_src. - std::vector<Points> boundary; - std::vector<std::vector<ContourPointData>> boundary_data; - boundary.assign(boundary_src.holes.size() + 1, Points()); - boundary_data.assign(boundary_src.holes.size() + 1, std::vector<ContourPointData>()); + std::vector<Points> boundary; + std::vector<std::vector<float>> boundary_params; + boundary.assign(boundary_src.size(), Points()); + boundary_params.assign(boundary_src.size(), std::vector<float>()); // Mapping the infill_ordered end point to a (contour, point) of boundary. - std::vector<std::pair<size_t, size_t>> map_infill_end_point_to_boundary; - static constexpr auto boundary_idx_unconnected = std::numeric_limits<size_t>::max(); - map_infill_end_point_to_boundary.assign(infill_ordered.size() * 2, std::pair<size_t, size_t>(boundary_idx_unconnected, boundary_idx_unconnected)); + static constexpr auto boundary_idx_unconnected = std::numeric_limits<size_t>::max(); + std::vector<ContourIntersectionPoint> map_infill_end_point_to_boundary(infill_ordered.size() * 2, ContourIntersectionPoint{ boundary_idx_unconnected, boundary_idx_unconnected }); { // Project the infill_ordered end points onto boundary_src. std::vector<std::pair<EdgeGrid::Grid::ClosestPointResult, size_t>> intersection_points; @@ -941,54 +1276,96 @@ void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_ } auto it = intersection_points.begin(); auto it_end = intersection_points.end(); - for (size_t idx_contour = 0; idx_contour <= boundary_src.holes.size(); ++ idx_contour) { - const Polygon &contour_src = (idx_contour == 0) ? boundary_src.contour : boundary_src.holes[idx_contour - 1]; + std::vector<std::vector<ContourIntersectionPoint*>> boundary_intersection_points(boundary.size(), std::vector<ContourIntersectionPoint*>()); + for (size_t idx_contour = 0; idx_contour < boundary_src.size(); ++ idx_contour) { + // Copy contour_src to contour_dst while adding intersection points. + // Map infill end points map_infill_end_point_to_boundary to the newly inserted boundary points of contour_dst. + // chain the points of map_infill_end_point_to_boundary along their respective contours. + const Polygon &contour_src = *boundary_src[idx_contour]; Points &contour_dst = boundary[idx_contour]; + std::vector<ContourIntersectionPoint*> &contour_intersection_points = boundary_intersection_points[idx_contour]; + ContourIntersectionPoint *pfirst = nullptr; + ContourIntersectionPoint *pprev = nullptr; + { + // Reserve intersection points. + size_t n_intersection_points = 0; + for (auto itx = it; itx != it_end && itx->first.contour_idx == idx_contour; ++ itx) + ++ n_intersection_points; + contour_intersection_points.reserve(n_intersection_points); + } for (size_t idx_point = 0; idx_point < contour_src.points.size(); ++ idx_point) { contour_dst.emplace_back(contour_src.points[idx_point]); for (; it != it_end && it->first.contour_idx == idx_contour && it->first.start_point_idx == idx_point; ++ it) { // Add these points to the destination contour. - const Vec2d pt1 = contour_src[idx_point].cast<double>(); - const Vec2d pt2 = (idx_point + 1 == contour_src.size() ? contour_src.points.front() : contour_src.points[idx_point + 1]).cast<double>(); - const Vec2d pt = lerp(pt1, pt2, it->first.t); - map_infill_end_point_to_boundary[it->second] = std::make_pair(idx_contour, contour_dst.size()); - contour_dst.emplace_back(pt.cast<coord_t>()); +#ifndef NDEBUG + const Polyline &infill_line = infill_ordered[it->second / 2]; + const Point &pt = (it->second & 1) ? infill_line.points.back() : infill_line.points.front(); + { + const Vec2d pt1 = contour_src[idx_point].cast<double>(); + const Vec2d pt2 = (idx_point + 1 == contour_src.size() ? contour_src.points.front() : contour_src.points[idx_point + 1]).cast<double>(); + const Vec2d ptx = lerp(pt1, pt2, it->first.t); + assert(std::abs(pt.x() - pt.x()) < SCALED_EPSILON); + assert(std::abs(pt.y() - pt.y()) < SCALED_EPSILON); + } +#endif // NDEBUG + map_infill_end_point_to_boundary[it->second] = ContourIntersectionPoint{ idx_contour, contour_dst.size() }; + ContourIntersectionPoint *pthis = &map_infill_end_point_to_boundary[it->second]; + if (pprev) { + pprev->next_on_contour = pthis; + pthis->prev_on_contour = pprev; + } else + pfirst = pthis; + contour_intersection_points.emplace_back(pthis); + pprev = pthis; + //add new point here + contour_dst.emplace_back(pt); } + if (pprev != pfirst) { + pprev->next_on_contour = pfirst; + pfirst->prev_on_contour = pprev; + } } - // Parametrize the curve. - std::vector<ContourPointData> &contour_data = boundary_data[idx_contour]; - contour_data.reserve(contour_dst.size()); - contour_data.emplace_back(ContourPointData(0.f)); + // Parametrize the new boundary with the intersection points inserted. + std::vector<float> &contour_params = boundary_params[idx_contour]; + contour_params.assign(contour_dst.size() + 1, 0.f); for (size_t i = 1; i < contour_dst.size(); ++ i) - contour_data.emplace_back(contour_data.back().param + (contour_dst[i].cast<float>() - contour_dst[i - 1].cast<float>()).norm()); - contour_data.front().param = contour_data.back().param + (contour_dst.back().cast<float>() - contour_dst.front().cast<float>()).norm(); + contour_params[i] = contour_params[i - 1] + (contour_dst[i].cast<float>() - contour_dst[i - 1].cast<float>()).norm(); + contour_params.back() = contour_params[contour_params.size() - 2] + (contour_dst.back().cast<float>() - contour_dst.front().cast<float>()).norm(); + // Map parameters from contour_params to boundary_intersection_points. + for (ContourIntersectionPoint *ip : contour_intersection_points) + ip->param = contour_params[ip->point_idx]; + // and measure distance to the previous and next intersection point. + const float contour_length = contour_params.back(); + for (ContourIntersectionPoint *ip : contour_intersection_points) { + ip->contour_not_taken_length_prev = closed_contour_distance_ccw(ip->prev_on_contour->param, ip->param, contour_length); + ip->contour_not_taken_length_next = closed_contour_distance_ccw(ip->param, ip->next_on_contour->param, contour_length); + } } - assert(boundary.size() == boundary_src.num_contours()); + assert(boundary.size() == boundary_src.size()); #if 0 // Adaptive Cubic Infill produces infill lines, which not always end at the outer boundary. assert(std::all_of(map_infill_end_point_to_boundary.begin(), map_infill_end_point_to_boundary.end(), - [&boundary](const std::pair<size_t, size_t> &contour_point) { - return contour_point.first < boundary.size() && contour_point.second < boundary[contour_point.first].size(); + [&boundary](const ContourIntersectionPoint &contour_point) { + return contour_point.contour_idx < boundary.size() && contour_point.point_idx < boundary[contour_point.contour_idx].size(); })); #endif - } - // Mark the points and segments of split boundary as consumed if they are very close to some of the infill line. - { - // @supermerill used 2. * scale_(spacing) - const double clip_distance = 3. * scale_(spacing); - const double distance_colliding = 1.1 * scale_(spacing); - mark_boundary_segments_touching_infill(boundary, boundary_data, bbox, infill_ordered, clip_distance, distance_colliding); + // Mark the points and segments of split boundary as consumed if they are very close to some of the infill line. + { + // @supermerill used 2. * scale_(spacing) + const double clip_distance = 3. * scale_(spacing); + const double distance_colliding = 1.1 * scale_(spacing); + mark_boundary_segments_touching_infill(boundary, boundary_params, boundary_intersection_points, bbox, infill_ordered, clip_distance, distance_colliding); + } } // Connection from end of one infill line to the start of another infill line. //const float length_max = scale_(spacing); -// const float length_max = scale_((2. / params.density) * spacing); - const float length_max = scale_((1000. / params.density) * spacing); +// const auto length_max = float(scale_((2. / params.density) * spacing)); + const auto length_max = float(scale_((1000. / params.density) * spacing)); std::vector<size_t> merged_with(infill_ordered.size()); - for (size_t i = 0; i < merged_with.size(); ++ i) - merged_with[i] = i; + std::iota(merged_with.begin(), merged_with.end(), 0); struct ConnectionCost { ConnectionCost(size_t idx_first, double cost, bool reversed) : idx_first(idx_first), cost(cost), reversed(reversed) {} size_t idx_first; @@ -1000,136 +1377,149 @@ void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_ for (size_t idx_chain = 1; idx_chain < infill_ordered.size(); ++ idx_chain) { const Polyline &pl1 = infill_ordered[idx_chain - 1]; const Polyline &pl2 = infill_ordered[idx_chain]; - const std::pair<size_t, size_t> *cp1 = &map_infill_end_point_to_boundary[(idx_chain - 1) * 2 + 1]; - const std::pair<size_t, size_t> *cp2 = &map_infill_end_point_to_boundary[idx_chain * 2]; - if (cp1->first != boundary_idx_unconnected && cp1->first == cp2->first) { + const ContourIntersectionPoint *cp1 = &map_infill_end_point_to_boundary[(idx_chain - 1) * 2 + 1]; + const ContourIntersectionPoint *cp2 = &map_infill_end_point_to_boundary[idx_chain * 2]; + if (cp1->contour_idx != boundary_idx_unconnected && cp1->contour_idx == cp2->contour_idx) { // End points on the same contour. Try to connect them. - const std::vector<ContourPointData> &contour_data = boundary_data[cp1->first]; - float param_lo = (cp1->second == 0) ? 0.f : contour_data[cp1->second].param; - float param_hi = (cp2->second == 0) ? 0.f : contour_data[cp2->second].param; - float param_end = contour_data.front().param; - bool reversed = false; - if (param_lo > param_hi) { - std::swap(param_lo, param_hi); - reversed = true; - } - assert(param_lo >= 0.f && param_lo <= param_end); - assert(param_hi >= 0.f && param_hi <= param_end); - double len = param_hi - param_lo; - if (len < length_max) - connections_sorted.emplace_back(idx_chain - 1, len, reversed); - len = param_lo + param_end - param_hi; - if (len < length_max) - connections_sorted.emplace_back(idx_chain - 1, len, ! reversed); + std::pair<float, float> len = path_lengths_along_contour(cp1, cp2, boundary_params[cp1->contour_idx].back()); + if (len.first < length_max) + connections_sorted.emplace_back(idx_chain - 1, len.first, false); + if (len.second < length_max) + connections_sorted.emplace_back(idx_chain - 1, len.second, true); } } std::sort(connections_sorted.begin(), connections_sorted.end(), [](const ConnectionCost& l, const ConnectionCost& r) { return l.cost < r.cost; }); - size_t idx_chain_last = 0; - for (ConnectionCost &connection_cost : connections_sorted) { - const std::pair<size_t, size_t> *cp1 = &map_infill_end_point_to_boundary[connection_cost.idx_first * 2 + 1]; - const std::pair<size_t, size_t> *cp1prev = cp1 - 1; - const std::pair<size_t, size_t> *cp2 = &map_infill_end_point_to_boundary[(connection_cost.idx_first + 1) * 2]; - const std::pair<size_t, size_t> *cp2next = cp2 + 1; - assert(cp1->first == cp2->first && cp1->first != boundary_idx_unconnected); - std::vector<ContourPointData> &contour_data = boundary_data[cp1->first]; - if (connection_cost.reversed) - std::swap(cp1, cp2); - // Mark the the other end points of the segments to be taken as consumed temporarily, so they will not be crossed - // by the new connection line. - bool prev_marked = false; - bool next_marked = false; - if (cp1prev->first == cp1->first && ! contour_data[cp1prev->second].point_consumed) { - contour_data[cp1prev->second].point_consumed = true; - prev_marked = true; - } - if (cp2next->first == cp1->first && ! contour_data[cp2next->second].point_consumed) { - contour_data[cp2next->second].point_consumed = true; - next_marked = true; - } - if (could_take(contour_data, cp1->second, cp2->second)) { - // Indices of the polygons to be connected. - size_t idx_first = connection_cost.idx_first; - size_t idx_second = idx_first + 1; - for (size_t last = idx_first;;) { - size_t lower = merged_with[last]; - if (lower == last) { - merged_with[idx_first] = lower; - idx_first = lower; - break; - } - last = lower; - } - // Connect the two polygons using the boundary contour. - take(infill_ordered[idx_first], std::move(infill_ordered[idx_second]), boundary[cp1->first], contour_data, cp1->second, cp2->second, connection_cost.reversed); - // Mark the second polygon as merged with the first one. - merged_with[idx_second] = merged_with[idx_first]; - } - if (prev_marked) - contour_data[cp1prev->second].point_consumed = false; - if (next_marked) - contour_data[cp2next->second].point_consumed = false; - } - - auto get_merged_index = [&merged_with](size_t polyline_idx) { + auto get_and_update_merged_with = [&merged_with](size_t polyline_idx) -> size_t { for (size_t last = polyline_idx;;) { size_t lower = merged_with[last]; + assert(lower <= last); if (lower == last) { - merged_with[polyline_idx] = lower; - polyline_idx = lower; - break; + merged_with[polyline_idx] = last; + return last; } last = lower; } - - return polyline_idx; + assert(false); + return std::numeric_limits<size_t>::max(); }; - if (hook_length != 0) { - // Create a set of points which has not been connected by the previous part of the algorithm - std::unordered_set<Point, PointHash> not_connect_points; - for (const std::pair<size_t, size_t> &contour_point : map_infill_end_point_to_boundary) - if (contour_point.first != boundary_idx_unconnected && !boundary_data[contour_point.first][contour_point.second].point_consumed) - not_connect_points.emplace(boundary[contour_point.first][contour_point.second]); - - for (size_t endpoint_idx = 0; endpoint_idx < map_infill_end_point_to_boundary.size(); ++endpoint_idx) { - Polyline &polyline = infill_ordered[get_merged_index(endpoint_idx / 2)]; - const std::pair<size_t, size_t> &contour_point = map_infill_end_point_to_boundary[endpoint_idx]; - - if (contour_point.first != boundary_idx_unconnected && !boundary_data[contour_point.first][contour_point.second].point_consumed) { - Point boundary_point = boundary[contour_point.first][contour_point.second]; - auto [points_forward, forward_free_length] = get_hook_path(boundary, boundary_data, contour_point.first, contour_point.second, true, - hook_length, not_connect_points); - Points hook_points; - // Check if the hook could fit in space in the direction of perimeters - if (forward_free_length >= hook_length) { - hook_points = std::move(points_forward); - } else { - auto [points_backward, backward_free_length] = get_hook_path(boundary, boundary_data, contour_point.first, contour_point.second, - false, hook_length, not_connect_points); - // Check if the hook could fit in space in the opposite direction of perimeters. - // In this direction could be another hook. Because of it, it is required free space of size at least 2 * hook_length - if (backward_free_length >= (2 * hook_length)) - hook_points = std::move(points_backward); - else - continue; - } - - // Identify if the front point or back point of the polyline is touching the boundary - if ((boundary_point - polyline.points.front()).cast<double>().squaredNorm() <= (SCALED_EPSILON * SCALED_EPSILON)) { - Points merged_points; - merged_points.reserve(polyline.points.size() + hook_points.size() - 1); - - for (auto it = hook_points.rbegin(); it != hook_points.rend() - 1; ++it) merged_points.emplace_back(*it); - - append(merged_points, std::move(polyline.points)); - polyline.points = std::move(merged_points); - } else { - for (auto it = hook_points.begin() + 1; it != hook_points.end(); ++it) polyline.points.emplace_back(*it); + const float take_max_length = hook_length > 0.f ? hook_length : std::numeric_limits<float>::max(); + const float line_half_width = 0.5f * scale_(spacing); + for (ConnectionCost &connection_cost : connections_sorted) { + ContourIntersectionPoint *cp1 = &map_infill_end_point_to_boundary[connection_cost.idx_first * 2 + 1]; + ContourIntersectionPoint *cp2 = &map_infill_end_point_to_boundary[(connection_cost.idx_first + 1) * 2]; + assert(cp1 != cp2); + assert(cp1->contour_idx == cp2->contour_idx && cp1->contour_idx != boundary_idx_unconnected); + if (cp1->consumed || cp2->consumed) + continue; + const float length = connection_cost.cost; + bool could_connect; + { + // cp1, cp2 sorted CCW. + ContourIntersectionPoint *cp_low = connection_cost.reversed ? cp2 : cp1; + ContourIntersectionPoint *cp_high = connection_cost.reversed ? cp1 : cp2; + assert(std::abs(length - closed_contour_distance_ccw(cp_low->param, cp_high->param, boundary_params[cp1->contour_idx].back())) < SCALED_EPSILON); + could_connect = ! cp_low->next_trimmed && ! cp_high->prev_trimmed; + if (! could_connect && cp_low->next_on_contour != cp_high) { + // Other end of cp1, may or may not be on the same contour as cp1. + const ContourIntersectionPoint* cp1prev = cp1 - 1; + // Other end of cp2, may or may not be on the same contour as cp2. + const ContourIntersectionPoint* cp2next = cp2 + 1; + for (auto *cp = cp_low->next_on_contour; cp->next_on_contour != cp_high; cp = cp->next_on_contour) { + if (cp->consumed || cp == cp1prev || cp == cp2next || cp->prev_trimmed || cp->next_trimmed) { + could_connect = false; + break; + } + } + } + } + // Indices of the polylines to be connected by a perimeter segment. + size_t idx_first = connection_cost.idx_first; + size_t idx_second = idx_first + 1; + idx_first = get_and_update_merged_with(idx_first); + assert(idx_first < idx_second); + assert(idx_second == merged_with[idx_second]); + if (could_connect && (hook_length == 0.f || length < hook_length * 2.5)) { + // Take the complete contour. + // Connect the two polygons using the boundary contour. + take(infill_ordered[idx_first], infill_ordered[idx_second], boundary[cp1->contour_idx], cp1, cp2, connection_cost.reversed); + // Mark the second polygon as merged with the first one. + merged_with[idx_second] = merged_with[idx_first]; + infill_ordered[idx_second].points.clear(); + } else { + // Try to connect cp1 resp. cp2 with a piece of perimeter line. + take_limited(infill_ordered[idx_first], boundary[cp1->contour_idx], boundary_params[cp1->contour_idx], cp1, cp2, connection_cost.reversed, take_max_length, line_half_width); + take_limited(infill_ordered[idx_second], boundary[cp1->contour_idx], boundary_params[cp1->contour_idx], cp2, cp1, ! connection_cost.reversed, take_max_length, line_half_width); + } + } + + // Connect the remaining open infill lines to the perimeter lines if possible. + for (ContourIntersectionPoint &contour_point : map_infill_end_point_to_boundary) + if (! contour_point.consumed && contour_point.contour_idx != boundary_idx_unconnected) { + const Points &contour = boundary[contour_point.contour_idx]; + const std::vector<float> &contour_params = boundary_params[contour_point.contour_idx]; + const size_t contour_pt_idx = contour_point.point_idx; + + float lprev = contour_point.could_connect_prev() ? + path_length_along_contour_ccw(contour_point.prev_on_contour, &contour_point, contour_params.back()) : + std::numeric_limits<float>::max(); + float lnext = contour_point.could_connect_next() ? + path_length_along_contour_ccw(&contour_point, contour_point.next_on_contour, contour_params.back()) : + std::numeric_limits<float>::max(); + size_t polyline_idx = get_and_update_merged_with(((&contour_point - map_infill_end_point_to_boundary.data()) / 2)); + Polyline &polyline = infill_ordered[polyline_idx]; + assert(! polyline.empty()); + assert(contour[contour_point.point_idx] == polyline.points.front() || contour[contour_point.point_idx] == polyline.points.back()); + bool connected = false; + for (float l : { std::min(lprev, lnext), std::max(lprev, lnext) }) { + if (l == std::numeric_limits<float>::max() || (hook_length > 0.f && l > hook_length * 2.5)) + break; + // Take the complete contour. + bool reversed = l == lprev; + ContourIntersectionPoint *cp2 = reversed ? contour_point.prev_on_contour : contour_point.next_on_contour; + // Identify which end of the polyline touches the boundary. + size_t polyline_idx2 = get_and_update_merged_with(((cp2 - map_infill_end_point_to_boundary.data()) / 2)); + if (polyline_idx == polyline_idx2) + // Try the other side. + continue; + // Not closing a loop. + if (contour[contour_point.point_idx] == polyline.points.front()) + polyline.reverse(); + Polyline &polyline2 = infill_ordered[polyline_idx2]; + assert(! polyline.empty()); + assert(contour[cp2->point_idx] == polyline2.points.front() || contour[cp2->point_idx] == polyline2.points.back()); + if (contour[cp2->point_idx] == polyline2.points.back()) + polyline2.reverse(); + take(polyline, polyline2, contour, &contour_point, cp2, reversed); + if (polyline_idx < polyline_idx2) { + // Mark the second polyline as merged with the first one. + merged_with[polyline_idx2] = polyline_idx; + polyline2.points.clear(); + } else { + // Mark the first polyline as merged with the second one. + merged_with[polyline_idx] = polyline_idx2; + polyline2 = std::move(polyline); + polyline.points.clear(); + } + connected = true; + break; + } + if (! connected) { + // Which to take? One could optimize for: + // 1) Shortest path + // 2) Hook length + // ... + // Let's take the longer now, as this improves the chance of another hook to be placed on the other side of this contour point. + float l = std::max(contour_point.contour_not_taken_length_prev, contour_point.contour_not_taken_length_next); + if (l > SCALED_EPSILON) { + if (contour_point.contour_not_taken_length_prev > contour_point.contour_not_taken_length_next) + take_limited(polyline, contour, contour_params, &contour_point, contour_point.prev_on_contour, true, take_max_length, line_half_width); + else + take_limited(polyline, contour, contour_params, &contour_point, contour_point.next_on_contour, false, take_max_length, line_half_width); } } } - } polylines_out.reserve(polylines_out.size() + std::count_if(infill_ordered.begin(), infill_ordered.end(), [](const Polyline &pl) { return ! pl.empty(); })); for (Polyline &pl : infill_ordered) diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index 0df4bd6c1..87885e655 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -124,7 +124,9 @@ protected: virtual std::pair<float, Point> _infill_direction(const Surface *surface) const; public: - static void connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, Polylines &polylines_out, double spacing, const FillParams ¶ms, const int hook_length = 0); + static void connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length = 0); + static void connect_infill(Polylines &&infill_ordered, const Polygons &boundary, const BoundingBox& bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length = 0); + static void connect_infill(Polylines &&infill_ordered, const std::vector<const Polygon*> &boundary, const BoundingBox &bbox, Polylines &polylines_out, double spacing, const FillParams ¶ms, const int hook_length = 0); static coord_t _adjust_solid_spacing(const coord_t width, const coord_t distance); diff --git a/src/libslic3r/Fill/FillRectilinear2.cpp b/src/libslic3r/Fill/FillRectilinear2.cpp index 493bb7c6f..a110dd144 100644 --- a/src/libslic3r/Fill/FillRectilinear2.cpp +++ b/src/libslic3r/Fill/FillRectilinear2.cpp @@ -7,12 +7,14 @@ #include <random> #include <boost/container/small_vector.hpp> +#include <boost/log/trivial.hpp> #include <boost/static_assert.hpp> #include "../ClipperUtils.hpp" #include "../ExPolygon.hpp" #include "../Geometry.hpp" #include "../Surface.hpp" +#include "../ShortestPath.hpp" #include "FillRectilinear2.hpp" @@ -128,6 +130,13 @@ struct SegmentIntersection return coord_t(p / int64_t(pos_q)); } + // Left vertical line / contour intersection point. + // null if next_on_contour_vertical. + int32_t prev_on_contour { 0 }; + // Right vertical line / contour intersection point. + // If next_on_contour_vertical, then then next_on_contour contains next contour point on the same vertical line. + int32_t next_on_contour { 0 }; + // Kind of intersection. With the original contour, or with the inner offestted contour? // A vertical segment will be at least intersected by OUTER_LOW, OUTER_HIGH, // but it could be intersected with OUTER_LOW, INNER_LOW, INNER_HIGH, OUTER_HIGH, @@ -141,13 +150,6 @@ struct SegmentIntersection }; SegmentIntersectionType type { UNKNOWN }; - // Left vertical line / contour intersection point. - // null if next_on_contour_vertical. - int32_t prev_on_contour { 0 }; - // Right vertical line / contour intersection point. - // If next_on_contour_vertical, then then next_on_contour contains next contour point on the same vertical line. - int32_t next_on_contour { 0 }; - enum class LinkType : uint8_t { // Horizontal link (left or right). Horizontal, @@ -383,30 +385,31 @@ public: const ExPolygon &expolygon, float angle, coord_t aoffset1, - coord_t aoffset2) + // If the 2nd offset is zero, then it is ignored and only OUTER_LOW / OUTER_HIGH intersections are + // populated into vertical intersection lines. + coord_t aoffset2 = 0) { // Copy and rotate the source polygons. polygons_src = expolygon; - polygons_src.contour.rotate(angle); - for (Polygons::iterator it = polygons_src.holes.begin(); it != polygons_src.holes.end(); ++ it) - it->rotate(angle); + if (angle != 0.f) { + polygons_src.contour.rotate(angle); + for (Polygon &hole : polygons_src.holes) + hole.rotate(angle); + } double mitterLimit = 3.; // for the infill pattern, don't cut the corners. // default miterLimt = 3 //double mitterLimit = 10.; assert(aoffset1 < 0); - assert(aoffset2 < 0); - assert(aoffset2 < aoffset1); + assert(aoffset2 <= 0); + assert(aoffset2 == 0 || aoffset2 < aoffset1); // bool sticks_removed = remove_sticks(polygons_src); -// if (sticks_removed) printf("Sticks removed!\n"); - polygons_outer = offset(polygons_src, float(aoffset1), - ClipperLib::jtMiter, - mitterLimit); - polygons_inner = offset(polygons_outer, float(aoffset2 - aoffset1), - ClipperLib::jtMiter, - mitterLimit); +// if (sticks_removed) BOOST_LOG_TRIVIAL(error) << "Sticks removed!"; + polygons_outer = offset(polygons_src, float(aoffset1), ClipperLib::jtMiter, mitterLimit); + if (aoffset2 < 0) + polygons_inner = offset(polygons_outer, float(aoffset2 - aoffset1), ClipperLib::jtMiter, mitterLimit); // Filter out contours with zero area or small area, contours with 2 points only. const double min_area_threshold = 0.01 * aoffset2 * aoffset2; remove_small(polygons_outer, min_area_threshold); @@ -424,6 +427,18 @@ public: } } + ExPolygonWithOffset(const ExPolygonWithOffset &rhs, float angle) : ExPolygonWithOffset(rhs) { + if (angle != 0.f) { + this->polygons_src.contour.rotate(angle); + for (Polygon &hole : this->polygons_src.holes) + hole.rotate(angle); + for (Polygon &poly : this->polygons_outer) + poly.rotate(angle); + for (Polygon &poly : this->polygons_inner) + poly.rotate(angle); + } + } + // Any contour with offset1 bool is_contour_outer(size_t idx) const { return idx < n_contours_outer; } // Any contour with offset2 @@ -2644,7 +2659,7 @@ bool FillRectilinear2::fill_surface_by_lines(const Surface *surface, const FillP Point refpt = rotate_vector.second.rotated(- rotate_vector.first); // _align_to_grid will not work correctly with positive pattern_shift. coord_t pattern_shift_scaled = coord_t(scale_(pattern_shift)) % line_spacing; - refpt(0) -= (pattern_shift_scaled >= 0) ? pattern_shift_scaled : (line_spacing + pattern_shift_scaled); + refpt.x() -= (pattern_shift_scaled >= 0) ? pattern_shift_scaled : (line_spacing + pattern_shift_scaled); bounding_box.merge(_align_to_grid( bounding_box.min, Point(line_spacing, line_spacing), @@ -2747,12 +2762,93 @@ bool FillRectilinear2::fill_surface_by_lines(const Surface *surface, const FillP return true; } +#define FILL_MULTIPLE_SWEEPS_NEW + +#ifdef FILL_MULTIPLE_SWEEPS_NEW +bool FillRectilinear2::fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out) +{ + assert(sweep_params.size() > 1); + assert(! params.full_infill()); + params.density /= double(sweep_params.size()); + assert(params.density > 0.0001f && params.density <= 1.f); + + ExPolygonWithOffset poly_with_offset_base(surface->expolygon, 0, float(scale_(this->overlap - 0.5 * this->spacing))); + if (poly_with_offset_base.n_contours == 0) + // Not a single infill line fits. + return true; + + Polylines fill_lines; + coord_t line_spacing = coord_t(scale_(this->spacing) / params.density); + std::pair<float, Point> rotate_vector = this->_infill_direction(surface); + for (const SweepParams &sweep : sweep_params) { + size_t n_fill_lines_initial = fill_lines.size(); + + // Rotate polygons so that we can work with vertical lines here + double angle = rotate_vector.first + sweep.angle_base; + ExPolygonWithOffset poly_with_offset(poly_with_offset_base, - angle); + BoundingBox bounding_box = poly_with_offset.bounding_box_src(); + // extend bounding box so that our pattern will be aligned with other layers + // Transform the reference point to the rotated coordinate system. + Point refpt = rotate_vector.second.rotated(- angle); + // _align_to_grid will not work correctly with positive pattern_shift. + coord_t pattern_shift_scaled = coord_t(scale_(sweep.pattern_shift)) % line_spacing; + refpt.x() -= (pattern_shift_scaled >= 0) ? pattern_shift_scaled : (line_spacing + pattern_shift_scaled); + bounding_box.merge(_align_to_grid(bounding_box.min, Point(line_spacing, line_spacing), refpt)); + + // Intersect a set of euqally spaced vertical lines wiht expolygon. + // n_vlines = ceil(bbox_width / line_spacing) + const size_t n_vlines = (bounding_box.max.x() - bounding_box.min.x() + line_spacing - 1) / line_spacing; + const double cos_a = cos(angle); + const double sin_a = sin(angle); + for (const SegmentedIntersectionLine &vline : slice_region_by_vertical_lines(poly_with_offset, n_vlines, bounding_box.min.x(), line_spacing)) { + for (auto it = vline.intersections.begin(); it != vline.intersections.end();) { + auto it_low = it ++; + assert(it_low->type == SegmentIntersection::OUTER_LOW); + if (it_low->type != SegmentIntersection::OUTER_LOW) + continue; + auto it_high = it; + assert(it_high->type == SegmentIntersection::OUTER_HIGH); + if (it_high->type == SegmentIntersection::OUTER_HIGH) { + fill_lines.emplace_back(Point(vline.pos, it_low->pos()).rotated(cos_a, sin_a), Point(vline.pos, it_high->pos()).rotated(cos_a, sin_a)); + ++ it; + } + } + } + } + + if (fill_lines.size() > 1) + fill_lines = chain_polylines(std::move(fill_lines)); + + if (params.dont_connect || fill_lines.size() <= 1) + append(polylines_out, std::move(fill_lines)); + else { +// coord_t hook_length = 0; + coord_t hook_length = coord_t(scale_(this->spacing)) * 5; + connect_infill(std::move(fill_lines), poly_with_offset_base.polygons_outer, get_extents(surface->expolygon.contour), polylines_out, this->spacing, params, hook_length); + } + + return true; +} +#else +bool FillRectilinear2::fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out) +{ + params.density /= double(sweep_params.size()); + bool success = true; + int idx = 0; + for (const SweepParams &sweep_param : sweep_params) { + if (++ idx == 3) + params.dont_connect = true; + success &= this->fill_surface_by_lines(surface, params, sweep_param.angle_base, sweep_param.pattern_shift, polylines_out); + } + return success; +} +#endif + Polylines FillRectilinear2::fill_surface(const Surface *surface, const FillParams ¶ms) { Polylines polylines_out; - if (! fill_surface_by_lines(surface, params, 0.f, 0.f, polylines_out)) { - printf("FillRectilinear2::fill_surface() failed to fill a region.\n"); - } + if (! fill_surface_by_lines(surface, params, 0.f, 0.f, polylines_out)) + BOOST_LOG_TRIVIAL(error) << "FillRectilinear2::fill_surface() failed to fill a region."; return polylines_out; } @@ -2761,72 +2857,53 @@ Polylines FillMonotonic::fill_surface(const Surface *surface, const FillParams & FillParams params2 = params; params2.monotonic = true; Polylines polylines_out; - if (! fill_surface_by_lines(surface, params2, 0.f, 0.f, polylines_out)) { - printf("FillMonotonic::fill_surface() failed to fill a region.\n"); - } + if (! fill_surface_by_lines(surface, params2, 0.f, 0.f, polylines_out)) + BOOST_LOG_TRIVIAL(error) << "FillMonotonous::fill_surface() failed to fill a region."; return polylines_out; } Polylines FillGrid2::fill_surface(const Surface *surface, const FillParams ¶ms) { - // Each linear fill covers half of the target coverage. - FillParams params2 = params; - params2.density *= 0.5f; Polylines polylines_out; - if (! fill_surface_by_lines(surface, params2, 0.f, 0.f, polylines_out) || - ! fill_surface_by_lines(surface, params2, float(M_PI / 2.), 0.f, polylines_out)) { - printf("FillGrid2::fill_surface() failed to fill a region.\n"); - } + if (! this->fill_surface_by_multilines( + surface, params, + { { 0.f, 0.f }, { float(M_PI / 2.), 0.f } }, + polylines_out)) + BOOST_LOG_TRIVIAL(error) << "FillGrid2::fill_surface() failed to fill a region."; return polylines_out; } Polylines FillTriangles::fill_surface(const Surface *surface, const FillParams ¶ms) { - // Each linear fill covers 1/3 of the target coverage. - FillParams params2 = params; - params2.density *= 0.333333333f; - FillParams params3 = params2; - params3.dont_connect = true; Polylines polylines_out; - if (! fill_surface_by_lines(surface, params2, 0.f, 0., polylines_out) || - ! fill_surface_by_lines(surface, params2, float(M_PI / 3.), 0., polylines_out) || - ! fill_surface_by_lines(surface, params3, float(2. * M_PI / 3.), 0., polylines_out)) { - printf("FillTriangles::fill_surface() failed to fill a region.\n"); - } + if (! this->fill_surface_by_multilines( + surface, params, + { { 0.f, 0.f }, { float(M_PI / 3.), 0.f }, { float(2. * M_PI / 3.), 0. } }, + polylines_out)) + BOOST_LOG_TRIVIAL(error) << "FillTriangles::fill_surface() failed to fill a region."; return polylines_out; } Polylines FillStars::fill_surface(const Surface *surface, const FillParams ¶ms) { - // Each linear fill covers 1/3 of the target coverage. - FillParams params2 = params; - params2.density *= 0.333333333f; - FillParams params3 = params2; - params3.dont_connect = true; Polylines polylines_out; - if (! fill_surface_by_lines(surface, params2, 0.f, 0., polylines_out) || - ! fill_surface_by_lines(surface, params2, float(M_PI / 3.), 0., polylines_out) || - ! fill_surface_by_lines(surface, params3, float(2. * M_PI / 3.), 0.5 * this->spacing / params2.density, polylines_out)) { - printf("FillStars::fill_surface() failed to fill a region.\n"); - } + if (! this->fill_surface_by_multilines( + surface, params, + { { 0.f, 0.f }, { float(M_PI / 3.), 0.f }, { float(2. * M_PI / 3.), float((3./2.) * this->spacing / params.density) } }, + polylines_out)) + BOOST_LOG_TRIVIAL(error) << "FillStars::fill_surface() failed to fill a region."; return polylines_out; } Polylines FillCubic::fill_surface(const Surface *surface, const FillParams ¶ms) { - // Each linear fill covers 1/3 of the target coverage. - FillParams params2 = params; - params2.density *= 0.333333333f; - FillParams params3 = params2; - params3.dont_connect = true; Polylines polylines_out; coordf_t dx = sqrt(0.5) * z; - if (! fill_surface_by_lines(surface, params2, 0.f, float(dx), polylines_out) || - ! fill_surface_by_lines(surface, params2, float(M_PI / 3.), - float(dx), polylines_out) || - // Rotated by PI*2/3 + PI to achieve reverse sloping wall. - ! fill_surface_by_lines(surface, params3, float(M_PI * 2. / 3.), float(dx), polylines_out)) { - printf("FillCubic::fill_surface() failed to fill a region.\n"); - } + if (! this->fill_surface_by_multilines( + surface, params, + { { 0.f, float(dx) }, { float(M_PI / 3.), - float(dx) }, { float(M_PI * 2. / 3.), float(dx) } }, + polylines_out)) + BOOST_LOG_TRIVIAL(error) << "FillCubic::fill_surface() failed to fill a region."; return polylines_out; } diff --git a/src/libslic3r/Fill/FillRectilinear2.hpp b/src/libslic3r/Fill/FillRectilinear2.hpp index fd28f155d..1d8c61a94 100644 --- a/src/libslic3r/Fill/FillRectilinear2.hpp +++ b/src/libslic3r/Fill/FillRectilinear2.hpp @@ -17,7 +17,16 @@ public: virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); protected: + // Fill by single directional lines, interconnect the lines along perimeters. bool fill_surface_by_lines(const Surface *surface, const FillParams ¶ms, float angleBase, float pattern_shift, Polylines &polylines_out); + + + // Fill by multiple sweeps of differing directions. + struct SweepParams { + float angle_base; + float pattern_shift; + }; + bool fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out); }; class FillMonotonic : public FillRectilinear2 diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index 3b9fcd617..b263aecfd 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -338,19 +338,19 @@ double rad2deg_dir(double angle) return rad2deg(angle); } -Point circle_taubin_newton(const Points::const_iterator& input_begin, const Points::const_iterator& input_end, size_t cycles) +Point circle_center_taubin_newton(const Points::const_iterator& input_begin, const Points::const_iterator& input_end, size_t cycles) { Vec2ds tmp; tmp.reserve(std::distance(input_begin, input_end)); std::transform(input_begin, input_end, std::back_inserter(tmp), [] (const Point& in) { return unscale(in); } ); - Vec2d center = circle_taubin_newton(tmp.cbegin(), tmp.end(), cycles); + Vec2d center = circle_center_taubin_newton(tmp.cbegin(), tmp.end(), cycles); return Point::new_scale(center.x(), center.y()); } /// Adapted from work in "Circular and Linear Regression: Fitting circles and lines by least squares", pg 126 /// Returns a point corresponding to the center of a circle for which all of the points from input_begin to input_end /// lie on. -Vec2d circle_taubin_newton(const Vec2ds::const_iterator& input_begin, const Vec2ds::const_iterator& input_end, size_t cycles) +Vec2d circle_center_taubin_newton(const Vec2ds::const_iterator& input_begin, const Vec2ds::const_iterator& input_end, size_t cycles) { // calculate the centroid of the data set const Vec2d sum = std::accumulate(input_begin, input_end, Vec2d(0,0)); diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index b690b478d..2bf9453c4 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -201,6 +201,58 @@ inline double ray_point_distance(const Line &iline, const Point &ipt) } // Based on Liang-Barsky function by Daniel White @ http://www.skytopia.com/project/articles/compsci/clipping.html +template<typename T> +inline bool liang_barsky_line_clipping_interval( + // Start and end points of the source line, result will be stored there as well. + const Eigen::Matrix<T, 2, 1, Eigen::DontAlign> &x0, + const Eigen::Matrix<T, 2, 1, Eigen::DontAlign> &v, + // Bounding box to clip with. + const BoundingBoxBase<Eigen::Matrix<T, 2, 1, Eigen::DontAlign>> &bbox, + std::pair<double, double> &out_interval) +{ + double t0 = 0.0; + double t1 = 1.0; + // Traverse through left, right, bottom, top edges. + for (int edge = 0; edge < 4; ++ edge) + { + double p, q; + switch (edge) { + case 0: p = - v.x(); q = - bbox.min.x() + x0.x(); break; + case 1: p = v.x(); q = bbox.max.x() - x0.x(); break; + case 2: p = - v.y(); q = - bbox.min.y() + x0.y(); break; + default: p = v.y(); q = bbox.max.y() - x0.y(); break; + } + + if (p == 0) { + if (q < 0) + // Line parallel to the bounding box edge is fully outside of the bounding box. + return false; + // else don't clip + } else { + double r = q / p; + if (p < 0) { + if (r > t1) + // Fully clipped. + return false; + if (r > t0) + // Partially clipped. + t0 = r; + } else { + assert(p > 0); + if (r < t0) + // Fully clipped. + return false; + if (r < t1) + // Partially clipped. + t1 = r; + } + } + } + out_interval.first = t0; + out_interval.second = t1; + return true; +} + template<typename T> inline bool liang_barsky_line_clipping( // Start and end points of the source line, result will be stored there as well. @@ -210,49 +262,12 @@ inline bool liang_barsky_line_clipping( const BoundingBoxBase<Eigen::Matrix<T, 2, 1, Eigen::DontAlign>> &bbox) { Eigen::Matrix<T, 2, 1, Eigen::DontAlign> v = x1 - x0; - double t0 = 0.0; - double t1 = 1.0; - - // Traverse through left, right, bottom, top edges. - for (int edge = 0; edge < 4; ++ edge) - { - double p, q; - switch (edge) { - case 0: p = - v.x(); q = - bbox.min.x() + x0.x(); break; - case 1: p = v.x(); q = bbox.max.x() - x0.x(); break; - case 2: p = - v.y(); q = - bbox.min.y() + x0.y(); break; - default: p = v.y(); q = bbox.max.y() - x0.y(); break; - } - - if (p == 0) { - if (q < 0) - // Line parallel to the bounding box edge is fully outside of the bounding box. - return false; - // else don't clip - } else { - double r = q / p; - if (p < 0) { - if (r > t1) - // Fully clipped. - return false; - if (r > t0) - // Partially clipped. - t0 = r; - } else { - assert(p > 0); - if (r < t0) - // Fully clipped. - return false; - if (r < t1) - // Partially clipped. - t1 = r; - } - } + std::pair<double, double> interval; + if (liang_barsky_line_clipping_interval(x0, v, bbox, interval)) { + // Clipped successfully. + x1 = x0 + interval.second * v; + x0 += interval.first * v; } - - // Clipped successfully. - x1 = x0 + t1 * v; - x0 += t0 * v; return true; } @@ -273,6 +288,35 @@ bool liang_barsky_line_clipping( return liang_barsky_line_clipping(x0clip, x1clip, bbox); } +// Ugly named variant, that accepts the squared line +// Don't call me with a nearly zero length vector! +template<typename T> +int ray_circle_intersections_r2_lv2_c(T r2, T a, T b, T lv2, T c, std::pair<Eigen::Matrix<T, 2, 1, Eigen::DontAlign>, Eigen::Matrix<T, 2, 1, Eigen::DontAlign>> &out) +{ + T x0 = - a * c / lv2; + T y0 = - b * c / lv2; + T d = r2 - c * c / lv2; + if (d < T(0)) + return 0; + T mult = sqrt(d / lv2); + out.first.x() = x0 + b * mult; + out.first.y() = y0 - a * mult; + out.second.x() = x0 - b * mult; + out.second.y() = y0 + a * mult; + return mult == T(0) ? 1 : 2; +} +template<typename T> +int ray_circle_intersections(T r, T a, T b, T c, std::pair<Eigen::Matrix<T, 2, 1, Eigen::DontAlign>, Eigen::Matrix<T, 2, 1, Eigen::DontAlign>> &out) +{ + T lv2 = a * a + b * b; + if (lv2 < T(SCALED_EPSILON * SCALED_EPSILON)) { + //FIXME what is the correct epsilon? + // What if the line touches the circle? + return false; + } + return ray_circle_intersections_r2_lv2_c2(r * r, a, b, a * a + b * b, c, out); +} + Pointf3s convex_hull(Pointf3s points); Polygon convex_hull(Points points); Polygon convex_hull(const Polygons &polygons); @@ -298,12 +342,12 @@ template<typename T> T angle_to_0_2PI(T angle) } /// Find the center of the circle corresponding to the vector of Points as an arc. -Point circle_taubin_newton(const Points::const_iterator& input_start, const Points::const_iterator& input_end, size_t cycles = 20); -inline Point circle_taubin_newton(const Points& input, size_t cycles = 20) { return circle_taubin_newton(input.cbegin(), input.cend(), cycles); } +Point circle_center_taubin_newton(const Points::const_iterator& input_start, const Points::const_iterator& input_end, size_t cycles = 20); +inline Point circle_center_taubin_newton(const Points& input, size_t cycles = 20) { return circle_center_taubin_newton(input.cbegin(), input.cend(), cycles); } /// Find the center of the circle corresponding to the vector of Pointfs as an arc. -Vec2d circle_taubin_newton(const Vec2ds::const_iterator& input_start, const Vec2ds::const_iterator& input_end, size_t cycles = 20); -inline Vec2d circle_taubin_newton(const Vec2ds& input, size_t cycles = 20) { return circle_taubin_newton(input.cbegin(), input.cend(), cycles); } +Vec2d circle_center_taubin_newton(const Vec2ds::const_iterator& input_start, const Vec2ds::const_iterator& input_end, size_t cycles = 20); +inline Vec2d circle_center_taubin_newton(const Vec2ds& input, size_t cycles = 20) { return circle_center_taubin_newton(input.cbegin(), input.cend(), cycles); } void simplify_polygons(const Polygons &polygons, double tolerance, Polygons* retval); diff --git a/src/libslic3r/Point.hpp b/src/libslic3r/Point.hpp index 5082bb746..1e7ca1656 100644 --- a/src/libslic3r/Point.hpp +++ b/src/libslic3r/Point.hpp @@ -132,6 +132,7 @@ public: void rotate(double angle, const Point ¢er); Point rotated(double angle) const { Point res(*this); res.rotate(angle); return res; } + Point rotated(double cos_a, double sin_a) const { Point res(*this); res.rotate(cos_a, sin_a); return res; } Point rotated(double angle, const Point ¢er) const { Point res(*this); res.rotate(angle, center); return res; } int nearest_point_index(const Points &points) const; int nearest_point_index(const PointConstPtrs &points) const; @@ -174,6 +175,12 @@ inline bool is_approx(const Vec3d &p1, const Vec3d &p2, double epsilon = EPSILON return d.x() < epsilon && d.y() < epsilon && d.z() < epsilon; } +inline Point lerp(const Point &a, const Point &b, double t) +{ + assert((t >= -EPSILON) && (t <= 1. + EPSILON)); + return ((1. - t) * a.cast<double>() + t * b.cast<double>()).cast<coord_t>(); +} + namespace int128 { // Exact orientation predicate, // returns +1: CCW, 0: collinear, -1: CW. diff --git a/src/libslic3r/libslic3r.h b/src/libslic3r/libslic3r.h index a404d230d..4371cbeee 100644 --- a/src/libslic3r/libslic3r.h +++ b/src/libslic3r/libslic3r.h @@ -103,12 +103,6 @@ enum Axis { NUM_AXES_WITH_UNKNOWN, }; -template <class T> -inline void append_to(std::vector<T> &dst, const std::vector<T> &src) -{ - dst.insert(dst.end(), src.begin(), src.end()); -} - template <typename T> inline void append(std::vector<T>& dest, const std::vector<T>& src) { @@ -123,8 +117,34 @@ inline void append(std::vector<T>& dest, std::vector<T>&& src) { if (dest.empty()) dest = std::move(src); - else + else { + dest.reserve(dest.size() + src.size()); std::move(std::begin(src), std::end(src), std::back_inserter(dest)); + } + src.clear(); + src.shrink_to_fit(); +} + +// Append the source in reverse. +template <typename T> +inline void append_reversed(std::vector<T>& dest, const std::vector<T>& src) +{ + if (dest.empty()) + dest = src; + else + dest.insert(dest.end(), src.rbegin(), src.rend()); +} + +// Append the source in reverse. +template <typename T> +inline void append_reversed(std::vector<T>& dest, std::vector<T>&& src) +{ + if (dest.empty()) + dest = std::move(src); + else { + dest.reserve(dest.size() + src.size()); + std::move(std::rbegin(src), std::rend(src), std::back_inserter(dest)); + } src.clear(); src.shrink_to_fit(); } diff --git a/tests/libslic3r/test_geometry.cpp b/tests/libslic3r/test_geometry.cpp index 6f2bd1c39..24e0908cc 100644 --- a/tests/libslic3r/test_geometry.cpp +++ b/tests/libslic3r/test_geometry.cpp @@ -168,21 +168,21 @@ SCENARIO("Circle Fit, TaubinFit with Newton's method", "[Geometry]") { WHEN("Circle fit is called on the entire array") { Vec2d result_center(0,0); - result_center = Geometry::circle_taubin_newton(sample); + result_center = Geometry::circle_center_taubin_newton(sample); THEN("A center point of -6,0 is returned.") { REQUIRE(is_approx(result_center, expected_center)); } } WHEN("Circle fit is called on the first four points") { Vec2d result_center(0,0); - result_center = Geometry::circle_taubin_newton(sample.cbegin(), sample.cbegin()+4); + result_center = Geometry::circle_center_taubin_newton(sample.cbegin(), sample.cbegin()+4); THEN("A center point of -6,0 is returned.") { REQUIRE(is_approx(result_center, expected_center)); } } WHEN("Circle fit is called on the middle four points") { Vec2d result_center(0,0); - result_center = Geometry::circle_taubin_newton(sample.cbegin()+2, sample.cbegin()+6); + result_center = Geometry::circle_center_taubin_newton(sample.cbegin()+2, sample.cbegin()+6); THEN("A center point of -6,0 is returned.") { REQUIRE(is_approx(result_center, expected_center)); } @@ -199,21 +199,21 @@ SCENARIO("Circle Fit, TaubinFit with Newton's method", "[Geometry]") { WHEN("Circle fit is called on the entire array") { Vec2d result_center(0,0); - result_center = Geometry::circle_taubin_newton(sample); + result_center = Geometry::circle_center_taubin_newton(sample); THEN("A center point of 3,9 is returned.") { REQUIRE(is_approx(result_center, expected_center)); } } WHEN("Circle fit is called on the first four points") { Vec2d result_center(0,0); - result_center = Geometry::circle_taubin_newton(sample.cbegin(), sample.cbegin()+4); + result_center = Geometry::circle_center_taubin_newton(sample.cbegin(), sample.cbegin()+4); THEN("A center point of 3,9 is returned.") { REQUIRE(is_approx(result_center, expected_center)); } } WHEN("Circle fit is called on the middle four points") { Vec2d result_center(0,0); - result_center = Geometry::circle_taubin_newton(sample.cbegin()+2, sample.cbegin()+6); + result_center = Geometry::circle_center_taubin_newton(sample.cbegin()+2, sample.cbegin()+6); THEN("A center point of 3,9 is returned.") { REQUIRE(is_approx(result_center, expected_center)); } @@ -230,21 +230,21 @@ SCENARIO("Circle Fit, TaubinFit with Newton's method", "[Geometry]") { WHEN("Circle fit is called on the entire array") { Point result_center(0,0); - result_center = Geometry::circle_taubin_newton(sample); + result_center = Geometry::circle_center_taubin_newton(sample); THEN("A center point of scaled 3,9 is returned.") { REQUIRE(is_approx(result_center, expected_center)); } } WHEN("Circle fit is called on the first four points") { Point result_center(0,0); - result_center = Geometry::circle_taubin_newton(sample.cbegin(), sample.cbegin()+4); + result_center = Geometry::circle_center_taubin_newton(sample.cbegin(), sample.cbegin()+4); THEN("A center point of scaled 3,9 is returned.") { REQUIRE(is_approx(result_center, expected_center)); } } WHEN("Circle fit is called on the middle four points") { Point result_center(0,0); - result_center = Geometry::circle_taubin_newton(sample.cbegin()+2, sample.cbegin()+6); + result_center = Geometry::circle_center_taubin_newton(sample.cbegin()+2, sample.cbegin()+6); THEN("A center point of scaled 3,9 is returned.") { REQUIRE(is_approx(result_center, expected_center)); } From 139b58a6f2583b929f897331d11490640f9cb977 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Fri, 6 Nov 2020 08:56:53 +0100 Subject: [PATCH 018/138] Adaptive Cubic infill with anchors: Trimming anchors with not only with a neighbor T-joint line, but also with other crossing lines. --- src/libslic3r/Fill/FillAdaptive.cpp | 92 ++++++++++++++++------------- 1 file changed, 50 insertions(+), 42 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 65a7b95d6..cbe1f26a6 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -564,8 +564,8 @@ struct Intersection // Point for which is computed closest line (closest_line) Point intersect_point; - // Index of the polyline from which is computed closest_line - size_t intersect_pl_idx; + // Index of the source infill from which is computed closest_line + size_t intersect_line_idx; // Pointer to the polyline from which is computed closest_line Polyline *intersect_pl; // The line for which is computed closest line from intersect_point to closest_line @@ -654,12 +654,7 @@ static void add_hook(const Intersection &intersection, const double scaled_spaci Vector hook_vector = (hook_length * hook_vector_norm).cast<coord_t>(); Line hook_forward(hook_start, hook_start + hook_vector); - auto filter_itself = [&intersection](const auto &item) { - const rtree_segment_t &seg = item.first; - const Point &i_point = intersection.intersect_point; - return !((float(i_point.x()) == bg::get<0, 0>(seg) && float(i_point.y()) == bg::get<0, 1>(seg)) || - (float(i_point.x()) == bg::get<1, 0>(seg) && float(i_point.y()) == bg::get<1, 1>(seg))); - }; + auto filter_itself = [&intersection](const auto &item) { return item.second != intersection.intersect_line_idx; }; std::vector<std::pair<rtree_segment_t, size_t>> hook_intersections; rtree.query(bgi::intersects(mk_rtree_seg(hook_forward)) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); @@ -792,17 +787,18 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b auto update_merged_polyline = [&lines, &merged_with](Intersection &intersection) { // Update the polyline index to index which is merged - for (size_t last = intersection.intersect_pl_idx;;) { + size_t intersect_pl_idx = intersection.intersect_pl - lines.data(); + for (size_t last = intersect_pl_idx;;) { size_t lower = merged_with[last]; if (lower == last) { - merged_with[intersection.intersect_pl_idx] = lower; - intersection.intersect_pl_idx = lower; + merged_with[intersect_pl_idx] = lower; + intersect_pl_idx = lower; break; } last = lower; } - intersection.intersect_pl = &lines[intersection.intersect_pl_idx]; + intersection.intersect_pl = &lines[intersect_pl_idx]; // After polylines are merged, it is necessary to update "forward" based on if intersect_point is the first or the last point of intersect_pl. if (intersection.fresh()) intersection.front = intersection.intersect_pl->points.front() == intersection.intersect_point; @@ -854,41 +850,53 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b Point first_i_point, nearest_i_point; if (first_i.intersect_line.intersection(offset_line, &first_i_point) && nearest_i.intersect_line.intersection(offset_line, &nearest_i_point)) { + bool connected = false; if (nearest_i.fresh() && (nearest_i_point - first_i_point).cast<double>().squaredNorm() <= Slic3r::sqr(3. * hook_length)) { // Both intersections are so close that their polylines can be connected. - if (first_i.intersect_pl_idx == nearest_i.intersect_pl_idx) { - // Both intersections are on the same polyline, that means a loop is being closed. - if (! first_i.front) - std::swap(first_i_point, nearest_i_point); - first_i.intersect_pl->points.front() = first_i_point; - first_i.intersect_pl->points.back() = nearest_i_point; - //FIXME trim the end of a closed loop a bit? - first_i.intersect_pl->points.emplace(first_i.intersect_pl->points.begin(), nearest_i_point); - } else { - // Both intersections are on different polylines - Points &first_points = first_i.intersect_pl->points; - Points &second_points = nearest_i.intersect_pl->points; - first_points.reserve(first_points.size() + second_points.size()); - if (first_i.front) - std::reverse(first_points.begin(), first_points.end()); - first_points.back() = first_i_point; - first_points.emplace_back(nearest_i_point); - if (nearest_i.front) - first_points.insert(first_points.end(), second_points.begin() + 1, second_points.end()); - else - first_points.insert(first_points.end(), second_points.rbegin() + 1, second_points.rend()); - // Keep the polyline at the lower index slot. - if (first_i.intersect_pl_idx < nearest_i.intersect_pl_idx) { - second_points.clear(); - merged_with[nearest_i.intersect_pl_idx] = merged_with[first_i.intersect_pl_idx]; + // Verify that no other infill line intersects this anchor line. + std::vector<std::pair<rtree_segment_t, size_t>> hook_intersections; + rtree.query( + bgi::intersects(mk_rtree_seg(first_i_point, nearest_i_point)) && + bgi::satisfies([&first_i, &nearest_i](const auto &item) { return item.second != first_i.intersect_line_idx && item.second != nearest_i.intersect_line_idx; }), + std::back_inserter(hook_intersections)); + if (hook_intersections.empty()) { + // No other infill line intersects this anchor line. Extrude it as a whole. + if (first_i.intersect_pl == nearest_i.intersect_pl) { + // Both intersections are on the same polyline, that means a loop is being closed. + if (! first_i.front) + std::swap(first_i_point, nearest_i_point); + first_i.intersect_pl->points.front() = first_i_point; + first_i.intersect_pl->points.back() = nearest_i_point; + //FIXME trim the end of a closed loop a bit? + first_i.intersect_pl->points.emplace(first_i.intersect_pl->points.begin(), nearest_i_point); } else { - second_points = std::move(first_points); - first_points.clear(); - merged_with[first_i.intersect_pl_idx] = merged_with[nearest_i.intersect_pl_idx]; + // Both intersections are on different polylines + Points &first_points = first_i.intersect_pl->points; + Points &second_points = nearest_i.intersect_pl->points; + first_points.reserve(first_points.size() + second_points.size()); + if (first_i.front) + std::reverse(first_points.begin(), first_points.end()); + first_points.back() = first_i_point; + first_points.emplace_back(nearest_i_point); + if (nearest_i.front) + first_points.insert(first_points.end(), second_points.begin() + 1, second_points.end()); + else + first_points.insert(first_points.end(), second_points.rbegin() + 1, second_points.rend()); + // Keep the polyline at the lower index slot. + if (first_i.intersect_pl < nearest_i.intersect_pl) { + second_points.clear(); + merged_with[nearest_i.intersect_pl - lines.data()] = merged_with[first_i.intersect_pl - lines.data()]; + } else { + second_points = std::move(first_points); + first_points.clear(); + merged_with[first_i.intersect_pl - lines.data()] = merged_with[nearest_i.intersect_pl - lines.data()]; + } } + nearest_i.used = true; + connected = true; } - nearest_i.used = true; - } else + } + if (! connected) // Try to connect left or right. If not enough space for hook_length, take the longer side. add_hook(first_i, scale_(spacing), hook_length, rtree); first_i.used = true; From 517477f0ddfc18522f9a58e3b2cc3e443f321cc1 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Fri, 6 Nov 2020 16:24:15 +0100 Subject: [PATCH 019/138] Fix of the previous Adaptive Cubic infill refactoring plus couple of fixes of the old logic. --- src/libslic3r/BoundingBox.hpp | 4 + src/libslic3r/EdgeGrid.hpp | 4 + src/libslic3r/Fill/FillAdaptive.cpp | 158 ++++++++++++++++++---------- src/libslic3r/Fill/FillBase.cpp | 10 +- 4 files changed, 115 insertions(+), 61 deletions(-) diff --git a/src/libslic3r/BoundingBox.hpp b/src/libslic3r/BoundingBox.hpp index 065476cb2..819162ec9 100644 --- a/src/libslic3r/BoundingBox.hpp +++ b/src/libslic3r/BoundingBox.hpp @@ -47,6 +47,7 @@ public: void translate(coordf_t x, coordf_t y) { assert(this->defined); PointClass v(x, y); this->min += v; this->max += v; } void translate(const Vec2d &v) { this->min += v; this->max += v; } void offset(coordf_t delta); + BoundingBoxBase<PointClass> inflated(coordf_t delta) const throw() { BoundingBoxBase<PointClass> out(*this); out.offset(delta); return out; } PointClass center() const; bool contains(const PointClass &point) const { return point(0) >= this->min(0) && point(0) <= this->max(0) @@ -91,6 +92,7 @@ public: void translate(coordf_t x, coordf_t y, coordf_t z) { assert(this->defined); PointClass v(x, y, z); this->min += v; this->max += v; } void translate(const Vec3d &v) { this->min += v; this->max += v; } void offset(coordf_t delta); + BoundingBoxBase<PointClass> inflated(coordf_t delta) const throw() { BoundingBoxBase<PointClass> out(*this); out.offset(delta); return out; } PointClass center() const; coordf_t max_size() const; @@ -159,6 +161,8 @@ public: BoundingBox(const Point &pmin, const Point &pmax) : BoundingBoxBase<Point>(pmin, pmax) {} BoundingBox(const Points &points) : BoundingBoxBase<Point>(points) {} + BoundingBox inflated(coordf_t delta) const throw() { BoundingBox out(*this); out.offset(delta); return out; } + friend BoundingBox get_extents_rotated(const Points &points, double angle); }; diff --git a/src/libslic3r/EdgeGrid.hpp b/src/libslic3r/EdgeGrid.hpp index fc8e2c8ad..71d636628 100644 --- a/src/libslic3r/EdgeGrid.hpp +++ b/src/libslic3r/EdgeGrid.hpp @@ -231,6 +231,10 @@ public: std::pair<std::vector<std::pair<size_t, size_t>>::const_iterator, std::vector<std::pair<size_t, size_t>>::const_iterator> cell_data_range(coord_t row, coord_t col) const { + assert(row >= 0); + assert(row < m_rows); + assert(col >= 0); + assert(col < m_cols); const EdgeGrid::Grid::Cell &cell = m_cells[row * m_cols + col]; return std::make_pair(m_cell_data.begin() + cell.begin, m_cell_data.begin() + cell.end); } diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index cbe1f26a6..b8b18e3a6 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -508,7 +508,7 @@ static void generate_infill_lines_recursive( #endif #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT -static void export_infill_lines_to_svg(const ExPolygon &expoly, const Polylines &polylines, const std::string &path) +static void export_infill_lines_to_svg(const ExPolygon &expoly, const Polylines &polylines, const std::string &path, const Points &pts = Points()) { BoundingBox bbox = get_extents(expoly); bbox.offset(scale_(3.)); @@ -518,38 +518,40 @@ static void export_infill_lines_to_svg(const ExPolygon &expoly, const Polylines svg.draw_outline(expoly, "green"); svg.draw(polylines, "red"); static constexpr double trim_length = scale_(0.4); - for (Polyline polyline : polylines) { - Vec2d a = polyline.points.front().cast<double>(); - Vec2d d = polyline.points.back().cast<double>(); - if (polyline.size() == 2) { - Vec2d v = d - a; - double l = v.norm(); - if (l > 2. * trim_length) { - a += v * trim_length / l; - d -= v * trim_length / l; - polyline.points.front() = a.cast<coord_t>(); - polyline.points.back() = d.cast<coord_t>(); - } else - polyline.points.clear(); - } else if (polyline.size() > 2) { - Vec2d b = polyline.points[1].cast<double>(); - Vec2d c = polyline.points[polyline.points.size() - 2].cast<double>(); - Vec2d v = b - a; - double l = v.norm(); - if (l > trim_length) { - a += v * trim_length / l; - polyline.points.front() = a.cast<coord_t>(); - } else - polyline.points.erase(polyline.points.begin()); - v = d - c; - l = v.norm(); - if (l > trim_length) - polyline.points.back() = (d - v * trim_length / l).cast<coord_t>(); - else - polyline.points.pop_back(); + for (Polyline polyline : polylines) + if (! polyline.empty()) { + Vec2d a = polyline.points.front().cast<double>(); + Vec2d d = polyline.points.back().cast<double>(); + if (polyline.size() == 2) { + Vec2d v = d - a; + double l = v.norm(); + if (l > 2. * trim_length) { + a += v * trim_length / l; + d -= v * trim_length / l; + polyline.points.front() = a.cast<coord_t>(); + polyline.points.back() = d.cast<coord_t>(); + } else + polyline.points.clear(); + } else if (polyline.size() > 2) { + Vec2d b = polyline.points[1].cast<double>(); + Vec2d c = polyline.points[polyline.points.size() - 2].cast<double>(); + Vec2d v = b - a; + double l = v.norm(); + if (l > trim_length) { + a += v * trim_length / l; + polyline.points.front() = a.cast<coord_t>(); + } else + polyline.points.erase(polyline.points.begin()); + v = d - c; + l = v.norm(); + if (l > trim_length) + polyline.points.back() = (d - v * trim_length / l).cast<coord_t>(); + else + polyline.points.pop_back(); + } + svg.draw(polyline, "black"); } - svg.draw(polyline, "black"); - } + svg.draw(pts, "magenta"); } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ @@ -601,11 +603,11 @@ static inline Intersection *get_nearest_intersection(std::vector<std::pair<Inter // Create a line representing the anchor aka hook extrusion based on line_to_offset // translated in the direction of the intersection line (intersection.intersect_line). -static Line create_offset_line(const Line &line_to_offset, const Intersection &intersection, const double scaled_spacing) +static Line create_offset_line(const Line &line_to_offset, const Intersection &intersection, const double scaled_offset) { Vec2d dir = line_to_offset.vector().cast<double>().normalized(); // 50% overlap of the extrusion lines to achieve strong bonding. - Vec2d offset_vector = Vec2d(- dir.y(), dir.x()) * (scaled_spacing / 2.); + Vec2d offset_vector = Vec2d(- dir.y(), dir.x()) * scaled_offset; const Point &furthest_point = (intersection.intersect_point == intersection.intersect_line.a ? intersection.intersect_line.b : intersection.intersect_line.a); // Move inside. @@ -615,9 +617,7 @@ static Line create_offset_line(const Line &line_to_offset, const Intersection &i Line offset_line = line_to_offset; offset_line.translate(offset_vector.x(), offset_vector.y()); // Extend the line by a small value to guarantee a collision with adjacent lines - offset_line.extend(coord_t(scale_(1.))); - //FIXME scaled_spacing * tan(PI/6) -// offset_line.extend(coord_t(scaled_spacing * 0.577)); + offset_line.extend(coord_t(scaled_offset * 1.16)); // / cos(PI/6) return offset_line; }; @@ -641,12 +641,12 @@ static inline rtree_segment_t mk_rtree_seg(const Line &l) { } // Create a hook based on hook_line and append it to the begin or end of the polyline in the intersection -static void add_hook(const Intersection &intersection, const double scaled_spacing, const int hook_length, const rtree_t &rtree) +static void add_hook(const Intersection &intersection, const double scaled_offset, const int hook_length, const rtree_t &rtree) { // Trim the hook start by the infill line it will connect to. Point hook_start; bool intersection_found = intersection.intersect_line.intersection( - create_offset_line(intersection.closest_line, intersection, scaled_spacing), + create_offset_line(intersection.closest_line, intersection, scaled_offset), &hook_start); assert(intersection_found); @@ -729,17 +729,24 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b rtree.insert(std::make_pair(mk_rtree_seg(poly.points.front(), poly.points.back()), poly_idx++)); } + const float scaled_offset = float(scale_(spacing) * 0.7); // 30% overlap + std::vector<Intersection> intersections; { - const coord_t scaled_spacing = coord_t(scale_(spacing)); // Keeping the vector of closest points outside the loop, so the vector does not need to be reallocated. std::vector<std::pair<rtree_segment_t, size_t>> closest; + // Minimum lenght of an infill line to anchor. Very short lines cannot be trimmed from both sides, + // it does not help to anchor extremely short infill lines, it consumes too much plastic while not adding + // to the object rigidity. + const double line_len_threshold = scaled_offset * 4.; + // Minimum length of an infill line to be trimmed from both sides. + assert(line_len_threshold > scaled_offset * (2. / cos(PI / 6.)) + SCALED_EPSILON); for (size_t line_idx = 0; line_idx < lines.size(); ++line_idx) { Polyline &line = lines[line_idx]; // Lines shorter than spacing are skipped because it is needed to shrink a line by the value of spacing. // A shorter line than spacing could produce a degenerate polyline. //FIXME we should rather remove such short infill lines earlier! - if (line.length() <= (scaled_spacing + SCALED_EPSILON)) + if (line.length() < line_len_threshold) continue; const Point &front_point = line.points.front(); @@ -763,6 +770,17 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b } } +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + static int iRun = 0; + int iStep = 0; + { + Points pts; + for (const Intersection &i : intersections) + pts.emplace_back(i.intersect_point); + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-Tjoints-%d.svg", iRun++), pts); + } +#endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ + std::sort(intersections.begin(), intersections.end(), [](const Intersection &i1, const Intersection &i2) { return i1.closest_line_idx < i2.closest_line_idx; }); @@ -800,8 +818,11 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b intersection.intersect_pl = &lines[intersect_pl_idx]; // After polylines are merged, it is necessary to update "forward" based on if intersect_point is the first or the last point of intersect_pl. - if (intersection.fresh()) + if (intersection.fresh()) { + assert(intersection.intersect_pl->points.front() == intersection.intersect_point || + intersection.intersect_pl->points.back() == intersection.intersect_point); intersection.front = intersection.intersect_pl->points.front() == intersection.intersect_point; + } }; // Keep intersect_line outside the loop, so it does not get reallocated. @@ -811,19 +832,25 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b intersect_line.clear(); // All the nearest points (T-joints) ending at the same line are projected onto this line. Because of it, it can easily find the nearest point. { - const Point &p0 = intersections[min_idx].intersect_point; - size_t max_idx = min_idx + 1; - intersect_line.emplace_back(&intersections[min_idx], 0.); - for (; max_idx < intersections.size() && intersections[min_idx].closest_line_idx == intersections[max_idx].closest_line_idx; ++max_idx) - intersect_line.emplace_back(&intersections[max_idx], line_dir.dot((intersections[max_idx].intersect_point - p0).cast<double>())); + size_t max_idx = min_idx; + for (; max_idx < intersections.size() && intersections[min_idx].closest_line_idx == intersections[max_idx].closest_line_idx; ++ max_idx) + intersect_line.emplace_back(&intersections[max_idx], line_dir.dot(intersections[max_idx].intersect_point.cast<double>())); min_idx = max_idx; } if (intersect_line.size() == 1) { // Simple case: The current intersection is the only one touching its adjacent line. Intersection &first_i = *intersect_line.front().first; + update_merged_polyline(first_i); if (first_i.fresh()) { // Try to connect left or right. If not enough space for hook_length, take the longer side. - add_hook(first_i, scale_(spacing), hook_length, rtree); +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook0-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + add_hook(first_i, scaled_offset, hook_length, rtree); +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook0-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); + ++ iStep; +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT first_i.used = true; } continue; @@ -832,19 +859,23 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b assert(intersect_line.size() > 1); // Sort the intersections along line_dir. std::sort(intersect_line.begin(), intersect_line.end(), [](const auto &i1, const auto &i2) { return i1.second < i2.second; }); + for (size_t first_idx = 0; first_idx < intersect_line.size(); ++ first_idx) { Intersection &first_i = *intersect_line[first_idx].first; + update_merged_polyline(first_i); if (! first_i.fresh()) // The intersection has been processed, or the polyline has been merged to another polyline. continue; // Get the previous or next intersection on the same line, pick the closer one. + if (first_idx > 0) + update_merged_polyline(*intersect_line[first_idx - 1].first); + if (first_idx + 1 < intersect_line.size()) + update_merged_polyline(*intersect_line[first_idx + 1].first); Intersection &nearest_i = *get_nearest_intersection(intersect_line, first_idx); - update_merged_polyline(first_i); - update_merged_polyline(nearest_i); // A line between two intersections points - Line offset_line = create_offset_line(Line(first_i.intersect_point, nearest_i.intersect_point), first_i, scale_(spacing)); + Line offset_line = create_offset_line(Line(first_i.intersect_point, nearest_i.intersect_point), first_i, scaled_offset); // Check if both intersections lie on the offset_line and simultaneously get their points of intersecting. // These points are used as start and end of the hook Point first_i_point, nearest_i_point; @@ -860,9 +891,13 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b bgi::satisfies([&first_i, &nearest_i](const auto &item) { return item.second != first_i.intersect_line_idx && item.second != nearest_i.intersect_line_idx; }), std::back_inserter(hook_intersections)); if (hook_intersections.empty()) { +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-connecting-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point, nearest_i.intersect_point }); +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT // No other infill line intersects this anchor line. Extrude it as a whole. if (first_i.intersect_pl == nearest_i.intersect_pl) { // Both intersections are on the same polyline, that means a loop is being closed. + assert(first_i.front != nearest_i.front); if (! first_i.front) std::swap(first_i_point, nearest_i_point); first_i.intersect_pl->points.front() = first_i_point; @@ -885,20 +920,33 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b // Keep the polyline at the lower index slot. if (first_i.intersect_pl < nearest_i.intersect_pl) { second_points.clear(); - merged_with[nearest_i.intersect_pl - lines.data()] = merged_with[first_i.intersect_pl - lines.data()]; + merged_with[nearest_i.intersect_pl - lines.data()] = first_i.intersect_pl - lines.data(); } else { second_points = std::move(first_points); first_points.clear(); - merged_with[first_i.intersect_pl - lines.data()] = merged_with[nearest_i.intersect_pl - lines.data()]; + merged_with[first_i.intersect_pl - lines.data()] = nearest_i.intersect_pl - lines.data(); } } nearest_i.used = true; connected = true; +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-connecting-post-%d-%d.svg", iRun, iStep), { first_i.intersect_point, nearest_i.intersect_point }); +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT } } - if (! connected) + if (! connected) { // Try to connect left or right. If not enough space for hook_length, take the longer side. - add_hook(first_i, scale_(spacing), hook_length, rtree); +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + add_hook(first_i, scaled_offset, hook_length, rtree); +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + } +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + ++iStep; +#endif ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT first_i.used = true; } else { // The first & last point should always be found. diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index bd29594c0..a3b83e38f 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -1056,7 +1056,8 @@ void mark_boundary_segments_touching_infill( #endif EdgeGrid::Grid grid; - grid.set_bbox(boundary_bbox); + // Make sure that the the grid is big enough for queries against the thick segment. + grid.set_bbox(boundary_bbox.inflated(distance_colliding + SCALED_EPSILON)); // Inflate the bounding box by a thick line width. grid.create(boundary, std::max(clip_distance, distance_colliding) + scale_(10.)); @@ -1213,15 +1214,12 @@ void mark_boundary_segments_touching_infill( void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_src, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length) { assert(! boundary_src.contour.points.empty()); - BoundingBox bbox = get_extents(boundary_src.contour); - bbox.offset(SCALED_EPSILON); - auto polygons_src = reserve_vector<const Polygon*>(boundary_src.holes.size() + 1); polygons_src.emplace_back(&boundary_src.contour); for (const Polygon &polygon : boundary_src.holes) polygons_src.emplace_back(&polygon); - connect_infill(std::move(infill_ordered), polygons_src, bbox, polylines_out, spacing, params, hook_length); + connect_infill(std::move(infill_ordered), polygons_src, get_extents(boundary_src.contour), polylines_out, spacing, params, hook_length); } void Fill::connect_infill(Polylines &&infill_ordered, const Polygons &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length) @@ -1255,7 +1253,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po std::vector<std::pair<EdgeGrid::Grid::ClosestPointResult, size_t>> intersection_points; { EdgeGrid::Grid grid; - grid.set_bbox(bbox); + grid.set_bbox(bbox.inflated(SCALED_EPSILON)); grid.create(boundary_src, scale_(10.)); intersection_points.reserve(infill_ordered.size() * 2); for (const Polyline &pl : infill_ordered) From 89df9c1038bef78d9b89ad1b911b2ca5d62a6076 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Tue, 10 Nov 2020 13:56:12 +0100 Subject: [PATCH 020/138] Improvement of AdaptiveFill: 1) Merging of collinear infill lines separated by a thin gap created by trimming with the boundary polygon. 2) Sorting of the T-joints separately to the left / right of the common line. 3) Trimming self intersections of the anchor lines. 4) Dropping of very short segments, not anchoring short segments. --- src/libslic3r/Fill/FillAdaptive.cpp | 481 ++++++++++++++++++++-------- src/libslic3r/Line.hpp | 2 +- src/libslic3r/Point.hpp | 27 ++ 3 files changed, 383 insertions(+), 127 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index b8b18e3a6..18df5b277 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -574,14 +574,49 @@ struct Intersection Line intersect_line; // Indicate if intersect_point is the first or the last point of intersect_pl bool front; + // Signum of intersect_line_dir.cross(closest_line.dir()): + bool left; // Indication if this intersection has been proceed bool used = false; bool fresh() const throw() { return ! used && ! intersect_pl->empty(); } + + std::optional<Line> other_hook() const { + std::optional<Line> out; + const Points &pts = intersect_pl->points; + if (pts.size() >= 3) + out = this->front ? Line(pts[1], pts[2]) : Line(pts[pts.size() - 2], pts[pts.size() - 3]); + return out; + } + + bool other_hook_intersects(const Line &l, Point &pt) { + std::optional<Line> h = other_hook(); + return h && h->intersection(l, &pt); + } + bool other_hook_intersects(const Line &l) { Point pt; return this->other_hook_intersects(l, pt); } + + // Direction to intersect_point. + Vec2d intersect_line_dir() const throw() { + return (this->intersect_point == intersect_line.a ? intersect_line.b - intersect_line.a : intersect_line.a - intersect_line.b).cast<double>(); + } + + void update_left_right() { + Vec2d v1((this->closest_line.b - this->closest_line.a).cast<double>()); + Vec2d v2(this->intersect_line_dir()); +#ifndef NDEBUG + { + Vec2d v1n = v1.normalized(); + Vec2d v2n = v2.normalized(); + double c = cross2(v1n, v2n); + assert(std::abs(c) > sin(M_PI / 12.)); + } +#endif // NDEBUG + this->left = cross2(v1, v2) > 0.; + } }; -static inline Intersection *get_nearest_intersection(std::vector<std::pair<Intersection*, double>> &intersect_line, const size_t first_idx) +static inline Intersection* get_nearest_intersection(std::vector<std::pair<Intersection*, double>>& intersect_line, const size_t first_idx) { assert(intersect_line.size() >= 2); bool take_next = false; @@ -603,23 +638,16 @@ static inline Intersection *get_nearest_intersection(std::vector<std::pair<Inter // Create a line representing the anchor aka hook extrusion based on line_to_offset // translated in the direction of the intersection line (intersection.intersect_line). -static Line create_offset_line(const Line &line_to_offset, const Intersection &intersection, const double scaled_offset) +static Line create_offset_line(Line offset_line, const Intersection &intersection, const double scaled_offset) { - Vec2d dir = line_to_offset.vector().cast<double>().normalized(); + Vec2d dir = intersection.closest_line.vector().cast<double>().normalized(); // 50% overlap of the extrusion lines to achieve strong bonding. - Vec2d offset_vector = Vec2d(- dir.y(), dir.x()) * scaled_offset; - const Point &furthest_point = (intersection.intersect_point == intersection.intersect_line.a ? intersection.intersect_line.b : intersection.intersect_line.a); - - // Move inside. - if (offset_vector.dot((furthest_point - intersection.intersect_point).cast<double>()) < 0.) - offset_vector *= -1.; - - Line offset_line = line_to_offset; + Vec2d offset_vector = Vec2d(- dir.y(), dir.x()) * (intersection.left ? scaled_offset : - scaled_offset); offset_line.translate(offset_vector.x(), offset_vector.y()); // Extend the line by a small value to guarantee a collision with adjacent lines offset_line.extend(coord_t(scaled_offset * 1.16)); // / cos(PI/6) return offset_line; -}; +} namespace bg = boost::geometry; namespace bgm = boost::geometry::model; @@ -650,6 +678,8 @@ static void add_hook(const Intersection &intersection, const double scaled_offse &hook_start); assert(intersection_found); + std::optional<Line> other_hook = intersection.other_hook(); + Vec2d hook_vector_norm = intersection.closest_line.vector().cast<double>().normalized(); Vector hook_vector = (hook_length * hook_vector_norm).cast<coord_t>(); Line hook_forward(hook_start, hook_start + hook_vector); @@ -658,9 +688,11 @@ static void add_hook(const Intersection &intersection, const double scaled_offse std::vector<std::pair<rtree_segment_t, size_t>> hook_intersections; rtree.query(bgi::intersects(mk_rtree_seg(hook_forward)) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); + Point self_intersection_point; + bool self_intersection = other_hook && other_hook->intersection(hook_forward, &self_intersection_point); Point hook_end; - if (hook_intersections.empty()) { + if (hook_intersections.empty() && ! self_intersection) { // The hook is not limited by another infill line. Extrude it in its full length. hook_end = hook_forward.b; } else { @@ -668,7 +700,10 @@ static void add_hook(const Intersection &intersection, const double scaled_offse // Find closest intersection of a line segment starting with pt pointing in dir // with any of the hook_intersections, returns Euclidian distance. // dir is normalized. - auto max_hook_length = [hook_length](const Vec2d &pt, const Vec2d &dir, const std::vector<std::pair<rtree_segment_t, size_t>> &hook_intersections) { + auto max_hook_length = [hook_length]( + const Vec2d &pt, const Vec2d &dir, + const std::vector<std::pair<rtree_segment_t, size_t>> &hook_intersections, + bool self_intersection, const Point &self_intersection_point) { // No hook is longer than hook_length, there shouldn't be any intersection closer than that. auto max_length = double(hook_length); auto update_max_length = [&max_length](double d) { @@ -690,33 +725,39 @@ static void add_hook(const Intersection &intersection, const double scaled_offse } else update_max_length(cross2(pt2 - pt, dir2) / denom); } + if (self_intersection) { + double t = (self_intersection_point.cast<double>() - pt).norm(); + max_length = std::min(max_length, t); + } return max_length; }; // There is not enough space for the full hook length, try the opposite direction. Vec2d hook_startf = hook_start.cast<double>(); - double hook_forward_max_length = max_hook_length(hook_startf, hook_vector_norm, hook_intersections); + double hook_forward_max_length = max_hook_length(hook_startf, hook_vector_norm, hook_intersections, self_intersection, self_intersection_point); hook_intersections.clear(); Line hook_backward(hook_start, hook_start - hook_vector); rtree.query(bgi::intersects(mk_rtree_seg(hook_backward)) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); + self_intersection = other_hook && other_hook->intersection(hook_backward, &self_intersection_point); - if (hook_intersections.empty()) { - // The hook in the other direction is not limited by another infill line. Extrude it in its full length. + if (hook_intersections.empty() && ! self_intersection) { + // The hook in the other direction is not limited by another infill line. Extrude it in its full length. hook_end = hook_backward.b; } else { // There is not enough space for the full hook in both directions, take the longer one. - double hook_backward_max_length = max_hook_length(hook_startf, - hook_vector_norm, hook_intersections); + double hook_backward_max_length = max_hook_length(hook_startf, - hook_vector_norm, hook_intersections, self_intersection, self_intersection_point); Vec2d hook_dir = (hook_forward_max_length > hook_backward_max_length ? hook_forward_max_length : - hook_backward_max_length) * hook_vector_norm; hook_end = hook_start + hook_dir.cast<coord_t>(); } } + Points &pl = intersection.intersect_pl->points; if (intersection.front) { - intersection.intersect_pl->points.front() = hook_start; - intersection.intersect_pl->points.emplace(intersection.intersect_pl->points.begin(), hook_end); + pl.front() = hook_start; + pl.emplace(pl.begin(), hook_end); } else { - intersection.intersect_pl->points.back() = hook_start; - intersection.intersect_pl->points.emplace_back(hook_end); + pl.back() = hook_start; + pl.emplace_back(hook_end); } } @@ -724,49 +765,146 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b { rtree_t rtree; size_t poly_idx = 0; - for (const Polyline &poly : lines) { - assert(poly.points.size() == 2); - rtree.insert(std::make_pair(mk_rtree_seg(poly.points.front(), poly.points.back()), poly_idx++)); + // Keeping the vector of closest points outside the loop, so the vector does not need to be reallocated. + std::vector<std::pair<rtree_segment_t, size_t>> closest; + { + // Insert infill lines into rtree, merge close collinear segments split by the infill boundary. + double r2_close = Slic3r::sqr(1200.); + for (Polyline &poly : lines) { + assert(poly.points.size() == 2); + if (&poly != lines.data()) { + // Join collinear segments separated by a tiny gap. These gaps were likely created by clipping the infill lines with a concave dent in an infill boundary. + auto collinear_segment = [&rtree, &closest, &lines, r2_close](const Point &pt, const Point &pt_other) -> std::pair<Polyline*, bool> { + closest.clear(); + rtree.query(bgi::nearest(mk_rtree_point(pt), 1), std::back_inserter(closest)); + Polyline &other = lines[closest.front().second]; + double dist2_front = (other.points.front() - pt).cast<double>().squaredNorm(); + double dist2_back = (other.points.back() - pt).cast<double>().squaredNorm(); + double dist2_min = std::min(dist2_front, dist2_back); + if (dist2_min < r2_close) { + // Don't connect the segments in an opposite direction. + double dist2_min_other = std::min((other.points.front() - pt_other).cast<double>().squaredNorm(), (other.points.back() - pt_other).cast<double>().squaredNorm()); + if (dist2_min_other > dist2_min) { + // End points of the two lines are very close, they should have been merged together if they are collinear. + Vec2d v1 = (pt_other - pt).cast<double>(); + Vec2d v2 = (other.points.back() - other.points.front()).cast<double>(); + Vec2d v1n = v1.normalized(); + Vec2d v2n = v2.normalized(); + // The vectors must not be collinear. + double d = v1n.dot(v2n); + if (std::abs(d) > 0.99f) { + // Lines are collinear, merge them. + rtree.remove(closest.front()); + return std::make_pair(&other, dist2_min == dist2_front); + } + } + } + return std::make_pair(static_cast<Polyline*>(nullptr), false); + }; + auto collinear_front = collinear_segment(poly.points.front(), poly.points.back()); + if (collinear_front.first) { + Polyline &other = *collinear_front.first; + poly.points.front() = collinear_front.second ? other.points.back() : other.points.front(); + other.points.clear(); + } + auto collinear_back = collinear_segment(poly.points.back(), poly.points.front()); + if (collinear_back.first) { + Polyline &other = *collinear_front.first; + poly.points.back() = collinear_front.second ? other.points.back() : other.points.front(); + other.points.clear(); + } + } + rtree.insert(std::make_pair(mk_rtree_seg(poly.points.front(), poly.points.back()), poly_idx++)); + } } const float scaled_offset = float(scale_(spacing) * 0.7); // 30% overlap std::vector<Intersection> intersections; { - // Keeping the vector of closest points outside the loop, so the vector does not need to be reallocated. - std::vector<std::pair<rtree_segment_t, size_t>> closest; // Minimum lenght of an infill line to anchor. Very short lines cannot be trimmed from both sides, // it does not help to anchor extremely short infill lines, it consumes too much plastic while not adding // to the object rigidity. - const double line_len_threshold = scaled_offset * 4.; - // Minimum length of an infill line to be trimmed from both sides. - assert(line_len_threshold > scaled_offset * (2. / cos(PI / 6.)) + SCALED_EPSILON); - for (size_t line_idx = 0; line_idx < lines.size(); ++line_idx) { - Polyline &line = lines[line_idx]; - // Lines shorter than spacing are skipped because it is needed to shrink a line by the value of spacing. - // A shorter line than spacing could produce a degenerate polyline. - //FIXME we should rather remove such short infill lines earlier! - if (line.length() < line_len_threshold) + const double line_len_threshold_drop_both_sides = scaled_offset * (2. / cos(PI / 6.) + 0.5) + SCALED_EPSILON; + const double line_len_threshold_anchor_both_sides = line_len_threshold_drop_both_sides + scaled_offset; + const double line_len_threshold_drop_single_side = scaled_offset * (1. / cos(PI / 6.) + 1.5) + SCALED_EPSILON; + const double line_len_threshold_anchor_single_side = line_len_threshold_drop_single_side + scaled_offset; + for (size_t line_idx = 0; line_idx < lines.size(); ++ line_idx) { + Polyline &line = lines[line_idx]; + if (line.points.empty()) continue; const Point &front_point = line.points.front(); const Point &back_point = line.points.back(); - auto filter_itself = [line_idx](const auto &item) { return item.second != line_idx; }; - // Find the nearest line from the start point of the line. - closest.clear(); - rtree.query(bgi::nearest(mk_rtree_point(front_point), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); - if (((Line) lines[closest.front().second]).distance_to(front_point) <= 1000) - // T-joint of line's front point with the 'closest' line. - intersections.push_back({ closest.front().second, (Line)lines[closest.front().second], front_point, line_idx, &line, (Line)line, true }); + std::optional<size_t> tjoint_front, tjoint_back; + { + auto has_tjoint = [&closest, line_idx, &rtree, &lines](const Point &pt) { + auto filter_itself = [line_idx](const auto &item) { return item.second != line_idx; }; + closest.clear(); + rtree.query(bgi::nearest(mk_rtree_point(pt), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); + const Polyline &pl = lines[closest.front().second]; + std::optional<size_t> out; + if (pl.points.empty()) { + // The closest infill line was already dropped as it was too short. + // Such an infill line should not make a T-joint anyways. +#if 0 // #ifndef NDEBUG + const auto &seg = closest.front().first; + struct Linef { Vec2d a; Vec2d b; }; + Linef l { { bg::get<0, 0>(seg), bg::get<0, 1>(seg) }, { bg::get<1, 0>(seg), bg::get<1, 1>(seg) } }; + assert(line_alg::distance_to_squared(l, Vec2d(pt.cast<double>())) > 1000 * 1000); +#endif // NDEBUG + } else if (((Line)pl).distance_to_squared(pt) <= 1000 * 1000) + out = closest.front().second; + return out; + }; + tjoint_front = has_tjoint(front_point); + tjoint_back = has_tjoint(back_point); + } - // Find the nearest line from the end point of the line - closest.clear(); - rtree.query(bgi::nearest(mk_rtree_point(back_point), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); - if (((Line) lines[closest.front().second]).distance_to(back_point) <= 1000) - // T-joint of line's back point with the 'closest' line. - intersections.push_back({ closest.front().second, (Line)lines[closest.front().second], back_point, line_idx, &line, (Line)line, false }); + int num_tjoints = int(tjoint_front.has_value()) + int(tjoint_back.has_value()); + if (num_tjoints > 0) { + double line_len = line.length(); + bool drop = false; + bool anchor = false; + if (num_tjoints == 1) { + // Connected to perimeters on a single side only, connected to another infill line on the other side. + drop = line_len < line_len_threshold_drop_single_side; + anchor = line_len > line_len_threshold_anchor_single_side; + } else { + // Not connected to perimeters at all, connected to two infill lines. + assert(num_tjoints == 2); + drop = line_len < line_len_threshold_drop_both_sides; + anchor = line_len > line_len_threshold_anchor_both_sides; + } + if (drop) { + // Drop a very short line if connected to another infill line. + // Lines shorter than spacing are skipped because it is needed to shrink a line by the value of spacing. + // A shorter line than spacing could produce a degenerate polyline. + line.points.clear(); + } else if (anchor) { + if (tjoint_front) { + // T-joint of line's front point with the 'closest' line. + intersections.push_back({ tjoint_front.value(), (Line)lines[tjoint_front.value()], front_point, line_idx, &line, (Line)line, true }); + intersections.back().update_left_right(); + } + if (tjoint_back) { + // T-joint of line's back point with the 'closest' line. + intersections.push_back({ tjoint_back.value(), (Line)lines[tjoint_back.value()], back_point, line_idx, &line, (Line)line, false }); + intersections.back().update_left_right(); + } + } + } + } + // Remove those intersections, that point to a dropped line. + for (auto it = intersections.begin(); it != intersections.end(); ) { + assert(! lines[it->intersect_line_idx].points.empty()); + if (lines[it->closest_line_idx].points.empty()) { + *it = intersections.back(); + intersections.pop_back(); + } else + ++ it; } } @@ -781,8 +919,13 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ + // Sort lexicographically by closest_line_idx and left/right orientation. std::sort(intersections.begin(), intersections.end(), - [](const Intersection &i1, const Intersection &i2) { return i1.closest_line_idx < i2.closest_line_idx; }); + [](const Intersection &i1, const Intersection &i2) { + return (i1.closest_line_idx == i2.closest_line_idx) ? + int(i1.left) < int(i2.left) : + i1.closest_line_idx < i2.closest_line_idx; + }); std::vector<size_t> merged_with(lines.size()); std::iota(merged_with.begin(), merged_with.end(), 0); @@ -833,7 +976,10 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b // All the nearest points (T-joints) ending at the same line are projected onto this line. Because of it, it can easily find the nearest point. { size_t max_idx = min_idx; - for (; max_idx < intersections.size() && intersections[min_idx].closest_line_idx == intersections[max_idx].closest_line_idx; ++ max_idx) + for (; max_idx < intersections.size() && + intersections[min_idx].closest_line_idx == intersections[max_idx].closest_line_idx && + intersections[min_idx].left == intersections[max_idx].left; + ++ max_idx) intersect_line.emplace_back(&intersections[max_idx], line_dir.dot(intersections[max_idx].intersect_point.cast<double>())); min_idx = max_idx; } @@ -873,85 +1019,105 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b if (first_idx + 1 < intersect_line.size()) update_merged_polyline(*intersect_line[first_idx + 1].first); Intersection &nearest_i = *get_nearest_intersection(intersect_line, first_idx); - + assert(first_i.closest_line_idx == nearest_i.closest_line_idx); + assert(first_i.intersect_line_idx != nearest_i.intersect_line_idx); + assert(first_i.intersect_line_idx != first_i.closest_line_idx); + assert(nearest_i.intersect_line_idx != first_i.closest_line_idx); // A line between two intersections points Line offset_line = create_offset_line(Line(first_i.intersect_point, nearest_i.intersect_point), first_i, scaled_offset); // Check if both intersections lie on the offset_line and simultaneously get their points of intersecting. // These points are used as start and end of the hook Point first_i_point, nearest_i_point; - if (first_i.intersect_line.intersection(offset_line, &first_i_point) && - nearest_i.intersect_line.intersection(offset_line, &nearest_i_point)) { - bool connected = false; - if (nearest_i.fresh() && (nearest_i_point - first_i_point).cast<double>().squaredNorm() <= Slic3r::sqr(3. * hook_length)) { - // Both intersections are so close that their polylines can be connected. - // Verify that no other infill line intersects this anchor line. - std::vector<std::pair<rtree_segment_t, size_t>> hook_intersections; - rtree.query( - bgi::intersects(mk_rtree_seg(first_i_point, nearest_i_point)) && - bgi::satisfies([&first_i, &nearest_i](const auto &item) { return item.second != first_i.intersect_line_idx && item.second != nearest_i.intersect_line_idx; }), - std::back_inserter(hook_intersections)); - if (hook_intersections.empty()) { + bool could_connect = false; + if (nearest_i.fresh()) { + could_connect = first_i.intersect_line.intersection(offset_line, &first_i_point) && + nearest_i.intersect_line.intersection(offset_line, &nearest_i_point); + assert(could_connect); + } + Points &first_points = first_i.intersect_pl->points; + Points &second_points = nearest_i.intersect_pl->points; + could_connect &= (nearest_i_point - first_i_point).cast<double>().squaredNorm() <= Slic3r::sqr(3. * hook_length); + if (could_connect) { + // Both intersections are so close that their polylines can be connected. + // Verify that no other infill line intersects this anchor line. + closest.clear(); + rtree.query( + bgi::intersects(mk_rtree_seg(first_i_point, nearest_i_point)) && + bgi::satisfies([&first_i, &nearest_i](const auto &item) { return item.second != first_i.intersect_line_idx && item.second != nearest_i.intersect_line_idx; }), + std::back_inserter(closest)); + could_connect = closest.empty(); +#if 0 + // Avoid self intersections. Maybe it is better to trim the self intersection after the connection? + if (could_connect && first_i.intersect_pl != nearest_i.intersect_pl) { + Line l(first_i_point, nearest_i_point); + could_connect = ! first_i.other_hook_intersects(l) && ! nearest_i.other_hook_intersects(l); + } +#endif + } + bool connected = false; + if (could_connect) { #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-connecting-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point, nearest_i.intersect_point }); -#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - // No other infill line intersects this anchor line. Extrude it as a whole. - if (first_i.intersect_pl == nearest_i.intersect_pl) { - // Both intersections are on the same polyline, that means a loop is being closed. - assert(first_i.front != nearest_i.front); - if (! first_i.front) - std::swap(first_i_point, nearest_i_point); - first_i.intersect_pl->points.front() = first_i_point; - first_i.intersect_pl->points.back() = nearest_i_point; - //FIXME trim the end of a closed loop a bit? - first_i.intersect_pl->points.emplace(first_i.intersect_pl->points.begin(), nearest_i_point); - } else { - // Both intersections are on different polylines - Points &first_points = first_i.intersect_pl->points; - Points &second_points = nearest_i.intersect_pl->points; - first_points.reserve(first_points.size() + second_points.size()); - if (first_i.front) - std::reverse(first_points.begin(), first_points.end()); - first_points.back() = first_i_point; - first_points.emplace_back(nearest_i_point); - if (nearest_i.front) - first_points.insert(first_points.end(), second_points.begin() + 1, second_points.end()); - else - first_points.insert(first_points.end(), second_points.rbegin() + 1, second_points.rend()); - // Keep the polyline at the lower index slot. - if (first_i.intersect_pl < nearest_i.intersect_pl) { - second_points.clear(); - merged_with[nearest_i.intersect_pl - lines.data()] = first_i.intersect_pl - lines.data(); - } else { - second_points = std::move(first_points); - first_points.clear(); - merged_with[first_i.intersect_pl - lines.data()] = nearest_i.intersect_pl - lines.data(); - } - } - nearest_i.used = true; - connected = true; -#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-connecting-post-%d-%d.svg", iRun, iStep), { first_i.intersect_point, nearest_i.intersect_point }); + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-connecting-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point, nearest_i.intersect_point }); #endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + // No other infill line intersects this anchor line. Extrude it as a whole. + if (first_i.intersect_pl == nearest_i.intersect_pl) { + // Both intersections are on the same polyline, that means a loop is being closed. + assert(first_i.front != nearest_i.front); + if (! first_i.front) + std::swap(first_i_point, nearest_i_point); + first_points.front() = first_i_point; + first_points.back() = nearest_i_point; + //FIXME trim the end of a closed loop a bit? + first_points.emplace(first_points.begin(), nearest_i_point); + } else { + // Both intersections are on different polylines + Line l(first_i_point, nearest_i_point); + Point pt_start, pt_end; + bool trim_start = first_i .intersect_pl->points.size() == 3 && first_i .other_hook_intersects(l, pt_start); + bool trim_end = nearest_i.intersect_pl->points.size() == 3 && nearest_i.other_hook_intersects(l, pt_end); + first_points.reserve(first_points.size() + second_points.size()); + if (first_i.front) + std::reverse(first_points.begin(), first_points.end()); + if (trim_start) + first_points.front() = pt_start; + first_points.back() = first_i_point; + first_points.emplace_back(nearest_i_point); + if (nearest_i.front) + first_points.insert(first_points.end(), second_points.begin() + 1, second_points.end()); + else + first_points.insert(first_points.end(), second_points.rbegin() + 1, second_points.rend()); + if (trim_end) + first_points.back() = pt_end; + // Keep the polyline at the lower index slot. + if (first_i.intersect_pl < nearest_i.intersect_pl) { + second_points.clear(); + merged_with[nearest_i.intersect_pl - lines.data()] = first_i.intersect_pl - lines.data(); + } else { + second_points = std::move(first_points); + first_points.clear(); + merged_with[first_i.intersect_pl - lines.data()] = nearest_i.intersect_pl - lines.data(); } } - if (! connected) { - // Try to connect left or right. If not enough space for hook_length, take the longer side. + nearest_i.used = true; + connected = true; #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-connecting-post-%d-%d.svg", iRun, iStep), { first_i.intersect_point, nearest_i.intersect_point }); #endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - add_hook(first_i, scaled_offset, hook_length, rtree); -#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); -#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - } -#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - ++iStep; -#endif ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - first_i.used = true; - } else { - // The first & last point should always be found. - assert(false); } + if (! connected) { + // Try to connect left or right. If not enough space for hook_length, take the longer side. +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + add_hook(first_i, scaled_offset, hook_length, rtree); +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook-post-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); +#endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + } +#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + ++ iStep; +#endif ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT + first_i.used = true; } } @@ -962,8 +1128,58 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b return polylines_out; } +//coord_t get_hook_length(const double spacing) { return coord_t(scale_(spacing)) * 2; } coord_t get_hook_length(const double spacing) { return coord_t(scale_(spacing)) * 5; } +#ifndef NDEBUG +bool has_no_collinear_lines(const Polylines &polylines) +{ + // Create line end point lookup. + struct LineEnd { + LineEnd(const Polyline *line, bool start) : line(line), start(start) {} + const Polyline *line; + // Is it the start or end point? + bool start; + const Point& point() const { return start ? line->points.front() : line->points.back(); } + const Point& other_point() const { return start ? line->points.back() : line->points.front(); } + LineEnd other_end() const { return LineEnd(line, !start); } + Vec2d vec() const { return Vec2d((this->other_point() - this->point()).cast<double>()); } + bool operator==(const LineEnd &rhs) const { return this->line == rhs.line && this->start == rhs.start; } + }; + struct LineEndAccessor { + const Point* operator()(const LineEnd &pt) const { return &pt.point(); } + }; + typedef ClosestPointInRadiusLookup<LineEnd, LineEndAccessor> ClosestPointLookupType; + ClosestPointLookupType closest_end_point_lookup(1001. * sqrt(2.)); + for (const Polyline& pl : polylines) { +// assert(pl.points.size() == 2); + auto line_start = LineEnd(&pl, true); + auto line_end = LineEnd(&pl, false); + + auto assert_not_collinear = [&closest_end_point_lookup](const LineEnd &line_start) { + std::vector<std::pair<const LineEnd*, double>> hits = closest_end_point_lookup.find_all(line_start.point()); + for (const std::pair<const LineEnd*, double> &hit : hits) + if ((line_start.point() - hit.first->point()).cwiseAbs().maxCoeff() <= 1000) { + // End points of the two lines are very close, they should have been merged together if they are collinear. + Vec2d v1 = line_start.vec(); + Vec2d v2 = hit.first->vec(); + Vec2d v1n = v1.normalized(); + Vec2d v2n = v2.normalized(); + // The vectors must not be collinear. + assert(std::abs(v1n.dot(v2n)) < cos(M_PI / 12.)); + } + }; + assert_not_collinear(line_start); + assert_not_collinear(line_end); + + closest_end_point_lookup.insert(line_start); + closest_end_point_lookup.insert(line_end); + } + + return true; +} +#endif + void Filler::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, @@ -987,6 +1203,23 @@ void Filler::_fill_surface_single( generate_infill_lines_recursive(context, adapt_fill_octree->root_cube, 0, int(adapt_fill_octree->cubes_properties.size()) - 1); num_lines += context.output_lines.size() + context.temp_lines.size(); } + +#if 0 + // Collect the lines, trim them by the expolygon. + all_polylines.reserve(num_lines); + auto boundary = to_polygons(expolygon); + for (auto &context : contexts) { + Polylines lines; + lines.reserve(context.output_lines.size() + context.temp_lines.size()); + std::transform(context.output_lines.begin(), context.output_lines.end(), std::back_inserter(lines), [](const Line& l) { return Polyline{ l.a, l.b }; }); + for (const Line &l : context.temp_lines) + if (l.a.x() != std::numeric_limits<coord_t>::max()) + lines.push_back({ l.a, l.b }); + // Crop all polylines + append(all_polylines, intersection_pl(std::move(lines), boundary)); + } +// assert(has_no_collinear_lines(all_polylines)); +#else // Collect the lines. std::vector<Line> lines; lines.reserve(num_lines); @@ -996,25 +1229,21 @@ void Filler::_fill_surface_single( if (line.a.x() != std::numeric_limits<coord_t>::max()) lines.emplace_back(line); } -#if 0 - // Chain touching line segments, convert lines to polylines. - //all_polylines = chain_lines(lines, 300.); // SCALED_EPSILON is 100 and it is not enough -#else // Convert lines to polylines. all_polylines.reserve(lines.size()); std::transform(lines.begin(), lines.end(), std::back_inserter(all_polylines), [](const Line& l) { return Polyline{ l.a, l.b }; }); + // Crop all polylines + all_polylines = intersection_pl(std::move(all_polylines), to_polygons(expolygon)); #endif } - // Crop all polylines - all_polylines = intersection_pl(std::move(all_polylines), to_polygons(expolygon)); - // After intersection_pl some polylines with only one line are split into more lines for (Polyline &polyline : all_polylines) { //FIXME assert that all the points are collinear and in between the start and end point. if (polyline.points.size() > 2) polyline.points.erase(polyline.points.begin() + 1, polyline.points.end() - 1); } +// assert(has_no_collinear_lines(all_polylines)); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { @@ -1024,7 +1253,7 @@ void Filler::_fill_surface_single( #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ coord_t hook_length = get_hook_length(this->spacing); - Polylines all_polylines_with_hooks = connect_lines_using_hooks(std::move(all_polylines), expolygon, this->spacing, hook_length); + Polylines all_polylines_with_hooks = all_polylines.size() > 1 ? connect_lines_using_hooks(std::move(all_polylines), expolygon, this->spacing, hook_length) : std::move(all_polylines); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { diff --git a/src/libslic3r/Line.hpp b/src/libslic3r/Line.hpp index aeb185160..46f1a0442 100644 --- a/src/libslic3r/Line.hpp +++ b/src/libslic3r/Line.hpp @@ -24,7 +24,7 @@ namespace line_alg { template<class L, class T, int N> double distance_to_squared(const L &line, const Vec<N, T> &point) { - const Vec<N, double> v = line.vector().template cast<double>(); + const Vec<N, double> v = (line.b - line.a).template cast<double>(); const Vec<N, double> va = (point - line.a).template cast<double>(); const double l2 = v.squaredNorm(); // avoid a sqrt if (l2 == 0.0) diff --git a/src/libslic3r/Point.hpp b/src/libslic3r/Point.hpp index 1e7ca1656..883933cd7 100644 --- a/src/libslic3r/Point.hpp +++ b/src/libslic3r/Point.hpp @@ -298,6 +298,33 @@ public: std::make_pair(nullptr, std::numeric_limits<double>::max()); } + // Returns all pairs of values and squared distances. + std::vector<std::pair<const ValueType*, double>> find_all(const Vec2crd &pt) { + // Iterate over 4 closest grid cells around pt, + // Round pt to a closest grid_cell corner. + Vec2crd grid_corner((pt(0)+(m_grid_resolution>>1))>>m_grid_log2, (pt(1)+(m_grid_resolution>>1))>>m_grid_log2); + // For four neighbors of grid_corner: + std::vector<std::pair<const ValueType*, double>> out; + const double r2 = double(m_search_radius) * m_search_radius; + for (coord_t neighbor_y = -1; neighbor_y < 1; ++ neighbor_y) { + for (coord_t neighbor_x = -1; neighbor_x < 1; ++ neighbor_x) { + // Range of fragment starts around grid_corner, close to pt. + auto range = m_map.equal_range(Vec2crd(grid_corner(0) + neighbor_x, grid_corner(1) + neighbor_y)); + // Find the map entry closest to pt. + for (auto it = range.first; it != range.second; ++it) { + const ValueType &value = it->second; + const Vec2crd *pt2 = m_point_accessor(value); + if (pt2 != nullptr) { + const double d2 = (pt - *pt2).cast<double>().squaredNorm(); + if (d2 <= r2) + out.emplace_back(&value, d2); + } + } + } + } + return out; + } + private: typedef typename std::unordered_multimap<Vec2crd, ValueType, PointHash> map_type; PointAccessor m_point_accessor; From decda763446a7f7f44a54476670f03021cf3c48f Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Tue, 10 Nov 2020 15:54:32 +0100 Subject: [PATCH 021/138] AdaptiveInfill: 1) Shortening the anchor lines when touching another infill line to avoid over extrusion. 2) Reduction of the Intersection structure complexity by referencing the source lines. --- src/libslic3r/Fill/FillAdaptive.cpp | 158 +++++++++++++++------------- src/libslic3r/Point.hpp | 3 +- 2 files changed, 84 insertions(+), 77 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 18df5b277..b6750d4f8 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -559,28 +559,41 @@ static void export_infill_lines_to_svg(const ExPolygon &expoly, const Polylines // (between one end point of intersect_pl/intersect_line and struct Intersection { - // Index of the closest line to intersect_line - size_t closest_line_idx; - // Copy of closest line to intersect_point, used for storing original line in an unchanged state - Line closest_line; + // Closest line to intersect_point. + const Line *closest_line; - // Point for which is computed closest line (closest_line) - Point intersect_point; - // Index of the source infill from which is computed closest_line - size_t intersect_line_idx; - // Pointer to the polyline from which is computed closest_line - Polyline *intersect_pl; // The line for which is computed closest line from intersect_point to closest_line - Line intersect_line; + const Line *intersect_line; + // Pointer to the polyline from which is computed closest_line + Polyline *intersect_pl; + // Point for which is computed closest line (closest_line) + Point intersect_point; // Indicate if intersect_point is the first or the last point of intersect_pl - bool front; + bool front; // Signum of intersect_line_dir.cross(closest_line.dir()): - bool left; + bool left; // Indication if this intersection has been proceed - bool used = false; + bool used = false; - bool fresh() const throw() { return ! used && ! intersect_pl->empty(); } + bool fresh() const throw() { return ! used && ! intersect_pl->empty(); } + + Intersection(const Line &closest_line, const Line &intersect_line, Polyline *intersect_pl, const Point &intersect_point, bool front) : + closest_line(&closest_line), intersect_line(&intersect_line), intersect_pl(intersect_pl), intersect_point(intersect_point), front(front) + { + // Calculate side of this intersection line of the closest line. + Vec2d v1((this->closest_line->b - this->closest_line->a).cast<double>()); + Vec2d v2(this->intersect_line_dir()); +#ifndef NDEBUG + { + Vec2d v1n = v1.normalized(); + Vec2d v2n = v2.normalized(); + double c = cross2(v1n, v2n); + assert(std::abs(c) > sin(M_PI / 12.)); + } +#endif // NDEBUG + this->left = cross2(v1, v2) > 0.; + } std::optional<Line> other_hook() const { std::optional<Line> out; @@ -598,21 +611,7 @@ struct Intersection // Direction to intersect_point. Vec2d intersect_line_dir() const throw() { - return (this->intersect_point == intersect_line.a ? intersect_line.b - intersect_line.a : intersect_line.a - intersect_line.b).cast<double>(); - } - - void update_left_right() { - Vec2d v1((this->closest_line.b - this->closest_line.a).cast<double>()); - Vec2d v2(this->intersect_line_dir()); -#ifndef NDEBUG - { - Vec2d v1n = v1.normalized(); - Vec2d v2n = v2.normalized(); - double c = cross2(v1n, v2n); - assert(std::abs(c) > sin(M_PI / 12.)); - } -#endif // NDEBUG - this->left = cross2(v1, v2) > 0.; + return (this->intersect_point == intersect_line->a ? intersect_line->b - intersect_line->a : intersect_line->a - intersect_line->b).cast<double>(); } }; @@ -640,7 +639,7 @@ static inline Intersection* get_nearest_intersection(std::vector<std::pair<Inter // translated in the direction of the intersection line (intersection.intersect_line). static Line create_offset_line(Line offset_line, const Intersection &intersection, const double scaled_offset) { - Vec2d dir = intersection.closest_line.vector().cast<double>().normalized(); + Vec2d dir = intersection.closest_line->vector().cast<double>().normalized(); // 50% overlap of the extrusion lines to achieve strong bonding. Vec2d offset_vector = Vec2d(- dir.y(), dir.x()) * (intersection.left ? scaled_offset : - scaled_offset); offset_line.translate(offset_vector.x(), offset_vector.y()); @@ -669,22 +668,22 @@ static inline rtree_segment_t mk_rtree_seg(const Line &l) { } // Create a hook based on hook_line and append it to the begin or end of the polyline in the intersection -static void add_hook(const Intersection &intersection, const double scaled_offset, const int hook_length, const rtree_t &rtree) +static void add_hook(const Intersection &intersection, const double scaled_offset, const int hook_length, const rtree_t &rtree, const Lines &lines_src) { // Trim the hook start by the infill line it will connect to. Point hook_start; - bool intersection_found = intersection.intersect_line.intersection( - create_offset_line(intersection.closest_line, intersection, scaled_offset), + bool intersection_found = intersection.intersect_line->intersection( + create_offset_line(*intersection.closest_line, intersection, scaled_offset), &hook_start); assert(intersection_found); std::optional<Line> other_hook = intersection.other_hook(); - Vec2d hook_vector_norm = intersection.closest_line.vector().cast<double>().normalized(); + Vec2d hook_vector_norm = intersection.closest_line->vector().cast<double>().normalized(); Vector hook_vector = (hook_length * hook_vector_norm).cast<coord_t>(); Line hook_forward(hook_start, hook_start + hook_vector); - auto filter_itself = [&intersection](const auto &item) { return item.second != intersection.intersect_line_idx; }; + auto filter_itself = [&intersection, &lines_src](const auto &item) { return item.second != intersection.intersect_line - lines_src.data(); }; std::vector<std::pair<rtree_segment_t, size_t>> hook_intersections; rtree.query(bgi::intersects(mk_rtree_seg(hook_forward)) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); @@ -700,33 +699,38 @@ static void add_hook(const Intersection &intersection, const double scaled_offse // Find closest intersection of a line segment starting with pt pointing in dir // with any of the hook_intersections, returns Euclidian distance. // dir is normalized. - auto max_hook_length = [hook_length]( + auto max_hook_length = [hook_length, scaled_offset, &lines_src]( const Vec2d &pt, const Vec2d &dir, const std::vector<std::pair<rtree_segment_t, size_t>> &hook_intersections, - bool self_intersection, const Point &self_intersection_point) { + bool self_intersection, const std::optional<Line> &self_intersection_line, const Point &self_intersection_point) { // No hook is longer than hook_length, there shouldn't be any intersection closer than that. auto max_length = double(hook_length); auto update_max_length = [&max_length](double d) { - if (d > 0. && d < max_length) - max_length = d; + if (d < max_length) + max_length = std::max(0., d); }; + // Shift the trimming point away from the colliding thick line. + auto shift_from_thick_line = [&dir, scaled_offset](const Vec2d& dir2) -> Vec2d { + Vec2d perp = Vec2d(-dir2.y(), dir2.x()).normalized(); + double shift = perp.dot(dir) > 0. ? -scaled_offset : scaled_offset; + return perp * (0.5 * shift); + }; + for (const auto &hook_intersection : hook_intersections) { const rtree_segment_t &segment = hook_intersection.first; - // Segment start and end points. + // Segment start and end points, segment vector. Vec2d pt2(bg::get<0, 0>(segment), bg::get<0, 1>(segment)); - Vec2d pt2b(bg::get<1, 0>(segment), bg::get<1, 1>(segment)); - // Segment vector. - Vec2d dir2 = pt2b - pt2; + Vec2d dir2 = Vec2d(bg::get<1, 0>(segment), bg::get<1, 1>(segment)) - pt2; // Find intersection of (pt, dir) with (pt2, dir2), where dir is normalized. double denom = cross2(dir, dir2); - if (std::abs(denom) < EPSILON) { - update_max_length((pt2 - pt).dot(dir)); - update_max_length((pt2b - pt).dot(dir)); - } else - update_max_length(cross2(pt2 - pt, dir2) / denom); + assert(std::abs(denom) > EPSILON); + if (hook_intersection.second < lines_src.size()) + // Trimming by another infill line. Reduce overlap. + pt2 += shift_from_thick_line(dir2); + update_max_length(cross2(pt2 - pt, dir2) / denom); } if (self_intersection) { - double t = (self_intersection_point.cast<double>() - pt).norm(); + double t = (self_intersection_point.cast<double>() + shift_from_thick_line(self_intersection_line.value().vector().cast<double>()) - pt).norm(); max_length = std::min(max_length, t); } return max_length; @@ -734,7 +738,7 @@ static void add_hook(const Intersection &intersection, const double scaled_offse // There is not enough space for the full hook length, try the opposite direction. Vec2d hook_startf = hook_start.cast<double>(); - double hook_forward_max_length = max_hook_length(hook_startf, hook_vector_norm, hook_intersections, self_intersection, self_intersection_point); + double hook_forward_max_length = max_hook_length(hook_startf, hook_vector_norm, hook_intersections, self_intersection, other_hook, self_intersection_point); hook_intersections.clear(); Line hook_backward(hook_start, hook_start - hook_vector); rtree.query(bgi::intersects(mk_rtree_seg(hook_backward)) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); @@ -745,7 +749,7 @@ static void add_hook(const Intersection &intersection, const double scaled_offse hook_end = hook_backward.b; } else { // There is not enough space for the full hook in both directions, take the longer one. - double hook_backward_max_length = max_hook_length(hook_startf, - hook_vector_norm, hook_intersections, self_intersection, self_intersection_point); + double hook_backward_max_length = max_hook_length(hook_startf, - hook_vector_norm, hook_intersections, self_intersection, other_hook, self_intersection_point); Vec2d hook_dir = (hook_forward_max_length > hook_backward_max_length ? hook_forward_max_length : - hook_backward_max_length) * hook_vector_norm; hook_end = hook_start + hook_dir.cast<coord_t>(); } @@ -765,6 +769,11 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b { rtree_t rtree; size_t poly_idx = 0; + + Lines lines_src; + lines_src.reserve(lines.size()); + std::transform(lines.begin(), lines.end(), std::back_inserter(lines_src), [](const Line& l) { return Polyline{ l.a, l.b }; }); + // Keeping the vector of closest points outside the loop, so the vector does not need to be reallocated. std::vector<std::pair<rtree_segment_t, size_t>> closest; { @@ -884,23 +893,19 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b // A shorter line than spacing could produce a degenerate polyline. line.points.clear(); } else if (anchor) { - if (tjoint_front) { + if (tjoint_front) // T-joint of line's front point with the 'closest' line. - intersections.push_back({ tjoint_front.value(), (Line)lines[tjoint_front.value()], front_point, line_idx, &line, (Line)line, true }); - intersections.back().update_left_right(); - } - if (tjoint_back) { + intersections.emplace_back(lines_src[tjoint_front.value()], lines_src[line_idx], &line, front_point, true); + if (tjoint_back) // T-joint of line's back point with the 'closest' line. - intersections.push_back({ tjoint_back.value(), (Line)lines[tjoint_back.value()], back_point, line_idx, &line, (Line)line, false }); - intersections.back().update_left_right(); - } + intersections.emplace_back(lines_src[tjoint_back.value()], lines_src[line_idx], &line, back_point, false); } } } // Remove those intersections, that point to a dropped line. for (auto it = intersections.begin(); it != intersections.end(); ) { - assert(! lines[it->intersect_line_idx].points.empty()); - if (lines[it->closest_line_idx].points.empty()) { + assert(! lines[it->intersect_line - lines_src.data()].points.empty()); + if (lines[it->closest_line - lines_src.data()].points.empty()) { *it = intersections.back(); intersections.pop_back(); } else @@ -922,9 +927,9 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b // Sort lexicographically by closest_line_idx and left/right orientation. std::sort(intersections.begin(), intersections.end(), [](const Intersection &i1, const Intersection &i2) { - return (i1.closest_line_idx == i2.closest_line_idx) ? + return (i1.closest_line == i2.closest_line) ? int(i1.left) < int(i2.left) : - i1.closest_line_idx < i2.closest_line_idx; + i1.closest_line < i2.closest_line; }); std::vector<size_t> merged_with(lines.size()); @@ -971,14 +976,14 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b // Keep intersect_line outside the loop, so it does not get reallocated. std::vector<std::pair<Intersection*, double>> intersect_line; for (size_t min_idx = 0; min_idx < intersections.size();) { - const Vec2d line_dir = intersections[min_idx].closest_line.vector().cast<double>(); + const Vec2d line_dir = intersections[min_idx].closest_line->vector().cast<double>(); intersect_line.clear(); // All the nearest points (T-joints) ending at the same line are projected onto this line. Because of it, it can easily find the nearest point. { size_t max_idx = min_idx; for (; max_idx < intersections.size() && - intersections[min_idx].closest_line_idx == intersections[max_idx].closest_line_idx && - intersections[min_idx].left == intersections[max_idx].left; + intersections[min_idx].closest_line == intersections[max_idx].closest_line && + intersections[min_idx].left == intersections[max_idx].left; ++ max_idx) intersect_line.emplace_back(&intersections[max_idx], line_dir.dot(intersections[max_idx].intersect_point.cast<double>())); min_idx = max_idx; @@ -992,7 +997,7 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook0-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); #endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - add_hook(first_i, scaled_offset, hook_length, rtree); + add_hook(first_i, scaled_offset, hook_length, rtree, lines_src); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook0-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); ++ iStep; @@ -1019,10 +1024,10 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b if (first_idx + 1 < intersect_line.size()) update_merged_polyline(*intersect_line[first_idx + 1].first); Intersection &nearest_i = *get_nearest_intersection(intersect_line, first_idx); - assert(first_i.closest_line_idx == nearest_i.closest_line_idx); - assert(first_i.intersect_line_idx != nearest_i.intersect_line_idx); - assert(first_i.intersect_line_idx != first_i.closest_line_idx); - assert(nearest_i.intersect_line_idx != first_i.closest_line_idx); + assert(first_i.closest_line == nearest_i.closest_line); + assert(first_i.intersect_line != nearest_i.intersect_line); + assert(first_i.intersect_line != first_i.closest_line); + assert(nearest_i.intersect_line != first_i.closest_line); // A line between two intersections points Line offset_line = create_offset_line(Line(first_i.intersect_point, nearest_i.intersect_point), first_i, scaled_offset); // Check if both intersections lie on the offset_line and simultaneously get their points of intersecting. @@ -1030,8 +1035,8 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b Point first_i_point, nearest_i_point; bool could_connect = false; if (nearest_i.fresh()) { - could_connect = first_i.intersect_line.intersection(offset_line, &first_i_point) && - nearest_i.intersect_line.intersection(offset_line, &nearest_i_point); + could_connect = first_i.intersect_line->intersection(offset_line, &first_i_point) && + nearest_i.intersect_line->intersection(offset_line, &nearest_i_point); assert(could_connect); } Points &first_points = first_i.intersect_pl->points; @@ -1043,7 +1048,8 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b closest.clear(); rtree.query( bgi::intersects(mk_rtree_seg(first_i_point, nearest_i_point)) && - bgi::satisfies([&first_i, &nearest_i](const auto &item) { return item.second != first_i.intersect_line_idx && item.second != nearest_i.intersect_line_idx; }), + bgi::satisfies([&first_i, &nearest_i, &lines_src](const auto &item) + { return item.second != first_i.intersect_line - lines_src.data() && item.second != nearest_i.intersect_line - lines_src.data(); }), std::back_inserter(closest)); could_connect = closest.empty(); #if 0 @@ -1109,7 +1115,7 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); #endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - add_hook(first_i, scaled_offset, hook_length, rtree); + add_hook(first_i, scaled_offset, hook_length, rtree, lines_src); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook-post-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); #endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT diff --git a/src/libslic3r/Point.hpp b/src/libslic3r/Point.hpp index 883933cd7..dac4d5877 100644 --- a/src/libslic3r/Point.hpp +++ b/src/libslic3r/Point.hpp @@ -55,7 +55,8 @@ typedef Eigen::Transform<double, 3, Eigen::Affine, Eigen::DontAlign> Transform3d inline bool operator<(const Vec2d &lhs, const Vec2d &rhs) { return lhs(0) < rhs(0) || (lhs(0) == rhs(0) && lhs(1) < rhs(1)); } -inline int32_t cross2(const Vec2i32 &v1, const Vec2i32 &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } +// One likely does not want to perform the cross product with a 32bit accumulator. +//inline int32_t cross2(const Vec2i32 &v1, const Vec2i32 &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } inline int64_t cross2(const Vec2i64 &v1, const Vec2i64 &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } inline float cross2(const Vec2f &v1, const Vec2f &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } inline double cross2(const Vec2d &v1, const Vec2d &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } From 26836db6296d7d5756b4ff99a53e744668d6c0a0 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Wed, 11 Nov 2020 11:51:26 +0100 Subject: [PATCH 022/138] FillAdaptive: Handling of a special case when the infill lines touch at their ends. --- src/libslic3r/Fill/FillAdaptive.cpp | 112 +++++++++++++++++++++------- 1 file changed, 86 insertions(+), 26 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index b6750d4f8..94b9a2b74 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -776,27 +776,30 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b // Keeping the vector of closest points outside the loop, so the vector does not need to be reallocated. std::vector<std::pair<rtree_segment_t, size_t>> closest; + // Pairs of lines touching at one end point. The pair is sorted to make the end point connection test symmetric. + std::vector<std::pair<const Polyline*, const Polyline*>> lines_touching_at_endpoints; { - // Insert infill lines into rtree, merge close collinear segments split by the infill boundary. + // Insert infill lines into rtree, merge close collinear segments split by the infill boundary, + // collect lines_touching_at_endpoints. double r2_close = Slic3r::sqr(1200.); for (Polyline &poly : lines) { assert(poly.points.size() == 2); if (&poly != lines.data()) { // Join collinear segments separated by a tiny gap. These gaps were likely created by clipping the infill lines with a concave dent in an infill boundary. - auto collinear_segment = [&rtree, &closest, &lines, r2_close](const Point &pt, const Point &pt_other) -> std::pair<Polyline*, bool> { + auto collinear_segment = [&rtree, &closest, &lines, &lines_touching_at_endpoints, r2_close](const Point& pt, const Point& pt_other, const Polyline* polyline) -> std::pair<Polyline*, bool> { closest.clear(); rtree.query(bgi::nearest(mk_rtree_point(pt), 1), std::back_inserter(closest)); - Polyline &other = lines[closest.front().second]; - double dist2_front = (other.points.front() - pt).cast<double>().squaredNorm(); - double dist2_back = (other.points.back() - pt).cast<double>().squaredNorm(); - double dist2_min = std::min(dist2_front, dist2_back); + const Polyline *other = &lines[closest.front().second]; + double dist2_front = (other->points.front() - pt).cast<double>().squaredNorm(); + double dist2_back = (other->points.back() - pt).cast<double>().squaredNorm(); + double dist2_min = std::min(dist2_front, dist2_back); if (dist2_min < r2_close) { // Don't connect the segments in an opposite direction. - double dist2_min_other = std::min((other.points.front() - pt_other).cast<double>().squaredNorm(), (other.points.back() - pt_other).cast<double>().squaredNorm()); + double dist2_min_other = std::min((other->points.front() - pt_other).cast<double>().squaredNorm(), (other->points.back() - pt_other).cast<double>().squaredNorm()); if (dist2_min_other > dist2_min) { // End points of the two lines are very close, they should have been merged together if they are collinear. Vec2d v1 = (pt_other - pt).cast<double>(); - Vec2d v2 = (other.points.back() - other.points.front()).cast<double>(); + Vec2d v2 = (other->points.back() - other->points.front()).cast<double>(); Vec2d v1n = v1.normalized(); Vec2d v2n = v2.normalized(); // The vectors must not be collinear. @@ -804,19 +807,23 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b if (std::abs(d) > 0.99f) { // Lines are collinear, merge them. rtree.remove(closest.front()); - return std::make_pair(&other, dist2_min == dist2_front); + return std::make_pair(const_cast<Polyline*>(other), dist2_min == dist2_front); + } else { + if (polyline > other) + std::swap(polyline, other); + lines_touching_at_endpoints.emplace_back(polyline, other); } } } return std::make_pair(static_cast<Polyline*>(nullptr), false); }; - auto collinear_front = collinear_segment(poly.points.front(), poly.points.back()); + auto collinear_front = collinear_segment(poly.points.front(), poly.points.back(), &poly); if (collinear_front.first) { Polyline &other = *collinear_front.first; poly.points.front() = collinear_front.second ? other.points.back() : other.points.front(); other.points.clear(); } - auto collinear_back = collinear_segment(poly.points.back(), poly.points.front()); + auto collinear_back = collinear_segment(poly.points.back(), poly.points.front(), &poly); if (collinear_back.first) { Polyline &other = *collinear_front.first; poly.points.back() = collinear_front.second ? other.points.back() : other.points.front(); @@ -827,6 +834,8 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b } } + sort_remove_duplicates(lines_touching_at_endpoints); + const float scaled_offset = float(scale_(spacing) * 0.7); // 30% overlap std::vector<Intersection> intersections; @@ -868,8 +877,22 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b out = closest.front().second; return out; }; - tjoint_front = has_tjoint(front_point); - tjoint_back = has_tjoint(back_point); + // Refuse to create a T-joint if the infill lines touch at their ends. + auto filter_end_point_connections = [&lines_touching_at_endpoints, &lines, &line](std::optional<size_t> in) { + std::optional<size_t> out; + if (in) { + const Polyline *lo = &line; + const Polyline *hi = &lines[in.value()]; + if (lo > hi) + std::swap(lo, hi); + if (! std::binary_search(lines_touching_at_endpoints.begin(), lines_touching_at_endpoints.end(), std::make_pair(lo, hi))) + // Not an end-point connection, it is a valid T-joint. + out = in; + } + return out; + }; + tjoint_front = filter_end_point_connections(has_tjoint(front_point)); + tjoint_back = filter_end_point_connections(has_tjoint(back_point)); } int num_tjoints = int(tjoint_front.has_value()) + int(tjoint_back.has_value()); @@ -951,35 +974,72 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b } } - auto update_merged_polyline = [&lines, &merged_with](Intersection &intersection) { + auto update_merged_polyline_idx = [&merged_with](size_t pl_idx) { // Update the polyline index to index which is merged - size_t intersect_pl_idx = intersection.intersect_pl - lines.data(); - for (size_t last = intersect_pl_idx;;) { + for (size_t last = pl_idx;;) { size_t lower = merged_with[last]; if (lower == last) { - merged_with[intersect_pl_idx] = lower; - intersect_pl_idx = lower; - break; + merged_with[pl_idx] = lower; + return lower; } last = lower; } - + assert(false); + return size_t(0); + }; + auto update_merged_polyline = [&lines, update_merged_polyline_idx](Intersection& intersection) { + // Update the polyline index to index which is merged + size_t intersect_pl_idx = update_merged_polyline_idx(intersection.intersect_pl - lines.data()); intersection.intersect_pl = &lines[intersect_pl_idx]; // After polylines are merged, it is necessary to update "forward" based on if intersect_point is the first or the last point of intersect_pl. if (intersection.fresh()) { assert(intersection.intersect_pl->points.front() == intersection.intersect_point || - intersection.intersect_pl->points.back() == intersection.intersect_point); + intersection.intersect_pl->points.back() == intersection.intersect_point); intersection.front = intersection.intersect_pl->points.front() == intersection.intersect_point; } }; + // Merge polylines touching at their ends. This should be a very rare case, but it happens surprisingly often. + for (auto it = lines_touching_at_endpoints.rbegin(); it != lines_touching_at_endpoints.rend(); ++ it) { + Polyline *pl1 = const_cast<Polyline*>(it->first); + Polyline *pl2 = const_cast<Polyline*>(it->second); + assert(pl1 < pl2); + // pl1 was visited for the 1st time. + // pl2 may have alread been merged with another polyline, even with this one. + pl2 = &lines[update_merged_polyline_idx(pl2 - lines.data())]; + assert(pl1 <= pl2); + // Avoid closing a loop. + if (pl1 != pl2) { + // Merge the polylines. + assert(pl1 < pl2); + assert(pl1->points.size() >= 2); + assert(pl2->points.size() >= 2); + double d11 = (pl1->points.front() - pl2->points.front()).cast<double>().squaredNorm(); + double d12 = (pl1->points.front() - pl2->points.back()) .cast<double>().squaredNorm(); + double d21 = (pl1->points.back() - pl2->points.front()).cast<double>().squaredNorm(); + double d22 = (pl1->points.back() - pl2->points.back()) .cast<double>().squaredNorm(); + double d1min = std::min(d11, d12); + double d2min = std::min(d21, d22); + if (d1min < d2min) { + pl1->reverse(); + if (d12 == d1min) + pl2->reverse(); + } else if (d22 == d2min) + pl2->reverse(); + pl1->points.back() = (pl1->points.back() + pl2->points.front()) / 2; + pl1->append(pl2->points.begin() + 1, pl2->points.end()); + pl2->points.clear(); + merged_with[pl2 - lines.data()] = pl1 - lines.data(); + } + } + // Keep intersect_line outside the loop, so it does not get reallocated. std::vector<std::pair<Intersection*, double>> intersect_line; for (size_t min_idx = 0; min_idx < intersections.size();) { - const Vec2d line_dir = intersections[min_idx].closest_line->vector().cast<double>(); intersect_line.clear(); // All the nearest points (T-joints) ending at the same line are projected onto this line. Because of it, it can easily find the nearest point. { + const Vec2d line_dir = intersections[min_idx].closest_line->vector().cast<double>(); size_t max_idx = min_idx; for (; max_idx < intersections.size() && intersections[min_idx].closest_line == intersections[max_idx].closest_line && @@ -987,7 +1047,11 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b ++ max_idx) intersect_line.emplace_back(&intersections[max_idx], line_dir.dot(intersections[max_idx].intersect_point.cast<double>())); min_idx = max_idx; + assert(intersect_line.size() > 0); + // Sort the intersections along line_dir. + std::sort(intersect_line.begin(), intersect_line.end(), [](const auto &i1, const auto &i2) { return i1.second < i2.second; }); } + if (intersect_line.size() == 1) { // Simple case: The current intersection is the only one touching its adjacent line. Intersection &first_i = *intersect_line.front().first; @@ -1007,10 +1071,6 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b continue; } - assert(intersect_line.size() > 1); - // Sort the intersections along line_dir. - std::sort(intersect_line.begin(), intersect_line.end(), [](const auto &i1, const auto &i2) { return i1.second < i2.second; }); - for (size_t first_idx = 0; first_idx < intersect_line.size(); ++ first_idx) { Intersection &first_i = *intersect_line[first_idx].first; update_merged_polyline(first_i); From 4d102ac8caf5e5c47849c0b723f88ba027af0fce Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Wed, 11 Nov 2020 16:49:11 +0100 Subject: [PATCH 023/138] FillAdaptive: 1) More accurate trimming of an anchor with another infill line or by another anchor line. 2) Trimming of very short infill lines, which are not anchored, by another infill lines. --- src/libslic3r/Fill/FillAdaptive.cpp | 145 ++++++++++++++-------------- src/libslic3r/Line.hpp | 3 +- src/libslic3r/Point.hpp | 16 ++- 3 files changed, 83 insertions(+), 81 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 94b9a2b74..c96e4e023 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -639,10 +639,8 @@ static inline Intersection* get_nearest_intersection(std::vector<std::pair<Inter // translated in the direction of the intersection line (intersection.intersect_line). static Line create_offset_line(Line offset_line, const Intersection &intersection, const double scaled_offset) { - Vec2d dir = intersection.closest_line->vector().cast<double>().normalized(); // 50% overlap of the extrusion lines to achieve strong bonding. - Vec2d offset_vector = Vec2d(- dir.y(), dir.x()) * (intersection.left ? scaled_offset : - scaled_offset); - offset_line.translate(offset_vector.x(), offset_vector.y()); + offset_line.translate((perp(intersection.closest_line->vector().cast<double>().normalized()) * (intersection.left ? scaled_offset : - scaled_offset)).cast<coord_t>()); // Extend the line by a small value to guarantee a collision with adjacent lines offset_line.extend(coord_t(scaled_offset * 1.16)); // / cos(PI/6) return offset_line; @@ -668,7 +666,10 @@ static inline rtree_segment_t mk_rtree_seg(const Line &l) { } // Create a hook based on hook_line and append it to the begin or end of the polyline in the intersection -static void add_hook(const Intersection &intersection, const double scaled_offset, const int hook_length, const rtree_t &rtree, const Lines &lines_src) +static void add_hook( + const Intersection &intersection, const double scaled_offset, + const int hook_length, double scaled_trim_distance, + const rtree_t &rtree, const Lines &lines_src) { // Trim the hook start by the infill line it will connect to. Point hook_start; @@ -680,7 +681,9 @@ static void add_hook(const Intersection &intersection, const double scaled_offse std::optional<Line> other_hook = intersection.other_hook(); Vec2d hook_vector_norm = intersection.closest_line->vector().cast<double>().normalized(); - Vector hook_vector = (hook_length * hook_vector_norm).cast<coord_t>(); + // hook_vector is extended by the thickness of the infill line, so that a collision is found against + // the infill centerline to be later trimmed by the thickened line. + Vector hook_vector = ((hook_length + 1.16 * scaled_trim_distance) * hook_vector_norm).cast<coord_t>(); Line hook_forward(hook_start, hook_start + hook_vector); auto filter_itself = [&intersection, &lines_src](const auto &item) { return item.second != intersection.intersect_line - lines_src.data(); }; @@ -690,71 +693,61 @@ static void add_hook(const Intersection &intersection, const double scaled_offse Point self_intersection_point; bool self_intersection = other_hook && other_hook->intersection(hook_forward, &self_intersection_point); - Point hook_end; - if (hook_intersections.empty() && ! self_intersection) { - // The hook is not limited by another infill line. Extrude it in its full length. - hook_end = hook_forward.b; - } else { - - // Find closest intersection of a line segment starting with pt pointing in dir - // with any of the hook_intersections, returns Euclidian distance. - // dir is normalized. - auto max_hook_length = [hook_length, scaled_offset, &lines_src]( - const Vec2d &pt, const Vec2d &dir, - const std::vector<std::pair<rtree_segment_t, size_t>> &hook_intersections, - bool self_intersection, const std::optional<Line> &self_intersection_line, const Point &self_intersection_point) { - // No hook is longer than hook_length, there shouldn't be any intersection closer than that. - auto max_length = double(hook_length); - auto update_max_length = [&max_length](double d) { - if (d < max_length) - max_length = std::max(0., d); - }; - // Shift the trimming point away from the colliding thick line. - auto shift_from_thick_line = [&dir, scaled_offset](const Vec2d& dir2) -> Vec2d { - Vec2d perp = Vec2d(-dir2.y(), dir2.x()).normalized(); - double shift = perp.dot(dir) > 0. ? -scaled_offset : scaled_offset; - return perp * (0.5 * shift); - }; - - for (const auto &hook_intersection : hook_intersections) { - const rtree_segment_t &segment = hook_intersection.first; - // Segment start and end points, segment vector. - Vec2d pt2(bg::get<0, 0>(segment), bg::get<0, 1>(segment)); - Vec2d dir2 = Vec2d(bg::get<1, 0>(segment), bg::get<1, 1>(segment)) - pt2; - // Find intersection of (pt, dir) with (pt2, dir2), where dir is normalized. - double denom = cross2(dir, dir2); - assert(std::abs(denom) > EPSILON); - if (hook_intersection.second < lines_src.size()) - // Trimming by another infill line. Reduce overlap. - pt2 += shift_from_thick_line(dir2); - update_max_length(cross2(pt2 - pt, dir2) / denom); - } - if (self_intersection) { - double t = (self_intersection_point.cast<double>() + shift_from_thick_line(self_intersection_line.value().vector().cast<double>()) - pt).norm(); - max_length = std::min(max_length, t); - } - return max_length; + // Find closest intersection of a line segment starting with pt pointing in dir + // with any of the hook_intersections, returns Euclidian distance. + // dir is normalized. + auto max_hook_length = [hook_length, scaled_trim_distance, &lines_src]( + const Vec2d &pt, const Vec2d &dir, + const std::vector<std::pair<rtree_segment_t, size_t>> &hook_intersections, + bool self_intersection, const std::optional<Line> &self_intersection_line, const Point &self_intersection_point) { + // No hook is longer than hook_length, there shouldn't be any intersection closer than that. + auto max_length = double(hook_length); + auto update_max_length = [&max_length](double d) { + if (d < max_length) + max_length = d; + }; + // Shift the trimming point away from the colliding thick line. + auto shift_from_thick_line = [&dir, scaled_trim_distance](const Vec2d& dir2) { + return scaled_trim_distance * std::abs(cross2(dir, dir2.normalized())); }; - // There is not enough space for the full hook length, try the opposite direction. - Vec2d hook_startf = hook_start.cast<double>(); - double hook_forward_max_length = max_hook_length(hook_startf, hook_vector_norm, hook_intersections, self_intersection, other_hook, self_intersection_point); + for (const auto &hook_intersection : hook_intersections) { + const rtree_segment_t &segment = hook_intersection.first; + // Segment start and end points, segment vector. + Vec2d pt2(bg::get<0, 0>(segment), bg::get<0, 1>(segment)); + Vec2d dir2 = Vec2d(bg::get<1, 0>(segment), bg::get<1, 1>(segment)) - pt2; + // Find intersection of (pt, dir) with (pt2, dir2), where dir is normalized. + double denom = cross2(dir, dir2); + assert(std::abs(denom) > EPSILON); + double t = cross2(pt2 - pt, dir2) / denom; + if (hook_intersection.second < lines_src.size()) + // Trimming by another infill line. Reduce overlap. + t -= shift_from_thick_line(dir2); + update_max_length(t); + } + if (self_intersection) { + double t = (self_intersection_point.cast<double>() - pt).dot(dir) - shift_from_thick_line(self_intersection_line.value().vector().cast<double>()); + max_length = std::min(max_length, t); + } + return std::max(0., max_length); + }; + + Vec2d hook_startf = hook_start.cast<double>(); + double hook_forward_max_length = max_hook_length(hook_startf, hook_vector_norm, hook_intersections, self_intersection, other_hook, self_intersection_point); + double hook_backward_max_length = 0.; + if (hook_forward_max_length < hook_length - SCALED_EPSILON) { + // Try the other side. hook_intersections.clear(); Line hook_backward(hook_start, hook_start - hook_vector); rtree.query(bgi::intersects(mk_rtree_seg(hook_backward)) && bgi::satisfies(filter_itself), std::back_inserter(hook_intersections)); self_intersection = other_hook && other_hook->intersection(hook_backward, &self_intersection_point); - - if (hook_intersections.empty() && ! self_intersection) { - // The hook in the other direction is not limited by another infill line. Extrude it in its full length. - hook_end = hook_backward.b; - } else { - // There is not enough space for the full hook in both directions, take the longer one. - double hook_backward_max_length = max_hook_length(hook_startf, - hook_vector_norm, hook_intersections, self_intersection, other_hook, self_intersection_point); - Vec2d hook_dir = (hook_forward_max_length > hook_backward_max_length ? hook_forward_max_length : - hook_backward_max_length) * hook_vector_norm; - hook_end = hook_start + hook_dir.cast<coord_t>(); - } + hook_backward_max_length = max_hook_length(hook_startf, - hook_vector_norm, hook_intersections, self_intersection, other_hook, self_intersection_point); } + // Take the longer hook. + Vec2d hook_dir = (hook_forward_max_length > hook_backward_max_length ? hook_forward_max_length : - hook_backward_max_length) * hook_vector_norm; + Point hook_end = hook_start + hook_dir.cast<coord_t>(); + Points &pl = intersection.intersect_pl->points; if (intersection.front) { pl.front() = hook_start; @@ -774,6 +767,9 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b lines_src.reserve(lines.size()); std::transform(lines.begin(), lines.end(), std::back_inserter(lines_src), [](const Line& l) { return Polyline{ l.a, l.b }; }); + const float scaled_offset = float(scale_(spacing) * 0.7); // 30% overlap + const float scaled_trim_distance = float(scale_(spacing) * 0.5 * 0.75); // 25% overlap + // Keeping the vector of closest points outside the loop, so the vector does not need to be reallocated. std::vector<std::pair<rtree_segment_t, size_t>> closest; // Pairs of lines touching at one end point. The pair is sorted to make the end point connection test symmetric. @@ -836,13 +832,12 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b sort_remove_duplicates(lines_touching_at_endpoints); - const float scaled_offset = float(scale_(spacing) * 0.7); // 30% overlap - std::vector<Intersection> intersections; { // Minimum lenght of an infill line to anchor. Very short lines cannot be trimmed from both sides, // it does not help to anchor extremely short infill lines, it consumes too much plastic while not adding // to the object rigidity. + assert(scaled_offset > scaled_trim_distance); const double line_len_threshold_drop_both_sides = scaled_offset * (2. / cos(PI / 6.) + 0.5) + SCALED_EPSILON; const double line_len_threshold_anchor_both_sides = line_len_threshold_drop_both_sides + scaled_offset; const double line_len_threshold_drop_single_side = scaled_offset * (1. / cos(PI / 6.) + 1.5) + SCALED_EPSILON; @@ -852,8 +847,8 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b if (line.points.empty()) continue; - const Point &front_point = line.points.front(); - const Point &back_point = line.points.back(); + Point &front_point = line.points.front(); + Point &back_point = line.points.back(); // Find the nearest line from the start point of the line. std::optional<size_t> tjoint_front, tjoint_back; @@ -922,6 +917,15 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b if (tjoint_back) // T-joint of line's back point with the 'closest' line. intersections.emplace_back(lines_src[tjoint_back.value()], lines_src[line_idx], &line, back_point, false); + } else { + if (tjoint_front) + // T joint at the front at a 60 degree angle, the line is very short. + // Trim the front side. + front_point += ((scaled_trim_distance * 1.155) * (back_point - front_point).cast<double>().normalized()).cast<coord_t>(); + if (tjoint_back) + // T joint at the front at a 60 degree angle, the line is very short. + // Trim the front side. + back_point += ((scaled_trim_distance * 1.155) * (front_point - back_point).cast<double>().normalized()).cast<coord_t>(); } } } @@ -1008,8 +1012,8 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b // pl2 may have alread been merged with another polyline, even with this one. pl2 = &lines[update_merged_polyline_idx(pl2 - lines.data())]; assert(pl1 <= pl2); - // Avoid closing a loop. - if (pl1 != pl2) { + // Avoid closing a loop, ignore dropped infill lines. + if (pl1 != pl2 && ! pl1->points.empty() && ! pl2->points.empty()) { // Merge the polylines. assert(pl1 < pl2); assert(pl1->points.size() >= 2); @@ -1061,7 +1065,7 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook0-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); #endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - add_hook(first_i, scaled_offset, hook_length, rtree, lines_src); + add_hook(first_i, scaled_offset, hook_length, scaled_trim_distance, rtree, lines_src); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook0-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); ++ iStep; @@ -1138,6 +1142,7 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b } else { // Both intersections are on different polylines Line l(first_i_point, nearest_i_point); + l.translate((perp(first_i.closest_line->vector().cast<double>().normalized()) * (first_i.left ? scaled_trim_distance : - scaled_trim_distance)).cast<coord_t>()); Point pt_start, pt_end; bool trim_start = first_i .intersect_pl->points.size() == 3 && first_i .other_hook_intersects(l, pt_start); bool trim_end = nearest_i.intersect_pl->points.size() == 3 && nearest_i.other_hook_intersects(l, pt_end); @@ -1175,7 +1180,7 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook-pre-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); #endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT - add_hook(first_i, scaled_offset, hook_length, rtree, lines_src); + add_hook(first_i, scaled_offset, hook_length, scaled_trim_distance, rtree, lines_src); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT export_infill_lines_to_svg(boundary, lines, debug_out_path("FillAdaptive-add_hook-post-%d-%d.svg", iRun, iStep), { first_i.intersect_point }); #endif // ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT diff --git a/src/libslic3r/Line.hpp b/src/libslic3r/Line.hpp index 46f1a0442..72532b4e3 100644 --- a/src/libslic3r/Line.hpp +++ b/src/libslic3r/Line.hpp @@ -54,7 +54,8 @@ public: Line(const Point& _a, const Point& _b) : a(_a), b(_b) {} explicit operator Lines() const { Lines lines; lines.emplace_back(*this); return lines; } void scale(double factor) { this->a *= factor; this->b *= factor; } - void translate(double x, double y) { Vector v(x, y); this->a += v; this->b += v; } + void translate(const Point &v) { this->a += v; this->b += v; } + void translate(double x, double y) { this->translate(Point(x, y)); } void rotate(double angle, const Point ¢er) { this->a.rotate(angle, center); this->b.rotate(angle, center); } void reverse() { std::swap(this->a, this->b); } double length() const { return (b - a).cast<double>().norm(); } diff --git a/src/libslic3r/Point.hpp b/src/libslic3r/Point.hpp index dac4d5877..3b0c54324 100644 --- a/src/libslic3r/Point.hpp +++ b/src/libslic3r/Point.hpp @@ -61,18 +61,14 @@ inline int64_t cross2(const Vec2i64 &v1, const Vec2i64 &v2) { return v1(0) * v2( inline float cross2(const Vec2f &v1, const Vec2f &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } inline double cross2(const Vec2d &v1, const Vec2d &v2) { return v1(0) * v2(1) - v1(1) * v2(0); } -template<class T, int N> Eigen::Matrix<T, 2, 1, Eigen::DontAlign> -to_2d(const Eigen::Matrix<T, N, 1, Eigen::DontAlign> &ptN) { return {ptN(0), ptN(1)}; } +template<typename T, int Options> +inline Eigen::Matrix<T, 2, 1, Eigen::DontAlign> perp(const Eigen::MatrixBase<Eigen::Matrix<T, 2, 1, Options>> &v) { return Eigen::Matrix<T, 2, 1, Eigen::DontAlign>(- v.y(), v.x()); } -//inline Vec2i32 to_2d(const Vec3i32 &pt3) { return Vec2i32(pt3(0), pt3(1)); } -//inline Vec2i64 to_2d(const Vec3i64 &pt3) { return Vec2i64(pt3(0), pt3(1)); } -//inline Vec2f to_2d(const Vec3f &pt3) { return Vec2f (pt3(0), pt3(1)); } -//inline Vec2d to_2d(const Vec3d &pt3) { return Vec2d (pt3(0), pt3(1)); } +template<class T, int N, int Options> +Eigen::Matrix<T, 2, 1, Eigen::DontAlign> to_2d(const Eigen::MatrixBase<Eigen::Matrix<T, N, 1, Options>> &ptN) { return { ptN(0), ptN(1) }; } -inline Vec3d to_3d(const Vec2d &v, double z) { return Vec3d(v(0), v(1), z); } -inline Vec3f to_3d(const Vec2f &v, float z) { return Vec3f(v(0), v(1), z); } -inline Vec3i64 to_3d(const Vec2i64 &v, float z) { return Vec3i64(int64_t(v(0)), int64_t(v(1)), int64_t(z)); } -inline Vec3crd to_3d(const Vec3crd &p, coord_t z) { return Vec3crd(p(0), p(1), z); } +template<class T, int Options> +Eigen::Matrix<T, 3, 1, Eigen::DontAlign> to_3d(const Eigen::MatrixBase<Eigen::Matrix<T, 2, 1, Options>> & pt, const T z) { return { pt(0), pt(1), z }; } inline Vec2d unscale(coord_t x, coord_t y) { return Vec2d(unscale<double>(x), unscale<double>(y)); } inline Vec2d unscale(const Vec2crd &pt) { return Vec2d(unscale<double>(pt(0)), unscale<double>(pt(1))); } From 32362cff0b09a60125b3650c2d7fcc1d81c7b238 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Mon, 16 Nov 2020 10:18:51 +0100 Subject: [PATCH 024/138] SVG export: Implemented flipping in Y axis. Now flipped by default to match the 3D print paths view when looking at the print from the top. --- src/libslic3r/SVG.cpp | 148 +++++++++++++++++------------------------- src/libslic3r/SVG.hpp | 24 ++++--- 2 files changed, 74 insertions(+), 98 deletions(-) diff --git a/src/libslic3r/SVG.cpp b/src/libslic3r/SVG.cpp index 1c1c906c9..da30a197f 100644 --- a/src/libslic3r/SVG.cpp +++ b/src/libslic3r/SVG.cpp @@ -3,8 +3,6 @@ #include <boost/nowide/cstdio.hpp> -#define COORD(x) (unscale<float>((x))*10) - namespace Slic3r { bool SVG::open(const char* afilename) @@ -33,8 +31,9 @@ bool SVG::open(const char* afilename, const BoundingBox &bbox, const coord_t bbo this->f = boost::nowide::fopen(afilename, "w"); if (f == NULL) return false; - float w = COORD(bbox.max(0) - bbox.min(0) + 2 * bbox_offset); - float h = COORD(bbox.max(1) - bbox.min(1) + 2 * bbox_offset); + float w = to_svg_coord(bbox.max(0) - bbox.min(0) + 2 * bbox_offset); + float h = to_svg_coord(bbox.max(1) - bbox.min(1) + 2 * bbox_offset); + this->height = h; fprintf(this->f, "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.0//EN\" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n" @@ -47,12 +46,11 @@ bool SVG::open(const char* afilename, const BoundingBox &bbox, const coord_t bbo return true; } -void -SVG::draw(const Line &line, std::string stroke, coordf_t stroke_width) +void SVG::draw(const Line &line, std::string stroke, coordf_t stroke_width) { fprintf(this->f, " <line x1=\"%f\" y1=\"%f\" x2=\"%f\" y2=\"%f\" style=\"stroke: %s; stroke-width: %f\"", - COORD(line.a(0) - origin(0)), COORD(line.a(1) - origin(1)), COORD(line.b(0) - origin(0)), COORD(line.b(1) - origin(1)), stroke.c_str(), (stroke_width == 0) ? 1.f : COORD(stroke_width)); + to_svg_x(line.a(0) - origin(0)), to_svg_y(line.a(1) - origin(1)), to_svg_x(line.b(0) - origin(0)), to_svg_y(line.b(1) - origin(1)), stroke.c_str(), (stroke_width == 0) ? 1.f : to_svg_coord(stroke_width)); if (this->arrows) fprintf(this->f, " marker-end=\"url(#endArrow)\""); fprintf(this->f, "/>\n"); @@ -67,34 +65,31 @@ void SVG::draw(const ThickLine &line, const std::string &fill, const std::string coordf_t db = coordf_t(0.5)*line.b_width/len; fprintf(this->f, " <polygon points=\"%f,%f %f,%f %f,%f %f,%f\" style=\"fill:%s; stroke: %s; stroke-width: %f\"/>\n", - COORD(line.a(0)-da*perp(0)-origin(0)), - COORD(line.a(1)-da*perp(1)-origin(1)), - COORD(line.b(0)-db*perp(0)-origin(0)), - COORD(line.b(1)-db*perp(1)-origin(1)), - COORD(line.b(0)+db*perp(0)-origin(0)), - COORD(line.b(1)+db*perp(1)-origin(1)), - COORD(line.a(0)+da*perp(0)-origin(0)), - COORD(line.a(1)+da*perp(1)-origin(1)), + to_svg_x(line.a(0)-da*perp(0)-origin(0)), + to_svg_y(line.a(1)-da*perp(1)-origin(1)), + to_svg_x(line.b(0)-db*perp(0)-origin(0)), + to_svg_y(line.b(1)-db*perp(1)-origin(1)), + to_svg_x(line.b(0)+db*perp(0)-origin(0)), + to_svg_y(line.b(1)+db*perp(1)-origin(1)), + to_svg_x(line.a(0)+da*perp(0)-origin(0)), + to_svg_y(line.a(1)+da*perp(1)-origin(1)), fill.c_str(), stroke.c_str(), - (stroke_width == 0) ? 1.f : COORD(stroke_width)); + (stroke_width == 0) ? 1.f : to_svg_coord(stroke_width)); } -void -SVG::draw(const Lines &lines, std::string stroke, coordf_t stroke_width) +void SVG::draw(const Lines &lines, std::string stroke, coordf_t stroke_width) { - for (Lines::const_iterator it = lines.begin(); it != lines.end(); ++it) - this->draw(*it, stroke, stroke_width); + for (const Line &l : lines) + this->draw(l, stroke, stroke_width); } -void -SVG::draw(const IntersectionLines &lines, std::string stroke) +void SVG::draw(const IntersectionLines &lines, std::string stroke) { - for (IntersectionLines::const_iterator it = lines.begin(); it != lines.end(); ++it) - this->draw((Line)*it, stroke); + for (const IntersectionLine &il : lines) + this->draw((Line)il, stroke); } -void -SVG::draw(const ExPolygon &expolygon, std::string fill, const float fill_opacity) +void SVG::draw(const ExPolygon &expolygon, std::string fill, const float fill_opacity) { this->fill = fill; @@ -106,8 +101,7 @@ SVG::draw(const ExPolygon &expolygon, std::string fill, const float fill_opacity this->path(d, true, 0, fill_opacity); } -void -SVG::draw_outline(const ExPolygon &expolygon, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) +void SVG::draw_outline(const ExPolygon &expolygon, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) { draw_outline(expolygon.contour, stroke_outer, stroke_width); for (Polygons::const_iterator it = expolygon.holes.begin(); it != expolygon.holes.end(); ++ it) { @@ -115,83 +109,71 @@ SVG::draw_outline(const ExPolygon &expolygon, std::string stroke_outer, std::str } } -void -SVG::draw(const ExPolygons &expolygons, std::string fill, const float fill_opacity) +void SVG::draw(const ExPolygons &expolygons, std::string fill, const float fill_opacity) { for (ExPolygons::const_iterator it = expolygons.begin(); it != expolygons.end(); ++it) this->draw(*it, fill, fill_opacity); } -void -SVG::draw_outline(const ExPolygons &expolygons, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) +void SVG::draw_outline(const ExPolygons &expolygons, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) { for (ExPolygons::const_iterator it = expolygons.begin(); it != expolygons.end(); ++ it) draw_outline(*it, stroke_outer, stroke_holes, stroke_width); } -void -SVG::draw(const Surface &surface, std::string fill, const float fill_opacity) +void SVG::draw(const Surface &surface, std::string fill, const float fill_opacity) { draw(surface.expolygon, fill, fill_opacity); } -void -SVG::draw_outline(const Surface &surface, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) +void SVG::draw_outline(const Surface &surface, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) { draw_outline(surface.expolygon, stroke_outer, stroke_holes, stroke_width); } -void -SVG::draw(const Surfaces &surfaces, std::string fill, const float fill_opacity) +void SVG::draw(const Surfaces &surfaces, std::string fill, const float fill_opacity) { for (Surfaces::const_iterator it = surfaces.begin(); it != surfaces.end(); ++it) this->draw(*it, fill, fill_opacity); } -void -SVG::draw_outline(const Surfaces &surfaces, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) +void SVG::draw_outline(const Surfaces &surfaces, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) { for (Surfaces::const_iterator it = surfaces.begin(); it != surfaces.end(); ++ it) draw_outline(*it, stroke_outer, stroke_holes, stroke_width); } -void -SVG::draw(const SurfacesPtr &surfaces, std::string fill, const float fill_opacity) +void SVG::draw(const SurfacesPtr &surfaces, std::string fill, const float fill_opacity) { for (SurfacesPtr::const_iterator it = surfaces.begin(); it != surfaces.end(); ++it) this->draw(*(*it), fill, fill_opacity); } -void -SVG::draw_outline(const SurfacesPtr &surfaces, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) +void SVG::draw_outline(const SurfacesPtr &surfaces, std::string stroke_outer, std::string stroke_holes, coordf_t stroke_width) { for (SurfacesPtr::const_iterator it = surfaces.begin(); it != surfaces.end(); ++ it) draw_outline(*(*it), stroke_outer, stroke_holes, stroke_width); } -void -SVG::draw(const Polygon &polygon, std::string fill) +void SVG::draw(const Polygon &polygon, std::string fill) { this->fill = fill; this->path(this->get_path_d(polygon, true), !fill.empty(), 0, 1.f); } -void -SVG::draw(const Polygons &polygons, std::string fill) +void SVG::draw(const Polygons &polygons, std::string fill) { for (Polygons::const_iterator it = polygons.begin(); it != polygons.end(); ++it) this->draw(*it, fill); } -void -SVG::draw(const Polyline &polyline, std::string stroke, coordf_t stroke_width) +void SVG::draw(const Polyline &polyline, std::string stroke, coordf_t stroke_width) { this->stroke = stroke; this->path(this->get_path_d(polyline, false), false, stroke_width, 1.f); } -void -SVG::draw(const Polylines &polylines, std::string stroke, coordf_t stroke_width) +void SVG::draw(const Polylines &polylines, std::string stroke, coordf_t stroke_width) { for (Polylines::const_iterator it = polylines.begin(); it != polylines.end(); ++it) this->draw(*it, stroke, stroke_width); @@ -203,73 +185,64 @@ void SVG::draw(const ThickLines &thicklines, const std::string &fill, const std: this->draw(*it, fill, stroke, stroke_width); } -void -SVG::draw(const ThickPolylines &polylines, const std::string &stroke, coordf_t stroke_width) +void SVG::draw(const ThickPolylines &polylines, const std::string &stroke, coordf_t stroke_width) { for (ThickPolylines::const_iterator it = polylines.begin(); it != polylines.end(); ++it) this->draw((Polyline)*it, stroke, stroke_width); } -void -SVG::draw(const ThickPolylines &thickpolylines, const std::string &fill, const std::string &stroke, coordf_t stroke_width) +void SVG::draw(const ThickPolylines &thickpolylines, const std::string &fill, const std::string &stroke, coordf_t stroke_width) { for (ThickPolylines::const_iterator it = thickpolylines.begin(); it != thickpolylines.end(); ++ it) draw(it->thicklines(), fill, stroke, stroke_width); } -void -SVG::draw(const Point &point, std::string fill, coord_t iradius) +void SVG::draw(const Point &point, std::string fill, coord_t iradius) { - float radius = (iradius == 0) ? 3.f : COORD(iradius); + float radius = (iradius == 0) ? 3.f : to_svg_coord(iradius); std::ostringstream svg; - svg << " <circle cx=\"" << COORD(point(0) - origin(0)) << "\" cy=\"" << COORD(point(1) - origin(1)) + svg << " <circle cx=\"" << to_svg_x(point(0) - origin(0)) << "\" cy=\"" << to_svg_y(point(1) - origin(1)) << "\" r=\"" << radius << "\" " << "style=\"stroke: none; fill: " << fill << "\" />"; fprintf(this->f, "%s\n", svg.str().c_str()); } -void -SVG::draw(const Points &points, std::string fill, coord_t radius) +void SVG::draw(const Points &points, std::string fill, coord_t radius) { for (Points::const_iterator it = points.begin(); it != points.end(); ++it) this->draw(*it, fill, radius); } -void -SVG::draw(const ClipperLib::Path &polygon, double scale, std::string stroke, coordf_t stroke_width) +void SVG::draw(const ClipperLib::Path &polygon, double scale, std::string stroke, coordf_t stroke_width) { this->stroke = stroke; this->path(this->get_path_d(polygon, scale, true), false, stroke_width, 1.f); } -void -SVG::draw(const ClipperLib::Paths &polygons, double scale, std::string stroke, coordf_t stroke_width) +void SVG::draw(const ClipperLib::Paths &polygons, double scale, std::string stroke, coordf_t stroke_width) { for (ClipperLib::Paths::const_iterator it = polygons.begin(); it != polygons.end(); ++ it) draw(*it, scale, stroke, stroke_width); } -void -SVG::draw_outline(const Polygon &polygon, std::string stroke, coordf_t stroke_width) +void SVG::draw_outline(const Polygon &polygon, std::string stroke, coordf_t stroke_width) { this->stroke = stroke; this->path(this->get_path_d(polygon, true), false, stroke_width, 1.f); } -void -SVG::draw_outline(const Polygons &polygons, std::string stroke, coordf_t stroke_width) +void SVG::draw_outline(const Polygons &polygons, std::string stroke, coordf_t stroke_width) { for (Polygons::const_iterator it = polygons.begin(); it != polygons.end(); ++ it) draw_outline(*it, stroke, stroke_width); } -void -SVG::path(const std::string &d, bool fill, coordf_t stroke_width, const float fill_opacity) +void SVG::path(const std::string &d, bool fill, coordf_t stroke_width, const float fill_opacity) { float lineWidth = 0.f; if (! fill) - lineWidth = (stroke_width == 0) ? 2.f : COORD(stroke_width); + lineWidth = (stroke_width == 0) ? 2.f : to_svg_coord(stroke_width); fprintf( this->f, @@ -283,27 +256,25 @@ SVG::path(const std::string &d, bool fill, coordf_t stroke_width, const float fi ); } -std::string -SVG::get_path_d(const MultiPoint &mp, bool closed) const +std::string SVG::get_path_d(const MultiPoint &mp, bool closed) const { std::ostringstream d; d << "M "; for (Points::const_iterator p = mp.points.begin(); p != mp.points.end(); ++p) { - d << COORD((*p)(0) - origin(0)) << " "; - d << COORD((*p)(1) - origin(1)) << " "; + d << to_svg_x((*p)(0) - origin(0)) << " "; + d << to_svg_y((*p)(1) - origin(1)) << " "; } if (closed) d << "z"; return d.str(); } -std::string -SVG::get_path_d(const ClipperLib::Path &path, double scale, bool closed) const +std::string SVG::get_path_d(const ClipperLib::Path &path, double scale, bool closed) const { std::ostringstream d; d << "M "; for (ClipperLib::Path::const_iterator p = path.begin(); p != path.end(); ++p) { - d << COORD(scale * p->X - origin(0)) << " "; - d << COORD(scale * p->Y - origin(1)) << " "; + d << to_svg_x(scale * p->X - origin(0)) << " "; + d << to_svg_y(scale * p->Y - origin(1)) << " "; } if (closed) d << "z"; return d.str(); @@ -313,8 +284,8 @@ void SVG::draw_text(const Point &pt, const char *text, const char *color) { fprintf(this->f, "<text x=\"%f\" y=\"%f\" font-family=\"sans-serif\" font-size=\"20px\" fill=\"%s\">%s</text>", - COORD(pt(0)-origin(0)), - COORD(pt(1)-origin(1)), + to_svg_x(pt(0)-origin(0)), + to_svg_y(pt(1)-origin(1)), color, text); } @@ -322,18 +293,17 @@ void SVG::draw_legend(const Point &pt, const char *text, const char *color) { fprintf(this->f, "<circle cx=\"%f\" cy=\"%f\" r=\"10\" fill=\"%s\"/>", - COORD(pt(0)-origin(0)), - COORD(pt(1)-origin(1)), + to_svg_x(pt(0)-origin(0)), + to_svg_y(pt(1)-origin(1)), color); fprintf(this->f, "<text x=\"%f\" y=\"%f\" font-family=\"sans-serif\" font-size=\"10px\" fill=\"%s\">%s</text>", - COORD(pt(0)-origin(0)) + 20.f, - COORD(pt(1)-origin(1)), + to_svg_x(pt(0)-origin(0)) + 20.f, + to_svg_y(pt(1)-origin(1)), "black", text); } -void -SVG::Close() +void SVG::Close() { fprintf(this->f, "</svg>\n"); fclose(this->f); diff --git a/src/libslic3r/SVG.hpp b/src/libslic3r/SVG.hpp index c1b387554..1ebd8d918 100644 --- a/src/libslic3r/SVG.hpp +++ b/src/libslic3r/SVG.hpp @@ -16,27 +16,28 @@ public: bool arrows; std::string fill, stroke; Point origin; - bool flipY; + float height; + bool flipY; SVG(const char* afilename) : arrows(false), fill("grey"), stroke("black"), filename(afilename), flipY(false) { open(filename); } - SVG(const char* afilename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool aflipY = false) : - arrows(false), fill("grey"), stroke("black"), filename(afilename), origin(bbox.min - Point(bbox_offset, bbox_offset)), flipY(aflipY) - { open(filename, bbox, bbox_offset, aflipY); } + SVG(const char* afilename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool flipY = true) : + arrows(false), fill("grey"), stroke("black"), filename(afilename), origin(bbox.min - Point(bbox_offset, bbox_offset)), flipY(flipY) + { open(filename, bbox, bbox_offset, flipY); } SVG(const std::string &filename) : arrows(false), fill("grey"), stroke("black"), filename(filename), flipY(false) { open(filename); } - SVG(const std::string &filename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool aflipY = false) : - arrows(false), fill("grey"), stroke("black"), filename(filename), origin(bbox.min - Point(bbox_offset, bbox_offset)), flipY(aflipY) - { open(filename, bbox, bbox_offset, aflipY); } + SVG(const std::string &filename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool flipY = true) : + arrows(false), fill("grey"), stroke("black"), filename(filename), origin(bbox.min - Point(bbox_offset, bbox_offset)), flipY(flipY) + { open(filename, bbox, bbox_offset, flipY); } ~SVG() { if (f != NULL) Close(); } bool open(const char* filename); - bool open(const char* filename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool flipY = false); + bool open(const char* filename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool flipY = true); bool open(const std::string &filename) { return open(filename.c_str()); } - bool open(const std::string &filename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool flipY = false) + bool open(const std::string &filename, const BoundingBox &bbox, const coord_t bbox_offset = scale_(1.), bool flipY = true) { return open(filename.c_str(), bbox, bbox_offset, flipY); } void draw(const Line &line, std::string stroke = "black", coordf_t stroke_width = 0); @@ -127,6 +128,11 @@ public: }; static void export_expolygons(const char *path, const std::vector<std::pair<Slic3r::ExPolygons, ExPolygonAttributes>> &expolygons_with_attributes); + +private: + static float to_svg_coord(float x) throw() { return unscale<float>(x) * 10.f; } + static float to_svg_x(float x) throw() { return to_svg_coord(x); } + float to_svg_y(float x) const throw() { return flipY ? this->height - to_svg_coord(x) : to_svg_coord(x); } }; } From 84693a58109082282b5e193140dd72cb06c36cdd Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Mon, 16 Nov 2020 10:20:47 +0100 Subject: [PATCH 025/138] New get_extents(const std::vector<Points> &pts), refactored Lian Barsky line clipping --- src/libslic3r/Geometry.hpp | 25 ++++++++++++------------- src/libslic3r/Point.cpp | 13 +++++++++++++ src/libslic3r/Point.hpp | 4 ++++ src/libslic3r/Polygon.cpp | 5 ----- src/libslic3r/Polygon.hpp | 1 - 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index 2bf9453c4..92333f203 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -213,16 +213,7 @@ inline bool liang_barsky_line_clipping_interval( double t0 = 0.0; double t1 = 1.0; // Traverse through left, right, bottom, top edges. - for (int edge = 0; edge < 4; ++ edge) - { - double p, q; - switch (edge) { - case 0: p = - v.x(); q = - bbox.min.x() + x0.x(); break; - case 1: p = v.x(); q = bbox.max.x() - x0.x(); break; - case 2: p = - v.y(); q = - bbox.min.y() + x0.y(); break; - default: p = v.y(); q = bbox.max.y() - x0.y(); break; - } - + auto clip_side = [&x0, &v, &bbox, &t0, &t1](double p, double q) -> bool { if (p == 0) { if (q < 0) // Line parallel to the bounding box edge is fully outside of the bounding box. @@ -247,10 +238,18 @@ inline bool liang_barsky_line_clipping_interval( t1 = r; } } + return true; + }; + + if (clip_side(- v.x(), - bbox.min.x() + x0.x()) && + clip_side( v.x(), bbox.max.x() - x0.x()) && + clip_side(- v.y(), - bbox.min.y() + x0.y()) && + clip_side( v.y(), bbox.max.y() - x0.y())) { + out_interval.first = t0; + out_interval.second = t1; + return true; } - out_interval.first = t0; - out_interval.second = t1; - return true; + return false; } template<typename T> diff --git a/src/libslic3r/Point.cpp b/src/libslic3r/Point.cpp index f3ed41342..555a1cb2d 100644 --- a/src/libslic3r/Point.cpp +++ b/src/libslic3r/Point.cpp @@ -176,6 +176,19 @@ Point Point::projection_onto(const Line &line) const return ((line.a - *this).cast<double>().squaredNorm() < (line.b - *this).cast<double>().squaredNorm()) ? line.a : line.b; } +BoundingBox get_extents(const Points &pts) +{ + return BoundingBox(pts); +} + +BoundingBox get_extents(const std::vector<Points> &pts) +{ + BoundingBox bbox; + for (const Points &p : pts) + bbox.merge(get_extents(p)); + return bbox; +} + std::ostream& operator<<(std::ostream &stm, const Vec2d &pointf) { return stm << pointf(0) << "," << pointf(1); diff --git a/src/libslic3r/Point.hpp b/src/libslic3r/Point.hpp index 3b0c54324..a6525af4e 100644 --- a/src/libslic3r/Point.hpp +++ b/src/libslic3r/Point.hpp @@ -13,6 +13,7 @@ namespace Slic3r { +class BoundingBox; class Line; class MultiPoint; class Point; @@ -178,6 +179,9 @@ inline Point lerp(const Point &a, const Point &b, double t) return ((1. - t) * a.cast<double>() + t * b.cast<double>()).cast<coord_t>(); } +extern BoundingBox get_extents(const Points &pts); +extern BoundingBox get_extents(const std::vector<Points> &pts); + namespace int128 { // Exact orientation predicate, // returns +1: CCW, 0: collinear, -1: CW. diff --git a/src/libslic3r/Polygon.cpp b/src/libslic3r/Polygon.cpp index 13cdf65b4..f74df1c9a 100644 --- a/src/libslic3r/Polygon.cpp +++ b/src/libslic3r/Polygon.cpp @@ -298,11 +298,6 @@ void Polygon::densify(float min_length, std::vector<float>* lengths_ptr) assert(points.size() == lengths.size() - 1); } -BoundingBox get_extents(const Points &points) -{ - return BoundingBox(points); -} - BoundingBox get_extents(const Polygon &poly) { return poly.bounding_box(); diff --git a/src/libslic3r/Polygon.hpp b/src/libslic3r/Polygon.hpp index f5aa28914..3c44f66f7 100644 --- a/src/libslic3r/Polygon.hpp +++ b/src/libslic3r/Polygon.hpp @@ -74,7 +74,6 @@ public: inline bool operator==(const Polygon &lhs, const Polygon &rhs) { return lhs.points == rhs.points; } inline bool operator!=(const Polygon &lhs, const Polygon &rhs) { return lhs.points != rhs.points; } -extern BoundingBox get_extents(const Points &points); extern BoundingBox get_extents(const Polygon &poly); extern BoundingBox get_extents(const Polygons &polygons); extern BoundingBox get_extents_rotated(const Polygon &poly, double angle); From 4280fdb5f26b382f6c2c75d1febf1af57364e266 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Mon, 16 Nov 2020 10:54:00 +0100 Subject: [PATCH 026/138] Reworked connection of infill lines to perimeter lines. Added a new "infill_anchor" parameter. --- src/libslic3r/Fill/Fill.cpp | 22 +- src/libslic3r/Fill/FillAdaptive.cpp | 15 +- src/libslic3r/Fill/FillBase.cpp | 749 ++++++++++-------------- src/libslic3r/Fill/FillBase.hpp | 9 +- src/libslic3r/Fill/FillRectilinear2.cpp | 38 +- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 10 + src/libslic3r/PrintConfig.hpp | 2 + src/libslic3r/PrintObject.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 1 + xs/lib/Slic3r/XS.pm | 1 - xs/xsp/Filler.xsp | 2 - 12 files changed, 383 insertions(+), 470 deletions(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 3e24d502d..95c8bb9b9 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -37,6 +37,8 @@ struct SurfaceFillParams bool dont_connect = false; // Don't adjust spacing to fill the space evenly. bool dont_adjust = false; + // Length of the infill anchor along the perimeter line. + float anchor_length = std::numeric_limits<float>::max(); // width, height of extrusion, nozzle diameter, is bridge // For the output, for fill generator. @@ -67,6 +69,7 @@ struct SurfaceFillParams RETURN_COMPARE_NON_EQUAL(density); RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, dont_connect); RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, dont_adjust); + RETURN_COMPARE_NON_EQUAL(anchor_length); RETURN_COMPARE_NON_EQUAL(flow.width); RETURN_COMPARE_NON_EQUAL(flow.height); RETURN_COMPARE_NON_EQUAL(flow.nozzle_diameter); @@ -85,6 +88,7 @@ struct SurfaceFillParams this->density == rhs.density && this->dont_connect == rhs.dont_connect && this->dont_adjust == rhs.dont_adjust && + this->anchor_length == rhs.anchor_length && this->flow == rhs.flow && this->extrusion_role == rhs.extrusion_role; } @@ -115,16 +119,17 @@ std::vector<SurfaceFill> group_fills(const Layer &layer) if (surface.surface_type == stInternalVoid) has_internal_voids = true; else { + const PrintRegionConfig ®ion_config = layerm.region()->config(); FlowRole extrusion_role = surface.is_top() ? frTopSolidInfill : (surface.is_solid() ? frSolidInfill : frInfill); bool is_bridge = layer.id() > 0 && surface.is_bridge(); params.extruder = layerm.region()->extruder(extrusion_role); - params.pattern = layerm.region()->config().fill_pattern.value; - params.density = float(layerm.region()->config().fill_density); + params.pattern = region_config.fill_pattern.value; + params.density = float(region_config.fill_density); if (surface.is_solid()) { params.density = 100.f; params.pattern = (surface.is_external() && ! is_bridge) ? - (surface.is_top() ? layerm.region()->config().top_fill_pattern.value : layerm.region()->config().bottom_fill_pattern.value) : + (surface.is_top() ? region_config.top_fill_pattern.value : region_config.bottom_fill_pattern.value) : ipRectilinear; } else if (params.density <= 0) continue; @@ -136,7 +141,7 @@ std::vector<SurfaceFill> group_fills(const Layer &layer) (surface.is_top() ? erTopSolidInfill : erSolidInfill) : erInternalInfill); params.bridge_angle = float(surface.bridge_angle); - params.angle = float(Geometry::deg2rad(layerm.region()->config().fill_angle.value)); + params.angle = float(Geometry::deg2rad(region_config.fill_angle.value)); // calculate the actual flow we'll be using for this infill params.flow = layerm.region()->flow( @@ -165,6 +170,10 @@ std::vector<SurfaceFill> group_fills(const Layer &layer) } else params.spacing = params.flow.spacing(); + params.anchor_length = float(region_config.infill_anchor); + if (region_config.infill_anchor.percent) + params.anchor_length *= 0.01 * params.spacing; + auto it_params = set_surface_params.find(params); if (it_params == set_surface_params.end()) it_params = set_surface_params.insert(it_params, params); @@ -367,8 +376,9 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: // apply half spacing using this flow's own spacing and generate infill FillParams params; - params.density = float(0.01 * surface_fill.params.density); - params.dont_adjust = surface_fill.params.dont_adjust; // false + params.density = float(0.01 * surface_fill.params.density); + params.dont_adjust = surface_fill.params.dont_adjust; // false + params.anchor_length = surface_fill.params.anchor_length; for (ExPolygon &expoly : surface_fill.expolygons) { // Spacing is modified by the filler to indicate adjustments. Reset it for each expolygon. diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index c96e4e023..188deca7c 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -639,7 +639,6 @@ static inline Intersection* get_nearest_intersection(std::vector<std::pair<Inter // translated in the direction of the intersection line (intersection.intersect_line). static Line create_offset_line(Line offset_line, const Intersection &intersection, const double scaled_offset) { - // 50% overlap of the extrusion lines to achieve strong bonding. offset_line.translate((perp(intersection.closest_line->vector().cast<double>().normalized()) * (intersection.left ? scaled_offset : - scaled_offset)).cast<coord_t>()); // Extend the line by a small value to guarantee a collision with adjacent lines offset_line.extend(coord_t(scaled_offset * 1.16)); // / cos(PI/6) @@ -767,8 +766,10 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b lines_src.reserve(lines.size()); std::transform(lines.begin(), lines.end(), std::back_inserter(lines_src), [](const Line& l) { return Polyline{ l.a, l.b }; }); - const float scaled_offset = float(scale_(spacing) * 0.7); // 30% overlap - const float scaled_trim_distance = float(scale_(spacing) * 0.5 * 0.75); // 25% overlap + // 19% overlap, slightly lower than the allowed overlap in Fill::connect_infill() + const float scaled_offset = float(scale_(spacing) * 0.81); + // 25% overlap + const float scaled_trim_distance = float(scale_(spacing) * 0.5 * 0.75); // Keeping the vector of closest points outside the loop, so the vector does not need to be reallocated. std::vector<std::pair<rtree_segment_t, size_t>> closest; @@ -1199,9 +1200,6 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b return polylines_out; } -//coord_t get_hook_length(const double spacing) { return coord_t(scale_(spacing)) * 2; } -coord_t get_hook_length(const double spacing) { return coord_t(scale_(spacing)) * 5; } - #ifndef NDEBUG bool has_no_collinear_lines(const Polylines &polylines) { @@ -1323,7 +1321,8 @@ void Filler::_fill_surface_single( } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ - coord_t hook_length = get_hook_length(this->spacing); + const auto hook_length = coord_t(std::min(scale_(this->spacing * 5), scale_(params.anchor_length))); + Polylines all_polylines_with_hooks = all_polylines.size() > 1 ? connect_lines_using_hooks(std::move(all_polylines), expolygon, this->spacing, hook_length) : std::move(all_polylines); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT @@ -1336,7 +1335,7 @@ void Filler::_fill_surface_single( if (params.dont_connect || all_polylines_with_hooks.size() <= 1) append(polylines_out, std::move(all_polylines_with_hooks)); else - connect_infill(chain_polylines(std::move(all_polylines_with_hooks)), expolygon, polylines_out, this->spacing, params, hook_length); + connect_infill(chain_polylines(std::move(all_polylines_with_hooks)), expolygon, polylines_out, this->spacing, params); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index a3b83e38f..782545114 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -154,377 +154,6 @@ std::pair<float, Point> Fill::_infill_direction(const Surface *surface) const return std::pair<float, Point>(out_angle, out_shift); } -#if 0 -// From pull request "Gyroid improvements" #2730 by @supermerill - -/// cut poly between poly.point[idx_1] & poly.point[idx_1+1] -/// add p1+-width to one part and p2+-width to the other one. -/// add the "new" polyline to polylines (to part cut from poly) -/// p1 & p2 have to be between poly.point[idx_1] & poly.point[idx_1+1] -/// if idx_1 is ==0 or == size-1, then we don't need to create a new polyline. -static void cut_polyline(Polyline &poly, Polylines &polylines, size_t idx_1, Point p1, Point p2) { - //reorder points - if (p1.distance_to_square(poly.points[idx_1]) > p2.distance_to_square(poly.points[idx_1])) { - Point temp = p2; - p2 = p1; - p1 = temp; - } - if (idx_1 == poly.points.size() - 1) { - //shouldn't be possible. - poly.points.erase(poly.points.end() - 1); - } else { - // create new polyline - Polyline new_poly; - //put points in new_poly - new_poly.points.push_back(p2); - new_poly.points.insert(new_poly.points.end(), poly.points.begin() + idx_1 + 1, poly.points.end()); - //erase&put points in poly - poly.points.erase(poly.points.begin() + idx_1 + 1, poly.points.end()); - poly.points.push_back(p1); - //safe test - if (poly.length() == 0) - poly.points = new_poly.points; - else - polylines.emplace_back(new_poly); - } -} - -/// the poly is like a polygon but with first_point != last_point (already removed) -static void cut_polygon(Polyline &poly, size_t idx_1, Point p1, Point p2) { - //reorder points - if (p1.distance_to_square(poly.points[idx_1]) > p2.distance_to_square(poly.points[idx_1])) { - Point temp = p2; - p2 = p1; - p1 = temp; - } - //check if we need to rotate before cutting - if (idx_1 != poly.size() - 1) { - //put points in new_poly - poly.points.insert(poly.points.end(), poly.points.begin(), poly.points.begin() + idx_1 + 1); - poly.points.erase(poly.points.begin(), poly.points.begin() + idx_1 + 1); - } - //put points in poly - poly.points.push_back(p1); - poly.points.insert(poly.points.begin(), p2); -} - -/// check if the polyline from pts_to_check may be at 'width' distance of a point in polylines_blocker -/// it use equally_spaced_points with width/2 precision, so don't worry with pts_to_check number of points. -/// it use the given polylines_blocker points, be sure to put enough of them to be reliable. -/// complexity : N(pts_to_check.equally_spaced_points(width / 2)) x N(polylines_blocker.points) -static bool collision(const Points &pts_to_check, const Polylines &polylines_blocker, const coordf_t width) { - //check if it's not too close to a polyline - coordf_t min_dist_square = width * width * 0.9 - SCALED_EPSILON; - Polyline better_polylines(pts_to_check); - Points better_pts = better_polylines.equally_spaced_points(width / 2); - for (const Point &p : better_pts) { - for (const Polyline &poly2 : polylines_blocker) { - for (const Point &p2 : poly2.points) { - if (p.distance_to_square(p2) < min_dist_square) { - return true; - } - } - } - } - return false; -} - -/// Try to find a path inside polylines that allow to go from p1 to p2. -/// width if the width of the extrusion -/// polylines_blockers are the array of polylines to check if the path isn't blocked by something. -/// complexity: N(polylines.points) + a collision check after that if we finded a path: N(2(p2-p1)/width) x N(polylines_blocker.points) -static Points get_frontier(Polylines &polylines, const Point& p1, const Point& p2, const coord_t width, const Polylines &polylines_blockers, coord_t max_size = -1) { - for (size_t idx_poly = 0; idx_poly < polylines.size(); ++idx_poly) { - Polyline &poly = polylines[idx_poly]; - if (poly.size() <= 1) continue; - - //loop? - if (poly.first_point() == poly.last_point()) { - //polygon : try to find a line for p1 & p2. - size_t idx_11, idx_12, idx_21, idx_22; - idx_11 = poly.closest_point_index(p1); - idx_12 = idx_11; - if (Line(poly.points[idx_11], poly.points[(idx_11 + 1) % (poly.points.size() - 1)]).distance_to(p1) < SCALED_EPSILON) { - idx_12 = (idx_11 + 1) % (poly.points.size() - 1); - } else if (Line(poly.points[(idx_11 > 0) ? (idx_11 - 1) : (poly.points.size() - 2)], poly.points[idx_11]).distance_to(p1) < SCALED_EPSILON) { - idx_11 = (idx_11 > 0) ? (idx_11 - 1) : (poly.points.size() - 2); - } else { - continue; - } - idx_21 = poly.closest_point_index(p2); - idx_22 = idx_21; - if (Line(poly.points[idx_21], poly.points[(idx_21 + 1) % (poly.points.size() - 1)]).distance_to(p2) < SCALED_EPSILON) { - idx_22 = (idx_21 + 1) % (poly.points.size() - 1); - } else if (Line(poly.points[(idx_21 > 0) ? (idx_21 - 1) : (poly.points.size() - 2)], poly.points[idx_21]).distance_to(p2) < SCALED_EPSILON) { - idx_21 = (idx_21 > 0) ? (idx_21 - 1) : (poly.points.size() - 2); - } else { - continue; - } - - - //edge case: on the same line - if (idx_11 == idx_21 && idx_12 == idx_22) { - if (collision(Points() = { p1, p2 }, polylines_blockers, width)) return Points(); - //break loop - poly.points.erase(poly.points.end() - 1); - cut_polygon(poly, idx_11, p1, p2); - return Points() = { Line(p1, p2).midpoint() }; - } - - //compute distance & array for the ++ path - Points ret_1_to_2; - double dist_1_to_2 = p1.distance_to(poly.points[idx_12]); - ret_1_to_2.push_back(poly.points[idx_12]); - size_t max = idx_12 <= idx_21 ? idx_21+1 : poly.points.size(); - for (size_t i = idx_12 + 1; i < max; i++) { - dist_1_to_2 += poly.points[i - 1].distance_to(poly.points[i]); - ret_1_to_2.push_back(poly.points[i]); - } - if (idx_12 > idx_21) { - dist_1_to_2 += poly.points.back().distance_to(poly.points.front()); - ret_1_to_2.push_back(poly.points[0]); - for (size_t i = 1; i <= idx_21; i++) { - dist_1_to_2 += poly.points[i - 1].distance_to(poly.points[i]); - ret_1_to_2.push_back(poly.points[i]); - } - } - dist_1_to_2 += p2.distance_to(poly.points[idx_21]); - - //compute distance & array for the -- path - Points ret_2_to_1; - double dist_2_to_1 = p1.distance_to(poly.points[idx_11]); - ret_2_to_1.push_back(poly.points[idx_11]); - size_t min = idx_22 <= idx_11 ? idx_22 : 0; - for (size_t i = idx_11; i > min; i--) { - dist_2_to_1 += poly.points[i - 1].distance_to(poly.points[i]); - ret_2_to_1.push_back(poly.points[i - 1]); - } - if (idx_22 > idx_11) { - dist_2_to_1 += poly.points.back().distance_to(poly.points.front()); - ret_2_to_1.push_back(poly.points[poly.points.size() - 1]); - for (size_t i = poly.points.size() - 1; i > idx_22; i--) { - dist_2_to_1 += poly.points[i - 1].distance_to(poly.points[i]); - ret_2_to_1.push_back(poly.points[i - 1]); - } - } - dist_2_to_1 += p2.distance_to(poly.points[idx_22]); - - if (max_size < dist_2_to_1 && max_size < dist_1_to_2) { - return Points(); - } - - //choose between the two direction (keep the short one) - if (dist_1_to_2 < dist_2_to_1) { - if (collision(ret_1_to_2, polylines_blockers, width)) return Points(); - //break loop - poly.points.erase(poly.points.end() - 1); - //remove points - if (idx_12 <= idx_21) { - poly.points.erase(poly.points.begin() + idx_12, poly.points.begin() + idx_21 + 1); - if (idx_12 != 0) { - cut_polygon(poly, idx_11, p1, p2); - } //else : already cut at the good place - } else { - poly.points.erase(poly.points.begin() + idx_12, poly.points.end()); - poly.points.erase(poly.points.begin(), poly.points.begin() + idx_21); - cut_polygon(poly, poly.points.size() - 1, p1, p2); - } - return ret_1_to_2; - } else { - if (collision(ret_2_to_1, polylines_blockers, width)) return Points(); - //break loop - poly.points.erase(poly.points.end() - 1); - //remove points - if (idx_22 <= idx_11) { - poly.points.erase(poly.points.begin() + idx_22, poly.points.begin() + idx_11 + 1); - if (idx_22 != 0) { - cut_polygon(poly, idx_21, p1, p2); - } //else : already cut at the good place - } else { - poly.points.erase(poly.points.begin() + idx_22, poly.points.end()); - poly.points.erase(poly.points.begin(), poly.points.begin() + idx_11); - cut_polygon(poly, poly.points.size() - 1, p1, p2); - } - return ret_2_to_1; - } - } else { - //polyline : try to find a line for p1 & p2. - size_t idx_1, idx_2; - idx_1 = poly.closest_point_index(p1); - if (idx_1 < poly.points.size() - 1 && Line(poly.points[idx_1], poly.points[idx_1 + 1]).distance_to(p1) < SCALED_EPSILON) { - } else if (idx_1 > 0 && Line(poly.points[idx_1 - 1], poly.points[idx_1]).distance_to(p1) < SCALED_EPSILON) { - idx_1 = idx_1 - 1; - } else { - continue; - } - idx_2 = poly.closest_point_index(p2); - if (idx_2 < poly.points.size() - 1 && Line(poly.points[idx_2], poly.points[idx_2 + 1]).distance_to(p2) < SCALED_EPSILON) { - } else if (idx_2 > 0 && Line(poly.points[idx_2 - 1], poly.points[idx_2]).distance_to(p2) < SCALED_EPSILON) { - idx_2 = idx_2 - 1; - } else { - continue; - } - - //edge case: on the same line - if (idx_1 == idx_2) { - if (collision(Points() = { p1, p2 }, polylines_blockers, width)) return Points(); - cut_polyline(poly, polylines, idx_1, p1, p2); - return Points() = { Line(p1, p2).midpoint() }; - } - - //create ret array - size_t first_idx = idx_1; - size_t last_idx = idx_2 + 1; - if (idx_1 > idx_2) { - first_idx = idx_2; - last_idx = idx_1 + 1; - } - Points p_ret; - p_ret.insert(p_ret.end(), poly.points.begin() + first_idx + 1, poly.points.begin() + last_idx); - - coordf_t length = 0; - for (size_t i = 1; i < p_ret.size(); i++) length += p_ret[i - 1].distance_to(p_ret[i]); - - if (max_size < length) { - return Points(); - } - - if (collision(p_ret, polylines_blockers, width)) return Points(); - //cut polyline - poly.points.erase(poly.points.begin() + first_idx + 1, poly.points.begin() + last_idx); - cut_polyline(poly, polylines, first_idx, p1, p2); - //order the returned array to be p1->p2 - if (idx_1 > idx_2) { - std::reverse(p_ret.begin(), p_ret.end()); - } - return p_ret; - } - - } - - return Points(); -} - -/// Connect the infill_ordered polylines, in this order, from the back point to the next front point. -/// It uses only the boundary polygons to do so, and can't pass two times at the same place. -/// It avoid passing over the infill_ordered's polylines (preventing local over-extrusion). -/// return the connected polylines in polylines_out. Can output polygons (stored as polylines with first_point = last_point). -/// complexity: worst: N(infill_ordered.points) x N(boundary.points) -/// typical: N(infill_ordered) x ( N(boundary.points) + N(infill_ordered.points) ) -void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, Polylines &polylines_out, const FillParams ¶ms) { - - //TODO: fallback to the quick & dirty old algorithm when n(points) is too high. - Polylines polylines_frontier = to_polylines(((Polygons)boundary)); - - Polylines polylines_blocker; - coord_t clip_size = scale_(this->spacing) * 2; - for (const Polyline &polyline : infill_ordered) { - if (polyline.length() > 2.01 * clip_size) { - polylines_blocker.push_back(polyline); - polylines_blocker.back().clip_end(clip_size); - polylines_blocker.back().clip_start(clip_size); - } - } - - //length between two lines - coordf_t ideal_length = (1 / params.density) * this->spacing; - - Polylines polylines_connected_first; - bool first = true; - for (const Polyline &polyline : infill_ordered) { - if (!first) { - // Try to connect the lines. - Points &pts_end = polylines_connected_first.back().points; - const Point &last_point = pts_end.back(); - const Point &first_point = polyline.points.front(); - if (last_point.distance_to(first_point) < scale_(this->spacing) * 10) { - Points pts_frontier = get_frontier(polylines_frontier, last_point, first_point, scale_(this->spacing), polylines_blocker, (coord_t)scale_(ideal_length) * 2); - if (!pts_frontier.empty()) { - // The lines can be connected. - pts_end.insert(pts_end.end(), pts_frontier.begin(), pts_frontier.end()); - pts_end.insert(pts_end.end(), polyline.points.begin(), polyline.points.end()); - continue; - } - } - } - // The lines cannot be connected. - polylines_connected_first.emplace_back(std::move(polyline)); - - first = false; - } - - Polylines polylines_connected; - first = true; - for (const Polyline &polyline : polylines_connected_first) { - if (!first) { - // Try to connect the lines. - Points &pts_end = polylines_connected.back().points; - const Point &last_point = pts_end.back(); - const Point &first_point = polyline.points.front(); - - Polylines before = polylines_frontier; - Points pts_frontier = get_frontier(polylines_frontier, last_point, first_point, scale_(this->spacing), polylines_blocker); - if (!pts_frontier.empty()) { - // The lines can be connected. - pts_end.insert(pts_end.end(), pts_frontier.begin(), pts_frontier.end()); - pts_end.insert(pts_end.end(), polyline.points.begin(), polyline.points.end()); - continue; - } - } - // The lines cannot be connected. - polylines_connected.emplace_back(std::move(polyline)); - - first = false; - } - - //try to link to nearest point if possible - for (size_t idx1 = 0; idx1 < polylines_connected.size(); idx1++) { - size_t min_idx = 0; - coordf_t min_length = 0; - bool switch_id1 = false; - bool switch_id2 = false; - for (size_t idx2 = idx1 + 1; idx2 < polylines_connected.size(); idx2++) { - double last_first = polylines_connected[idx1].last_point().distance_to_square(polylines_connected[idx2].first_point()); - double first_first = polylines_connected[idx1].first_point().distance_to_square(polylines_connected[idx2].first_point()); - double first_last = polylines_connected[idx1].first_point().distance_to_square(polylines_connected[idx2].last_point()); - double last_last = polylines_connected[idx1].last_point().distance_to_square(polylines_connected[idx2].last_point()); - double min = std::min(std::min(last_first, last_last), std::min(first_first, first_last)); - if (min < min_length || min_length == 0) { - min_idx = idx2; - switch_id1 = (std::min(last_first, last_last) > std::min(first_first, first_last)); - switch_id2 = (std::min(last_first, first_first) > std::min(last_last, first_last)); - min_length = min; - } - } - if (min_idx > idx1 && min_idx < polylines_connected.size()){ - Points pts_frontier = get_frontier(polylines_frontier, - switch_id1 ? polylines_connected[idx1].first_point() : polylines_connected[idx1].last_point(), - switch_id2 ? polylines_connected[min_idx].last_point() : polylines_connected[min_idx].first_point(), - scale_(this->spacing), polylines_blocker); - if (!pts_frontier.empty()) { - if (switch_id1) polylines_connected[idx1].reverse(); - if (switch_id2) polylines_connected[min_idx].reverse(); - Points &pts_end = polylines_connected[idx1].points; - pts_end.insert(pts_end.end(), pts_frontier.begin(), pts_frontier.end()); - pts_end.insert(pts_end.end(), polylines_connected[min_idx].points.begin(), polylines_connected[min_idx].points.end()); - polylines_connected.erase(polylines_connected.begin() + min_idx); - } - } - } - - //try to create some loops if possible - for (Polyline &polyline : polylines_connected) { - Points pts_frontier = get_frontier(polylines_frontier, polyline.last_point(), polyline.first_point(), scale_(this->spacing), polylines_blocker); - if (!pts_frontier.empty()) { - polyline.points.insert(polyline.points.end(), pts_frontier.begin(), pts_frontier.end()); - polyline.points.insert(polyline.points.begin(), polyline.points.back()); - } - polylines_out.emplace_back(polyline); - } -} - -#else - // A single T joint of an infill line to a closed contour or one of its holes. struct ContourIntersectionPoint { // Contour and point on a contour where an infill line is connected to. @@ -579,6 +208,8 @@ struct ContourIntersectionPoint { // Distance from param1 to param2 when going counter-clockwise. static inline float closed_contour_distance_ccw(float param1, float param2, float contour_length) { + assert(param1 >= 0.f && param1 <= contour_length); + assert(param2 >= 0.f && param2 <= contour_length); float d = param2 - param1; if (d < 0.f) d += contour_length; @@ -598,12 +229,7 @@ float path_length_along_contour_ccw(const ContourIntersectionPoint *cp1, const C assert(cp2 != nullptr); assert(cp1->contour_idx == cp2->contour_idx); assert(cp1 != cp2); - // Zero'th param is the length of the contour. - float param_lo = cp1->param; - float param_hi = cp2->param; - assert(param_lo >= 0.f && param_lo <= contour_length); - assert(param_hi >= 0.f && param_hi <= contour_length); - return cp1 < cp2 ? param_hi - param_lo : param_lo + contour_length - param_hi; + return closed_contour_distance_ccw(cp1->param, cp2->param, contour_length); } // Lengths along the contour from cp1 to cp2 going CCW and going CW. @@ -645,6 +271,7 @@ static inline float take_cw_limited(Polyline &pl, const Points &contour, const s // If appending to an infill line, then the start point of a perimeter line shall match the end point of an infill line. assert(pl.empty() || pl.points.back() == contour[idx_start]); assert(contour.size() + 1 == params.size()); + assert(length_to_take > SCALED_EPSILON); // Length of the contour. float length = params.back(); // Parameter (length from contour.front()) for the first point. @@ -700,6 +327,7 @@ static inline float take_ccw_limited(Polyline &pl, const Points &contour, const // If appending to an infill line, then the start point of a perimeter line shall match the end point of an infill line. assert(pl.empty() || pl.points.back() == contour[idx_start]); assert(contour.size() + 1 == params.size()); + assert(length_to_take > SCALED_EPSILON); // Length of the contour. float length = params.back(); // Parameter (length from contour.front()) for the first point. @@ -815,13 +443,15 @@ static void take_limited( // Length of the segment from cp to cp->prev_on_contour. float l = closed_contour_distance_cw(cp->param, cp->prev_on_contour->param, length); length_to_go = std::min(length_to_go, cp->contour_not_taken_length_prev); - if (cp->prev_on_contour->consumed) + //if (cp->prev_on_contour->consumed) // Don't overlap with an already extruded infill line. length_to_go = std::max(0.f, std::min(length_to_go, l - line_half_width)); cp->consume_prev(); if (l >= length_to_go) { - cp->prev_on_contour->trim_next(l - length_to_go); - take_cw_limited(pl1, contour, params, cp->point_idx, cp->prev_on_contour->point_idx, length_to_go); + if (length_to_go > SCALED_EPSILON) { + cp->prev_on_contour->trim_next(l - length_to_go); + take_cw_limited(pl1, contour, params, cp->point_idx, cp->prev_on_contour->point_idx, length_to_go); + } break; } else { cp->prev_on_contour->trim_next(0.f); @@ -833,13 +463,15 @@ static void take_limited( for (ContourIntersectionPoint *cp = cp_start; cp != cp_end; cp = cp->next_on_contour) { float l = closed_contour_distance_ccw(cp->param, cp->next_on_contour->param, length); length_to_go = std::min(length_to_go, cp->contour_not_taken_length_next); - if (cp->next_on_contour->consumed) + //if (cp->next_on_contour->consumed) // Don't overlap with an already extruded infill line. length_to_go = std::max(0.f, std::min(length_to_go, l - line_half_width)); cp->consume_next(); if (l >= length_to_go) { - cp->next_on_contour->trim_prev(l - length_to_go); - take_ccw_limited(pl1, contour, params, cp->point_idx, cp->next_on_contour->point_idx, length_to_go); + if (length_to_go > SCALED_EPSILON) { + cp->next_on_contour->trim_prev(l - length_to_go); + take_ccw_limited(pl1, contour, params, cp->point_idx, cp->next_on_contour->point_idx, length_to_go); + } break; } else { cp->next_on_contour->trim_prev(0.f); @@ -877,14 +509,14 @@ static inline SegmentPoint clip_start_segment_and_point(const Points &polyline, for (size_t i = 1; i < polyline.size(); ++ i) { Vec2d pt = polyline[i].cast<double>(); Vec2d v = pt - pt_prev; - double l2 = v.squaredNorm(); - if (l2 > distance * distance) { - out.idx_segment = i; - out.t = distance / sqrt(l2); + double l = v.norm(); + if (l > distance) { + out.idx_segment = i - 1; + out.t = distance / l; out.point = pt_prev + out.t * v; break; } - distance -= sqrt(l2); + distance -= l; pt_prev = pt; } } @@ -902,16 +534,16 @@ static inline SegmentPoint clip_end_segment_and_point(const Points &polyline, do for (int i = int(polyline.size()) - 2; i >= 0; -- i) { Vec2d pt = polyline[i].cast<double>(); Vec2d v = pt - pt_next; - double l2 = v.squaredNorm(); - if (l2 > distance * distance) { + double l = v.norm(); + if (l > distance) { out.idx_segment = i; - out.t = distance / sqrt(l2); + out.t = distance / l; out.point = pt_next + out.t * v; // Store the parameter referenced to the starting point of a segment. out.t = 1. - out.t; break; } - distance -= sqrt(l2); + distance -= l; pt_next = pt; } } @@ -937,13 +569,9 @@ static inline bool line_rounded_thick_segment_collision( { // Very short line vector. Just test whether the center point is inside the offset line. Vec2d lpt = 0.5 * (line_a + line_b); - if (segment_l > SCALED_EPSILON) { - intersects = (segment_a - lpt).squaredNorm() < offset2; - intersects |= (segment_b - lpt).squaredNorm() < offset2; - if (! intersects) { - - } + struct Linef { Vec2d a, b; }; + intersects = line_alg::distance_to_squared(Linef{ segment_a, segment_b }, lpt) < offset2; } else intersects = (0.5 * (segment_a + segment_b) - lpt).squaredNorm() < offset2; if (intersects) { @@ -986,9 +614,10 @@ static inline bool line_rounded_thick_segment_collision( // where the segment spans (0, 0) to (segment_l, 0). const Vec2d dir_x = segment_v / segment_l; const Vec2d dir_y(- dir_x.y(), dir_x.x()); + const Vec2d line_p0(line_a - segment_a); std::pair<double, double> interval; if (Geometry::liang_barsky_line_clipping_interval( - Vec2d(line_a - segment_a), + Vec2d(line_p0.dot(dir_x), line_p0.dot(dir_y)), Vec2d(line_v0.dot(dir_x), line_v0.dot(dir_y)), BoundingBoxf(Vec2d(0., - offset), Vec2d(segment_l, offset)), interval)) @@ -1004,6 +633,26 @@ static inline bool line_rounded_thick_segment_collision( } } +#if 0 + { + BoundingBox bbox; + bbox.merge(line_a.cast<coord_t>()); + bbox.merge(line_a.cast<coord_t>()); + bbox.merge(segment_a.cast<coord_t>()); + bbox.merge(segment_b.cast<coord_t>()); + static int iRun = 0; + ::Slic3r::SVG svg(debug_out_path("%s-%03d.svg", "line-thick-segment-intersect", iRun ++), bbox); + svg.draw(Line(line_a.cast<coord_t>(), line_b.cast<coord_t>()), "black"); + svg.draw(Line(segment_a.cast<coord_t>(), segment_b.cast<coord_t>()), "blue", offset * 2.); + svg.draw(segment_a.cast<coord_t>(), "blue", offset); + svg.draw(segment_b.cast<coord_t>(), "blue", offset); + svg.draw(Line(segment_a.cast<coord_t>(), segment_b.cast<coord_t>()), "black"); + if (intersects) + svg.draw(Line((line_a + (line_b - line_a).normalized() * out_interval.first).cast<coord_t>(), + (line_a + (line_b - line_a).normalized() * out_interval.second).cast<coord_t>()), "red"); + } +#endif + return intersects; } @@ -1032,6 +681,132 @@ static inline bool cyclic_interval_inside_interval(float outer_low, float outer_ return interval_inside_interval(outer_low, outer_high, inner_low, inner_high, float(SCALED_EPSILON)); } +// #define INFILL_DEBUG_OUTPUT + +#ifdef INFILL_DEBUG_OUTPUT +static void export_infill_to_svg( + // Boundary contour, along which the perimeter extrusions will be drawn. + const std::vector<Points> &boundary, + // Parametrization of boundary with Euclidian length. + const std::vector<std::vector<float>> &boundary_parameters, + // Intersections (T-joints) of the infill lines with the boundary. + std::vector<std::vector<ContourIntersectionPoint*>> &boundary_intersections, + // Infill lines, either completely inside the boundary, or touching the boundary. + const Polylines &infill, + const coord_t scaled_spacing, + const std::string &path, + const Polylines &overlap_lines = Polylines(), + const Polylines &polylines = Polylines(), + const Points &pts = Points()) +{ + Polygons polygons; + std::transform(boundary.begin(), boundary.end(), std::back_inserter(polygons), [](auto &pts) { return Polygon(pts); }); + ExPolygons expolygons = union_ex(polygons); + BoundingBox bbox = get_extents(polygons); + bbox.offset(scale_(3.)); + + ::Slic3r::SVG svg(path, bbox); + // Draw the filled infill polygons. + svg.draw(expolygons); + + // Draw the pieces of boundary allowed to be used as anchors of infill lines, not yet consumed. + const std::string color_boundary_trimmed = "blue"; + const std::string color_boundary_not_trimmed = "yellow"; + const coordf_t boundary_line_width = scaled_spacing; + svg.draw_outline(polygons, "red", boundary_line_width); + for (const std::vector<ContourIntersectionPoint*> &intersections : boundary_intersections) { + const size_t boundary_idx = &intersections - boundary_intersections.data(); + const Points &contour = boundary[boundary_idx]; + const std::vector<float> &contour_param = boundary_parameters[boundary_idx]; + for (const ContourIntersectionPoint *ip : intersections) { + assert(ip->next_trimmed == ip->next_on_contour->prev_trimmed); + assert(ip->prev_trimmed == ip->prev_on_contour->next_trimmed); + { + Polyline pl { contour[ip->point_idx] }; + if (ip->next_trimmed) { + if (ip->contour_not_taken_length_next > SCALED_EPSILON) { + take_ccw_limited(pl, contour, contour_param, ip->point_idx, ip->next_on_contour->point_idx, ip->contour_not_taken_length_next); + svg.draw(pl, color_boundary_trimmed, boundary_line_width); + } + } else { + take_ccw_full(pl, contour, ip->point_idx, ip->next_on_contour->point_idx); + svg.draw(pl, color_boundary_not_trimmed, boundary_line_width); + } + } + { + Polyline pl { contour[ip->point_idx] }; + if (ip->prev_trimmed) { + if (ip->contour_not_taken_length_prev > SCALED_EPSILON) { + take_cw_limited(pl, contour, contour_param, ip->point_idx, ip->prev_on_contour->point_idx, ip->contour_not_taken_length_prev); + svg.draw(pl, color_boundary_trimmed, boundary_line_width); + } + } else { + take_cw_full(pl, contour, ip->point_idx, ip->prev_on_contour->point_idx); + svg.draw(pl, color_boundary_not_trimmed, boundary_line_width); + } + } + } + } + + // Draw the full infill polygon boundary. + svg.draw_outline(polygons, "green"); + + // Draw the infill lines, first the full length with red color, then a slightly shortened length with black color. + svg.draw(infill, "brown"); + static constexpr double trim_length = scale_(0.15); + for (Polyline polyline : infill) + if (! polyline.empty()) { + Vec2d a = polyline.points.front().cast<double>(); + Vec2d d = polyline.points.back().cast<double>(); + if (polyline.size() == 2) { + Vec2d v = d - a; + double l = v.norm(); + if (l > 2. * trim_length) { + a += v * trim_length / l; + d -= v * trim_length / l; + polyline.points.front() = a.cast<coord_t>(); + polyline.points.back() = d.cast<coord_t>(); + } else + polyline.points.clear(); + } else if (polyline.size() > 2) { + Vec2d b = polyline.points[1].cast<double>(); + Vec2d c = polyline.points[polyline.points.size() - 2].cast<double>(); + Vec2d v = b - a; + double l = v.norm(); + if (l > trim_length) { + a += v * trim_length / l; + polyline.points.front() = a.cast<coord_t>(); + } else + polyline.points.erase(polyline.points.begin()); + v = d - c; + l = v.norm(); + if (l > trim_length) + polyline.points.back() = (d - v * trim_length / l).cast<coord_t>(); + else + polyline.points.pop_back(); + } + svg.draw(polyline, "black"); + } + + svg.draw(overlap_lines, "red", scale_(0.05)); + svg.draw(polylines, "magenta", scale_(0.05)); + svg.draw(pts, "magenta"); +} +#endif // INFILL_DEBUG_OUTPUT + +#ifndef NDEBUG +bool validate_boundary_intersections(const std::vector<std::vector<ContourIntersectionPoint*>> &boundary_intersections) +{ + for (const std::vector<ContourIntersectionPoint*>& contour : boundary_intersections) { + for (ContourIntersectionPoint* ip : contour) { + assert(ip->next_trimmed == ip->next_on_contour->prev_trimmed); + assert(ip->prev_trimmed == ip->prev_on_contour->next_trimmed); + } + } + return true; +} +#endif // NDEBUG + // Mark the segments of split boundary as consumed if they are very close to some of the infill line. void mark_boundary_segments_touching_infill( // Boundary contour, along which the perimeter extrusions will be drawn. @@ -1053,8 +828,17 @@ void mark_boundary_segments_touching_infill( #ifndef NDEBUG for (size_t i = 0; i < boundary.size(); ++ i) assert(boundary[i].size() + 1 == boundary_parameters[i].size()); + assert(validate_boundary_intersections(boundary_intersections)); #endif +#ifdef INFILL_DEBUG_OUTPUT + static int iRun = 0; + ++ iRun; + int iStep = 0; + export_infill_to_svg(boundary, boundary_parameters, boundary_intersections, infill, distance_colliding * 2, debug_out_path("%s-%03d.svg", "FillBase-mark_boundary_segments_touching_infill-start", iRun)); + Polylines perimeter_overlaps; +#endif // INFILL_DEBUG_OUTPUT + EdgeGrid::Grid grid; // Make sure that the the grid is big enough for queries against the thick segment. grid.set_bbox(boundary_bbox.inflated(distance_colliding + SCALED_EPSILON)); @@ -1066,13 +850,17 @@ void mark_boundary_segments_touching_infill( Visitor(const EdgeGrid::Grid &grid, const std::vector<Points> &boundary, const std::vector<std::vector<float>> &boundary_parameters, std::vector<std::vector<ContourIntersectionPoint*>> &boundary_intersections, const double radius) : - grid(grid), boundary(boundary), boundary_parameters(boundary_parameters), boundary_intersections(boundary_intersections), radius(radius) {} + grid(grid), boundary(boundary), boundary_parameters(boundary_parameters), boundary_intersections(boundary_intersections), radius(radius), trim_l_threshold(0.5 * radius) {} // Init with a segment of an infill line. void init(const Vec2d &infill_pt1, const Vec2d &infill_pt2) { this->infill_pt1 = &infill_pt1; this->infill_pt2 = &infill_pt2; - } + this->infill_bbox.reset(); + this->infill_bbox.merge(infill_pt1); + this->infill_bbox.merge(infill_pt2); + this->infill_bbox.offset(this->radius + SCALED_EPSILON); + } bool operator()(coord_t iy, coord_t ix) { // Called with a row and colum of the grid cell, which is intersected by a line. @@ -1083,13 +871,23 @@ void mark_boundary_segments_touching_infill( const Vec2d seg_pt1 = segment.first.cast<double>(); const Vec2d seg_pt2 = segment.second.cast<double>(); std::pair<double, double> interval; - if (line_rounded_thick_segment_collision(seg_pt1, seg_pt2, *this->infill_pt1, *this->infill_pt2, this->radius, interval)) { + BoundingBoxf bbox_seg; + bbox_seg.merge(seg_pt1); + bbox_seg.merge(seg_pt2); +#ifdef INFILL_DEBUG_OUTPUT + //if (this->infill_bbox.overlap(bbox_seg)) this->perimeter_overlaps.push_back({ segment.first, segment.second }); +#endif // INFILL_DEBUG_OUTPUT + if (this->infill_bbox.overlap(bbox_seg) && line_rounded_thick_segment_collision(seg_pt1, seg_pt2, *this->infill_pt1, *this->infill_pt2, this->radius, interval)) { // The boundary segment intersects with the infill segment thickened by radius. // Interval is specified in Euclidian length from seg_pt1 to seg_pt2. // 1) Find the Euclidian parameters of seg_pt1 and seg_pt2 on its boundary contour. const std::vector<float> &contour_parameters = boundary_parameters[it_contour_and_segment->first]; const float contour_length = contour_parameters.back(); const float param_seg_pt1 = contour_parameters[it_contour_and_segment->second]; +#ifdef INFILL_DEBUG_OUTPUT + this->perimeter_overlaps.push_back({ Point((seg_pt1 + (seg_pt2 - seg_pt1).normalized() * interval.first).cast<coord_t>()), + Point((seg_pt1 + (seg_pt2 - seg_pt1).normalized() * interval.second).cast<coord_t>()) }); +#endif // INFILL_DEBUG_OUTPUT const float param_overlap1 = param_seg_pt1 + interval.first; const float param_overlap2 = param_seg_pt1 + interval.second; // 2) Find the ContourIntersectionPoints before param_overlap1 and after param_overlap2. @@ -1107,29 +905,38 @@ void mark_boundary_segments_touching_infill( assert(ip_low != ip_high); // Verify that the interval (param_overlap1, param_overlap2) is inside the interval (ip_low->param, ip_high->param). assert(cyclic_interval_inside_interval(ip_low->param, ip_high->param, param_overlap1, param_overlap2, contour_length)); + assert(validate_boundary_intersections(boundary_intersections)); // Mark all ContourIntersectionPoints between ip_low and ip_high as consumed. if (ip_low->next_on_contour != ip_high) - for (ContourIntersectionPoint *ip = ip_low->next_on_contour; ip->next_on_contour != ip_high; ip = ip->next_on_contour) { + for (ContourIntersectionPoint *ip = ip_low->next_on_contour; ip != ip_high; ip = ip->next_on_contour) { ip->consume_prev(); ip->consume_next(); } // Subtract the interval from the first and last segments. - ip_low->trim_next(closed_contour_distance_ccw(ip_low->param, param_overlap1, contour_length)); - ip_high->trim_prev(closed_contour_distance_ccw(param_overlap2, ip_high->param, contour_length)); + float trim_l = closed_contour_distance_ccw(ip_low->param, param_overlap1, contour_length); + //if (trim_l > trim_l_threshold) + ip_low->trim_next(trim_l); + trim_l = closed_contour_distance_ccw(param_overlap2, ip_high->param, contour_length); + //if (trim_l > trim_l_threshold) + ip_high->trim_prev(trim_l); + assert(ip_low->next_trimmed == ip_high->prev_trimmed); + assert(validate_boundary_intersections(boundary_intersections)); //FIXME mark point as consumed? //FIXME verify the sequence between prev and next? -#if 0 +#ifdef INFILL_DEBUG_OUTPUT { - static size_t iRun = 0; +#if 0 + static size_t iRun = 0; ExPolygon expoly(Polygon(*grid.contours().front())); for (size_t i = 1; i < grid.contours().size(); ++i) expoly.holes.emplace_back(Polygon(*grid.contours()[i])); SVG svg(debug_out_path("%s-%d.svg", "FillBase-mark_boundary_segments_touching_infill", iRun ++).c_str(), get_extents(expoly)); svg.draw(expoly, "green"); svg.draw(Line(segment.first, segment.second), "red"); - svg.draw(Line(this->pt1->cast<coord_t>(), this->pt2->cast<coord_t>()), "magenta"); - } + svg.draw(Line(this->infill_pt1->cast<coord_t>(), this->infill_pt2->cast<coord_t>()), "magenta"); #endif + } +#endif // INFILL_DEBUG_OUTPUT } } // Continue traversing the grid along the edge. @@ -1142,21 +949,34 @@ void mark_boundary_segments_touching_infill( std::vector<std::vector<ContourIntersectionPoint*>> &boundary_intersections; // Maximum distance between the boundary and the infill line allowed to consider the boundary not touching the infill line. const double radius; + // Region around the contour / infill line intersection point, where the intersections are ignored. + const float trim_l_threshold; const Vec2d *infill_pt1; const Vec2d *infill_pt2; + BoundingBoxf infill_bbox; + +#ifdef INFILL_DEBUG_OUTPUT + Polylines perimeter_overlaps; +#endif // INFILL_DEBUG_OUTPUT } visitor(grid, boundary, boundary_parameters, boundary_intersections, distance_colliding); BoundingBoxf bboxf(boundary_bbox.min.cast<double>(), boundary_bbox.max.cast<double>()); bboxf.offset(- SCALED_EPSILON); for (const Polyline &polyline : infill) { +#ifdef INFILL_DEBUG_OUTPUT + ++ iStep; +#endif // INFILL_DEBUG_OUTPUT // Clip the infill polyline by the Eucledian distance along the polyline. SegmentPoint start_point = clip_start_segment_and_point(polyline.points, clip_distance); SegmentPoint end_point = clip_end_segment_and_point(polyline.points, clip_distance); if (start_point.valid() && end_point.valid() && (start_point.idx_segment < end_point.idx_segment || (start_point.idx_segment == end_point.idx_segment && start_point.t < end_point.t))) { // The clipped polyline is non-empty. +#ifdef INFILL_DEBUG_OUTPUT + visitor.perimeter_overlaps.clear(); +#endif // INFILL_DEBUG_OUTPUT for (size_t point_idx = start_point.idx_segment; point_idx <= end_point.idx_segment; ++ point_idx) { //FIXME extend the EdgeGrid to suport tracing a thick line. #if 0 @@ -1196,22 +1016,36 @@ void mark_boundary_segments_touching_infill( visitor.init(pt1, pt2); // Simulate tracing of a thick line. This only works reliably if distance_colliding <= grid cell size. Vec2d v = (pt2 - pt1).normalized() * distance_colliding; - Vec2d vperp(-v.y(), v.x()); + Vec2d vperp = perp(v); Vec2d a = pt1 - v - vperp; - Vec2d b = pt1 + v - vperp; + Vec2d b = pt2 + v - vperp; if (Geometry::liang_barsky_line_clipping(a, b, bboxf)) grid.visit_cells_intersecting_line(a.cast<coord_t>(), b.cast<coord_t>(), visitor); a = pt1 - v + vperp; - b = pt1 + v + vperp; + b = pt2 + v + vperp; if (Geometry::liang_barsky_line_clipping(a, b, bboxf)) grid.visit_cells_intersecting_line(a.cast<coord_t>(), b.cast<coord_t>(), visitor); #endif +#ifdef INFILL_DEBUG_OUTPUT +// export_infill_to_svg(boundary, boundary_parameters, boundary_intersections, infill, distance_colliding * 2, debug_out_path("%s-%03d-%03d-%03d.svg", "FillBase-mark_boundary_segments_touching_infill-step", iRun, iStep, int(point_idx)), { polyline }); +#endif // INFILL_DEBUG_OUTPUT } - } +#ifdef INFILL_DEBUG_OUTPUT + Polylines perimeter_overlaps; + export_infill_to_svg(boundary, boundary_parameters, boundary_intersections, infill, distance_colliding * 2, debug_out_path("%s-%03d-%03d.svg", "FillBase-mark_boundary_segments_touching_infill-step", iRun, iStep), visitor.perimeter_overlaps, { polyline }); + append(perimeter_overlaps, std::move(visitor.perimeter_overlaps)); + perimeter_overlaps.clear(); +#endif // INFILL_DEBUG_OUTPUT + } } + +#ifdef INFILL_DEBUG_OUTPUT + export_infill_to_svg(boundary, boundary_parameters, boundary_intersections, infill, distance_colliding * 2, debug_out_path("%s-%03d.svg", "FillBase-mark_boundary_segments_touching_infill-end", iRun), perimeter_overlaps); +#endif // INFILL_DEBUG_OUTPUT + assert(validate_boundary_intersections(boundary_intersections)); } -void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_src, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length) +void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_src, Polylines &polylines_out, const double spacing, const FillParams ¶ms) { assert(! boundary_src.contour.points.empty()); auto polygons_src = reserve_vector<const Polygon*>(boundary_src.holes.size() + 1); @@ -1219,21 +1053,22 @@ void Fill::connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary_ for (const Polygon &polygon : boundary_src.holes) polygons_src.emplace_back(&polygon); - connect_infill(std::move(infill_ordered), polygons_src, get_extents(boundary_src.contour), polylines_out, spacing, params, hook_length); + connect_infill(std::move(infill_ordered), polygons_src, get_extents(boundary_src.contour), polylines_out, spacing, params); } -void Fill::connect_infill(Polylines &&infill_ordered, const Polygons &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length) +void Fill::connect_infill(Polylines &&infill_ordered, const Polygons &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms) { auto polygons_src = reserve_vector<const Polygon*>(boundary_src.size()); for (const Polygon &polygon : boundary_src) polygons_src.emplace_back(&polygon); - connect_infill(std::move(infill_ordered), polygons_src, bbox, polylines_out, spacing, params, hook_length); + connect_infill(std::move(infill_ordered), polygons_src, bbox, polylines_out, spacing, params); } -void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Polygon*> &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length) +void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Polygon*> &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms) { assert(! infill_ordered.empty()); + const auto anchor_length = float(scale_(params.anchor_length)); #if 0 append(polylines_out, infill_ordered); @@ -1295,9 +1130,9 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po contour_dst.emplace_back(contour_src.points[idx_point]); for (; it != it_end && it->first.contour_idx == idx_contour && it->first.start_point_idx == idx_point; ++ it) { // Add these points to the destination contour. -#ifndef NDEBUG const Polyline &infill_line = infill_ordered[it->second / 2]; const Point &pt = (it->second & 1) ? infill_line.points.back() : infill_line.points.front(); +#ifndef NDEBUG { const Vec2d pt1 = contour_src[idx_point].cast<double>(); const Vec2d pt2 = (idx_point + 1 == contour_src.size() ? contour_src.points.front() : contour_src.points[idx_point + 1]).cast<double>(); @@ -1352,8 +1187,11 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po // Mark the points and segments of split boundary as consumed if they are very close to some of the infill line. { // @supermerill used 2. * scale_(spacing) - const double clip_distance = 3. * scale_(spacing); - const double distance_colliding = 1.1 * scale_(spacing); + const double clip_distance = 1.7 * scale_(spacing); + // Allow a bit of overlap. This value must be slightly higher than the overlap of FillAdaptive, otherwise + // the anchors of the adaptive infill will mask the other side of the perimeter line. + // (see connect_lines_using_hooks() in FillAdaptive.cpp) + const double distance_colliding = 0.8 * scale_(spacing); mark_boundary_segments_touching_infill(boundary, boundary_params, boundary_intersection_points, bbox, infill_ordered, clip_distance, distance_colliding); } } @@ -1402,8 +1240,10 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po return std::numeric_limits<size_t>::max(); }; - const float take_max_length = hook_length > 0.f ? hook_length : std::numeric_limits<float>::max(); + const float take_max_length = anchor_length > 0.f ? anchor_length : std::numeric_limits<float>::max(); const float line_half_width = 0.5f * scale_(spacing); + +#if 0 for (ConnectionCost &connection_cost : connections_sorted) { ContourIntersectionPoint *cp1 = &map_infill_end_point_to_boundary[connection_cost.idx_first * 2 + 1]; ContourIntersectionPoint *cp2 = &map_infill_end_point_to_boundary[(connection_cost.idx_first + 1) * 2]; @@ -1419,17 +1259,16 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po ContourIntersectionPoint *cp_high = connection_cost.reversed ? cp1 : cp2; assert(std::abs(length - closed_contour_distance_ccw(cp_low->param, cp_high->param, boundary_params[cp1->contour_idx].back())) < SCALED_EPSILON); could_connect = ! cp_low->next_trimmed && ! cp_high->prev_trimmed; - if (! could_connect && cp_low->next_on_contour != cp_high) { + if (could_connect && cp_low->next_on_contour != cp_high) { // Other end of cp1, may or may not be on the same contour as cp1. - const ContourIntersectionPoint* cp1prev = cp1 - 1; + const ContourIntersectionPoint *cp1prev = cp1 - 1; // Other end of cp2, may or may not be on the same contour as cp2. - const ContourIntersectionPoint* cp2next = cp2 + 1; - for (auto *cp = cp_low->next_on_contour; cp->next_on_contour != cp_high; cp = cp->next_on_contour) { + const ContourIntersectionPoint *cp2next = cp2 + 1; + for (auto *cp = cp_low->next_on_contour; cp != cp_high; cp = cp->next_on_contour) if (cp->consumed || cp == cp1prev || cp == cp2next || cp->prev_trimmed || cp->next_trimmed) { could_connect = false; break; } - } } } // Indices of the polylines to be connected by a perimeter segment. @@ -1438,7 +1277,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po idx_first = get_and_update_merged_with(idx_first); assert(idx_first < idx_second); assert(idx_second == merged_with[idx_second]); - if (could_connect && (hook_length == 0.f || length < hook_length * 2.5)) { + if (could_connect && (anchor_length == 0.f || length < anchor_length * 2.5)) { // Take the complete contour. // Connect the two polygons using the boundary contour. take(infill_ordered[idx_first], infill_ordered[idx_second], boundary[cp1->contour_idx], cp1, cp2, connection_cost.reversed); @@ -1451,6 +1290,56 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po take_limited(infill_ordered[idx_second], boundary[cp1->contour_idx], boundary_params[cp1->contour_idx], cp2, cp1, ! connection_cost.reversed, take_max_length, line_half_width); } } +#endif + + struct Arc { + ContourIntersectionPoint *intersection; + float arc_length; + }; + std::vector<Arc> arches; + arches.reserve(map_infill_end_point_to_boundary.size()); + for (ContourIntersectionPoint &cp : map_infill_end_point_to_boundary) + if (! cp.contour_idx != boundary_idx_unconnected && cp.next_on_contour != &cp && cp.could_connect_next()) + arches.push_back({ &cp, path_length_along_contour_ccw(&cp, cp.next_on_contour, boundary_params[cp.contour_idx].back()) }); + std::sort(arches.begin(), arches.end(), [](const auto &l, const auto &r) { return l.arc_length < r.arc_length; }); + + for (Arc &arc : arches) + if (! arc.intersection->consumed && ! arc.intersection->next_on_contour->consumed) { + // Indices of the polylines to be connected by a perimeter segment. + ContourIntersectionPoint *cp1 = arc.intersection; + ContourIntersectionPoint *cp2 = arc.intersection->next_on_contour; + size_t polyline_idx1 = get_and_update_merged_with(((cp1 - map_infill_end_point_to_boundary.data()) / 2)); + size_t polyline_idx2 = get_and_update_merged_with(((cp2 - map_infill_end_point_to_boundary.data()) / 2)); + const Points &contour = boundary[cp1->contour_idx]; + const std::vector<float> &contour_params = boundary_params[cp1->contour_idx]; + if (polyline_idx1 != polyline_idx2) { + Polyline &polyline1 = infill_ordered[polyline_idx1]; + Polyline &polyline2 = infill_ordered[polyline_idx2]; + if (anchor_length == 0.f || arc.arc_length < anchor_length * 2.5) { + // Not closing a loop, connecting the lines. + assert(contour[cp1->point_idx] == polyline1.points.front() || contour[cp1->point_idx] == polyline1.points.back()); + if (contour[cp1->point_idx] == polyline1.points.front()) + polyline1.reverse(); + assert(contour[cp2->point_idx] == polyline2.points.front() || contour[cp2->point_idx] == polyline2.points.back()); + if (contour[cp2->point_idx] == polyline2.points.back()) + polyline2.reverse(); + take(polyline1, polyline2, contour, cp1, cp2, false); + // Mark the second polygon as merged with the first one. + if (polyline_idx2 < polyline_idx1) { + polyline2 = std::move(polyline1); + polyline1.points.clear(); + merged_with[polyline_idx1] = merged_with[polyline_idx2]; + } else { + polyline2.points.clear(); + merged_with[polyline_idx2] = merged_with[polyline_idx1]; + } + } else { + // Move along the perimeter, but don't take the whole arc. + take_limited(polyline1, contour, contour_params, cp1, cp2, false, anchor_length, line_half_width); + take_limited(polyline2, contour, contour_params, cp2, cp1, true, anchor_length, line_half_width); + } + } + } // Connect the remaining open infill lines to the perimeter lines if possible. for (ContourIntersectionPoint &contour_point : map_infill_end_point_to_boundary) @@ -1471,7 +1360,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po assert(contour[contour_point.point_idx] == polyline.points.front() || contour[contour_point.point_idx] == polyline.points.back()); bool connected = false; for (float l : { std::min(lprev, lnext), std::max(lprev, lnext) }) { - if (l == std::numeric_limits<float>::max() || (hook_length > 0.f && l > hook_length * 2.5)) + if (l == std::numeric_limits<float>::max() || (anchor_length > 0.f && l > anchor_length * 2.5)) break; // Take the complete contour. bool reversed = l == lprev; @@ -1525,6 +1414,4 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po polylines_out.emplace_back(std::move(pl)); } -#endif - } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index 87885e655..2d225a73d 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -37,6 +37,9 @@ struct FillParams // Fill density, fraction in <0, 1> float density { 0.f }; + // Length of an infill anchor along the perimeter. + float anchor_length { std::numeric_limits<float>::max() }; + // Don't connect the fill lines around the inner perimeter. bool dont_connect { false }; @@ -124,9 +127,9 @@ protected: virtual std::pair<float, Point> _infill_direction(const Surface *surface) const; public: - static void connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length = 0); - static void connect_infill(Polylines &&infill_ordered, const Polygons &boundary, const BoundingBox& bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms, const int hook_length = 0); - static void connect_infill(Polylines &&infill_ordered, const std::vector<const Polygon*> &boundary, const BoundingBox &bbox, Polylines &polylines_out, double spacing, const FillParams ¶ms, const int hook_length = 0); + static void connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, Polylines &polylines_out, const double spacing, const FillParams ¶ms); + static void connect_infill(Polylines &&infill_ordered, const Polygons &boundary, const BoundingBox& bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms); + static void connect_infill(Polylines &&infill_ordered, const std::vector<const Polygon*> &boundary, const BoundingBox &bbox, Polylines &polylines_out, double spacing, const FillParams ¶ms); static coord_t _adjust_solid_spacing(const coord_t width, const coord_t distance); diff --git a/src/libslic3r/Fill/FillRectilinear2.cpp b/src/libslic3r/Fill/FillRectilinear2.cpp index a110dd144..0da865ba8 100644 --- a/src/libslic3r/Fill/FillRectilinear2.cpp +++ b/src/libslic3r/Fill/FillRectilinear2.cpp @@ -2778,6 +2778,7 @@ bool FillRectilinear2::fill_surface_by_multilines(const Surface *surface, FillPa return true; Polylines fill_lines; + coord_t line_width = coord_t(scale_(this->spacing)); coord_t line_spacing = coord_t(scale_(this->spacing) / params.density); std::pair<float, Point> rotate_vector = this->_infill_direction(surface); for (const SweepParams &sweep : sweep_params) { @@ -2787,6 +2788,9 @@ bool FillRectilinear2::fill_surface_by_multilines(const Surface *surface, FillPa double angle = rotate_vector.first + sweep.angle_base; ExPolygonWithOffset poly_with_offset(poly_with_offset_base, - angle); BoundingBox bounding_box = poly_with_offset.bounding_box_src(); + // Don't produce infill lines, which fully overlap with the infill perimeter. + coord_t x_min = bounding_box.min.x() + line_width + coord_t(SCALED_EPSILON); + coord_t x_max = bounding_box.max.x() - line_width - coord_t(SCALED_EPSILON); // extend bounding box so that our pattern will be aligned with other layers // Transform the reference point to the rotated coordinate system. Point refpt = rotate_vector.second.rotated(- angle); @@ -2800,20 +2804,23 @@ bool FillRectilinear2::fill_surface_by_multilines(const Surface *surface, FillPa const size_t n_vlines = (bounding_box.max.x() - bounding_box.min.x() + line_spacing - 1) / line_spacing; const double cos_a = cos(angle); const double sin_a = sin(angle); - for (const SegmentedIntersectionLine &vline : slice_region_by_vertical_lines(poly_with_offset, n_vlines, bounding_box.min.x(), line_spacing)) { - for (auto it = vline.intersections.begin(); it != vline.intersections.end();) { - auto it_low = it ++; - assert(it_low->type == SegmentIntersection::OUTER_LOW); - if (it_low->type != SegmentIntersection::OUTER_LOW) - continue; - auto it_high = it; - assert(it_high->type == SegmentIntersection::OUTER_HIGH); - if (it_high->type == SegmentIntersection::OUTER_HIGH) { - fill_lines.emplace_back(Point(vline.pos, it_low->pos()).rotated(cos_a, sin_a), Point(vline.pos, it_high->pos()).rotated(cos_a, sin_a)); - ++ it; + for (const SegmentedIntersectionLine &vline : slice_region_by_vertical_lines(poly_with_offset, n_vlines, bounding_box.min.x(), line_spacing)) + if (vline.pos > x_min) { + if (vline.pos >= x_max) + break; + for (auto it = vline.intersections.begin(); it != vline.intersections.end();) { + auto it_low = it ++; + assert(it_low->type == SegmentIntersection::OUTER_LOW); + if (it_low->type != SegmentIntersection::OUTER_LOW) + continue; + auto it_high = it; + assert(it_high->type == SegmentIntersection::OUTER_HIGH); + if (it_high->type == SegmentIntersection::OUTER_HIGH) { + fill_lines.emplace_back(Point(vline.pos, it_low->pos()).rotated(cos_a, sin_a), Point(vline.pos, it_high->pos()).rotated(cos_a, sin_a)); + ++ it; + } } } - } } if (fill_lines.size() > 1) @@ -2821,11 +2828,8 @@ bool FillRectilinear2::fill_surface_by_multilines(const Surface *surface, FillPa if (params.dont_connect || fill_lines.size() <= 1) append(polylines_out, std::move(fill_lines)); - else { -// coord_t hook_length = 0; - coord_t hook_length = coord_t(scale_(this->spacing)) * 5; - connect_infill(std::move(fill_lines), poly_with_offset_base.polygons_outer, get_extents(surface->expolygon.contour), polylines_out, this->spacing, params, hook_length); - } + else + connect_infill(std::move(fill_lines), poly_with_offset_base.polygons_outer, get_extents(surface->expolygon.contour), polylines_out, this->spacing, params); return true; } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 1982a91fb..a245adb89 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -427,7 +427,7 @@ const std::vector<std::string>& Preset::print_options() "infill_extruder", "solid_infill_extruder", "support_material_extruder", "support_material_interface_extruder", "ooze_prevention", "standby_temperature_delta", "interface_shells", "extrusion_width", "first_layer_extrusion_width", "perimeter_extrusion_width", "external_perimeter_extrusion_width", "infill_extrusion_width", "solid_infill_extrusion_width", - "top_infill_extrusion_width", "support_material_extrusion_width", "infill_overlap", "bridge_flow_ratio", "clip_multipart_objects", + "top_infill_extrusion_width", "support_material_extrusion_width", "infill_overlap", "infill_anchor", "bridge_flow_ratio", "clip_multipart_objects", "elefant_foot_compensation", "xy_size_compensation", "threads", "resolution", "wipe_tower", "wipe_tower_x", "wipe_tower_y", "wipe_tower_width", "wipe_tower_rotation_angle", "wipe_tower_bridging", "single_extruder_multi_material_priming", "wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index ee4a0945e..c6b1fc309 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1050,6 +1050,16 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionInt(1)); + def = this->add("infill_anchor", coFloatOrPercent); + def->label = L("Length of the infill anchor"); + def->category = L("Advanced"); + def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " + "If expressed as percentage (example: 15%) it is calculated over infill extrusion width."); + def->sidetext = L("mm or %"); + def->ratio_over = "infill_extrusion_width"; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloatOrPercent(300, true)); + def = this->add("infill_extruder", coInt); def->label = L("Infill extruder"); def->category = L("Extruders"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 89c9c7a97..790e15af6 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -530,6 +530,7 @@ public: ConfigOptionPercent fill_density; ConfigOptionEnum<InfillPattern> fill_pattern; ConfigOptionFloat gap_fill_speed; + ConfigOptionFloatOrPercent infill_anchor; ConfigOptionInt infill_extruder; ConfigOptionFloatOrPercent infill_extrusion_width; ConfigOptionInt infill_every_layers; @@ -581,6 +582,7 @@ protected: OPT_PTR(fill_density); OPT_PTR(fill_pattern); OPT_PTR(gap_fill_speed); + OPT_PTR(infill_anchor); OPT_PTR(infill_extruder); OPT_PTR(infill_extrusion_width); OPT_PTR(infill_every_layers); diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index db654bb34..3937f4fed 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -590,7 +590,7 @@ bool PrintObject::invalidate_state_by_config_options(const std::vector<t_config_ || opt_key == "external_fill_link_max_length" || opt_key == "fill_angle" || opt_key == "fill_pattern" - || opt_key == "fill_link_max_length" + || opt_key == "infill_anchor" || opt_key == "top_infill_extrusion_width" || opt_key == "first_layer_extrusion_width") { steps.emplace_back(posInfill); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index f4bd92728..2aae37ab6 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1424,6 +1424,7 @@ void TabPrint::build() optgroup->append_single_option_line("fill_pattern", category_path + "fill-pattern"); optgroup->append_single_option_line("top_fill_pattern", category_path + "top-fill-pattern"); optgroup->append_single_option_line("bottom_fill_pattern", category_path + "bottom-fill-pattern"); + optgroup->append_single_option_line("infill_anchor", category_path + "fill-pattern"); optgroup = page->new_optgroup(L("Ironing")); optgroup->append_single_option_line("ironing"); diff --git a/xs/lib/Slic3r/XS.pm b/xs/lib/Slic3r/XS.pm index 3073d068e..fa4dde43a 100644 --- a/xs/lib/Slic3r/XS.pm +++ b/xs/lib/Slic3r/XS.pm @@ -145,7 +145,6 @@ package Slic3r::Filler; sub fill_surface { my ($self, $surface, %args) = @_; $self->set_density($args{density}) if defined($args{density}); - $self->set_dont_connect($args{dont_connect}) if defined($args{dont_connect}); $self->set_dont_adjust($args{dont_adjust}) if defined($args{dont_adjust}); $self->set_complete($args{complete}) if defined($args{complete}); return $self->_fill_surface($surface); diff --git a/xs/xsp/Filler.xsp b/xs/xsp/Filler.xsp index 647d851eb..caeb2af9a 100644 --- a/xs/xsp/Filler.xsp +++ b/xs/xsp/Filler.xsp @@ -34,8 +34,6 @@ void set_density(float density) %code{% THIS->params.density = density; %}; - void set_dont_connect(bool dont_connect) - %code{% THIS->params.dont_connect = dont_connect; %}; void set_dont_adjust(bool dont_adjust) %code{% THIS->params.dont_adjust = dont_adjust; %}; void set_complete(bool complete) From e9fa36ea7d94ae38eb150194f1d3d96f34e99b71 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Mon, 16 Nov 2020 11:16:44 +0100 Subject: [PATCH 027/138] Fillers: Removal of old FillRectilinear, using of "override" instead of "virtual" where applicable. --- src/libslic3r/Fill/Fill.hpp | 4 +-- src/libslic3r/Fill/Fill3DHoneycomb.hpp | 10 +++--- src/libslic3r/Fill/FillAdaptive.hpp | 10 +++--- src/libslic3r/Fill/FillBase.cpp | 1 - src/libslic3r/Fill/FillBase.hpp | 1 + src/libslic3r/Fill/FillConcentric.hpp | 10 +++--- src/libslic3r/Fill/FillGyroid.hpp | 8 ++--- src/libslic3r/Fill/FillHoneycomb.hpp | 10 +++--- src/libslic3r/Fill/FillPlanePath.hpp | 32 ++++++++--------- src/libslic3r/Fill/FillRectilinear.cpp | 7 +--- src/libslic3r/Fill/FillRectilinear.hpp | 44 ++++------------------- src/libslic3r/Fill/FillRectilinear2.cpp | 26 +++----------- src/libslic3r/Fill/FillRectilinear2.hpp | 46 ++++++++++++------------- 13 files changed, 78 insertions(+), 131 deletions(-) diff --git a/src/libslic3r/Fill/Fill.hpp b/src/libslic3r/Fill/Fill.hpp index 64963495a..e92ab2dee 100644 --- a/src/libslic3r/Fill/Fill.hpp +++ b/src/libslic3r/Fill/Fill.hpp @@ -19,10 +19,10 @@ class LayerRegion; class Filler { public: - Filler() : fill(NULL) {} + Filler() : fill(nullptr) {} ~Filler() { delete fill; - fill = NULL; + fill = nullptr; } Fill *fill; FillParams params; diff --git a/src/libslic3r/Fill/Fill3DHoneycomb.hpp b/src/libslic3r/Fill/Fill3DHoneycomb.hpp index 52b792251..92c459a8d 100644 --- a/src/libslic3r/Fill/Fill3DHoneycomb.hpp +++ b/src/libslic3r/Fill/Fill3DHoneycomb.hpp @@ -12,19 +12,19 @@ namespace Slic3r { class Fill3DHoneycomb : public Fill { public: - virtual Fill* clone() const { return new Fill3DHoneycomb(*this); }; - virtual ~Fill3DHoneycomb() {} + Fill* clone() const override { return new Fill3DHoneycomb(*this); }; + ~Fill3DHoneycomb() override {} // require bridge flow since most of this pattern hangs in air - virtual bool use_bridge_flow() const { return true; } + bool use_bridge_flow() const override { return true; } protected: - virtual void _fill_surface_single( + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, ExPolygon &expolygon, - Polylines &polylines_out); + Polylines &polylines_out) override; }; } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillAdaptive.hpp b/src/libslic3r/Fill/FillAdaptive.hpp index f10c40b99..01d9efb10 100644 --- a/src/libslic3r/Fill/FillAdaptive.hpp +++ b/src/libslic3r/Fill/FillAdaptive.hpp @@ -56,17 +56,17 @@ FillAdaptive::OctreePtr build_octree( class Filler : public Slic3r::Fill { public: - virtual ~Filler() {} + ~Filler() override {} protected: - virtual Fill* clone() const { return new Filler(*this); }; - virtual void _fill_surface_single( + Fill* clone() const override { return new Filler(*this); }; + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, ExPolygon &expolygon, - Polylines &polylines_out); - virtual bool no_sort() const { return true; } + Polylines &polylines_out) override; + bool no_sort() const override { return true; } }; }; // namespace FillAdaptive diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index 782545114..87a4c23b6 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -34,7 +34,6 @@ Fill* Fill::new_from_type(const InfillPattern type) case ipTriangles: return new FillTriangles(); case ipStars: return new FillStars(); case ipCubic: return new FillCubic(); -// case ipGrid: return new FillGrid(); case ipArchimedeanChords: return new FillArchimedeanChords(); case ipHilbertCurve: return new FillHilbertCurve(); case ipOctagramSpiral: return new FillOctagramSpiral(); diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index 2d225a73d..f73e6f528 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -83,6 +83,7 @@ public: public: virtual ~Fill() {} + virtual Fill* clone() const = 0; static Fill* new_from_type(const InfillPattern type); static Fill* new_from_type(const std::string &type); diff --git a/src/libslic3r/Fill/FillConcentric.hpp b/src/libslic3r/Fill/FillConcentric.hpp index 1286858ea..72adad3a4 100644 --- a/src/libslic3r/Fill/FillConcentric.hpp +++ b/src/libslic3r/Fill/FillConcentric.hpp @@ -8,18 +8,18 @@ namespace Slic3r { class FillConcentric : public Fill { public: - virtual ~FillConcentric() {} + ~FillConcentric() override {} protected: - virtual Fill* clone() const { return new FillConcentric(*this); }; - virtual void _fill_surface_single( + Fill* clone() const override { return new FillConcentric(*this); }; + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, ExPolygon &expolygon, - Polylines &polylines_out); + Polylines &polylines_out) override; - virtual bool no_sort() const { return true; } + bool no_sort() const override { return true; } }; } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillGyroid.hpp b/src/libslic3r/Fill/FillGyroid.hpp index 37babb25e..4d45c47b0 100644 --- a/src/libslic3r/Fill/FillGyroid.hpp +++ b/src/libslic3r/Fill/FillGyroid.hpp @@ -11,10 +11,10 @@ class FillGyroid : public Fill { public: FillGyroid() {} - virtual Fill* clone() const { return new FillGyroid(*this); } + Fill* clone() const override { return new FillGyroid(*this); } // require bridge flow since most of this pattern hangs in air - virtual bool use_bridge_flow() const { return false; } + bool use_bridge_flow() const override { return false; } // Correction applied to regular infill angle to maximize printing // speed in default configuration (degrees) @@ -28,12 +28,12 @@ public: protected: - virtual void _fill_surface_single( + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, ExPolygon &expolygon, - Polylines &polylines_out); + Polylines &polylines_out) override; }; } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillHoneycomb.hpp b/src/libslic3r/Fill/FillHoneycomb.hpp index 4717602d4..98a5f7a59 100644 --- a/src/libslic3r/Fill/FillHoneycomb.hpp +++ b/src/libslic3r/Fill/FillHoneycomb.hpp @@ -12,16 +12,16 @@ namespace Slic3r { class FillHoneycomb : public Fill { public: - virtual ~FillHoneycomb() {} + ~FillHoneycomb() override {} protected: - virtual Fill* clone() const { return new FillHoneycomb(*this); }; - virtual void _fill_surface_single( + Fill* clone() const override { return new FillHoneycomb(*this); }; + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, ExPolygon &expolygon, - Polylines &polylines_out); + Polylines &polylines_out) override; // Caching the struct CacheID @@ -49,7 +49,7 @@ protected: typedef std::map<CacheID, CacheData> Cache; Cache cache; - virtual float _layer_angle(size_t idx) const { return float(M_PI/3.) * (idx % 3); } + float _layer_angle(size_t idx) const override { return float(M_PI/3.) * (idx % 3); } }; } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillPlanePath.hpp b/src/libslic3r/Fill/FillPlanePath.hpp index 49fb2b387..fe6b94162 100644 --- a/src/libslic3r/Fill/FillPlanePath.hpp +++ b/src/libslic3r/Fill/FillPlanePath.hpp @@ -16,17 +16,17 @@ namespace Slic3r { class FillPlanePath : public Fill { public: - virtual ~FillPlanePath() {} + ~FillPlanePath() override = default; protected: - virtual void _fill_surface_single( + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, ExPolygon &expolygon, - Polylines &polylines_out); + Polylines &polylines_out) override; - virtual float _layer_angle(size_t idx) const { return 0.f; } + float _layer_angle(size_t idx) const override { return 0.f; } virtual bool _centered() const = 0; virtual Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y) = 0; }; @@ -34,34 +34,34 @@ protected: class FillArchimedeanChords : public FillPlanePath { public: - virtual Fill* clone() const { return new FillArchimedeanChords(*this); }; - virtual ~FillArchimedeanChords() {} + Fill* clone() const override { return new FillArchimedeanChords(*this); }; + ~FillArchimedeanChords() override = default; protected: - virtual bool _centered() const { return true; } - virtual Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y); + bool _centered() const override { return true; } + Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y) override; }; class FillHilbertCurve : public FillPlanePath { public: - virtual Fill* clone() const { return new FillHilbertCurve(*this); }; - virtual ~FillHilbertCurve() {} + Fill* clone() const override { return new FillHilbertCurve(*this); }; + ~FillHilbertCurve() override = default; protected: - virtual bool _centered() const { return false; } - virtual Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y); + bool _centered() const override { return false; } + Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y) override; }; class FillOctagramSpiral : public FillPlanePath { public: - virtual Fill* clone() const { return new FillOctagramSpiral(*this); }; - virtual ~FillOctagramSpiral() {} + Fill* clone() const override { return new FillOctagramSpiral(*this); }; + ~FillOctagramSpiral() override = default; protected: - virtual bool _centered() const { return true; } - virtual Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y); + bool _centered() const override { return true; } + Pointfs _generate(coord_t min_x, coord_t min_y, coord_t max_x, coord_t max_y) override; }; } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillRectilinear.cpp b/src/libslic3r/Fill/FillRectilinear.cpp index 629e5b6f4..c8c75f302 100644 --- a/src/libslic3r/Fill/FillRectilinear.cpp +++ b/src/libslic3r/Fill/FillRectilinear.cpp @@ -7,7 +7,7 @@ namespace Slic3r { -void FillRectilinear::_fill_surface_single( +void FillLine::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, @@ -42,11 +42,6 @@ void FillRectilinear::_fill_surface_single( Lines lines; for (coord_t x = bounding_box.min(0); x <= x_max; x += this->_line_spacing) lines.push_back(this->_line(lines.size(), x, bounding_box.min(1), bounding_box.max(1))); - if (this->_horizontal_lines()) { - coord_t y_max = bounding_box.max(1) + SCALED_EPSILON; - for (coord_t y = bounding_box.min(1); y <= y_max; y += this->_line_spacing) - lines.push_back(Line(Point(bounding_box.min(0), y), Point(bounding_box.max(0), y))); - } // clip paths against a slightly larger expolygon, so that the first and last paths // are kept even if the expolygon has vertical sides diff --git a/src/libslic3r/Fill/FillRectilinear.hpp b/src/libslic3r/Fill/FillRectilinear.hpp index 1be85f755..b7d27de22 100644 --- a/src/libslic3r/Fill/FillRectilinear.hpp +++ b/src/libslic3r/Fill/FillRectilinear.hpp @@ -9,19 +9,19 @@ namespace Slic3r { class Surface; -class FillRectilinear : public Fill +class FillLine : public Fill { public: - virtual Fill* clone() const { return new FillRectilinear(*this); }; - virtual ~FillRectilinear() {} + Fill* clone() const override { return new FillLine(*this); }; + ~FillLine() override = default; protected: - virtual void _fill_surface_single( + void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, ExPolygon &expolygon, - Polylines &polylines_out); + Polylines &polylines_out) override; coord_t _min_spacing; coord_t _line_spacing; @@ -30,30 +30,12 @@ protected: // only for line infill coord_t _line_oscillation; - // Enabled for the grid infill, disabled for the rectilinear and line infill. - virtual bool _horizontal_lines() const { return false; } - - virtual Line _line(int i, coord_t x, coord_t y_min, coord_t y_max) const - { return Line(Point(x, y_min), Point(x, y_max)); } - - virtual bool _can_connect(coord_t dist_X, coord_t dist_Y) { - return dist_X <= this->_diagonal_distance - && dist_Y <= this->_diagonal_distance; - } -}; - -class FillLine : public FillRectilinear -{ -public: - virtual ~FillLine() {} - -protected: - virtual Line _line(int i, coord_t x, coord_t y_min, coord_t y_max) const { + Line _line(int i, coord_t x, coord_t y_min, coord_t y_max) const { coord_t osc = (i & 1) ? this->_line_oscillation : 0; return Line(Point(x - osc, y_min), Point(x + osc, y_max)); } - virtual bool _can_connect(coord_t dist_X, coord_t dist_Y) + bool _can_connect(coord_t dist_X, coord_t dist_Y) { coord_t TOLERANCE = 10 * SCALED_EPSILON; return (dist_X >= (this->_line_spacing - this->_line_oscillation) - TOLERANCE) @@ -62,18 +44,6 @@ protected: } }; -class FillGrid : public FillRectilinear -{ -public: - virtual ~FillGrid() {} - -protected: - // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t idx) const { return 0.f; } - // Flag for Slic3r::Fill::Rectilinear to fill both directions. - virtual bool _horizontal_lines() const { return true; } -}; - }; // namespace Slic3r #endif // slic3r_FillRectilinear_hpp_ diff --git a/src/libslic3r/Fill/FillRectilinear2.cpp b/src/libslic3r/Fill/FillRectilinear2.cpp index 0da865ba8..d8e0e746a 100644 --- a/src/libslic3r/Fill/FillRectilinear2.cpp +++ b/src/libslic3r/Fill/FillRectilinear2.cpp @@ -2762,9 +2762,6 @@ bool FillRectilinear2::fill_surface_by_lines(const Surface *surface, const FillP return true; } -#define FILL_MULTIPLE_SWEEPS_NEW - -#ifdef FILL_MULTIPLE_SWEEPS_NEW bool FillRectilinear2::fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out) { assert(sweep_params.size() > 1); @@ -2823,30 +2820,15 @@ bool FillRectilinear2::fill_surface_by_multilines(const Surface *surface, FillPa } } - if (fill_lines.size() > 1) - fill_lines = chain_polylines(std::move(fill_lines)); - - if (params.dont_connect || fill_lines.size() <= 1) + if (params.dont_connect || fill_lines.size() <= 1) { + if (fill_lines.size() > 1) + fill_lines = chain_polylines(std::move(fill_lines)); append(polylines_out, std::move(fill_lines)); - else + } else connect_infill(std::move(fill_lines), poly_with_offset_base.polygons_outer, get_extents(surface->expolygon.contour), polylines_out, this->spacing, params); return true; } -#else -bool FillRectilinear2::fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out) -{ - params.density /= double(sweep_params.size()); - bool success = true; - int idx = 0; - for (const SweepParams &sweep_param : sweep_params) { - if (++ idx == 3) - params.dont_connect = true; - success &= this->fill_surface_by_lines(surface, params, sweep_param.angle_base, sweep_param.pattern_shift, polylines_out); - } - return success; -} -#endif Polylines FillRectilinear2::fill_surface(const Surface *surface, const FillParams ¶ms) { diff --git a/src/libslic3r/Fill/FillRectilinear2.hpp b/src/libslic3r/Fill/FillRectilinear2.hpp index 1d8c61a94..4ceb0d2b6 100644 --- a/src/libslic3r/Fill/FillRectilinear2.hpp +++ b/src/libslic3r/Fill/FillRectilinear2.hpp @@ -12,9 +12,9 @@ class Surface; class FillRectilinear2 : public Fill { public: - virtual Fill* clone() const { return new FillRectilinear2(*this); }; - virtual ~FillRectilinear2() = default; - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); + Fill* clone() const override { return new FillRectilinear2(*this); }; + ~FillRectilinear2() override = default; + Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; protected: // Fill by single directional lines, interconnect the lines along perimeters. @@ -32,58 +32,58 @@ protected: class FillMonotonic : public FillRectilinear2 { public: - virtual Fill* clone() const { return new FillMonotonic(*this); }; - virtual ~FillMonotonic() = default; - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); - virtual bool no_sort() const { return true; } + Fill* clone() const override { return new FillMonotonic(*this); }; + ~FillMonotonic() override = default; + Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; + bool no_sort() const override { return true; } }; class FillGrid2 : public FillRectilinear2 { public: - virtual Fill* clone() const { return new FillGrid2(*this); }; - virtual ~FillGrid2() = default; - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); + Fill* clone() const override { return new FillGrid2(*this); }; + ~FillGrid2() override = default; + Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; protected: // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t idx) const { return 0.f; } + float _layer_angle(size_t idx) const override { return 0.f; } }; class FillTriangles : public FillRectilinear2 { public: - virtual Fill* clone() const { return new FillTriangles(*this); }; - virtual ~FillTriangles() = default; - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); + Fill* clone() const override { return new FillTriangles(*this); }; + ~FillTriangles() override = default; + Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; protected: // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t idx) const { return 0.f; } + float _layer_angle(size_t idx) const override { return 0.f; } }; class FillStars : public FillRectilinear2 { public: - virtual Fill* clone() const { return new FillStars(*this); }; - virtual ~FillStars() = default; - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); + Fill* clone() const override { return new FillStars(*this); }; + ~FillStars() override = default; + Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; protected: // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t idx) const { return 0.f; } + float _layer_angle(size_t idx) const override { return 0.f; } }; class FillCubic : public FillRectilinear2 { public: - virtual Fill* clone() const { return new FillCubic(*this); }; - virtual ~FillCubic() = default; - virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); + Fill* clone() const override { return new FillCubic(*this); }; + ~FillCubic() override = default; + Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; protected: // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. - virtual float _layer_angle(size_t idx) const { return 0.f; } + float _layer_angle(size_t idx) const override { return 0.f; } }; From 812cbade4d6cd8f157f39d78daafbaa13e030540 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Mon, 16 Nov 2020 12:51:51 +0100 Subject: [PATCH 028/138] Fills: 1) New algorithm for connecting along the perimeters is now applied to Honeycomb, Hilbert and similar planar filling curves. 2) The old expensive path chaining is not applied if the new algorithm to connect along the perimeter lines is called afterwards. --- src/libslic3r/Fill/Fill3DHoneycomb.cpp | 12 ++- src/libslic3r/Fill/FillAdaptive.cpp | 4 +- src/libslic3r/Fill/FillGyroid.cpp | 3 +- src/libslic3r/Fill/FillHoneycomb.cpp | 78 +++++-------------- src/libslic3r/Fill/FillPlanePath.cpp | 101 ++++++++++--------------- src/libslic3r/SupportMaterial.cpp | 2 - xs/xsp/Filler.xsp | 2 - 7 files changed, 69 insertions(+), 133 deletions(-) diff --git a/src/libslic3r/Fill/Fill3DHoneycomb.cpp b/src/libslic3r/Fill/Fill3DHoneycomb.cpp index 8aac6e49c..144a27505 100644 --- a/src/libslic3r/Fill/Fill3DHoneycomb.cpp +++ b/src/libslic3r/Fill/Fill3DHoneycomb.cpp @@ -162,15 +162,13 @@ void Fill3DHoneycomb::_fill_surface_single( pl.translate(bb.min); // clip pattern to boundaries, chain the clipped polylines - Polylines polylines_chained = chain_polylines(intersection_pl(polylines, to_polygons(expolygon))); + polylines = intersection_pl(polylines, to_polygons(expolygon)); // connect lines if needed - if (! polylines_chained.empty()) { - if (params.dont_connect) - append(polylines_out, std::move(polylines_chained)); - else - this->connect_infill(std::move(polylines_chained), expolygon, polylines_out, this->spacing, params); - } + if (params.dont_connect || polylines.size() <= 1) + append(polylines_out, chain_polylines(std::move(polylines))); + else + this->connect_infill(std::move(polylines), expolygon, polylines_out, this->spacing, params); } } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 188deca7c..a1d592bc3 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -1333,9 +1333,9 @@ void Filler::_fill_surface_single( #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ if (params.dont_connect || all_polylines_with_hooks.size() <= 1) - append(polylines_out, std::move(all_polylines_with_hooks)); + append(polylines_out, chain_polylines(std::move(all_polylines_with_hooks))); else - connect_infill(chain_polylines(std::move(all_polylines_with_hooks)), expolygon, polylines_out, this->spacing, params); + connect_infill(std::move(all_polylines_with_hooks), expolygon, polylines_out, this->spacing, params); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { diff --git a/src/libslic3r/Fill/FillGyroid.cpp b/src/libslic3r/Fill/FillGyroid.cpp index 964b87cef..b0cd507bc 100644 --- a/src/libslic3r/Fill/FillGyroid.cpp +++ b/src/libslic3r/Fill/FillGyroid.cpp @@ -190,11 +190,10 @@ void FillGyroid::_fill_surface_single( polylines.end()); if (! polylines.empty()) { - polylines = chain_polylines(polylines); // connect lines size_t polylines_out_first_idx = polylines_out.size(); if (params.dont_connect) - append(polylines_out, std::move(polylines)); + append(polylines_out, chain_polylines(polylines)); else this->connect_infill(std::move(polylines), expolygon, polylines_out, this->spacing, params); diff --git a/src/libslic3r/Fill/FillHoneycomb.cpp b/src/libslic3r/Fill/FillHoneycomb.cpp index 948af182b..aa0157fb9 100644 --- a/src/libslic3r/Fill/FillHoneycomb.cpp +++ b/src/libslic3r/Fill/FillHoneycomb.cpp @@ -18,21 +18,21 @@ void FillHoneycomb::_fill_surface_single( Cache::iterator it_m = this->cache.find(cache_id); if (it_m == this->cache.end()) { it_m = this->cache.insert(it_m, std::pair<CacheID, CacheData>(cache_id, CacheData())); - CacheData &m = it_m->second; - coord_t min_spacing = scale_(this->spacing); - m.distance = min_spacing / params.density; - m.hex_side = m.distance / (sqrt(3)/2); - m.hex_width = m.distance * 2; // $m->{hex_width} == $m->{hex_side} * sqrt(3); - coord_t hex_height = m.hex_side * 2; - m.pattern_height = hex_height + m.hex_side; - m.y_short = m.distance * sqrt(3)/3; - m.x_offset = min_spacing / 2; - m.y_offset = m.x_offset * sqrt(3)/3; - m.hex_center = Point(m.hex_width/2, m.hex_side); + CacheData &m = it_m->second; + coord_t min_spacing = coord_t(scale_(this->spacing)); + m.distance = coord_t(min_spacing / params.density); + m.hex_side = coord_t(m.distance / (sqrt(3)/2)); + m.hex_width = m.distance * 2; // $m->{hex_width} == $m->{hex_side} * sqrt(3); + coord_t hex_height = m.hex_side * 2; + m.pattern_height = hex_height + m.hex_side; + m.y_short = coord_t(m.distance * sqrt(3)/3); + m.x_offset = min_spacing / 2; + m.y_offset = coord_t(m.x_offset * sqrt(3)/3); + m.hex_center = Point(m.hex_width/2, m.hex_side); } CacheData &m = it_m->second; - Polygons polygons; + Polylines all_polylines; { // adjust actual bounding box to the nearest multiple of our hex pattern // and align it so that it matches across layers @@ -52,7 +52,7 @@ void FillHoneycomb::_fill_surface_single( coord_t x = bounding_box.min(0); while (x <= bounding_box.max(0)) { - Polygon p; + Polyline p; coord_t ax[2] = { x + m.x_offset, x + m.distance - m.x_offset }; for (size_t i = 0; i < 2; ++ i) { std::reverse(p.points.begin(), p.points.end()); // turn first half upside down @@ -69,55 +69,15 @@ void FillHoneycomb::_fill_surface_single( x += m.distance; } p.rotate(-direction.first, m.hex_center); - polygons.push_back(p); + all_polylines.push_back(p); } } - if (params.complete || true) { - // we were requested to complete each loop; - // in this case we don't try to make more continuous paths - Polygons polygons_trimmed = intersection((Polygons)expolygon, polygons); - for (Polygons::iterator it = polygons_trimmed.begin(); it != polygons_trimmed.end(); ++ it) - polylines_out.push_back(it->split_at_first_point()); - } else { - // consider polygons as polylines without re-appending the initial point: - // this cuts the last segment on purpose, so that the jump to the next - // path is more straight - Polylines paths; - { - Polylines p; - for (Polygon &poly : polygons) - p.emplace_back(poly.points); - paths = intersection_pl(p, to_polygons(expolygon)); - } - - // connect paths - if (! paths.empty()) { // prevent calling leftmost_point() on empty collections - Polylines chained = chain_polylines(std::move(paths)); - assert(paths.empty()); - paths.clear(); - for (Polyline &path : chained) { - if (! paths.empty()) { - // distance between first point of this path and last point of last path - double distance = (path.first_point() - paths.back().last_point()).cast<double>().norm(); - if (distance <= m.hex_width) { - paths.back().points.insert(paths.back().points.end(), path.points.begin(), path.points.end()); - continue; - } - } - // Don't connect the paths. - paths.push_back(std::move(path)); - } - } - - // clip paths again to prevent connection segments from crossing the expolygon boundaries - paths = intersection_pl(paths, to_polygons(offset_ex(expolygon, SCALED_EPSILON))); - // Move the polylines to the output, avoid a deep copy. - size_t j = polylines_out.size(); - polylines_out.resize(j + paths.size(), Polyline()); - for (size_t i = 0; i < paths.size(); ++ i) - std::swap(polylines_out[j ++], paths[i]); - } + all_polylines = intersection_pl(std::move(all_polylines), to_polygons(expolygon)); + if (params.dont_connect || all_polylines.size() <= 1) + append(polylines_out, chain_polylines(std::move(all_polylines))); + else + connect_infill(std::move(all_polylines), expolygon, polylines_out, this->spacing, params); } } // namespace Slic3r diff --git a/src/libslic3r/Fill/FillPlanePath.cpp b/src/libslic3r/Fill/FillPlanePath.cpp index 7a322ce99..002fcadc0 100644 --- a/src/libslic3r/Fill/FillPlanePath.cpp +++ b/src/libslic3r/Fill/FillPlanePath.cpp @@ -1,4 +1,5 @@ #include "../ClipperUtils.hpp" +#include "../ShortestPath.hpp" #include "../Surface.hpp" #include "FillPlanePath.hpp" @@ -23,14 +24,14 @@ void FillPlanePath::_fill_surface_single( Point shift = this->_centered() ? bounding_box.center() : bounding_box.min; - expolygon.translate(-shift(0), -shift(1)); - bounding_box.translate(-shift(0), -shift(1)); + expolygon.translate(-shift.x(), -shift.y()); + bounding_box.translate(-shift.x(), -shift.y()); Pointfs pts = _generate( - coord_t(ceil(coordf_t(bounding_box.min(0)) / distance_between_lines)), - coord_t(ceil(coordf_t(bounding_box.min(1)) / distance_between_lines)), - coord_t(ceil(coordf_t(bounding_box.max(0)) / distance_between_lines)), - coord_t(ceil(coordf_t(bounding_box.max(1)) / distance_between_lines))); + coord_t(ceil(coordf_t(bounding_box.min.x()) / distance_between_lines)), + coord_t(ceil(coordf_t(bounding_box.min.y()) / distance_between_lines)), + coord_t(ceil(coordf_t(bounding_box.max.x()) / distance_between_lines)), + coord_t(ceil(coordf_t(bounding_box.max.y()) / distance_between_lines))); Polylines polylines; if (pts.size() >= 2) { @@ -38,39 +39,24 @@ void FillPlanePath::_fill_surface_single( polylines.push_back(Polyline()); Polyline &polyline = polylines.back(); polyline.points.reserve(pts.size()); - for (Pointfs::iterator it = pts.begin(); it != pts.end(); ++ it) + for (const Vec2d &pt : pts) polyline.points.push_back(Point( - coord_t(floor((*it)(0) * distance_between_lines + 0.5)), - coord_t(floor((*it)(1) * distance_between_lines + 0.5)))); + coord_t(floor(pt.x() * distance_between_lines + 0.5)), + coord_t(floor(pt.y() * distance_between_lines + 0.5)))); // intersection(polylines_src, offset((Polygons)expolygon, scale_(0.02)), &polylines); - polylines = intersection_pl(polylines, to_polygons(expolygon)); - -/* - if (1) { - require "Slic3r/SVG.pm"; - print "Writing fill.svg\n"; - Slic3r::SVG::output("fill.svg", - no_arrows => 1, - polygons => \@$expolygon, - green_polygons => [ $bounding_box->polygon ], - polylines => [ $polyline ], - red_polylines => \@paths, - ); - } -*/ - + polylines = intersection_pl(std::move(polylines), to_polygons(expolygon)); + Polylines chained; + if (params.dont_connect || params.density > 0.5 || polylines.size() <= 1) + chained = chain_polylines(std::move(polylines)); + else + connect_infill(std::move(polylines), expolygon, chained, this->spacing, params); // paths must be repositioned and rotated back - for (Polylines::iterator it = polylines.begin(); it != polylines.end(); ++ it) { - it->translate(shift(0), shift(1)); - it->rotate(direction.first); + for (Polyline &pl : chained) { + pl.translate(shift.x(), shift.y()); + pl.rotate(direction.first); } + append(polylines_out, std::move(chained)); } - - // Move the polylines to the output, avoid a deep copy. - size_t j = polylines_out.size(); - polylines_out.resize(j + polylines.size(), Polyline()); - for (size_t i = 0; i < polylines.size(); ++ i) - std::swap(polylines_out[j ++], polylines[i]); } // Follow an Archimedean spiral, in polar coordinates: r=a+b\theta @@ -85,13 +71,13 @@ Pointfs FillArchimedeanChords::_generate(coord_t min_x, coord_t min_y, coord_t m coordf_t r = 1; Pointfs out; //FIXME Vojtech: If used as a solid infill, there is a gap left at the center. - out.push_back(Vec2d(0, 0)); - out.push_back(Vec2d(1, 0)); + out.emplace_back(0, 0); + out.emplace_back(1, 0); while (r < rmax) { // Discretization angle to achieve a discretization error lower than RESOLUTION. theta += 2. * acos(1. - RESOLUTION / r); r = a + b * theta; - out.push_back(Vec2d(r * cos(theta), r * sin(theta))); + out.emplace_back(r * cos(theta), r * sin(theta)); } return out; } @@ -128,15 +114,12 @@ static inline Point hilbert_n_to_xy(const size_t n) ++ ndigits; } } - int state = (ndigits & 1) ? 4 : 0; -// int dirstate = (ndigits & 1) ? 0 : 4; + int state = (ndigits & 1) ? 4 : 0; coord_t x = 0; coord_t y = 0; for (int i = (int)ndigits - 1; i >= 0; -- i) { int digit = (n >> (i * 2)) & 3; state += digit; -// if (digit != 3) -// dirstate = state; // lowest non-3 digit x |= digit_to_x[state] << i; y |= digit_to_y[state] << i; state = next_state[state]; @@ -162,7 +145,7 @@ Pointfs FillHilbertCurve::_generate(coord_t min_x, coord_t min_y, coord_t max_x, line.reserve(sz2); for (size_t i = 0; i < sz2; ++ i) { Point p = hilbert_n_to_xy(i); - line.push_back(Vec2d(p(0) + min_x, p(1) + min_y)); + line.emplace_back(p.x() + min_x, p.y() + min_y); } return line; } @@ -175,27 +158,27 @@ Pointfs FillOctagramSpiral::_generate(coord_t min_x, coord_t min_y, coord_t max_ coordf_t r = 0; coordf_t r_inc = sqrt(2.); Pointfs out; - out.push_back(Vec2d(0, 0)); + out.emplace_back(0., 0.); while (r < rmax) { r += r_inc; coordf_t rx = r / sqrt(2.); coordf_t r2 = r + rx; - out.push_back(Vec2d( r, 0.)); - out.push_back(Vec2d( r2, rx)); - out.push_back(Vec2d( rx, rx)); - out.push_back(Vec2d( rx, r2)); - out.push_back(Vec2d(0., r)); - out.push_back(Vec2d(-rx, r2)); - out.push_back(Vec2d(-rx, rx)); - out.push_back(Vec2d(-r2, rx)); - out.push_back(Vec2d(-r, 0.)); - out.push_back(Vec2d(-r2, -rx)); - out.push_back(Vec2d(-rx, -rx)); - out.push_back(Vec2d(-rx, -r2)); - out.push_back(Vec2d(0., -r)); - out.push_back(Vec2d( rx, -r2)); - out.push_back(Vec2d( rx, -rx)); - out.push_back(Vec2d( r2+r_inc, -rx)); + out.emplace_back( r, 0.); + out.emplace_back( r2, rx); + out.emplace_back( rx, rx); + out.emplace_back( rx, r2); + out.emplace_back( 0., r); + out.emplace_back(-rx, r2); + out.emplace_back(-rx, rx); + out.emplace_back(-r2, rx); + out.emplace_back(- r, 0.); + out.emplace_back(-r2, -rx); + out.emplace_back(-rx, -rx); + out.emplace_back(-rx, -r2); + out.emplace_back( 0., -r); + out.emplace_back( rx, -r2); + out.emplace_back( rx, -rx); + out.emplace_back( r2+r_inc, -rx); } return out; } diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index 1669f60d2..a27b85734 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -2324,7 +2324,6 @@ static inline void fill_expolygons_generate_paths( { FillParams fill_params; fill_params.density = density; - fill_params.complete = true; fill_params.dont_adjust = true; for (const ExPolygon &expoly : expolygons) { Surface surface(stInternal, expoly); @@ -2351,7 +2350,6 @@ static inline void fill_expolygons_generate_paths( { FillParams fill_params; fill_params.density = density; - fill_params.complete = true; fill_params.dont_adjust = true; for (ExPolygon &expoly : expolygons) { Surface surface(stInternal, std::move(expoly)); diff --git a/xs/xsp/Filler.xsp b/xs/xsp/Filler.xsp index caeb2af9a..2ea2b34d5 100644 --- a/xs/xsp/Filler.xsp +++ b/xs/xsp/Filler.xsp @@ -36,8 +36,6 @@ %code{% THIS->params.density = density; %}; void set_dont_adjust(bool dont_adjust) %code{% THIS->params.dont_adjust = dont_adjust; %}; - void set_complete(bool complete) - %code{% THIS->params.complete = complete; %}; PolylineCollection* _fill_surface(Surface *surface) %code{% From db05f00860f58d36f7c3a9a4bcba9eb581b5b55c Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Mon, 16 Nov 2020 13:11:58 +0100 Subject: [PATCH 029/138] Fixing compilation issues. --- src/libslic3r/ExPolygon.hpp | 12 ++++++------ src/libslic3r/Fill/Fill3DHoneycomb.cpp | 2 +- src/libslic3r/Fill/Fill3DHoneycomb.hpp | 2 +- src/libslic3r/Fill/FillAdaptive.cpp | 2 +- src/libslic3r/Fill/FillAdaptive.hpp | 2 +- src/libslic3r/Fill/FillBase.hpp | 2 +- src/libslic3r/Fill/FillConcentric.cpp | 2 +- src/libslic3r/Fill/FillConcentric.hpp | 2 +- src/libslic3r/Fill/FillGyroid.cpp | 12 ++++++------ src/libslic3r/Fill/FillGyroid.hpp | 2 +- src/libslic3r/Fill/FillHoneycomb.cpp | 2 +- src/libslic3r/Fill/FillHoneycomb.hpp | 2 +- src/libslic3r/Fill/FillPlanePath.cpp | 2 +- src/libslic3r/Fill/FillPlanePath.hpp | 2 +- src/libslic3r/Fill/FillRectilinear.cpp | 2 +- src/libslic3r/Fill/FillRectilinear.hpp | 2 +- src/libslic3r/Polygon.hpp | 2 +- 17 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/libslic3r/ExPolygon.hpp b/src/libslic3r/ExPolygon.hpp index 373853f97..0056100b1 100644 --- a/src/libslic3r/ExPolygon.hpp +++ b/src/libslic3r/ExPolygon.hpp @@ -17,9 +17,9 @@ typedef std::vector<ExPolygon> ExPolygons; class ExPolygon { public: - ExPolygon() {} - ExPolygon(const ExPolygon &other) : contour(other.contour), holes(other.holes) {} - ExPolygon(ExPolygon &&other) noexcept : contour(std::move(other.contour)), holes(std::move(other.holes)) {} + ExPolygon() = default; + ExPolygon(const ExPolygon &other) = default; + ExPolygon(ExPolygon &&other) = default; explicit ExPolygon(const Polygon &contour) : contour(contour) {} explicit ExPolygon(Polygon &&contour) : contour(std::move(contour)) {} explicit ExPolygon(const Points &contour) : contour(contour) {} @@ -31,10 +31,10 @@ public: ExPolygon(std::initializer_list<Point> contour) : contour(contour) {} ExPolygon(std::initializer_list<Point> contour, std::initializer_list<Point> hole) : contour(contour), holes({ hole }) {} - ExPolygon& operator=(const ExPolygon &other) { contour = other.contour; holes = other.holes; return *this; } - ExPolygon& operator=(ExPolygon &&other) noexcept { contour = std::move(other.contour); holes = std::move(other.holes); return *this; } + ExPolygon& operator=(const ExPolygon &other) = default; + ExPolygon& operator=(ExPolygon &&other) = default; - Polygon contour; + Polygon contour; Polygons holes; operator Points() const; diff --git a/src/libslic3r/Fill/Fill3DHoneycomb.cpp b/src/libslic3r/Fill/Fill3DHoneycomb.cpp index 144a27505..69a7f9923 100644 --- a/src/libslic3r/Fill/Fill3DHoneycomb.cpp +++ b/src/libslic3r/Fill/Fill3DHoneycomb.cpp @@ -137,7 +137,7 @@ void Fill3DHoneycomb::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { // no rotation is supported for this infill pattern diff --git a/src/libslic3r/Fill/Fill3DHoneycomb.hpp b/src/libslic3r/Fill/Fill3DHoneycomb.hpp index 92c459a8d..2fc1cbe81 100644 --- a/src/libslic3r/Fill/Fill3DHoneycomb.hpp +++ b/src/libslic3r/Fill/Fill3DHoneycomb.hpp @@ -23,7 +23,7 @@ protected: const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) override; }; diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index a1d592bc3..b9775fcda 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -1253,7 +1253,7 @@ void Filler::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { assert (this->adapt_fill_octree); diff --git a/src/libslic3r/Fill/FillAdaptive.hpp b/src/libslic3r/Fill/FillAdaptive.hpp index 01d9efb10..8ed05ba54 100644 --- a/src/libslic3r/Fill/FillAdaptive.hpp +++ b/src/libslic3r/Fill/FillAdaptive.hpp @@ -64,7 +64,7 @@ protected: const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) override; bool no_sort() const override { return true; } }; diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index f73e6f528..4f8456bfa 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -120,7 +120,7 @@ protected: const FillParams & /* params */, unsigned int /* thickness_layers */, const std::pair<float, Point> & /* direction */, - ExPolygon & /* expolygon */, + ExPolygon /* expolygon */, Polylines & /* polylines_out */) {}; virtual float _layer_angle(size_t idx) const { return (idx & 1) ? float(M_PI/2.) : 0; } diff --git a/src/libslic3r/Fill/FillConcentric.cpp b/src/libslic3r/Fill/FillConcentric.cpp index 8a3a7ea89..587038178 100644 --- a/src/libslic3r/Fill/FillConcentric.cpp +++ b/src/libslic3r/Fill/FillConcentric.cpp @@ -10,7 +10,7 @@ void FillConcentric::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { // no rotation is supported for this infill pattern diff --git a/src/libslic3r/Fill/FillConcentric.hpp b/src/libslic3r/Fill/FillConcentric.hpp index 72adad3a4..04c2f4e31 100644 --- a/src/libslic3r/Fill/FillConcentric.hpp +++ b/src/libslic3r/Fill/FillConcentric.hpp @@ -16,7 +16,7 @@ protected: const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) override; bool no_sort() const override { return true; } diff --git a/src/libslic3r/Fill/FillGyroid.cpp b/src/libslic3r/Fill/FillGyroid.cpp index b0cd507bc..c70c4439e 100644 --- a/src/libslic3r/Fill/FillGyroid.cpp +++ b/src/libslic3r/Fill/FillGyroid.cpp @@ -37,12 +37,12 @@ static inline Polyline make_wave( double period = points.back()(0); if (width != period) // do not extend if already truncated { - points.reserve(one_period.size() * floor(width / period)); + points.reserve(one_period.size() * size_t(floor(width / period))); points.pop_back(); - int n = points.size(); + size_t n = points.size(); do { - points.emplace_back(Vec2d(points[points.size()-n](0) + period, points[points.size()-n](1))); + points.emplace_back(points[points.size()-n].x() + period, points[points.size()-n].y()); } while (points.back()(0) < width - EPSILON); points.emplace_back(Vec2d(width, f(width, z_sin, z_cos, vertical, flip))); @@ -67,7 +67,7 @@ static std::vector<Vec2d> make_one_period(double width, double scaleFactor, doub std::vector<Vec2d> points; double dx = M_PI_2; // exact coordinates on main inflexion lobes double limit = std::min(2*M_PI, width); - points.reserve(ceil(limit / tolerance / 3)); + points.reserve(coord_t(ceil(limit / tolerance / 3))); for (double x = 0.; x < limit - EPSILON; x += dx) { points.emplace_back(Vec2d(x, f(x, z_sin, z_cos, vertical, flip))); @@ -152,10 +152,10 @@ void FillGyroid::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { - float infill_angle = this->angle + (CorrectionAngle * 2*M_PI) / 360.; + auto infill_angle = float(this->angle + (CorrectionAngle * 2*M_PI) / 360.); if(std::abs(infill_angle) >= EPSILON) expolygon.rotate(-infill_angle); diff --git a/src/libslic3r/Fill/FillGyroid.hpp b/src/libslic3r/Fill/FillGyroid.hpp index 4d45c47b0..ac66dfca9 100644 --- a/src/libslic3r/Fill/FillGyroid.hpp +++ b/src/libslic3r/Fill/FillGyroid.hpp @@ -32,7 +32,7 @@ protected: const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) override; }; diff --git a/src/libslic3r/Fill/FillHoneycomb.cpp b/src/libslic3r/Fill/FillHoneycomb.cpp index aa0157fb9..8d80529ec 100644 --- a/src/libslic3r/Fill/FillHoneycomb.cpp +++ b/src/libslic3r/Fill/FillHoneycomb.cpp @@ -10,7 +10,7 @@ void FillHoneycomb::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { // cache hexagons math diff --git a/src/libslic3r/Fill/FillHoneycomb.hpp b/src/libslic3r/Fill/FillHoneycomb.hpp index 98a5f7a59..707e976fd 100644 --- a/src/libslic3r/Fill/FillHoneycomb.hpp +++ b/src/libslic3r/Fill/FillHoneycomb.hpp @@ -20,7 +20,7 @@ protected: const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) override; // Caching the diff --git a/src/libslic3r/Fill/FillPlanePath.cpp b/src/libslic3r/Fill/FillPlanePath.cpp index 002fcadc0..0ce992ca3 100644 --- a/src/libslic3r/Fill/FillPlanePath.cpp +++ b/src/libslic3r/Fill/FillPlanePath.cpp @@ -10,7 +10,7 @@ void FillPlanePath::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { expolygon.rotate(- direction.first); diff --git a/src/libslic3r/Fill/FillPlanePath.hpp b/src/libslic3r/Fill/FillPlanePath.hpp index fe6b94162..cf19a95f8 100644 --- a/src/libslic3r/Fill/FillPlanePath.hpp +++ b/src/libslic3r/Fill/FillPlanePath.hpp @@ -23,7 +23,7 @@ protected: const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) override; float _layer_angle(size_t idx) const override { return 0.f; } diff --git a/src/libslic3r/Fill/FillRectilinear.cpp b/src/libslic3r/Fill/FillRectilinear.cpp index c8c75f302..53f4dab33 100644 --- a/src/libslic3r/Fill/FillRectilinear.cpp +++ b/src/libslic3r/Fill/FillRectilinear.cpp @@ -11,7 +11,7 @@ void FillLine::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) { // rotate polygons so that we can work with vertical lines here diff --git a/src/libslic3r/Fill/FillRectilinear.hpp b/src/libslic3r/Fill/FillRectilinear.hpp index b7d27de22..c01224e6e 100644 --- a/src/libslic3r/Fill/FillRectilinear.hpp +++ b/src/libslic3r/Fill/FillRectilinear.hpp @@ -20,7 +20,7 @@ protected: const FillParams ¶ms, unsigned int thickness_layers, const std::pair<float, Point> &direction, - ExPolygon &expolygon, + ExPolygon expolygon, Polylines &polylines_out) override; coord_t _min_spacing; diff --git a/src/libslic3r/Polygon.hpp b/src/libslic3r/Polygon.hpp index 3c44f66f7..8479a0bd6 100644 --- a/src/libslic3r/Polygon.hpp +++ b/src/libslic3r/Polygon.hpp @@ -21,7 +21,7 @@ public: Point& operator[](Points::size_type idx) { return this->points[idx]; } const Point& operator[](Points::size_type idx) const { return this->points[idx]; } - Polygon() {} + Polygon() = default; virtual ~Polygon() = default; explicit Polygon(const Points &points) : MultiPoint(points) {} Polygon(std::initializer_list<Point> points) : MultiPoint(points) {} From 2249e5d4b273aebe6949d14dbb21b325584f6d05 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Mon, 16 Nov 2020 13:17:18 +0100 Subject: [PATCH 030/138] Renamed FillRectilinear.cpp,h to FillLine.cpp,h --- src/libslic3r/CMakeLists.txt | 4 ++-- src/libslic3r/Fill/{FillRectilinear.cpp => FillLine.cpp} | 0 src/libslic3r/Fill/{FillRectilinear.hpp => FillLine.hpp} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename src/libslic3r/Fill/{FillRectilinear.cpp => FillLine.cpp} (100%) rename src/libslic3r/Fill/{FillRectilinear.hpp => FillLine.hpp} (100%) diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 150d66d75..937c41f02 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -58,8 +58,8 @@ add_library(libslic3r STATIC Fill/FillGyroid.hpp Fill/FillPlanePath.cpp Fill/FillPlanePath.hpp - Fill/FillRectilinear.cpp - Fill/FillRectilinear.hpp + Fill/FillLine.cpp + Fill/FillLine.hpp Fill/FillRectilinear2.cpp Fill/FillRectilinear2.hpp Flow.cpp diff --git a/src/libslic3r/Fill/FillRectilinear.cpp b/src/libslic3r/Fill/FillLine.cpp similarity index 100% rename from src/libslic3r/Fill/FillRectilinear.cpp rename to src/libslic3r/Fill/FillLine.cpp diff --git a/src/libslic3r/Fill/FillRectilinear.hpp b/src/libslic3r/Fill/FillLine.hpp similarity index 100% rename from src/libslic3r/Fill/FillRectilinear.hpp rename to src/libslic3r/Fill/FillLine.hpp From a864d584a6f0b4299c758bde56b8855e6fbbe4f6 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Mon, 16 Nov 2020 13:24:57 +0100 Subject: [PATCH 031/138] Fillers: Renamed Rectilinear2 to Rectilinear. --- src/libslic3r/CMakeLists.txt | 4 +-- src/libslic3r/Fill/Fill.cpp | 4 +-- src/libslic3r/Fill/FillBase.cpp | 6 ++--- src/libslic3r/Fill/FillLine.cpp | 2 +- src/libslic3r/Fill/FillLine.hpp | 6 ++--- ...llRectilinear2.cpp => FillRectilinear.cpp} | 22 ++++++++-------- ...llRectilinear2.hpp => FillRectilinear.hpp} | 26 +++++++++---------- 7 files changed, 35 insertions(+), 35 deletions(-) rename src/libslic3r/Fill/{FillRectilinear2.cpp => FillRectilinear.cpp} (99%) rename src/libslic3r/Fill/{FillRectilinear2.hpp => FillRectilinear.hpp} (80%) diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 937c41f02..0cf5af93c 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -60,8 +60,8 @@ add_library(libslic3r STATIC Fill/FillPlanePath.hpp Fill/FillLine.cpp Fill/FillLine.hpp - Fill/FillRectilinear2.cpp - Fill/FillRectilinear2.hpp + Fill/FillRectilinear.cpp + Fill/FillRectilinear.hpp Flow.cpp Flow.hpp format.hpp diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 95c8bb9b9..33ebf4ca2 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -10,7 +10,7 @@ #include "../Surface.hpp" #include "FillBase.hpp" -#include "FillRectilinear2.hpp" +#include "FillRectilinear.hpp" namespace Slic3r { @@ -536,7 +536,7 @@ void Layer::make_ironing() } std::sort(by_extruder.begin(), by_extruder.end()); - FillRectilinear2 fill; + FillRectilinear fill; FillParams fill_params; fill.set_bounding_box(this->object()->bounding_box()); fill.layer_id = this->id(); diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index 87a4c23b6..cacc79d52 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -14,8 +14,8 @@ #include "Fill3DHoneycomb.hpp" #include "FillGyroid.hpp" #include "FillPlanePath.hpp" +#include "FillLine.hpp" #include "FillRectilinear.hpp" -#include "FillRectilinear2.hpp" #include "FillAdaptive.hpp" namespace Slic3r { @@ -27,10 +27,10 @@ Fill* Fill::new_from_type(const InfillPattern type) case ipHoneycomb: return new FillHoneycomb(); case ip3DHoneycomb: return new Fill3DHoneycomb(); case ipGyroid: return new FillGyroid(); - case ipRectilinear: return new FillRectilinear2(); + case ipRectilinear: return new FillRectilinear(); case ipMonotonic: return new FillMonotonic(); case ipLine: return new FillLine(); - case ipGrid: return new FillGrid2(); + case ipGrid: return new FillGrid(); case ipTriangles: return new FillTriangles(); case ipStars: return new FillStars(); case ipCubic: return new FillCubic(); diff --git a/src/libslic3r/Fill/FillLine.cpp b/src/libslic3r/Fill/FillLine.cpp index 53f4dab33..1e6ed5284 100644 --- a/src/libslic3r/Fill/FillLine.cpp +++ b/src/libslic3r/Fill/FillLine.cpp @@ -3,7 +3,7 @@ #include "../ShortestPath.hpp" #include "../Surface.hpp" -#include "FillRectilinear.hpp" +#include "FillLine.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillLine.hpp b/src/libslic3r/Fill/FillLine.hpp index c01224e6e..b66309e1f 100644 --- a/src/libslic3r/Fill/FillLine.hpp +++ b/src/libslic3r/Fill/FillLine.hpp @@ -1,5 +1,5 @@ -#ifndef slic3r_FillRectilinear_hpp_ -#define slic3r_FillRectilinear_hpp_ +#ifndef slic3r_FillLine_hpp_ +#define slic3r_FillLine_hpp_ #include "../libslic3r.h" @@ -46,4 +46,4 @@ protected: }; // namespace Slic3r -#endif // slic3r_FillRectilinear_hpp_ +#endif // slic3r_FillLine_hpp_ diff --git a/src/libslic3r/Fill/FillRectilinear2.cpp b/src/libslic3r/Fill/FillRectilinear.cpp similarity index 99% rename from src/libslic3r/Fill/FillRectilinear2.cpp rename to src/libslic3r/Fill/FillRectilinear.cpp index d8e0e746a..09bb44201 100644 --- a/src/libslic3r/Fill/FillRectilinear2.cpp +++ b/src/libslic3r/Fill/FillRectilinear.cpp @@ -16,7 +16,7 @@ #include "../Surface.hpp" #include "../ShortestPath.hpp" -#include "FillRectilinear2.hpp" +#include "FillRectilinear.hpp" // #define SLIC3R_DEBUG @@ -2618,7 +2618,7 @@ static void polylines_from_paths(const std::vector<MonotonicRegionLink> &path, c } } -bool FillRectilinear2::fill_surface_by_lines(const Surface *surface, const FillParams ¶ms, float angleBase, float pattern_shift, Polylines &polylines_out) +bool FillRectilinear::fill_surface_by_lines(const Surface *surface, const FillParams ¶ms, float angleBase, float pattern_shift, Polylines &polylines_out) { // At the end, only the new polylines will be rotated back. size_t n_polylines_out_initial = polylines_out.size(); @@ -2676,10 +2676,10 @@ bool FillRectilinear2::fill_surface_by_lines(const Surface *surface, const FillP #ifdef SLIC3R_DEBUG static int iRun = 0; BoundingBox bbox_svg = poly_with_offset.bounding_box_outer(); - ::Slic3r::SVG svg(debug_out_path("FillRectilinear2-%d.svg", iRun), bbox_svg); // , scale_(1.)); + ::Slic3r::SVG svg(debug_out_path("FillRectilinear-%d.svg", iRun), bbox_svg); // , scale_(1.)); poly_with_offset.export_to_svg(svg); { - ::Slic3r::SVG svg(debug_out_path("FillRectilinear2-initial-%d.svg", iRun), bbox_svg); // , scale_(1.)); + ::Slic3r::SVG svg(debug_out_path("FillRectilinear-initial-%d.svg", iRun), bbox_svg); // , scale_(1.)); poly_with_offset.export_to_svg(svg); } iRun ++; @@ -2729,14 +2729,14 @@ bool FillRectilinear2::fill_surface_by_lines(const Surface *surface, const FillP #ifdef SLIC3R_DEBUG { { - ::Slic3r::SVG svg(debug_out_path("FillRectilinear2-final-%03d.svg", iRun), bbox_svg); // , scale_(1.)); + ::Slic3r::SVG svg(debug_out_path("FillRectilinear-final-%03d.svg", iRun), bbox_svg); // , scale_(1.)); poly_with_offset.export_to_svg(svg); for (size_t i = n_polylines_out_initial; i < polylines_out.size(); ++ i) svg.draw(polylines_out[i].lines(), "black"); } // Paint a picture per polyline. This makes it easier to discover the order of the polylines and their overlap. for (size_t i_polyline = n_polylines_out_initial; i_polyline < polylines_out.size(); ++ i_polyline) { - ::Slic3r::SVG svg(debug_out_path("FillRectilinear2-final-%03d-%03d.svg", iRun, i_polyline), bbox_svg); // , scale_(1.)); + ::Slic3r::SVG svg(debug_out_path("FillRectilinear-final-%03d-%03d.svg", iRun, i_polyline), bbox_svg); // , scale_(1.)); svg.draw(polylines_out[i_polyline].lines(), "black"); } } @@ -2762,7 +2762,7 @@ bool FillRectilinear2::fill_surface_by_lines(const Surface *surface, const FillP return true; } -bool FillRectilinear2::fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out) +bool FillRectilinear::fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out) { assert(sweep_params.size() > 1); assert(! params.full_infill()); @@ -2830,11 +2830,11 @@ bool FillRectilinear2::fill_surface_by_multilines(const Surface *surface, FillPa return true; } -Polylines FillRectilinear2::fill_surface(const Surface *surface, const FillParams ¶ms) +Polylines FillRectilinear::fill_surface(const Surface *surface, const FillParams ¶ms) { Polylines polylines_out; if (! fill_surface_by_lines(surface, params, 0.f, 0.f, polylines_out)) - BOOST_LOG_TRIVIAL(error) << "FillRectilinear2::fill_surface() failed to fill a region."; + BOOST_LOG_TRIVIAL(error) << "FillRectilinear::fill_surface() failed to fill a region."; return polylines_out; } @@ -2848,14 +2848,14 @@ Polylines FillMonotonic::fill_surface(const Surface *surface, const FillParams & return polylines_out; } -Polylines FillGrid2::fill_surface(const Surface *surface, const FillParams ¶ms) +Polylines FillGrid::fill_surface(const Surface *surface, const FillParams ¶ms) { Polylines polylines_out; if (! this->fill_surface_by_multilines( surface, params, { { 0.f, 0.f }, { float(M_PI / 2.), 0.f } }, polylines_out)) - BOOST_LOG_TRIVIAL(error) << "FillGrid2::fill_surface() failed to fill a region."; + BOOST_LOG_TRIVIAL(error) << "FillGrid::fill_surface() failed to fill a region."; return polylines_out; } diff --git a/src/libslic3r/Fill/FillRectilinear2.hpp b/src/libslic3r/Fill/FillRectilinear.hpp similarity index 80% rename from src/libslic3r/Fill/FillRectilinear2.hpp rename to src/libslic3r/Fill/FillRectilinear.hpp index 4ceb0d2b6..806b29be1 100644 --- a/src/libslic3r/Fill/FillRectilinear2.hpp +++ b/src/libslic3r/Fill/FillRectilinear.hpp @@ -1,5 +1,5 @@ -#ifndef slic3r_FillRectilinear2_hpp_ -#define slic3r_FillRectilinear2_hpp_ +#ifndef slic3r_FillRectilinear_hpp_ +#define slic3r_FillRectilinear_hpp_ #include "../libslic3r.h" @@ -9,11 +9,11 @@ namespace Slic3r { class Surface; -class FillRectilinear2 : public Fill +class FillRectilinear : public Fill { public: - Fill* clone() const override { return new FillRectilinear2(*this); }; - ~FillRectilinear2() override = default; + Fill* clone() const override { return new FillRectilinear(*this); }; + ~FillRectilinear() override = default; Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; protected: @@ -29,7 +29,7 @@ protected: bool fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out); }; -class FillMonotonic : public FillRectilinear2 +class FillMonotonic : public FillRectilinear { public: Fill* clone() const override { return new FillMonotonic(*this); }; @@ -38,11 +38,11 @@ public: bool no_sort() const override { return true; } }; -class FillGrid2 : public FillRectilinear2 +class FillGrid : public FillRectilinear { public: - Fill* clone() const override { return new FillGrid2(*this); }; - ~FillGrid2() override = default; + Fill* clone() const override { return new FillGrid(*this); }; + ~FillGrid() override = default; Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override; protected: @@ -50,7 +50,7 @@ protected: float _layer_angle(size_t idx) const override { return 0.f; } }; -class FillTriangles : public FillRectilinear2 +class FillTriangles : public FillRectilinear { public: Fill* clone() const override { return new FillTriangles(*this); }; @@ -62,7 +62,7 @@ protected: float _layer_angle(size_t idx) const override { return 0.f; } }; -class FillStars : public FillRectilinear2 +class FillStars : public FillRectilinear { public: Fill* clone() const override { return new FillStars(*this); }; @@ -74,7 +74,7 @@ protected: float _layer_angle(size_t idx) const override { return 0.f; } }; -class FillCubic : public FillRectilinear2 +class FillCubic : public FillRectilinear { public: Fill* clone() const override { return new FillCubic(*this); }; @@ -89,4 +89,4 @@ protected: }; // namespace Slic3r -#endif // slic3r_FillRectilinear2_hpp_ +#endif // slic3r_FillRectilinear_hpp_ From 620f94331c65aa50f59b9728b2e6c4cd13d7c78b Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Mon, 16 Nov 2020 13:44:15 +0100 Subject: [PATCH 032/138] fix of OSX build: workaround of non-standard std::optional --- src/libslic3r/Fill/FillAdaptive.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index b9775fcda..07c454c80 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -725,7 +725,7 @@ static void add_hook( update_max_length(t); } if (self_intersection) { - double t = (self_intersection_point.cast<double>() - pt).dot(dir) - shift_from_thick_line(self_intersection_line.value().vector().cast<double>()); + double t = (self_intersection_point.cast<double>() - pt).dot(dir) - shift_from_thick_line((*self_intersection_line).vector().cast<double>()); max_length = std::min(max_length, t); } return std::max(0., max_length); @@ -878,7 +878,7 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b std::optional<size_t> out; if (in) { const Polyline *lo = &line; - const Polyline *hi = &lines[in.value()]; + const Polyline *hi = &lines[*in]; if (lo > hi) std::swap(lo, hi); if (! std::binary_search(lines_touching_at_endpoints.begin(), lines_touching_at_endpoints.end(), std::make_pair(lo, hi))) @@ -914,10 +914,10 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b } else if (anchor) { if (tjoint_front) // T-joint of line's front point with the 'closest' line. - intersections.emplace_back(lines_src[tjoint_front.value()], lines_src[line_idx], &line, front_point, true); + intersections.emplace_back(lines_src[*tjoint_front], lines_src[line_idx], &line, front_point, true); if (tjoint_back) // T-joint of line's back point with the 'closest' line. - intersections.emplace_back(lines_src[tjoint_back.value()], lines_src[line_idx], &line, back_point, false); + intersections.emplace_back(lines_src[*tjoint_back], lines_src[line_idx], &line, back_point, false); } else { if (tjoint_front) // T joint at the front at a 60 degree angle, the line is very short. From afddcf71db684a8351a51021ce701560c0bc213d Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Mon, 16 Nov 2020 15:01:13 +0100 Subject: [PATCH 033/138] Preview - Paint in grey toolpaths belonging to layers containing pause prints or custom gcodes --- src/libslic3r/Technologies.hpp | 1 + src/slic3r/GUI/GCodeViewer.cpp | 61 ++++++++++++++++++++++++++-------- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 7b30958a9..66258fe62 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -71,6 +71,7 @@ #define ENABLE_2_3_0_ALPHA4 1 #define ENABLE_FIXED_SCREEN_SIZE_POINT_MARKERS (1 && ENABLE_GCODE_VIEWER && ENABLE_2_3_0_ALPHA4) +#define ENABLE_SHOW_OPTION_POINT_LAYERS (1 && ENABLE_GCODE_VIEWER && ENABLE_2_3_0_ALPHA4) #endif // _prusaslicer_technologies_h_ diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 5e2702b3c..4be9f5fbd 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -1197,6 +1197,7 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) prev_up = up; prev_length = length; }; + auto add_indices_as_solid = [](const GCodeProcessor::MoveVertex& prev, const GCodeProcessor::MoveVertex& curr, TBuffer& buffer, size_t& buffer_vertices_size, unsigned int index_buffer_id, IndexBuffer& buffer_indices, size_t move_id) { static Vec3f prev_dir; @@ -1339,6 +1340,9 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) // the data are deleted as soon as they are sent to the gpu. std::vector<std::vector<float>> vertices(m_buffers.size()); std::vector<MultiIndexBuffer> indices(m_buffers.size()); +#if ENABLE_SHOW_OPTION_POINT_LAYERS + std::vector<float> options_zs; +#endif // ENABLE_SHOW_OPTION_POINT_LAYERS // toolpaths data -> extract vertices from result for (size_t i = 0; i < m_moves_count; ++i) { @@ -1363,22 +1367,29 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) switch (buffer.render_primitive_type) { - case TBuffer::ERenderPrimitiveType::Point: - { + case TBuffer::ERenderPrimitiveType::Point: { add_vertices_as_point(curr, buffer_vertices); break; } - case TBuffer::ERenderPrimitiveType::Line: - { + case TBuffer::ERenderPrimitiveType::Line: { add_vertices_as_line(prev, curr, buffer, buffer_vertices); break; } - case TBuffer::ERenderPrimitiveType::Triangle: - { + case TBuffer::ERenderPrimitiveType::Triangle: { add_vertices_as_solid(prev, curr, buffer, buffer_vertices, i); break; } } + +#if ENABLE_SHOW_OPTION_POINT_LAYERS + EMoveType type = buffer_type(id); + if (type == EMoveType::Pause_Print || type == EMoveType::Custom_GCode) { + const float* const last_z = options_zs.empty() ? nullptr : &options_zs.back(); + float z = static_cast<double>(curr.position[2]); + if (last_z == nullptr || z < *last_z - EPSILON || *last_z + EPSILON < z) + options_zs.emplace_back(curr.position[2]); + } +#endif // ENABLE_SHOW_OPTION_POINT_LAYERS } log_memory_usage("Loaded G-code generated vertex buffers, ", vertices, indices); @@ -1464,18 +1475,15 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) switch (buffer.render_primitive_type) { - case TBuffer::ERenderPrimitiveType::Point: - { + case TBuffer::ERenderPrimitiveType::Point: { add_indices_as_point(curr, buffer, static_cast<unsigned int>(buffer_indices.size()) - 1, buffer_indices.back(), i); break; } - case TBuffer::ERenderPrimitiveType::Line: - { + case TBuffer::ERenderPrimitiveType::Line: { add_indices_as_line(prev, curr, buffer, static_cast<unsigned int>(buffer_indices.size()) - 1, buffer_indices.back(), i); break; } - case TBuffer::ERenderPrimitiveType::Triangle: - { + case TBuffer::ERenderPrimitiveType::Triangle: { add_indices_as_solid(prev, curr, buffer, curr_buffer_vertices_size, static_cast<unsigned int>(buffer_indices.size()) - 1, buffer_indices.back(), i); break; } @@ -1558,9 +1566,20 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) } // 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) }; + +#if ENABLE_SHOW_OPTION_POINT_LAYERS + // change color of paths whose layer contains option points + if (!options_zs.empty()) { + TBuffer& extrude_buffer = m_buffers[buffer_id(EMoveType::Extrude)]; + for (Path& path : extrude_buffer.paths) { + float z = path.first.position[2]; + if (std::find_if(options_zs.begin(), options_zs.end(), [z](float f) { return f - EPSILON <= z && z <= f + EPSILON; }) != options_zs.end()) + path.cp_color_id = 255 - path.cp_color_id; + } } +#endif // ENABLE_SHOW_OPTION_POINT_LAYERS // roles -> remove duplicates std::sort(m_roles.begin(), m_roles.end()); @@ -1657,9 +1676,25 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool case EViewType::FanSpeed: { color = m_extrusions.ranges.fan_speed.get_color_at(path.fan_speed); break; } case EViewType::VolumetricRate: { color = m_extrusions.ranges.volumetric_rate.get_color_at(path.volumetric_rate); break; } case EViewType::Tool: { color = m_tool_colors[path.extruder_id]; break; } +#if ENABLE_SHOW_OPTION_POINT_LAYERS + case EViewType::ColorPrint: { + if (path.cp_color_id >= static_cast<unsigned char>(m_tool_colors.size())) { + color = { 0.5f, 0.5f, 0.5f }; +// // complementary color +// color = m_tool_colors[255 - path.cp_color_id]; +// color = { 1.0f - color[0], 1.0f - color[1], 1.0f - color[2] }; + } + else + color = m_tool_colors[path.cp_color_id]; + + break; + } +#else case EViewType::ColorPrint: { color = m_tool_colors[path.cp_color_id]; break; } +#endif // ENABLE_SHOW_OPTION_POINT_LAYERS default: { color = { 1.0f, 1.0f, 1.0f }; break; } } + return color; }; From a20ce2f484765f0a4af743420eb3c0696a56b7bf Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Mon, 16 Nov 2020 17:29:21 +0100 Subject: [PATCH 034/138] ENABLE_GCODE_VIEWER set as default in 3DBed.hpp/.cpp --- src/slic3r/GUI/3DBed.cpp | 127 --------------------------------------- src/slic3r/GUI/3DBed.hpp | 41 ------------- 2 files changed, 168 deletions(-) diff --git a/src/slic3r/GUI/3DBed.cpp b/src/slic3r/GUI/3DBed.cpp index 8a29d08bd..244f9eae0 100644 --- a/src/slic3r/GUI/3DBed.cpp +++ b/src/slic3r/GUI/3DBed.cpp @@ -5,24 +5,18 @@ #include "libslic3r/Polygon.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/BoundingBox.hpp" -#if ENABLE_GCODE_VIEWER #include "libslic3r/Geometry.hpp" -#endif // ENABLE_GCODE_VIEWER #include "GUI_App.hpp" #include "libslic3r/PresetBundle.hpp" #include "GLCanvas3D.hpp" -#if ENABLE_GCODE_VIEWER #include "3DScene.hpp" -#endif // ENABLE_GCODE_VIEWER #include <GL/glew.h> #include <boost/algorithm/string/predicate.hpp> #include <boost/filesystem/operations.hpp> -#if ENABLE_GCODE_VIEWER #include <boost/log/trivial.hpp> -#endif // ENABLE_GCODE_VIEWER static const float GROUND_Z = -0.02f; @@ -121,43 +115,19 @@ const float* GeometryBuffer::get_vertices_data() const return (m_vertices.size() > 0) ? (const float*)m_vertices.data() : nullptr; } -#if ENABLE_GCODE_VIEWER const float Bed3D::Axes::DefaultStemRadius = 0.5f; const float Bed3D::Axes::DefaultStemLength = 25.0f; const float Bed3D::Axes::DefaultTipRadius = 2.5f * Bed3D::Axes::DefaultStemRadius; const float Bed3D::Axes::DefaultTipLength = 5.0f; -#else -const double Bed3D::Axes::Radius = 0.5; -const double Bed3D::Axes::ArrowBaseRadius = 2.5 * Bed3D::Axes::Radius; -const double Bed3D::Axes::ArrowLength = 5.0; -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER void Bed3D::Axes::set_stem_length(float length) { m_stem_length = length; m_arrow.reset(); } -#else -Bed3D::Axes::Axes() -: origin(Vec3d::Zero()) -, length(25.0 * Vec3d::Ones()) -{ - m_quadric = ::gluNewQuadric(); - if (m_quadric != nullptr) - ::gluQuadricDrawStyle(m_quadric, GLU_FILL); -} - -Bed3D::Axes::~Axes() -{ - if (m_quadric != nullptr) - ::gluDeleteQuadric(m_quadric); -} -#endif // ENABLE_GCODE_VIEWER void Bed3D::Axes::render() const { -#if ENABLE_GCODE_VIEWER auto render_axis = [this](const Transform3f& transform) { glsafe(::glPushMatrix()); glsafe(::glMultMatrixf(transform.data())); @@ -193,56 +163,8 @@ void Bed3D::Axes::render() const shader->stop_using(); glsafe(::glDisable(GL_DEPTH_TEST)); -#else - if (m_quadric == nullptr) - return; - - glsafe(::glEnable(GL_DEPTH_TEST)); - glsafe(::glEnable(GL_LIGHTING)); - - // x axis - glsafe(::glColor3fv(AXES_COLOR[0])); - glsafe(::glPushMatrix()); - glsafe(::glTranslated(origin(0), origin(1), origin(2))); - glsafe(::glRotated(90.0, 0.0, 1.0, 0.0)); - render_axis(length(0)); - glsafe(::glPopMatrix()); - - // y axis - glsafe(::glColor3fv(AXES_COLOR[1])); - glsafe(::glPushMatrix()); - glsafe(::glTranslated(origin(0), origin(1), origin(2))); - glsafe(::glRotated(-90.0, 1.0, 0.0, 0.0)); - render_axis(length(1)); - glsafe(::glPopMatrix()); - - // z axis - glsafe(::glColor3fv(AXES_COLOR[2])); - glsafe(::glPushMatrix()); - glsafe(::glTranslated(origin(0), origin(1), origin(2))); - render_axis(length(2)); - glsafe(::glPopMatrix()); - - glsafe(::glDisable(GL_LIGHTING)); - glsafe(::glDisable(GL_DEPTH_TEST)); -#endif // !ENABLE_GCODE_VIEWER } -#if !ENABLE_GCODE_VIEWER -void Bed3D::Axes::render_axis(double length) const -{ - ::gluQuadricOrientation(m_quadric, GLU_OUTSIDE); - ::gluCylinder(m_quadric, Radius, Radius, length, 32, 1); - ::gluQuadricOrientation(m_quadric, GLU_INSIDE); - ::gluDisk(m_quadric, 0.0, Radius, 32, 1); - glsafe(::glTranslated(0.0, 0.0, length)); - ::gluQuadricOrientation(m_quadric, GLU_OUTSIDE); - ::gluCylinder(m_quadric, ArrowBaseRadius, 0.0, ArrowLength, 32, 1); - ::gluQuadricOrientation(m_quadric, GLU_INSIDE); - ::gluDisk(m_quadric, 0.0, ArrowBaseRadius, 32, 1); -} -#endif // !ENABLE_GCODE_VIEWER - Bed3D::Bed3D() : m_type(Custom) , m_vbo_id(0) @@ -308,13 +230,8 @@ bool Bed3D::set_shape(const Pointfs& shape, const std::string& custom_texture, c m_model.reset(); // Set the origin and size for rendering the coordinate system axes. -#if ENABLE_GCODE_VIEWER m_axes.set_origin({ 0.0, 0.0, static_cast<double>(GROUND_Z) }); m_axes.set_stem_length(0.1f * static_cast<float>(m_bounding_box.max_size())); -#else - m_axes.origin = Vec3d(0.0, 0.0, (double)GROUND_Z); - m_axes.length = 0.1 * m_bounding_box.max_size() * Vec3d::Ones(); -#endif // ENABLE_GCODE_VIEWER // Let the calee to update the UI. return true; @@ -360,7 +277,6 @@ void Bed3D::calc_bounding_boxes() const m_extended_bounding_box = m_bounding_box; // extend to contain axes -#if ENABLE_GCODE_VIEWER m_extended_bounding_box.merge(m_axes.get_origin() + m_axes.get_total_length() * Vec3d::Ones()); m_extended_bounding_box.merge(m_extended_bounding_box.min + Vec3d(-Axes::DefaultTipRadius, -Axes::DefaultTipRadius, m_extended_bounding_box.max(2))); @@ -370,12 +286,6 @@ void Bed3D::calc_bounding_boxes() const model_bb.translate(m_model_offset); m_extended_bounding_box.merge(model_bb); } -#else - m_extended_bounding_box.merge(m_axes.length + Axes::ArrowLength * Vec3d::Ones()); - // extend to contain model, if any - if (!m_model.get_filename().empty()) - m_extended_bounding_box.merge(m_model.get_transformed_bounding_box()); -#endif // ENABLE_GCODE_VIEWER } void Bed3D::calc_triangles(const ExPolygon& poly) @@ -414,26 +324,6 @@ void Bed3D::calc_gridlines(const ExPolygon& poly, const BoundingBox& bed_bbox) printf("Unable to create bed grid lines\n"); } -#if !ENABLE_GCODE_VIEWER -static std::string system_print_bed_model(const Preset &preset) -{ - std::string out; - const VendorProfile::PrinterModel *pm = PresetUtils::system_printer_model(preset); - if (pm != nullptr && ! pm->bed_model.empty()) - out = Slic3r::resources_dir() + "/profiles/" + preset.vendor->id + "/" + pm->bed_model; - return out; -} - -static std::string system_print_bed_texture(const Preset &preset) -{ - std::string out; - const VendorProfile::PrinterModel *pm = PresetUtils::system_printer_model(preset); - if (pm != nullptr && ! pm->bed_texture.empty()) - out = Slic3r::resources_dir() + "/profiles/" + preset.vendor->id + "/" + pm->bed_texture; - return out; -} -#endif // !ENABLE_GCODE_VIEWER - std::tuple<Bed3D::EType, std::string, std::string> Bed3D::detect_type(const Pointfs& shape) const { auto bundle = wxGetApp().preset_bundle; @@ -442,13 +332,8 @@ std::tuple<Bed3D::EType, std::string, std::string> Bed3D::detect_type(const Poin while (curr != nullptr) { if (curr->config.has("bed_shape")) { if (shape == dynamic_cast<const ConfigOptionPoints*>(curr->config.option("bed_shape"))->values) { -#if ENABLE_GCODE_VIEWER std::string model_filename = PresetUtils::system_printer_bed_model(*curr); std::string texture_filename = PresetUtils::system_printer_bed_texture(*curr); -#else - std::string model_filename = system_print_bed_model(*curr); - std::string texture_filename = system_print_bed_texture(*curr); -#endif // ENABLE_GCODE_VIEWER if (!model_filename.empty() && !texture_filename.empty()) return { System, model_filename, texture_filename }; } @@ -614,11 +499,7 @@ void Bed3D::render_model() const // move the model so that its origin (0.0, 0.0, 0.0) goes into the bed shape center and a bit down to avoid z-fighting with the texture quad Vec3d shift = m_bounding_box.center(); shift(2) = -0.03; -#if ENABLE_GCODE_VIEWER m_model_offset = shift; -#else - m_model.set_offset(shift); -#endif // ENABLE_GCODE_VIEWER // update extended bounding box calc_bounding_boxes(); @@ -628,15 +509,11 @@ void Bed3D::render_model() const GLShaderProgram* shader = wxGetApp().get_shader("gouraud_light"); if (shader != nullptr) { shader->start_using(); -#if ENABLE_GCODE_VIEWER shader->set_uniform("uniform_color", m_model_color); ::glPushMatrix(); ::glTranslated(m_model_offset(0), m_model_offset(1), m_model_offset(2)); -#endif // ENABLE_GCODE_VIEWER m_model.render(); -#if ENABLE_GCODE_VIEWER ::glPopMatrix(); -#endif // ENABLE_GCODE_VIEWER shader->stop_using(); } } @@ -673,11 +550,7 @@ void Bed3D::render_default(bool bottom) const if (!has_model && !bottom) { // draw background glsafe(::glDepthMask(GL_FALSE)); -#if ENABLE_GCODE_VIEWER glsafe(::glColor4fv(m_model_color.data())); -#else - glsafe(::glColor4f(0.35f, 0.35f, 0.35f, 0.4f)); -#endif // ENABLE_GCODE_VIEWER glsafe(::glNormal3d(0.0f, 0.0f, 1.0f)); glsafe(::glVertexPointer(3, GL_FLOAT, m_triangles.get_vertex_data_size(), (GLvoid*)m_triangles.get_vertices_data())); glsafe(::glDrawArrays(GL_TRIANGLES, 0, (GLsizei)triangles_vcount)); diff --git a/src/slic3r/GUI/3DBed.hpp b/src/slic3r/GUI/3DBed.hpp index fbfc3078c..b5b063e6f 100644 --- a/src/slic3r/GUI/3DBed.hpp +++ b/src/slic3r/GUI/3DBed.hpp @@ -3,19 +3,10 @@ #include "GLTexture.hpp" #include "3DScene.hpp" -#if ENABLE_GCODE_VIEWER #include "GLModel.hpp" -#endif // ENABLE_GCODE_VIEWER #include <tuple> -#if ENABLE_GCODE_VIEWER #include <array> -#endif // ENABLE_GCODE_VIEWER - -#if !ENABLE_GCODE_VIEWER -class GLUquadric; -typedef class GLUquadric GLUquadricObj; -#endif // !ENABLE_GCODE_VIEWER namespace Slic3r { namespace GUI { @@ -52,7 +43,6 @@ public: class Bed3D { -#if ENABLE_GCODE_VIEWER class Axes { public: @@ -62,43 +52,16 @@ class Bed3D static const float DefaultTipLength; private: -#else - struct Axes - { - static const double Radius; - static const double ArrowBaseRadius; - static const double ArrowLength; -#endif // ENABLE_GCODE_VIEWER - -#if ENABLE_GCODE_VIEWER Vec3d m_origin{ Vec3d::Zero() }; float m_stem_length{ DefaultStemLength }; mutable GLModel m_arrow; public: -#else - Vec3d origin; - Vec3d length; - GLUquadricObj* m_quadric; -#endif // ENABLE_GCODE_VIEWER - -#if !ENABLE_GCODE_VIEWER - Axes(); - ~Axes(); -#endif // !ENABLE_GCODE_VIEWER - -#if ENABLE_GCODE_VIEWER const Vec3d& get_origin() const { return m_origin; } void set_origin(const Vec3d& origin) { m_origin = origin; } void set_stem_length(float length); float get_total_length() const { return m_stem_length + DefaultTipLength; } -#endif // ENABLE_GCODE_VIEWER void render() const; - -#if !ENABLE_GCODE_VIEWER - private: - void render_axis(double length) const; -#endif // !ENABLE_GCODE_VIEWER }; public: @@ -120,13 +83,9 @@ private: GeometryBuffer m_triangles; GeometryBuffer m_gridlines; mutable GLTexture m_texture; -#if ENABLE_GCODE_VIEWER mutable GLModel m_model; mutable Vec3d m_model_offset{ Vec3d::Zero() }; std::array<float, 4> m_model_color{ 0.235f, 0.235f, 0.235f, 1.0f }; -#else - mutable GLBed m_model; -#endif // ENABLE_GCODE_VIEWER // temporary texture shown until the main texture has still no levels compressed mutable GLTexture m_temp_texture; mutable unsigned int m_vbo_id; From 1e12b99338300ae3e491b94124563e4c0c482527 Mon Sep 17 00:00:00 2001 From: David Kocik <kocikdav@gmail.com> Date: Sat, 14 Nov 2020 11:17:09 +0100 Subject: [PATCH 035/138] fix of segfault on startup at SplashScreen::SetText --- src/slic3r/GUI/GUI_App.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index bea8b6487..cab19796b 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -825,7 +825,9 @@ bool GUI_App::on_init_inner() // create splash screen with updated bmp scrn = new SplashScreen(bmp.IsOk() ? bmp : create_scaled_bitmap("prusa_slicer_logo", nullptr, 400), wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT, 4000, splashscreen_pos); +#ifndef __linux__ wxYield(); +#endif scrn->SetText(_L("Loading configuration...")); } From 16dd7c74f121a7ffd5a4e7bdf629dc59c13f9ad1 Mon Sep 17 00:00:00 2001 From: David Kocik <kocikdav@gmail.com> Date: Tue, 17 Nov 2020 14:44:18 +0100 Subject: [PATCH 036/138] boost canonical fix at instance check. Hopefully a fix of #4973 --- src/slic3r/GUI/InstanceCheck.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/InstanceCheck.cpp b/src/slic3r/GUI/InstanceCheck.cpp index 4aaecd2b2..8067fc7f3 100644 --- a/src/slic3r/GUI/InstanceCheck.cpp +++ b/src/slic3r/GUI/InstanceCheck.cpp @@ -251,11 +251,24 @@ namespace instance_check_internal bool instance_check(int argc, char** argv, bool app_config_single_instance) { +#ifndef _WIN32 + boost::system::error_code ec; +#endif std::size_t hashed_path = #ifdef _WIN32 std::hash<std::string>{}(boost::filesystem::system_complete(argv[0]).string()); #else - std::hash<std::string>{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0])).string()); + std::hash<std::string>{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0]), ec).string()); + if(ec.value() > 0) { // canonical was not able to find execitable (can happen with appimage on some systems) + ec.clear(); + // Compose path with boost canonical of folder and filename + hashed_path = std::hash<std::string>{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0]).parent_path(), ec).string() + "/" + boost::filesystem::system_complete(argv[0]).filename().string()); + if(ec.value() > 0) { + // Still not valid, process without canonical + hashed_path = std::hash<std::string>{}(boost::filesystem::system_complete(argv[0]).string()); + + } + } #endif // win32 std::string lock_name = std::to_string(hashed_path); From faff112ea8f1f3ad27537bf886208f64fb07c0e1 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Wed, 18 Nov 2020 10:44:03 +0100 Subject: [PATCH 037/138] ENABLE_GCODE_VIEWER set as default in: 3DScene hpp/cpp AboutDialog.cpp BackgroundSlicingProcess hpp/cpp BitmapCache.cpp ConfigWizard_private.hpp GUI_App hpp/cpp GUI_Init.cpp --- src/slic3r/GUI/3DScene.cpp | 567 -------------------- src/slic3r/GUI/3DScene.hpp | 66 --- src/slic3r/GUI/AboutDialog.cpp | 22 +- src/slic3r/GUI/BackgroundSlicingProcess.cpp | 17 +- src/slic3r/GUI/BackgroundSlicingProcess.hpp | 14 - src/slic3r/GUI/BitmapCache.cpp | 13 - src/slic3r/GUI/ConfigWizard_private.hpp | 2 - src/slic3r/GUI/GUI_App.cpp | 86 --- src/slic3r/GUI/GUI_App.hpp | 13 - src/slic3r/GUI/GUI_Init.cpp | 12 - 10 files changed, 2 insertions(+), 810 deletions(-) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 436df201c..e97ba0764 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -993,290 +993,6 @@ bool GLVolumeCollection::has_toolpaths_to_export() const return false; } -#if !ENABLE_GCODE_VIEWER -void GLVolumeCollection::export_toolpaths_to_obj(const char* filename) const -{ - if (filename == nullptr) - return; - - if (!has_toolpaths_to_export()) - return; - - // collect color information to generate materials - typedef std::array<float, 4> Color; - std::set<Color> colors; - for (const GLVolume* volume : this->volumes) - { - if (!can_export_to_obj(*volume)) - continue; - - Color color; - ::memcpy((void*)color.data(), (const void*)volume->color, 4 * sizeof(float)); - colors.insert(color); - } - - // save materials file - boost::filesystem::path mat_filename(filename); - mat_filename.replace_extension("mtl"); - FILE* fp = boost::nowide::fopen(mat_filename.string().c_str(), "w"); - if (fp == nullptr) { - BOOST_LOG_TRIVIAL(error) << "GLVolumeCollection::export_toolpaths_to_obj: Couldn't open " << mat_filename.string().c_str() << " for writing"; - return; - } - - fprintf(fp, "# G-Code Toolpaths Materials\n"); - fprintf(fp, "# Generated by %s based on Slic3r\n", SLIC3R_BUILD_ID); - - unsigned int colors_count = 1; - for (const Color& color : colors) - { - fprintf(fp, "\nnewmtl material_%d\n", colors_count++); - fprintf(fp, "Ka 1 1 1\n"); - fprintf(fp, "Kd %f %f %f\n", color[0], color[1], color[2]); - fprintf(fp, "Ks 0 0 0\n"); - } - - fclose(fp); - - // save geometry file - fp = boost::nowide::fopen(filename, "w"); - if (fp == nullptr) { - BOOST_LOG_TRIVIAL(error) << "GLVolumeCollection::export_toolpaths_to_obj: Couldn't open " << filename << " for writing"; - return; - } - - fprintf(fp, "# G-Code Toolpaths\n"); - fprintf(fp, "# Generated by %s based on Slic3r\n", SLIC3R_BUILD_ID); - fprintf(fp, "\nmtllib ./%s\n", mat_filename.filename().string().c_str()); - - unsigned int vertices_count = 0; - unsigned int normals_count = 0; - unsigned int volumes_count = 0; - - for (const GLVolume* volume : this->volumes) - { - if (!can_export_to_obj(*volume)) - continue; - - std::vector<float> src_vertices_and_normals_interleaved; - std::vector<int> src_triangle_indices; - std::vector<int> src_quad_indices; - - if (!volume->indexed_vertex_array.vertices_and_normals_interleaved.empty()) - // data are in CPU memory - src_vertices_and_normals_interleaved = volume->indexed_vertex_array.vertices_and_normals_interleaved; - else if ((volume->indexed_vertex_array.vertices_and_normals_interleaved_VBO_id != 0) && (volume->indexed_vertex_array.vertices_and_normals_interleaved_size != 0)) - { - // data are in GPU memory - src_vertices_and_normals_interleaved = std::vector<float>(volume->indexed_vertex_array.vertices_and_normals_interleaved_size, 0.0f); - - glsafe(::glBindBuffer(GL_ARRAY_BUFFER, volume->indexed_vertex_array.vertices_and_normals_interleaved_VBO_id)); - glsafe(::glGetBufferSubData(GL_ARRAY_BUFFER, 0, src_vertices_and_normals_interleaved.size() * sizeof(float), src_vertices_and_normals_interleaved.data())); - glsafe(::glBindBuffer(GL_ARRAY_BUFFER, 0)); - } - else - continue; - - if (!volume->indexed_vertex_array.triangle_indices.empty()) - { - // data are in CPU memory - size_t size = std::min(volume->indexed_vertex_array.triangle_indices.size(), volume->tverts_range.second - volume->tverts_range.first); - if (size != 0) - { - std::vector<int>::const_iterator it_begin = volume->indexed_vertex_array.triangle_indices.begin() + volume->tverts_range.first; - std::vector<int>::const_iterator it_end = volume->indexed_vertex_array.triangle_indices.begin() + volume->tverts_range.first + size; - std::copy(it_begin, it_end, std::back_inserter(src_triangle_indices)); - } - } - else if ((volume->indexed_vertex_array.triangle_indices_VBO_id != 0) && (volume->indexed_vertex_array.triangle_indices_size != 0)) - { - // data are in GPU memory - size_t size = std::min(volume->indexed_vertex_array.triangle_indices_size, volume->tverts_range.second - volume->tverts_range.first); - if (size != 0) - { - src_triangle_indices = std::vector<int>(size, 0); - - glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, volume->indexed_vertex_array.triangle_indices_VBO_id)); - glsafe(::glGetBufferSubData(GL_ELEMENT_ARRAY_BUFFER, volume->tverts_range.first * sizeof(int), size * sizeof(int), src_triangle_indices.data())); - glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0)); - } - } - - if (!volume->indexed_vertex_array.quad_indices.empty()) - { - // data are in CPU memory - size_t size = std::min(volume->indexed_vertex_array.quad_indices.size(), volume->qverts_range.second - volume->qverts_range.first); - if (size != 0) - { - std::vector<int>::const_iterator it_begin = volume->indexed_vertex_array.quad_indices.begin() + volume->qverts_range.first; - std::vector<int>::const_iterator it_end = volume->indexed_vertex_array.quad_indices.begin() + volume->qverts_range.first + size; - std::copy(it_begin, it_end, std::back_inserter(src_quad_indices)); - } - } - else if ((volume->indexed_vertex_array.quad_indices_VBO_id != 0) && (volume->indexed_vertex_array.quad_indices_size != 0)) - { - // data are in GPU memory - size_t size = std::min(volume->indexed_vertex_array.quad_indices_size, volume->qverts_range.second - volume->qverts_range.first); - if (size != 0) - { - src_quad_indices = std::vector<int>(size, 0); - - glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, volume->indexed_vertex_array.quad_indices_VBO_id)); - glsafe(::glGetBufferSubData(GL_ELEMENT_ARRAY_BUFFER, volume->qverts_range.first * sizeof(int), size * sizeof(int), src_quad_indices.data())); - glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0)); - } - } - - if (src_triangle_indices.empty() && src_quad_indices.empty()) - continue; - - ++volumes_count; - - // reduce output size by keeping only used vertices and normals - - struct Vector - { - std::array<coord_t, 3> vector; - - explicit Vector(float* ptr) - { - vector[0] = scale_(*(ptr + 0)); - vector[1] = scale_(*(ptr + 1)); - vector[2] = scale_(*(ptr + 2)); - } - }; - typedef std::vector<Vector> Vectors; - - auto vector_less = [](const Vector& v1, const Vector& v2)->bool { - return v1.vector < v2.vector; - }; - - auto vector_equal = [](const Vector& v1, const Vector& v2)->bool { - return (v1.vector[0] == v2.vector[0]) && (v1.vector[1] == v2.vector[1]) && (v1.vector[2] == v2.vector[2]); - }; - - // copy used vertices and normals data - Vectors dst_normals; - Vectors dst_vertices; - - unsigned int src_triangle_indices_size = (unsigned int)src_triangle_indices.size(); - for (unsigned int i = 0; i < src_triangle_indices_size; ++i) - { - float* src_ptr = src_vertices_and_normals_interleaved.data() + src_triangle_indices[i] * 6; - dst_normals.emplace_back(src_ptr + 0); - dst_vertices.emplace_back(src_ptr + 3); - } - - unsigned int src_quad_indices_size = (unsigned int)src_quad_indices.size(); - for (unsigned int i = 0; i < src_quad_indices_size; ++i) - { - float* src_ptr = src_vertices_and_normals_interleaved.data() + src_quad_indices[i] * 6; - dst_normals.emplace_back(src_ptr + 0); - dst_vertices.emplace_back(src_ptr + 3); - } - - // sort vertices and normals - std::sort(dst_normals.begin(), dst_normals.end(), vector_less); - std::sort(dst_vertices.begin(), dst_vertices.end(), vector_less); - - // remove duplicated vertices and normals - dst_normals.erase(std::unique(dst_normals.begin(), dst_normals.end(), vector_equal), dst_normals.end()); - dst_vertices.erase(std::unique(dst_vertices.begin(), dst_vertices.end(), vector_equal), dst_vertices.end()); - - // reindex triangles and quads - struct IndicesPair - { - int vertex; - int normal; - IndicesPair(int vertex, int normal) : vertex(vertex), normal(normal) {} - }; - typedef std::vector<IndicesPair> Indices; - - unsigned int src_vertices_count = (unsigned int)src_vertices_and_normals_interleaved.size() / 6; - std::vector<int> src_dst_vertex_indices_map(src_vertices_count, -1); - std::vector<int> src_dst_normal_indices_map(src_vertices_count, -1); - - for (unsigned int i = 0; i < src_vertices_count; ++i) - { - float* src_ptr = src_vertices_and_normals_interleaved.data() + i * 6; - src_dst_normal_indices_map[i] = std::distance(dst_normals.begin(), std::lower_bound(dst_normals.begin(), dst_normals.end(), Vector(src_ptr + 0), vector_less)); - src_dst_vertex_indices_map[i] = std::distance(dst_vertices.begin(), std::lower_bound(dst_vertices.begin(), dst_vertices.end(), Vector(src_ptr + 3), vector_less)); - } - - Indices dst_triangle_indices; - if (src_triangle_indices_size > 0) - dst_triangle_indices.reserve(src_triangle_indices_size); - - for (unsigned int i = 0; i < src_triangle_indices_size; ++i) - { - int id = src_triangle_indices[i]; - dst_triangle_indices.emplace_back(src_dst_vertex_indices_map[id], src_dst_normal_indices_map[id]); - } - - Indices dst_quad_indices; - if (src_quad_indices_size > 0) - dst_quad_indices.reserve(src_quad_indices_size); - - for (unsigned int i = 0; i < src_quad_indices_size; ++i) - { - int id = src_quad_indices[i]; - dst_quad_indices.emplace_back(src_dst_vertex_indices_map[id], src_dst_normal_indices_map[id]); - } - - // save to file - fprintf(fp, "\n# vertices volume %d\n", volumes_count); - for (const Vector& v : dst_vertices) - { - fprintf(fp, "v %g %g %g\n", unscale<float>(v.vector[0]), unscale<float>(v.vector[1]), unscale<float>(v.vector[2])); - } - - fprintf(fp, "\n# normals volume %d\n", volumes_count); - for (const Vector& n : dst_normals) - { - fprintf(fp, "vn %g %g %g\n", unscale<float>(n.vector[0]), unscale<float>(n.vector[1]), unscale<float>(n.vector[2])); - } - - Color color; - ::memcpy((void*)color.data(), (const void*)volume->color, 4 * sizeof(float)); - fprintf(fp, "\n# material volume %d\n", volumes_count); - fprintf(fp, "usemtl material_%lld\n", (long long)(1 + std::distance(colors.begin(), colors.find(color)))); - - int base_vertex_id = vertices_count + 1; - int base_normal_id = normals_count + 1; - - if (!dst_triangle_indices.empty()) - { - fprintf(fp, "\n# triangular facets volume %d\n", volumes_count); - for (unsigned int i = 0; i < (unsigned int)dst_triangle_indices.size(); i += 3) - { - fprintf(fp, "f %d//%d %d//%d %d//%d\n", - base_vertex_id + dst_triangle_indices[i + 0].vertex, base_normal_id + dst_triangle_indices[i + 0].normal, - base_vertex_id + dst_triangle_indices[i + 1].vertex, base_normal_id + dst_triangle_indices[i + 1].normal, - base_vertex_id + dst_triangle_indices[i + 2].vertex, base_normal_id + dst_triangle_indices[i + 2].normal); - } - } - - if (!dst_quad_indices.empty()) - { - fprintf(fp, "\n# quadrangular facets volume %d\n", volumes_count); - for (unsigned int i = 0; i < (unsigned int)src_quad_indices.size(); i += 4) - { - fprintf(fp, "f %d//%d %d//%d %d//%d %d//%d\n", - base_vertex_id + dst_quad_indices[i + 0].vertex, base_normal_id + dst_quad_indices[i + 0].normal, - base_vertex_id + dst_quad_indices[i + 1].vertex, base_normal_id + dst_quad_indices[i + 1].normal, - base_vertex_id + dst_quad_indices[i + 2].vertex, base_normal_id + dst_quad_indices[i + 2].normal, - base_vertex_id + dst_quad_indices[i + 3].vertex, base_normal_id + dst_quad_indices[i + 3].normal); - } - } - - vertices_count += (unsigned int)dst_vertices.size(); - normals_count += (unsigned int)dst_normals.size(); - } - - fclose(fp); -} -#endif // !ENABLE_GCODE_VIEWER - // caller is responsible for supplying NO lines with zero length static void thick_lines_to_indexed_vertex_array( const Lines &lines, @@ -1923,287 +1639,4 @@ void _3DScene::point3_to_verts(const Vec3crd& point, double width, double height thick_point_to_verts(point, width, height, volume); } -#if !ENABLE_GCODE_VIEWER -GLModel::GLModel() - : m_filename("") -{ - m_volume.shader_outside_printer_detection_enabled = false; -} - -GLModel::~GLModel() -{ - reset(); -} - -void GLModel::set_color(const float* color, unsigned int size) -{ - ::memcpy((void*)m_volume.color, (const void*)color, (size_t)(std::min((unsigned int)4, size) * sizeof(float))); - m_volume.set_render_color(color, size); -} - -const Vec3d& GLModel::get_offset() const -{ - return m_volume.get_volume_offset(); -} - -void GLModel::set_offset(const Vec3d& offset) -{ - m_volume.set_volume_offset(offset); -} - -const Vec3d& GLModel::get_rotation() const -{ - return m_volume.get_volume_rotation(); -} - -void GLModel::set_rotation(const Vec3d& rotation) -{ - m_volume.set_volume_rotation(rotation); -} - -const Vec3d& GLModel::get_scale() const -{ - return m_volume.get_volume_scaling_factor(); -} - -void GLModel::set_scale(const Vec3d& scale) -{ - m_volume.set_volume_scaling_factor(scale); -} - -void GLModel::reset() -{ - m_volume.indexed_vertex_array.release_geometry(); - m_filename = ""; -} - -void GLModel::render() const -{ - GLShaderProgram* shader = GUI::wxGetApp().get_current_shader(); - if (shader == nullptr) - return; - - glsafe(::glEnable(GL_BLEND)); - glsafe(::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); - - glsafe(::glCullFace(GL_BACK)); - glsafe(::glEnableClientState(GL_VERTEX_ARRAY)); - glsafe(::glEnableClientState(GL_NORMAL_ARRAY)); - - shader->set_uniform("uniform_color", m_volume.render_color, 4); - m_volume.render(); - - glsafe(::glBindBuffer(GL_ARRAY_BUFFER, 0)); - glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0)); - - glsafe(::glDisableClientState(GL_VERTEX_ARRAY)); - glsafe(::glDisableClientState(GL_NORMAL_ARRAY)); - - glsafe(::glDisable(GL_BLEND)); -} - -bool GLArrow::on_init() -{ - Pointf3s vertices; - std::vector<Vec3i> triangles; - - // bottom face - vertices.emplace_back(0.5, 0.0, -0.1); - vertices.emplace_back(0.5, 2.0, -0.1); - vertices.emplace_back(1.0, 2.0, -0.1); - vertices.emplace_back(0.0, 3.0, -0.1); - vertices.emplace_back(-1.0, 2.0, -0.1); - vertices.emplace_back(-0.5, 2.0, -0.1); - vertices.emplace_back(-0.5, 0.0, -0.1); - - // top face - vertices.emplace_back(0.5, 0.0, 0.1); - vertices.emplace_back(0.5, 2.0, 0.1); - vertices.emplace_back(1.0, 2.0, 0.1); - vertices.emplace_back(0.0, 3.0, 0.1); - vertices.emplace_back(-1.0, 2.0, 0.1); - vertices.emplace_back(-0.5, 2.0, 0.1); - vertices.emplace_back(-0.5, 0.0, 0.1); - - // bottom face - triangles.emplace_back(0, 6, 1); - triangles.emplace_back(6, 5, 1); - triangles.emplace_back(5, 4, 3); - triangles.emplace_back(5, 3, 1); - triangles.emplace_back(1, 3, 2); - - // top face - triangles.emplace_back(7, 8, 13); - triangles.emplace_back(13, 8, 12); - triangles.emplace_back(12, 10, 11); - triangles.emplace_back(8, 10, 12); - triangles.emplace_back(8, 9, 10); - - // side face - triangles.emplace_back(0, 1, 8); - triangles.emplace_back(8, 7, 0); - triangles.emplace_back(1, 2, 9); - triangles.emplace_back(9, 8, 1); - triangles.emplace_back(2, 3, 10); - triangles.emplace_back(10, 9, 2); - triangles.emplace_back(3, 4, 11); - triangles.emplace_back(11, 10, 3); - triangles.emplace_back(4, 5, 12); - triangles.emplace_back(12, 11, 4); - triangles.emplace_back(5, 6, 13); - triangles.emplace_back(13, 12, 5); - triangles.emplace_back(6, 0, 7); - triangles.emplace_back(7, 13, 6); - - m_volume.indexed_vertex_array.load_mesh(TriangleMesh(vertices, triangles)); - m_volume.indexed_vertex_array.finalize_geometry(true); - return true; -} - -GLCurvedArrow::GLCurvedArrow(unsigned int resolution) - : GLModel() - , m_resolution(resolution) -{ - if (m_resolution == 0) - m_resolution = 1; -} - -bool GLCurvedArrow::on_init() -{ - Pointf3s vertices; - std::vector<Vec3i> triangles; - - double ext_radius = 2.5; - double int_radius = 1.5; - double step = 0.5 * (double)PI / (double)m_resolution; - - unsigned int vertices_per_level = 4 + 2 * m_resolution; - - // bottom face - vertices.emplace_back(0.0, 1.5, -0.1); - vertices.emplace_back(0.0, 1.0, -0.1); - vertices.emplace_back(-1.0, 2.0, -0.1); - vertices.emplace_back(0.0, 3.0, -0.1); - vertices.emplace_back(0.0, 2.5, -0.1); - - for (unsigned int i = 1; i <= m_resolution; ++i) - { - double angle = (double)i * step; - double x = ext_radius * ::sin(angle); - double y = ext_radius * ::cos(angle); - - vertices.emplace_back(x, y, -0.1); - } - - for (unsigned int i = 0; i < m_resolution; ++i) - { - double angle = (double)i * step; - double x = int_radius * ::cos(angle); - double y = int_radius * ::sin(angle); - - vertices.emplace_back(x, y, -0.1); - } - - // top face - vertices.emplace_back(0.0, 1.5, 0.1); - vertices.emplace_back(0.0, 1.0, 0.1); - vertices.emplace_back(-1.0, 2.0, 0.1); - vertices.emplace_back(0.0, 3.0, 0.1); - vertices.emplace_back(0.0, 2.5, 0.1); - - for (unsigned int i = 1; i <= m_resolution; ++i) - { - double angle = (double)i * step; - double x = ext_radius * ::sin(angle); - double y = ext_radius * ::cos(angle); - - vertices.emplace_back(x, y, 0.1); - } - - for (unsigned int i = 0; i < m_resolution; ++i) - { - double angle = (double)i * step; - double x = int_radius * ::cos(angle); - double y = int_radius * ::sin(angle); - - vertices.emplace_back(x, y, 0.1); - } - - // bottom face - triangles.emplace_back(0, 1, 2); - triangles.emplace_back(0, 2, 4); - triangles.emplace_back(4, 2, 3); - - int first_id = 4; - int last_id = (int)vertices_per_level; - triangles.emplace_back(last_id, 0, first_id); - triangles.emplace_back(last_id, first_id, first_id + 1); - for (unsigned int i = 1; i < m_resolution; ++i) - { - triangles.emplace_back(last_id - i, last_id - i + 1, first_id + i); - triangles.emplace_back(last_id - i, first_id + i, first_id + i + 1); - } - - // top face - last_id += 1; - triangles.emplace_back(last_id + 0, last_id + 2, last_id + 1); - triangles.emplace_back(last_id + 0, last_id + 4, last_id + 2); - triangles.emplace_back(last_id + 4, last_id + 3, last_id + 2); - - first_id = last_id + 4; - last_id = last_id + 4 + 2 * (int)m_resolution; - triangles.emplace_back(last_id, first_id, (int)vertices_per_level + 1); - triangles.emplace_back(last_id, first_id + 1, first_id); - for (unsigned int i = 1; i < m_resolution; ++i) - { - triangles.emplace_back(last_id - i, first_id + i, last_id - i + 1); - triangles.emplace_back(last_id - i, first_id + i + 1, first_id + i); - } - - // side face - for (unsigned int i = 0; i < 4 + 2 * (unsigned int)m_resolution; ++i) - { - triangles.emplace_back(i, vertices_per_level + 2 + i, i + 1); - triangles.emplace_back(i, vertices_per_level + 1 + i, vertices_per_level + 2 + i); - } - triangles.emplace_back(vertices_per_level, vertices_per_level + 1, 0); - triangles.emplace_back(vertices_per_level, 2 * vertices_per_level + 1, vertices_per_level + 1); - - m_volume.indexed_vertex_array.load_mesh(TriangleMesh(vertices, triangles)); - m_volume.indexed_vertex_array.finalize_geometry(true); - return true; -} - -bool GLBed::on_init_from_file(const std::string& filename) -{ - reset(); - - if (!boost::filesystem::exists(filename)) - return false; - - if (!boost::algorithm::iends_with(filename, ".stl")) - return false; - - Model model; - try - { - model = Model::read_from_file(filename); - } - catch (std::exception & /* ex */) - { - return false; - } - - m_filename = filename; - - m_volume.indexed_vertex_array.load_mesh(model.mesh()); - m_volume.indexed_vertex_array.finalize_geometry(true); - - float color[4] = { 0.235f, 0.235f, 0.235f, 1.0f }; - set_color(color, 4); - - return true; -} -#endif // !ENABLE_GCODE_VIEWER - } // namespace Slic3r diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index a6362dadc..930f63c8e 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -588,10 +588,6 @@ public: std::string log_memory_info() const; bool has_toolpaths_to_export() const; -#if !ENABLE_GCODE_VIEWER - // Export the geometry of the GLVolumes toolpaths of this collection into the file with the given path, in obj format - void export_toolpaths_to_obj(const char* filename) const; -#endif // !ENABLE_GCODE_VIEWER private: GLVolumeCollection(const GLVolumeCollection &other); @@ -600,68 +596,6 @@ private: GLVolumeWithIdAndZList volumes_to_render(const GLVolumePtrs& volumes, GLVolumeCollection::ERenderType type, const Transform3d& view_matrix, std::function<bool(const GLVolume&)> filter_func = nullptr); -#if !ENABLE_GCODE_VIEWER -class GLModel -{ -protected: - GLVolume m_volume; - std::string m_filename; - -public: - GLModel(); - virtual ~GLModel(); - - // init() / init_from_file() shall be called with the OpenGL context active! - bool init() { return on_init(); } - bool init_from_file(const std::string& filename) { return on_init_from_file(filename); } - - void center_around(const Vec3d& center) { m_volume.set_volume_offset(center - m_volume.bounding_box().center()); } - void set_color(const float* color, unsigned int size); - - const Vec3d& get_offset() const; - void set_offset(const Vec3d& offset); - const Vec3d& get_rotation() const; - void set_rotation(const Vec3d& rotation); - const Vec3d& get_scale() const; - void set_scale(const Vec3d& scale); - - const std::string& get_filename() const { return m_filename; } - const BoundingBoxf3& get_bounding_box() const { return m_volume.bounding_box(); } - const BoundingBoxf3& get_transformed_bounding_box() const { return m_volume.transformed_bounding_box(); } - - void reset(); - - void render() const; - -protected: - virtual bool on_init() { return false; } - virtual bool on_init_from_file(const std::string& filename) { return false; } -}; - -class GLArrow : public GLModel -{ -protected: - bool on_init() override; -}; - -class GLCurvedArrow : public GLModel -{ - unsigned int m_resolution; - -public: - explicit GLCurvedArrow(unsigned int resolution); - -protected: - bool on_init() override; -}; - -class GLBed : public GLModel -{ -protected: - bool on_init_from_file(const std::string& filename) override; -}; -#endif // !ENABLE_GCODE_VIEWER - struct _3DScene { static void thick_lines_to_verts(const Lines& lines, const std::vector<double>& widths, const std::vector<double>& heights, bool closed, double top_z, GLVolume& volume); diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index c6161bc24..6e3f8ecc8 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -37,17 +37,10 @@ void AboutDialogLogo::onRepaint(wxEvent &event) // CopyrightsDialog // ----------------------------------------- CopyrightsDialog::CopyrightsDialog() -#if ENABLE_GCODE_VIEWER : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, from_u8((boost::format("%1% - %2%") % (wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME) % _utf8(L("Portions copyright"))).str()), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) -#else - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, from_u8((boost::format("%1% - %2%") - % SLIC3R_APP_NAME - % _utf8(L("Portions copyright"))).str()), - wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) -#endif // ENABLE_GCODE_VIEWER { this->SetFont(wxGetApp().normal_font()); this->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); @@ -208,13 +201,8 @@ void CopyrightsDialog::onCloseDialog(wxEvent &) } AboutDialog::AboutDialog() -#if ENABLE_GCODE_VIEWER : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, from_u8((boost::format(_utf8(L("About %s"))) % (wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME)).str()), wxDefaultPosition, wxDefaultSize, /*wxCAPTION*/wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) -#else - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, from_u8((boost::format(_utf8(L("About %s"))) % SLIC3R_APP_NAME).str()), wxDefaultPosition, - wxDefaultSize, /*wxCAPTION*/wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) -#endif // ENABLE_GCODE_VIEWER { SetFont(wxGetApp().normal_font()); @@ -226,11 +214,7 @@ AboutDialog::AboutDialog() main_sizer->Add(hsizer, 0, wxEXPAND | wxALL, 20); // logo -#if ENABLE_GCODE_VIEWER m_logo_bitmap = ScalableBitmap(this, wxGetApp().is_editor() ? "PrusaSlicer_192px.png" : "PrusaSlicer-gcodeviewer_192px.png", 192); -#else - m_logo_bitmap = ScalableBitmap(this, "PrusaSlicer_192px.png", 192); -#endif // ENABLE_GCODE_VIEWER m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp()); hsizer->Add(m_logo, 1, wxALIGN_CENTER_VERTICAL); @@ -239,11 +223,7 @@ AboutDialog::AboutDialog() // title { -#if ENABLE_GCODE_VIEWER wxStaticText* title = new wxStaticText(this, wxID_ANY, wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME, wxDefaultPosition, wxDefaultSize); -#else - wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize); -#endif // ENABLE_GCODE_VIEWER wxFont title_font = GUI::wxGetApp().bold_font(); title_font.SetFamily(wxFONTFAMILY_ROMAN); title_font.SetPointSize(24); @@ -253,7 +233,7 @@ AboutDialog::AboutDialog() // version { - auto version_string = _L("Version")+ " " + std::string(SLIC3R_VERSION); + auto version_string = _L("Version") + " " + std::string(SLIC3R_VERSION); wxStaticText* version = new wxStaticText(this, wxID_ANY, version_string.c_str(), wxDefaultPosition, wxDefaultSize); wxFont version_font = GetFont(); #ifdef __WXMSW__ diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index df8878cd8..66d1f551f 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -141,11 +141,7 @@ void BackgroundSlicingProcess::process_fff() // Passing the timestamp evt.SetInt((int)(m_fff_print->step_state_with_timestamp(PrintStep::psSlicingFinished).timestamp)); wxQueueEvent(GUI::wxGetApp().mainframe->m_plater, evt.Clone()); -#if ENABLE_GCODE_VIEWER m_fff_print->export_gcode(m_temp_output_path, m_gcode_result, m_thumbnail_cb); -#else - m_fff_print->export_gcode(m_temp_output_path, m_gcode_preview_data, m_thumbnail_cb); -#endif // ENABLE_GCODE_VIEWER if (this->set_step_started(bspsGCodeFinalize)) { if (! m_export_path.empty()) { wxQueueEvent(GUI::wxGetApp().mainframe->m_plater, new wxCommandEvent(m_event_export_began_id)); @@ -433,25 +429,14 @@ Print::ApplyStatus BackgroundSlicingProcess::apply(const Model &model, const Dyn assert(m_print != nullptr); assert(config.opt_enum<PrinterTechnology>("printer_technology") == m_print->technology()); Print::ApplyStatus invalidated = m_print->apply(model, config); -#if ENABLE_GCODE_VIEWER if ((invalidated & PrintBase::APPLY_STATUS_INVALIDATED) != 0 && m_print->technology() == ptFFF && - !this->m_fff_print->is_step_done(psGCodeExport)) - { + !this->m_fff_print->is_step_done(psGCodeExport)) { // Some FFF status was invalidated, and the G-code was not exported yet. // Let the G-code preview UI know that the final G-code preview is not valid. // In addition, this early memory deallocation reduces memory footprint. if (m_gcode_result != nullptr) m_gcode_result->reset(); } -#else - if ((invalidated & PrintBase::APPLY_STATUS_INVALIDATED) != 0 && m_print->technology() == ptFFF && - m_gcode_preview_data != nullptr && ! this->m_fff_print->is_step_done(psGCodeExport)) { - // Some FFF status was invalidated, and the G-code was not exported yet. - // Let the G-code preview UI know that the final G-code preview is not valid. - // In addition, this early memory deallocation reduces memory footprint. - m_gcode_preview_data->reset(); - } -#endif // ENABLE_GCODE_VIEWER return invalidated; } diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.hpp b/src/slic3r/GUI/BackgroundSlicingProcess.hpp index e6314068e..d4fc3ddcc 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.hpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.hpp @@ -11,9 +11,7 @@ #include "libslic3r/GCode/ThumbnailData.hpp" #include "libslic3r/Format/SL1.hpp" #include "slic3r/Utils/PrintHost.hpp" -#if ENABLE_GCODE_VIEWER #include "libslic3r/GCode/GCodeProcessor.hpp" -#endif // ENABLE_GCODE_VIEWER namespace boost { namespace filesystem { class path; } } @@ -21,9 +19,6 @@ namespace boost { namespace filesystem { class path; } } namespace Slic3r { class DynamicPrintConfig; -#if !ENABLE_GCODE_VIEWER -class GCodePreviewData; -#endif // !ENABLE_GCODE_VIEWER class Model; class SLAPrint; @@ -88,11 +83,7 @@ public: void set_fff_print(Print *print) { m_fff_print = print; } void set_sla_print(SLAPrint *print) { m_sla_print = print; m_sla_print->set_printer(&m_sla_archive); } void set_thumbnail_cb(ThumbnailsGeneratorCallback cb) { m_thumbnail_cb = cb; } -#if ENABLE_GCODE_VIEWER void set_gcode_result(GCodeProcessor::Result* result) { m_gcode_result = result; } -#else - void set_gcode_preview_data(GCodePreviewData* gpd) { m_gcode_preview_data = gpd; } -#endif // ENABLE_GCODE_VIEWER // The following wxCommandEvent will be sent to the UI thread / Plater window, when the slicing is finished // and the background processing will transition into G-code export. @@ -198,13 +189,8 @@ private: // Non-owned pointers to Print instances. Print *m_fff_print = nullptr; SLAPrint *m_sla_print = nullptr; -#if ENABLE_GCODE_VIEWER // Data structure, to which the G-code export writes its annotations. GCodeProcessor::Result *m_gcode_result = nullptr; -#else - // Data structure, to which the G-code export writes its annotations. - GCodePreviewData *m_gcode_preview_data = nullptr; -#endif // ENABLE_GCODE_VIEWER // Callback function, used to write thumbnails into gcode. ThumbnailsGeneratorCallback m_thumbnail_cb = nullptr; SL1Archive m_sla_archive; diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index cc4c831ae..41609954e 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -3,9 +3,7 @@ #include "libslic3r/Utils.hpp" #include "../Utils/MacDarkMode.hpp" #include "GUI.hpp" -#if ENABLE_GCODE_VIEWER #include "GUI_Utils.hpp" -#endif // ENABLE_GCODE_VIEWER #include <boost/filesystem.hpp> @@ -357,17 +355,6 @@ wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsi return wxImage_to_wxBitmap_with_alpha(std::move(image), scale); } - -#if !ENABLE_GCODE_VIEWER -static inline int hex_digit_to_int(const char c) -{ - return - (c >= '0' && c <= '9') ? int(c - '0') : - (c >= 'A' && c <= 'F') ? int(c - 'A') + 10 : - (c >= 'a' && c <= 'f') ? int(c - 'a') + 10 : -1; -} -#endif // !ENABLE_GCODE_VIEWER - bool BitmapCache::parse_color(const std::string& scolor, unsigned char* rgb_out) { rgb_out[0] = rgb_out[1] = rgb_out[2] = 0; diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp index 0f0febe91..9fcc9267d 100644 --- a/src/slic3r/GUI/ConfigWizard_private.hpp +++ b/src/slic3r/GUI/ConfigWizard_private.hpp @@ -565,9 +565,7 @@ struct ConfigWizard::priv priv(ConfigWizard *q) : q(q) -#if ENABLE_GCODE_VIEWER , appconfig_new(AppConfig::EAppMode::Editor) -#endif // ENABLE_GCODE_VIEWER , filaments(T_FFF) , sla_materials(T_SLA) {} diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index cab19796b..f5c0d8f53 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -177,11 +177,7 @@ public: // load bitmap for logo BitmapCache bmp_cache; int logo_size = lround(width * 0.25); -#if ENABLE_GCODE_VIEWER wxBitmap logo_bmp = *bmp_cache.load_svg(wxGetApp().is_editor() ? "prusa_slicer_logo" : "add_gcode", logo_size, logo_size); -#else - wxBitmap logo_bmp = *bmp_cache.load_svg("prusa_slicer_logo", logo_size, logo_size); -#endif // ENABLE_GCODE_VIEWER wxCoord margin = int(m_scale * 20); @@ -229,11 +225,7 @@ private: void init(wxFont init_font) { // title -#if ENABLE_GCODE_VIEWER title = wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME; -#else - title = SLIC3R_APP_NAME; -#endif // ENABLE_GCODE_VIEWER // dynamically get the version to display version = _L("Version") + " " + std::string(SLIC3R_VERSION); @@ -601,13 +593,11 @@ void GUI_App::post_init() if (! this->initialized()) throw Slic3r::RuntimeError("Calling post_init() while not yet initialized"); -#if ENABLE_GCODE_VIEWER if (this->init_params->start_as_gcodeviewer) { if (! this->init_params->input_files.empty()) this->plater()->load_gcode(wxString::FromUTF8(this->init_params->input_files[0].c_str())); } else { -#endif // ENABLE_GCODE_VIEWER_AS #if 0 // Load the cummulative config over the currently active profiles. //FIXME if multiple configs are loaded, only the last one will have an effect. @@ -626,22 +616,14 @@ void GUI_App::post_init() this->plater()->load_files(this->init_params->input_files, true, true); if (! this->init_params->extra_config.empty()) this->mainframe->load_config(this->init_params->extra_config); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER } IMPLEMENT_APP(GUI_App) -#if ENABLE_GCODE_VIEWER GUI_App::GUI_App(EAppMode mode) -#else -GUI_App::GUI_App() -#endif // ENABLE_GCODE_VIEWER : wxApp() -#if ENABLE_GCODE_VIEWER , m_app_mode(mode) -#endif // ENABLE_GCODE_VIEWER , m_em_unit(10) , m_imgui(new ImGuiWrapper()) , m_wizard(nullptr) @@ -705,11 +687,7 @@ void GUI_App::init_app_config() } if (!app_config) -#if ENABLE_GCODE_VIEWER app_config = new AppConfig(is_editor() ? AppConfig::EAppMode::Editor : AppConfig::EAppMode::GCodeViewer); -#else - app_config = new AppConfig(); -#endif // ENABLE_GCODE_VIEWER // load settings m_app_conf_exists = app_config->exists(); @@ -717,7 +695,6 @@ void GUI_App::init_app_config() std::string error = app_config->load(); if (!error.empty()) { // Error while parsing config file. We'll customize the error message and rethrow to be displayed. -#if ENABLE_GCODE_VIEWER if (is_editor()) { throw Slic3r::RuntimeError( _u8L("Error parsing PrusaSlicer config file, it is probably corrupted. " @@ -725,14 +702,11 @@ void GUI_App::init_app_config() "\n\n" + app_config->config_path() + "\n\n" + error); } else { -#endif // ENABLE_GCODE_VIEWER throw Slic3r::RuntimeError( _u8L("Error parsing PrusaGCodeViewer config file, it is probably corrupted. " "Try to manually delete the file to recover from the error.") + "\n\n" + app_config->config_path() + "\n\n" + error); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER } } } @@ -775,9 +749,7 @@ bool GUI_App::on_init_inner() // Slic3r::debugf "wxWidgets version %s, Wx version %s\n", wxVERSION_STRING, wxVERSION; -#if ENABLE_GCODE_VIEWER if (is_editor()) { -#endif // ENABLE_GCODE_VIEWER std::string msg = Http::tls_global_init(); std::string ssl_cert_store = app_config->get("tls_accepted_cert_store_location"); bool ssl_accept = app_config->get("tls_cert_store_accepted") == "yes" && ssl_cert_store == Http::tls_system_cert_store(); @@ -795,9 +767,7 @@ bool GUI_App::on_init_inner() app_config->set("tls_accepted_cert_store_location", dlg.IsCheckBoxChecked() ? Http::tls_system_cert_store() : ""); } -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER app_config->set("version", SLIC3R_VERSION); app_config->save(); @@ -807,11 +777,7 @@ bool GUI_App::on_init_inner() SplashScreen* scrn = nullptr; if (app_config->get("show_splash_screen") == "1") { // make a bitmap with dark grey banner on the left side -#if ENABLE_GCODE_VIEWER wxBitmap bmp = SplashScreen::MakeBitmap(wxBitmap(from_u8(var(is_editor() ? "splashscreen.jpg" : "splashscreen-gcodepreview.jpg")), wxBITMAP_TYPE_JPEG)); -#else - wxBitmap bmp = SplashScreen::MakeBitmap(wxBitmap(from_u8(var("splashscreen.jpg")), wxBITMAP_TYPE_JPEG)); -#endif // ENABLE_GCODE_VIEWER // Detect position (display) to show the splash screen // Now this position is equal to the mainframe position @@ -837,9 +803,7 @@ bool GUI_App::on_init_inner() // supplied as argument to --datadir; in that case we should still run the wizard preset_bundle->setup_directories(); -#if ENABLE_GCODE_VIEWER if (is_editor()) { -#endif // ENABLE_GCODE_VIEWER #ifdef __WXMSW__ associate_3mf_files(); #endif // __WXMSW__ @@ -854,14 +818,12 @@ bool GUI_App::on_init_inner() } } }); -#if ENABLE_GCODE_VIEWER } else { #ifdef __WXMSW__ associate_gcode_files(); #endif // __WXMSW__ } -#endif // ENABLE_GCODE_VIEWER // initialize label colors and fonts init_label_colours(); @@ -889,18 +851,12 @@ bool GUI_App::on_init_inner() Slic3r::I18N::set_translate_callback(libslic3r_translate_callback); // application frame -#if ENABLE_GCODE_VIEWER if (scrn && is_editor()) -#else - if (scrn) -#endif // ENABLE_GCODE_VIEWER scrn->SetText(_L("Preparing settings tabs...")); mainframe = new MainFrame(); // hide settings tabs after first Layout -#if ENABLE_GCODE_VIEWER if (is_editor()) -#endif // ENABLE_GCODE_VIEWER mainframe->select_tab(size_t(0)); sidebar().obj_list()->init_objects(); // propagate model objects to object list @@ -941,9 +897,7 @@ bool GUI_App::on_init_inner() if (once) { once = false; -#if ENABLE_GCODE_VIEWER if (preset_updater != nullptr) { -#endif // ENABLE_GCODE_VIEWER check_updates(false); CallAfter([this] { @@ -951,9 +905,7 @@ bool GUI_App::on_init_inner() preset_updater->slic3r_update_notify(); preset_updater->sync(preset_bundle); }); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER #ifdef _WIN32 //sets window property to mainframe so other instances can indentify it @@ -962,7 +914,6 @@ bool GUI_App::on_init_inner() } }); -#if ENABLE_GCODE_VIEWER if (is_gcode_viewer()) { mainframe->update_layout(); if (plater_ != nullptr) @@ -970,7 +921,6 @@ bool GUI_App::on_init_inner() plater_->set_printer_technology(ptFFF); } else -#endif // ENABLE_GCODE_VIEWER load_current_presets(); mainframe->Show(true); @@ -1163,9 +1113,7 @@ void GUI_App::check_printer_presets() void GUI_App::recreate_GUI(const wxString& msg_name) { -#if ENABLE_GCODE_VIEWER m_is_recreating_gui = true; -#endif // ENABLE_GCODE_VIEWER mainframe->shutdown(); @@ -1175,9 +1123,7 @@ void GUI_App::recreate_GUI(const wxString& msg_name) MainFrame *old_main_frame = mainframe; mainframe = new MainFrame(); -#if ENABLE_GCODE_VIEWER if (is_editor()) -#endif // ENABLE_GCODE_VIEWER // hide settings tabs after first Layout mainframe->select_tab(size_t(0)); // Propagate model objects to object list. @@ -1210,9 +1156,7 @@ void GUI_App::recreate_GUI(const wxString& msg_name) // config_wizard_startup(true); // }); -#if ENABLE_GCODE_VIEWER m_is_recreating_gui = false; -#endif // ENABLE_GCODE_VIEWER } void GUI_App::system_info() @@ -1297,7 +1241,6 @@ void GUI_App::import_model(wxWindow *parent, wxArrayString& input_files) const dialog.GetPaths(input_files); } -#if ENABLE_GCODE_VIEWER void GUI_App::load_gcode(wxWindow* parent, wxString& input_file) const { input_file.Clear(); @@ -1309,7 +1252,6 @@ void GUI_App::load_gcode(wxWindow* parent, wxString& input_file) const if (dialog.ShowModal() == wxID_OK) input_file = dialog.GetPath(); } -#endif // ENABLE_GCODE_VIEWER bool GUI_App::switch_language() { @@ -1545,17 +1487,13 @@ void GUI_App::add_config_menu(wxMenuBar *menu) const auto config_wizard_name = _(ConfigWizard::name(true)); const auto config_wizard_tooltip = from_u8((boost::format(_utf8(L("Run %s"))) % config_wizard_name).str()); // Cmd+, is standard on OS X - what about other operating systems? -#if ENABLE_GCODE_VIEWER if (is_editor()) { -#endif // ENABLE_GCODE_VIEWER local_menu->Append(config_id_base + ConfigMenuWizard, config_wizard_name + dots, config_wizard_tooltip); local_menu->Append(config_id_base + ConfigMenuSnapshots, _L("&Configuration Snapshots") + dots, _L("Inspect / activate configuration snapshots")); local_menu->Append(config_id_base + ConfigMenuTakeSnapshot, _L("Take Configuration &Snapshot"), _L("Capture a configuration snapshot")); local_menu->Append(config_id_base + ConfigMenuUpdate, _L("Check for updates"), _L("Check for configuration updates")); local_menu->AppendSeparator(); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER local_menu->Append(config_id_base + ConfigMenuPreferences, _L("&Preferences") + dots + #ifdef __APPLE__ "\tCtrl+,", @@ -1563,16 +1501,10 @@ void GUI_App::add_config_menu(wxMenuBar *menu) "\tCtrl+P", #endif _L("Application preferences")); -#if ENABLE_GCODE_VIEWER wxMenu* mode_menu = nullptr; if (is_editor()) { -#endif // ENABLE_GCODE_VIEWER local_menu->AppendSeparator(); -#if ENABLE_GCODE_VIEWER mode_menu = new wxMenu(); -#else - auto mode_menu = new wxMenu(); -#endif // ENABLE_GCODE_VIEWER mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeSimple, _L("Simple"), _L("Simple View Mode")); // mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeAdvanced, _L("Advanced"), _L("Advanced View Mode")); mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeAdvanced, _CTX(L_CONTEXT("Advanced", "Mode"), "Mode"), _L("Advanced View Mode")); @@ -1582,21 +1514,15 @@ void GUI_App::add_config_menu(wxMenuBar *menu) Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { if (get_mode() == comExpert) evt.Check(true); }, config_id_base + ConfigMenuModeExpert); local_menu->AppendSubMenu(mode_menu, _L("Mode"), wxString::Format(_L("%s View Mode"), SLIC3R_APP_NAME)); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER local_menu->AppendSeparator(); local_menu->Append(config_id_base + ConfigMenuLanguage, _L("&Language")); -#if ENABLE_GCODE_VIEWER if (is_editor()) { -#endif // ENABLE_GCODE_VIEWER local_menu->AppendSeparator(); local_menu->Append(config_id_base + ConfigMenuFlashFirmware, _L("Flash printer &firmware"), _L("Upload a firmware image into an Arduino based printer")); // TODO: for when we're able to flash dictionaries // local_menu->Append(config_id_base + FirmwareMenuDict, _L("Flash language file"), _L("Upload a language dictionary file into a Prusa printer")); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER local_menu->Bind(wxEVT_MENU, [this, config_id_base](wxEvent &event) { switch (event.GetId() - config_id_base) { @@ -1650,10 +1576,8 @@ void GUI_App::add_config_menu(wxMenuBar *menu) PreferencesDialog dlg(mainframe); dlg.ShowModal(); app_layout_changed = dlg.settings_layout_changed(); -#if ENABLE_GCODE_VIEWER if (dlg.seq_top_layer_only_changed()) this->plater_->refresh_print(); -#endif // ENABLE_GCODE_VIEWER } if (app_layout_changed) { // hide full main_sizer for mainFrame @@ -1672,19 +1596,13 @@ void GUI_App::add_config_menu(wxMenuBar *menu) // the dialog needs to be destroyed before the call to switch_language() // or sometimes the application crashes into wxDialogBase() destructor // so we put it into an inner scope -#if ENABLE_GCODE_VIEWER wxString title = is_editor() ? wxString(SLIC3R_APP_NAME) : wxString(GCODEVIEWER_APP_NAME); title += " - " + _L("Language selection"); -#endif // ENABLE_GCODE_VIEWER wxMessageDialog dialog(nullptr, _L("Switching the language will trigger application restart.\n" "You will lose content of the plater.") + "\n\n" + _L("Do you want to proceed?"), -#if ENABLE_GCODE_VIEWER title, -#else - wxString(SLIC3R_APP_NAME) + " - " + _L("Language selection"), -#endif // ENABLE_GCODE_VIEWER wxICON_QUESTION | wxOK | wxCANCEL); if (dialog.ShowModal() == wxID_CANCEL) return; @@ -1703,16 +1621,12 @@ void GUI_App::add_config_menu(wxMenuBar *menu) using std::placeholders::_1; -#if ENABLE_GCODE_VIEWER if (mode_menu != nullptr) { -#endif // ENABLE_GCODE_VIEWER auto modfn = [this](int mode, wxCommandEvent&) { if (get_mode() != mode) save_mode(mode); }; mode_menu->Bind(wxEVT_MENU, std::bind(modfn, comSimple, _1), config_id_base + ConfigMenuModeSimple); mode_menu->Bind(wxEVT_MENU, std::bind(modfn, comAdvanced, _1), config_id_base + ConfigMenuModeAdvanced); mode_menu->Bind(wxEVT_MENU, std::bind(modfn, comExpert, _1), config_id_base + ConfigMenuModeExpert); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER menu->Append(local_menu, _L("&Configuration")); } diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index f00cf02df..fec73b724 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -97,7 +97,6 @@ static wxString dots("…", wxConvUTF8); class GUI_App : public wxApp { -#if ENABLE_GCODE_VIEWER public: enum class EAppMode : unsigned char { @@ -106,14 +105,10 @@ public: }; private: -#endif // ENABLE_GCODE_VIEWER - bool m_initialized { false }; bool m_app_conf_exists{ false }; -#if ENABLE_GCODE_VIEWER EAppMode m_app_mode{ EAppMode::Editor }; bool m_is_recreating_gui{ false }; -#endif // ENABLE_GCODE_VIEWER wxColour m_color_label_modified; wxColour m_color_label_sys; @@ -149,19 +144,13 @@ public: bool OnInit() override; bool initialized() const { return m_initialized; } -#if ENABLE_GCODE_VIEWER explicit GUI_App(EAppMode mode = EAppMode::Editor); -#else - GUI_App(); -#endif // ENABLE_GCODE_VIEWER ~GUI_App() override; -#if ENABLE_GCODE_VIEWER EAppMode get_app_mode() const { return m_app_mode; } bool is_editor() const { return m_app_mode == EAppMode::Editor; } bool is_gcode_viewer() const { return m_app_mode == EAppMode::GCodeViewer; } bool is_recreating_gui() const { return m_is_recreating_gui; } -#endif // ENABLE_GCODE_VIEWER // To be called after the GUI is fully built up. // Process command line parameters cached in this->init_params, @@ -199,9 +188,7 @@ public: void keyboard_shortcuts(); void load_project(wxWindow *parent, wxString& input_file) const; void import_model(wxWindow *parent, wxArrayString& input_files) const; -#if ENABLE_GCODE_VIEWER void load_gcode(wxWindow* parent, wxString& input_file) const; -#endif // ENABLE_GCODE_VIEWER static bool catch_error(std::function<void()> cb, const std::string& err); diff --git a/src/slic3r/GUI/GUI_Init.cpp b/src/slic3r/GUI/GUI_Init.cpp index d1c17bc89..70536c6ba 100644 --- a/src/slic3r/GUI/GUI_Init.cpp +++ b/src/slic3r/GUI/GUI_Init.cpp @@ -22,7 +22,6 @@ namespace GUI { int GUI_Run(GUI_InitParams ¶ms) { try { -#if ENABLE_GCODE_VIEWER GUI::GUI_App* gui = new GUI::GUI_App(params.start_as_gcodeviewer ? GUI::GUI_App::EAppMode::GCodeViewer : GUI::GUI_App::EAppMode::Editor); if (gui->get_app_mode() != GUI::GUI_App::EAppMode::GCodeViewer) { // G-code viewer is currently not performing instance check, a new G-code viewer is started every time. @@ -32,29 +31,20 @@ int GUI_Run(GUI_InitParams ¶ms) return -1; } } -#else - GUI::GUI_App *gui = new GUI::GUI_App(); -#endif // ENABLE_GCODE_VIEWER // gui->autosave = m_config.opt_string("autosave"); GUI::GUI_App::SetInstance(gui); gui->init_params = ¶ms; /* -#if ENABLE_GCODE_VIEWER gui->CallAfter([gui, this, &load_configs, params.start_as_gcodeviewer] { -#else - gui->CallAfter([gui, this, &load_configs] { -#endif // ENABLE_GCODE_VIEWER if (!gui->initialized()) { return; } -#if ENABLE_GCODE_VIEWER if (params.start_as_gcodeviewer) { if (!m_input_files.empty()) gui->plater()->load_gcode(wxString::FromUTF8(m_input_files[0].c_str())); } else { -#endif // ENABLE_GCODE_VIEWER_AS #if 0 // Load the cummulative config over the currently active profiles. //FIXME if multiple configs are loaded, only the last one will have an effect. @@ -73,9 +63,7 @@ int GUI_Run(GUI_InitParams ¶ms) gui->plater()->load_files(m_input_files, true, true); if (!m_extra_config.empty()) gui->mainframe->load_config(m_extra_config); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER }); */ int result = wxEntry(params.argc, params.argv); From a9f6e6da9dd59ab76e837fbe2bebc417bd827073 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Wed, 18 Nov 2020 12:08:09 +0100 Subject: [PATCH 038/138] Changed layout of the "Machine limits" settings tab --- src/slic3r/GUI/OG_CustomCtrl.cpp | 14 +++++++++----- src/slic3r/GUI/OptionsGroup.cpp | 31 ++++++++++++++++++++++--------- src/slic3r/GUI/OptionsGroup.hpp | 9 +++------ src/slic3r/GUI/Tab.cpp | 6 ++---- 4 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index 7feaacedc..30c7e76e4 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -90,7 +90,7 @@ void OG_CustomCtrl::init_ctrl_lines() height = m_bmp_blinking_sz.GetHeight() + m_v_gap; ctrl_lines.emplace_back(CtrlLine(height, this, line, true)); } - else if (opt_group->label_width != 0 && !line.label.IsEmpty()) + else if (opt_group->label_width != 0 && (!line.label.IsEmpty() || option_set.front().opt.gui_type == "legend") ) { wxSize label_sz = GetTextExtent(line.label); height = label_sz.y * (label_sz.GetWidth() > int(opt_group->label_width * m_em_unit) ? 2 : 1) + m_v_gap; @@ -135,7 +135,7 @@ wxPoint OG_CustomCtrl::get_pos(const Line& line, Field* field_in/* = nullptr*/) } wxString label = line.label; - if (opt_group->label_width != 0 && !label.IsEmpty()) + if (opt_group->label_width != 0) h_pos += opt_group->label_width * m_em_unit + m_h_gap; int blinking_button_width = m_bmp_blinking_sz.GetWidth() + m_h_gap; @@ -177,10 +177,13 @@ wxPoint OG_CustomCtrl::get_pos(const Line& line, Field* field_in/* = nullptr*/) GetTextExtent(label, &label_w, &label_h, 0, 0, &m_font); h_pos += label_w + 1 + m_h_gap; } - h_pos += 3 * blinking_button_width; + h_pos += (opt.opt.gui_type == "legend" ? 1 : 3) * blinking_button_width; if (field == field_in) - break; + break; + if (opt.opt.gui_type == "legend") + h_pos += 2 * blinking_button_width; + h_pos += field->getWindow()->GetSize().x; if (option_set.size() == 1 && option_set.front().opt.full_width) @@ -556,7 +559,8 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_mode_bmp(wxDC& dc, wxCoord v_pos) wxBitmap bmp = create_scaled_bitmap(bmp_name, ctrl, wxOSX ? 10 : 12); wxCoord y_draw = v_pos + lround((height - get_bitmap_size(bmp).GetHeight()) / 2); - dc.DrawBitmap(bmp, 0, y_draw); + if (og_line.get_options().front().opt.gui_type != "legend") + dc.DrawBitmap(bmp, 0, y_draw); return get_bitmap_size(bmp).GetWidth() + ctrl->m_h_gap; } diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index b1065da66..dee250fa7 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -106,11 +106,20 @@ OptionsGroup::OptionsGroup( wxWindow* _parent, const wxString& title, bool is_tab_opt /* = false */, column_t extra_clmn /* = nullptr */) : m_parent(_parent), title(title), - m_show_modified_btns(is_tab_opt), + m_use_custom_ctrl(is_tab_opt), staticbox(title!=""), extra_column(extra_clmn) { } +bool OptionsGroup::is_legend_line() +{ + if (m_lines.size() == 1) { + const std::vector<Option>& option_set = m_lines.front().get_options(); + return !option_set.empty() && option_set.front().opt.gui_type == "legend"; + } + return false; +} + void OptionsGroup::show_field(const t_config_option_key& opt_key, bool show/* = true*/) { Field* field = get_field(opt_key); @@ -196,16 +205,20 @@ void OptionsGroup::activate_line(Line& line) } } - if (!custom_ctrl && m_show_modified_btns) { - custom_ctrl = new OG_CustomCtrl((wxWindow*)this->stb, this); - sizer->Add(custom_ctrl, 0, wxEXPAND | wxALL, wxOSX || !staticbox ? 0 : 5); - } - auto option_set = line.get_options(); + bool is_legend_line = option_set.front().opt.gui_type == "legend"; + + if (!custom_ctrl && m_use_custom_ctrl) { + custom_ctrl = new OG_CustomCtrl(is_legend_line ? this->parent() : (wxWindow*)this->stb, this); + if (is_legend_line) + sizer->Add(custom_ctrl, 0, wxEXPAND | wxLEFT, wxOSX ? 0 : 10); + else + sizer->Add(custom_ctrl, 0, wxEXPAND | wxALL, wxOSX || !staticbox ? 0 : 5); + } // Set sidetext width for a better alignment of options in line // "m_show_modified_btns==true" means that options groups are in tabs - if (option_set.size() > 1 && m_show_modified_btns) { + if (option_set.size() > 1 && m_use_custom_ctrl) { sidetext_width = Field::def_width_thinner(); } @@ -231,7 +244,7 @@ void OptionsGroup::activate_line(Line& line) m_use_custom_ctrl_as_parent = true; // if we have an extra column, build it - if (extra_column && !m_show_modified_btns) + if (extra_column) { m_extra_column_item_ptrs.push_back(extra_column(this->ctrl_parent(), line)); grid_sizer->Add(m_extra_column_item_ptrs.back(), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 3); @@ -511,7 +524,7 @@ Option ConfigOptionsGroup::get_option(const std::string& opt_key, int opt_index std::pair<std::string, int> pair(opt_key, opt_index); m_opt_map.emplace(opt_id, pair); - if (m_show_modified_btns) // fill group and category values just fro options from Settings Tab + if (m_use_custom_ctrl) // fill group and category values just for options from Settings Tab wxGetApp().sidebar().get_searcher().add_key(opt_id, title, this->config_category()); return Option(*m_config->def()->get(opt_key), opt_id); diff --git a/src/slic3r/GUI/OptionsGroup.hpp b/src/slic3r/GUI/OptionsGroup.hpp index 53d3b13de..5a18332cd 100644 --- a/src/slic3r/GUI/OptionsGroup.hpp +++ b/src/slic3r/GUI/OptionsGroup.hpp @@ -129,7 +129,7 @@ public: #endif /* __WXGTK__ */ wxWindow* ctrl_parent() const { - return this->stb ? (this->custom_ctrl && m_use_custom_ctrl_as_parent ? (wxWindow*)this->custom_ctrl : (wxWindow*)this->stb) : this->parent(); + return this->custom_ctrl && m_use_custom_ctrl_as_parent ? (wxWindow*)this->custom_ctrl : (this->stb ? (wxWindow*)this->stb : this->parent()); } void append_line(const Line& line); @@ -173,10 +173,6 @@ public: inline void disable() { for (auto& field : m_fields) field.second->disable(); } void set_grid_vgap(int gap) { m_grid_sizer->SetVGap(gap); } - void set_show_modified_btns_val(bool show) { - m_show_modified_btns = show; - } - void clear_fields_except_of(const std::vector<std::string> left_fields); void hide_labels() { label_width = 0; } @@ -187,6 +183,7 @@ public: wxGridSizer* get_grid_sizer() { return m_grid_sizer; } const std::vector<Line>& get_lines() { return m_lines; } + bool is_legend_line(); protected: std::map<t_config_option_key, Option> m_options; @@ -203,7 +200,7 @@ protected: bool m_disabled {false}; wxGridSizer* m_grid_sizer {nullptr}; // "true" if option is created in preset tabs - bool m_show_modified_btns{ false }; + bool m_use_custom_ctrl{ false }; // "true" if control should be created on custom_ctrl bool m_use_custom_ctrl_as_parent { false }; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 45ee92c74..78beac3f0 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2372,13 +2372,11 @@ PageShp TabPrinter::build_kinematics_page() if (m_use_silent_mode) { // Legend for OptionsGroups auto optgroup = page->new_optgroup(""); - optgroup->set_show_modified_btns_val(false); - optgroup->label_width = 23;// 230; auto line = Line{ "", "" }; ConfigOptionDef def; def.type = coString; - def.width = 15; + def.width = Field::def_width(); def.gui_type = "legend"; def.mode = comAdvanced; def.tooltip = L("Values in this column are for Normal mode"); @@ -3783,7 +3781,7 @@ void Page::activate(ConfigOptionMode mode, std::function<void()> throw_if_cancel for (auto group : m_optgroups) { if (!group->activate(throw_if_canceled)) continue; - m_vsizer->Add(group->sizer, 0, wxEXPAND | wxALL, 10); + m_vsizer->Add(group->sizer, 0, wxEXPAND | (group->is_legend_line() ? (wxLEFT|wxTOP) : wxALL), 10); group->update_visibility(mode); group->reload_config(); throw_if_canceled(); From 5be9d42519e06990f2b18743500a7beb1fada36e Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Wed, 18 Nov 2020 12:30:00 +0100 Subject: [PATCH 039/138] Localization, new POT --- resources/localization/PrusaSlicer.pot | 914 +++++++++++++------------ src/slic3r/GUI/GUI_App.cpp | 4 +- src/slic3r/GUI/Jobs/SLAImportJob.cpp | 4 +- src/slic3r/GUI/MainFrame.cpp | 6 +- src/slic3r/GUI/Plater.cpp | 4 +- 5 files changed, 476 insertions(+), 456 deletions(-) diff --git a/resources/localization/PrusaSlicer.pot b/resources/localization/PrusaSlicer.pot index aad74f6ce..6b4ec495e 100644 --- a/resources/localization/PrusaSlicer.pot +++ b/resources/localization/PrusaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-12 21:27+0100\n" +"POT-Creation-Date: 2020-11-18 12:28+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -18,48 +18,47 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 -#: src/slic3r/GUI/AboutDialog.cpp:317 +#: src/slic3r/GUI/AboutDialog.cpp:42 src/slic3r/GUI/AboutDialog.cpp:297 msgid "Portions copyright" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 +#: src/slic3r/GUI/AboutDialog.cpp:132 src/slic3r/GUI/AboutDialog.cpp:261 msgid "Copyright" msgstr "" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:134 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 +#: src/slic3r/GUI/AboutDialog.cpp:204 #, possible-c-format msgid "About %s" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/AboutDialog.cpp:236 src/slic3r/GUI/GUI_App.cpp:231 #: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 +#: src/slic3r/GUI/AboutDialog.cpp:263 src/slic3r/GUI/GUI_App.cpp:236 msgid "is licensed under the" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 +#: src/slic3r/GUI/AboutDialog.cpp:264 src/slic3r/GUI/GUI_App.cpp:236 msgid "GNU Affero General Public License, version 3" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:285 +#: src/slic3r/GUI/AboutDialog.cpp:265 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:286 +#: src/slic3r/GUI/AboutDialog.cpp:266 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -74,71 +73,71 @@ msgid "" "and we would be glad if you reported it." msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:160 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 msgid "" "Copying of the temporary G-code to the output G-code failed. Maybe the SD " "card is write locked?\n" "Error message: %1%" msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:159 msgid "" "Copying of the temporary G-code to the output G-code failed. There might be " "problem with target device, please try exporting again or using different " "device. The corrupted output G-code is at %1%.tmp." msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:166 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:162 msgid "" "Renaming of the G-code after copying to the selected destination folder has " "failed. Current path is %1%.tmp. Please try exporting again." msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:169 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "" "Copying of the temporary G-code has finished but the original code at %1% " "couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:172 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:168 msgid "" "Copying of the temporary G-code has finished but the exported code couldn't " "be opened during copy check. The output G-code is at %1%.tmp." msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:175 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:171 msgid "Unknown error occured during exporting G-code." msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:180 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:540 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:176 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:525 msgid "Running post-processing scripts" msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:182 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 msgid "G-code file exported to %1%" msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:187 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:236 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:183 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:232 msgid "Slicing complete" msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:231 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:227 msgid "Masked SLA file exported to %1%" msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:543 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:528 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:566 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:551 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:93 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:161 -#: src/slic3r/GUI/Tab.cpp:2506 +#: src/slic3r/GUI/Tab.cpp:2504 msgid "Size" msgstr "" @@ -163,8 +162,8 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:240 #: src/slic3r/GUI/ConfigWizard.cpp:1346 src/slic3r/GUI/ConfigWizard.cpp:1360 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GCodeViewer.cpp:2219 src/slic3r/GUI/GCodeViewer.cpp:2225 -#: src/slic3r/GUI/GCodeViewer.cpp:2233 src/slic3r/GUI/GUI_ObjectLayers.cpp:145 +#: src/slic3r/GUI/GCodeViewer.cpp:2275 src/slic3r/GUI/GCodeViewer.cpp:2281 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 src/slic3r/GUI/GUI_ObjectLayers.cpp:145 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 @@ -249,7 +248,7 @@ msgid "Load..." msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 -#: src/slic3r/GUI/Tab.cpp:3449 +#: src/slic3r/GUI/Tab.cpp:3447 msgid "Remove" msgstr "" @@ -565,7 +564,7 @@ msgid "Standard" msgstr "" #: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 -#: src/slic3r/GUI/Tab.cpp:3530 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 +#: src/slic3r/GUI/Tab.cpp:3528 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "" @@ -700,8 +699,8 @@ msgid "" msgstr "" #: src/slic3r/GUI/ConfigWizard.cpp:1167 src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3045 -#: src/slic3r/GUI/Plater.cpp:3878 src/slic3r/GUI/Plater.cpp:3907 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3120 +#: src/slic3r/GUI/Plater.cpp:3953 src/slic3r/GUI/Plater.cpp:3982 msgid "Reload from disk" msgstr "" @@ -1080,7 +1079,7 @@ msgstr "" #: src/slic3r/GUI/DoubleSlider.cpp:1274 src/slic3r/GUI/DoubleSlider.cpp:1308 #: src/slic3r/GUI/GLCanvas3D.cpp:980 src/slic3r/GUI/GUI_ObjectList.cpp:1832 -#: src/slic3r/GUI/Tab.cpp:2502 +#: src/slic3r/GUI/Tab.cpp:2500 #, possible-c-format msgid "Extruder %d" msgstr "" @@ -1274,7 +1273,7 @@ msgstr "" msgid "parameter name" msgstr "" -#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:761 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:774 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "" @@ -1285,11 +1284,11 @@ msgid "%s doesn't support percentage" msgstr "" #: src/slic3r/GUI/Field.cpp:240 src/slic3r/GUI/Field.cpp:271 -#: src/slic3r/GUI/Field.cpp:1412 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 +#: src/slic3r/GUI/Field.cpp:1417 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." msgstr "" -#: src/slic3r/GUI/Field.cpp:249 src/slic3r/GUI/Field.cpp:1424 +#: src/slic3r/GUI/Field.cpp:249 src/slic3r/GUI/Field.cpp:1429 msgid "Input value is out of range" msgstr "" @@ -1439,210 +1438,210 @@ msgstr "" msgid "Generating toolpaths" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:1352 +#: src/slic3r/GUI/GCodeViewer.cpp:1356 msgid "Generating vertex buffer" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:1426 +#: src/slic3r/GUI/GCodeViewer.cpp:1437 msgid "Generating index buffers" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2107 +#: src/slic3r/GUI/GCodeViewer.cpp:2163 msgid "Click to hide" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2107 +#: src/slic3r/GUI/GCodeViewer.cpp:2163 msgid "Click to show" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2219 +#: src/slic3r/GUI/GCodeViewer.cpp:2275 msgid "up to" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2225 +#: src/slic3r/GUI/GCodeViewer.cpp:2281 msgid "above" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 msgid "from" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 msgid "to" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2261 src/slic3r/GUI/GCodeViewer.cpp:2269 +#: src/slic3r/GUI/GCodeViewer.cpp:2317 src/slic3r/GUI/GCodeViewer.cpp:2325 #: src/slic3r/GUI/GUI_Preview.cpp:270 src/slic3r/GUI/GUI_Preview.cpp:788 msgid "Feature type" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2261 src/slic3r/GUI/GCodeViewer.cpp:2269 +#: src/slic3r/GUI/GCodeViewer.cpp:2317 src/slic3r/GUI/GCodeViewer.cpp:2325 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2269 +#: src/slic3r/GUI/GCodeViewer.cpp:2325 msgid "Percentage" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2272 +#: src/slic3r/GUI/GCodeViewer.cpp:2328 msgid "Height (mm)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2273 +#: src/slic3r/GUI/GCodeViewer.cpp:2329 msgid "Width (mm)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2274 +#: src/slic3r/GUI/GCodeViewer.cpp:2330 msgid "Speed (mm/s)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2275 +#: src/slic3r/GUI/GCodeViewer.cpp:2331 msgid "Fan Speed (%)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2276 +#: src/slic3r/GUI/GCodeViewer.cpp:2332 msgid "Volumetric flow rate (mm³/s)" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GUI_Preview.cpp:276 +#: src/slic3r/GUI/GCodeViewer.cpp:2333 src/slic3r/GUI/GUI_Preview.cpp:276 #: src/slic3r/GUI/GUI_Preview.cpp:447 src/slic3r/GUI/GUI_Preview.cpp:694 #: src/slic3r/GUI/GUI_Preview.cpp:787 src/slic3r/GUI/GUI_Preview.cpp:1266 msgid "Tool" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2278 src/slic3r/GUI/GUI_Preview.cpp:277 +#: src/slic3r/GUI/GCodeViewer.cpp:2334 src/slic3r/GUI/GUI_Preview.cpp:277 #: src/slic3r/GUI/GUI_Preview.cpp:785 msgid "Color Print" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2314 src/slic3r/GUI/GCodeViewer.cpp:2349 -#: src/slic3r/GUI/GCodeViewer.cpp:2354 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/GCodeViewer.cpp:2370 src/slic3r/GUI/GCodeViewer.cpp:2405 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GUI_ObjectList.cpp:296 #: src/slic3r/GUI/wxExtensions.cpp:515 src/libslic3r/PrintConfig.cpp:530 msgid "Extruder" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2325 +#: src/slic3r/GUI/GCodeViewer.cpp:2381 msgid "Default color" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2349 +#: src/slic3r/GUI/GCodeViewer.cpp:2405 msgid "default color" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2444 src/slic3r/GUI/GCodeViewer.cpp:2490 +#: src/slic3r/GUI/GCodeViewer.cpp:2500 src/slic3r/GUI/GCodeViewer.cpp:2546 msgid "Color change" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2463 src/slic3r/GUI/GCodeViewer.cpp:2488 +#: src/slic3r/GUI/GCodeViewer.cpp:2519 src/slic3r/GUI/GCodeViewer.cpp:2544 msgid "Print" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GCodeViewer.cpp:2506 +#: src/slic3r/GUI/GCodeViewer.cpp:2545 src/slic3r/GUI/GCodeViewer.cpp:2562 #: src/slic3r/GUI/Plater.cpp:1201 msgid "Pause" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/GCodeViewer.cpp:2497 +#: src/slic3r/GUI/GCodeViewer.cpp:2550 src/slic3r/GUI/GCodeViewer.cpp:2553 msgid "Event" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/GCodeViewer.cpp:2497 +#: src/slic3r/GUI/GCodeViewer.cpp:2550 src/slic3r/GUI/GCodeViewer.cpp:2553 msgid "Remaining time" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2497 +#: src/slic3r/GUI/GCodeViewer.cpp:2553 msgid "Duration" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2532 src/slic3r/GUI/GUI_Preview.cpp:330 -#: src/slic3r/GUI/GUI_Preview.cpp:1468 src/libslic3r/PrintConfig.cpp:2286 +#: src/slic3r/GUI/GCodeViewer.cpp:2588 src/slic3r/GUI/GUI_Preview.cpp:330 +#: src/slic3r/GUI/GUI_Preview.cpp:1466 src/libslic3r/PrintConfig.cpp:2286 msgid "Travel" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2535 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 msgid "Movement" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2536 +#: src/slic3r/GUI/GCodeViewer.cpp:2592 msgid "Extrusion" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2537 src/slic3r/GUI/Tab.cpp:1680 -#: src/slic3r/GUI/Tab.cpp:2552 +#: src/slic3r/GUI/GCodeViewer.cpp:2593 src/slic3r/GUI/Tab.cpp:1680 +#: src/slic3r/GUI/Tab.cpp:2550 msgid "Retraction" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2568 src/slic3r/GUI/GUI_Preview.cpp:315 +#: src/slic3r/GUI/GCodeViewer.cpp:2624 src/slic3r/GUI/GUI_Preview.cpp:315 #: src/slic3r/GUI/GUI_Preview.cpp:328 msgid "Options" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2571 src/slic3r/GUI/GUI_Preview.cpp:331 -#: src/slic3r/GUI/GUI_Preview.cpp:1469 +#: src/slic3r/GUI/GCodeViewer.cpp:2627 src/slic3r/GUI/GUI_Preview.cpp:331 +#: src/slic3r/GUI/GUI_Preview.cpp:1467 msgid "Retractions" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2572 src/slic3r/GUI/GUI_Preview.cpp:332 -#: src/slic3r/GUI/GUI_Preview.cpp:1470 +#: src/slic3r/GUI/GCodeViewer.cpp:2628 src/slic3r/GUI/GUI_Preview.cpp:332 +#: src/slic3r/GUI/GUI_Preview.cpp:1468 msgid "Deretractions" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2573 src/slic3r/GUI/GUI_Preview.cpp:1471 +#: src/slic3r/GUI/GCodeViewer.cpp:2629 src/slic3r/GUI/GUI_Preview.cpp:1469 msgid "Tool changes" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2574 src/slic3r/GUI/GUI_Preview.cpp:1472 +#: src/slic3r/GUI/GCodeViewer.cpp:2630 src/slic3r/GUI/GUI_Preview.cpp:1470 msgid "Color changes" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2575 src/slic3r/GUI/GUI_Preview.cpp:1473 +#: src/slic3r/GUI/GCodeViewer.cpp:2631 src/slic3r/GUI/GUI_Preview.cpp:1471 msgid "Print pauses" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2576 src/slic3r/GUI/GUI_Preview.cpp:1474 +#: src/slic3r/GUI/GCodeViewer.cpp:2632 src/slic3r/GUI/GUI_Preview.cpp:1472 msgid "Custom G-codes" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2587 src/slic3r/GUI/GCodeViewer.cpp:2611 +#: src/slic3r/GUI/GCodeViewer.cpp:2643 src/slic3r/GUI/GCodeViewer.cpp:2667 #: src/slic3r/GUI/Plater.cpp:689 src/libslic3r/PrintConfig.cpp:113 msgid "Printer" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2589 src/slic3r/GUI/GCodeViewer.cpp:2616 +#: src/slic3r/GUI/GCodeViewer.cpp:2645 src/slic3r/GUI/GCodeViewer.cpp:2672 #: src/slic3r/GUI/Plater.cpp:685 msgid "Print settings" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2592 src/slic3r/GUI/GCodeViewer.cpp:2622 +#: src/slic3r/GUI/GCodeViewer.cpp:2648 src/slic3r/GUI/GCodeViewer.cpp:2678 #: src/slic3r/GUI/Plater.cpp:686 src/slic3r/GUI/Tab.cpp:1780 #: src/slic3r/GUI/Tab.cpp:1781 msgid "Filament" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2645 src/slic3r/GUI/GCodeViewer.cpp:2650 +#: src/slic3r/GUI/GCodeViewer.cpp:2701 src/slic3r/GUI/GCodeViewer.cpp:2706 #: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1127 #: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1198 msgid "Estimated printing time" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2645 +#: src/slic3r/GUI/GCodeViewer.cpp:2701 msgid "Normal mode" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2650 +#: src/slic3r/GUI/GCodeViewer.cpp:2706 msgid "Stealth mode" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2677 +#: src/slic3r/GUI/GCodeViewer.cpp:2733 msgid "Show stealth mode" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:2681 +#: src/slic3r/GUI/GCodeViewer.cpp:2737 msgid "Show normal mode" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:228 src/slic3r/GUI/GLCanvas3D.cpp:4961 +#: src/slic3r/GUI/GLCanvas3D.cpp:228 src/slic3r/GUI/GLCanvas3D.cpp:4965 msgid "Variable layer height" msgstr "" @@ -1785,152 +1784,152 @@ msgstr "" msgid "Variable layer height - Smooth all" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:2224 +#: src/slic3r/GUI/GLCanvas3D.cpp:2228 msgid "Mirror Object" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3187 +#: src/slic3r/GUI/GLCanvas3D.cpp:3191 #: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3271 +#: src/slic3r/GUI/GLCanvas3D.cpp:3275 #: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:3798 +#: src/slic3r/GUI/GLCanvas3D.cpp:3802 msgid "Move Object" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4285 src/slic3r/GUI/GLCanvas3D.cpp:4922 +#: src/slic3r/GUI/GLCanvas3D.cpp:4289 src/slic3r/GUI/GLCanvas3D.cpp:4926 msgid "Switch to Settings" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4286 src/slic3r/GUI/GLCanvas3D.cpp:4922 +#: src/slic3r/GUI/GLCanvas3D.cpp:4290 src/slic3r/GUI/GLCanvas3D.cpp:4926 msgid "Print Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4287 src/slic3r/GUI/GLCanvas3D.cpp:4923 +#: src/slic3r/GUI/GLCanvas3D.cpp:4291 src/slic3r/GUI/GLCanvas3D.cpp:4927 msgid "Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4287 src/slic3r/GUI/GLCanvas3D.cpp:4923 +#: src/slic3r/GUI/GLCanvas3D.cpp:4291 src/slic3r/GUI/GLCanvas3D.cpp:4927 msgid "Material Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4288 src/slic3r/GUI/GLCanvas3D.cpp:4924 +#: src/slic3r/GUI/GLCanvas3D.cpp:4292 src/slic3r/GUI/GLCanvas3D.cpp:4928 msgid "Printer Settings Tab" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4344 +#: src/slic3r/GUI/GLCanvas3D.cpp:4348 msgid "Undo History" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4344 +#: src/slic3r/GUI/GLCanvas3D.cpp:4348 msgid "Redo History" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4365 +#: src/slic3r/GUI/GLCanvas3D.cpp:4369 #, possible-c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4365 +#: src/slic3r/GUI/GLCanvas3D.cpp:4369 #, possible-c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4385 src/slic3r/GUI/GLCanvas3D.cpp:4940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4389 src/slic3r/GUI/GLCanvas3D.cpp:4944 #: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 msgid "Search" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4399 src/slic3r/GUI/GLCanvas3D.cpp:4407 +#: src/slic3r/GUI/GLCanvas3D.cpp:4403 src/slic3r/GUI/GLCanvas3D.cpp:4411 #: src/slic3r/GUI/Search.cpp:433 msgid "Enter a search term" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4816 +#: src/slic3r/GUI/GLCanvas3D.cpp:4820 msgid "Add..." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4824 src/slic3r/GUI/GUI_ObjectList.cpp:1846 -#: src/slic3r/GUI/Plater.cpp:3875 src/slic3r/GUI/Plater.cpp:3897 -#: src/slic3r/GUI/Tab.cpp:3449 +#: src/slic3r/GUI/GLCanvas3D.cpp:4828 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3950 src/slic3r/GUI/Plater.cpp:3972 +#: src/slic3r/GUI/Tab.cpp:3447 msgid "Delete" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4833 src/slic3r/GUI/KBShortcutsDialog.cpp:124 -#: src/slic3r/GUI/Plater.cpp:4807 +#: src/slic3r/GUI/GLCanvas3D.cpp:4837 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4882 msgid "Delete all" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4842 src/slic3r/GUI/KBShortcutsDialog.cpp:151 -#: src/slic3r/GUI/Plater.cpp:1558 +#: src/slic3r/GUI/GLCanvas3D.cpp:4846 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1633 msgid "Arrange" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4842 src/slic3r/GUI/KBShortcutsDialog.cpp:152 +#: src/slic3r/GUI/GLCanvas3D.cpp:4846 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4854 +#: src/slic3r/GUI/GLCanvas3D.cpp:4858 msgid "Copy" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4863 +#: src/slic3r/GUI/GLCanvas3D.cpp:4867 msgid "Paste" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4875 src/slic3r/GUI/Plater.cpp:3734 -#: src/slic3r/GUI/Plater.cpp:3746 src/slic3r/GUI/Plater.cpp:3884 +#: src/slic3r/GUI/GLCanvas3D.cpp:4879 src/slic3r/GUI/Plater.cpp:3809 +#: src/slic3r/GUI/Plater.cpp:3821 src/slic3r/GUI/Plater.cpp:3959 msgid "Add instance" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4886 src/slic3r/GUI/Plater.cpp:3886 +#: src/slic3r/GUI/GLCanvas3D.cpp:4890 src/slic3r/GUI/Plater.cpp:3961 msgid "Remove instance" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4899 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 msgid "Split to objects" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4909 src/slic3r/GUI/GUI_ObjectList.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4913 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:5011 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/GLCanvas3D.cpp:5015 src/slic3r/GUI/KBShortcutsDialog.cpp:125 #: src/slic3r/GUI/MainFrame.cpp:1199 msgid "Undo" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:5011 src/slic3r/GUI/GLCanvas3D.cpp:5050 +#: src/slic3r/GUI/GLCanvas3D.cpp:5015 src/slic3r/GUI/GLCanvas3D.cpp:5054 msgid "Click right mouse button to open/close History" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:5034 +#: src/slic3r/GUI/GLCanvas3D.cpp:5038 msgid "Next Undo action: %1%" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:5050 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/GLCanvas3D.cpp:5054 src/slic3r/GUI/KBShortcutsDialog.cpp:126 #: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Redo" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:5072 +#: src/slic3r/GUI/GLCanvas3D.cpp:5076 msgid "Next Redo action: %1%" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:7175 +#: src/slic3r/GUI/GLCanvas3D.cpp:7179 msgid "Selection-Add from rectangle" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:7194 +#: src/slic3r/GUI/GLCanvas3D.cpp:7198 msgid "Selection-Remove from rectangle" msgstr "" @@ -2100,6 +2099,7 @@ msgid "Offset" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:56 msgid "Quality" msgstr "" @@ -2394,21 +2394,21 @@ msgstr "" msgid "Add supports" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:243 +#: src/slic3r/GUI/GUI_App.cpp:235 msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:245 +#: src/slic3r/GUI/GUI_App.cpp:237 msgid "" "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas " "Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:246 +#: src/slic3r/GUI/GUI_App.cpp:238 msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:386 +#: src/slic3r/GUI/GUI_App.cpp:378 msgid "" "Starting with %1% 2.3, configuration directory on Linux has changed " "(according to XDG Base Directory Specification) to \n" @@ -2427,20 +2427,20 @@ msgid "" "What do you want to do now?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:394 +#: src/slic3r/GUI/GUI_App.cpp:386 #, possible-c-format msgid "%s - BREAKING CHANGE" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:396 +#: src/slic3r/GUI/GUI_App.cpp:388 msgid "Quit, I will move my data now" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:396 +#: src/slic3r/GUI/GUI_App.cpp:388 msgid "Start the application" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:585 +#: src/slic3r/GUI/GUI_App.cpp:577 #, possible-c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. " @@ -2450,240 +2450,240 @@ msgid "" "The application will now terminate." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:588 +#: src/slic3r/GUI/GUI_App.cpp:580 msgid "Fatal error" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:723 +#: src/slic3r/GUI/GUI_App.cpp:700 msgid "" "Error parsing PrusaSlicer config file, it is probably corrupted. Try to " "manually delete the file to recover from the error. Your user profiles will " "not be affected." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:730 +#: src/slic3r/GUI/GUI_App.cpp:706 msgid "" "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to " "manually delete the file to recover from the error." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:788 +#: src/slic3r/GUI/GUI_App.cpp:760 #, possible-c-format msgid "" "%s\n" "Do you want to continue?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:790 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +#: src/slic3r/GUI/GUI_App.cpp:762 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 msgid "Remember my choice" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:829 -msgid "Loading configuration..." +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:895 -msgid "Preparing settings tabs..." +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1148 +#: src/slic3r/GUI/GUI_App.cpp:1100 msgid "" "You have the following presets with saved options for \"Print Host upload\"" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1152 +#: src/slic3r/GUI/GUI_App.cpp:1104 msgid "" "But since this version of PrusaSlicer we don't show this information in " "Printer Settings anymore.\n" "Settings will be available in physical printers settings." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1154 +#: src/slic3r/GUI/GUI_App.cpp:1106 msgid "" "By default new Printer devices will be named as \"Printer N\" during its " "creation.\n" "Note: This name can be changed later from the physical printers settings" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1157 +#: src/slic3r/GUI/GUI_App.cpp:1109 msgid "Information" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1172 src/slic3r/GUI/GUI_App.cpp:1185 +#: src/slic3r/GUI/GUI_App.cpp:1122 src/slic3r/GUI/GUI_App.cpp:1133 msgid "Recreating" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1190 +#: src/slic3r/GUI/GUI_App.cpp:1138 msgid "Loading of current presets" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1195 +#: src/slic3r/GUI/GUI_App.cpp:1143 msgid "Loading of a mode view" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1278 +#: src/slic3r/GUI/GUI_App.cpp:1224 msgid "Choose one file (3MF/AMF):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1290 +#: src/slic3r/GUI/GUI_App.cpp:1236 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1303 +#: src/slic3r/GUI/GUI_App.cpp:1248 msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1315 +#: src/slic3r/GUI/GUI_App.cpp:1259 msgid "Changing of an application language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1365 +#: src/slic3r/GUI/GUI_App.cpp:1309 msgid "Select the language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1365 +#: src/slic3r/GUI/GUI_App.cpp:1309 msgid "Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1495 +#: src/slic3r/GUI/GUI_App.cpp:1439 msgid "modified" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1544 +#: src/slic3r/GUI/GUI_App.cpp:1488 #, possible-c-format msgid "Run %s" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1550 +#: src/slic3r/GUI/GUI_App.cpp:1492 msgid "&Configuration Snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1550 +#: src/slic3r/GUI/GUI_App.cpp:1492 msgid "Inspect / activate configuration snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1551 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Take Configuration &Snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1551 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Capture a configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1552 +#: src/slic3r/GUI/GUI_App.cpp:1494 msgid "Check for updates" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1552 +#: src/slic3r/GUI/GUI_App.cpp:1494 msgid "Check for configuration updates" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1557 +#: src/slic3r/GUI/GUI_App.cpp:1497 msgid "&Preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1563 +#: src/slic3r/GUI/GUI_App.cpp:1503 msgid "Application preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1574 src/slic3r/GUI/wxExtensions.cpp:673 +#: src/slic3r/GUI/GUI_App.cpp:1508 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1574 +#: src/slic3r/GUI/GUI_App.cpp:1508 msgid "Simple View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1576 src/slic3r/GUI/wxExtensions.cpp:675 +#: src/slic3r/GUI/GUI_App.cpp:1510 src/slic3r/GUI/wxExtensions.cpp:675 msgctxt "Mode" msgid "Advanced" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1576 +#: src/slic3r/GUI/GUI_App.cpp:1510 msgid "Advanced View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1577 src/slic3r/GUI/wxExtensions.cpp:676 +#: src/slic3r/GUI/GUI_App.cpp:1511 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1577 +#: src/slic3r/GUI/GUI_App.cpp:1511 msgid "Expert View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1582 +#: src/slic3r/GUI/GUI_App.cpp:1516 msgid "Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1582 +#: src/slic3r/GUI/GUI_App.cpp:1516 #, possible-c-format msgid "%s View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1587 +#: src/slic3r/GUI/GUI_App.cpp:1519 msgid "&Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1592 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1592 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1610 +#: src/slic3r/GUI/GUI_App.cpp:1538 msgid "Taking configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1610 +#: src/slic3r/GUI/GUI_App.cpp:1538 msgid "Snapshot name" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1675 src/slic3r/GUI/GUI_App.cpp:1684 +#: src/slic3r/GUI/GUI_App.cpp:1600 msgid "Language selection" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1678 +#: src/slic3r/GUI/GUI_App.cpp:1602 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1680 +#: src/slic3r/GUI/GUI_App.cpp:1604 msgid "Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1715 +#: src/slic3r/GUI/GUI_App.cpp:1631 msgid "&Configuration" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1746 +#: src/slic3r/GUI/GUI_App.cpp:1662 msgid "The preset(s) modifications are successfully saved" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1946 src/slic3r/GUI/Tab.cpp:3207 +#: src/slic3r/GUI/GUI_App.cpp:1862 src/slic3r/GUI/Tab.cpp:3205 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1947 +#: src/slic3r/GUI/GUI_App.cpp:1863 msgid "Please check and fix your object list." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1948 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 -#: src/slic3r/GUI/Plater.cpp:2272 src/slic3r/GUI/Tab.cpp:3209 +#: src/slic3r/GUI/GUI_App.cpp:1864 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2347 src/slic3r/GUI/Tab.cpp:3207 msgid "Attention!" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:1965 +#: src/slic3r/GUI/GUI_App.cpp:1881 msgid "Select a gcode file:" msgstr "" -#: src/slic3r/GUI/GUI_Init.cpp:85 src/slic3r/GUI/GUI_Init.cpp:88 +#: src/slic3r/GUI/GUI_Init.cpp:73 src/slic3r/GUI/GUI_Init.cpp:76 msgid "PrusaSlicer GUI initialization failed" msgstr "" -#: src/slic3r/GUI/GUI_Init.cpp:88 +#: src/slic3r/GUI/GUI_Init.cpp:76 msgid "Fatal error, exception catched: %1%" msgstr "" @@ -2798,7 +2798,7 @@ msgstr "" #: src/slic3r/GUI/Tab.cpp:1416 src/slic3r/GUI/Tab.cpp:1438 #: src/slic3r/GUI/Tab.cpp:1541 src/slic3r/GUI/Tab.cpp:1544 #: src/slic3r/GUI/Tab.cpp:1828 src/slic3r/GUI/Tab.cpp:2165 -#: src/slic3r/GUI/Tab.cpp:4079 src/libslic3r/PrintConfig.cpp:90 +#: src/slic3r/GUI/Tab.cpp:4077 src/libslic3r/PrintConfig.cpp:90 #: src/libslic3r/PrintConfig.cpp:128 src/libslic3r/PrintConfig.cpp:264 #: src/libslic3r/PrintConfig.cpp:1090 src/libslic3r/PrintConfig.cpp:2410 #: src/libslic3r/PrintConfig.cpp:2582 @@ -2806,8 +2806,8 @@ msgid "Advanced" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 -#: src/slic3r/GUI/Plater.cpp:356 src/slic3r/GUI/Tab.cpp:4013 -#: src/slic3r/GUI/Tab.cpp:4014 src/libslic3r/PrintConfig.cpp:2748 +#: src/slic3r/GUI/Plater.cpp:356 src/slic3r/GUI/Tab.cpp:4011 +#: src/slic3r/GUI/Tab.cpp:4012 src/libslic3r/PrintConfig.cpp:2748 #: src/libslic3r/PrintConfig.cpp:2755 src/libslic3r/PrintConfig.cpp:2764 #: src/libslic3r/PrintConfig.cpp:2773 src/libslic3r/PrintConfig.cpp:2783 #: src/libslic3r/PrintConfig.cpp:2793 src/libslic3r/PrintConfig.cpp:2830 @@ -2820,8 +2820,8 @@ msgid "Supports" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 -#: src/slic3r/GUI/Plater.cpp:496 src/slic3r/GUI/Tab.cpp:4054 -#: src/slic3r/GUI/Tab.cpp:4055 src/slic3r/GUI/Tab.cpp:4126 +#: src/slic3r/GUI/Plater.cpp:496 src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4053 src/slic3r/GUI/Tab.cpp:4124 #: src/libslic3r/PrintConfig.cpp:2936 src/libslic3r/PrintConfig.cpp:2943 #: src/libslic3r/PrintConfig.cpp:2957 src/libslic3r/PrintConfig.cpp:2968 #: src/libslic3r/PrintConfig.cpp:2978 src/libslic3r/PrintConfig.cpp:3000 @@ -2831,8 +2831,8 @@ msgstr "" msgid "Pad" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4072 -#: src/slic3r/GUI/Tab.cpp:4073 src/libslic3r/SLA/Hollowing.cpp:45 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4070 +#: src/slic3r/GUI/Tab.cpp:4071 src/libslic3r/SLA/Hollowing.cpp:45 #: src/libslic3r/SLA/Hollowing.cpp:57 src/libslic3r/SLA/Hollowing.cpp:66 #: src/libslic3r/SLA/Hollowing.cpp:75 src/libslic3r/PrintConfig.cpp:3064 #: src/libslic3r/PrintConfig.cpp:3071 src/libslic3r/PrintConfig.cpp:3081 @@ -3010,12 +3010,12 @@ msgstr "" msgid "Fix through the Netfabb" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3910 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3985 msgid "Export as STL" msgstr "" #: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3878 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3953 msgid "Reload the selected volumes from disk" msgstr "" @@ -3035,11 +3035,11 @@ msgstr "" msgid "Scale the selected object to fit the print volume" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4919 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4994 msgid "Convert from imperial units" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4919 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4994 msgid "Revert conversion from imperial units" msgstr "" @@ -3107,7 +3107,7 @@ msgstr "" msgid "Delete Instance" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2787 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2862 msgid "" "The selected object couldn't be split because it contains only one part." msgstr "" @@ -3520,7 +3520,7 @@ msgstr "" msgid "Wipe tower" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:333 src/slic3r/GUI/GUI_Preview.cpp:1475 +#: src/slic3r/GUI/GUI_Preview.cpp:333 src/slic3r/GUI/GUI_Preview.cpp:1473 msgid "Shells" msgstr "" @@ -3528,11 +3528,11 @@ msgstr "" msgid "Legend" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:1476 +#: src/slic3r/GUI/GUI_Preview.cpp:1474 msgid "Tool marker" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:1477 +#: src/slic3r/GUI/GUI_Preview.cpp:1475 msgid "Legend/Estimated printing time" msgstr "" @@ -3585,7 +3585,7 @@ msgid "Choose SLA archive:" msgstr "" #: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 -msgid "Import file: " +msgid "Import file" msgstr "" #: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 @@ -3600,10 +3600,6 @@ msgstr "" msgid "Import model only" msgstr "" -#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:56 -msgid "Quality: " -msgstr "" - #: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 msgid "Accurate" msgstr "" @@ -3628,12 +3624,12 @@ msgstr "" msgid "Importing done." msgstr "" -#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2270 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2345 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "" -#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2271 -#: src/slic3r/GUI/Tab.cpp:3208 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2346 +#: src/slic3r/GUI/Tab.cpp:3206 msgid "Please check your object list before preset changing." msgstr "" @@ -3676,11 +3672,11 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:762 -#: src/slic3r/GUI/Plater.cpp:5774 src/libslic3r/PrintConfig.cpp:3538 +#: src/slic3r/GUI/Plater.cpp:5849 src/libslic3r/PrintConfig.cpp:3538 msgid "Export G-code" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5775 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5850 msgid "Send G-code" msgstr "" @@ -3688,7 +3684,7 @@ msgstr "" msgid "Export config" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:750 msgid "Export to SD card / Flash drive" msgstr "" @@ -3978,8 +3974,8 @@ msgstr "" msgid "Show/Hide Legend & Estimated printing time" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 src/slic3r/GUI/Plater.cpp:4078 -#: src/slic3r/GUI/Tab.cpp:2572 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 src/slic3r/GUI/Plater.cpp:4153 +#: src/slic3r/GUI/Tab.cpp:2570 msgid "Preview" msgstr "" @@ -4063,7 +4059,7 @@ msgstr "" #: src/slic3r/GUI/MainFrame.cpp:166 msgid "" -" - Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/" +"Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/" "releases" msgstr "" @@ -4585,7 +4581,7 @@ msgstr "" msgid "&Collapse sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1309 src/slic3r/GUI/Plater.cpp:2160 +#: src/slic3r/GUI/MainFrame.cpp:1309 src/slic3r/GUI/Plater.cpp:2235 msgid "Collapse sidebar" msgstr "" @@ -4673,9 +4669,9 @@ msgstr "" msgid "Save zip file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1560 src/slic3r/GUI/Plater.cpp:2938 -#: src/slic3r/GUI/Plater.cpp:5275 src/slic3r/GUI/Tab.cpp:1561 -#: src/slic3r/GUI/Tab.cpp:4080 +#: src/slic3r/GUI/MainFrame.cpp:1560 src/slic3r/GUI/Plater.cpp:3013 +#: src/slic3r/GUI/Plater.cpp:5350 src/slic3r/GUI/Tab.cpp:1561 +#: src/slic3r/GUI/Tab.cpp:4078 msgid "Slicing" msgstr "" @@ -4686,7 +4682,7 @@ msgid "Processing %s" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:1585 -msgid " was successfully sliced." +msgid "%1% was successfully sliced." msgstr "" #: src/slic3r/GUI/MainFrame.cpp:1587 @@ -4838,8 +4834,8 @@ msgstr "" msgid "Instance %d" msgstr "" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3927 -#: src/slic3r/GUI/Tab.cpp:4009 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3925 +#: src/slic3r/GUI/Tab.cpp:4007 msgid "Layers" msgstr "" @@ -4879,12 +4875,12 @@ msgstr "" msgid "Error loading shaders" msgstr "" -#: src/slic3r/GUI/OptionsGroup.cpp:315 +#: src/slic3r/GUI/OptionsGroup.cpp:328 msgctxt "Layers" msgid "Top" msgstr "" -#: src/slic3r/GUI/OptionsGroup.cpp:315 +#: src/slic3r/GUI/OptionsGroup.cpp:328 msgctxt "Layers" msgid "Bottom" msgstr "" @@ -5090,16 +5086,12 @@ msgstr "" msgid "SLA print settings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:748 -msgid "Send to printer " +#: src/slic3r/GUI/Plater.cpp:748 src/slic3r/GUI/Plater.cpp:5850 +msgid "Send to printer" msgstr "" -#: src/slic3r/GUI/Plater.cpp:750 -msgid "Export to SD card / Flash drive " -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:763 src/slic3r/GUI/Plater.cpp:2938 -#: src/slic3r/GUI/Plater.cpp:5278 +#: src/slic3r/GUI/Plater.cpp:763 src/slic3r/GUI/Plater.cpp:3013 +#: src/slic3r/GUI/Plater.cpp:5353 msgid "Slice now" msgstr "" @@ -5173,414 +5165,431 @@ msgstr "" msgid "Color" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1407 +#: src/slic3r/GUI/Plater.cpp:1410 +#, possible-c-format +msgid "%s - Drop project file" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1417 +msgid "Open as project" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1418 +msgid "Import geometry only" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1419 +msgid "Import config only" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1422 +msgid "Select an action to apply to the file" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1423 +msgid "Action" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1431 +msgid "Don't show again" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1471 msgid "You can open only one .gcode file at a time." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1408 +#: src/slic3r/GUI/Plater.cpp:1472 msgid "Drag and drop G-code file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1438 -msgid "Load File" +#: src/slic3r/GUI/Plater.cpp:1528 src/slic3r/GUI/Plater.cpp:4753 +msgid "Import Object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1442 -msgid "Load Files" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1564 +#: src/slic3r/GUI/Plater.cpp:1639 msgid "Optimize Rotation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1570 +#: src/slic3r/GUI/Plater.cpp:1645 msgid "Import SLA archive" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2048 +#: src/slic3r/GUI/Plater.cpp:2123 #, possible-c-format msgid "" "Successfully unmounted. The device %s(%s) can now be safely removed from the " "computer." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2051 +#: src/slic3r/GUI/Plater.cpp:2126 #, possible-c-format msgid "Ejecting of device %s(%s) has failed." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2072 +#: src/slic3r/GUI/Plater.cpp:2147 msgid "New Project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2159 +#: src/slic3r/GUI/Plater.cpp:2234 msgid "Expand sidebar" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2232 +#: src/slic3r/GUI/Plater.cpp:2307 msgid "Loading" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2242 +#: src/slic3r/GUI/Plater.cpp:2317 msgid "Loading file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2325 +#: src/slic3r/GUI/Plater.cpp:2400 #, possible-c-format msgid "" "Some object(s) in file %s looks like saved in inches.\n" "Should I consider them as a saved in inches and convert them?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2327 +#: src/slic3r/GUI/Plater.cpp:2402 msgid "The object appears to be saved in inches" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2335 +#: src/slic3r/GUI/Plater.cpp:2410 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" "this file as a single object having multiple parts?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2338 src/slic3r/GUI/Plater.cpp:2391 +#: src/slic3r/GUI/Plater.cpp:2413 src/slic3r/GUI/Plater.cpp:2466 msgid "Multi-part object detected" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2345 +#: src/slic3r/GUI/Plater.cpp:2420 msgid "" "This file cannot be loaded in a simple mode. Do you want to switch to an " "advanced mode?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2346 +#: src/slic3r/GUI/Plater.cpp:2421 msgid "Detected advanced data" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:2443 #, possible-c-format msgid "" "You can't to add the object(s) from %s because of one or some of them " "is(are) multi-part" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2388 +#: src/slic3r/GUI/Plater.cpp:2463 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" "these files to represent a single object having multiple parts?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2404 +#: src/slic3r/GUI/Plater.cpp:2479 msgid "Loaded" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2506 +#: src/slic3r/GUI/Plater.cpp:2581 msgid "" "Your object appears to be too large, so it was automatically scaled down to " "fit your print bed." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2507 +#: src/slic3r/GUI/Plater.cpp:2582 msgid "Object too large?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2569 +#: src/slic3r/GUI/Plater.cpp:2644 msgid "Export STL file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2576 +#: src/slic3r/GUI/Plater.cpp:2651 msgid "Export AMF file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2582 +#: src/slic3r/GUI/Plater.cpp:2657 msgid "Save file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2588 +#: src/slic3r/GUI/Plater.cpp:2663 msgid "Export OBJ file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2689 +#: src/slic3r/GUI/Plater.cpp:2764 msgid "Delete Object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2700 +#: src/slic3r/GUI/Plater.cpp:2775 msgid "Reset Project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2779 +#: src/slic3r/GUI/Plater.cpp:2854 msgid "" "The selected object can't be split because it contains more than one volume/" "material." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2790 +#: src/slic3r/GUI/Plater.cpp:2865 msgid "Split to Objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2922 src/slic3r/GUI/Plater.cpp:3605 +#: src/slic3r/GUI/Plater.cpp:2997 src/slic3r/GUI/Plater.cpp:3680 msgid "Invalid data" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2932 +#: src/slic3r/GUI/Plater.cpp:3007 msgid "Ready to slice" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2970 src/slic3r/GUI/PrintHostDialogs.cpp:260 +#: src/slic3r/GUI/Plater.cpp:3045 src/slic3r/GUI/PrintHostDialogs.cpp:260 msgid "Cancelling" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2989 +#: src/slic3r/GUI/Plater.cpp:3064 msgid "Another export job is currently running." msgstr "" -#: src/slic3r/GUI/Plater.cpp:3106 +#: src/slic3r/GUI/Plater.cpp:3181 msgid "Please select the file to reload" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3141 +#: src/slic3r/GUI/Plater.cpp:3216 msgid "It is not allowed to change the file to reload" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3141 +#: src/slic3r/GUI/Plater.cpp:3216 msgid "Do you want to retry" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3159 +#: src/slic3r/GUI/Plater.cpp:3234 msgid "Reload from:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3250 +#: src/slic3r/GUI/Plater.cpp:3325 msgid "Unable to reload:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3255 +#: src/slic3r/GUI/Plater.cpp:3330 msgid "Error during reload" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3274 +#: src/slic3r/GUI/Plater.cpp:3349 msgid "Reload all from disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3295 +#: src/slic3r/GUI/Plater.cpp:3370 msgid "Fix Throught NetFabb" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3563 +#: src/slic3r/GUI/Plater.cpp:3638 msgid "There are active warnings concerning sliced models:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3574 +#: src/slic3r/GUI/Plater.cpp:3649 msgid "generated warnings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3613 src/slic3r/GUI/PrintHostDialogs.cpp:261 +#: src/slic3r/GUI/Plater.cpp:3688 src/slic3r/GUI/PrintHostDialogs.cpp:261 msgid "Cancelled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3875 src/slic3r/GUI/Plater.cpp:3897 +#: src/slic3r/GUI/Plater.cpp:3950 src/slic3r/GUI/Plater.cpp:3972 msgid "Remove the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3884 +#: src/slic3r/GUI/Plater.cpp:3959 msgid "Add one more instance of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3886 +#: src/slic3r/GUI/Plater.cpp:3961 msgid "Remove one instance of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3888 +#: src/slic3r/GUI/Plater.cpp:3963 msgid "Set number of instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3888 +#: src/slic3r/GUI/Plater.cpp:3963 msgid "Change the number of instances of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3907 +#: src/slic3r/GUI/Plater.cpp:3982 msgid "Reload the selected object from disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3910 +#: src/slic3r/GUI/Plater.cpp:3985 msgid "Export the selected object as STL file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3941 +#: src/slic3r/GUI/Plater.cpp:4016 msgid "Along X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3941 +#: src/slic3r/GUI/Plater.cpp:4016 msgid "Mirror the selected object along the X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3943 +#: src/slic3r/GUI/Plater.cpp:4018 msgid "Along Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3943 +#: src/slic3r/GUI/Plater.cpp:4018 msgid "Mirror the selected object along the Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3945 +#: src/slic3r/GUI/Plater.cpp:4020 msgid "Along Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3945 +#: src/slic3r/GUI/Plater.cpp:4020 msgid "Mirror the selected object along the Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3948 +#: src/slic3r/GUI/Plater.cpp:4023 msgid "Mirror" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3948 +#: src/slic3r/GUI/Plater.cpp:4023 msgid "Mirror the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3960 +#: src/slic3r/GUI/Plater.cpp:4035 msgid "To objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3960 src/slic3r/GUI/Plater.cpp:3980 +#: src/slic3r/GUI/Plater.cpp:4035 src/slic3r/GUI/Plater.cpp:4055 msgid "Split the selected object into individual objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3962 +#: src/slic3r/GUI/Plater.cpp:4037 msgid "To parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3962 src/slic3r/GUI/Plater.cpp:3998 +#: src/slic3r/GUI/Plater.cpp:4037 src/slic3r/GUI/Plater.cpp:4073 msgid "Split the selected object into individual sub-parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3965 src/slic3r/GUI/Plater.cpp:3980 -#: src/slic3r/GUI/Plater.cpp:3998 src/libslic3r/PrintConfig.cpp:3662 +#: src/slic3r/GUI/Plater.cpp:4040 src/slic3r/GUI/Plater.cpp:4055 +#: src/slic3r/GUI/Plater.cpp:4073 src/libslic3r/PrintConfig.cpp:3662 msgid "Split" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3965 +#: src/slic3r/GUI/Plater.cpp:4040 msgid "Split the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3987 +#: src/slic3r/GUI/Plater.cpp:4062 msgid "Optimize orientation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:3988 +#: src/slic3r/GUI/Plater.cpp:4063 msgid "Optimize the rotation of the object for better print results." msgstr "" -#: src/slic3r/GUI/Plater.cpp:4070 +#: src/slic3r/GUI/Plater.cpp:4145 msgid "3D editor view" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4446 +#: src/slic3r/GUI/Plater.cpp:4521 msgid "" "%1% printer was active at the time the target Undo / Redo snapshot was " "taken. Switching to %1% printer requires reloading of %1% presets." msgstr "" -#: src/slic3r/GUI/Plater.cpp:4650 +#: src/slic3r/GUI/Plater.cpp:4725 msgid "Load Project" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4678 -msgid "Import Object" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:4682 +#: src/slic3r/GUI/Plater.cpp:4757 msgid "Import Objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4827 msgid "The selected file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4827 msgid "does not contain valid gcode." msgstr "" -#: src/slic3r/GUI/Plater.cpp:4753 +#: src/slic3r/GUI/Plater.cpp:4828 msgid "Error while loading .gcode file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4807 +#: src/slic3r/GUI/Plater.cpp:4882 msgid "All objects will be removed, continue?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4815 +#: src/slic3r/GUI/Plater.cpp:4890 msgid "Delete Selected Objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4823 +#: src/slic3r/GUI/Plater.cpp:4898 msgid "Increase Instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4857 +#: src/slic3r/GUI/Plater.cpp:4932 msgid "Decrease Instances" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4888 +#: src/slic3r/GUI/Plater.cpp:4963 msgid "Enter the number of copies:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4889 +#: src/slic3r/GUI/Plater.cpp:4964 msgid "Copies of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4893 +#: src/slic3r/GUI/Plater.cpp:4968 #, possible-c-format msgid "Set numbers of copies to %d" msgstr "" -#: src/slic3r/GUI/Plater.cpp:4954 +#: src/slic3r/GUI/Plater.cpp:5029 msgid "Cut by Plane" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5008 +#: src/slic3r/GUI/Plater.cpp:5083 msgid "Save G-code file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5008 +#: src/slic3r/GUI/Plater.cpp:5083 msgid "Save SL1 file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5155 +#: src/slic3r/GUI/Plater.cpp:5230 #, possible-c-format msgid "STL file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5172 +#: src/slic3r/GUI/Plater.cpp:5247 #, possible-c-format msgid "AMF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5175 +#: src/slic3r/GUI/Plater.cpp:5250 #, possible-c-format msgid "Error exporting AMF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5204 +#: src/slic3r/GUI/Plater.cpp:5279 #, possible-c-format msgid "3MF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5209 +#: src/slic3r/GUI/Plater.cpp:5284 #, possible-c-format msgid "Error exporting 3MF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5774 +#: src/slic3r/GUI/Plater.cpp:5849 msgid "Export" msgstr "" -#: src/slic3r/GUI/Plater.cpp:5775 -msgid "Send to printer" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:5871 +#: src/slic3r/GUI/Plater.cpp:5946 msgid "Paste From Clipboard" msgstr "" @@ -5666,156 +5675,167 @@ msgid "" "even if they are marked as incompatible with the active printer" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3689 +#: src/slic3r/GUI/Preferences.cpp:120 +msgid "Show drop project dialog" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:122 +msgid "" +"When checked, whenever dragging and dropping a project file on the " +"application, shows a dialog asking to select the action to take on the file " +"to load." +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:127 src/libslic3r/PrintConfig.cpp:3689 msgid "Single instance mode" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:123 +#: src/slic3r/GUI/Preferences.cpp:130 msgid "" "On OSX there is always only one instance of app running by default. However " "it is allowed to run multiple instances of same app from the command line. " "In such case this settings will allow only one instance." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:125 +#: src/slic3r/GUI/Preferences.cpp:132 msgid "" "If this is enabled, when starting PrusaSlicer and another instance of the " "same PrusaSlicer is already running, that instance will be reactivated " "instead." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:135 +#: src/slic3r/GUI/Preferences.cpp:142 msgid "Use Retina resolution for the 3D scene" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:137 +#: src/slic3r/GUI/Preferences.cpp:144 msgid "" "If enabled, the 3D scene will be rendered in Retina resolution. If you are " "experiencing 3D performance problems, disabling this option may help." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:154 +#: src/slic3r/GUI/Preferences.cpp:161 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 msgid "Ask for unsaved changes when closing application" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:156 +#: src/slic3r/GUI/Preferences.cpp:163 msgid "When closing the application, always ask for unsaved changes" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/Preferences.cpp:168 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 msgid "Ask for unsaved changes when selecting new preset" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:163 +#: src/slic3r/GUI/Preferences.cpp:170 msgid "Always ask for unsaved changes when selecting new preset" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +#: src/slic3r/GUI/Preferences.cpp:176 src/slic3r/GUI/Preferences.cpp:178 msgid "Show splash screen" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:178 +#: src/slic3r/GUI/Preferences.cpp:185 msgid "Camera" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:184 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use perspective camera" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:186 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "" "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:191 +#: src/slic3r/GUI/Preferences.cpp:198 msgid "Use free camera" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:193 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:198 +#: src/slic3r/GUI/Preferences.cpp:205 msgid "Reverse direction of zoom with mouse wheel" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:200 +#: src/slic3r/GUI/Preferences.cpp:207 msgid "If enabled, reverses the direction of zoom with mouse wheel" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:207 +#: src/slic3r/GUI/Preferences.cpp:214 msgid "GUI" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:220 +#: src/slic3r/GUI/Preferences.cpp:227 msgid "Show sidebar collapse/expand button" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:229 msgid "" "If enabled, the button for the collapse sidebar will be appeared in top " "right corner of the 3D Scene" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:227 +#: src/slic3r/GUI/Preferences.cpp:234 msgid "Use custom size for toolbar icons" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:229 +#: src/slic3r/GUI/Preferences.cpp:236 msgid "If enabled, you can change size of toolbar icons manually." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:236 +#: src/slic3r/GUI/Preferences.cpp:243 msgid "Sequential slider applied only to top layer" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:238 +#: src/slic3r/GUI/Preferences.cpp:245 msgid "" "If enabled, changes made using the sequential slider, in preview, apply only " "to gcode top layer. If disabled, changes made using the sequential slider, " "in preview, apply to the whole gcode." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:262 +#: src/slic3r/GUI/Preferences.cpp:269 msgid "Render" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:268 +#: src/slic3r/GUI/Preferences.cpp:275 msgid "Use environment map" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:270 +#: src/slic3r/GUI/Preferences.cpp:277 msgid "If enabled, renders object using the environment map." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:306 +#: src/slic3r/GUI/Preferences.cpp:313 #, possible-c-format msgid "You need to restart %s to make the changes effective." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:383 +#: src/slic3r/GUI/Preferences.cpp:390 msgid "Icon size in a respect to the default size" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:398 +#: src/slic3r/GUI/Preferences.cpp:405 msgid "Select toolbar icon size in respect to the default one." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:429 +#: src/slic3r/GUI/Preferences.cpp:436 msgid "Old regular layout with the tab bar" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:430 +#: src/slic3r/GUI/Preferences.cpp:437 msgid "New layout, access via settings button in the top menu" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:431 +#: src/slic3r/GUI/Preferences.cpp:438 msgid "Settings in non-modal window" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:440 +#: src/slic3r/GUI/Preferences.cpp:447 msgid "Layout Options" msgstr "" @@ -5856,7 +5876,7 @@ msgid "Add/Remove presets" msgstr "" #: src/slic3r/GUI/PresetComboBoxes.cpp:676 -#: src/slic3r/GUI/PresetComboBoxes.cpp:706 src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/PresetComboBoxes.cpp:706 src/slic3r/GUI/Tab.cpp:2958 msgid "Add physical printer" msgstr "" @@ -5864,7 +5884,7 @@ msgstr "" msgid "Edit preset" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:694 src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/PresetComboBoxes.cpp:694 src/slic3r/GUI/Tab.cpp:2958 msgid "Edit physical printer" msgstr "" @@ -6202,11 +6222,11 @@ msgstr "" msgid "Just switch to \"%1%\" preset" msgstr "" -#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2391 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2389 msgid "Stealth" msgstr "" -#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2385 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2383 msgid "Normal" msgstr "" @@ -6388,7 +6408,7 @@ msgstr "" msgid "symbolic profile name" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1374 src/slic3r/GUI/Tab.cpp:4007 +#: src/slic3r/GUI/Tab.cpp:1374 src/slic3r/GUI/Tab.cpp:4005 msgid "Layers and perimeters" msgstr "" @@ -6472,7 +6492,7 @@ msgstr "" msgid "Other" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1570 src/slic3r/GUI/Tab.cpp:4083 +#: src/slic3r/GUI/Tab.cpp:1570 src/slic3r/GUI/Tab.cpp:4081 msgid "Output options" msgstr "" @@ -6484,7 +6504,7 @@ msgstr "" msgid "Extruder clearance (mm)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1578 src/slic3r/GUI/Tab.cpp:4084 +#: src/slic3r/GUI/Tab.cpp:1578 src/slic3r/GUI/Tab.cpp:4082 msgid "Output file" msgstr "" @@ -6496,19 +6516,19 @@ msgstr "" #: src/slic3r/GUI/Tab.cpp:1900 src/slic3r/GUI/Tab.cpp:1901 #: src/slic3r/GUI/Tab.cpp:2234 src/slic3r/GUI/Tab.cpp:2235 #: src/slic3r/GUI/Tab.cpp:2310 src/slic3r/GUI/Tab.cpp:2311 -#: src/slic3r/GUI/Tab.cpp:3950 src/slic3r/GUI/Tab.cpp:3951 +#: src/slic3r/GUI/Tab.cpp:3948 src/slic3r/GUI/Tab.cpp:3949 msgid "Notes" msgstr "" #: src/slic3r/GUI/Tab.cpp:1598 src/slic3r/GUI/Tab.cpp:1908 #: src/slic3r/GUI/Tab.cpp:2241 src/slic3r/GUI/Tab.cpp:2317 -#: src/slic3r/GUI/Tab.cpp:3958 src/slic3r/GUI/Tab.cpp:4089 +#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4087 msgid "Dependencies" msgstr "" #: src/slic3r/GUI/Tab.cpp:1599 src/slic3r/GUI/Tab.cpp:1909 #: src/slic3r/GUI/Tab.cpp:2242 src/slic3r/GUI/Tab.cpp:2318 -#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 +#: src/slic3r/GUI/Tab.cpp:3957 src/slic3r/GUI/Tab.cpp:4088 msgid "Profile dependencies" msgstr "" @@ -6617,7 +6637,7 @@ msgid "" "nozzle diameter value?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:2522 +#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:2520 #: src/libslic3r/PrintConfig.cpp:1443 msgid "Nozzle diameter" msgstr "" @@ -6662,15 +6682,15 @@ msgstr "" msgid "Tilt time" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2283 src/slic3r/GUI/Tab.cpp:3934 +#: src/slic3r/GUI/Tab.cpp:2283 src/slic3r/GUI/Tab.cpp:3932 msgid "Corrections" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2300 src/slic3r/GUI/Tab.cpp:3930 +#: src/slic3r/GUI/Tab.cpp:2300 src/slic3r/GUI/Tab.cpp:3928 msgid "Exposure" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2359 src/slic3r/GUI/Tab.cpp:2455 +#: src/slic3r/GUI/Tab.cpp:2359 src/slic3r/GUI/Tab.cpp:2453 #: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1246 #: src/libslic3r/PrintConfig.cpp:1263 src/libslic3r/PrintConfig.cpp:1280 #: src/libslic3r/PrintConfig.cpp:1296 src/libslic3r/PrintConfig.cpp:1306 @@ -6678,170 +6698,170 @@ msgstr "" msgid "Machine limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2384 +#: src/slic3r/GUI/Tab.cpp:2382 msgid "Values in this column are for Normal mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2390 +#: src/slic3r/GUI/Tab.cpp:2388 msgid "Values in this column are for Stealth mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2399 +#: src/slic3r/GUI/Tab.cpp:2397 msgid "Maximum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2404 +#: src/slic3r/GUI/Tab.cpp:2402 msgid "Maximum accelerations" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2411 +#: src/slic3r/GUI/Tab.cpp:2409 msgid "Jerk limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2416 +#: src/slic3r/GUI/Tab.cpp:2414 msgid "Minimum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2480 src/slic3r/GUI/Tab.cpp:2488 +#: src/slic3r/GUI/Tab.cpp:2478 src/slic3r/GUI/Tab.cpp:2486 msgid "Single extruder MM setup" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2489 +#: src/slic3r/GUI/Tab.cpp:2487 msgid "Single extruder multimaterial parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2520 +#: src/slic3r/GUI/Tab.cpp:2518 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2544 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Layer height limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2549 +#: src/slic3r/GUI/Tab.cpp:2547 msgid "Position (for multi-extruder printers)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2555 +#: src/slic3r/GUI/Tab.cpp:2553 msgid "Only lift Z" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2568 +#: src/slic3r/GUI/Tab.cpp:2566 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:2573 msgid "Reset to Filament Color" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2753 +#: src/slic3r/GUI/Tab.cpp:2751 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2755 +#: src/slic3r/GUI/Tab.cpp:2753 msgid "Firmware Retraction" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3341 +#: src/slic3r/GUI/Tab.cpp:3339 msgid "Detached" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3404 +#: src/slic3r/GUI/Tab.cpp:3402 msgid "remove" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3404 +#: src/slic3r/GUI/Tab.cpp:3402 msgid "delete" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3413 +#: src/slic3r/GUI/Tab.cpp:3411 msgid "It's a last preset for this physical printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3418 +#: src/slic3r/GUI/Tab.cpp:3416 msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " "\"%2%\"?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3430 +#: src/slic3r/GUI/Tab.cpp:3428 msgid "" "The physical printer(s) below is based on the preset, you are going to " "delete." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3434 +#: src/slic3r/GUI/Tab.cpp:3432 msgid "" "Note, that selected preset will be deleted from this/those printer(s) too." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3438 +#: src/slic3r/GUI/Tab.cpp:3436 msgid "" "The physical printer(s) below is based only on the preset, you are going to " "delete." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3442 +#: src/slic3r/GUI/Tab.cpp:3440 msgid "" "Note, that this/those printer(s) will be deleted after deleting of the " "selected preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3446 +#: src/slic3r/GUI/Tab.cpp:3444 msgid "Are you sure you want to %1% the selected preset?" msgstr "" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3451 +#: src/slic3r/GUI/Tab.cpp:3449 msgid "%1% Preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3532 src/slic3r/GUI/Tab.cpp:3604 +#: src/slic3r/GUI/Tab.cpp:3530 src/slic3r/GUI/Tab.cpp:3602 msgid "Set" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3668 +#: src/slic3r/GUI/Tab.cpp:3666 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3671 +#: src/slic3r/GUI/Tab.cpp:3669 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " "apply a different set of machine limits." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3675 +#: src/slic3r/GUI/Tab.cpp:3673 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3697 +#: src/slic3r/GUI/Tab.cpp:3695 msgid "LOCKED LOCK" msgstr "" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3699 +#: src/slic3r/GUI/Tab.cpp:3697 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "UNLOCKED LOCK" msgstr "" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3703 +#: src/slic3r/GUI/Tab.cpp:3701 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -6849,23 +6869,23 @@ msgid "" "to the system (or default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3708 +#: src/slic3r/GUI/Tab.cpp:3706 msgid "WHITE BULLET" msgstr "" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3713 +#: src/slic3r/GUI/Tab.cpp:3711 msgid "BACK ARROW" msgstr "" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -6873,13 +6893,13 @@ msgid "" "to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3725 +#: src/slic3r/GUI/Tab.cpp:3723 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -6887,17 +6907,17 @@ msgid "" "default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3730 +#: src/slic3r/GUI/Tab.cpp:3728 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3733 +#: src/slic3r/GUI/Tab.cpp:3731 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3735 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -6905,63 +6925,63 @@ msgid "" "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3741 +#: src/slic3r/GUI/Tab.cpp:3739 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" "Click to reset current value to the system (or default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3748 +#: src/slic3r/GUI/Tab.cpp:3746 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3749 +#: src/slic3r/GUI/Tab.cpp:3747 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" "Click to reset current value to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3893 src/slic3r/GUI/Tab.cpp:3895 +#: src/slic3r/GUI/Tab.cpp:3891 src/slic3r/GUI/Tab.cpp:3893 msgid "Material" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4017 +#: src/slic3r/GUI/Tab.cpp:4015 msgid "Support head" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4022 +#: src/slic3r/GUI/Tab.cpp:4020 msgid "Support pillar" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4045 +#: src/slic3r/GUI/Tab.cpp:4043 msgid "Connection of the support sticks and junctions" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4050 +#: src/slic3r/GUI/Tab.cpp:4048 msgid "Automatic generation" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4124 +#: src/slic3r/GUI/Tab.cpp:4122 msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" "To enable \"%1%\", please switch off \"%2%\"" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4126 src/libslic3r/PrintConfig.cpp:2908 +#: src/slic3r/GUI/Tab.cpp:4124 src/libslic3r/PrintConfig.cpp:2908 msgid "Object elevation" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4126 src/libslic3r/PrintConfig.cpp:3010 +#: src/slic3r/GUI/Tab.cpp:4124 src/libslic3r/PrintConfig.cpp:3010 msgid "Pad around object" msgstr "" diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index f5c0d8f53..694cd7103 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -794,7 +794,7 @@ bool GUI_App::on_init_inner() #ifndef __linux__ wxYield(); #endif - scrn->SetText(_L("Loading configuration...")); + scrn->SetText(_L("Loading configuration")+ dots); } preset_bundle = new PresetBundle(); @@ -852,7 +852,7 @@ bool GUI_App::on_init_inner() // application frame if (scrn && is_editor()) - scrn->SetText(_L("Preparing settings tabs...")); + scrn->SetText(_L("Preparing settings tabs") + dots); mainframe = new MainFrame(); // hide settings tabs after first Layout diff --git a/src/slic3r/GUI/Jobs/SLAImportJob.cpp b/src/slic3r/GUI/Jobs/SLAImportJob.cpp index adecae6ac..ec289ae34 100644 --- a/src/slic3r/GUI/Jobs/SLAImportJob.cpp +++ b/src/slic3r/GUI/Jobs/SLAImportJob.cpp @@ -36,7 +36,7 @@ public: "SL1 archive files (*.sl1, *.zip)|*.sl1;*.SL1;*.zip;*.ZIP", wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE | wxFD_OPEN | wxFD_FILE_MUST_EXIST); - szfilepck->Add(new wxStaticText(this, wxID_ANY, _(L("Import file: "))), 0, wxALIGN_CENTER); + szfilepck->Add(new wxStaticText(this, wxID_ANY, _L("Import file") + ": "), 0, wxALIGN_CENTER); szfilepck->Add(m_filepicker, 1); szvert->Add(szfilepck, 0, wxALL | wxEXPAND, 5); @@ -53,7 +53,7 @@ public: inp_choices.size(), inp_choices.data(), wxCB_READONLY | wxCB_DROPDOWN); szchoices->Add(m_import_dropdown); - szchoices->Add(new wxStaticText(this, wxID_ANY, _(L("Quality: "))), 0, wxALIGN_CENTER | wxALL, 5); + szchoices->Add(new wxStaticText(this, wxID_ANY, _L("Quality") + ": "), 0, wxALIGN_CENTER | wxALL, 5); static const std::vector<wxString> qual_choices = { _(L("Accurate")), diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 0a6ad968e..fc0b6c46d 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -162,8 +162,8 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S #endif // ENABLE_GCODE_VIEWER m_statusbar->embed(this); m_statusbar->set_status_text(_L("Version") + " " + - SLIC3R_VERSION + - _L(" - Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases")); + SLIC3R_VERSION + " - " + + _L("Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases")); // initialize tabpanel and menubar init_tabpanel(); @@ -1582,7 +1582,7 @@ void MainFrame::quick_slice(const int qs) m_progress_dialog->Destroy(); m_progress_dialog = nullptr; - auto message = input_file_basename + _L(" was successfully sliced."); + auto message = format(_L("%1% was successfully sliced."), input_file_basename); // wxTheApp->notify(message); wxMessageDialog(this, message, _L("Slicing Done!"), wxOK | wxICON_INFORMATION).ShowModal(); // }; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 37de7b1d8..ea09e1d9b 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -745,9 +745,9 @@ Sidebar::Sidebar(Plater *parent) (*btn)->Hide(); }; - init_scalable_btn(&p->btn_send_gcode , "export_gcode", _L("Send to printer ") + GUI::shortkey_ctrl_prefix() + "Shift+G"); + init_scalable_btn(&p->btn_send_gcode , "export_gcode", _L("Send to printer") + " " +GUI::shortkey_ctrl_prefix() + "Shift+G"); // init_scalable_btn(&p->btn_eject_device, "eject_sd" , _L("Remove device ") + GUI::shortkey_ctrl_prefix() + "T"); - init_scalable_btn(&p->btn_export_gcode_removable, "export_to_sd", _L("Export to SD card / Flash drive ") + GUI::shortkey_ctrl_prefix() + "U"); + init_scalable_btn(&p->btn_export_gcode_removable, "export_to_sd", _L("Export to SD card / Flash drive") + " " + GUI::shortkey_ctrl_prefix() + "U"); // regular buttons "Slice now" and "Export G-code" From 87e187582243f20cc296e8a883e7b30c86ae8724 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Wed, 18 Nov 2020 13:04:34 +0100 Subject: [PATCH 040/138] ENABLE_GCODE_VIEWER set as default in: SysInfoDialog.cpp Selection hpp/cpp Preferences.cpp GUI_Utils.hpp KBShortcutsDialog.cpp --- src/slic3r/GUI/GUI_Utils.hpp | 2 - src/slic3r/GUI/KBShortcutsDialog.cpp | 16 ----- src/slic3r/GUI/Preferences.cpp | 24 ------- src/slic3r/GUI/Selection.cpp | 101 +-------------------------- src/slic3r/GUI/Selection.hpp | 14 ---- src/slic3r/GUI/SysInfoDialog.cpp | 20 ------ 6 files changed, 3 insertions(+), 174 deletions(-) diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp index 0c6dd299b..3235d6e9e 100644 --- a/src/slic3r/GUI/GUI_Utils.hpp +++ b/src/slic3r/GUI/GUI_Utils.hpp @@ -385,7 +385,6 @@ public: std::ostream& operator<<(std::ostream &os, const WindowMetrics& metrics); -#if ENABLE_GCODE_VIEWER inline int hex_digit_to_int(const char c) { return @@ -393,7 +392,6 @@ inline int hex_digit_to_int(const char c) (c >= 'A' && c <= 'F') ? int(c - 'A') + 10 : (c >= 'a' && c <= 'f') ? int(c - 'a') + 10 : -1; } -#endif // ENABLE_GCODE_VIEWER class TaskTimer { diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 7146ea077..62fb1cec9 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -7,9 +7,7 @@ #include <wx/display.h> #include "GUI_App.hpp" #include "wxExtensions.hpp" -#if ENABLE_GCODE_VIEWER #include "MainFrame.hpp" -#endif // ENABLE_GCODE_VIEWER #define NOTEBOOK_TOP 1 #define NOTEBOOK_LEFT 2 @@ -33,11 +31,7 @@ namespace Slic3r { namespace GUI { KBShortcutsDialog::KBShortcutsDialog() -#if ENABLE_GCODE_VIEWER : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, wxString(wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME) + " - " + _L("Keyboard Shortcuts"), -#else - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _L("Keyboard Shortcuts"), -#endif // ENABLE_GCODE_VIEWER wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); @@ -97,9 +91,7 @@ void KBShortcutsDialog::fill_shortcuts() const std::string& ctrl = GUI::shortkey_ctrl_prefix(); const std::string& alt = GUI::shortkey_alt_prefix(); -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) { -#endif // ENABLE_GCODE_VIEWER Shortcuts commands_shortcuts = { // File { ctrl + "N", L("New project, clear plater") }, @@ -204,9 +196,7 @@ void KBShortcutsDialog::fill_shortcuts() }; m_full_shortcuts.push_back(std::make_pair(_L("Gizmos"), gizmos_shortcuts)); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER Shortcuts preview_shortcuts = { { L("Arrow Up"), L("Upper Layer") }, @@ -231,7 +221,6 @@ void KBShortcutsDialog::fill_shortcuts() m_full_shortcuts.push_back(std::make_pair(_L("Layers Slider"), layers_slider_shortcuts)); -#if ENABLE_GCODE_VIEWER Shortcuts sequential_slider_shortcuts = { { L("Arrow Left"), L("Move current slider thumb Left") }, { L("Arrow Right"), L("Move current slider thumb Right") }, @@ -240,7 +229,6 @@ void KBShortcutsDialog::fill_shortcuts() }; m_full_shortcuts.push_back(std::make_pair(_L("Sequential Slider"), sequential_slider_shortcuts)); -#endif // ENABLE_GCODE_VIEWER } wxPanel* KBShortcutsDialog::create_header(wxWindow* parent, const wxFont& bold_font) @@ -258,11 +246,7 @@ wxPanel* KBShortcutsDialog::create_header(wxWindow* parent, const wxFont& bold_f sizer->AddStretchSpacer(); // logo -#if ENABLE_GCODE_VIEWER m_logo_bmp = ScalableBitmap(this, wxGetApp().is_editor() ? "PrusaSlicer_32px.png" : "PrusaSlicer-gcodeviewer_32px.png", 32); -#else - m_logo_bmp = ScalableBitmap(this, "PrusaSlicer_32px.png", 32); -#endif // ENABLE_GCODE_VIEWER m_header_bitmap = new wxStaticBitmap(panel, wxID_ANY, m_logo_bmp.bmp()); sizer->Add(m_header_bitmap, 0, wxEXPAND | wxLEFT | wxRIGHT, 10); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index fd4714dca..aed336b5c 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -40,25 +40,17 @@ void PreferencesDialog::build() // readonly = > !wxTheApp->have_version_check, // )); -#if ENABLE_GCODE_VIEWER bool is_editor = wxGetApp().is_editor(); -#endif // ENABLE_GCODE_VIEWER ConfigOptionDef def; -#if ENABLE_GCODE_VIEWER Option option(def, ""); if (is_editor) { -#endif // ENABLE_GCODE_VIEWER def.label = L("Remember output directory"); def.type = coBool; def.tooltip = L("If this is enabled, Slic3r will prompt the last output directory " "instead of the one containing the input files."); def.set_default_value(new ConfigOptionBool{ app_config->has("remember_output_path") ? app_config->get("remember_output_path") == "1" : true }); -#if ENABLE_GCODE_VIEWER option = Option(def, "remember_output_path"); -#else - Option option(def, "remember_output_path"); -#endif // ENABLE_GCODE_VIEWER m_optgroup_general->append_single_option_line(option); def.label = L("Auto-center parts"); @@ -134,9 +126,7 @@ void PreferencesDialog::build() def.set_default_value(new ConfigOptionBool{ app_config->has("single_instance") ? app_config->get("single_instance") == "1" : false }); option = Option(def, "single_instance"); m_optgroup_general->append_single_option_line(option); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER #if __APPLE__ def.label = L("Use Retina resolution for the 3D scene"); @@ -221,9 +211,7 @@ void PreferencesDialog::build() } }; -#if ENABLE_GCODE_VIEWER if (is_editor) { -#endif // ENABLE_GCODE_VIEWER def.label = L("Show sidebar collapse/expand button"); def.type = coBool; def.tooltip = L("If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene"); @@ -237,7 +225,6 @@ void PreferencesDialog::build() def.set_default_value(new ConfigOptionBool{ app_config->get("use_custom_toolbar_size") == "1" }); option = Option(def, "use_custom_toolbar_size"); m_optgroup_gui->append_single_option_line(option); -#if ENABLE_GCODE_VIEWER } def.label = L("Sequential slider applied only to top layer"); @@ -247,24 +234,17 @@ void PreferencesDialog::build() def.set_default_value(new ConfigOptionBool{ app_config->get("seq_top_layer_only") == "1" }); option = Option(def, "seq_top_layer_only"); m_optgroup_gui->append_single_option_line(option); -#endif // ENABLE_GCODE_VIEWER m_optgroup_gui->activate(); -#if ENABLE_GCODE_VIEWER if (is_editor) { -#endif // ENABLE_GCODE_VIEWER create_icon_size_slider(); m_icon_size_sizer->ShowItems(app_config->get("use_custom_toolbar_size") == "1"); create_settings_mode_widget(); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER if (is_editor) { -#endif // ENABLE_GCODE_VIEWER #if ENABLE_ENVIRONMENT_MAP m_optgroup_render = std::make_shared<ConfigOptionsGroup>(this, _L("Render")); m_optgroup_render->label_width = 40; @@ -281,18 +261,14 @@ void PreferencesDialog::build() m_optgroup_render->activate(); #endif // ENABLE_ENVIRONMENT_MAP -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER auto sizer = new wxBoxSizer(wxVERTICAL); sizer->Add(m_optgroup_general->sizer, 0, wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT, 10); sizer->Add(m_optgroup_camera->sizer, 0, wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT, 10); sizer->Add(m_optgroup_gui->sizer, 0, wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT, 10); #if ENABLE_ENVIRONMENT_MAP -#if ENABLE_GCODE_VIEWER if (m_optgroup_render != nullptr) -#endif // ENABLE_GCODE_VIEWER sizer->Add(m_optgroup_render->sizer, 0, wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT, 10); #endif // ENABLE_ENVIRONMENT_MAP diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index f7a62a468..610881aed 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -16,9 +16,7 @@ #include <GL/glew.h> #include <boost/algorithm/string/predicate.hpp> -#if ENABLE_GCODE_VIEWER #include <boost/log/trivial.hpp> -#endif // ENABLE_GCODE_VIEWER static const float UNIFORM_SCALE_COLOR[4] = { 0.923f, 0.504f, 0.264f, 1.0f }; @@ -113,11 +111,6 @@ Selection::Selection() , m_valid(false) , m_scale_factor(1.0f) { -#if !ENABLE_GCODE_VIEWER - m_arrow.reset(new GLArrow); - m_curved_arrow.reset(new GLCurvedArrow(16)); -#endif // !ENABLE_GCODE_VIEWER - this->set_bounding_boxes_dirty(); #if ENABLE_RENDER_SELECTION_CENTER m_quadric = ::gluNewQuadric(); @@ -143,20 +136,8 @@ void Selection::set_volumes(GLVolumePtrs* volumes) // Init shall be called from the OpenGL render function, so that the OpenGL context is initialized! bool Selection::init() { -#if ENABLE_GCODE_VIEWER m_arrow.init_from(straight_arrow(10.0f, 5.0f, 5.0f, 10.0f, 1.0f)); m_curved_arrow.init_from(circular_arrow(16, 10.0f, 5.0f, 10.0f, 5.0f, 1.0f)); -#else - if (!m_arrow->init()) - return false; - - m_arrow->set_scale(5.0 * Vec3d::Ones()); - - if (!m_curved_arrow->init()) - return false; - - m_curved_arrow->set_scale(5.0 * Vec3d::Ones()); -#endif //ENABLE_GCODE_VIEWER return true; } @@ -1962,7 +1943,6 @@ void Selection::render_bounding_box(const BoundingBoxf3& box, float* color) cons glsafe(::glEnd()); } -#if ENABLE_GCODE_VIEWER void Selection::render_sidebar_position_hints(const std::string& sidebar_field) const { auto set_color = [](Axis axis) { @@ -1984,25 +1964,7 @@ void Selection::render_sidebar_position_hints(const std::string& sidebar_field) m_arrow.render(); } } -#else -void Selection::render_sidebar_position_hints(const std::string& sidebar_field) const -{ - if (boost::ends_with(sidebar_field, "x")) - { - glsafe(::glRotated(-90.0, 0.0, 0.0, 1.0)); - render_sidebar_position_hint(X); - } - else if (boost::ends_with(sidebar_field, "y")) - render_sidebar_position_hint(Y); - else if (boost::ends_with(sidebar_field, "z")) - { - glsafe(::glRotated(90.0, 1.0, 0.0, 0.0)); - render_sidebar_position_hint(Z); - } -} -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER void Selection::render_sidebar_rotation_hints(const std::string& sidebar_field) const { auto set_color = [](Axis axis) { @@ -2030,23 +1992,6 @@ void Selection::render_sidebar_rotation_hints(const std::string& sidebar_field) render_sidebar_rotation_hint(); } } -#else -void Selection::render_sidebar_rotation_hints(const std::string & sidebar_field) const -{ - if (boost::ends_with(sidebar_field, "x")) - { - glsafe(::glRotated(90.0, 0.0, 1.0, 0.0)); - render_sidebar_rotation_hint(X); - } - else if (boost::ends_with(sidebar_field, "y")) - { - glsafe(::glRotated(-90.0, 1.0, 0.0, 0.0)); - render_sidebar_rotation_hint(Y); - } - else if (boost::ends_with(sidebar_field, "z")) - render_sidebar_rotation_hint(Z); -} -#endif // ENABLE_GCODE_VIEWER void Selection::render_sidebar_scale_hints(const std::string& sidebar_field) const { @@ -2058,38 +2003,27 @@ void Selection::render_sidebar_scale_hints(const std::string& sidebar_field) con shader->set_uniform("uniform_color", uniform_scale ? UNIFORM_SCALE_COLOR : AXES_COLOR[axis], 4); glsafe(::glTranslated(0.0, 5.0, 0.0)); -#if ENABLE_GCODE_VIEWER m_arrow.render(); -#else - m_arrow->render(); -#endif // ENABLE_GCODE_VIEWER glsafe(::glTranslated(0.0, -10.0, 0.0)); glsafe(::glRotated(180.0, 0.0, 0.0, 1.0)); -#if ENABLE_GCODE_VIEWER m_arrow.render(); -#else - m_arrow->render(); -#endif // ENABLE_GCODE_VIEWER }; - if (boost::ends_with(sidebar_field, "x") || uniform_scale) - { + if (boost::ends_with(sidebar_field, "x") || uniform_scale) { glsafe(::glPushMatrix()); glsafe(::glRotated(-90.0, 0.0, 0.0, 1.0)); render_sidebar_scale_hint(X); glsafe(::glPopMatrix()); } - if (boost::ends_with(sidebar_field, "y") || uniform_scale) - { + if (boost::ends_with(sidebar_field, "y") || uniform_scale) { glsafe(::glPushMatrix()); render_sidebar_scale_hint(Y); glsafe(::glPopMatrix()); } - if (boost::ends_with(sidebar_field, "z") || uniform_scale) - { + if (boost::ends_with(sidebar_field, "z") || uniform_scale) { glsafe(::glPushMatrix()); glsafe(::glRotated(90.0, 1.0, 0.0, 0.0)); render_sidebar_scale_hint(Z); @@ -2169,35 +2103,6 @@ void Selection::render_sidebar_layers_hints(const std::string& sidebar_field) co glsafe(::glDisable(GL_BLEND)); } -#if !ENABLE_GCODE_VIEWER -void Selection::render_sidebar_position_hint(Axis axis) const -{ - m_arrow->set_color(AXES_COLOR[axis], 3); - m_arrow->render(); -} - -void Selection::render_sidebar_rotation_hint(Axis axis) const -{ - m_curved_arrow->set_color(AXES_COLOR[axis], 3); - m_curved_arrow->render(); - - glsafe(::glRotated(180.0, 0.0, 0.0, 1.0)); - m_curved_arrow->render(); -} - -void Selection::render_sidebar_scale_hint(Axis axis) const -{ - m_arrow->set_color(((requires_uniform_scale() || wxGetApp().obj_manipul()->get_uniform_scaling()) ? UNIFORM_SCALE_COLOR : AXES_COLOR[axis]), 3); - - glsafe(::glTranslated(0.0, 5.0, 0.0)); - m_arrow->render(); - - glsafe(::glTranslated(0.0, -10.0, 0.0)); - glsafe(::glRotated(180.0, 0.0, 0.0, 1.0)); - m_arrow->render(); -} -#endif // !ENABLE_GCODE_VIEWER - #ifndef NDEBUG static bool is_rotation_xy_synchronized(const Vec3d &rot_xyz_from, const Vec3d &rot_xyz_to) { diff --git a/src/slic3r/GUI/Selection.hpp b/src/slic3r/GUI/Selection.hpp index 2d87b9873..4da9e44a3 100644 --- a/src/slic3r/GUI/Selection.hpp +++ b/src/slic3r/GUI/Selection.hpp @@ -3,9 +3,7 @@ #include <set> #include "libslic3r/Geometry.hpp" -#if ENABLE_GCODE_VIEWER #include "GLModel.hpp" -#endif // ENABLE_GCODE_VIEWER #if ENABLE_RENDER_SELECTION_CENTER class GLUquadric; @@ -221,15 +219,8 @@ private: GLUquadricObj* m_quadric; #endif // ENABLE_RENDER_SELECTION_CENTER -#if ENABLE_GCODE_VIEWER GLModel m_arrow; GLModel m_curved_arrow; -#else - // Arrows are saved through pointers to avoid including 3DScene.hpp. - // It also allows mutability. - std::unique_ptr<GLArrow> m_arrow; - std::unique_ptr<GLCurvedArrow> m_curved_arrow; -#endif // ENABLE_GCODE_VIEWER mutable float m_scale_factor; @@ -386,11 +377,6 @@ private: void render_sidebar_rotation_hints(const std::string& sidebar_field) const; void render_sidebar_scale_hints(const std::string& sidebar_field) const; void render_sidebar_layers_hints(const std::string& sidebar_field) const; -#if !ENABLE_GCODE_VIEWER - void render_sidebar_position_hint(Axis axis) const; - void render_sidebar_rotation_hint(Axis axis) const; - void render_sidebar_scale_hint(Axis axis) const; -#endif // !ENABLE_GCODE_VIEWER public: enum SyncRotationType { diff --git a/src/slic3r/GUI/SysInfoDialog.cpp b/src/slic3r/GUI/SysInfoDialog.cpp index 6c2e99709..d112a295b 100644 --- a/src/slic3r/GUI/SysInfoDialog.cpp +++ b/src/slic3r/GUI/SysInfoDialog.cpp @@ -34,17 +34,9 @@ std::string get_main_info(bool format_as_html) std::string line_end = format_as_html ? "<br>" : "\n"; if (!format_as_html) -#if ENABLE_GCODE_VIEWER out << b_start << (wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME) << b_end << line_end; -#else - out << b_start << SLIC3R_APP_NAME << b_end << line_end; -#endif // ENABLE_GCODE_VIEWER out << b_start << "Version: " << b_end << SLIC3R_VERSION << line_end; -#if ENABLE_GCODE_VIEWER out << b_start << "Build: " << b_end << (wxGetApp().is_editor() ? SLIC3R_BUILD_ID : GCODEVIEWER_BUILD_ID) << line_end; -#else - out << b_start << "Build: " << b_end << SLIC3R_BUILD_ID << line_end; -#endif // ENABLE_GCODE_VIEWER out << line_end; out << b_start << "Operating System: " << b_end << wxPlatformInfo::Get().GetOperatingSystemFamilyName() << line_end; out << b_start << "System Architecture: " << b_end << wxPlatformInfo::Get().GetArchName() << line_end; @@ -86,11 +78,7 @@ std::string get_mem_info(bool format_as_html) } SysInfoDialog::SysInfoDialog() -#if ENABLE_GCODE_VIEWER : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, (wxGetApp().is_editor() ? wxString(SLIC3R_APP_NAME) : wxString(GCODEVIEWER_APP_NAME)) + " - " + _L("System Information"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) -#else - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _L("System Information"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER) -#endif // ENABLE_GCODE_VIEWER { wxColour bgr_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); SetBackgroundColour(bgr_clr); @@ -103,11 +91,7 @@ SysInfoDialog::SysInfoDialog() main_sizer->Add(hsizer, 1, wxEXPAND | wxALL, 10); // logo -#if ENABLE_GCODE_VIEWER m_logo_bmp = ScalableBitmap(this, wxGetApp().is_editor() ? "PrusaSlicer_192px.png" : "PrusaSlicer-gcodeviewer_192px.png", 192); -#else - m_logo_bmp = ScalableBitmap(this, "PrusaSlicer_192px.png", 192); -#endif // ENABLE_GCODE_VIEWER m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bmp.bmp()); hsizer->Add(m_logo, 0, wxALIGN_CENTER_VERTICAL); @@ -116,11 +100,7 @@ SysInfoDialog::SysInfoDialog() // title { -#if ENABLE_GCODE_VIEWER wxStaticText* title = new wxStaticText(this, wxID_ANY, wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME, wxDefaultPosition, wxDefaultSize); -#else - wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize); -#endif // ENABLE_GCODE_VIEWER wxFont title_font = wxGetApp().bold_font(); title_font.SetFamily(wxFONTFAMILY_ROMAN); title_font.SetPointSize(22); From 24b425cf575c9b78b5ef22f82e51a8bdca3199d2 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Wed, 18 Nov 2020 13:42:17 +0100 Subject: [PATCH 041/138] Follow-up of 808c43cb4b05b4e61abe07deee934bf63918bd22 -> Fixed drag and drop of non-project files --- src/slic3r/GUI/Plater.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 37de7b1d8..197c861e0 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1496,6 +1496,7 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &fi // Likely all paths processed were gcodes, for which a G-code viewer instance has hopefully been started. return false; + // searches for project files for (std::vector<fs::path>::const_reverse_iterator it = paths.rbegin(); it != paths.rend(); ++it) { std::string filename = (*it).filename().string(); if (boost::algorithm::iends_with(filename, ".3mf") || boost::algorithm::iends_with(filename, ".amf")) { @@ -1538,10 +1539,31 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &fi break; } } - break; + + return true; } } + // other files + wxString snapshot_label; + assert(!paths.empty()); + if (paths.size() == 1) { + snapshot_label = _L("Load File"); + snapshot_label += ": "; + snapshot_label += wxString::FromUTF8(paths.front().filename().string().c_str()); + } + else { + snapshot_label = _L("Load Files"); + snapshot_label += ": "; + snapshot_label += wxString::FromUTF8(paths.front().filename().string().c_str()); + for (size_t i = 1; i < paths.size(); ++i) { + snapshot_label += ", "; + snapshot_label += wxString::FromUTF8(paths[i].filename().string().c_str()); + } + } + Plater::TakeSnapshot snapshot(plater, snapshot_label); + plater->load_files(paths); + return true; } From 6e748f2e4ac30b49201c0e4bc067a6100bb86d52 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Wed, 11 Nov 2020 18:12:32 +0100 Subject: [PATCH 042/138] Implemented ruler for the vertical DoubleSlider --- src/slic3r/GUI/DoubleSlider.cpp | 175 +++++++++++++++++++++++++++----- src/slic3r/GUI/DoubleSlider.hpp | 13 ++- 2 files changed, 159 insertions(+), 29 deletions(-) diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index 6e1b6a8cd..64ea70514 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -4,6 +4,7 @@ #include "libslic3r/GCode.hpp" #else #include "wxExtensions.hpp" +#include "libslic3r/GCode/PreviewData.hpp" #endif // ENABLE_GCODE_VIEWER #include "GUI.hpp" #include "GUI_App.hpp" @@ -12,6 +13,7 @@ #include "ExtruderSequenceDialog.hpp" #include "libslic3r/Print.hpp" #include "libslic3r/AppConfig.hpp" +#include "GUI_Utils.hpp" #include <wx/button.h> #include <wx/dialog.h> @@ -68,7 +70,8 @@ Control::Control( wxWindow *parent, m_higher_value (higherValue), m_min_value(minValue), m_max_value(maxValue), - m_style(style == wxSL_HORIZONTAL || style == wxSL_VERTICAL ? style: wxSL_HORIZONTAL) + m_style(style == wxSL_HORIZONTAL || style == wxSL_VERTICAL ? style: wxSL_HORIZONTAL), + m_extra_style(style == wxSL_VERTICAL ? wxSL_AUTOTICKS | wxSL_VALUE_LABEL : 0) { #ifdef __WXOSX__ is_osx = true; @@ -443,6 +446,9 @@ void Control::render() // and only in a case of no-empty m_values draw_colored_band(dc); + if (m_extra_style & wxSL_AUTOTICKS) + draw_ruler(dc); + if (!m_render_as_disabled) { // draw line draw_scroll_line(dc, lower_pos, higher_pos); @@ -569,9 +575,16 @@ void Control::draw_tick_on_mouse_position(wxDC& dc) //draw info line dc.SetPen(LIGHT_GREY_PEN); draw_ticks(dc, pos); + + if (m_extra_style & wxSL_VALUE_LABEL) { + wxColour old_clr = dc.GetTextForeground(); + dc.SetTextForeground(LIGHT_GREY_PEN.GetColour()); + draw_tick_text(dc, pos, tick, ltEstimatedTime, false); + dc.SetTextForeground(old_clr); + } } -wxString Control::get_label(int tick) const +wxString Control::get_label(int tick, LabelType label_type/* = ltHeightWithLayer*/) const { const int value = tick; @@ -584,23 +597,33 @@ wxString Control::get_label(int tick) const if (m_draw_mode == dmSequentialGCodeView) return wxString::Format("%d", static_cast<unsigned int>(m_values[value])); else { - const wxString str = m_values.empty() ? + if (label_type == ltEstimatedTime) + // ysFIXME get estimated time for the current tick + return "time"; + wxString str = m_values.empty() ? wxString::Format("%.*f", 2, m_label_koef * value) : wxString::Format("%.*f", 2, m_values[value]); - return format_wxstr("%1%\n(%2%)", str, m_values.empty() ? value : value + 1); + if (label_type == ltHeight) + return str; + if (label_type == ltHeightWithLayer) + return format_wxstr("%1%\n(%2%)", str, m_values.empty() ? value : value + 1); } #else const wxString str = m_values.empty() ? wxNumberFormatter::ToString(m_label_koef * value, 2, wxNumberFormatter::Style_None) : wxNumberFormatter::ToString(m_values[value], 2, wxNumberFormatter::Style_None); - return format_wxstr("%1%\n(%2%)", str, m_values.empty() ? value : value + 1); + if (label_type == ltHeight) + return str; + if (label_type == ltHeightWithLayer) + return format_wxstr("%1%\n(%2%)", str, m_values.empty() ? value : value + 1); #endif // ENABLE_GCODE_VIEWER + return wxEmptyString; } -void Control::draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, bool right_side/*=true*/) const +void Control::draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, LabelType label_type/* = ltHeight*/, bool right_side/*=true*/) const { wxCoord text_width, text_height; - const wxString label = get_label(tick); + const wxString label = get_label(tick, label_type); dc.GetMultiLineTextExtent(label, &text_width, &text_height); wxPoint text_pos; if (right_side) { @@ -615,9 +638,6 @@ void Control::draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, bool right_ } else text_pos = wxPoint(pos.x + m_thumb_size.x + 1, pos.y - 0.5 * text_height - 1); - - // update text rectangle - m_rect_lower_thumb_text = wxRect(text_pos, wxSize(text_width, text_height)); } else { if (is_horizontal()) { @@ -627,9 +647,6 @@ void Control::draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, bool right_ } else text_pos = wxPoint(pos.x - text_width - 1 - m_thumb_size.x, pos.y - 0.5 * text_height + 1); - - // update text rectangle - m_rect_higher_thumb_text = wxRect(text_pos, wxSize(text_width, text_height)); } dc.DrawText(label, text_pos); @@ -637,7 +654,7 @@ void Control::draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, bool right_ void Control::draw_thumb_text(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection) const { - draw_tick_text(dc, pos, selection == ssLower ? m_lower_value : m_higher_value, selection == ssLower); + draw_tick_text(dc, pos, selection == ssLower ? m_lower_value : m_higher_value, ltHeightWithLayer, selection == ssLower); } void Control::draw_thumb_item(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection) @@ -866,6 +883,98 @@ void Control::draw_colored_band(wxDC& dc) } } +void Control::draw_ruler(wxDC& dc) +{ + int height, width; + get_size(&width, &height); + const wxCoord mid = is_horizontal() ? 0.5 * height : 0.5 * width; + + int DPI = GUI::get_dpi_for_window(this->GetParent()); + int pixels_per_sm = lround((double)(DPI) * 5.0/25.4); + + int pow = -1; + int step = 0; + double ruler_short_step; + + while (pow < 3) { + for (int istep : {1, 2, 5}) { + double val = (double)istep * std::pow(10,pow); + auto val_it = std::lower_bound(m_values.begin(), m_values.end(), val - epsilon()); + + if (val_it == m_values.end()) + break; + int tick = val_it - m_values.begin(); + + if (lround(tick * get_scroll_step()) > pixels_per_sm) { + step = istep; + + // find next tick with istep + val *= 2; + val_it = std::lower_bound(m_values.begin(), m_values.end(), val - epsilon()); + // count of short ticks between ticks + int short_ticks_cnt = val_it == m_values.end() ? tick : val_it - m_values.begin() - tick; + // there couldn't be more then 10 short ticks between thicks + ruler_short_step = 0.1 * short_ticks_cnt; + break; + } + } + if (step > 0) + break; + pow++; + } + + if (step == 0) + return; + + auto draw_ticks = [this, mid](wxDC& dc, wxCoord pos, int tick_len) + { + int mid_space = 9; + is_horizontal() ? dc.DrawLine(pos, mid - (mid_space + tick_len), pos, mid - mid_space) : + dc.DrawLine(mid - (mid_space + tick_len), pos, mid - mid_space, pos); + is_horizontal() ? dc.DrawLine(pos, mid + (mid_space + tick_len), pos, mid + mid_space) : + dc.DrawLine(mid + (mid_space + tick_len), pos, mid + mid_space, pos); + }; + + auto draw_short_ticks = [this, draw_ticks, ruler_short_step](wxDC& dc, double& current_tick, int max_tick) + { + while (current_tick < max_tick) { + wxCoord pos = get_position_from_value(lround(current_tick)); + draw_ticks(dc, pos, 2); + current_tick += ruler_short_step; + } + }; + + dc.SetPen(LIGHT_GREY_PEN); + wxColour old_clr = dc.GetTextForeground(); + dc.SetTextForeground(LIGHT_GREY_PEN.GetColour()); + + double short_tick; + int tick = 0; + double value = 0.0; + + double interval = (double)step * std::pow(10, pow); + while (tick <= m_max_value) + { + value += interval; + short_tick = tick; + auto val_it = std::lower_bound(m_values.begin(), m_values.end(), value - epsilon()); + + if (val_it == m_values.end()) + break; + tick = val_it - m_values.begin(); + + wxCoord pos = get_position_from_value(tick); + draw_ticks(dc, pos, 5); + + draw_tick_text(dc, wxPoint(mid/* + 2*/, pos), tick); + draw_short_ticks(dc, short_tick, tick); + } + // short ticks from the last tick to the end + draw_short_ticks(dc, short_tick, m_max_value); + + dc.SetTextForeground(old_clr); +} + void Control::draw_one_layer_icon(wxDC& dc) { #if ENABLE_GCODE_VIEWER @@ -1083,9 +1192,9 @@ wxString Control::get_tooltip(int tick/*=-1*/) else #endif // ENABLE_GCODE_VIEWER return m_mode == MultiAsSingle ? - GUI::from_u8((boost::format(_u8L("Jump to height %s or " - "Set extruder sequence for the entire print")) % " (Shift + G)\n").str()) : - _L("Jump to height") + " (Shift + G)"; + GUI::from_u8((boost::format(_u8L("Jump to height %s Set ruler mode\n or " + "Set extruder sequence for the entire print")) % " (Shift + G)\n").str()) : + GUI::from_u8((boost::format(_u8L("Jump to height %s or Set ruler mode")) % " (Shift + G)\n").str()); #if ENABLE_GCODE_VIEWER } #endif // ENABLE_GCODE_VIEWER @@ -1339,14 +1448,7 @@ void Control::OnLeftUp(wxMouseEvent& event) add_current_tick(); break; case maCogIconClick : - if (m_mode == MultiAsSingle && m_draw_mode == dmRegular) - show_cog_icon_context_menu(); - else -#if ENABLE_GCODE_VIEWER - jump_to_value(); -#else - jump_to_print_z(); -#endif // ENABLE_GCODE_VIEWER + show_cog_icon_context_menu(); break; case maOneLayerIconClick: switch_one_layer_mode(); @@ -1736,8 +1838,27 @@ void Control::show_cog_icon_context_menu() [this](wxCommandEvent&) { jump_to_print_z(); }, "", &menu); #endif // ENABLE_GCODE_VIEWER - append_menu_item(&menu, wxID_ANY, _L("Set extruder sequence for the entire print"), "", - [this](wxCommandEvent&) { edit_extruder_sequence(); }, "", &menu); + wxMenu* ruler_mode_menu = new wxMenu(); + if (ruler_mode_menu) { + append_menu_check_item(ruler_mode_menu, wxID_ANY, _L("None"), _L("Supprese show the ruler"), + [this](wxCommandEvent&) { if (m_extra_style != 0) m_extra_style = 0; }, ruler_mode_menu, + []() { return true; }, [this]() { return m_extra_style == 0; }, GUI::wxGetApp().plater()); + + append_menu_check_item(ruler_mode_menu, wxID_ANY, _L("Show object height"), _L("Show object height on the ruler"), + [this](wxCommandEvent&) { m_extra_style & wxSL_AUTOTICKS ? m_extra_style &= wxSL_AUTOTICKS : m_extra_style |= wxSL_AUTOTICKS; }, ruler_mode_menu, + []() { return true; }, [this]() { return m_extra_style & wxSL_AUTOTICKS; }, GUI::wxGetApp().plater()); + + append_menu_check_item(ruler_mode_menu, wxID_ANY, _L("Show estimated print time"), _L("Show estimated print time on the ruler"), + [this](wxCommandEvent&) { m_extra_style & wxSL_VALUE_LABEL ? m_extra_style &= wxSL_VALUE_LABEL : m_extra_style |= wxSL_VALUE_LABEL; }, ruler_mode_menu, + []() { return true; }, [this]() { return m_extra_style & wxSL_VALUE_LABEL; }, GUI::wxGetApp().plater()); + + append_submenu(&menu, ruler_mode_menu, wxID_ANY, _L("Ruler mode"), _L("Set ruler mode"), "", + [this]() { return true; }, this); + } + + if (m_mode == MultiAsSingle && m_draw_mode == dmRegular) + append_menu_item(&menu, wxID_ANY, _L("Set extruder sequence for the entire print"), "", + [this](wxCommandEvent&) { edit_extruder_sequence(); }, "", &menu); GUI::wxGetApp().plater()->PopupMenu(&menu); } diff --git a/src/slic3r/GUI/DoubleSlider.hpp b/src/slic3r/GUI/DoubleSlider.hpp index 511858dd5..f909f105a 100644 --- a/src/slic3r/GUI/DoubleSlider.hpp +++ b/src/slic3r/GUI/DoubleSlider.hpp @@ -84,6 +84,13 @@ enum DrawMode #endif // ENABLE_GCODE_VIEWER }; +enum LabelType +{ + ltHeightWithLayer, + ltHeight, + ltEstimatedTime, +}; + struct TickCode { bool operator<(const TickCode& other) const { return other.tick > this->tick; } @@ -283,13 +290,14 @@ protected: void draw_thumbs(wxDC& dc, const wxCoord& lower_pos, const wxCoord& higher_pos); void draw_ticks(wxDC& dc); void draw_colored_band(wxDC& dc); + void draw_ruler(wxDC& dc); void draw_one_layer_icon(wxDC& dc); void draw_revert_icon(wxDC& dc); void draw_cog_icon(wxDC &dc); void draw_thumb_item(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection); void draw_info_line_with_icon(wxDC& dc, const wxPoint& pos, SelectedSlider selection); void draw_tick_on_mouse_position(wxDC &dc); - void draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, bool right_side = true) const; + void draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, LabelType label_type = ltHeight, bool right_side = true) const; void draw_thumb_text(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection) const; void update_thumb_rect(const wxCoord begin_x, const wxCoord begin_y, const SelectedSlider& selection); @@ -306,7 +314,7 @@ private: int get_tick_near_point(const wxPoint& pt); double get_scroll_step(); - wxString get_label(int tick) const; + wxString get_label(int tick, LabelType label_type = ltHeightWithLayer) const; void get_lower_and_higher_position(int& lower_pos, int& higher_pos); int get_value_from_position(const wxCoord x, const wxCoord y); int get_value_from_position(const wxPoint pos) { return get_value_from_position(pos.x, pos.y); } @@ -387,6 +395,7 @@ private: int m_revert_icon_dim; int m_cog_icon_dim; long m_style; + long m_extra_style; float m_label_koef = 1.0; std::vector<double> m_values; From cb844a4034e3445e7d15632fe5f00ee9c4330a97 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Mon, 16 Nov 2020 21:33:07 +0100 Subject: [PATCH 043/138] DoubleSlider's ruler is implemented in respect to the use with sequential printing of objects --- src/slic3r/GUI/DoubleSlider.cpp | 117 ++++++++++++++++++++------------ src/slic3r/GUI/DoubleSlider.hpp | 12 +++- 2 files changed, 85 insertions(+), 44 deletions(-) diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index 64ea70514..40463288e 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -243,6 +243,12 @@ void Control::SetMaxValue(const int max_value) Update(); } +void Control::SetSliderValues(const std::vector<double>& values) +{ + m_values = values; + m_ruler.count = std::count(m_values.begin(), m_values.end(), m_values.front()); +} + void Control::draw_scroll_line(wxDC& dc, const int lower_pos, const int higher_pos) { int width; @@ -732,6 +738,15 @@ void Control::draw_thumbs(wxDC& dc, const wxCoord& lower_pos, const wxCoord& hig draw_thumb_text(dc, pos_l, ssLower); } +void Control::draw_ticks_pair(wxDC& dc, wxCoord pos, wxCoord mid, int tick_len) +{ + int mid_space = 9; + is_horizontal() ? dc.DrawLine(pos, mid - (mid_space + tick_len), pos, mid - mid_space) : + dc.DrawLine(mid - (mid_space + tick_len), pos, mid - mid_space, pos); + is_horizontal() ? dc.DrawLine(pos, mid + (mid_space + tick_len), pos, mid + mid_space) : + dc.DrawLine(mid + (mid_space + tick_len), pos, mid + mid_space, pos); +}; + void Control::draw_ticks(wxDC& dc) { if (m_draw_mode == dmSlaPrint) @@ -743,11 +758,7 @@ void Control::draw_ticks(wxDC& dc) const wxCoord mid = is_horizontal() ? 0.5*height : 0.5*width; for (auto tick : m_ticks.ticks) { const wxCoord pos = get_position_from_value(tick.tick); - - is_horizontal() ? dc.DrawLine(pos, mid-14, pos, mid-9) : - dc.DrawLine(mid - 14, pos/* - 1*/, mid - 9, pos/* - 1*/); - is_horizontal() ? dc.DrawLine(pos, mid+14, pos, mid+9) : - dc.DrawLine(mid + 14, pos/* - 1*/, mid + 9, pos/* - 1*/); + draw_ticks_pair(dc, pos, mid, 7); // if current tick if focused, we should to use a specific "focused" icon bool focused_tick = m_moving_pos != wxDefaultPosition && tick.tick == get_tick_near_point(m_moving_pos); @@ -883,38 +894,35 @@ void Control::draw_colored_band(wxDC& dc) } } -void Control::draw_ruler(wxDC& dc) +void Control::Ruler::update(wxWindow* win, const std::vector<double>& values, double scroll_step) { - int height, width; - get_size(&width, &height); - const wxCoord mid = is_horizontal() ? 0.5 * height : 0.5 * width; - - int DPI = GUI::get_dpi_for_window(this->GetParent()); + int DPI = GUI::get_dpi_for_window(win); int pixels_per_sm = lround((double)(DPI) * 5.0/25.4); - int pow = -1; + int pow = -2; int step = 0; - double ruler_short_step; + auto end_it = count == 1 ? values.end() : values.begin() + lround(values.size() / count); while (pow < 3) { + int tick = 0; for (int istep : {1, 2, 5}) { double val = (double)istep * std::pow(10,pow); - auto val_it = std::lower_bound(m_values.begin(), m_values.end(), val - epsilon()); + auto val_it = std::lower_bound(values.begin(), end_it, val - epsilon()); - if (val_it == m_values.end()) + if (val_it == values.end()) break; - int tick = val_it - m_values.begin(); + int tick = val_it - values.begin(); - if (lround(tick * get_scroll_step()) > pixels_per_sm) { + if (lround(tick * scroll_step) > pixels_per_sm) { step = istep; // find next tick with istep val *= 2; - val_it = std::lower_bound(m_values.begin(), m_values.end(), val - epsilon()); + val_it = std::lower_bound(values.begin(), end_it, val - epsilon()); // count of short ticks between ticks - int short_ticks_cnt = val_it == m_values.end() ? tick : val_it - m_values.begin() - tick; + int short_ticks_cnt = val_it == values.end() ? tick : val_it - values.begin() - tick; // there couldn't be more then 10 short ticks between thicks - ruler_short_step = 0.1 * short_ticks_cnt; + short_step = 0.1 * short_ticks_cnt; break; } } @@ -923,24 +931,26 @@ void Control::draw_ruler(wxDC& dc) pow++; } - if (step == 0) - return; + long_step = step == 0 ? -1.0 : (double)step* std::pow(10, pow); +} - auto draw_ticks = [this, mid](wxDC& dc, wxCoord pos, int tick_len) - { - int mid_space = 9; - is_horizontal() ? dc.DrawLine(pos, mid - (mid_space + tick_len), pos, mid - mid_space) : - dc.DrawLine(mid - (mid_space + tick_len), pos, mid - mid_space, pos); - is_horizontal() ? dc.DrawLine(pos, mid + (mid_space + tick_len), pos, mid + mid_space) : - dc.DrawLine(mid + (mid_space + tick_len), pos, mid + mid_space, pos); - }; +void Control::draw_ruler(wxDC& dc) +{ + m_ruler.update(this->GetParent(), m_values, get_scroll_step()); + if (!m_ruler.is_ok()) + return; - auto draw_short_ticks = [this, draw_ticks, ruler_short_step](wxDC& dc, double& current_tick, int max_tick) - { + int height, width; + get_size(&width, &height); + const wxCoord mid = is_horizontal() ? 0.5 * height : 0.5 * width; + + auto draw_short_ticks = [this, mid](wxDC& dc, double& current_tick, int max_tick) { while (current_tick < max_tick) { wxCoord pos = get_position_from_value(lround(current_tick)); - draw_ticks(dc, pos, 2); - current_tick += ruler_short_step; + draw_ticks_pair(dc, pos, mid, 2); + current_tick += m_ruler.short_step; + if (current_tick > m_max_value) + break; } }; @@ -951,23 +961,44 @@ void Control::draw_ruler(wxDC& dc) double short_tick; int tick = 0; double value = 0.0; + int sequence = 0; - double interval = (double)step * std::pow(10, pow); - while (tick <= m_max_value) - { - value += interval; + while (tick <= m_max_value) { + value += m_ruler.long_step; + if (value > m_values.back() && sequence < m_ruler.count) { + value = m_ruler.long_step; + for (tick; tick < m_values.size(); tick++) + if (m_values[tick] < value) + break; + // short ticks from the last tick to the end of current sequence + draw_short_ticks(dc, short_tick, tick); + sequence++; + } short_tick = tick; - auto val_it = std::lower_bound(m_values.begin(), m_values.end(), value - epsilon()); - if (val_it == m_values.end()) + for (tick; tick < m_values.size(); tick++) { + if (m_values[tick] == value) + break; + if (m_values[tick] > value) { + if (tick > 0) + tick--; + break; + } + } + if (tick > m_max_value) break; - tick = val_it - m_values.begin(); wxCoord pos = get_position_from_value(tick); - draw_ticks(dc, pos, 5); + draw_ticks_pair(dc, pos, mid, 5); + draw_tick_text(dc, wxPoint(mid, pos), tick); - draw_tick_text(dc, wxPoint(mid/* + 2*/, pos), tick); draw_short_ticks(dc, short_tick, tick); + + if (value == m_values.back() && sequence < m_ruler.count) { + value = 0.0; + sequence++; + tick++; + } } // short ticks from the last tick to the end draw_short_ticks(dc, short_tick, m_max_value); diff --git a/src/slic3r/GUI/DoubleSlider.hpp b/src/slic3r/GUI/DoubleSlider.hpp index f909f105a..f6e555934 100644 --- a/src/slic3r/GUI/DoubleSlider.hpp +++ b/src/slic3r/GUI/DoubleSlider.hpp @@ -219,7 +219,7 @@ public: void SetMaxValue(const int max_value); void SetKoefForLabels(const double koef) { m_label_koef = koef; } - void SetSliderValues(const std::vector<double>& values) { m_values = values; } + void SetSliderValues(const std::vector<double>& values); void ChangeOneLayerLock(); Info GetTicksValues() const; @@ -288,6 +288,7 @@ protected: void draw_scroll_line(wxDC& dc, const int lower_pos, const int higher_pos); void draw_thumb(wxDC& dc, const wxCoord& pos_coord, const SelectedSlider& selection); void draw_thumbs(wxDC& dc, const wxCoord& lower_pos, const wxCoord& higher_pos); + void draw_ticks_pair(wxDC& dc, wxCoord pos, wxCoord mid, int tick_len); void draw_ticks(wxDC& dc); void draw_colored_band(wxDC& dc); void draw_ruler(wxDC& dc); @@ -416,6 +417,15 @@ private: std::vector<wxPen*> m_line_pens; std::vector<wxPen*> m_segm_pens; + + struct Ruler { + double long_step; + double short_step; + int count { 1 }; // > 1 for sequential print + + void update(wxWindow* win, const std::vector<double>& values, double scroll_step); + bool is_ok() { return long_step > 0 && short_step > 0; } + } m_ruler; }; } // DoubleSlider; From feffb66085e509db244b09ec196d19b5bfe0bba2 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Mon, 16 Nov 2020 22:48:13 +0100 Subject: [PATCH 044/138] Ruler for DoubleSlider: Added estimated print time --- src/libslic3r/GCode.cpp | 2 +- src/libslic3r/GCode/GCodeProcessor.cpp | 2 +- src/slic3r/GUI/DoubleSlider.cpp | 15 ++++++++++++--- src/slic3r/GUI/DoubleSlider.hpp | 6 ++++-- src/slic3r/GUI/GUI_Preview.cpp | 1 + 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 61ef9a1bd..e592466c7 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1858,7 +1858,7 @@ void GCode::process_layer( std::string gcode; // add tag for processor - gcode += "; " + GCodeProcessor::Layer_Change_Tag + "\n"; + gcode += ";" + GCodeProcessor::Layer_Change_Tag + "\n"; // export layer z char buf[64]; sprintf(buf, ";Z:%g\n", print_z); diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 14bd38a33..4d3e16b47 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -393,7 +393,7 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename) auto is_temporary_decoration = [](const std::string& gcode_line) { // remove trailing '\n' std::string line = gcode_line.substr(0, gcode_line.length() - 1); - if (line == "; " + Layer_Change_Tag) + if (line == ";" + Layer_Change_Tag) return true; else return false; diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index 40463288e..3f988acf1 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -380,6 +380,13 @@ void Control::SetTicksValues(const Info& custom_gcode_per_print_z) Update(); } +void Control::SetLayersTimes(const std::vector<float>& layers_times) +{ + m_layers_times = layers_times; + for (int i = 1; i < m_layers_times.size(); i++) + m_layers_times[i] += m_layers_times[i - 1]; +} + void Control::SetDrawMode(bool is_sla_print, bool is_sequential_print) { m_draw_mode = is_sla_print ? dmSlaPrint : @@ -603,9 +610,11 @@ wxString Control::get_label(int tick, LabelType label_type/* = ltHeightWithLayer if (m_draw_mode == dmSequentialGCodeView) return wxString::Format("%d", static_cast<unsigned int>(m_values[value])); else { - if (label_type == ltEstimatedTime) - // ysFIXME get estimated time for the current tick - return "time"; + if (label_type == ltEstimatedTime) { + if (m_values.size() != m_layers_times.size()) + return "time"; + return Slic3r::short_time(get_time_dhms(m_layers_times[value])); + } wxString str = m_values.empty() ? wxString::Format("%.*f", 2, m_label_koef * value) : wxString::Format("%.*f", 2, m_values[value]); diff --git a/src/slic3r/GUI/DoubleSlider.hpp b/src/slic3r/GUI/DoubleSlider.hpp index f6e555934..509f6ce1e 100644 --- a/src/slic3r/GUI/DoubleSlider.hpp +++ b/src/slic3r/GUI/DoubleSlider.hpp @@ -222,8 +222,9 @@ public: void SetSliderValues(const std::vector<double>& values); void ChangeOneLayerLock(); - Info GetTicksValues() const; - void SetTicksValues(const Info &custom_gcode_per_print_z); + Info GetTicksValues() const; + void SetTicksValues(const Info &custom_gcode_per_print_z); + void SetLayersTimes(const std::vector<float>& layers_times); void SetDrawMode(bool is_sla_print, bool is_sequential_print); #if ENABLE_GCODE_VIEWER @@ -401,6 +402,7 @@ private: std::vector<double> m_values; TickCodeInfo m_ticks; + std::vector<float> m_layers_times; std::vector<std::string> m_extruder_colors; diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index c108f6946..637231aae 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -999,6 +999,7 @@ void Preview::update_layers_slider(const std::vector<double>& layers_z, bool kee } m_layers_slider->SetSelectionSpan(idx_low, idx_high); m_layers_slider->SetTicksValues(ticks_info_from_model); + m_layers_slider->SetLayersTimes(m_gcode_result->time_statistics.modes[0].layers_times); bool sla_print_technology = wxGetApp().plater()->printer_technology() == ptSLA; bool sequential_print = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("complete_objects"); From d0c87eb7ca3b7cc5087ebc3498eaf44f2144491c Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Wed, 18 Nov 2020 14:10:02 +0100 Subject: [PATCH 045/138] Added missing include --- src/slic3r/GUI/MainFrame.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index fc0b6c46d..67f7db55f 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -31,6 +31,7 @@ #include "GLCanvas3D.hpp" #include "Plater.hpp" #include "../Utils/Process.hpp" +#include "format.hpp" #include <fstream> #include "GUI_App.hpp" From c3c2ed3a09a1fdb5feda96869cbc325935bd0c7c Mon Sep 17 00:00:00 2001 From: Guilherme Patriota <guilherme@bi3d.com.br> Date: Wed, 18 Nov 2020 10:20:41 -0300 Subject: [PATCH 046/138] Atualized pt-br translation for 2.3 --- resources/localization/pt_br/PrusaSlicer.mo | Bin 249894 -> 281511 bytes .../localization/pt_br/PrusaSlicer_pt_br.po | 9127 ++++++++++------- 2 files changed, 5307 insertions(+), 3820 deletions(-) diff --git a/resources/localization/pt_br/PrusaSlicer.mo b/resources/localization/pt_br/PrusaSlicer.mo index 152f1e2a1661d6f93113b41598e7c440037a544a..751860d55b05583bfd9cb52dadd203d70e582bd6 100644 GIT binary patch delta 77678 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 delta 50055 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 Wh?qn!=x*+-E_62w;%hIP5C0c<At9Im diff --git a/resources/localization/pt_br/PrusaSlicer_pt_br.po b/resources/localization/pt_br/PrusaSlicer_pt_br.po index 30b3eb569..f82421a4b 100644 --- a/resources/localization/pt_br/PrusaSlicer_pt_br.po +++ b/resources/localization/pt_br/PrusaSlicer_pt_br.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-03-05 13:51+0100\n" -"PO-Revision-Date: 2020-03-11 09:32-0300\n" +"POT-Creation-Date: 2020-10-19 13:45+0200\n" +"PO-Revision-Date: 2020-11-18 10:05-0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: pt_BR\n" @@ -18,16 +18,17 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 2.2.4\n" -#: src/slic3r/GUI/AboutDialog.cpp:41 src/slic3r/GUI/AboutDialog.cpp:294 +#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 +#: src/slic3r/GUI/AboutDialog.cpp:317 msgid "Portions copyright" msgstr "Direitos autorais das partes" -#: src/slic3r/GUI/AboutDialog.cpp:129 src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 msgid "Copyright" msgstr "Direitos autorais" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:131 +#: src/slic3r/GUI/AboutDialog.cpp:141 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -35,25 +36,26 @@ msgstr "" "Os contratos de licença de todos os seguintes programas (bibliotecas) são " "parte do contrato de licença de aplicativo" -#: src/slic3r/GUI/AboutDialog.cpp:201 +#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 #, c-format msgid "About %s" msgstr "Sobre %s" -#: src/slic3r/GUI/AboutDialog.cpp:233 src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" -msgstr "Versão" +msgstr "Version" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:260 +#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 msgid "is licensed under the" msgstr "está licenciado sobre o(a)" -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 msgid "GNU Affero General Public License, version 3" msgstr "Licensa GNU Affero General Public, versão 3" -#: src/slic3r/GUI/AboutDialog.cpp:262 +#: src/slic3r/GUI/AboutDialog.cpp:285 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -61,258 +63,253 @@ msgstr "" "PrusaSlicer é baseado no Slic3r criado por Alessandro Ranellucci e a " "comunidade RepRap." -#: src/slic3r/GUI/AboutDialog.cpp:263 +#: src/slic3r/GUI/AboutDialog.cpp:286 msgid "" -"Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " -"Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " -"numerous others." +"Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr " +"Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous " +"others." msgstr "" -"Contribuições por Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " -"Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik e " -"outros." +"Contribuições por Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr " +"Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik e outros." -#: src/slic3r/GUI/AppConfig.cpp:114 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:62 +#, c-format msgid "" -"Error parsing PrusaSlicer config file, it is probably corrupted. Try to " -"manually delete the file to recover from the error. Your user profiles will " -"not be affected." +"%s has encountered an error. It was likely caused by running out of memory. If " +"you are sure you have enough RAM on your system, this may also be a bug and we " +"would be glad if you reported it." msgstr "" -"Erro de análise da config do arquivo, ele provavelmente está corrompido. " -"Tente excluir manualmente o arquivo para recuperar do erro. Seus perfis de " -"usuário não serão afetados." +"%s encontrou um erro. Provavelmente foi causado por ficar sem memória. Se você " +"tem certeza que você tem RAM suficiente em seu sistema, isso também pode ser " +"um bug e nós estaríamos contentes se você relatou." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:110 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:144 msgid "" -"Copying of the temporary G-code to the output G-code failed. Maybe the SD " -"card is write locked?" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card " +"is write locked?" msgstr "" "A cópia do G-código provisório G-código falhou na saída. Talvez o cartão SD " "está bloqueado para escrita?" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:113 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "" "Copying of the temporary G-code to the output G-code failed. There might be " "problem with target device, please try exporting again or using different " "device. The corrupted output G-code is at %1%.tmp." msgstr "" "A cópia do G-code temporário para o G-code de saída falhou. Pode haver " -"problemas com o dispositivo de destino, por favor tente exportar novamente " -"ou usar dispositivo diferente. O G-code de saída corrompido está em %1%.tmp." +"problemas com o dispositivo de destino, por favor tente exportar novamente ou " +"usar dispositivo diferente. O G-code de saída corrompido está em %1%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:116 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 msgid "" "Renaming of the G-code after copying to the selected destination folder has " "failed. Current path is %1%.tmp. Please try exporting again." msgstr "" -"A renomeação do G-code após a cópia na pasta de destino selecionada falhou. " -"O caminho atual é %1%.tmp. Por favor, tente exportar de novo." +"A renomeação do G-code após a cópia na pasta de destino selecionada falhou. O " +"caminho atual é %1%.tmp. Por favor, tente exportar de novo." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:119 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 msgid "" "Copying of the temporary G-code has finished but the original code at %1% " "couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "" -"A cópia do código G temporário foi concluída, mas o código original em %1% " -"não pôde ser aberto durante a verificação de cópia. O código G de saída está " -"em %2%.tmp." - -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:122 -msgid "" -"Copying of the temporary G-code has finished but the exported code couldn't " -"be opened during copy check. The output G-code is at %1%.tmp." -msgstr "" -"A cópia do código G temporário foi concluída, mas o código exportado não " +"A cópia do código G temporário foi concluída, mas o código original em %1% não " "pôde ser aberto durante a verificação de cópia. O código G de saída está em " -"%1%.tmp." +"%2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:129 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:479 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 +msgid "" +"Copying of the temporary G-code has finished but the exported code couldn't be " +"opened during copy check. The output G-code is at %1%.tmp." +msgstr "" +"A cópia do código G temporário foi concluída, mas o código exportado não pôde " +"ser aberto durante a verificação de cópia. O código G de saída está em %1%.tmp." + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 msgid "Running post-processing scripts" msgstr "Aplicando scripts de pós-processamento" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:131 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "G-code file exported to %1%" msgstr "Arquivo G-code exportado para %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:135 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:185 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 msgid "Slicing complete" msgstr "Fatiamento completo" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:181 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 msgid "Masked SLA file exported to %1%" msgstr "Arquivo SLA mascarado exportado para %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:223 -#, c-format -msgid "" -"%s has encountered an error. It was likely caused by running out of memory. " -"If you are sure you have enough RAM on your system, this may also be a bug " -"and we would be glad if you reported it." -msgstr "" -"%s encontrou um erro. Provavelmente foi causado por ficar sem memória. Se " -"você tem certeza que você tem RAM suficiente em seu sistema, isso também " -"pode ser um bug e nós estaríamos contentes se você relatou." - -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:481 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "A cópia do G-código provisório G-código falhou na saída" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:506 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Agendando upload para ` %1%` . Veja a aba -> Print Host Upload Queue" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2060 -msgid "Shape" -msgstr "Forma" - -#: src/slic3r/GUI/BedShapeDialog.cpp:73 -msgid "Rectangular" -msgstr "Retangular" - -#: src/slic3r/GUI/BedShapeDialog.cpp:77 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 -#: src/slic3r/GUI/Tab.cpp:2326 +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:2493 msgid "Size" msgstr "Tamanho" -#: src/slic3r/GUI/BedShapeDialog.cpp:78 -msgid "Size in X and Y of the rectangular plate." -msgstr "Tamanho no X e Y na mesa retangular." - -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "Origin" msgstr "Origem" -#: src/slic3r/GUI/BedShapeDialog.cpp:85 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 +msgid "Diameter" +msgstr "Diâmetro" + +#: src/slic3r/GUI/BedShapeDialog.cpp:110 +msgid "Size in X and Y of the rectangular plate." +msgstr "Tamanho no X e Y na mesa retangular." + +#: src/slic3r/GUI/BedShapeDialog.cpp:121 msgid "" "Distance of the 0,0 G-code coordinate from the front left corner of the " "rectangle." msgstr "" -"Distância do ponto 0,0 da coordenada do G-code do canto esquerdo do " -"retângulo." +"Distância do ponto 0,0 da coordenada do G-code do canto esquerdo do retângulo." -#: src/slic3r/GUI/BedShapeDialog.cpp:89 -msgid "Circular" -msgstr "Circular" - -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 -#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 src/slic3r/GUI/GUI_ObjectLayers.cpp:145 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 #: src/slic3r/GUI/WipeTowerDialog.cpp:85 src/libslic3r/PrintConfig.cpp:75 -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:91 -#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 -#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 -#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 -#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 -#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 -#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 -#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 -#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 -#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 -#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 -#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 -#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 -#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 -#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 -#: src/libslic3r/PrintConfig.cpp:2705 src/libslic3r/PrintConfig.cpp:2715 -#: src/libslic3r/PrintConfig.cpp:2727 src/libslic3r/PrintConfig.cpp:2747 -#: src/libslic3r/PrintConfig.cpp:2757 src/libslic3r/PrintConfig.cpp:2767 -#: src/libslic3r/PrintConfig.cpp:2785 src/libslic3r/PrintConfig.cpp:2800 -#: src/libslic3r/PrintConfig.cpp:2814 src/libslic3r/PrintConfig.cpp:2825 -#: src/libslic3r/PrintConfig.cpp:2838 src/libslic3r/PrintConfig.cpp:2883 -#: src/libslic3r/PrintConfig.cpp:2893 src/libslic3r/PrintConfig.cpp:2902 -#: src/libslic3r/PrintConfig.cpp:2912 src/libslic3r/PrintConfig.cpp:2928 -#: src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:124 src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 +#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 +#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 +#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 msgid "mm" msgstr "mm" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 -msgid "Diameter" -msgstr "Diâmetro" - -#: src/slic3r/GUI/BedShapeDialog.cpp:94 +#: src/slic3r/GUI/BedShapeDialog.cpp:131 msgid "" "Diameter of the print bed. It is assumed that origin (0,0) is located in the " "center." msgstr "" -"Diâmetro da mesa de impressão. Se assume que a origem (0,0) seja localizado " -"no centro." +"Diâmetro da mesa de impressão. Se assume que a origem (0,0) seja localizado no " +"centro." -#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 -#: src/libslic3r/ExtrusionEntity.cpp:322 +#: src/slic3r/GUI/BedShapeDialog.cpp:141 +msgid "Rectangular" +msgstr "Retangular" + +#: src/slic3r/GUI/BedShapeDialog.cpp:142 +msgid "Circular" +msgstr "Circular" + +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 msgid "Custom" msgstr "Customizado" -#: src/slic3r/GUI/BedShapeDialog.cpp:102 +#: src/slic3r/GUI/BedShapeDialog.cpp:145 +msgid "Invalid" +msgstr "Inválido" + +#: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 +msgid "Shape" +msgstr "Forma" + +#: src/slic3r/GUI/BedShapeDialog.cpp:243 msgid "Load shape from STL..." msgstr "Carregar forma do STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:155 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 msgid "Settings" -msgstr "Config." +msgstr "Config" -#: src/slic3r/GUI/BedShapeDialog.cpp:172 +#: src/slic3r/GUI/BedShapeDialog.cpp:315 msgid "Texture" msgstr "Textura" -#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 src/slic3r/GUI/BedShapeDialog.cpp:405 msgid "Load..." msgstr "Carregar..." -#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Remove" msgstr "Remover" -#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +#: src/slic3r/GUI/BedShapeDialog.cpp:366 src/slic3r/GUI/BedShapeDialog.cpp:446 msgid "Not found:" msgstr "Não encontrado:" -#: src/slic3r/GUI/BedShapeDialog.cpp:251 +#: src/slic3r/GUI/BedShapeDialog.cpp:395 msgid "Model" msgstr "Modelo" -#: src/slic3r/GUI/BedShapeDialog.cpp:487 +#: src/slic3r/GUI/BedShapeDialog.cpp:563 msgid "Choose an STL file to import bed shape from:" msgstr "Escolha um arquivo STL para importar o formato da mesa:" -#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 -#: src/slic3r/GUI/BedShapeDialog.cpp:566 +#: src/slic3r/GUI/BedShapeDialog.cpp:570 src/slic3r/GUI/BedShapeDialog.cpp:619 +#: src/slic3r/GUI/BedShapeDialog.cpp:642 msgid "Invalid file format." msgstr "Formato de arquivo inválido." -#: src/slic3r/GUI/BedShapeDialog.cpp:505 +#: src/slic3r/GUI/BedShapeDialog.cpp:581 msgid "Error! Invalid model" msgstr "Erro! Modelo inválido" -#: src/slic3r/GUI/BedShapeDialog.cpp:513 +#: src/slic3r/GUI/BedShapeDialog.cpp:589 msgid "The selected file contains no geometry." msgstr "O arquivo selecionado não contém geometria." -#: src/slic3r/GUI/BedShapeDialog.cpp:517 -msgid "" -"The selected file contains several disjoint areas. This is not supported." +#: src/slic3r/GUI/BedShapeDialog.cpp:593 +msgid "The selected file contains several disjoint areas. This is not supported." msgstr "O arquivo selecionado contém áreas não juntas. Isso não é suportado." -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: src/slic3r/GUI/BedShapeDialog.cpp:608 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Escolher um arquivo para importar a textura da mesa (PNG/SVG):" -#: src/slic3r/GUI/BedShapeDialog.cpp:555 +#: src/slic3r/GUI/BedShapeDialog.cpp:631 msgid "Choose an STL file to import bed model from:" msgstr "Escolha um arquivo STL para importar o modelo da mesa:" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape" msgstr "Formato da mesa" @@ -354,13 +351,11 @@ msgstr "O valor é o mesmo que o valor do sistema" #: src/slic3r/GUI/ButtonsDescription.cpp:53 msgid "" -"Value was changed and is not equal to the system value or the last saved " -"preset" +"Value was changed and is not equal to the system value or the last saved preset" msgstr "" -"O valor foi mudado e não é igual ao valor do sistema ou da última config. " -"salva" +"O valor foi mudado e não é igual ao valor do sistema ou da última config. salva" -#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/ConfigManipulation.cpp:47 msgid "" "Zero layer height is not valid.\n" "\n" @@ -370,13 +365,13 @@ msgstr "" "\n" "A altura da camada será redefinida para 0.01." -#: src/slic3r/GUI/ConfigManipulation.cpp:49 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1048 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "Altura da camada" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 +#: src/slic3r/GUI/ConfigManipulation.cpp:59 msgid "" "Zero first layer height is not valid.\n" "\n" @@ -386,12 +381,12 @@ msgstr "" "\n" "A altura da primeira camada será redefinida para 0.01." -#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 msgid "First layer height" msgstr "Altura da primeira camada" -#: src/slic3r/GUI/ConfigManipulation.cpp:81 -#, no-c-format +#: src/slic3r/GUI/ConfigManipulation.cpp:80 +#, c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -404,20 +399,20 @@ msgstr "" "O modo Vaso Espiral requer:\n" "- um perímetro\n" "- sem camadas sólidas superiores\n" -"- 0% de densidade de enchimento\n" +"- 0% fdensidade de enchimento 0\n" "- nenhum material de suporte\n" "- habilitar opção Garantir a espessura da casca vertical\n" "- desativar opção Detectar paredes finas" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:88 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "Devo ajustar essas configurações para habilitar o Vaso Espiral?" -#: src/slic3r/GUI/ConfigManipulation.cpp:90 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Spiral Vase" msgstr "Vaso espiral" -#: src/slic3r/GUI/ConfigManipulation.cpp:115 +#: src/slic3r/GUI/ConfigManipulation.cpp:114 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool " @@ -431,16 +426,16 @@ msgstr "" "(ambos support_material_extruder e support_material_interface_extruder " "precisam ser definidos como 0)." -#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:118 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "Devo ajustar essas configurações para ativar a Torre limpa?" -#: src/slic3r/GUI/ConfigManipulation.cpp:120 -#: src/slic3r/GUI/ConfigManipulation.cpp:140 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Wipe Tower" msgstr "Torre de limpeza" -#: src/slic3r/GUI/ConfigManipulation.cpp:136 +#: src/slic3r/GUI/ConfigManipulation.cpp:135 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers." @@ -448,11 +443,11 @@ msgstr "" "Para que a torre de limpeza funcione com os suportes solúveis, as camadas de " "suporte precisam ser sincronizadas com as camadas de objeto." -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:138 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "Devo sincronizar camadas de suporte para habilitar a Torre Limpa?" -#: src/slic3r/GUI/ConfigManipulation.cpp:159 +#: src/slic3r/GUI/ConfigManipulation.cpp:158 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters" @@ -460,51 +455,48 @@ msgstr "" "Os suportes funcionam melhor, se o seguinte recurso estiver ativado:\n" "- Detectar perímetros de ponte" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/ConfigManipulation.cpp:161 msgid "Shall I adjust those settings for supports?" msgstr "Devo ajustar essas configurações para suportes?" -#: src/slic3r/GUI/ConfigManipulation.cpp:163 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Support Generator" msgstr "Gerador de suporte" -#: src/slic3r/GUI/ConfigManipulation.cpp:208 +#: src/slic3r/GUI/ConfigManipulation.cpp:207 msgid "The %1% infill pattern is not supposed to work at 100%% density." -msgstr "" -"O padrão de preenchimento %1% não deve funcionar com 100%% de densidade." +msgstr "O padrão de preenchimento %1% não deve funcionar com 100%% de densidade." -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:209 msgid "Shall I switch to rectilinear fill pattern?" msgstr "Devo mudar para padrão de preenchimento retilíneo?" -#: src/slic3r/GUI/ConfigManipulation.cpp:211 -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/Plater.cpp:527 -#: src/slic3r/GUI/Tab.cpp:1090 src/slic3r/GUI/Tab.cpp:1091 -#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 -#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 -#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 -#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/slic3r/GUI/ConfigManipulation.cpp:210 src/slic3r/GUI/GUI_ObjectList.cpp:35 +#: src/slic3r/GUI/GUI_ObjectList.cpp:93 src/slic3r/GUI/GUI_ObjectList.cpp:652 +#: src/slic3r/GUI/Plater.cpp:393 src/slic3r/GUI/Tab.cpp:1413 +#: src/slic3r/GUI/Tab.cpp:1414 src/libslic3r/PrintConfig.cpp:237 +#: src/libslic3r/PrintConfig.cpp:450 src/libslic3r/PrintConfig.cpp:472 +#: src/libslic3r/PrintConfig.cpp:812 src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:863 src/libslic3r/PrintConfig.cpp:1025 +#: src/libslic3r/PrintConfig.cpp:1035 src/libslic3r/PrintConfig.cpp:1053 +#: src/libslic3r/PrintConfig.cpp:1072 src/libslic3r/PrintConfig.cpp:1091 +#: src/libslic3r/PrintConfig.cpp:1843 src/libslic3r/PrintConfig.cpp:1860 msgid "Infill" msgstr "Preenchimento" -#: src/slic3r/GUI/ConfigManipulation.cpp:317 +#: src/slic3r/GUI/ConfigManipulation.cpp:322 msgid "Head penetration should not be greater than the head width." msgstr "A penetração da cabeça não deve ser maior do que a largura da cabeça." -#: src/slic3r/GUI/ConfigManipulation.cpp:319 +#: src/slic3r/GUI/ConfigManipulation.cpp:324 msgid "Invalid Head penetration" msgstr "Penetração inválida da cabeça" -#: src/slic3r/GUI/ConfigManipulation.cpp:330 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Pinhead diameter should be smaller than the pillar diameter." -msgstr "" -"O diâmetro da cabeça de pino deve ser menor do que o diâmetro do pilar." +msgstr "O diâmetro da cabeça de pino deve ser menor do que o diâmetro do pilar." -#: src/slic3r/GUI/ConfigManipulation.cpp:332 +#: src/slic3r/GUI/ConfigManipulation.cpp:337 msgid "Invalid pinhead diameter" msgstr "Diâmetro inválido da cabeça de pino" @@ -520,11 +512,12 @@ msgstr "Desatualização" msgid "Before roll back" msgstr "Antes de reverter" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 msgid "User" msgstr "Usuário" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 src/slic3r/GUI/GUI_Preview.cpp:299 +#: src/libslic3r/ExtrusionEntity.cpp:310 msgid "Unknown" msgstr "Desconhecido" @@ -536,7 +529,7 @@ msgstr "Ativar" msgid "PrusaSlicer version" msgstr "Versão do PrusaSlicer" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1533 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 msgid "print" msgstr "impressão" @@ -544,11 +537,11 @@ msgstr "impressão" msgid "filaments" msgstr "filamentos" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1537 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 msgid "printer" msgstr "impressora" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 msgid "vendor" msgstr "fornecedor" @@ -585,139 +578,162 @@ msgstr "Ativar" msgid "Configuration Snapshots" msgstr "Config. das versões" -#: src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:236 msgid "nozzle" msgstr "bico de impressão" -#: src/slic3r/GUI/ConfigWizard.cpp:222 +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "Alternate nozzles:" msgstr "Alternar bicos:" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Todos padrão" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "Standard" msgstr "Todos padrão" -#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 -#: src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 +#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "Todos" -#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 -#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 -#: src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 +#: src/libslic3r/ExtrusionEntity.cpp:312 msgid "None" msgstr "Nenhum" -#: src/slic3r/GUI/ConfigWizard.cpp:427 +#: src/slic3r/GUI/ConfigWizard.cpp:445 #, c-format msgid "Welcome to the %s Configuration Assistant" -msgstr "Bem-vindo ao %s Assistente de config." +msgstr "Bem-vindo ao %s Assistente de config" -#: src/slic3r/GUI/ConfigWizard.cpp:429 +#: src/slic3r/GUI/ConfigWizard.cpp:447 #, c-format msgid "Welcome to the %s Configuration Wizard" -msgstr "Bem-vindo ao %s Assistente de config." +msgstr "Bem-vindo ao %s Assistente de config" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/ConfigWizard.cpp:449 msgid "Welcome" msgstr "Bem-vindo(a)" -#: src/slic3r/GUI/ConfigWizard.cpp:433 +#: src/slic3r/GUI/ConfigWizard.cpp:451 #, c-format msgid "" -"Hello, welcome to %s! This %s helps you with the initial configuration; just " -"a few settings and you will be ready to print." +"Hello, welcome to %s! This %s helps you with the initial configuration; just a " +"few settings and you will be ready to print." msgstr "" "Olá, bem-vindo ao %s! Isso %s te ajuda com a config. inicial; com apenas " "algumas config. e você estará pronto para imprimir." -#: src/slic3r/GUI/ConfigWizard.cpp:438 -msgid "" -"Remove user profiles - install from scratch (a snapshot will be taken " -"beforehand)" +#: src/slic3r/GUI/ConfigWizard.cpp:456 +msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "" "Remover perfis de usuário - instalar do zero (uma snapshot será salva antes)" -#: src/slic3r/GUI/ConfigWizard.cpp:481 +#: src/slic3r/GUI/ConfigWizard.cpp:499 #, c-format msgid "%s Family" msgstr "%s Família" -#: src/slic3r/GUI/ConfigWizard.cpp:565 +#: src/slic3r/GUI/ConfigWizard.cpp:587 +msgid "Printer:" +msgstr "Impressora:" + +#: src/slic3r/GUI/ConfigWizard.cpp:589 msgid "Vendor:" msgstr "Fornecedor:" -#: src/slic3r/GUI/ConfigWizard.cpp:566 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Profile:" msgstr "Perfil:" -#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 +#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 msgid "(All)" msgstr "(Todos)" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:691 +msgid "" +"Filaments marked with <b>*</b> are <b>not</b> compatible with some installed " +"printers." +msgstr "" +"Filamentos marcados com <b>*</b> são <b>incompatíveis</b> com algumas " +"impressoras instaladas." + +#: src/slic3r/GUI/ConfigWizard.cpp:694 +msgid "All installed printers are compatible with the selected filament." +msgstr "" +"Todas as impressoras instaladas são compatíveis com o filamento selecionado." + +#: src/slic3r/GUI/ConfigWizard.cpp:714 +msgid "" +"Only the following installed printers are compatible with the selected " +"filament:" +msgstr "" +"Somente as seguintes impressoras instaladas são compatíveis com o filamento " +"selecionado:" + +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer Setup" msgstr "Config. da impressora customizada" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer" msgstr "Impressora customizada" -#: src/slic3r/GUI/ConfigWizard.cpp:734 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Define a custom printer profile" msgstr "Definir uma config. para a impressora customizada" -#: src/slic3r/GUI/ConfigWizard.cpp:736 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 msgid "Custom profile name:" msgstr "Nome customizado da config.:" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Automatic updates" msgstr "Atualizações automáticas" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Updates" msgstr "Atualizações" -#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "Verificar atualizações nas aplicações" -#: src/slic3r/GUI/ConfigWizard.cpp:773 +#: src/slic3r/GUI/ConfigWizard.cpp:1132 #, c-format msgid "" -"If enabled, %s checks for new application versions online. When a new " -"version becomes available, a notification is displayed at the next " -"application startup (never during program usage). This is only a " -"notification mechanisms, no automatic installation is done." +"If enabled, %s checks for new application versions online. When a new version " +"becomes available, a notification is displayed at the next application startup " +"(never during program usage). This is only a notification mechanisms, no " +"automatic installation is done." msgstr "" "Se ativada, %s verifica se há novas versões do aplicativo online. Quando uma " "nova versão se torna disponível, uma notificação é exibida na próxima " "inicialização do aplicativo (nunca durante o uso do programa). Este é apenas " "um mecanismos de notificação, nenhuma instalação automática é feita." -#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "Atualizar predefinições incorporadas automaticamente" -#: src/slic3r/GUI/ConfigWizard.cpp:783 +#: src/slic3r/GUI/ConfigWizard.cpp:1142 #, c-format msgid "" -"If enabled, %s downloads updates of built-in system presets in the " -"background.These updates are downloaded into a separate temporary location." -"When a new preset version becomes available it is offered at application " -"startup." +"If enabled, %s downloads updates of built-in system presets in the background." +"These updates are downloaded into a separate temporary location.When a new " +"preset version becomes available it is offered at application startup." msgstr "" -"Se ativada, %s baixa atualizações de predefinições de sistema incorporadas " -"em segundo plano. Essas atualizações são baixadas em um local temporário " +"Se ativada, %s baixa atualizações de predefinições de sistema incorporadas em " +"segundo plano. Essas atualizações são baixadas em um local temporário " "separado. Quando uma nova versão predefinida se torna disponível, ela é " "oferecida na inicialização do aplicativo." -#: src/slic3r/GUI/ConfigWizard.cpp:786 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 msgid "" "Updates are never applied without user's consent and never overwrite user's " "customized settings." @@ -725,49 +741,48 @@ msgstr "" "Atualizações nunca são aplicadas sem a permissão do usuário e nunca sobre " "escrevem as config. do usuário." -#: src/slic3r/GUI/ConfigWizard.cpp:791 +#: src/slic3r/GUI/ConfigWizard.cpp:1150 msgid "" -"Additionally a backup snapshot of the whole configuration is created before " -"an update is applied." +"Additionally a backup snapshot of the whole configuration is created before an " +"update is applied." msgstr "" "Além disso, uma captura de backup de toda a config. é criado antes que uma " "atualização seja aplicada." -#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1665 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3957 src/slic3r/GUI/Plater.cpp:3227 -#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3965 +#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 +#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 msgid "Reload from disk" msgstr "Recarregar a partir do disco" -#: src/slic3r/GUI/ConfigWizard.cpp:801 -msgid "" -"Export full pathnames of models and parts sources into 3mf and amf files" +#: src/slic3r/GUI/ConfigWizard.cpp:1160 +msgid "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "" "Exportar nomes completos de modelos e fontes de peças para arquivos 3mf e amf" -#: src/slic3r/GUI/ConfigWizard.cpp:805 +#: src/slic3r/GUI/ConfigWizard.cpp:1164 msgid "" -"If enabled, allows the Reload from disk command to automatically find and " -"load the files when invoked.\n" +"If enabled, allows the Reload from disk command to automatically find and load " +"the files when invoked.\n" "If not enabled, the Reload from disk command will ask to select each file " "using an open file dialog." msgstr "" "Se ativado, permite que o comando Recarregar a partir do disco encontre e " "carregue automaticamente os arquivos quando invocado.\n" -"Se não estiver habilitado, o comando Recarregar a partir do disco pedirá " -"para selecionar cada arquivo usando uma caixa de diálogo de arquivo aberto." +"Se não estiver habilitado, o comando Recarregar a partir do disco pedirá para " +"selecionar cada arquivo usando uma caixa de diálogo de arquivo aberto." -#: src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:1172 msgid "View mode" msgstr "Modo de visualização" -#: src/slic3r/GUI/ConfigWizard.cpp:815 +#: src/slic3r/GUI/ConfigWizard.cpp:1174 msgid "" "PrusaSlicer's user interfaces comes in three variants:\n" "Simple, Advanced, and Expert.\n" "The Simple mode shows only the most frequently used settings relevant for " -"regular 3D printing. The other two offer progressively more sophisticated " -"fine-tuning, they are suitable for advanced and expert users, respectively." +"regular 3D printing. The other two offer progressively more sophisticated fine-" +"tuning, they are suitable for advanced and expert users, respectively." msgstr "" "As interfaces de usuário do PrusaSlicer vêm em três variantes:\n" "Simples, Avançado e Especialista.\n" @@ -776,104 +791,114 @@ msgstr "" "sofisticados, são adequados para usuários avançados e experientes, " "respectivamente." -#: src/slic3r/GUI/ConfigWizard.cpp:820 +#: src/slic3r/GUI/ConfigWizard.cpp:1179 msgid "Simple mode" msgstr "Modo simples" -#: src/slic3r/GUI/ConfigWizard.cpp:821 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "Advanced mode" msgstr "Modo avançado" -#: src/slic3r/GUI/ConfigWizard.cpp:822 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Expert mode" msgstr "Modo especialista" -#: src/slic3r/GUI/ConfigWizard.cpp:856 +#: src/slic3r/GUI/ConfigWizard.cpp:1187 +msgid "The size of the object can be specified in inches" +msgstr "O tamanho do objeto pode ser especificado em polegadas" + +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Use inches" +msgstr "Usar polegadas" + +#: src/slic3r/GUI/ConfigWizard.cpp:1222 msgid "Other Vendors" msgstr "Outros fornecedores" -#: src/slic3r/GUI/ConfigWizard.cpp:860 +#: src/slic3r/GUI/ConfigWizard.cpp:1226 #, c-format msgid "Pick another vendor supported by %s" msgstr "Escolha outro fornecedor suportado por %s" -#: src/slic3r/GUI/ConfigWizard.cpp:891 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 msgid "Firmware Type" msgstr "Tipo de Firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1949 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 msgid "Firmware" msgstr "Firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:895 +#: src/slic3r/GUI/ConfigWizard.cpp:1261 msgid "Choose the type of firmware used by your printer." msgstr "Escolha o tipo de firmware utilizado na sua impressora." -#: src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape and Size" msgstr "Forma e tamanho da mesa" -#: src/slic3r/GUI/ConfigWizard.cpp:932 +#: src/slic3r/GUI/ConfigWizard.cpp:1298 msgid "Set the shape of your printer's bed." msgstr "Insira o formato da mesa de impressão." -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Filament and Nozzle Diameters" msgstr "Diâmetro do bico e do filamento" -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Print Diameters" msgstr "Diâmetros de impressão" -#: src/slic3r/GUI/ConfigWizard.cpp:966 +#: src/slic3r/GUI/ConfigWizard.cpp:1332 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Insira o diâmetro do bico de impressão." -#: src/slic3r/GUI/ConfigWizard.cpp:969 +#: src/slic3r/GUI/ConfigWizard.cpp:1335 msgid "Nozzle Diameter:" msgstr "Diâmetro do bico:" -#: src/slic3r/GUI/ConfigWizard.cpp:979 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Enter the diameter of your filament." msgstr "Coloque o diâmetro do seu filamento." -#: src/slic3r/GUI/ConfigWizard.cpp:980 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 msgid "" "Good precision is required, so use a caliper and do multiple measurements " "along the filament, then compute the average." msgstr "" -"É necessário uma boa precisão, utilize um paquímetro e realize várias " -"medições ao longo do filamento, faça uma média." +"É necessário uma boa precisão, utilize um paquímetro e realize várias medições " +"ao longo do filamento, faça uma média." -#: src/slic3r/GUI/ConfigWizard.cpp:983 +#: src/slic3r/GUI/ConfigWizard.cpp:1349 msgid "Filament Diameter:" msgstr "Diâmetro do filamento:" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Extruder and Bed Temperatures" msgstr "Temperaturas da mesa e da extrusora" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Temperatures" msgstr "Temperaturas" -#: src/slic3r/GUI/ConfigWizard.cpp:1033 +#: src/slic3r/GUI/ConfigWizard.cpp:1399 msgid "Enter the temperature needed for extruding your filament." msgstr "Coloque a temperatura necessária para extrusar seu filamento." -#: src/slic3r/GUI/ConfigWizard.cpp:1034 +#: src/slic3r/GUI/ConfigWizard.cpp:1400 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "A regra de ouro é 160 à 230°C para PLA, e 215 à 250°C para ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:1037 +#: src/slic3r/GUI/ConfigWizard.cpp:1403 msgid "Extrusion Temperature:" msgstr "Temperatura de extrusão:" -#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 +#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 msgid "°C" msgstr "°C" -#: src/slic3r/GUI/ConfigWizard.cpp:1047 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "" "Enter the bed temperature needed for getting your filament to stick to your " "heated bed." @@ -881,156 +906,157 @@ msgstr "" "Coloque a temperatura da mesa necessária para fazer com que seu filamento " "grude na mesa." -#: src/slic3r/GUI/ConfigWizard.cpp:1048 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 msgid "" -"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " -"no heated bed." +"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no " +"heated bed." msgstr "" "A regra de ouro é 60°C para PLA, e 110°C para ABS. Deixe em zero se não há " "mesa aquecida." -#: src/slic3r/GUI/ConfigWizard.cpp:1051 +#: src/slic3r/GUI/ConfigWizard.cpp:1417 msgid "Bed Temperature:" msgstr "Temperatura da mesa:" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filaments" msgstr "Filamentos" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Materials" msgstr "Materiais" -#: src/slic3r/GUI/ConfigWizard.cpp:1525 +#: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" msgstr "Impressoras de tecnologia Prusa FFF" -#: src/slic3r/GUI/ConfigWizard.cpp:1530 +#: src/slic3r/GUI/ConfigWizard.cpp:1931 msgid "SLA Technology Printers" msgstr "Impressoras de tecnologia SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 -#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:246 +#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "Aviso" -#: src/slic3r/GUI/ConfigWizard.cpp:1760 -msgid "You have to select at least one filament for selected printers" -msgstr "" -"Você tem que selecionar pelo menos um filamento para impressoras selecionadas" +#: src/slic3r/GUI/ConfigWizard.cpp:2257 +msgid "The following FFF printer models have no filament selected:" +msgstr "Os seguintes caracteres não são permitidos:" -#: src/slic3r/GUI/ConfigWizard.cpp:1761 -msgid "Do you want to automatic select default filaments?" +#: src/slic3r/GUI/ConfigWizard.cpp:2261 +msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Deseja selecionar filamentos padrão automáticos?" -#: src/slic3r/GUI/ConfigWizard.cpp:1771 -msgid "You have to select at least one material for selected printers" -msgstr "" -"Você tem que selecionar pelo menos um material para impressoras selecionadas" +#: src/slic3r/GUI/ConfigWizard.cpp:2275 +msgid "The following SLA printer models have no materials selected:" +msgstr "Os seguintes caracteres não são permitidos:" -#: src/slic3r/GUI/ConfigWizard.cpp:1772 -msgid "Do you want to automatic select default materials?" +#: src/slic3r/GUI/ConfigWizard.cpp:2279 +msgid "Do you want to select default SLA materials for these printer models?" msgstr "Deseja selecionar automaticamente materiais padrão?" -#: src/slic3r/GUI/ConfigWizard.cpp:1976 +#: src/slic3r/GUI/ConfigWizard.cpp:2487 msgid "Select all standard printers" msgstr "Selecione todas as impressoras padrão" -#: src/slic3r/GUI/ConfigWizard.cpp:1979 +#: src/slic3r/GUI/ConfigWizard.cpp:2490 msgid "< &Back" msgstr "< &Voltar" -#: src/slic3r/GUI/ConfigWizard.cpp:1980 +#: src/slic3r/GUI/ConfigWizard.cpp:2491 msgid "&Next >" msgstr "&Próximo >" -#: src/slic3r/GUI/ConfigWizard.cpp:1981 +#: src/slic3r/GUI/ConfigWizard.cpp:2492 msgid "&Finish" msgstr "&Final" -#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "Cancelar" -#: src/slic3r/GUI/ConfigWizard.cpp:1995 +#: src/slic3r/GUI/ConfigWizard.cpp:2506 msgid "Prusa FFF Technology Printers" msgstr "Impressoras de tecnologia Prusa FFF" -#: src/slic3r/GUI/ConfigWizard.cpp:1998 +#: src/slic3r/GUI/ConfigWizard.cpp:2509 msgid "Prusa MSLA Technology Printers" msgstr "Impressoras de tecnologia Prusa MSLA" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filament Profiles Selection" msgstr "Seleção de Perfis de Filamento" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3554 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "Tipo:" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Material Profiles Selection" msgstr "Perfil de material SLA padrão" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 -msgid "Layer height:" -msgstr "Altura da camada:" - -#: src/slic3r/GUI/ConfigWizard.cpp:2109 +#: src/slic3r/GUI/ConfigWizard.cpp:2624 msgid "Configuration Assistant" -msgstr "Assistente de config." +msgstr "Assistente de config" -#: src/slic3r/GUI/ConfigWizard.cpp:2110 +#: src/slic3r/GUI/ConfigWizard.cpp:2625 msgid "Configuration &Assistant" -msgstr "Assistente &de config." +msgstr "Assistente &de config" -#: src/slic3r/GUI/ConfigWizard.cpp:2112 +#: src/slic3r/GUI/ConfigWizard.cpp:2627 msgid "Configuration Wizard" -msgstr "Assistente de config." +msgstr "Assistente de config" -#: src/slic3r/GUI/ConfigWizard.cpp:2113 +#: src/slic3r/GUI/ConfigWizard.cpp:2628 msgid "Configuration &Wizard" -msgstr "Assistente &de config." +msgstr "Assistente &de config" -#: src/slic3r/GUI/DoubleSlider.cpp:79 +#: src/slic3r/GUI/DoubleSlider.cpp:110 msgid "Place bearings in slots and resume printing" msgstr "Coloque rolamentos em ranhuras e retome a impressão" -#: src/slic3r/GUI/DoubleSlider.cpp:950 +#: src/slic3r/GUI/DoubleSlider.cpp:1064 msgid "One layer mode" msgstr "Modo de uma camada" -#: src/slic3r/GUI/DoubleSlider.cpp:952 +#: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" msgstr "Descarte todas as alterações personalizadas" -#: src/slic3r/GUI/DoubleSlider.cpp:955 +#: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 +msgid "Jump to move" +msgstr "Pule para movimento" + +#: src/slic3r/GUI/DoubleSlider.cpp:1075 #, c-format msgid "Jump to height %s or Set extruder sequence for the entire print" msgstr "" "Pule para altura %s ou Definir seqüência de extrusora para toda a impressão" -#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 -#: src/slic3r/GUI/DoubleSlider.cpp:1651 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 +#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 msgid "Jump to height" msgstr "Pule para altura" -#: src/slic3r/GUI/DoubleSlider.cpp:960 +#: src/slic3r/GUI/DoubleSlider.cpp:1083 msgid "Edit current color - Right click the colored slider segment" msgstr "" -"Editar cor atual - Clique com o botão direito do mouse no segmento de " -"controle deslizante colorido" +"Editar cor atual - Clique com o botão direito do mouse no segmento de controle " +"deslizante colorido" -#: src/slic3r/GUI/DoubleSlider.cpp:970 +#: src/slic3r/GUI/DoubleSlider.cpp:1093 msgid "Print mode" msgstr "Modo da impressora" -#: src/slic3r/GUI/DoubleSlider.cpp:984 +#: src/slic3r/GUI/DoubleSlider.cpp:1107 msgid "Add extruder change - Left click" msgstr "Adicionar alteração extrusora - Clique à esquerda" -#: src/slic3r/GUI/DoubleSlider.cpp:986 +#: src/slic3r/GUI/DoubleSlider.cpp:1109 msgid "" "Add color change - Left click for predefined color or Shift + Left click for " "custom color selection" @@ -1038,27 +1064,26 @@ msgstr "" "Adicionar mudança de cor - Clique à esquerda para cor predefinida ou Shift + " "Clique à esquerda para seleção personalizada de cores" -#: src/slic3r/GUI/DoubleSlider.cpp:988 +#: src/slic3r/GUI/DoubleSlider.cpp:1111 msgid "Add color change - Left click" msgstr "Adicionar mudança de cor - Clique à esquerda" -#: src/slic3r/GUI/DoubleSlider.cpp:989 +#: src/slic3r/GUI/DoubleSlider.cpp:1112 msgid "or press \"+\" key" msgstr "ou pressione a tecla \"+\"" -#: src/slic3r/GUI/DoubleSlider.cpp:991 +#: src/slic3r/GUI/DoubleSlider.cpp:1114 msgid "Add another code - Ctrl + Left click" msgstr "Adicionar outro código - Ctrl + Clique à esquerda" -#: src/slic3r/GUI/DoubleSlider.cpp:992 +#: src/slic3r/GUI/DoubleSlider.cpp:1115 msgid "Add another code - Right click" msgstr "Adicionar outro código - Clique com o botão direito" -#: src/slic3r/GUI/DoubleSlider.cpp:998 +#: src/slic3r/GUI/DoubleSlider.cpp:1121 msgid "" "The sequential print is on.\n" -"It's impossible to apply any custom G-code for objects printing " -"sequentually.\n" +"It's impossible to apply any custom G-code for objects printing sequentually.\n" "This code won't be processed during G-code generation." msgstr "" "A impressão sequencial está.\n" @@ -1066,27 +1091,31 @@ msgstr "" "de objetos.\n" "Este código não será processado durante a geração de G-code." -#: src/slic3r/GUI/DoubleSlider.cpp:1005 +#: src/slic3r/GUI/DoubleSlider.cpp:1130 msgid "Color change (\"%1%\")" msgstr "Mudança de cor (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1006 +#: src/slic3r/GUI/DoubleSlider.cpp:1131 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Mudança de cor (\"%1%\") para Extrusor %2%" -#: src/slic3r/GUI/DoubleSlider.cpp:1009 +#: src/slic3r/GUI/DoubleSlider.cpp:1133 msgid "Pause print (\"%1%\")" msgstr "Pausar impressão (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1011 +#: src/slic3r/GUI/DoubleSlider.cpp:1135 +msgid "Custom template (\"%1%\")" +msgstr "Modelo customizado (\"%1%\")" + +#: src/slic3r/GUI/DoubleSlider.cpp:1137 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "Extrusora (ferramenta) é alterada para Extrusora \"%1%\"" -#: src/slic3r/GUI/DoubleSlider.cpp:1019 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Note" msgstr "Nota" -#: src/slic3r/GUI/DoubleSlider.cpp:1021 +#: src/slic3r/GUI/DoubleSlider.cpp:1146 msgid "" "G-code associated to this tick mark is in a conflict with print mode.\n" "Editing it will cause changes of Slider data." @@ -1095,17 +1124,17 @@ msgstr "" "de impressão.\n" "Editá-lo causará alterações nos dados do Slider." -#: src/slic3r/GUI/DoubleSlider.cpp:1024 +#: src/slic3r/GUI/DoubleSlider.cpp:1149 msgid "" -"There is a color change for extruder that won't be used till the end of " -"print job.\n" +"There is a color change for extruder that won't be used till the end of print " +"job.\n" "This code won't be processed during G-code generation." msgstr "" -"Há uma mudança de cor para extrusor que não será usada até o final do " -"trabalho de impressão.\n" +"Há uma mudança de cor para extrusor que não será usada até o final do trabalho " +"de impressão.\n" "Este código não será processado durante a geração de código G." -#: src/slic3r/GUI/DoubleSlider.cpp:1027 +#: src/slic3r/GUI/DoubleSlider.cpp:1152 msgid "" "There is an extruder change set to the same extruder.\n" "This code won't be processed during G-code generation." @@ -1113,7 +1142,7 @@ msgstr "" "Há uma mudança extrusora definida para o mesmo extrusor.\n" "Este código não será processado durante a geração de código G." -#: src/slic3r/GUI/DoubleSlider.cpp:1030 +#: src/slic3r/GUI/DoubleSlider.cpp:1155 msgid "" "There is a color change for extruder that has not been used before.\n" "Check your settings to avoid redundant color changes." @@ -1121,161 +1150,168 @@ msgstr "" "Há uma mudança de cor para extrusor que não foi usada antes.\n" "Verifique suas configurações para evitar alterações de cor redundantes." -#: src/slic3r/GUI/DoubleSlider.cpp:1035 +#: src/slic3r/GUI/DoubleSlider.cpp:1160 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "" -"Excluir marca de marca de marca - Clique à esquerda ou pressione a tecla \"-" -"\"" +"Excluir marca de marca de marca - Clique à esquerda ou pressione a tecla \"-\"" -#: src/slic3r/GUI/DoubleSlider.cpp:1037 +#: src/slic3r/GUI/DoubleSlider.cpp:1162 msgid "Edit tick mark - Ctrl + Left click" msgstr "Editar marca de tique - Ctrl + Clique à esquerda" -#: src/slic3r/GUI/DoubleSlider.cpp:1038 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 msgid "Edit tick mark - Right click" msgstr "Editar marca de tique - Clique com o botão direito do mouse" -#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 -#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1705 -#: src/slic3r/GUI/Tab.cpp:2322 src/libslic3r/GCode/PreviewData.cpp:445 +#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 #, c-format msgid "Extruder %d" msgstr "Extrusora %d" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1706 +#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "ativar" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Switch code to Change extruder" msgstr "Mudar código para extrusor de alterar" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1672 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "Mudar extrusora" -#: src/slic3r/GUI/DoubleSlider.cpp:1145 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 msgid "Change extruder (N/A)" msgstr "Extrusora de alterações (N/A)" -#: src/slic3r/GUI/DoubleSlider.cpp:1147 +#: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Use outra extrusora" -#: src/slic3r/GUI/DoubleSlider.cpp:1171 +#: src/slic3r/GUI/DoubleSlider.cpp:1298 msgid "used" msgstr "usado" -#: src/slic3r/GUI/DoubleSlider.cpp:1179 +#: src/slic3r/GUI/DoubleSlider.cpp:1306 msgid "Switch code to Color change (%1%) for:" msgstr "Mudar o código para mudança de cor (%1%) Para:" -#: src/slic3r/GUI/DoubleSlider.cpp:1180 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "Add color change (%1%) for:" msgstr "Add/Excluir mudança de cor (%1%) para:" -#: src/slic3r/GUI/DoubleSlider.cpp:1477 +#: src/slic3r/GUI/DoubleSlider.cpp:1665 msgid "Add color change" msgstr "Adicionar mudança de cor" -#: src/slic3r/GUI/DoubleSlider.cpp:1487 +#: src/slic3r/GUI/DoubleSlider.cpp:1675 msgid "Add pause print" msgstr "Adicionar impressão de pausa" -#: src/slic3r/GUI/DoubleSlider.cpp:1490 +#: src/slic3r/GUI/DoubleSlider.cpp:1679 +msgid "Add custom template" +msgstr "Adicionar modelo customizado" + +#: src/slic3r/GUI/DoubleSlider.cpp:1682 msgid "Add custom G-code" msgstr "Adicionar código G personalizado" -#: src/slic3r/GUI/DoubleSlider.cpp:1508 +#: src/slic3r/GUI/DoubleSlider.cpp:1700 msgid "Edit color" msgstr "Editar cor" -#: src/slic3r/GUI/DoubleSlider.cpp:1509 +#: src/slic3r/GUI/DoubleSlider.cpp:1701 msgid "Edit pause print message" msgstr "Editar mensagem de impressão de pausa" -#: src/slic3r/GUI/DoubleSlider.cpp:1510 +#: src/slic3r/GUI/DoubleSlider.cpp:1702 msgid "Edit custom G-code" msgstr "Editar código G personalizado" -#: src/slic3r/GUI/DoubleSlider.cpp:1516 +#: src/slic3r/GUI/DoubleSlider.cpp:1708 msgid "Delete color change" msgstr "Excluir alteração de cor" -#: src/slic3r/GUI/DoubleSlider.cpp:1517 +#: src/slic3r/GUI/DoubleSlider.cpp:1709 msgid "Delete tool change" msgstr "Excluir alteração de ferramenta" -#: src/slic3r/GUI/DoubleSlider.cpp:1518 +#: src/slic3r/GUI/DoubleSlider.cpp:1710 msgid "Delete pause print" msgstr "Excluir impressão de pausa" -#: src/slic3r/GUI/DoubleSlider.cpp:1519 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Delete custom G-code" msgstr "Excluir código G personalizado" -#: src/slic3r/GUI/DoubleSlider.cpp:1532 +#: src/slic3r/GUI/DoubleSlider.cpp:1728 msgid "Set extruder sequence for the entire print" msgstr "Definir sequência de extrusora para toda a impressão" -#: src/slic3r/GUI/DoubleSlider.cpp:1618 +#: src/slic3r/GUI/DoubleSlider.cpp:1814 msgid "Enter custom G-code used on current layer" msgstr "Digite o código G personalizado usado na camada atual" -#: src/slic3r/GUI/DoubleSlider.cpp:1619 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Custom G-code on current layer (%1% mm)." msgstr "Código G personalizado na camada atual (%1% mm)." -#: src/slic3r/GUI/DoubleSlider.cpp:1634 +#: src/slic3r/GUI/DoubleSlider.cpp:1830 msgid "Enter short message shown on Printer display when a print is paused" msgstr "" "Digite mensagem curta mostrada no visor da impressora quando uma impressão é " "pausada" -#: src/slic3r/GUI/DoubleSlider.cpp:1635 +#: src/slic3r/GUI/DoubleSlider.cpp:1831 msgid "Message for pause print on current layer (%1% mm)." msgstr "Mensagem para impressão de pausa na camada atual (%1% mm)." -#: src/slic3r/GUI/DoubleSlider.cpp:1650 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 +msgid "Enter the move you want to jump to" +msgstr "Digite o movimento que você deseja saltar para" + +#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 msgid "Enter the height you want to jump to" msgstr "Digite a altura que você deseja saltar para" -#: src/slic3r/GUI/DoubleSlider.cpp:1899 +#: src/slic3r/GUI/DoubleSlider.cpp:2118 msgid "The last color change data was saved for a single extruder printing." msgstr "" "Parâmetros de mudança de ferramenta com impressoras de multi material com " "apenas uma extrusora." -#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 msgid "The last color change data was saved for a multi extruder printing." msgstr "" "Os últimos dados de mudança de cor foram salvos para uma impressão de vários " "extrusores." -#: src/slic3r/GUI/DoubleSlider.cpp:1902 +#: src/slic3r/GUI/DoubleSlider.cpp:2121 msgid "Your current changes will delete all saved color changes." msgstr "Suas alterações atuais excluirão todas as alterações de cor salvas." -#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 msgid "Are you sure you want to continue?" msgstr "Você tem certeza que deseja continuar?" -#: src/slic3r/GUI/DoubleSlider.cpp:1917 +#: src/slic3r/GUI/DoubleSlider.cpp:2135 msgid "" "Select YES if you want to delete all saved tool changes, \n" "NO if you want all tool changes switch to color changes, \n" "or CANCEL to leave it unchanged." msgstr "" "Selecione SIM se quiser excluir todas as alterações de ferramenta salvas, \n" -"NÃO, se você quiser que todas as alterações de ferramenta mudem para " -"mudanças de cor, \n" +"NÃO, se você quiser que todas as alterações de ferramenta mudem para mudanças " +"de cor, \n" "ou CANCELAR para deixá-lo inalterado." -#: src/slic3r/GUI/DoubleSlider.cpp:1920 +#: src/slic3r/GUI/DoubleSlider.cpp:2138 msgid "Do you want to delete all saved tool changes?" msgstr "Deseja excluir todas as alterações de ferramenta salvas?" -#: src/slic3r/GUI/DoubleSlider.cpp:1922 +#: src/slic3r/GUI/DoubleSlider.cpp:2140 msgid "" "The last color change data was saved for a multi extruder printing with tool " "changes for whole print." @@ -1283,11 +1319,22 @@ msgstr "" "Os últimos dados de mudança de cor foram salvos para uma impressão multi-" "extrusora com alterações de ferramenta para impressão inteira." -#: src/slic3r/GUI/DoubleSlider.cpp:1923 +#: src/slic3r/GUI/DoubleSlider.cpp:2141 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "" -"Suas alterações atuais excluirão todas as alterações do extrusor " -"(ferramenta) salvos." +"Suas alterações atuais excluirão todas as alterações do extrusor (ferramenta) " +"salvos." + +#: src/slic3r/GUI/ExtraRenderers.cpp:297 src/slic3r/GUI/GUI_ObjectList.cpp:496 +#: src/slic3r/GUI/GUI_ObjectList.cpp:508 src/slic3r/GUI/GUI_ObjectList.cpp:1015 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4454 src/slic3r/GUI/GUI_ObjectList.cpp:4464 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4499 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:202 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 +msgid "default" +msgstr "padrão" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:23 msgid "Set extruder sequence" @@ -1297,11 +1344,10 @@ msgstr "Definir seqüência de extrusor" msgid "Set extruder change for every" msgstr "Definir a mudança de extrusor para cada" -#: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 -#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 -#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1976 +#: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:1038 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1798 src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2072 src/libslic3r/PrintConfig.cpp:2118 msgid "layers" msgstr "camadas" @@ -1317,33 +1363,34 @@ msgstr "Remover extrusor da seqüência" msgid "Add extruder to sequence" msgstr "Adicionar extrusor à seqüência" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:184 msgid "default value" msgstr "valor padrão" -#: src/slic3r/GUI/Field.cpp:139 +#: src/slic3r/GUI/Field.cpp:187 msgid "parameter name" msgstr "nome do parâmetro" -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:581 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "N/D" -#: src/slic3r/GUI/Field.cpp:175 +#: src/slic3r/GUI/Field.cpp:223 #, c-format msgid "%s doesn't support percentage" msgstr "%s não suporta porcentagem" -#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 +#: src/slic3r/GUI/Field.cpp:243 src/slic3r/GUI/Field.cpp:274 +#: src/slic3r/GUI/Field.cpp:1358 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." msgstr "Entrada numérica não válida." -#: src/slic3r/GUI/Field.cpp:204 +#: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "Valor de entrada está fora do limite" -#: src/slic3r/GUI/Field.cpp:240 +#: src/slic3r/GUI/Field.cpp:288 #, c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -1354,7 +1401,7 @@ msgstr "" "Selecione SIM se quiser trocar esse valor para %s%%, \n" "ou NÃO se você tem certeza que %s %s é o valor correto." -#: src/slic3r/GUI/Field.cpp:243 +#: src/slic3r/GUI/Field.cpp:291 msgid "Parameter validation" msgstr "Validação do parâmetro" @@ -1441,8 +1488,9 @@ msgstr "Atualizador de Firmware" msgid "Firmware image:" msgstr "Imagem do Firmware:" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1657 -#: src/slic3r/GUI/Tab.cpp:1719 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 msgid "Browse" msgstr "Procurar" @@ -1474,9 +1522,8 @@ msgstr "Pronto" msgid "Advanced: Output log" msgstr "Avançado: log de Saída" -#: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:336 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +#: src/slic3r/GUI/FirmwareDialog.cpp:852 src/slic3r/GUI/Mouse3DController.cpp:353 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Close" msgstr "Fechar" @@ -1496,318 +1543,652 @@ msgstr "Confirmação" msgid "Cancelling..." msgstr "Cancelando..." -#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +#: src/slic3r/GUI/GCodeViewer.cpp:223 +msgid "Tool position" +msgstr "Posição da ferramenta" + +#: src/slic3r/GUI/GCodeViewer.cpp:933 +msgid "Generating toolpaths" +msgstr "Gerando caminhos" + +#: src/slic3r/GUI/GCodeViewer.cpp:1318 +msgid "Generating vertex buffer" +msgstr "Gerando buffer do vértice" + +#: src/slic3r/GUI/GCodeViewer.cpp:1392 +msgid "Generating index buffers" +msgstr "Gerando buffer do índice" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to hide" +msgstr "Clique para esconder" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to show" +msgstr "Clique para mostrar" + +#: src/slic3r/GUI/GCodeViewer.cpp:2183 +msgid "up to" +msgstr "até" + +#: src/slic3r/GUI/GCodeViewer.cpp:2189 +msgid "above" +msgstr "acima de Z" + +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "from" +msgstr "de" + +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "to" +msgstr "para" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 +#: src/libslic3r/GCode/PreviewData.cpp:350 +msgid "Feature type" +msgstr "Tipo de recurso" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/RammingChart.cpp:76 +msgid "Time" +msgstr "Tempo" + +#: src/slic3r/GUI/GCodeViewer.cpp:2233 +msgid "Percentage" +msgstr "Porcentagem" + +#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 +msgid "Height (mm)" +msgstr "Altura (mm)" + +#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 +msgid "Width (mm)" +msgstr "Espessura (mm)" + +#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 +msgid "Speed (mm/s)" +msgstr "Velocidade (mm/s)" + +#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 +msgid "Fan Speed (%)" +msgstr "Velocidade da ventoinha (%)" + +#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 +msgid "Volumetric flow rate (mm³/s)" +msgstr "Vazão volumétrica (mm³/s)" + +#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 +#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 +#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 +#: src/libslic3r/GCode/PreviewData.cpp:362 +msgid "Tool" +msgstr "Ferramenta" + +#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 +#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 +msgid "Color Print" +msgstr "Impressão colorida" + +#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 +#: src/libslic3r/PrintConfig.cpp:523 +msgid "Extruder" +msgstr "Extrusora" + +#: src/slic3r/GUI/GCodeViewer.cpp:2289 +msgid "Default color" +msgstr "Cor de impressão padrão" + +#: src/slic3r/GUI/GCodeViewer.cpp:2313 +msgid "default color" +msgstr "cor de impressão padrão" + +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +msgid "Color change" +msgstr "Adicionar mudança de cor" + +#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +msgid "Print" +msgstr "Imprrimir" + +#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 +#: src/slic3r/GUI/Plater.cpp:1199 +msgid "Pause" +msgstr "Pausar" + +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Event" +msgstr "Evento" + +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Remaining time" +msgstr "Tempo de impressão restante" + +#: src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Duration" +msgstr "Duração" + +#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 +msgid "Travel" +msgstr "Viagem" + +#: src/slic3r/GUI/GCodeViewer.cpp:2492 +msgid "Movement" +msgstr "Movimento" + +#: src/slic3r/GUI/GCodeViewer.cpp:2493 +msgid "Extrusion" +msgstr "Extrusão" + +#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 +#: src/slic3r/GUI/Tab.cpp:2539 +msgid "Retraction" +msgstr "Retração" + +#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 +#: src/slic3r/GUI/GUI_Preview.cpp:333 +msgid "Options" +msgstr "Opções de saída" + +#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:1472 +msgid "Retractions" +msgstr "Retrações" + +#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 +#: src/slic3r/GUI/GUI_Preview.cpp:1473 +msgid "Deretractions" +msgstr "Retorno da retração" + +#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +msgid "Tool changes" +msgstr "G-code de troca de ferramenta" + +#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +msgid "Color changes" +msgstr "Adicionar mudança de cor" + +#: src/slic3r/GUI/GCodeViewer.cpp:2532 src/slic3r/GUI/GUI_Preview.cpp:1476 +msgid "Pause prints" +msgstr "Adicionar impressão de pausa" + +#: src/slic3r/GUI/GCodeViewer.cpp:2533 src/slic3r/GUI/GUI_Preview.cpp:1477 +msgid "Custom GCodes" +msgstr "G-code customizado" + +#: src/slic3r/GUI/GCodeViewer.cpp:2552 src/slic3r/GUI/GCodeViewer.cpp:2557 +#: src/slic3r/GUI/Plater.cpp:246 src/slic3r/GUI/Plater.cpp:1125 +#: src/slic3r/GUI/Plater.cpp:1175 src/slic3r/GUI/Plater.cpp:1196 +msgid "Estimated printing time" +msgstr "Tempo estimado de impressão" + +#: src/slic3r/GUI/GCodeViewer.cpp:2552 +msgid "Normal mode" +msgstr "Modo normal" + +#: src/slic3r/GUI/GCodeViewer.cpp:2557 +msgid "Stealth mode" +msgstr "Modo silencioso" + +#: src/slic3r/GUI/GCodeViewer.cpp:2586 +msgid "Show stealth mode" +msgstr "Mostrar modo silencioso" + +#: src/slic3r/GUI/GCodeViewer.cpp:2591 +msgid "Show normal mode" +msgstr "Mostrar modo normal" + +#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 msgid "Variable layer height" msgstr "Altura da camada variável" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 +#: src/slic3r/GUI/GLCanvas3D.cpp:233 msgid "Left mouse button:" msgstr "Botão esquerdo do mouse:" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/GLCanvas3D.cpp:235 msgid "Add detail" -msgstr "Adicionar config." +msgstr "Adicionar config" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 +#: src/slic3r/GUI/GLCanvas3D.cpp:237 msgid "Right mouse button:" msgstr "Botão direito do mouse:" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/GLCanvas3D.cpp:239 msgid "Remove detail" msgstr "Remover detalhes" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/GLCanvas3D.cpp:241 msgid "Shift + Left mouse button:" msgstr "Shift + Botão do mouse esquerdo:" -#: src/slic3r/GUI/GLCanvas3D.cpp:252 +#: src/slic3r/GUI/GLCanvas3D.cpp:243 msgid "Reset to base" msgstr "Reset para base" -#: src/slic3r/GUI/GLCanvas3D.cpp:255 +#: src/slic3r/GUI/GLCanvas3D.cpp:245 msgid "Shift + Right mouse button:" msgstr "Shift + Botão do mouse direito:" -#: src/slic3r/GUI/GLCanvas3D.cpp:258 +#: src/slic3r/GUI/GLCanvas3D.cpp:247 msgid "Smoothing" msgstr "Suavizando" -#: src/slic3r/GUI/GLCanvas3D.cpp:261 +#: src/slic3r/GUI/GLCanvas3D.cpp:249 msgid "Mouse wheel:" msgstr "Scroll do mouse:" -#: src/slic3r/GUI/GLCanvas3D.cpp:264 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Increase/decrease edit area" msgstr "Aumentar/diminuir a área de edição" -#: src/slic3r/GUI/GLCanvas3D.cpp:267 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Adaptive" msgstr "Adaptativo" -#: src/slic3r/GUI/GLCanvas3D.cpp:273 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Quality / Speed" msgstr "Qualidade / Velocidade" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 +#: src/slic3r/GUI/GLCanvas3D.cpp:263 msgid "Higher print quality versus higher print speed." msgstr "Maior qualidade de impressão versus maior velocidade de impressão." -#: src/slic3r/GUI/GLCanvas3D.cpp:288 +#: src/slic3r/GUI/GLCanvas3D.cpp:274 msgid "Smooth" msgstr "Suave" -#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" msgstr "Raio" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 +#: src/slic3r/GUI/GLCanvas3D.cpp:290 msgid "Keep min" -msgstr "Mantenha min." +msgstr "Mantenha min" -#: src/slic3r/GUI/GLCanvas3D.cpp:313 +#: src/slic3r/GUI/GLCanvas3D.cpp:299 msgid "Reset" msgstr "Redefinir" -#: src/slic3r/GUI/GLCanvas3D.cpp:599 +#: src/slic3r/GUI/GLCanvas3D.cpp:565 msgid "Variable layer height - Manual edit" msgstr "Habilitar altura de camada variável" -#: src/slic3r/GUI/GLCanvas3D.cpp:685 -msgid "An object outside the print area was detected" -msgstr "Um objeto foi detectado fora da área de impressão" +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "An object outside the print area was detected." +msgstr "Um objeto foi detectado fora da área de impressão." -#: src/slic3r/GUI/GLCanvas3D.cpp:686 -msgid "A toolpath outside the print area was detected" -msgstr "Há movimentos fora da área de impressão" +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "A toolpath outside the print area was detected." +msgstr "Há movimentos fora da área de impressão." -#: src/slic3r/GUI/GLCanvas3D.cpp:687 -msgid "SLA supports outside the print area were detected" -msgstr "Suportes de SLA foram detectados fora da área de impressão" +#: src/slic3r/GUI/GLCanvas3D.cpp:635 +msgid "SLA supports outside the print area were detected." +msgstr "Suportes de SLA foram detectados fora da área de impressão." -#: src/slic3r/GUI/GLCanvas3D.cpp:688 -msgid "Some objects are not visible" -msgstr "Alguns objetos não são visíveis" +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "Some objects are not visible." +msgstr "Alguns objetos não são visíveis." -#: src/slic3r/GUI/GLCanvas3D.cpp:690 +#: src/slic3r/GUI/GLCanvas3D.cpp:638 msgid "" -"An object outside the print area was detected\n" -"Resolve the current problem to continue slicing" +"An object outside the print area was detected.\n" +"Resolve the current problem to continue slicing." msgstr "" -"Um objeto foi encontrado fora da área de impressão\n" -"Resolva o problema atual para continuar o fatiamento" +"Um objeto foi encontrado fora da área de impressão.\n" +"Resolva o problema atual para continuar o fatiamento." -#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 msgid "Default print color" msgstr "Cor de impressão padrão" -#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 -#: src/slic3r/GUI/GLCanvas3D.cpp:982 +#: src/slic3r/GUI/GLCanvas3D.cpp:940 src/slic3r/GUI/GLCanvas3D.cpp:949 +#: src/slic3r/GUI/GLCanvas3D.cpp:988 msgid "Pause print or custom G-code" msgstr "Pausa impressão ou código G personalizado" -#: src/slic3r/GUI/GLCanvas3D.cpp:955 +#: src/slic3r/GUI/GLCanvas3D.cpp:961 #, c-format msgid "up to %.2f mm" msgstr "até %.2f mm" -#: src/slic3r/GUI/GLCanvas3D.cpp:959 +#: src/slic3r/GUI/GLCanvas3D.cpp:965 #, c-format msgid "above %.2f mm" msgstr "acima de %.2f mm" -#: src/slic3r/GUI/GLCanvas3D.cpp:963 +#: src/slic3r/GUI/GLCanvas3D.cpp:969 #, c-format msgid "%.2f - %.2f mm" msgstr "%.2f - %.2f mm" -#: src/slic3r/GUI/GLCanvas3D.cpp:995 +#: src/slic3r/GUI/GLCanvas3D.cpp:1001 #, c-format msgid "Color change for Extruder %d at %.2f mm" msgstr "Mudança de cor para Extrusor %d em %.2f mm" -#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +#: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Seq." -#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +#: src/slic3r/GUI/GLCanvas3D.cpp:1418 +msgid "canvas_tooltip" +msgstr "canvas_tooltip" + +#: src/slic3r/GUI/GLCanvas3D.cpp:1778 msgid "Variable layer height - Reset" msgstr "Habilitar altura de camada variável - Resetar" -#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +#: src/slic3r/GUI/GLCanvas3D.cpp:1786 msgid "Variable layer height - Adaptive" msgstr "Habilitar altura de camada variável - Adaptativo" -#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +#: src/slic3r/GUI/GLCanvas3D.cpp:1794 msgid "Variable layer height - Smooth all" msgstr "Habilitar altura de camada variável - Deixar tudo suave" -#: src/slic3r/GUI/GLCanvas3D.cpp:2053 +#: src/slic3r/GUI/GLCanvas3D.cpp:2226 msgid "Mirror Object" msgstr "Espelhar objeto" -#: src/slic3r/GUI/GLCanvas3D.cpp:2921 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:570 +#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "Gizmo-Mover" -#: src/slic3r/GUI/GLCanvas3D.cpp:3001 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:572 +#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "Gizmo-Rotacionar" -#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Mover objeto" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Switch to Settings" +msgstr "Alterar para modo de edição" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Print Settings Tab" +msgstr "C&onfig. de impressão" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Filament Settings Tab" +msgstr "&config. de filamentos" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Material Settings Tab" +msgstr "A&ba de config. de material" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +msgid "Printer Settings Tab" +msgstr "A&ba de config. da impressora" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Undo History" msgstr "Desfazer histórico" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Redo History" msgstr "Refazer histórico" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "Desfazer ação de %1$d" msgstr[1] "Desfazer ações de %1$d" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "Refazer ação de %1$d" msgstr[1] "Refazer ações de %1$d" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 +msgid "Search" +msgstr "Pesquisar" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4416 src/slic3r/GUI/GLCanvas3D.cpp:4424 +#: src/slic3r/GUI/Search.cpp:433 +msgid "Type here to search" +msgstr "Digite aqui para pesquisar" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4833 msgid "Add..." msgstr "Adicionar..." -#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1719 -#: src/slic3r/GUI/Plater.cpp:3933 src/slic3r/GUI/Plater.cpp:3955 -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Delete" msgstr "Deletar" -#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 -#: src/slic3r/GUI/Plater.cpp:4671 +#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "Delete all" msgstr "Deletar todos" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 -#: src/slic3r/GUI/Plater.cpp:2756 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1549 msgid "Arrange" msgstr "Arranjar" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "Arranjar seleção" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4871 msgid "Copy" msgstr "Copiar" -#: src/slic3r/GUI/GLCanvas3D.cpp:4514 +#: src/slic3r/GUI/GLCanvas3D.cpp:4880 msgid "Paste" msgstr "Colar" -#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3790 -#: src/slic3r/GUI/Plater.cpp:3802 src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 +#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 msgid "Add instance" msgstr "Adicionar instância" -#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 src/slic3r/GUI/Plater.cpp:3860 msgid "Remove instance" msgstr "Remover instância" -#: src/slic3r/GUI/GLCanvas3D.cpp:4550 +#: src/slic3r/GUI/GLCanvas3D.cpp:4916 msgid "Split to objects" msgstr "Dividir em objetos" -#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1488 +#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" msgstr "Dividir em partes" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/MainFrame.cpp:592 +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Undo" msgstr "Desfazer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 -msgid "Click right mouse button to open History" -msgstr "Clique no botão direito para abrir o Histórico" +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 +msgid "Click right mouse button to open/close History" +msgstr "Clique no botão direito para abrir/fechar o Histórico" -#: src/slic3r/GUI/GLCanvas3D.cpp:4641 +#: src/slic3r/GUI/GLCanvas3D.cpp:5051 msgid "Next Undo action: %1%" msgstr "Próxima ação de desfazer: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 -#: src/slic3r/GUI/MainFrame.cpp:595 +#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "Redo" msgstr "Refazer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4673 +#: src/slic3r/GUI/GLCanvas3D.cpp:5089 msgid "Next Redo action: %1%" msgstr "Próxima ação de refazer: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:6598 +#: src/slic3r/GUI/GLCanvas3D.cpp:7193 msgid "Selection-Add from rectangle" msgstr "Seleção-Adicionar do retângulo" -#: src/slic3r/GUI/GLCanvas3D.cpp:6617 +#: src/slic3r/GUI/GLCanvas3D.cpp:7212 msgid "Selection-Remove from rectangle" msgstr "Seleção-remover do retângulo" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:306 -#, c-format -msgid "" -"PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" -"while OpenGL version %s, render %s, vendor %s was detected." -msgstr "" -"PrusaSlicer requer drivers capazes de executar OpenGL 2.0, \n" -"enquanto a versão do OpenGL %s, renderização %s, fornecedor %s foi detectada." - -#: src/slic3r/GUI/GLCanvas3DManager.cpp:309 -msgid "You may need to update your graphics card driver." -msgstr "Você pode ter que atualizar os drivers da sua placa de vídeo." - -#: src/slic3r/GUI/GLCanvas3DManager.cpp:312 -msgid "" -"As a workaround, you may run PrusaSlicer with a software rendered 3D " -"graphics by running prusa-slicer.exe with the --sw_renderer parameter." -msgstr "" -"Como solução alternativa, você pode executar o PrusaSlicer com um software " -"renderizando gráficos 3D por executar Prusa-slicer.exe com o parâmetro--" -"sw_renderer." - -#: src/slic3r/GUI/GLCanvas3DManager.cpp:314 -msgid "Unsupported OpenGL version" -msgstr "Versão do OpenGL não suportada" - -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3412 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 msgid "Cut" msgstr "Cortar" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Keep upper part" msgstr "Manter parte superior" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 msgid "Keep lower part" msgstr "Manter parte inferior" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 msgid "Rotate lower part upwards" msgstr "Rotacione as partes inferiores para cima" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 msgid "Perform cut" msgstr "Aplicar o corte" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 +msgid "FDM Support Editing" +msgstr "Editor de Suporte FDM" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:25 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +msgid "Clipping of view" +msgstr "Recorte de vista" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:26 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +msgid "Reset direction" +msgstr "Restabelecer direção" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 +msgid "Cursor size" +msgstr "Tamanho do cursor" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 +msgid "Cursor type" +msgstr "Tipo do Cursor" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:29 +msgid "Left mouse button" +msgstr "Botão esquerdo do mouse" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:47 +msgid "Enforce supports" +msgstr "Reforçar suportes" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:31 +msgid "Right mouse button" +msgstr "Botão direito do mouse" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:373 +msgid "Block supports" +msgstr "Bloquear suportes" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:33 +msgid "Shift + Left mouse button" +msgstr "Shift + Botão do mouse esquerdo" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:34 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:368 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:378 +msgid "Remove selection" +msgstr "Remover seleção" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:35 +msgid "Remove all selection" +msgstr "Remover toda seleção" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:36 +msgid "Circle" +msgstr "Circular" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +msgid "Sphere" +msgstr "Esfera" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 +msgid "Reset selection" +msgstr "Restabelecer seleção" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:160 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:141 +msgid "Alt + Mouse wheel" +msgstr "Alt + Scroll do mouse" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:178 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:159 +msgid "Paints all facets inside, regardless of their orientation." +msgstr "Pinte todas as facetas internas, independente de suas orientações." + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:192 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:173 +msgid "Ignores facets facing away from the camera." +msgstr "Ignore facetas de costas para a câmera." + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:225 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:203 +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl + Scroll do mouse" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 +msgid "Autoset custom supports" +msgstr "Definir automaticamente suportes customizados" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "Threshold:" +msgstr "Limite:" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "deg" +msgstr "deg" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +msgid "Enforce" +msgstr "Reforçar" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +msgid "Block" +msgstr "Bloquear" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +msgid "Block supports by angle" +msgstr "Bloquear suporte por ângulo" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +msgid "Add supports by angle" +msgstr "Adicionar suportes por ângulo" + +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 msgid "Place on face" msgstr "Colocar em uma face" @@ -1827,8 +2208,7 @@ msgstr "Compensamento do Z" msgid "Quality" msgstr "Qualidade" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 -#: src/libslic3r/PrintConfig.cpp:2944 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 src/libslic3r/PrintConfig.cpp:3098 msgid "Closing distance" msgstr "Distância de fechamento" @@ -1848,64 +2228,92 @@ msgstr "Remover os buracos selecionados" msgid "Remove all holes" msgstr "Remova todos os buracos" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 -msgid "Clipping of view" -msgstr "Recorte de vista" - -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 -msgid "Reset direction" -msgstr "Restabelecer direção" - #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 msgid "Show supports" msgstr "Mostrar suportes" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:423 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:308 msgid "Add drainage hole" msgstr "Adicionar orifício de drenagem" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:541 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:424 msgid "Delete drainage hole" msgstr "Excluir orifício de drenagem" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:815 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:624 msgid "Hollowing parameter change" msgstr "Mudança de parâmetro de suporte" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:887 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:693 msgid "Change drainage hole diameter" msgstr "Mudar o diâmetro do orifício de drenagem" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:979 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:785 msgid "Hollow and drill" msgstr "Oco e broca" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1061 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:835 msgid "Move drainage hole" msgstr "Mover o orifício de drenagem" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:64 msgid "Move" msgstr "Mover" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 -#: src/libslic3r/PrintConfig.cpp:3461 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:309 +msgid "Rotation" +msgstr "Rotação" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 +msgid "Optimize orientation" +msgstr "Otimize a orientação" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 src/libslic3r/PrintConfig.cpp:3089 +msgid "Accuracy" +msgstr "Precisão" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:233 +msgid "Least supports" +msgstr "Menos suportes" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:234 +msgid "Suface quality" +msgstr "Qualidade da superfície" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:527 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:546 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Rotate" msgstr "Rotacionar" -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 -#: src/libslic3r/PrintConfig.cpp:3476 +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:78 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:238 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:547 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "Scale" msgstr "Escala" +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:30 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:381 +msgid "Enforce seam" +msgstr "Reforçar costura" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:32 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:383 +msgid "Block seam" +msgstr "Bloquear costura" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 +msgid "Seam Editing" +msgstr "Editar costura" + #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Diâmetro da cabeça" @@ -1915,7 +2323,7 @@ msgid "Lock supports under new islands" msgstr "Travar suportes debaixo de novas ilhas" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1361 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1218 msgid "Remove selected points" msgstr "Remover pontos selecionados" @@ -1924,12 +2332,12 @@ msgid "Remove all points" msgstr "Remover todos os pontos" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1221 msgid "Apply changes" msgstr "Aplicar mudanças" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 msgid "Discard changes" msgstr "Descartar mudanças" @@ -1938,12 +2346,12 @@ msgid "Minimal points distance" msgstr "Distância mínima entre pontos" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2928 msgid "Support points density" msgstr "Densidade dos pontos de suporte" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1224 msgid "Auto-generate points" msgstr "Pontos gerados automaticamente" @@ -1951,298 +2359,412 @@ msgstr "Pontos gerados automaticamente" msgid "Manual editing" msgstr "Edição manual" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:484 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:374 msgid "Add support point" msgstr "Adicionar ponto de suporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:621 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:514 msgid "Delete support point" msgstr "Deletar ponto de suporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:810 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:694 msgid "Change point head diameter" msgstr "Mudar o diâmetro do ponto da cabeça" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:878 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:762 msgid "Support parameter change" msgstr "Mudança de parâmetro de suporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:986 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 msgid "SLA Support Points" msgstr "Pontos de suporte SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1007 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 msgid "SLA gizmo turned on" msgstr "Gizmo de SLA ligado" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1035 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 msgid "Do you want to save your manually edited support points?" msgstr "Você deseja salvar os pontos manualmente editados?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1036 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Save changes?" msgstr "Salvar mudanças?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:924 msgid "SLA gizmo turned off" msgstr "Gizmo de SLA desligado" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1087 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:955 msgid "Move support point" msgstr "Mover pontos de suporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1186 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "Support points edit" msgstr "Edição de pontos de suporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1258 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1127 msgid "Autogeneration will erase all manually edited points." msgstr "Gerar automaticamente irá apagar todos os pontos manualmente editados." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1259 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1128 msgid "Are you sure you want to do it?" msgstr "Tem certeza que quer fazer isso?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1260 src/slic3r/GUI/GUI.cpp:258 -#: src/slic3r/GUI/Tab.cpp:3086 src/slic3r/GUI/WipeTowerDialog.cpp:45 -#: src/slic3r/GUI/WipeTowerDialog.cpp:366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Aviso" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1263 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1134 msgid "Autogenerate support points" msgstr "Pontos de suporte gerados automaticamente" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1324 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1181 msgid "SLA gizmo keyboard shortcuts" msgstr "Atalhos no teclado para gizmo SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1335 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1192 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Nota: alguns atalhos funcionam somente em modos que não editam." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1353 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1356 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1357 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Left click" msgstr "Clique esquerdo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1353 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "Add point" msgstr "Adicionar ponto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1354 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Right click" msgstr "Clique direito" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1354 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Remove point" msgstr "Remover ponto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1355 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1358 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1359 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Drag" msgstr "Arrastar" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1355 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 msgid "Move point" msgstr "Mover ponto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1356 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 msgid "Add point to selection" msgstr "Adicionar ponto à seleção" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1357 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Remove point from selection" msgstr "Remover ponto da seleção" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1358 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Selecionar por retângulo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1359 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Deselect by rectangle" msgstr "Desselecionar por retângulo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1360 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1217 msgid "Select all points" msgstr "Selecionar todos os pontos" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1362 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Mouse wheel" msgstr "Scroll do mouse" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1362 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Mover plano de recorte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 msgid "Reset clipping plane" msgstr "Restabelecer plano de recorte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1223 msgid "Switch to editing mode" msgstr "Alterar para modo de edição" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:497 -msgid "Gizmo-Place on Face" -msgstr "Gizmo-Colocar em uma face" - -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:571 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:521 msgid "Gizmo-Scale" msgstr "Gizmo-Escala" -#: src/slic3r/GUI/GUI_App.cpp:138 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 +msgid "Gizmo-Place on Face" +msgstr "Gizmo-Colocar em uma face" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 +msgid "Supports gizmo turned on" +msgstr "Gizmo de suportes ligado" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 +msgid "Seam gizmo turned on" +msgstr "Gizmo de costura ligado" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 +msgid "Seam gizmo turned off" +msgstr "Gizmo de costura desligado" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 +msgid "Supports gizmo turned off" +msgstr "Gizmo de suporte desligado" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 +msgid "Add supports" +msgstr "Adicionar ponto de suporte" + +#: src/slic3r/GUI/GUI_App.cpp:243 +msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "" +"PrusaSlicer é baseado no Slic3r criado por Alessandro Ranellucci e a " +"comunidade RepRap" + +#: src/slic3r/GUI/GUI_App.cpp:245 +msgid "" +"Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas " +"Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." +msgstr "" +"Contribuições por Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas " +"Meszaros, Lukas Matena, Vojtech Kral, David Kocik e outros." + +#: src/slic3r/GUI/GUI_App.cpp:246 +msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" +msgstr "Modelo de arte de Nora Al-Badri e Jan Nikolai Nelles" + +#: src/slic3r/GUI/GUI_App.cpp:528 #, c-format msgid "" -"%s has encountered an error. It was likely caused by running out of memory. " -"If you are sure you have enough RAM on your system, this may also be a bug " -"and we would be glad if you reported it.\n" +"%s has encountered an error. It was likely caused by running out of memory. If " +"you are sure you have enough RAM on your system, this may also be a bug and we " +"would be glad if you reported it.\n" "\n" "The application will now terminate." msgstr "" -"%s encontrou um erro. Provavelmente foi causado por ficar sem memória. Se " -"você tem certeza que você tem RAM suficiente em seu sistema, isso também " -"pode ser um bug e nós estaríamos contentes se você relatou.\n" +"%s encontrou um erro. Provavelmente foi causado por ficar sem memória. Se você " +"tem certeza que você tem RAM suficiente em seu sistema, isso também pode ser " +"um bug e nós estaríamos contentes se você relatou.\n" "\n" "O aplicativo será encerrado agora." -#: src/slic3r/GUI/GUI_App.cpp:141 +#: src/slic3r/GUI/GUI_App.cpp:531 msgid "Fatal error" msgstr "Erro fatal" -#: src/slic3r/GUI/GUI_App.cpp:446 -msgid "Changing of an application language" -msgstr "Alteração de um idioma do aplicativo" +#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 +msgid "" +"Error parsing PrusaSlicer config file, it is probably corrupted. Try to " +"manually delete the file to recover from the error. Your user profiles will " +"not be affected." +msgstr "" +"Erro de análise da config do arquivo, ele provavelmente está corrompido. Tente " +"excluir manualmente o arquivo para recuperar do erro. Seus perfis de usuário " +"não serão afetados." -#: src/slic3r/GUI/GUI_App.cpp:454 src/slic3r/GUI/GUI_App.cpp:463 +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "" +"Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to " +"manually delete the file to recover from the error." +msgstr "" +"Erro de análise PrusaGCodeViewer, ele provavelmente está corrompido. Tente " +"excluir manualmente o arquivo para recuperar do erro. " + +#: src/slic3r/GUI/GUI_App.cpp:718 +#, c-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"\vVocê tem certeza que deseja continuar?" + +#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +msgid "Remember my choice" +msgstr "Lembrar minha escolha" + +#: src/slic3r/GUI/GUI_App.cpp:759 +msgid "Loading configuration..." +msgstr "Carregando a config..." + +#: src/slic3r/GUI/GUI_App.cpp:825 +msgid "Creating settings tabs..." +msgstr "C&onfig. de impressão." + +#: src/slic3r/GUI/GUI_App.cpp:1078 +msgid "" +"You have the following presets with saved options for \"Print Host upload\"" +msgstr "" +"Você tem a seguinte predefinição com opções salvas para o \"Print Host upload\"" + +#: src/slic3r/GUI/GUI_App.cpp:1082 +msgid "" +"But from this version of PrusaSlicer we don't show/use this information in " +"Printer Settings.\n" +"Now, this information will be exposed in physical printers settings." +msgstr "" +"Mas a partir dessa versão do PrusaSlicer, não mostramos/usamos esta informação " +"nas Configurações de Impressora.\n" +"Agora essa informação vai ser exposta em configurações das impressoras físicas" + +#: src/slic3r/GUI/GUI_App.cpp:1084 +msgid "" +"By default new Printer devices will be named as \"Printer N\" during its " +"creation.\n" +"Note: This name can be changed later from the physical printers settings" +msgstr "" +"Por padrão, novas impressoras vão ser nomeadas como \"Printer N\" durante a " +"sua criação.\n" +"Nota: Esse nome pode ser alterado depois a partir das configurações de " +"impressoras físicas " + +#: src/slic3r/GUI/GUI_App.cpp:1087 src/slic3r/GUI/Tab.cpp:3435 +msgid "Information" +msgstr "Informação" + +#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 msgid "Recreating" msgstr "Recriando" -#: src/slic3r/GUI/GUI_App.cpp:470 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "Loading of current presets" msgstr "Carregando presets" -#: src/slic3r/GUI/GUI_App.cpp:478 +#: src/slic3r/GUI/GUI_App.cpp:1125 msgid "Loading of a mode view" msgstr "Carregamento de um modelo de vista" -#: src/slic3r/GUI/GUI_App.cpp:559 +#: src/slic3r/GUI/GUI_App.cpp:1208 msgid "Choose one file (3MF/AMF):" msgstr "Escolha um arquivo (3MF/AMF):" -#: src/slic3r/GUI/GUI_App.cpp:571 +#: src/slic3r/GUI/GUI_App.cpp:1220 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Escolha um ou mais arquivos (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/GUI_App.cpp:633 +#: src/slic3r/GUI/GUI_App.cpp:1233 +msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" +msgstr "Escolha um arquivo (GCODE/.GCO/.G/.ngc/NGC):" + +#: src/slic3r/GUI/GUI_App.cpp:1245 +msgid "Changing of an application language" +msgstr "Alteração de um idioma do aplicativo" + +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Select the language" -msgstr "Selecione a linguagem" +msgstr "Selecione o idioma" -#: src/slic3r/GUI/GUI_App.cpp:633 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Language" -msgstr "Linguagem" +msgstr "Idioma" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1425 +msgid "modified" +msgstr "modificado" + +#: src/slic3r/GUI/GUI_App.cpp:1474 #, c-format msgid "Run %s" msgstr "Executar %s" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "&Configuration Snapshots" -msgstr "&Captura das config." +msgstr "&Captura das config" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "Inspect / activate configuration snapshots" -msgstr "Inspecionar / ativar capturas de config." +msgstr "Inspecionar / ativar capturas de config" -#: src/slic3r/GUI/GUI_App.cpp:805 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Take Configuration &Snapshot" -msgstr "Capturar &config." +msgstr "Capturar &config" -#: src/slic3r/GUI/GUI_App.cpp:805 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Capture a configuration snapshot" -msgstr "Capturar uma config." +msgstr "Capturar uma config" -#: src/slic3r/GUI/GUI_App.cpp:806 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for updates" msgstr "Verificar Atualizações" -#: src/slic3r/GUI/GUI_App.cpp:806 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for configuration updates" msgstr "Verificar atualizações nas aplicações" -#: src/slic3r/GUI/GUI_App.cpp:808 +#: src/slic3r/GUI/GUI_App.cpp:1487 msgid "&Preferences" msgstr "&Preferências" -#: src/slic3r/GUI/GUI_App.cpp:814 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Application preferences" msgstr "Preferências de aplicação" -#: src/slic3r/GUI/GUI_App.cpp:817 src/slic3r/GUI/wxExtensions.cpp:756 +#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "Simples" -#: src/slic3r/GUI/GUI_App.cpp:817 +#: src/slic3r/GUI/GUI_App.cpp:1504 msgid "Simple View Mode" msgstr "Modo simples de visualização" -#: src/slic3r/GUI/GUI_App.cpp:818 src/slic3r/GUI/GUI_ObjectList.cpp:104 -#: src/slic3r/GUI/GUI_ObjectList.cpp:623 src/slic3r/GUI/Tab.cpp:1086 -#: src/slic3r/GUI/Tab.cpp:1101 src/slic3r/GUI/Tab.cpp:1200 -#: src/slic3r/GUI/Tab.cpp:1203 src/slic3r/GUI/Tab.cpp:1469 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:3665 -#: src/slic3r/GUI/wxExtensions.cpp:757 src/libslic3r/PrintConfig.cpp:88 -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 -#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2448 +#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +msgctxt "Mode" msgid "Advanced" msgstr "Avançado" -#: src/slic3r/GUI/GUI_App.cpp:818 +#: src/slic3r/GUI/GUI_App.cpp:1506 msgid "Advanced View Mode" msgstr "Modo avançado de visualização" -#: src/slic3r/GUI/GUI_App.cpp:819 src/slic3r/GUI/wxExtensions.cpp:758 +#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "Especialista" -#: src/slic3r/GUI/GUI_App.cpp:819 +#: src/slic3r/GUI/GUI_App.cpp:1507 msgid "Expert View Mode" msgstr "Modo especialista de visualização" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1512 msgid "Mode" msgstr "Modo" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1512 #, c-format msgid "%s View Mode" msgstr "%s Modo de visualização" -#: src/slic3r/GUI/GUI_App.cpp:826 +#: src/slic3r/GUI/GUI_App.cpp:1517 msgid "&Language" msgstr "&Linguagem" -#: src/slic3r/GUI/GUI_App.cpp:828 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "Atualizar firmware &da impressora" -#: src/slic3r/GUI/GUI_App.cpp:828 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "Atualizar o firmware para uma impressora baseada em Arduino" -#: src/slic3r/GUI/GUI_App.cpp:843 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Taking configuration snapshot" -msgstr "Capturando a config." +msgstr "Capturando a config" -#: src/slic3r/GUI/GUI_App.cpp:843 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Snapshot name" msgstr "Nome da captura" -#: src/slic3r/GUI/GUI_App.cpp:886 +#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 +msgid "Language selection" +msgstr "Seleção de linguagem" + +#: src/slic3r/GUI/GUI_App.cpp:1608 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." @@ -2250,96 +2772,84 @@ msgstr "" "Alterar a linguagem fará com que o aplicativo reinicie.\n" "Você irá perder conteúdo na bandeja." -#: src/slic3r/GUI/GUI_App.cpp:888 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Do you want to proceed?" msgstr "Você quer prosseguir?" -#: src/slic3r/GUI/GUI_App.cpp:889 -msgid "Language selection" -msgstr "Seleção de linguagem" - -#: src/slic3r/GUI/GUI_App.cpp:912 +#: src/slic3r/GUI/GUI_App.cpp:1645 msgid "&Configuration" msgstr "&Configuração" -#: src/slic3r/GUI/GUI_App.cpp:936 -msgid "The presets on the following tabs were modified" -msgstr "Os presets seguintes foram modificados" +#: src/slic3r/GUI/GUI_App.cpp:1676 +msgid "The preset(s) modifications are successfully saved" +msgstr "As modificações da(s) predefinição(ões) foram salvas com sucesso" -#: src/slic3r/GUI/GUI_App.cpp:936 src/slic3r/GUI/Tab.cpp:2948 -msgid "Discard changes and continue anyway?" -msgstr "Descartar mudanças e continuar assim mesmo?" - -#: src/slic3r/GUI/GUI_App.cpp:939 -msgid "Unsaved Presets" -msgstr "config. não salvas" - -#: src/slic3r/GUI/GUI_App.cpp:1088 src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "" -"É impossível imprimir objetos com múltiplas partes com a tecnologia SLA." +msgstr "É impossível imprimir objetos com múltiplas partes com a tecnologia SLA." -#: src/slic3r/GUI/GUI_App.cpp:1089 +#: src/slic3r/GUI/GUI_App.cpp:1877 msgid "Please check and fix your object list." msgstr "Favor verificar e concertar sua lista de objetos." -#: src/slic3r/GUI/GUI_App.cpp:1090 src/slic3r/GUI/Plater.cpp:2315 -#: src/slic3r/GUI/Tab.cpp:2962 +#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 msgid "Attention!" msgstr "Atenção!" -#: src/slic3r/GUI/GUI_App.cpp:1107 +#: src/slic3r/GUI/GUI_App.cpp:1895 msgid "Select a gcode file:" msgstr "Selecione um arquivo gcode:" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "Começar na altura" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Stop at height" msgstr "Parar na altura" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:161 msgid "Remove layer range" msgstr "Remover limite da camada" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:165 msgid "Add layer range" msgstr "Adicionar limite da camada" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 -#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 -#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 -#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:2142 +#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:92 +#: src/slic3r/GUI/GUI_ObjectList.cpp:651 src/libslic3r/PrintConfig.cpp:72 +#: src/libslic3r/PrintConfig.cpp:209 src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Layers and Perimeters" msgstr "Camadas e perímetros" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:616 src/slic3r/GUI/GUI_Preview.cpp:246 -#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:1120 -#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 -#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 -#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 -#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 -#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 -#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 +#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:95 +#: src/slic3r/GUI/GUI_ObjectList.cpp:654 src/slic3r/GUI/GUI_Preview.cpp:311 +#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 +#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 +#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "Support material" msgstr "Material de suporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:620 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2260 +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:99 +#: src/slic3r/GUI/GUI_ObjectList.cpp:658 src/libslic3r/PrintConfig.cpp:2395 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Wipe options" msgstr "Opções de limpeza" @@ -2363,611 +2873,658 @@ msgstr "Adicionar reforço de suporte" msgid "Add support blocker" msgstr "Adicionar bloqueador de suporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:617 -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1144 -#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 -#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/slic3r/GUI/Tab.cpp:1420 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 +#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +msgid "Ironing" +msgstr "Passar ferro" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 msgid "Speed" msgstr "Velocidade" -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:618 -#: src/slic3r/GUI/Tab.cpp:1179 src/slic3r/GUI/Tab.cpp:1840 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 +#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 msgid "Extruders" msgstr "Exrtrusoras" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:619 -#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 -#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 msgid "Extrusion Width" msgstr "Espessura da extrusão" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:625 -#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3606 -#: src/slic3r/GUI/Tab.cpp:3607 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 -#: src/libslic3r/PrintConfig.cpp:2685 src/libslic3r/PrintConfig.cpp:2692 -#: src/libslic3r/PrintConfig.cpp:2703 src/libslic3r/PrintConfig.cpp:2713 -#: src/libslic3r/PrintConfig.cpp:2722 src/libslic3r/PrintConfig.cpp:2735 -#: src/libslic3r/PrintConfig.cpp:2745 src/libslic3r/PrintConfig.cpp:2754 -#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2775 -#: src/libslic3r/PrintConfig.cpp:2783 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 +#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 +#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 +#: src/libslic3r/PrintConfig.cpp:2591 +msgid "Advanced" +msgstr "Avançado" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 +#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 +#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 +#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 +#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 msgid "Supports" msgstr "Suportes" -#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:626 -#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3640 -#: src/slic3r/GUI/Tab.cpp:3641 src/libslic3r/PrintConfig.cpp:2791 -#: src/libslic3r/PrintConfig.cpp:2798 src/libslic3r/PrintConfig.cpp:2812 -#: src/libslic3r/PrintConfig.cpp:2823 src/libslic3r/PrintConfig.cpp:2833 -#: src/libslic3r/PrintConfig.cpp:2855 src/libslic3r/PrintConfig.cpp:2866 -#: src/libslic3r/PrintConfig.cpp:2873 src/libslic3r/PrintConfig.cpp:2880 -#: src/libslic3r/PrintConfig.cpp:2891 src/libslic3r/PrintConfig.cpp:2900 -#: src/libslic3r/PrintConfig.cpp:2909 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 +#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 +#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 msgid "Pad" msgstr "Bloco" -#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3658 -#: src/slic3r/GUI/Tab.cpp:3659 src/libslic3r/SLA/Hollowing.cpp:46 -#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 -#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2919 -#: src/libslic3r/PrintConfig.cpp:2926 src/libslic3r/PrintConfig.cpp:2936 -#: src/libslic3r/PrintConfig.cpp:2945 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 +#: src/slic3r/GUI/Tab.cpp:4074 src/libslic3r/SLA/Hollowing.cpp:45 +#: src/libslic3r/SLA/Hollowing.cpp:57 src/libslic3r/SLA/Hollowing.cpp:66 +#: src/libslic3r/SLA/Hollowing.cpp:75 src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Hollowing" msgstr "Deixar oco" -#: src/slic3r/GUI/GUI_ObjectList.cpp:270 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "Nome" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1433 -#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 -msgid "Extruder" -msgstr "Extrusora" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:395 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 msgid "Editing" msgstr "Edição" -#: src/slic3r/GUI/GUI_ObjectList.cpp:340 +#: src/slic3r/GUI/GUI_ObjectList.cpp:386 #, c-format msgid "Auto-repaired (%d errors):" msgstr "Auto reparando (%d erros):" -#: src/slic3r/GUI/GUI_ObjectList.cpp:347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:393 msgid "degenerate facets" msgstr "facetas degeneradas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:348 +#: src/slic3r/GUI/GUI_ObjectList.cpp:394 msgid "edges fixed" msgstr "arestas fixadas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:349 +#: src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "facets removed" msgstr "facetas removidas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:350 +#: src/slic3r/GUI/GUI_ObjectList.cpp:396 msgid "facets added" msgstr "facetas adicionadas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:351 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "facets reversed" msgstr "facetas reversidas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:352 +#: src/slic3r/GUI/GUI_ObjectList.cpp:398 msgid "backwards edges" msgstr "arestas viradas para trás" -#: src/slic3r/GUI/GUI_ObjectList.cpp:360 +#: src/slic3r/GUI/GUI_ObjectList.cpp:406 msgid "Right button click the icon to fix STL through Netfabb" -msgstr "" -"Clique com o botão direito no ícone para arrumar STL através do Netfabb" +msgstr "Clique com o botão direito no ícone para arrumar STL através do Netfabb" -#: src/slic3r/GUI/GUI_ObjectList.cpp:397 +#: src/slic3r/GUI/GUI_ObjectList.cpp:443 msgid "Right button click the icon to change the object settings" msgstr "Clique com o botão direito no ícone para mudar as config. do objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:399 +#: src/slic3r/GUI/GUI_ObjectList.cpp:445 msgid "Click the icon to change the object settings" msgstr "Clique no ícone para mudar as config. do objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:403 +#: src/slic3r/GUI/GUI_ObjectList.cpp:449 msgid "Right button click the icon to change the object printable property" msgstr "" "Clique com o botão direito no ícone para mudar a propriedade de impressão do " "objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:405 +#: src/slic3r/GUI/GUI_ObjectList.cpp:451 msgid "Click the icon to change the object printable property" msgstr "Clique no ícone para mudar a propriedade de impressão do objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:458 src/slic3r/GUI/GUI_ObjectList.cpp:470 -#: src/slic3r/GUI/GUI_ObjectList.cpp:918 src/slic3r/GUI/GUI_ObjectList.cpp:3968 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3978 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4013 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 -msgid "default" -msgstr "padrão" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:537 +#: src/slic3r/GUI/GUI_ObjectList.cpp:574 msgid "Change Extruder" msgstr "Mudar extrusora" -#: src/slic3r/GUI/GUI_ObjectList.cpp:552 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Object" msgstr "Renomear objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:552 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Sub-object" msgstr "Renomear sub-objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1092 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3782 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 src/slic3r/GUI/GUI_ObjectList.cpp:4244 msgid "Instances to Separated Objects" msgstr "Instâncias para separar objetos" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1107 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Volumes in Object reordered" msgstr "Volume reorganizados no objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1107 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Object reordered" msgstr "Objeto reorganizado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1183 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1531 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1537 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1850 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1306 src/slic3r/GUI/GUI_ObjectList.cpp:1661 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1667 src/slic3r/GUI/GUI_ObjectList.cpp:2008 #, c-format msgid "Quick Add Settings (%s)" msgstr "Adicionar config. rapidamente (%s)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1266 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 msgid "Select showing settings" msgstr "Selecionar config. mostradas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 msgid "Add Settings for Layers" msgstr "Adicionar config. para camadas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 msgid "Add Settings for Sub-object" msgstr "Adicionar config. para sub-objetos" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1317 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 msgid "Add Settings for Object" msgstr "Adicionar config. para objetos" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 msgid "Add Settings Bundle for Height range" msgstr "Adicionar pacote de config. para intervalo de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 msgid "Add Settings Bundle for Sub-object" msgstr "Adicionar pacote de config. para subobjeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1389 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 msgid "Add Settings Bundle for Object" msgstr "Adicionar pacote de config. para objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1428 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 msgid "Load" msgstr "Carregar" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1433 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1465 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1469 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 src/slic3r/GUI/GUI_ObjectList.cpp:1595 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "Box" msgstr "Caixa" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1433 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Cylinder" msgstr "Cilindro" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1433 -msgid "Sphere" -msgstr "Esfera" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1433 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Slab" msgstr "Placa" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1501 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Height range Modifier" msgstr "Modificador de intervalo de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1510 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 msgid "Add settings" -msgstr "Adicionar config." +msgstr "Adicionar config" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1590 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 msgid "Change type" msgstr "Mudar o tipo" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1600 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1612 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Object" msgstr "Configurar como objeto separado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1612 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Objects" msgstr "Definir como objetos separados" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1622 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Printable" msgstr "Imprimível" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1637 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 msgid "Rename" msgstr "Renomear" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1648 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Arrumar através do Netfabb" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1658 src/slic3r/GUI/Plater.cpp:3968 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 msgid "Export as STL" msgstr "Exportar como STL" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1665 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3957 src/slic3r/GUI/Plater.cpp:3936 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 src/slic3r/GUI/GUI_ObjectList.cpp:4439 +#: src/slic3r/GUI/Plater.cpp:3852 msgid "Reload the selected volumes from disk" msgstr "Recarregue os volumes selecionados do disco" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1672 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Set extruder for selected items" msgstr "Definir extrusora para itens selecionados" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1705 src/libslic3r/PrintConfig.cpp:335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 msgid "Default" msgstr "Padrão" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1725 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale to print volume" msgstr "Escalar para volume de impressão" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1725 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale the selected object to fit the print volume" msgstr "Escale o objeto selecionado para se adequar ao volume de impressão" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1794 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2052 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +msgid "Convert from imperial units" +msgstr "Converter de unidades imperiais" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +msgid "Revert conversion from imperial units" +msgstr "Reverter conversão de unidades imperiais" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 src/slic3r/GUI/GUI_ObjectList.cpp:1876 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2569 src/libslic3r/PrintConfig.cpp:3641 +msgid "Merge" +msgstr "Mesclar" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Merge objects to the one multipart object" +msgstr "Mesclar objetos para um objeto multiparte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +msgid "Merge objects to the one single object" +msgstr "Mesclar objetos para um único objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 src/slic3r/GUI/GUI_ObjectList.cpp:2210 msgid "Add Shape" msgstr "Adicionar forma" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1880 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Carregar parte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1919 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 msgid "Error!" msgstr "Erro!" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1994 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 msgid "Add Generic Subobject" msgstr "Adicionar sub-objeto genérico" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2023 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 msgid "Generic" msgstr "Genérico" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2141 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2243 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 src/slic3r/GUI/GUI_ObjectList.cpp:2408 msgid "Last instance of an object cannot be deleted." msgstr "A última instância de um objeto não pode ser excluída." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 msgid "Delete Settings" -msgstr "Deletar config." +msgstr "Deletar config" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2177 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 msgid "Delete All Instances from Object" msgstr "Excluir todas as instâncias do objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2193 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 msgid "Delete Height Range" msgstr "Excluir limite de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2224 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 msgid "From Object List You can't delete the last solid part from object." msgstr "" "Na lista de objetos não é possível excluir a última parte sólida do objeto." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2228 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 msgid "Delete Subobject" msgstr "Deletar sub-objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2247 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Delete Instance" msgstr "Deletar instância" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2271 src/slic3r/GUI/Plater.cpp:2980 -msgid "" -"The selected object couldn't be split because it contains only one part." +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 +msgid "The selected object couldn't be split because it contains only one part." msgstr "O seguinte objeto não pode ser dividido pois contém uma parte." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2275 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Split to Parts" msgstr "Dividir em partes" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2329 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +msgid "Merged" +msgstr "Mesclado" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +msgid "Merge all parts to the one single object" +msgstr "Mesclar todas partes para um único objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 msgid "Add Layers" msgstr "Adicionar camadas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2455 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Group manipulation" msgstr "Manipulação de grupos" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2467 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 msgid "Object manipulation" msgstr "Manipulação de objetos" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2480 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 msgid "Object Settings to modify" -msgstr "config. do objeto para modificar" +msgstr "Config. do objeto para modificar" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2484 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 msgid "Part Settings to modify" -msgstr "config. da parte para modificar" +msgstr "Config. da parte para modificar" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2489 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 msgid "Layer range Settings to modify" -msgstr "config. de intervalo de camada para modificar" +msgstr "Config. de intervalo de camada para modificar" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2495 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 msgid "Part manipulation" msgstr "Manipulação da parte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2501 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 msgid "Instance manipulation" msgstr "Manipulação da instância" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2508 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Height ranges" msgstr "Limites de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2508 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Settings for height range" -msgstr "config. para intervalo de altura" +msgstr "Config. para intervalo de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2694 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 msgid "Delete Selected Item" msgstr "Excluir item selecionado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2831 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 msgid "Delete Selected" msgstr "Excluir seleção" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2897 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2926 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2944 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 src/slic3r/GUI/GUI_ObjectList.cpp:3325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 msgid "Add Height Range" msgstr "Adicionar intervalo de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3004 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 +msgid "" +"Cannot insert a new layer range after the current layer range.\n" +"The next layer range is too thin to be split to two\n" +"without violating the minimum layer height." +msgstr "" +"Não é possível inserir um novo intervalo de camada após o atual intervalo de " +"camada\n" +"O próximo intervalo de camada é muito fino para ser separado em dois\n" +"sem violar a altura mínima de camada." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 +msgid "" +"Cannot insert a new layer range between the current and the next layer range.\n" +"The gap between the current layer range and the next layer range\n" +"is thinner than the minimum layer height allowed." +msgstr "" +"Não é possível inserir um novo intervalo de camada entre o atual e o próximo " +"intervalo de camada.\n" +"O vão entre o atual intervalo de camada e o próximo intervalo de camada\n" +"é mais fino que a altura de camada mínima permitida." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 +msgid "" +"Cannot insert a new layer range after the current layer range.\n" +"Current layer range overlaps with the next layer range." +msgstr "" +"Não é possível inserir um novo intervalo de camada após o atual intervalo de " +"camada\n" +"Intervalo de altura atual se sobrepões com o próximo intervalo." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 msgid "Edit Height Range" msgstr "Editar intervalo de altura" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3292 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 msgid "Selection-Remove from list" msgstr "Seleção-Remover da lista" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3300 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 msgid "Selection-Add from list" msgstr "Seleção-Adicionar da lista" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 msgid "Object or Instance" msgstr "Objeto ou instância" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3419 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3552 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Part" msgstr "Parte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3419 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 msgid "Layer" msgstr "Camada" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 msgid "Unsupported selection" msgstr "Seleção não suportada" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 #, c-format msgid "You started your selection with %s Item." msgstr "Você iniciou sua seleção com o item de %s." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3423 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 #, c-format msgid "In this mode you can select only other %s Items%s" msgstr "Neste modo, você pode selecionar apenas outros %s itens%s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3426 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 msgid "of a current Object" msgstr "de um objeto atual" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3431 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3506 src/slic3r/GUI/Plater.cpp:141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 src/slic3r/GUI/GUI_ObjectList.cpp:3968 +#: src/slic3r/GUI/Plater.cpp:147 msgid "Info" msgstr "Informação" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3547 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "You can't change a type of the last solid part of the object." msgstr "Não é possível alterar um tipo da última parte sólida do objeto." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3552 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Modifier" msgstr "Modificador" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3552 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Enforcer" msgstr "Reforçador de suporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3552 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Blocker" msgstr "Bloqueador de suporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3554 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Select type of part" msgstr "Selecione o tipo de parte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3559 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 msgid "Change Part Type" msgstr "Mudar o tipo da parte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3804 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Enter new name" msgstr "Insira o novo nome" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3804 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Renaming" msgstr "Renomeando" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3458 -#: src/slic3r/GUI/Tab.cpp:3462 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 +#: src/slic3r/GUI/SavePresetDialog.cpp:124 msgid "The supplied name is not valid;" msgstr "O nome inserido não é valido;" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3821 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3928 src/slic3r/GUI/Tab.cpp:3459 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/SavePresetDialog.cpp:117 msgid "the following characters are not allowed:" msgstr "os seguintes caracteres não são permitidos:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 msgid "Select extruder number:" msgstr "Selecione o número da extrusora:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3973 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" msgstr "Esta extrusora será ajustada para artigos selecionados" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3998 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 msgid "Change Extruders" msgstr "Mudar extrusoras" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4095 src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Printable" msgstr "Definir como imprimível" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4095 src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Unprintable" msgstr "Definir não imprimível" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:68 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:111 msgid "World coordinates" msgstr "Coordenadas mundiais" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:69 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:112 msgid "Local coordinates" msgstr "Coordenadas locais" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:88 msgid "Select coordinate space, in which the transformation will be performed." msgstr "" "Selecione o espaço de coordenadas, no qual a transformação será executada." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:623 msgid "Object name" msgstr "Nome do objeto" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:223 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:505 msgid "Position" msgstr "Posição" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 -#: src/slic3r/GUI/Mouse3DController.cpp:271 -#: src/slic3r/GUI/Mouse3DController.cpp:294 -msgid "Rotation" -msgstr "Rotação" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 #, c-format msgid "Toggle %c axis mirroring" msgstr "Ativar espelhamento do eixo %c" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 msgid "Set Mirror" msgstr "Definir espelhamento" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +msgid "in" +msgstr "pol" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" msgstr "Soltar na mesa" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:372 msgid "Reset rotation" msgstr "Restabelecer rotação" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:394 msgid "Reset Rotation" msgstr "Restabelecer Rotação" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:407 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409 msgid "Reset scale" msgstr "Restabelecer escala" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "Fatores de escala" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:561 msgid "Translate" msgstr "Tradução" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:625 msgid "" "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "" -"Não é possível usar o modo de dimensionamento não uniforme para vários " -"objetos/seleção de peças" +"Não é possível usar o modo de dimensionamento não uniforme para vários objetos/" +"seleção de peças" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:797 msgid "Set Position" msgstr "Definir posição" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:828 msgid "Set Orientation" msgstr "Definir orientação" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:893 msgid "Set Scale" msgstr "Definir escala" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:925 msgid "" -"The currently manipulated object is tilted (rotation angles are not " -"multiples of 90°).\n" -"Non-uniform scaling of tilted objects is only possible in the World " -"coordinate system,\n" +"The currently manipulated object is tilted (rotation angles are not multiples " +"of 90°).\n" +"Non-uniform scaling of tilted objects is only possible in the World coordinate " +"system,\n" "once the rotation is embedded into the object coordinates." msgstr "" "O objeto atualmente manipulado é inclinado (os ângulos de rotação não são " "múltiplos de 90 °).\n" -"O dimensionamento não uniforme de objetos inclinados só é possível no " -"sistema de coordenadas do mundo,\n" +"O dimensionamento não uniforme de objetos inclinados só é possível no sistema " +"de coordenadas do mundo,\n" "uma vez que a rotação é incorporada nas coordenadas do objeto." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:928 msgid "" "This operation is irreversible.\n" "Do you want to proceed?" @@ -2975,396 +3532,495 @@ msgstr "" "Esta operação é irreversível.\n" "Você quer prosseguir?" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:62 msgid "Additional Settings" -msgstr "config. Adicionais" +msgstr "Config. Adicionais" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:98 msgid "Remove parameter" msgstr "Remover parâmetro" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:104 #, c-format msgid "Delete Option %s" msgstr "Excluir opção %s" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:157 #, c-format msgid "Change Option %s" msgstr "Alterar opção %s" -#: src/slic3r/GUI/GUI_Preview.cpp:218 +#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Vista" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 -#: src/libslic3r/GCode/PreviewData.cpp:345 -msgid "Feature type" -msgstr "Tipo de recurso" - -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 +#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 msgid "Height" msgstr "Altura" -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 +#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 msgid "Width" msgstr "Espessura" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 msgid "Fan speed" msgstr "Velocidade do ventoinha" -#: src/slic3r/GUI/GUI_Preview.cpp:226 +#: src/slic3r/GUI/GUI_Preview.cpp:280 msgid "Volumetric flow rate" msgstr "Taxa de fluxo volumétrico" -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 -#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 -msgid "Tool" -msgstr "Ferramenta" - -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 -#: src/libslic3r/GCode/PreviewData.cpp:359 -msgid "Color Print" -msgstr "Impressão colorida" - -#: src/slic3r/GUI/GUI_Preview.cpp:231 +#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 msgid "Show" msgstr "Mostrar" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 +#: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" msgstr "Tipos de características" -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Perimeter" msgstr "Perímetro" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "External perimeter" msgstr "Perímetro externo" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/libslic3r/ExtrusionEntity.cpp:340 msgid "Overhang perimeter" msgstr "Perímetro de angulação" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:342 msgid "Internal infill" msgstr "Preenchimento interno" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1882 msgid "Solid infill" msgstr "Preenchimento sólido" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 +#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 +#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Top solid infill" msgstr "Preenchimento do sólido do topo" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:350 msgid "Bridge infill" msgstr "Preenchimento de pontes" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/PrintConfig.cpp:918 +#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 +#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 msgid "Gap fill" msgstr "Preenchimento de vão" -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1110 -#: src/libslic3r/ExtrusionEntity.cpp:318 +#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 msgid "Skirt" msgstr "Saia" -#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 -#: src/libslic3r/PrintConfig.cpp:1991 +#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 +#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 msgid "Support material interface" msgstr "Interface do material de suporte" -#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1190 -#: src/libslic3r/ExtrusionEntity.cpp:321 +#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 +#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Wipe tower" msgstr "Torre de limpeza" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 -msgid "Travel" -msgstr "Viagem" - -#: src/slic3r/GUI/GUI_Preview.cpp:254 -msgid "Retractions" -msgstr "Retrações" - -#: src/slic3r/GUI/GUI_Preview.cpp:255 -msgid "Unretractions" -msgstr "Retorno da retração" - -#: src/slic3r/GUI/GUI_Preview.cpp:256 +#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 msgid "Shells" msgstr "Paredes" -#: src/slic3r/GUI/GUI_Preview.cpp:257 +#: src/slic3r/GUI/GUI_Preview.cpp:339 msgid "Legend" msgstr "Legenda" -#: src/slic3r/GUI/Job.hpp:123 +#: src/slic3r/GUI/GUI_Preview.cpp:1479 +msgid "Tool marker" +msgstr "Ferramenta de marcação" + +#: src/slic3r/GUI/GUI_Preview.cpp:1480 +msgid "Legend/Estimated printing time" +msgstr "Legenda/Tempo estimado de impressão" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +msgid "Use for search" +msgstr "Use para pesquisar" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +msgid "Category" +msgstr "Categoria" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +msgid "Search in English" +msgstr "Procurar em inglês" + +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:149 +msgid "Arranging" +msgstr "Organizar" + +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 +msgid "Could not arrange model objects! Some geometries may be invalid." +msgstr "" +"Não foi possível organizar objetos de modelo! Algumas geometrias podem ser " +"inválidas." + +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 +msgid "Arranging canceled." +msgstr "Arranjo cancelado." + +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 +msgid "Arranging done." +msgstr "Arranjo feito." + +#: src/slic3r/GUI/Jobs/Job.cpp:74 msgid "ERROR: not enough resources to execute a new job." msgstr "ERRO: não há recursos suficientes para executar um novo trabalho." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:719 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:41 +msgid "Searching for optimal orientation" +msgstr "Procurando orientação ideal" + +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:73 +msgid "Orientation search canceled." +msgstr "Pesquisa de orientação cancelada." + +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:74 +msgid "Orientation found." +msgstr "Orientação encontrada." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:35 +msgid "Choose SLA archive:" +msgstr "Selecione arquivo SLA:" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 +msgid "Import file: " +msgstr "Falha na exportação: " + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 +msgid "Import model and profile" +msgstr "Importar modelo e perfil" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:47 +msgid "Import profile only" +msgstr "Importar coleção &de config" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:48 +msgid "Import model only" +msgstr "Modelo de impressora" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:56 +msgid "Quality: " +msgstr "Qualidade: " + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 +msgid "Accurate" +msgstr "Preciso" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:60 +msgid "Balanced" +msgstr "Balanceado" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 +msgid "Quick" +msgstr "Ágil" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:135 +msgid "Importing SLA archive" +msgstr "Importando arquivos SLA" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:159 +msgid "Importing canceled." +msgstr "Importação cancelada." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:160 +msgid "Importing done." +msgstr "Importação feita." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 +msgid "You cannot load SLA project with a multi-part object on the bed" +msgstr "" +"Você não pode carregar o projeto SLA com um objeto de várias partes na cama" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2255 +#: src/slic3r/GUI/Tab.cpp:3188 +msgid "Please check your object list before preset changing." +msgstr "Verifique a lista de objetos antes de alterar a predefinição." + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:37 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 +#: src/slic3r/GUI/MainFrame.cpp:1332 msgid "Keyboard Shortcuts" msgstr "Atalhos do teclado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "New project, clear plater" msgstr "Novo projeto, limpar a bandeja" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "Abra o projeto STL/OBJ/AMF/3MF com config, clear plater" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Save project (3mf)" msgstr "Salvar projeto (3MF)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 msgid "Save project as (3mf)" msgstr "Salvar projeto como (3mf)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "(Re)slice" msgstr "(Re)fatiar" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "Importar STL/OBJ/AMF/3MF sem config, manter bandeja" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Import Config from ini/amf/3mf/gcode" msgstr "Config importação de ini/amf/3mf/gcode" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Carregar config. de um. ini/AMF/3mf/Gcode e mesclar" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 -#: src/slic3r/GUI/Plater.cpp:5522 src/libslic3r/PrintConfig.cpp:3363 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 +#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 msgid "Export G-code" msgstr "Exportar G-code" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5523 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 msgid "Send G-code" msgstr "Enviar G-code" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 msgid "Export config" -msgstr "Exportar config." +msgstr "Exportar config" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 +msgid "Export to SD card / Flash drive" +msgstr "Exportar para cartão SD / unidade Flash" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +msgid "Eject SD card / Flash drive" +msgstr "Ejetar cartão SD / unidade Flash" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Select all objects" msgstr "Selecionar todos os objetos" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Deselect all" msgstr "Desmarcar todos" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Delete selected" msgstr "Deletar seleção" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Paste from clipboard" msgstr "Colar da área de transferência" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Reload plater from disk" msgstr "Recarregar bandeja do disco" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Select Plater Tab" msgstr "Selecione a guia de bandeja" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Select Print Settings Tab" msgstr "Selecione a guia config. de impressão" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Select Filament Settings Tab" msgstr "Selecione a guia config. de filamento" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Select Printer Settings Tab" msgstr "Selecione a guia config. da impressora" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Switch to 3D" msgstr "Mude para 3D" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Switch to Preview" msgstr "Mudar para pré-visualização" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "Fila de carregamento do host de impressão" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Camera view" msgstr "Vista da câmera" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Show/Hide object/instance labels" msgstr "Mostrar/Ocultar rótulos de objeto/instância" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Preferences.cpp:12 msgid "Preferences" msgstr "Preferências" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "Show keyboard shortcuts list" msgstr "Mostrar lista dos atalhos no teclado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Commands" msgstr "Comandos" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 msgid "Add Instance of the selected object" msgstr "Adicionar instância do objeto selecionado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 msgid "Remove Instance of the selected object" msgstr "Remover instância do objeto selecionado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 msgid "" "Press to select multiple objects\n" "or move multiple objects with mouse" msgstr "" -"Aperte para selecionar múltiplos objetos ou mover múltiplos objetos com o " -"mouse" +"Aperte para selecionar múltiplos objetos ou mover múltiplos objetos com o mouse" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Press to activate selection rectangle" msgstr "Pressione para ativar o retângulo de seleção" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Pressione para ativar o retângulo de desseleção" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Up" msgstr "Seta para cima" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Move selection 10 mm in positive Y direction" msgstr "Mover seleção 10 mm na direção Y positiva" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Down" msgstr "Seta para baixo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 msgid "Move selection 10 mm in negative Y direction" msgstr "Mover seleção 10 mm na direção Y negativa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 msgid "Arrow Left" msgstr "Seta esquerda" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 msgid "Move selection 10 mm in negative X direction" msgstr "Mover seleção 10 mm na direção X negativa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Arrow Right" msgstr "Seta direita" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 msgid "Move selection 10 mm in positive X direction" msgstr "Mover seleção 10 mm na direção X positiva" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Any arrow" msgstr "Qualquer flecha" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 msgid "Movement step set to 1 mm" msgstr "Passo de movimento definido para 1 mm" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Movement in camera space" msgstr "Movimento no espaço da câmera" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Page Up" msgstr "Page Up" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Rotate selection 45 degrees CCW" msgstr "Seleção rotatura 45 graus CCW" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Page Down" msgstr "Page Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Rotate selection 45 degrees CW" msgstr "Seleção de rotação 45 graus CW" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Gizmo move" msgstr "Gizmo-Mover" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Gizmo scale" msgstr "Gizmo-Escala" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Gizmo rotate" msgstr "Gizmo-Rotacionar" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Gizmo-Cortar" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "Gizmo Place face on bed" msgstr "Colocar face do Gizmo na mesa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo SLA hollow" msgstr "Gizmo de SLA ligado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo SLA support points" msgstr "Pontos de suporte do Gizmo SLA" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Unselect gizmo or clear selection" msgstr "Desmarcar Gizmo/limpar seleção" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Change camera type (perspective, orthographic)" msgstr "Alterar tipo de câmera (perspectiva, ortográfica)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Zoom to Bed" msgstr "Ampliar para a mesa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "" "Zoom to selected object\n" "or all objects in scene, if none selected" @@ -3372,32 +4028,41 @@ msgstr "" "Zoom para objeto selecionado\n" "ou todos os objetos em cena, se nenhum selecionado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 msgid "Zoom in" msgstr "Ampliar" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 msgid "Zoom out" msgstr "Dimiuir" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Switch between Editor/Preview" +msgstr "Mudar entre Editor/Pré-visualização " + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Collapse/Expand the sidebar" +msgstr "Recolher/Expandir a barra lateral" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Mostrar/Ocultar a caixa de configurações de dispositivos 3Dconnexion" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Plater" msgstr "Bandeja" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -#, no-c-format +#: src/slic3r/GUI/KBShortcutsDialog.cpp:193 +#, c-format msgid "" "Press to snap by 5% in Gizmo scale\n" "or to snap by 1mm in Gizmo move" msgstr "" -"Pressione para estalar 5% na escala Gizmo\n" -"ou para estalar por 1mm no movimento Gizmo" +"Pressione para tirar 5% ina escala Gizmo\n" +"ou para tirar 1mm no movimento Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:194 msgid "" "Scale selection to fit print volume\n" "in Gizmo scale" @@ -3405,11 +4070,11 @@ msgstr "" "Seleção de escala para caber volume de impressão\n" "na escala Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 msgid "Press to activate one direction scaling in Gizmo scale" msgstr "Pressione para ativar um dimensionamento de direção na escala Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 msgid "" "Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\n" "selected objects around their own center" @@ -3417,679 +4082,814 @@ msgstr "" "Pressione para escalar (na escala de Gizmo) ou girar (em Gizmo girar)\n" "objetos selecionados em torno de seu próprio centro" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 msgid "Gizmos" msgstr "Aparelhos" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper Layer" msgstr "Camada superior" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower Layer" msgstr "Camada inferior" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -msgid "Show/Hide Legend" -msgstr "Ligar/Desligar Legenda" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:209 +msgid "Show/Hide Legend/Estimated printing time" +msgstr "Mostrar/Esconder Legenda/Tempo estimado de impressão" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4107 -#: src/slic3r/GUI/Tab.cpp:2392 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:2559 msgid "Preview" msgstr "Visualização" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Move current slider thumb Up" msgstr "Mover a barra de rolagem para cima" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Move current slider thumb Down" msgstr "Mover a barra de rolagem para baixo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 -msgid "Set upper thumb to current slider thumb" -msgstr "Definir o polegar superior para o polegar deslizante atual" - #: src/slic3r/GUI/KBShortcutsDialog.cpp:217 -msgid "Set lower thumb to current slider thumb" -msgstr "Definir o polegar inferior para o polegar deslizante atual" +msgid "Set upper thumb to current slider thumb" +msgstr "Definir a barra superior para barra de rolagem atual" #: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +msgid "Set lower thumb to current slider thumb" +msgstr "Definir a barra inferior para barra de rolagem atual" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Add color change marker for current layer" msgstr "Adicionar mudança de cor para a camada atual" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 msgid "Delete color change marker for current layer" msgstr "Excluir mudança de cor para a camada atual" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 #: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 +msgid "" +"Press to speed up 5 times while moving thumb\n" +"with arrow keys or mouse wheel" +msgstr "" +"Pressione para acelerar em 5 vezes enquanto move miniatura\n" +"com as setas do teclado ou scroll do mouse" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Layers Slider" msgstr "Controle deslizante de camadas" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +msgid "Move current slider thumb Left" +msgstr "Mover a barra de rolagem para Esquerda" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 +msgid "Move current slider thumb Right" +msgstr "Mover a barra de rolagem para Direita" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +msgid "Sequential Slider" +msgstr "Rolagem sequencial" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 msgid "Keyboard shortcuts" msgstr "Atalhos do teclado" -#: src/slic3r/GUI/MainFrame.cpp:66 +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open new instance" +msgstr "Abrir nova instância" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 +#: src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open a new PrusaSlicer instance" +msgstr "Abrir uma nova instância do PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:79 +msgid "G-code preview" +msgstr "Previsualização do G-code" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +msgid "Open G-code viewer" +msgstr "Abrir visualizador G-code" + +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open PrusaSlicer" +msgstr "Versão mínima do PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:79 +msgid "Open new G-code viewer" +msgstr "Abrir novo visualizador G-code" + +#: src/slic3r/GUI/MainFrame.cpp:166 msgid "" -" - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/" +" - Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/" "releases" msgstr "" " - Lembre-se de verificar por atualizações em http://github.com/prusa3d/" "PrusaSlicer/releases" -#: src/slic3r/GUI/MainFrame.cpp:184 +#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 msgid "based on Slic3r" msgstr "baseado no Slic3r" -#: src/slic3r/GUI/MainFrame.cpp:415 -msgid "&New Project" -msgstr "&Novo projeto" +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 +msgid "Prusa 3D &Drivers" +msgstr "Drivers 3D &Prusa" -#: src/slic3r/GUI/MainFrame.cpp:415 -msgid "Start a new project" -msgstr "Começar um novo projeto" +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 +msgid "Open the Prusa3D drivers download page in your browser" +msgstr "Abrir a página para baixar os drivers da Prusa3D no seu navegador" -#: src/slic3r/GUI/MainFrame.cpp:418 -msgid "&Open Project" -msgstr "&Abrir projeto" +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 +msgid "Software &Releases" +msgstr "Lançamentos de &software" -#: src/slic3r/GUI/MainFrame.cpp:418 -msgid "Open a project file" -msgstr "Abrir novo projeto" +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 +msgid "Open the software releases page in your browser" +msgstr "Abrir a página de lançamentos de software no seu navegador" -#: src/slic3r/GUI/MainFrame.cpp:423 -msgid "Recent projects" -msgstr "Projetos recentes" - -#: src/slic3r/GUI/MainFrame.cpp:432 -msgid "" -"The selected project is no longer available.\n" -"Do you want to remove it from the recent projects list ?" -msgstr "" -"O projeto selecionado não está mais disponível.\n" -"Você quer removê-lo da lista de projetos recentes?" - -#: src/slic3r/GUI/MainFrame.cpp:432 src/slic3r/GUI/MainFrame.cpp:796 -#: src/slic3r/GUI/PrintHostDialogs.cpp:231 -msgid "Error" -msgstr "Erro" - -#: src/slic3r/GUI/MainFrame.cpp:457 -msgid "&Save Project" -msgstr "&Salvar projeto" - -#: src/slic3r/GUI/MainFrame.cpp:457 -msgid "Save current project file" -msgstr "Salvar arquivo" - -#: src/slic3r/GUI/MainFrame.cpp:461 src/slic3r/GUI/MainFrame.cpp:463 -msgid "Save Project &as" -msgstr "Salvar projeto &como" - -#: src/slic3r/GUI/MainFrame.cpp:461 src/slic3r/GUI/MainFrame.cpp:463 -msgid "Save current project file as" -msgstr "Salvar arquivo atual como" - -#: src/slic3r/GUI/MainFrame.cpp:471 -msgid "Import STL/OBJ/AM&F/3MF" -msgstr "Import STL/OBJ/AM&F/3MF" - -#: src/slic3r/GUI/MainFrame.cpp:471 -msgid "Load a model" -msgstr "Carregar um modelo" - -#: src/slic3r/GUI/MainFrame.cpp:475 -msgid "Import &Config" -msgstr "Importar &config." - -#: src/slic3r/GUI/MainFrame.cpp:475 -msgid "Load exported configuration file" -msgstr "Carregar config. de arquivo exportado" - -#: src/slic3r/GUI/MainFrame.cpp:478 -msgid "Import Config from &project" -msgstr "Importar Config do &projeto" - -#: src/slic3r/GUI/MainFrame.cpp:478 -msgid "Load configuration from project file" -msgstr "Carregar config. de arquivo de projeto" - -#: src/slic3r/GUI/MainFrame.cpp:482 -msgid "Import Config &Bundle" -msgstr "Importar coleção &de config." - -#: src/slic3r/GUI/MainFrame.cpp:482 -msgid "Load presets from a bundle" -msgstr "Carregar predefinições de um pacote" - -#: src/slic3r/GUI/MainFrame.cpp:485 -msgid "&Import" -msgstr "&Importar" - -#: src/slic3r/GUI/MainFrame.cpp:488 src/slic3r/GUI/MainFrame.cpp:760 -msgid "Export &G-code" -msgstr "Exportar &G-code" - -#: src/slic3r/GUI/MainFrame.cpp:488 -msgid "Export current plate as G-code" -msgstr "Exporte a bandeja atual como o G-code" - -#: src/slic3r/GUI/MainFrame.cpp:492 src/slic3r/GUI/MainFrame.cpp:761 -msgid "S&end G-code" -msgstr "E&nviar G-code" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid "Send to print current plate as G-code" -msgstr "Enviar para imprimir a bandeja atual como G-code" - -#: src/slic3r/GUI/MainFrame.cpp:497 -msgid "Export plate as &STL" -msgstr "Exportar bandeja como &STL" - -#: src/slic3r/GUI/MainFrame.cpp:497 -msgid "Export current plate as STL" -msgstr "Exporte a bandeja atual como STL" - -#: src/slic3r/GUI/MainFrame.cpp:500 -msgid "Export plate as STL &including supports" -msgstr "Exportar bandeja como STL &incluindo suportes" - -#: src/slic3r/GUI/MainFrame.cpp:500 -msgid "Export current plate as STL including supports" -msgstr "Exporte a bandeja atual como o STL que inclui suportes" - -#: src/slic3r/GUI/MainFrame.cpp:503 -msgid "Export plate as &AMF" -msgstr "Exportar bandeja como &AMF" - -#: src/slic3r/GUI/MainFrame.cpp:503 -msgid "Export current plate as AMF" -msgstr "Exporte a bandeja atual como o AMF" - -#: src/slic3r/GUI/MainFrame.cpp:507 -msgid "Export &toolpaths as OBJ" -msgstr "Exportar &percurso da ferramenta como OBJ" - -#: src/slic3r/GUI/MainFrame.cpp:507 -msgid "Export toolpaths as OBJ" -msgstr "Exportar percursos como OBJ" - -#: src/slic3r/GUI/MainFrame.cpp:511 -msgid "Export &Config" -msgstr "Exportar &config." - -#: src/slic3r/GUI/MainFrame.cpp:511 -msgid "Export current configuration to file" -msgstr "Exporte a config. atual para o arquivo" - -#: src/slic3r/GUI/MainFrame.cpp:514 -msgid "Export Config &Bundle" -msgstr "Exportar coleção &de config." - -#: src/slic3r/GUI/MainFrame.cpp:514 -msgid "Export all presets to file" -msgstr "Exporte todas as predefinições para o arquivo" - -#: src/slic3r/GUI/MainFrame.cpp:517 -msgid "&Export" -msgstr "&Exportar" - -#: src/slic3r/GUI/MainFrame.cpp:523 -msgid "Quick Slice" -msgstr "Fatiamento rápido" - -#: src/slic3r/GUI/MainFrame.cpp:523 -msgid "Slice a file into a G-code" -msgstr "Fatiar um arquivo em um G-code" - -#: src/slic3r/GUI/MainFrame.cpp:529 -msgid "Quick Slice and Save As" -msgstr "Salvamento rápido e salvar como" - -#: src/slic3r/GUI/MainFrame.cpp:529 -msgid "Slice a file into a G-code, save as" -msgstr "Fatiar um arquivo em um G-code, salvar como" - -#: src/slic3r/GUI/MainFrame.cpp:535 -msgid "Repeat Last Quick Slice" -msgstr "Repetir Último Fatiamento Rápido" - -#: src/slic3r/GUI/MainFrame.cpp:535 -msgid "Repeat last quick slice" -msgstr "Repetir último fatiamento rápido" - -#: src/slic3r/GUI/MainFrame.cpp:543 -msgid "(Re)Slice No&w" -msgstr "(Re)Fatiar ago&ra" - -#: src/slic3r/GUI/MainFrame.cpp:543 -msgid "Start new slicing process" -msgstr "Começar novo processo de fatiamento" - -#: src/slic3r/GUI/MainFrame.cpp:547 -msgid "&Repair STL file" -msgstr "&Reparar arquivo STL" - -#: src/slic3r/GUI/MainFrame.cpp:547 -msgid "Automatically repair an STL file" -msgstr "Reparar automaticamente um arquivo STL" - -#: src/slic3r/GUI/MainFrame.cpp:551 -msgid "&Quit" -msgstr "&Sair" - -#: src/slic3r/GUI/MainFrame.cpp:551 +#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 #, c-format -msgid "Quit %s" -msgstr "Sair %s" +msgid "%s &Website" +msgstr "%s &Site" -#: src/slic3r/GUI/MainFrame.cpp:576 -msgid "&Select all" -msgstr "&Selecionar todos" +#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 +#, c-format +msgid "Open the %s website in your browser" +msgstr "Abra o site do %s no seu navegador" -#: src/slic3r/GUI/MainFrame.cpp:577 -msgid "Selects all objects" -msgstr "Selecionar todos os objetos" +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 +msgid "System &Info" +msgstr "Informação &do sistema" -#: src/slic3r/GUI/MainFrame.cpp:579 -msgid "D&eselect all" -msgstr "D&eselecionar todos" +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 +msgid "Show system information" +msgstr "Mostrar a informação do sistema" -#: src/slic3r/GUI/MainFrame.cpp:580 -msgid "Deselects all objects" -msgstr "Deselecionar todos os objetos" +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 +msgid "Show &Configuration Folder" +msgstr "Mostrar &pasta de config" -#: src/slic3r/GUI/MainFrame.cpp:583 -msgid "&Delete selected" -msgstr "&Excluir seleção" +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 +msgid "Show user configuration folder (datadir)" +msgstr "Mostrar pasta de config. do usuário (datadir)" -#: src/slic3r/GUI/MainFrame.cpp:584 -msgid "Deletes the current selection" -msgstr "Excluir a seleção atual" +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 +msgid "Report an I&ssue" +msgstr "Reportar um p&roblema" -#: src/slic3r/GUI/MainFrame.cpp:586 -msgid "Delete &all" -msgstr "Excluir &todos" +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 +#, c-format +msgid "Report an issue on %s" +msgstr "Relatar um problema em %s" -#: src/slic3r/GUI/MainFrame.cpp:587 -msgid "Deletes all objects" -msgstr "Excluir todos os objetos" +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 +#, c-format +msgid "&About %s" +msgstr "&Sobre %s" -#: src/slic3r/GUI/MainFrame.cpp:591 -msgid "&Undo" -msgstr "&Desfazer" +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 +msgid "Show about dialog" +msgstr "Mostrar diálogo sobre" -#: src/slic3r/GUI/MainFrame.cpp:594 -msgid "&Redo" -msgstr "&Refazer" +#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 +msgid "Show the list of the keyboard shortcuts" +msgstr "Mostrar lista dos atalhos no teclado" -#: src/slic3r/GUI/MainFrame.cpp:599 -msgid "&Copy" -msgstr "&Copiar" - -#: src/slic3r/GUI/MainFrame.cpp:600 -msgid "Copy selection to clipboard" -msgstr "Copiar seleção para a área de transferência" - -#: src/slic3r/GUI/MainFrame.cpp:602 -msgid "&Paste" -msgstr "&Colar" - -#: src/slic3r/GUI/MainFrame.cpp:603 -msgid "Paste clipboard" -msgstr "Colar área de transferência" - -#: src/slic3r/GUI/MainFrame.cpp:607 -msgid "Re&load from disk" -msgstr "Re&load do disco" - -#: src/slic3r/GUI/MainFrame.cpp:608 -msgid "Reload the plater from disk" -msgstr "Recarregar a bendeja do disco" - -#: src/slic3r/GUI/MainFrame.cpp:617 -msgid "&Plater Tab" -msgstr "&Bandeja" - -#: src/slic3r/GUI/MainFrame.cpp:617 -msgid "Show the plater" -msgstr "Mostrar a bandeja" - -#: src/slic3r/GUI/MainFrame.cpp:625 -msgid "P&rint Settings Tab" -msgstr "C&onfig. de impressão" - -#: src/slic3r/GUI/MainFrame.cpp:625 -msgid "Show the print settings" -msgstr "Mostrar as config. de impressão" - -#: src/slic3r/GUI/MainFrame.cpp:628 src/slic3r/GUI/MainFrame.cpp:763 -msgid "&Filament Settings Tab" -msgstr "&config. de filamentos" - -#: src/slic3r/GUI/MainFrame.cpp:628 -msgid "Show the filament settings" -msgstr "Mostrar as config. de filamento" - -#: src/slic3r/GUI/MainFrame.cpp:632 -msgid "Print&er Settings Tab" -msgstr "A&ba de config. da impressora" - -#: src/slic3r/GUI/MainFrame.cpp:632 -msgid "Show the printer settings" -msgstr "Mostrar as config. da impressora" - -#: src/slic3r/GUI/MainFrame.cpp:637 -msgid "3&D" -msgstr "3&D" - -#: src/slic3r/GUI/MainFrame.cpp:637 -msgid "Show the 3D editing view" -msgstr "Mostrar a vista de edição 3D" - -#: src/slic3r/GUI/MainFrame.cpp:640 -msgid "Pre&view" -msgstr "Pre&visualização" - -#: src/slic3r/GUI/MainFrame.cpp:640 -msgid "Show the 3D slices preview" -msgstr "Mostrar a pré-visualização do fatiamento 3D" - -#: src/slic3r/GUI/MainFrame.cpp:659 -msgid "Print &Host Upload Queue" -msgstr "Imprimir &Fila de upload do Host" - -#: src/slic3r/GUI/MainFrame.cpp:659 -msgid "Display the Print Host Upload Queue window" -msgstr "Exibir a janela fila de upload do host de impressão" - -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso" msgstr "Isométrico" -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso View" msgstr "Vista isométrica" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:673 src/libslic3r/PrintConfig.cpp:2132 -#: src/libslic3r/PrintConfig.cpp:2141 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 msgid "Top" msgstr "Topo" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 msgid "Top View" msgstr "Vista do topo" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:676 src/libslic3r/PrintConfig.cpp:174 -#: src/libslic3r/PrintConfig.cpp:183 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 msgid "Bottom" msgstr "Base" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 msgid "Bottom View" msgstr "Vista da base" -#: src/slic3r/GUI/MainFrame.cpp:678 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front" msgstr "Frente" -#: src/slic3r/GUI/MainFrame.cpp:678 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front View" msgstr "Vista da frente" -#: src/slic3r/GUI/MainFrame.cpp:680 src/libslic3r/PrintConfig.cpp:1632 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Rear" msgstr "Traseira" -#: src/slic3r/GUI/MainFrame.cpp:680 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 msgid "Rear View" msgstr "Vista traseira" -#: src/slic3r/GUI/MainFrame.cpp:682 +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left" msgstr "Esquerda" -#: src/slic3r/GUI/MainFrame.cpp:682 +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left View" msgstr "Vista esquerda" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right" msgstr "Direita" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right View" msgstr "Vista direita" -#: src/slic3r/GUI/MainFrame.cpp:687 +#: src/slic3r/GUI/MainFrame.cpp:986 +msgid "&New Project" +msgstr "&Novo projeto" + +#: src/slic3r/GUI/MainFrame.cpp:986 +msgid "Start a new project" +msgstr "Começar um novo projeto" + +#: src/slic3r/GUI/MainFrame.cpp:989 +msgid "&Open Project" +msgstr "&Abrir projeto" + +#: src/slic3r/GUI/MainFrame.cpp:989 +msgid "Open a project file" +msgstr "Abrir novo projeto" + +#: src/slic3r/GUI/MainFrame.cpp:994 +msgid "Recent projects" +msgstr "Projetos recentes" + +#: src/slic3r/GUI/MainFrame.cpp:1003 +msgid "" +"The selected project is no longer available.\n" +"Do you want to remove it from the recent projects list?" +msgstr "" +"O projeto selecionado não está mais disponível.\n" +"Você quer removê-lo da lista de projetos recentes?" + +#: src/slic3r/GUI/MainFrame.cpp:1003 src/slic3r/GUI/MainFrame.cpp:1486 +#: src/slic3r/GUI/PrintHostDialogs.cpp:231 +msgid "Error" +msgstr "Erro" + +#: src/slic3r/GUI/MainFrame.cpp:1028 +msgid "&Save Project" +msgstr "&Salvar projeto" + +#: src/slic3r/GUI/MainFrame.cpp:1028 +msgid "Save current project file" +msgstr "Salvar arquivo" + +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 +msgid "Save Project &as" +msgstr "Salvar projeto &como" + +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 +msgid "Save current project file as" +msgstr "Salvar arquivo atual como" + +#: src/slic3r/GUI/MainFrame.cpp:1042 +msgid "Import STL/OBJ/AM&F/3MF" +msgstr "Import STL/OBJ/AM&F/3MF" + +#: src/slic3r/GUI/MainFrame.cpp:1042 +msgid "Load a model" +msgstr "Carregar um modelo" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Import STL (imperial units)" +msgstr "Importar STL (unidades imperiais)" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Load an model saved with imperial units" +msgstr "Carregar um modelo salvo com unidades imperiais" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Import SL1 archive" +msgstr "Não um arquivo ZIP" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Load an SL1 output archive" +msgstr "Carregar um arquivo de saída SL1" + +#: src/slic3r/GUI/MainFrame.cpp:1055 +msgid "Import &Config" +msgstr "Importar &config" + +#: src/slic3r/GUI/MainFrame.cpp:1055 +msgid "Load exported configuration file" +msgstr "Carregar config. de arquivo exportado" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Import Config from &project" +msgstr "Importar Config do &projeto" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Load configuration from project file" +msgstr "Carregar config. de arquivo de projeto" + +#: src/slic3r/GUI/MainFrame.cpp:1062 +msgid "Import Config &Bundle" +msgstr "Importar coleção &de config" + +#: src/slic3r/GUI/MainFrame.cpp:1062 +msgid "Load presets from a bundle" +msgstr "Carregar predefinições de um pacote" + +#: src/slic3r/GUI/MainFrame.cpp:1065 +msgid "&Import" +msgstr "&Importar" + +#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 +msgid "Export &G-code" +msgstr "Exportar &G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1068 +msgid "Export current plate as G-code" +msgstr "Exporte a bandeja atual como o G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 +msgid "S&end G-code" +msgstr "E&nviar G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1072 +msgid "Send to print current plate as G-code" +msgstr "Enviar para imprimir a bandeja atual como G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1076 +msgid "Export G-code to SD card / Flash drive" +msgstr "Exportar para cartão SD / unidade Flash" + +#: src/slic3r/GUI/MainFrame.cpp:1076 +msgid "Export current plate as G-code to SD card / Flash drive" +msgstr "Exportar bandeja atual para cartão SD / unidade Flash" + +#: src/slic3r/GUI/MainFrame.cpp:1080 +msgid "Export plate as &STL" +msgstr "Exportar bandeja como &STL" + +#: src/slic3r/GUI/MainFrame.cpp:1080 +msgid "Export current plate as STL" +msgstr "Exporte a bandeja atual como STL" + +#: src/slic3r/GUI/MainFrame.cpp:1083 +msgid "Export plate as STL &including supports" +msgstr "Exportar bandeja como STL &incluindo suportes" + +#: src/slic3r/GUI/MainFrame.cpp:1083 +msgid "Export current plate as STL including supports" +msgstr "Exporte a bandeja atual como o STL que inclui suportes" + +#: src/slic3r/GUI/MainFrame.cpp:1086 +msgid "Export plate as &AMF" +msgstr "Exportar bandeja como &AMF" + +#: src/slic3r/GUI/MainFrame.cpp:1086 +msgid "Export current plate as AMF" +msgstr "Exporte a bandeja atual como o AMF" + +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 +msgid "Export &toolpaths as OBJ" +msgstr "Exportar &percurso da ferramenta como OBJ" + +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 +msgid "Export toolpaths as OBJ" +msgstr "Exportar percursos como OBJ" + +#: src/slic3r/GUI/MainFrame.cpp:1094 +msgid "Export &Config" +msgstr "Exportar &config" + +#: src/slic3r/GUI/MainFrame.cpp:1094 +msgid "Export current configuration to file" +msgstr "Exporte a config. atual para o arquivo" + +#: src/slic3r/GUI/MainFrame.cpp:1097 +msgid "Export Config &Bundle" +msgstr "Exportar coleção &de config" + +#: src/slic3r/GUI/MainFrame.cpp:1097 +msgid "Export all presets to file" +msgstr "Exporte todas as predefinições para o arquivo" + +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export Config Bundle With Physical Printers" +msgstr "Exportar coleção &de config" + +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export all presets including physical printers to file" +msgstr "" +"Exporte todas as predefinições, incluindo impressoras físicas, para o arquivo" + +#: src/slic3r/GUI/MainFrame.cpp:1103 +msgid "&Export" +msgstr "&Exportar" + +#: src/slic3r/GUI/MainFrame.cpp:1105 +msgid "Ejec&t SD card / Flash drive" +msgstr "Ejetar para cartão SD / unidade Flash" + +#: src/slic3r/GUI/MainFrame.cpp:1105 +msgid "Eject SD card / Flash drive after the G-code was exported to it." +msgstr "" +"Ejetar para cartão SD / unidade Flash após G-code for exportado para ele." + +#: src/slic3r/GUI/MainFrame.cpp:1113 +msgid "Quick Slice" +msgstr "Fatiamento rápido" + +#: src/slic3r/GUI/MainFrame.cpp:1113 +msgid "Slice a file into a G-code" +msgstr "Fatiar um arquivo em um G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1119 +msgid "Quick Slice and Save As" +msgstr "Salvamento rápido e salvar como" + +#: src/slic3r/GUI/MainFrame.cpp:1119 +msgid "Slice a file into a G-code, save as" +msgstr "Fatiar um arquivo em um G-code, salvar como" + +#: src/slic3r/GUI/MainFrame.cpp:1125 +msgid "Repeat Last Quick Slice" +msgstr "Repetir Último Fatiamento Rápido" + +#: src/slic3r/GUI/MainFrame.cpp:1125 +msgid "Repeat last quick slice" +msgstr "Repetir último fatiamento rápido" + +#: src/slic3r/GUI/MainFrame.cpp:1133 +msgid "(Re)Slice No&w" +msgstr "(Re)Fatiar ago&ra" + +#: src/slic3r/GUI/MainFrame.cpp:1133 +msgid "Start new slicing process" +msgstr "Começar novo processo de fatiamento" + +#: src/slic3r/GUI/MainFrame.cpp:1137 +msgid "&Repair STL file" +msgstr "&Reparar arquivo STL" + +#: src/slic3r/GUI/MainFrame.cpp:1137 +msgid "Automatically repair an STL file" +msgstr "Reparar automaticamente um arquivo STL" + +#: src/slic3r/GUI/MainFrame.cpp:1141 +msgid "&G-code preview" +msgstr "&Pré-visualizar G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 +msgid "&Quit" +msgstr "&Sair" + +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 +#, c-format +msgid "Quit %s" +msgstr "Sair %s" + +#: src/slic3r/GUI/MainFrame.cpp:1171 +msgid "&Select all" +msgstr "&Selecionar todos" + +#: src/slic3r/GUI/MainFrame.cpp:1172 +msgid "Selects all objects" +msgstr "Selecionar todos os objetos" + +#: src/slic3r/GUI/MainFrame.cpp:1174 +msgid "D&eselect all" +msgstr "D&eselecionar todos" + +#: src/slic3r/GUI/MainFrame.cpp:1175 +msgid "Deselects all objects" +msgstr "Deselecionar todos os objetos" + +#: src/slic3r/GUI/MainFrame.cpp:1178 +msgid "&Delete selected" +msgstr "&Excluir seleção" + +#: src/slic3r/GUI/MainFrame.cpp:1179 +msgid "Deletes the current selection" +msgstr "Excluir a seleção atual" + +#: src/slic3r/GUI/MainFrame.cpp:1181 +msgid "Delete &all" +msgstr "Excluir &todos" + +#: src/slic3r/GUI/MainFrame.cpp:1182 +msgid "Deletes all objects" +msgstr "Excluir todos os objetos" + +#: src/slic3r/GUI/MainFrame.cpp:1186 +msgid "&Undo" +msgstr "&Desfazer" + +#: src/slic3r/GUI/MainFrame.cpp:1189 +msgid "&Redo" +msgstr "&Refazer" + +#: src/slic3r/GUI/MainFrame.cpp:1194 +msgid "&Copy" +msgstr "&Copiar" + +#: src/slic3r/GUI/MainFrame.cpp:1195 +msgid "Copy selection to clipboard" +msgstr "Copiar seleção para a área de transferência" + +#: src/slic3r/GUI/MainFrame.cpp:1197 +msgid "&Paste" +msgstr "&Colar" + +#: src/slic3r/GUI/MainFrame.cpp:1198 +msgid "Paste clipboard" +msgstr "Colar área de transferência" + +#: src/slic3r/GUI/MainFrame.cpp:1202 +msgid "Re&load from disk" +msgstr "Re&load do disco" + +#: src/slic3r/GUI/MainFrame.cpp:1203 +msgid "Reload the plater from disk" +msgstr "Recarregar a bendeja do disco" + +#: src/slic3r/GUI/MainFrame.cpp:1207 +msgid "Searc&h" +msgstr "Pesquisa&r" + +#: src/slic3r/GUI/MainFrame.cpp:1208 +msgid "Find option" +msgstr "Procurar opções" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "&Plater Tab" +msgstr "&Bandeja" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "Show the plater" +msgstr "Mostrar a bandeja" + +#: src/slic3r/GUI/MainFrame.cpp:1221 +msgid "P&rint Settings Tab" +msgstr "C&onfig. de impressão" + +#: src/slic3r/GUI/MainFrame.cpp:1221 +msgid "Show the print settings" +msgstr "Mostrar as config. de impressão" + +#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 +msgid "&Filament Settings Tab" +msgstr "&config. de filamentos" + +#: src/slic3r/GUI/MainFrame.cpp:1224 +msgid "Show the filament settings" +msgstr "Mostrar as config. de filamento" + +#: src/slic3r/GUI/MainFrame.cpp:1228 +msgid "Print&er Settings Tab" +msgstr "A&ba de config. da impressora" + +#: src/slic3r/GUI/MainFrame.cpp:1228 +msgid "Show the printer settings" +msgstr "Mostrar as config. da impressora" + +#: src/slic3r/GUI/MainFrame.cpp:1234 +msgid "3&D" +msgstr "3&D" + +#: src/slic3r/GUI/MainFrame.cpp:1234 +msgid "Show the 3D editing view" +msgstr "Mostrar a vista de edição 3D" + +#: src/slic3r/GUI/MainFrame.cpp:1237 +msgid "Pre&view" +msgstr "Pre&visualização" + +#: src/slic3r/GUI/MainFrame.cpp:1237 +msgid "Show the 3D slices preview" +msgstr "Mostrar a pré-visualização do fatiamento 3D" + +#: src/slic3r/GUI/MainFrame.cpp:1258 +msgid "Print &Host Upload Queue" +msgstr "Imprimir &Fila de upload do Host" + +#: src/slic3r/GUI/MainFrame.cpp:1258 +msgid "Display the Print Host Upload Queue window" +msgstr "Exibir a janela fila de upload do host de impressão" + +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show &labels" msgstr "Mostrar &rótulos" -#: src/slic3r/GUI/MainFrame.cpp:687 +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show object/instance labels in 3D scene" msgstr "Mostrar rótulos de objeto/instância em cena 3D" -#: src/slic3r/GUI/MainFrame.cpp:695 -msgid "Prusa 3D &Drivers" -msgstr "Drivers 3D &Prusa" +#: src/slic3r/GUI/MainFrame.cpp:1297 +msgid "&Collapse sidebar" +msgstr "&Recolher barra lateral" -#: src/slic3r/GUI/MainFrame.cpp:695 -msgid "Open the Prusa3D drivers download page in your browser" -msgstr "Abrir a página para baixar os drivers da Prusa3D no seu navegador" +#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +msgid "Collapse sidebar" +msgstr "Recolher barra lateral" -#: src/slic3r/GUI/MainFrame.cpp:697 -msgid "Software &Releases" -msgstr "Lançamentos de &software" - -#: src/slic3r/GUI/MainFrame.cpp:697 -msgid "Open the software releases page in your browser" -msgstr "Abrir a página de lançamentos de software no seu navegador" - -#: src/slic3r/GUI/MainFrame.cpp:703 -#, c-format -msgid "%s &Website" -msgstr "%s &Site" - -#: src/slic3r/GUI/MainFrame.cpp:704 -#, c-format -msgid "Open the %s website in your browser" -msgstr "Abra o site do %s no seu navegador" - -#: src/slic3r/GUI/MainFrame.cpp:710 -msgid "System &Info" -msgstr "Informação &do sistema" - -#: src/slic3r/GUI/MainFrame.cpp:710 -msgid "Show system information" -msgstr "Mostrar a informação do sistema" - -#: src/slic3r/GUI/MainFrame.cpp:712 -msgid "Show &Configuration Folder" -msgstr "Mostrar &pasta de config." - -#: src/slic3r/GUI/MainFrame.cpp:712 -msgid "Show user configuration folder (datadir)" -msgstr "Mostrar pasta de config. do usuário (datadir)" - -#: src/slic3r/GUI/MainFrame.cpp:714 -msgid "Report an I&ssue" -msgstr "Reportar um p&roblema" - -#: src/slic3r/GUI/MainFrame.cpp:714 -#, c-format -msgid "Report an issue on %s" -msgstr "Relatar um problema em %s" - -#: src/slic3r/GUI/MainFrame.cpp:716 -#, c-format -msgid "&About %s" -msgstr "&Sobre %s" - -#: src/slic3r/GUI/MainFrame.cpp:716 -msgid "Show about dialog" -msgstr "Mostrar diálogo sobre" - -#: src/slic3r/GUI/MainFrame.cpp:719 -msgid "Show the list of the keyboard shortcuts" -msgstr "Mostrar lista dos atalhos no teclado" - -#: src/slic3r/GUI/MainFrame.cpp:732 +#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 +#: src/slic3r/GUI/MainFrame.cpp:1417 msgid "&File" msgstr "&Arquivo" -#: src/slic3r/GUI/MainFrame.cpp:733 +#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 msgid "&Edit" msgstr "&Editar" -#: src/slic3r/GUI/MainFrame.cpp:734 +#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 msgid "&Window" msgstr "&Janela" -#: src/slic3r/GUI/MainFrame.cpp:735 +#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 +#: src/slic3r/GUI/MainFrame.cpp:1418 msgid "&View" msgstr "&Vista" -#: src/slic3r/GUI/MainFrame.cpp:738 +#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 +#: src/slic3r/GUI/MainFrame.cpp:1423 msgid "&Help" msgstr "&Ajuda" -#: src/slic3r/GUI/MainFrame.cpp:760 +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "&Open G-code" +msgstr "&Abrir G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "Open a G-code file" +msgstr "Abrir arquivo G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open &PrusaSlicer" +msgstr "Versão mínima do PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:1448 msgid "E&xport" msgstr "E&xportar" -#: src/slic3r/GUI/MainFrame.cpp:761 +#: src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end to print" msgstr "E&nviar para impressora" -#: src/slic3r/GUI/MainFrame.cpp:763 +#: src/slic3r/GUI/MainFrame.cpp:1451 msgid "Mate&rial Settings Tab" msgstr "A&ba de config. de material" -#: src/slic3r/GUI/MainFrame.cpp:784 +#: src/slic3r/GUI/MainFrame.cpp:1474 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Escolha um arquivo para fatiar (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:795 +#: src/slic3r/GUI/MainFrame.cpp:1485 msgid "No previously sliced file." msgstr "Sem arquivo fatiado anteriormente." -#: src/slic3r/GUI/MainFrame.cpp:801 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid "Previously sliced file (" msgstr "Arquivo fatiado anteriormente (" -#: src/slic3r/GUI/MainFrame.cpp:801 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") não encontrado." -#: src/slic3r/GUI/MainFrame.cpp:802 +#: src/slic3r/GUI/MainFrame.cpp:1492 msgid "File Not Found" msgstr "Arquivo não encontrado" -#: src/slic3r/GUI/MainFrame.cpp:837 +#: src/slic3r/GUI/MainFrame.cpp:1527 #, c-format msgid "Save %s file as:" msgstr "Salve o arquivo %s como:" -#: src/slic3r/GUI/MainFrame.cpp:837 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:837 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/MainFrame.cpp:849 +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "Save zip file as:" msgstr "Salvar arquivo compactado(zip) como:" -#: src/slic3r/GUI/MainFrame.cpp:858 src/slic3r/GUI/Plater.cpp:3123 -#: src/slic3r/GUI/Plater.cpp:5109 src/slic3r/GUI/Tab.cpp:1220 -#: src/slic3r/GUI/Tab.cpp:3666 +#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 +#: src/slic3r/GUI/Tab.cpp:4081 msgid "Slicing" msgstr "Fatiamento" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:860 +#: src/slic3r/GUI/MainFrame.cpp:1550 #, c-format msgid "Processing %s" msgstr "Processando %s" -#: src/slic3r/GUI/MainFrame.cpp:883 +#: src/slic3r/GUI/MainFrame.cpp:1573 msgid " was successfully sliced." msgstr " foi fatiado com sucesso." -#: src/slic3r/GUI/MainFrame.cpp:885 +#: src/slic3r/GUI/MainFrame.cpp:1575 msgid "Slicing Done!" msgstr "Fatiamento completo!" -#: src/slic3r/GUI/MainFrame.cpp:900 +#: src/slic3r/GUI/MainFrame.cpp:1590 msgid "Select the STL file to repair:" msgstr "Selecione o arquivo STL para corrigir:" -#: src/slic3r/GUI/MainFrame.cpp:910 +#: src/slic3r/GUI/MainFrame.cpp:1600 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" -msgstr "" -"Salvar arquivo OBJ (menos propenso a erros de coordenada que STL) como:" +msgstr "Salvar arquivo OBJ (menos propenso a erros de coordenada que STL) como:" -#: src/slic3r/GUI/MainFrame.cpp:922 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Your file was repaired." msgstr "Seu arquivo foi corrigido." -#: src/slic3r/GUI/MainFrame.cpp:922 src/libslic3r/PrintConfig.cpp:3457 +#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 msgid "Repair" msgstr "Corrigir" -#: src/slic3r/GUI/MainFrame.cpp:936 +#: src/slic3r/GUI/MainFrame.cpp:1626 msgid "Save configuration as:" msgstr "Salvar config. como:" -#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1017 +#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 msgid "Select configuration to load:" msgstr "Selecionar config. para carregar:" -#: src/slic3r/GUI/MainFrame.cpp:991 +#: src/slic3r/GUI/MainFrame.cpp:1681 msgid "Save presets bundle as:" msgstr "Salvar pacote de predefinições como:" -#: src/slic3r/GUI/MainFrame.cpp:1038 +#: src/slic3r/GUI/MainFrame.cpp:1728 #, c-format msgid "%d presets successfully imported." msgstr "%d predefinições importadas com êxito." -#: src/slic3r/GUI/Mouse3DController.cpp:239 +#: src/slic3r/GUI/Mouse3DController.cpp:263 msgid "3Dconnexion settings" msgstr "Configurações de 3Dconnexion" -#: src/slic3r/GUI/Mouse3DController.cpp:254 +#: src/slic3r/GUI/Mouse3DController.cpp:274 msgid "Device:" msgstr "Dispositivo:" -#: src/slic3r/GUI/Mouse3DController.cpp:261 +#: src/slic3r/GUI/Mouse3DController.cpp:279 msgid "Speed:" msgstr "Velocidade:" -#: src/slic3r/GUI/Mouse3DController.cpp:265 -#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:282 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Translation" msgstr "Tradução" -#: src/slic3r/GUI/Mouse3DController.cpp:277 -#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Zoom" msgstr "Zoom" -#: src/slic3r/GUI/Mouse3DController.cpp:284 +#: src/slic3r/GUI/Mouse3DController.cpp:300 msgid "Deadzone:" msgstr "Zona morta:" +#: src/slic3r/GUI/Mouse3DController.cpp:315 +msgid "Options:" +msgstr "Opções de saída:" + +#: src/slic3r/GUI/Mouse3DController.cpp:318 +msgid "Swap Y/Z axes" +msgstr "Trocar eixos Y/Z" + #: src/slic3r/GUI/MsgDialog.cpp:73 #, c-format msgid "%s error" @@ -4100,110 +4900,306 @@ msgstr "%s erro" msgid "%s has encountered an error" msgstr "%s encontrou um erro" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Exporting finished." +msgstr "Falha na exportação." + +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Eject drive." +msgstr "Ejetar unidade." + +#: src/slic3r/GUI/NotificationManager.hpp:318 +msgid "3D Mouse disconnected." +msgstr "Mouse 3D desconectado." + +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "Configuration update is available." +msgstr "A atualização de config. está disponível." + +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "See more." +msgstr "Modo simples." + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "New version is available." +msgstr "Nova versão do %s está disponível." + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "See Releases page." +msgstr "Lançamentos de &software." + +#: src/slic3r/GUI/NotificationManager.cpp:305 +#: src/slic3r/GUI/NotificationManager.cpp:315 +msgid "More" +msgstr "Mais" + +#: src/slic3r/GUI/NotificationManager.cpp:631 +#: src/slic3r/GUI/NotificationManager.cpp:748 +msgid "Export G-Code." +msgstr "Exportar G-code." + +#: src/slic3r/GUI/NotificationManager.cpp:667 +#: src/slic3r/GUI/NotificationManager.cpp:683 +#: src/slic3r/GUI/NotificationManager.cpp:694 +msgid "ERROR:" +msgstr "ERRO:" + +#: src/slic3r/GUI/NotificationManager.cpp:672 +#: src/slic3r/GUI/NotificationManager.cpp:687 +#: src/slic3r/GUI/NotificationManager.cpp:702 +msgid "WARNING:" +msgstr "AVISO:" + +#: src/slic3r/GUI/NotificationManager.cpp:751 +msgid "Slicing finished." +msgstr "Fatiamento pronto." + +#: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "Instâncias" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:62 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, c-format msgid "Instance %d" msgstr "Instância %d" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3514 -#: src/slic3r/GUI/Tab.cpp:3602 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 +#: src/slic3r/GUI/Tab.cpp:4010 msgid "Layers" msgstr "Camadas" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 msgid "Range" msgstr "Intervalo" -#: src/slic3r/GUI/OptionsGroup.cpp:259 +#: src/slic3r/GUI/OpenGLManager.cpp:259 +#, c-format +msgid "" +"PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" +"while OpenGL version %s, render %s, vendor %s was detected." +msgstr "" +"PrusaSlicer requer drivers capazes de executar OpenGL 2.0, \n" +"enquanto a versão do OpenGL %s, renderização %s, fornecedor %s foi detectada." + +#: src/slic3r/GUI/OpenGLManager.cpp:262 +msgid "You may need to update your graphics card driver." +msgstr "Você pode ter que atualizar os drivers da sua placa de vídeo." + +#: src/slic3r/GUI/OpenGLManager.cpp:265 +msgid "" +"As a workaround, you may run PrusaSlicer with a software rendered 3D graphics " +"by running prusa-slicer.exe with the --sw_renderer parameter." +msgstr "" +"Como solução alternativa, você pode executar o PrusaSlicer com um software " +"renderizando gráficos 3D por executar Prusa-slicer.exe com o parâmetro--" +"sw_renderer." + +#: src/slic3r/GUI/OpenGLManager.cpp:267 +msgid "Unsupported OpenGL version" +msgstr "Versão do OpenGL não suportada" + +#: src/slic3r/GUI/OpenGLManager.cpp:275 +#, c-format +msgid "" +"Unable to load the following shaders:\n" +"%s" +msgstr "" +"E tem as seguintes alterações não salvas:\n" +"%s" + +#: src/slic3r/GUI/OpenGLManager.cpp:276 +msgid "Error loading shaders" +msgstr "Erro carregando shaders" + +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Top" msgstr "Topo" -#: src/slic3r/GUI/OptionsGroup.cpp:259 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" msgstr "Base" -#: src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +msgid "Delete this preset from this printer device" +msgstr "Deletar predefinição desta impressora" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +msgid "This printer will be shown in the presets list as" +msgstr "Esta impressora será na lista de predefinição como" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +msgid "Physical Printer" +msgstr "Impressora Física" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +msgid "Type here the name of your printer device" +msgstr "Insira o formato da mesa de impressão" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:176 +msgid "Descriptive name for the printer device" +msgstr "Nome do fornecedor da impressora" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +msgid "Add preset for this printer device" +msgstr "Adicionar predefinição para esta impressora" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 +msgid "Print Host upload" +msgstr "Upload do host de impressão" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 +msgid "Test" +msgstr "Teste" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 +msgid "Could not get a valid Printer Host reference" +msgstr "Não foi possível obter uma referência de host de impressora válida" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 +msgid "Success!" +msgstr "Sucesso!" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"O arquivo HTTPS CA é opcional. Só é necessário se você usar HTTPS com um " +"certificado auto-assinado." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "" +"Arquivos de certificado (*. CRT, *. pem) | *. CRT; *. pem | Todos os arquivos " +"| *. *" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 +msgid "Open CA certificate file" +msgstr "Abra o arquivo de certificado da CA" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 src/libslic3r/PrintConfig.cpp:113 +msgid "HTTPS CA File" +msgstr "Arquivo de CA HTTPS" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 +#, c-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"Neste sistema, %s usa certificados HTTPS do sistema Certificate Store ou " +"keychain." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Para usar um arquivo de CA personalizado, importe seu arquivo de CA para o " +"repositório de certificados/chaveiro." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 +msgid "The supplied name is empty. It can't be saved." +msgstr "O nome fornecido está vazio. Não pode ser salvo." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +msgid "You should to change a name of your printer device. It can't be saved." +msgstr "Você deve mudar o nome da sua impressora. Não pode ser salvo." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +msgid "Printer with name \"%1%\" already exists." +msgstr "Impressora com nome \"%1%\" já existe." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 +msgid "Replace?" +msgstr "Substituir?" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:500 +msgid "" +"Next printer preset(s) is(are) duplicated:%1%Should I add it(they) just once " +"for the printer \"%2%\" and close the Editing Dialog?" +msgstr "" +"Seguintes predefinições da impressoras estão duplicados:%1%Devo adiciona-los " +"uma única vez na impressora \"%2%\" e fechar Diálogo de Edição?" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:546 +msgid "It's not possible to delete last related preset for the printer." +msgstr "" +"Não é possível excluir a última predefinição relacionada para a impressora." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 +msgid "Infornation" +msgstr "Informação" + +#: src/slic3r/GUI/Plater.cpp:167 msgid "Volume" msgstr "Volume" -#: src/slic3r/GUI/Plater.cpp:162 +#: src/slic3r/GUI/Plater.cpp:168 msgid "Facets" msgstr "Facetas" -#: src/slic3r/GUI/Plater.cpp:163 +#: src/slic3r/GUI/Plater.cpp:169 msgid "Materials" msgstr "Materiais" -#: src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Plater.cpp:172 msgid "Manifold" msgstr "Múltiplo" -#: src/slic3r/GUI/Plater.cpp:216 +#: src/slic3r/GUI/Plater.cpp:222 msgid "Sliced Info" msgstr "Informações fatiadas" -#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 msgid "Used Filament (m)" msgstr "Filamento utilizado (m)" -#: src/slic3r/GUI/Plater.cpp:236 +#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 msgid "Used Filament (mm³)" msgstr "Filamento utilizado (mm³)" -#: src/slic3r/GUI/Plater.cpp:237 +#: src/slic3r/GUI/Plater.cpp:243 msgid "Used Filament (g)" msgstr "Filamento utilizado (g)" -#: src/slic3r/GUI/Plater.cpp:238 +#: src/slic3r/GUI/Plater.cpp:244 msgid "Used Material (unit)" msgstr "Material utilizado (unidade)" -#: src/slic3r/GUI/Plater.cpp:239 +#: src/slic3r/GUI/Plater.cpp:245 msgid "Cost (money)" msgstr "Custo (dinheiro)" -#: src/slic3r/GUI/Plater.cpp:240 src/slic3r/GUI/Plater.cpp:1216 -#: src/slic3r/GUI/Plater.cpp:1258 -msgid "Estimated printing time" -msgstr "Tempo estimado de impressão" - -#: src/slic3r/GUI/Plater.cpp:241 +#: src/slic3r/GUI/Plater.cpp:247 msgid "Number of tool changes" msgstr "Número de mudanças de ferramenta" -#: src/slic3r/GUI/Plater.cpp:343 -msgid "Click to edit preset" -msgstr "Clique para editar a predefinição" - -#: src/slic3r/GUI/Plater.cpp:498 +#: src/slic3r/GUI/Plater.cpp:364 msgid "Select what kind of support do you need" msgstr "Selecione o tipo de suporte que você precisa" -#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 -#: src/libslic3r/PrintConfig.cpp:2684 +#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2838 msgid "Support on build plate only" msgstr "Suportes somente na mesa de impressão" -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 +#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 msgid "For support enforcers only" msgstr "Para apenas reforçadores de suporte" -#: src/slic3r/GUI/Plater.cpp:502 +#: src/slic3r/GUI/Plater.cpp:368 msgid "Everywhere" msgstr "Em toda parte" -#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1116 +#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 msgid "Brim" msgstr "Aba" -#: src/slic3r/GUI/Plater.cpp:536 +#: src/slic3r/GUI/Plater.cpp:402 msgid "" "This flag enables the brim that will be printed around each object on the " "first layer." @@ -4211,75 +5207,71 @@ msgstr "" "Este sinalizador permite que a aba que será impressa em torno de cada objeto " "na primeira camada." -#: src/slic3r/GUI/Plater.cpp:544 +#: src/slic3r/GUI/Plater.cpp:410 msgid "Purging volumes" msgstr "Volumes de purga" -#: src/slic3r/GUI/Plater.cpp:638 +#: src/slic3r/GUI/Plater.cpp:504 msgid "Select what kind of pad do you need" msgstr "Selecione o tipo de bloco que você precisa" -#: src/slic3r/GUI/Plater.cpp:640 +#: src/slic3r/GUI/Plater.cpp:506 msgid "Below object" msgstr "Abaixo do objeto" -#: src/slic3r/GUI/Plater.cpp:641 +#: src/slic3r/GUI/Plater.cpp:507 msgid "Around object" msgstr "Em torno do objeto" -#: src/slic3r/GUI/Plater.cpp:815 +#: src/slic3r/GUI/Plater.cpp:690 msgid "Print settings" msgstr "Config. de impressão" -#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1424 -#: src/slic3r/GUI/Tab.cpp:1425 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1771 msgid "Filament" msgstr "Filamento" -#: src/slic3r/GUI/Plater.cpp:817 +#: src/slic3r/GUI/Plater.cpp:692 msgid "SLA print settings" msgstr "Config. de impressão de SLA" -#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1536 +#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 msgid "SLA material" msgstr "Material de SLA" -#: src/slic3r/GUI/Plater.cpp:819 +#: src/slic3r/GUI/Plater.cpp:694 msgid "Printer" msgstr "Impressora" -#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5523 +#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 msgid "Send to printer" msgstr "Enviar para a impressora" -#: src/slic3r/GUI/Plater.cpp:879 +#: src/slic3r/GUI/Plater.cpp:754 msgid "Remove device" msgstr "Remover dispositivo" -#: src/slic3r/GUI/Plater.cpp:880 -msgid "Export to SD card / Flash drive" -msgstr "Exportar para cartão SD / unidade Flash" - -#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3123 -#: src/slic3r/GUI/Plater.cpp:5112 +#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5237 msgid "Slice now" msgstr "Fatiar agora" -#: src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:916 msgid "Hold Shift to Slice & Export G-code" msgstr "Hold Shift to Slice & Export G-code" -#: src/slic3r/GUI/Plater.cpp:1152 +#: src/slic3r/GUI/Plater.cpp:1061 #, c-format msgid "%d (%d shells)" msgstr "%d (%d paredes)" -#: src/slic3r/GUI/Plater.cpp:1157 +#: src/slic3r/GUI/Plater.cpp:1066 #, c-format msgid "Auto-repaired (%d errors)" msgstr "Auto reparando (%d erros):" -#: src/slic3r/GUI/Plater.cpp:1160 +#: src/slic3r/GUI/Plater.cpp:1069 #, c-format msgid "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " @@ -4288,82 +5280,123 @@ msgstr "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " "facets reversed, %d backwards edges" -#: src/slic3r/GUI/Plater.cpp:1170 +#: src/slic3r/GUI/Plater.cpp:1079 msgid "Yes" msgstr "Sim" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1100 msgid "Used Material (ml)" msgstr "Material usado (ml)" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "object(s)" msgstr "objeto(s)" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "supports and pad" msgstr "suportes e bloco" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1141 +msgid "Used Filament (in)" +msgstr "Filamento utilizado (pol)" + +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "objects" msgstr "objetos" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "wipe tower" msgstr "torre de limpeza" -#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +#: src/slic3r/GUI/Plater.cpp:1153 +msgid "Used Filament (in³)" +msgstr "Filamento utilizado (pol³)" + +#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 msgid "Cost" msgstr "Custo" -#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 -msgid "Color" -msgstr "Cor" - -#: src/slic3r/GUI/Plater.cpp:1261 -msgid "Pause" -msgstr "Pausar" - -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 msgid "normal mode" msgstr "modo normal" -#: src/slic3r/GUI/Plater.cpp:1291 +#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 msgid "stealth mode" msgstr "modo silencioso" -#: src/slic3r/GUI/Plater.cpp:1395 +#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 +msgid "Color" +msgstr "Cor" + +#: src/slic3r/GUI/Plater.cpp:1405 +msgid "You can open only one .gcode file at a time." +msgstr "Você pode abrir apenas um arquivo .gcode por vez." + +#: src/slic3r/GUI/Plater.cpp:1406 +msgid "Drag and drop G-code file" +msgstr "Arraste e solte o arquivo G-code" + +#: src/slic3r/GUI/Plater.cpp:1436 msgid "Load File" msgstr "Carregar arquivo" -#: src/slic3r/GUI/Plater.cpp:1399 +#: src/slic3r/GUI/Plater.cpp:1440 msgid "Load Files" msgstr "Carregar arquivos" -#: src/slic3r/GUI/Plater.cpp:2155 +#: src/slic3r/GUI/Plater.cpp:1555 +msgid "Optimize Rotation" +msgstr "Otimize a rotação" + +#: src/slic3r/GUI/Plater.cpp:1561 +msgid "Import SLA archive" +msgstr "Não um arquivo ZIP" + +#: src/slic3r/GUI/Plater.cpp:2031 +#, c-format +msgid "" +"Unmounting successful. The device %s(%s) can now be safely removed from the " +"computer." +msgstr "" +"Não montando bem sucedido. O dispositivo %s(%s) agora pode ser removido com " +"segurança do computador." + +#: src/slic3r/GUI/Plater.cpp:2034 +#, c-format +msgid "Ejecting of device %s(%s) has failed." +msgstr "Ejetar o dispositivo %s(%s) falhou." + +#: src/slic3r/GUI/Plater.cpp:2056 msgid "New Project" msgstr "Novo projeto" -#: src/slic3r/GUI/Plater.cpp:2275 +#: src/slic3r/GUI/Plater.cpp:2143 +msgid "Expand sidebar" +msgstr "Expandir barra lateral" + +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Loading" msgstr "Carregando" -#: src/slic3r/GUI/Plater.cpp:2285 +#: src/slic3r/GUI/Plater.cpp:2226 +msgid "Loading file" +msgstr "Carregar arquivo de config" + +#: src/slic3r/GUI/Plater.cpp:2309 #, c-format -msgid "Processing input file %s" -msgstr "Processando o arquivo de entrada %s" - -#: src/slic3r/GUI/Plater.cpp:2313 -msgid "You cannot load SLA project with a multi-part object on the bed" +msgid "" +"Some object(s) in file %s looks like saved in inches.\n" +"Should I consider them as a saved in inches and convert them?" msgstr "" -"Você não pode carregar o projeto SLA com um objeto de várias partes na cama" +"Alguns objetos no arquivo %s parecem ser salvos em polegadas.\n" +"Devo considerá-los como salvos em polegadas e convertê-los?" -#: src/slic3r/GUI/Plater.cpp:2314 src/slic3r/GUI/Tab.cpp:2961 -msgid "Please check your object list before preset changing." -msgstr "Verifique a lista de objetos antes de alterar a predefinição." +#: src/slic3r/GUI/Plater.cpp:2311 +msgid "Saved in inches object detected" +msgstr "Detectado objeto salvo em polegadas" -#: src/slic3r/GUI/Plater.cpp:2359 +#: src/slic3r/GUI/Plater.cpp:2319 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -4373,11 +5406,11 @@ msgstr "" "Em vez de considerá-los como múltiplos objetos, devo considerar\n" "Este arquivo como um único objeto com várias partes?" -#: src/slic3r/GUI/Plater.cpp:2362 src/slic3r/GUI/Plater.cpp:2415 +#: src/slic3r/GUI/Plater.cpp:2322 src/slic3r/GUI/Plater.cpp:2375 msgid "Multi-part object detected" msgstr "Objeto de várias partes detectado" -#: src/slic3r/GUI/Plater.cpp:2369 +#: src/slic3r/GUI/Plater.cpp:2329 msgid "" "This file cannot be loaded in a simple mode. Do you want to switch to an " "advanced mode?" @@ -4385,20 +5418,20 @@ msgstr "" "Este arquivo não pode ser carregado em um modo simples. Deseja mudar para um " "modo avançado?" -#: src/slic3r/GUI/Plater.cpp:2370 +#: src/slic3r/GUI/Plater.cpp:2330 msgid "Detected advanced data" msgstr "Dados avançados detectados" -#: src/slic3r/GUI/Plater.cpp:2392 +#: src/slic3r/GUI/Plater.cpp:2352 #, c-format msgid "" -"You can't to add the object(s) from %s because of one or some of them " -"is(are) multi-part" +"You can't to add the object(s) from %s because of one or some of them is(are) " +"multi-part" msgstr "" "Você não pode adicionar o objeto (s) %s por causa de um ou alguns deles é " "(são) de várias partes" -#: src/slic3r/GUI/Plater.cpp:2412 +#: src/slic3r/GUI/Plater.cpp:2372 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -4408,101 +5441,47 @@ msgstr "" "Em vez de considerá-los como múltiplos objetos, devo considerar\n" "esses arquivos para representar um único objeto com várias partes?" -#: src/slic3r/GUI/Plater.cpp:2428 +#: src/slic3r/GUI/Plater.cpp:2388 msgid "Loaded" msgstr "Carregado" -#: src/slic3r/GUI/Plater.cpp:2530 +#: src/slic3r/GUI/Plater.cpp:2490 msgid "" "Your object appears to be too large, so it was automatically scaled down to " "fit your print bed." msgstr "" -"Seu objeto parece ser muito grande, por isso foi automaticamente " -"dimensionado para baixo para caber sua mesa de impressão." +"Seu objeto parece ser muito grande, por isso foi automaticamente dimensionado " +"para baixo para caber sua mesa de impressão." -#: src/slic3r/GUI/Plater.cpp:2531 +#: src/slic3r/GUI/Plater.cpp:2491 msgid "Object too large?" msgstr "Objeto muito grande?" -#: src/slic3r/GUI/Plater.cpp:2593 +#: src/slic3r/GUI/Plater.cpp:2553 msgid "Export STL file:" msgstr "Exportar arquivo STL:" -#: src/slic3r/GUI/Plater.cpp:2600 +#: src/slic3r/GUI/Plater.cpp:2560 msgid "Export AMF file:" msgstr "Exportar arquivo AMF:" -#: src/slic3r/GUI/Plater.cpp:2606 +#: src/slic3r/GUI/Plater.cpp:2566 msgid "Save file as:" msgstr "Salvar arquivo como:" -#: src/slic3r/GUI/Plater.cpp:2612 +#: src/slic3r/GUI/Plater.cpp:2572 msgid "Export OBJ file:" msgstr "Exportar arquivo OBJ:" -#: src/slic3r/GUI/Plater.cpp:2714 +#: src/slic3r/GUI/Plater.cpp:2673 msgid "Delete Object" msgstr "Excluir objeto" -#: src/slic3r/GUI/Plater.cpp:2725 +#: src/slic3r/GUI/Plater.cpp:2684 msgid "Reset Project" msgstr "Redefinir projeto" -#: src/slic3r/GUI/Plater.cpp:2762 -msgid "Hollow" -msgstr "Vazado" - -#: src/slic3r/GUI/Plater.cpp:2769 -msgid "Optimize Rotation" -msgstr "Otimize a rotação" - -#: src/slic3r/GUI/Plater.cpp:2815 -msgid "Arranging" -msgstr "Organizar" - -#: src/slic3r/GUI/Plater.cpp:2837 -msgid "Could not arrange model objects! Some geometries may be invalid." -msgstr "" -"Não foi possível organizar objetos de modelo! Algumas geometrias podem ser " -"inválidas." - -#: src/slic3r/GUI/Plater.cpp:2843 -msgid "Arranging canceled." -msgstr "Arranjo cancelado." - -#: src/slic3r/GUI/Plater.cpp:2844 -msgid "Arranging done." -msgstr "Arranjo feito." - -#: src/slic3r/GUI/Plater.cpp:2860 -msgid "Searching for optimal orientation" -msgstr "Procurando orientação ideal" - -#: src/slic3r/GUI/Plater.cpp:2893 -msgid "Orientation search canceled." -msgstr "Pesquisa de orientação cancelada." - -#: src/slic3r/GUI/Plater.cpp:2894 -msgid "Orientation found." -msgstr "Orientação encontrada." - -#: src/slic3r/GUI/Plater.cpp:2924 -msgid "Indexing hollowed object" -msgstr "Indexando objeto oco" - -#: src/slic3r/GUI/Plater.cpp:2928 -msgid "Hollowing cancelled." -msgstr "Cancelado" - -#: src/slic3r/GUI/Plater.cpp:2929 -msgid "Hollowing done." -msgstr "Deixado oco pronto." - -#: src/slic3r/GUI/Plater.cpp:2931 -msgid "Hollowing failed." -msgstr "Deixar oco falhou." - -#: src/slic3r/GUI/Plater.cpp:2972 +#: src/slic3r/GUI/Plater.cpp:2763 msgid "" "The selected object can't be split because it contains more than one volume/" "material." @@ -4510,278 +5489,269 @@ msgstr "" "O objeto selecionado não pode ser dividido porque contém mais de um volume/" "material." -#: src/slic3r/GUI/Plater.cpp:2983 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Split to Objects" msgstr "Dividir em objetos" -#: src/slic3r/GUI/Plater.cpp:3108 +#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 msgid "Invalid data" msgstr "Dados inválidos" -#: src/slic3r/GUI/Plater.cpp:3117 +#: src/slic3r/GUI/Plater.cpp:2915 msgid "Ready to slice" msgstr "Pronto para fatiar" -#: src/slic3r/GUI/Plater.cpp:3155 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Cancelar" -#: src/slic3r/GUI/Plater.cpp:3172 +#: src/slic3r/GUI/Plater.cpp:2972 msgid "Another export job is currently running." msgstr "Outro trabalho de exportação está em execução no momento." -#: src/slic3r/GUI/Plater.cpp:3288 +#: src/slic3r/GUI/Plater.cpp:3089 msgid "Please select the file to reload" msgstr "Selecione o arquivo STL para recarregar" -#: src/slic3r/GUI/Plater.cpp:3323 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "It is not allowed to change the file to reload" msgstr "Não é permitido alterar o arquivo para recarregar" -#: src/slic3r/GUI/Plater.cpp:3323 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "Do you want to retry" msgstr "Você quer prosseguir" -#: src/slic3r/GUI/Plater.cpp:3341 +#: src/slic3r/GUI/Plater.cpp:3142 msgid "Reload from:" msgstr "Recarregar a partir do disco:" -#: src/slic3r/GUI/Plater.cpp:3430 +#: src/slic3r/GUI/Plater.cpp:3233 msgid "Unable to reload:" msgstr "Não é possível recarregar:" -#: src/slic3r/GUI/Plater.cpp:3435 +#: src/slic3r/GUI/Plater.cpp:3238 msgid "Error during reload" msgstr "Erro durante a recarga" -#: src/slic3r/GUI/Plater.cpp:3454 +#: src/slic3r/GUI/Plater.cpp:3257 msgid "Reload all from disk" msgstr "Recarregar tudo do disco" -#: src/slic3r/GUI/Plater.cpp:3475 +#: src/slic3r/GUI/Plater.cpp:3278 msgid "Fix Throught NetFabb" msgstr "Arrumar através do NetFabb" -#: src/slic3r/GUI/Plater.cpp:3666 -msgid "Export failed" -msgstr "Falha na exportação" +#: src/slic3r/GUI/Plater.cpp:3543 +msgid "There are active warnings concerning sliced models:\n" +msgstr "Existem avisos ativos sobre modelos fatiados:\n" -#: src/slic3r/GUI/Plater.cpp:3671 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3554 +msgid "generated warnings" +msgstr "pontos gerados automaticamente" + +#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Cancelado" -#: src/slic3r/GUI/Plater.cpp:3933 src/slic3r/GUI/Plater.cpp:3955 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 msgid "Remove the selected object" msgstr "Remover o objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/Plater.cpp:3858 msgid "Add one more instance of the selected object" msgstr "Adicionar mais uma instância do objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3860 msgid "Remove one instance of the selected object" msgstr "Remover uma instância do objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:3946 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Set number of instances" msgstr "Definir o número de instâncias" -#: src/slic3r/GUI/Plater.cpp:3946 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Change the number of instances of the selected object" msgstr "Alterar o número de instâncias do objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:3965 +#: src/slic3r/GUI/Plater.cpp:3881 msgid "Reload the selected object from disk" msgstr "Recarregue o objeto selecionado do disco" -#: src/slic3r/GUI/Plater.cpp:3968 +#: src/slic3r/GUI/Plater.cpp:3884 msgid "Export the selected object as STL file" msgstr "Exportar o objeto selecionado como arquivo STL" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Ao longo do eixo X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Mirror the selected object along the X axis" msgstr "Espelhar o objeto selecionado ao longo do eixo X" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Along Y axis" msgstr "Ao longo do eixo Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Mirror the selected object along the Y axis" msgstr "Espelhar o objeto selecionado ao longo do eixo Y" -#: src/slic3r/GUI/Plater.cpp:4001 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Along Z axis" msgstr "Ao longo do eixo Z" -#: src/slic3r/GUI/Plater.cpp:4001 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Mirror the selected object along the Z axis" msgstr "Espelhar o objeto selecionado ao longo do eixo Z" -#: src/slic3r/GUI/Plater.cpp:4004 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror" msgstr "Espelhar" -#: src/slic3r/GUI/Plater.cpp:4004 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror the selected object" msgstr "Espelhar o objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:4016 +#: src/slic3r/GUI/Plater.cpp:3934 msgid "To objects" msgstr "Para objetos" -#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4036 +#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 msgid "Split the selected object into individual objects" msgstr "Dividir o objeto selecionado em objetos individuais" -#: src/slic3r/GUI/Plater.cpp:4018 +#: src/slic3r/GUI/Plater.cpp:3936 msgid "To parts" msgstr "Para peças" -#: src/slic3r/GUI/Plater.cpp:4018 src/slic3r/GUI/Plater.cpp:4050 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 msgid "Split the selected object into individual sub-parts" msgstr "Dividir o objeto selecionado em subpartes individuais" -#: src/slic3r/GUI/Plater.cpp:4021 src/slic3r/GUI/Plater.cpp:4036 -#: src/slic3r/GUI/Plater.cpp:4050 src/libslic3r/PrintConfig.cpp:3481 +#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 msgid "Split" msgstr "Dividir" -#: src/slic3r/GUI/Plater.cpp:4021 +#: src/slic3r/GUI/Plater.cpp:3939 msgid "Split the selected object" msgstr "Dividir o objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:4042 -msgid "Optimize orientation" -msgstr "Otimize a orientação" - -#: src/slic3r/GUI/Plater.cpp:4042 +#: src/slic3r/GUI/Plater.cpp:3962 msgid "Optimize the rotation of the object for better print results." -msgstr "" -"Otimize a rotação do objeto para obter melhores resultados de impressão." +msgstr "Otimize a rotação do objeto para obter melhores resultados de impressão." -#: src/slic3r/GUI/Plater.cpp:4099 +#: src/slic3r/GUI/Plater.cpp:4044 msgid "3D editor view" msgstr "vista do editor 3D" -#: src/slic3r/GUI/Plater.cpp:4402 +#: src/slic3r/GUI/Plater.cpp:4423 msgid "" -"%1% printer was active at the time the target Undo / Redo snapshot was " -"taken. Switching to %1% printer requires reloading of %1% presets." +"%1% printer was active at the time the target Undo / Redo snapshot was taken. " +"Switching to %1% printer requires reloading of %1% presets." msgstr "" -"a impressora %1% estava ativa no momento em que a captura de desfazer/" -"refazer de destino foi tirado. Mudar para %1% impressora requer recarga de " -"%1% predefinições." +"a impressora %1% estava ativa no momento em que a captura de desfazer/refazer " +"de destino foi tirado. Mudar para %1% impressora requer recarga de %1% " +"predefinições." -#: src/slic3r/GUI/Plater.cpp:4577 +#: src/slic3r/GUI/Plater.cpp:4627 msgid "Load Project" msgstr "Carregar projeto" -#: src/slic3r/GUI/Plater.cpp:4605 +#: src/slic3r/GUI/Plater.cpp:4655 msgid "Import Object" msgstr "Importar objeto" -#: src/slic3r/GUI/Plater.cpp:4609 +#: src/slic3r/GUI/Plater.cpp:4659 msgid "Import Objects" msgstr "Importar objetos" -#: src/slic3r/GUI/Plater.cpp:4671 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "All objects will be removed, continue?" msgstr "Todos os objetos serão removidos, continuar?" -#: src/slic3r/GUI/Plater.cpp:4679 +#: src/slic3r/GUI/Plater.cpp:4782 msgid "Delete Selected Objects" msgstr "Excluir objetos selecionados" -#: src/slic3r/GUI/Plater.cpp:4687 +#: src/slic3r/GUI/Plater.cpp:4790 msgid "Increase Instances" msgstr "Aumentar instâncias" -#: src/slic3r/GUI/Plater.cpp:4722 +#: src/slic3r/GUI/Plater.cpp:4824 msgid "Decrease Instances" msgstr "Diminuir instâncias" -#: src/slic3r/GUI/Plater.cpp:4753 +#: src/slic3r/GUI/Plater.cpp:4855 msgid "Enter the number of copies:" msgstr "Definir números de cópias:" -#: src/slic3r/GUI/Plater.cpp:4754 +#: src/slic3r/GUI/Plater.cpp:4856 msgid "Copies of the selected object" msgstr "Cópias do objeto selecionado" -#: src/slic3r/GUI/Plater.cpp:4758 +#: src/slic3r/GUI/Plater.cpp:4860 #, c-format msgid "Set numbers of copies to %d" msgstr "Definir números de cópias para %d" -#: src/slic3r/GUI/Plater.cpp:4788 +#: src/slic3r/GUI/Plater.cpp:4921 msgid "Cut by Plane" msgstr "Cortado por plano" -#: src/slic3r/GUI/Plater.cpp:4841 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save G-code file as:" msgstr "Salve o arquivo G-code como:" -#: src/slic3r/GUI/Plater.cpp:4841 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save SL1 file as:" msgstr "Salvar SL1 arquivo como:" -#: src/slic3r/GUI/Plater.cpp:4987 +#: src/slic3r/GUI/Plater.cpp:5118 #, c-format msgid "STL file exported to %s" msgstr "Arquivo STL exportado para %s" -#: src/slic3r/GUI/Plater.cpp:5004 +#: src/slic3r/GUI/Plater.cpp:5135 #, c-format msgid "AMF file exported to %s" msgstr "Arquivo AMF exportado para %s" -#: src/slic3r/GUI/Plater.cpp:5007 +#: src/slic3r/GUI/Plater.cpp:5138 #, c-format msgid "Error exporting AMF file %s" msgstr "Erro ao exportar arquivo AMF %s" -#: src/slic3r/GUI/Plater.cpp:5040 +#: src/slic3r/GUI/Plater.cpp:5167 #, c-format msgid "3MF file exported to %s" msgstr "Arquivo 3MF exportado para %s" -#: src/slic3r/GUI/Plater.cpp:5045 +#: src/slic3r/GUI/Plater.cpp:5172 #, c-format msgid "Error exporting 3MF file %s" msgstr "Erro ao exportar arquivo 3MF %s" -#: src/slic3r/GUI/Plater.cpp:5205 -#, c-format -msgid "" -"Unmounting successful. The device %s(%s) can now be safely removed from the " -"computer." -msgstr "" -"Não montando bem sucedido. O dispositivo %s(%s) agora pode ser removido com " -"segurança do computador." - -#: src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/Plater.cpp:5706 msgid "Export" msgstr "Exportar" -#: src/slic3r/GUI/Plater.cpp:5608 +#: src/slic3r/GUI/Plater.cpp:5803 msgid "Paste From Clipboard" msgstr "Colar da área de transferência" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1798 -#: src/slic3r/GUI/Tab.cpp:2042 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 +#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "Geral" -#: src/slic3r/GUI/Preferences.cpp:39 +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Remember output directory" msgstr "Lembrar diretório de saída" -#: src/slic3r/GUI/Preferences.cpp:41 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "" "If this is enabled, Slic3r will prompt the last output directory instead of " "the one containing the input files." @@ -4789,11 +5759,11 @@ msgstr "" "Se isso estiver habilitado, Slic3r solicitará o último diretório de saída em " "vez de um contendo os arquivos de entrada." -#: src/slic3r/GUI/Preferences.cpp:47 +#: src/slic3r/GUI/Preferences.cpp:64 msgid "Auto-center parts" msgstr "Centrar automaticamente as partes" -#: src/slic3r/GUI/Preferences.cpp:49 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "" "If this is enabled, Slic3r will auto-center objects around the print bed " "center." @@ -4801,44 +5771,43 @@ msgstr "" "Se isso estiver habilitado, o Slic3r irá centralizar objetos automaticamente " "ao redor do centro de mesa de impressão." -#: src/slic3r/GUI/Preferences.cpp:55 +#: src/slic3r/GUI/Preferences.cpp:72 msgid "Background processing" msgstr "Processamento em segundo plano" -#: src/slic3r/GUI/Preferences.cpp:57 +#: src/slic3r/GUI/Preferences.cpp:74 msgid "" -"If this is enabled, Slic3r will pre-process objects as soon as they're " -"loaded in order to save time when exporting G-code." +"If this is enabled, Slic3r will pre-process objects as soon as they're loaded " +"in order to save time when exporting G-code." msgstr "" "Se isso estiver ativado, o Slic3r irá pré-processar objetos assim que eles " "forem carregados para economizar tempo ao exportar o G-code." -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:83 msgid "" -"If enabled, PrusaSlicer will check for the new versions of itself online. " -"When a new version becomes available a notification is displayed at the next " -"application startup (never during program usage). This is only a " -"notification mechanisms, no automatic installation is done." +"If enabled, PrusaSlicer will check for the new versions of itself online. When " +"a new version becomes available a notification is displayed at the next " +"application startup (never during program usage). This is only a notification " +"mechanisms, no automatic installation is done." msgstr "" -"Se habilitado, PrusaSlicer irá verificar as novas versões de si mesmo on-" -"line. Quando uma nova versão se torna disponível, uma notificação é exibida " -"na próxima inicialização do aplicativo (nunca durante o uso do programa). " -"Este é apenas um mecanismos de notificação, nenhuma instalação automática é " -"feita." +"Se habilitado, PrusaSlicer irá verificar as novas versões de si mesmo on-line. " +"Quando uma nova versão se torna disponível, uma notificação é exibida na " +"próxima inicialização do aplicativo (nunca durante o uso do programa). Este é " +"apenas um mecanismos de notificação, nenhuma instalação automática é feita." -#: src/slic3r/GUI/Preferences.cpp:72 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "Export sources full pathnames to 3mf and amf" msgstr "Fontes de exportação completas para 3mf e amf" -#: src/slic3r/GUI/Preferences.cpp:74 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "" -"If enabled, allows the Reload from disk command to automatically find and " -"load the files when invoked." +"If enabled, allows the Reload from disk command to automatically find and load " +"the files when invoked." msgstr "" "Se ativado, permite que o comando Reload from disk encontre e carregue " "automaticamente os arquivos quando invocado." -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:99 msgid "" "If enabled, Slic3r downloads updates of built-in system presets in the " "background. These updates are downloaded into a separate temporary location. " @@ -4850,23 +5819,23 @@ msgstr "" "temporário separado. Quando uma nova versão predefinida se torna disponível, " "ela é oferecida na inicialização do aplicativo." -#: src/slic3r/GUI/Preferences.cpp:87 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Suprimir predefinições \"-padrão-\"" -#: src/slic3r/GUI/Preferences.cpp:89 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "" "Suppress \" - default - \" presets in the Print / Filament / Printer " "selections once there are any other valid presets available." msgstr "" -"Suprimir predefinições \"-padrão-\" em impressão/filamento/impressora, uma " -"vez que existam outras predefinições válidas disponíveis." +"Suprimir predefinições \"-padrão-\" em impressão/filamento/impressora, uma vez " +"que existam outras predefinições válidas disponíveis." -#: src/slic3r/GUI/Preferences.cpp:95 +#: src/slic3r/GUI/Preferences.cpp:112 msgid "Show incompatible print and filament presets" msgstr "Mostrar predefinições de impressão e filamento incompatíveis" -#: src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/Preferences.cpp:114 msgid "" "When checked, the print and filament presets are shown in the preset editor " "even if they are marked as incompatible with the active printer" @@ -4875,11 +5844,34 @@ msgstr "" "editor de predefinições, mesmo que estejam marcadas como incompatíveis com a " "impressora ativa" -#: src/slic3r/GUI/Preferences.cpp:104 +#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3697 +msgid "Single Instance" +msgstr "Instancia única" + +#: src/slic3r/GUI/Preferences.cpp:123 +msgid "" +"On OSX there is always only one instance of app running by default. However it " +"is allowed to run multiple instances of same app from the command line. In " +"such case this settings will allow only one instance." +msgstr "" +"No OSX, sempre há apenas uma instância do aplicativo em execução por padrão. " +"No entanto, é permitido executar várias instâncias do mesmo aplicativo a " +"partir da linha de comando. Nesse caso, essas configurações permitirão apenas " +"uma instância." + +#: src/slic3r/GUI/Preferences.cpp:125 +msgid "" +"If this is enabled, when staring PrusaSlicer and another instance of same " +"PrusaSlicer is running, that instance will be reactivated instead." +msgstr "" +"Se estiver habilitado, ao iniciar o PrusaSlicer e outra instância do mesmo " +"PrusaSlicer estiver em execução, essa instância será reativada." + +#: src/slic3r/GUI/Preferences.cpp:135 msgid "Use Retina resolution for the 3D scene" msgstr "Usar a resolução retina para a cena 3D" -#: src/slic3r/GUI/Preferences.cpp:106 +#: src/slic3r/GUI/Preferences.cpp:137 msgid "" "If enabled, the 3D scene will be rendered in Retina resolution. If you are " "experiencing 3D performance problems, disabling this option may help." @@ -4887,256 +5879,362 @@ msgstr "" "Se ativada, a cena 3D será renderizada na resolução retina. Se você estiver " "enfrentando problemas de desempenho 3D, desabilitar essa opção pode ajudar." -#: src/slic3r/GUI/Preferences.cpp:113 +#: src/slic3r/GUI/Preferences.cpp:154 src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +msgid "Ask for unsaved changes when closing application" +msgstr "Pergunte sobre mudanças não salvas quando fechar aplicação" + +#: src/slic3r/GUI/Preferences.cpp:156 +msgid "Always ask for unsaved changes when closing application" +msgstr "Sempre pergunte sobre mudanças não salvas quando fechar aplicação" + +#: src/slic3r/GUI/Preferences.cpp:161 src/slic3r/GUI/UnsavedChangesDialog.cpp:660 +msgid "Ask for unsaved changes when selecting new preset" +msgstr "Pergunte sobre mudanças não salvas quando selecionar nova predefinição" + +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "Always ask for unsaved changes when selecting new preset" +msgstr "" +"Sempre pergunte sobre mudanças não salvas quando selecionar nova predefinição" + +#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +msgid "Show splash screen" +msgstr "Mostrar tela inicial" + +#: src/slic3r/GUI/Preferences.cpp:178 msgid "Camera" msgstr "Câmera" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:184 msgid "Use perspective camera" msgstr "Usar a câmera em perspectiva" -#: src/slic3r/GUI/Preferences.cpp:121 +#: src/slic3r/GUI/Preferences.cpp:186 msgid "" "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "" -"Se ativada, use a câmera em perspectiva. Se não estiver ativada, use a " -"câmera ortográfica." +"Se ativada, use a câmera em perspectiva. Se não estiver ativada, use a câmera " +"ortográfica." -#: src/slic3r/GUI/Preferences.cpp:126 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use free camera" msgstr "Use câmera livre" -#: src/slic3r/GUI/Preferences.cpp:128 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "" -"Se ativado, use câmera livre. Se não estiver habilitado, use a câmera " -"restrita." +"Se ativado, use câmera livre. Se não estiver habilitado, use a câmera restrita." -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "GUI" msgstr "GUI" -#: src/slic3r/GUI/Preferences.cpp:143 +#: src/slic3r/GUI/Preferences.cpp:213 +msgid "Show sidebar collapse/expand button" +msgstr "Mostrar botão de recolher/expandir barra lateral" + +#: src/slic3r/GUI/Preferences.cpp:215 +msgid "" +"If enabled, the button for the collapse sidebar will be appeared in top right " +"corner of the 3D Scene" +msgstr "" +"Se ativado, o botão para recolher a barra lateral aparecerá no canto superior " +"direito da cena 3D" + +#: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Usar tamanho personalizado para ícones da barra de ferramentas" -#: src/slic3r/GUI/Preferences.cpp:145 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "If enabled, you can change size of toolbar icons manually." msgstr "" "Se ativado, você pode alterar o tamanho dos ícones da barra de ferramentas " "manualmente." -#: src/slic3r/GUI/Preferences.cpp:172 +#: src/slic3r/GUI/Preferences.cpp:230 +msgid "Sequential slider applied only to top layer" +msgstr "Rolagem sequencial aplicado apenas na camada de topo" + +#: src/slic3r/GUI/Preferences.cpp:232 +msgid "" +"If enabled, changes made using the sequential slider, in preview, apply only " +"to gcode top layer, if disabled, changes made using the sequential slider, in " +"preview, apply to the whole gcode." +msgstr "" +"Se ativo, mudanças feitas usando a rolagem sequencial, na pré-visualização, " +"aplica somente para o topo do G-code, se desativado, mudanças feitas usando a " +"rolagem sequencial, na pré-visualização, aplica para todo G-code." + +#: src/slic3r/GUI/Preferences.cpp:255 +msgid "Render" +msgstr "Reenderizar" + +#: src/slic3r/GUI/Preferences.cpp:261 +msgid "Use environment map" +msgstr "Usar mapa do ambiente" + +#: src/slic3r/GUI/Preferences.cpp:263 +msgid "If enabled, renders object using the environment map." +msgstr "Se ativo, reenderiza objetos usando o mapa de ambiente. " + +#: src/slic3r/GUI/Preferences.cpp:299 #, c-format msgid "You need to restart %s to make the changes effective." msgstr "Você precisa reiniciar %s para tornar as alterações efetivas." -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:376 msgid "Icon size in a respect to the default size" msgstr "Tamanho do ícone em relação ao tamanho padrão" -#: src/slic3r/GUI/Preferences.cpp:237 +#: src/slic3r/GUI/Preferences.cpp:391 msgid "Select toolbar icon size in respect to the default one." msgstr "" "Selecione o tamanho do ícone da barra de ferramentas em relação ao padrão." -#: src/slic3r/GUI/Preset.cpp:247 -msgid "modified" -msgstr "modificado" +#: src/slic3r/GUI/Preferences.cpp:422 +msgid "Old regular layout with the tab bar" +msgstr "Layout padrão antigo com a barra de abas" -#: src/slic3r/GUI/Preset.cpp:1121 src/slic3r/GUI/Preset.cpp:1176 -#: src/slic3r/GUI/Preset.cpp:1254 src/slic3r/GUI/Preset.cpp:1296 -#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1679 +#: src/slic3r/GUI/Preferences.cpp:423 +msgid "New layout without the tab bar on the plater" +msgstr "Novo layout sem a barra de abas na bandeja" + +#: src/slic3r/GUI/Preferences.cpp:424 +msgid "Settings will be shown in the non-modal dialog" +msgstr "Configurações serão mostradas na caixa de diálogo não modal" + +#: src/slic3r/GUI/Preferences.cpp:433 +msgid "Settings layout mode" +msgstr "Config. da parte para modificar" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:188 +#: src/slic3r/GUI/PresetComboBoxes.cpp:226 +#: src/slic3r/GUI/PresetComboBoxes.cpp:724 +#: src/slic3r/GUI/PresetComboBoxes.cpp:774 +#: src/slic3r/GUI/PresetComboBoxes.cpp:886 +#: src/slic3r/GUI/PresetComboBoxes.cpp:930 msgid "System presets" msgstr "Predefinições do sistema" -#: src/slic3r/GUI/Preset.cpp:1180 src/slic3r/GUI/Preset.cpp:1300 -#: src/slic3r/GUI/PresetBundle.cpp:1684 +#: src/slic3r/GUI/PresetComboBoxes.cpp:230 +#: src/slic3r/GUI/PresetComboBoxes.cpp:778 +#: src/slic3r/GUI/PresetComboBoxes.cpp:934 msgid "User presets" msgstr "Predefinições do usuário" -#: src/slic3r/GUI/Preset.cpp:1213 +#: src/slic3r/GUI/PresetComboBoxes.cpp:241 +msgid "Incompatible presets" +msgstr "Pacotes incompatíveis" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:566 +msgid "Click to edit preset" +msgstr "Clique para editar a predefinição" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:622 +#: src/slic3r/GUI/PresetComboBoxes.cpp:669 +msgid "Add/Remove presets" +msgstr "Adicionar/Remover predefinições " + +#: src/slic3r/GUI/PresetComboBoxes.cpp:627 +#: src/slic3r/GUI/PresetComboBoxes.cpp:674 +msgid "Add physical printer" +msgstr "Adicionar impressora física" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:641 +msgid "Edit preset" +msgstr "Editar a predefinição" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:645 +msgid "Edit physical printer" +msgstr "Editar impressora física" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:652 +msgid "Delete physical printer" +msgstr "Excluir impressora física" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +msgid "Are you sure you want to delete \"%1%\" printer?" +msgstr "Tem certeza que quer deletar a impressora \"%1%\"?" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +msgid "Delete Physical Printer" +msgstr "Excluir Impressora Física" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:789 +#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +msgid "Physical printers" +msgstr "Impressoras físicas" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:813 msgid "Add/Remove materials" msgstr "Adicionar/Remover materiais" -#: src/slic3r/GUI/Preset.cpp:1215 +#: src/slic3r/GUI/PresetComboBoxes.cpp:815 +#: src/slic3r/GUI/PresetComboBoxes.cpp:972 msgid "Add/Remove printers" msgstr "Adicionar/Remover impressoras" -#: src/slic3r/GUI/Preset.cpp:1534 -msgid "filament" -msgstr "filamento" - -#: src/slic3r/GUI/Preset.cpp:1535 -msgid "SLA print" -msgstr "Impressão de SLA" - -#: src/slic3r/GUI/PresetBundle.cpp:1711 -msgid "Add/Remove filaments" -msgstr "Adicionar/Remover filamentos" - -#: src/slic3r/GUI/PresetHints.cpp:29 +#: src/slic3r/GUI/PresetHints.cpp:28 msgid "" -"If estimated layer time is below ~%1%s, fan will run at %2%%% and print " -"speed will be reduced so that no less than %3%s are spent on that layer " -"(however, speed will never be reduced below %4%mm/s)." +"If estimated layer time is below ~%1%s, fan will run at %2%%% and print speed " +"will be reduced so that no less than %3%s are spent on that layer (however, " +"speed will never be reduced below %4%mm/s)." msgstr "" "Se o tempo estimado da camada estiver abaixo de ~%1%s, o ventoinha será " "executado em %2%%% e a velocidade de impressão será reduzida para que não " "menos de %3%s sejam gastos nessa camada (no entanto, a velocidade nunca será " "reduzida abaixo de %4% mm/s)." -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:35 msgid "" "If estimated layer time is greater, but still below ~%1%s, fan will run at a " "proportionally decreasing speed between %2%%% and %3%%%." msgstr "" "Se o tempo estimado da camada for maior, mas ainda abaixo de ~%1%s, o " -"ventoinha será executado em uma velocidade proporcionalmente decrescente " -"entre %2%%% e %3%%%." +"ventoinha será executado em uma velocidade proporcionalmente decrescente entre " +"%2%%% e %3%%%." -#: src/slic3r/GUI/PresetHints.cpp:40 +#: src/slic3r/GUI/PresetHints.cpp:39 msgid "During the other layers, fan" msgstr "Durante as outras camadas, a ventoinha" -#: src/slic3r/GUI/PresetHints.cpp:42 +#: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Ventoinha" -#: src/slic3r/GUI/PresetHints.cpp:48 +#: src/slic3r/GUI/PresetHints.cpp:47 msgid "will always run at %1%%%" msgstr "será sempre executado em %1%%%" -#: src/slic3r/GUI/PresetHints.cpp:51 +#: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first %1% layers." msgstr "exceto para as primeiras camadas %1%." -#: src/slic3r/GUI/PresetHints.cpp:53 +#: src/slic3r/GUI/PresetHints.cpp:52 msgid "except for the first layer." msgstr "exceto para a primeira camada." -#: src/slic3r/GUI/PresetHints.cpp:55 +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "será desligado." -#: src/slic3r/GUI/PresetHints.cpp:156 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "perímetros externos" -#: src/slic3r/GUI/PresetHints.cpp:165 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "perímetros" -#: src/slic3r/GUI/PresetHints.cpp:174 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "preenchimento" -#: src/slic3r/GUI/PresetHints.cpp:184 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "preenchimento sólido" -#: src/slic3r/GUI/PresetHints.cpp:192 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "preenchimento sólido do topo" -#: src/slic3r/GUI/PresetHints.cpp:203 +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "suporte" -#: src/slic3r/GUI/PresetHints.cpp:213 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "interface de suporte" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "Primeira camada volumétrica" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" msgstr "Ponteamento volumétrico" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "Volumétrica" -#: src/slic3r/GUI/PresetHints.cpp:220 +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "flow rate is maximized" msgstr "a taxa de fluxo é maximizada" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "by the print profile maximum" msgstr "pelo perfil de impressão máximo" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "when printing" msgstr "ao imprimir" -#: src/slic3r/GUI/PresetHints.cpp:225 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "with a volumetric rate" msgstr "com uma taxa volumétrica" -#: src/slic3r/GUI/PresetHints.cpp:229 +#: src/slic3r/GUI/PresetHints.cpp:228 #, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm ³/s na velocidade do filamento %3.2f mm/s." -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "" "Recommended object thin wall thickness: Not available due to invalid layer " "height." msgstr "" -"Espessura de parede fina do objeto recomendado: não disponível devido à " -"altura da camada inválida." +"Espessura de parede fina do objeto recomendado: não disponível devido à altura " +"da camada inválida." -#: src/slic3r/GUI/PresetHints.cpp:263 +#: src/slic3r/GUI/PresetHints.cpp:262 #, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "" "Espessura de parede fina do objeto recomendado para a altura da camada %.2f e" -#: src/slic3r/GUI/PresetHints.cpp:270 +#: src/slic3r/GUI/PresetHints.cpp:269 #, c-format msgid "%d lines: %.2f mm" msgstr "%d linhas: %.2f mm" -#: src/slic3r/GUI/PresetHints.cpp:274 +#: src/slic3r/GUI/PresetHints.cpp:273 msgid "" -"Recommended object thin wall thickness: Not available due to excessively " -"small extrusion width." +"Recommended object thin wall thickness: Not available due to excessively small " +"extrusion width." msgstr "" "Espessura fina da parede do objeto recomendada: Não disponível devido à " "largura de extrusão excessivamente pequena." -#: src/slic3r/GUI/PresetHints.cpp:304 +#: src/slic3r/GUI/PresetHints.cpp:302 msgid "" "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "" -"Espessura superior/inferior da concha. Dica: Não disponível devido à altura " -"da camada inválida." +"Espessura superior/inferior da concha. Dica: Não disponível devido à altura da " +"camada inválida." -#: src/slic3r/GUI/PresetHints.cpp:317 +#: src/slic3r/GUI/PresetHints.cpp:315 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "A camada superior tem %1% de espessura para altura da camada %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:320 +#: src/slic3r/GUI/PresetHints.cpp:318 msgid "Minimum top shell thickness is %1% mm." msgstr "A espessura mínima da camada superior é de %1% mm." -#: src/slic3r/GUI/PresetHints.cpp:323 +#: src/slic3r/GUI/PresetHints.cpp:321 msgid "Top is open." -msgstr "Topo está aberto" +msgstr "Topo está aberto." -#: src/slic3r/GUI/PresetHints.cpp:336 +#: src/slic3r/GUI/PresetHints.cpp:334 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "A camada inferior tem %1% de espessura para a altura da camada %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:339 +#: src/slic3r/GUI/PresetHints.cpp:337 msgid "Minimum bottom shell thickness is %1% mm." msgstr "A espessura mínima da camada inferior é de %1% mm." -#: src/slic3r/GUI/PresetHints.cpp:342 +#: src/slic3r/GUI/PresetHints.cpp:340 msgid "Bottom is open." -msgstr "Base está aberta" +msgstr "Base está aberta." #: src/slic3r/GUI/PrintHostDialogs.cpp:33 msgid "Send G-Code to printer host" @@ -5154,35 +6252,35 @@ msgstr "Iniciar a impressão após o envio" msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Use barras (/) como um separador de diretório, se necessário." -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:147 msgid "ID" msgstr "ID" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 msgid "Progress" msgstr "Progresso" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 msgid "Status" msgstr "Status" -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" msgstr "Servidor" -#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 msgid "Filename" msgstr "Nome do arquivo" -#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 msgid "Error Message" msgstr "Mensagem de Erro" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:155 msgid "Cancel selected" msgstr "Cancelar selecionado" -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Exibir mensagem de erro" @@ -5207,17 +6305,13 @@ msgstr "Erro ao carregar para o host de impressão:" msgid "NO RAMMING AT ALL" msgstr "Não usar Ramming" -#: src/slic3r/GUI/RammingChart.cpp:76 -msgid "Time" -msgstr "Tempo" - #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 -#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 -#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 +#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 +#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 +#: src/libslic3r/PrintConfig.cpp:2709 msgid "s" msgstr "s" @@ -5225,91 +6319,171 @@ msgstr "s" msgid "Volumetric speed" msgstr "Velocidade volumétrica" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "mm³/s" msgstr "mm ³/s" -#: src/slic3r/GUI/Selection.cpp:147 +#: src/slic3r/GUI/SavePresetDialog.cpp:72 +#, c-format +msgid "Save %s as:" +msgstr "Salvar %s como:" + +#: src/slic3r/GUI/SavePresetDialog.cpp:125 +msgid "the following suffix is not allowed:" +msgstr "o sufixo seguinte não é permitido:" + +#: src/slic3r/GUI/SavePresetDialog.cpp:131 +msgid "The supplied name is not available." +msgstr "O nome fornecido não está disponível." + +#: src/slic3r/GUI/SavePresetDialog.cpp:137 +msgid "Cannot overwrite a system profile." +msgstr "Não é possível substituir um perfil de sistema." + +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "Cannot overwrite an external profile." +msgstr "Não é possível substituir um perfil externo." + +#: src/slic3r/GUI/SavePresetDialog.cpp:148 +msgid "Preset with name \"%1%\" already exists." +msgstr "Predefinido com nome \"%1%\" já existe." + +#: src/slic3r/GUI/SavePresetDialog.cpp:150 +msgid "And selected preset is imcopatible with selected printer." +msgstr "" +"Você tem que selecionar pelo menos um material para impressoras selecionadas." + +#: src/slic3r/GUI/SavePresetDialog.cpp:151 +msgid "Note: This preset will be replaced after saving" +msgstr "Nota: Essa predefinição será substituída após salvar." + +#: src/slic3r/GUI/SavePresetDialog.cpp:156 +msgid "The empty name is not available." +msgstr "O nome fornecido não está disponível." + +#: src/slic3r/GUI/SavePresetDialog.cpp:190 +#: src/slic3r/GUI/SavePresetDialog.cpp:196 +msgid "Save preset" +msgstr "Salvar predefinição" + +#: src/slic3r/GUI/SavePresetDialog.cpp:219 +msgctxt "PresetName" +msgid "Copy" +msgstr "Copiar" + +#: src/slic3r/GUI/SavePresetDialog.cpp:277 +msgid "" +"You have selected physical printer \"%1%\" \n" +"with related printer preset \"%2%\"" +msgstr "" +"Você selecionou a impressora física \"% 1%\"\n" +"com a predefinição de impressora relacionada \"% 2%\"" + +#: src/slic3r/GUI/SavePresetDialog.cpp:310 +msgid "What would you like to do with \"%1%\" preset after saving?" +msgstr "O que você gostaria de fazer com a predefinição \"%1%\" após salvar?" + +#: src/slic3r/GUI/SavePresetDialog.cpp:313 +msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" +msgstr "Altere \"%1%\" para \"%2%\" para esta impressora física \"%3%\"" + +#: src/slic3r/GUI/SavePresetDialog.cpp:314 +msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" +msgstr "" +"Adicione \"%1%\" como uma próxima predefinição para a impressora física \"%2%\"" + +#: src/slic3r/GUI/SavePresetDialog.cpp:315 +msgid "Just switch to \"%1%\" preset" +msgstr "Basta mudar para a predefinição \"%1%\"" + +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 +msgid "Stealth" +msgstr "Furtivo" + +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 +msgid "Normal" +msgstr "Normal" + +#: src/slic3r/GUI/Selection.cpp:191 msgid "Selection-Add" msgstr "Seleção-Adicionar" -#: src/slic3r/GUI/Selection.cpp:188 +#: src/slic3r/GUI/Selection.cpp:232 msgid "Selection-Remove" msgstr "Seleção-remover" -#: src/slic3r/GUI/Selection.cpp:220 +#: src/slic3r/GUI/Selection.cpp:264 msgid "Selection-Add Object" msgstr "Seleção-Adicionar objeto" -#: src/slic3r/GUI/Selection.cpp:239 +#: src/slic3r/GUI/Selection.cpp:283 msgid "Selection-Remove Object" msgstr "Seleção-remover objeto" -#: src/slic3r/GUI/Selection.cpp:257 +#: src/slic3r/GUI/Selection.cpp:301 msgid "Selection-Add Instance" msgstr "Instância de seleção-Adicionar" -#: src/slic3r/GUI/Selection.cpp:276 +#: src/slic3r/GUI/Selection.cpp:320 msgid "Selection-Remove Instance" msgstr "Seleção-remover instância" -#: src/slic3r/GUI/Selection.cpp:377 +#: src/slic3r/GUI/Selection.cpp:421 msgid "Selection-Add All" msgstr "Seleção-adicionar todos" -#: src/slic3r/GUI/Selection.cpp:403 +#: src/slic3r/GUI/Selection.cpp:447 msgid "Selection-Remove All" msgstr "Seleção-remover todos" -#: src/slic3r/GUI/Selection.cpp:940 +#: src/slic3r/GUI/Selection.cpp:988 msgid "Scale To Fit" msgstr "Dimensionar para caber" -#: src/slic3r/GUI/Selection.cpp:1477 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Printable Instance" msgstr "Definir instância imprimível" -#: src/slic3r/GUI/Selection.cpp:1477 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Unprintable Instance" msgstr "Definir instância não imprimível" -#: src/slic3r/GUI/SysInfoDialog.cpp:78 +#: src/slic3r/GUI/SysInfoDialog.cpp:90 src/slic3r/GUI/SysInfoDialog.cpp:92 msgid "System Information" msgstr "Informações do sistema" -#: src/slic3r/GUI/SysInfoDialog.cpp:154 +#: src/slic3r/GUI/SysInfoDialog.cpp:177 msgid "Copy to Clipboard" msgstr "Copiar para a Área de Transferência" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 +#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 msgid "Compatible printers" msgstr "Impressoras compatíveis" -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:102 msgid "Select the printers this profile is compatible with." msgstr "Selecione as impressoras com as quais este perfil é compatível." -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 +#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 msgid "Compatible print profiles" msgstr "Perfis de impressão compatíveis" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:108 msgid "Select the print profiles this profile is compatible with." -msgstr "" -"Selecione os perfis de impressão com os quais este perfil é compatível." +msgstr "Selecione os perfis de impressão com os quais este perfil é compatível." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:133 +#: src/slic3r/GUI/Tab.cpp:203 #, c-format msgid "Save current %s" msgstr "Salvar %s atual" -#: src/slic3r/GUI/Tab.cpp:134 +#: src/slic3r/GUI/Tab.cpp:204 msgid "Delete this preset" msgstr "Exclua esta predefinição" -#: src/slic3r/GUI/Tab.cpp:139 +#: src/slic3r/GUI/Tab.cpp:210 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." @@ -5317,465 +6491,441 @@ msgstr "" "Passe o cursor sobre os botões para encontrar mais informações \n" "ou clique neste botão." -#: src/slic3r/GUI/Tab.cpp:241 -msgid "Add a new printer" -msgstr "Adicionar uma nova impressora" +#: src/slic3r/GUI/Tab.cpp:214 +msgid "Click to start a search or use %1% shortcut" +msgstr "Clique para iniciar uma pesquisa ou use o atalho%1%" -#: src/slic3r/GUI/Tab.cpp:953 +#: src/slic3r/GUI/Tab.cpp:1224 +msgid "Detach from system preset" +msgstr "Esta é uma predefinição do sistema" + +#: src/slic3r/GUI/Tab.cpp:1237 +msgid "" +"A copy of the current system preset will be created, which will be detached " +"from the system preset." +msgstr "" +"Uma cópia da predefinição do sistema atual será criada, que será desanexada da " +"predefinição do sistema." + +#: src/slic3r/GUI/Tab.cpp:1238 +msgid "The current custom preset will be detached from the parent system preset." +msgstr "" +"A predefinição personalizada atual será separada da predefinição do sistema " +"padrão." + +#: src/slic3r/GUI/Tab.cpp:1241 +msgid "Modifications to the current profile will be saved." +msgstr "Modificações no perfil atual serão salvas." + +#: src/slic3r/GUI/Tab.cpp:1244 +msgid "" +"This action is not revertable.\n" +"Do you want to proceed?" +msgstr "" +"Esta operação é irreversível.\n" +"Você quer prosseguir?" + +#: src/slic3r/GUI/Tab.cpp:1246 +msgid "Detach preset" +msgstr "Separar predefinição" + +#: src/slic3r/GUI/Tab.cpp:1272 msgid "This is a default preset." msgstr "Esta é uma predefinição padrão." -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:1274 msgid "This is a system preset." msgstr "Esta é uma predefinição do sistema." -#: src/slic3r/GUI/Tab.cpp:957 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "Current preset is inherited from the default preset." msgstr "Predefinição atual é herdada da predefinição padrão." -#: src/slic3r/GUI/Tab.cpp:959 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "Current preset is inherited from" msgstr "Predefinição atual é herdada de" -#: src/slic3r/GUI/Tab.cpp:963 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "It can't be deleted or modified." msgstr "Ele não pode ser excluído ou modificado." -#: src/slic3r/GUI/Tab.cpp:964 +#: src/slic3r/GUI/Tab.cpp:1283 msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" "Todas as modificações devem ser salvas como uma nova predefinição herdada de " "uma presente." -#: src/slic3r/GUI/Tab.cpp:965 +#: src/slic3r/GUI/Tab.cpp:1284 msgid "To do that please specify a new name for the preset." msgstr "Para fazer isso, especifique um novo nome para a predefinição." -#: src/slic3r/GUI/Tab.cpp:969 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "Additional information:" msgstr "Informações adicionais:" -#: src/slic3r/GUI/Tab.cpp:975 +#: src/slic3r/GUI/Tab.cpp:1294 msgid "printer model" msgstr "modelo de impressora" -#: src/slic3r/GUI/Tab.cpp:983 +#: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "perfil de impressão padrão" -#: src/slic3r/GUI/Tab.cpp:986 +#: src/slic3r/GUI/Tab.cpp:1305 msgid "default filament profile" msgstr "perfil de filamento padrão" -#: src/slic3r/GUI/Tab.cpp:1000 +#: src/slic3r/GUI/Tab.cpp:1319 msgid "default SLA material profile" msgstr "perfil de material SLA padrão" -#: src/slic3r/GUI/Tab.cpp:1004 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA print profile" msgstr "perfil de impressão padrão do SLA" -#: src/slic3r/GUI/Tab.cpp:1012 +#: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" -msgstr "Nome customizado da config." +msgstr "nome customizado da config" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1332 msgid "symbolic profile name" -msgstr "nome customizado da config.:" +msgstr "nome customizado da config" -#: src/slic3r/GUI/Tab.cpp:1047 src/slic3r/GUI/Tab.cpp:3600 +#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 msgid "Layers and perimeters" msgstr "Camadas e perímetros" -#: src/slic3r/GUI/Tab.cpp:1052 +#: src/slic3r/GUI/Tab.cpp:1375 msgid "Vertical shells" msgstr "Paredes verticais" -#: src/slic3r/GUI/Tab.cpp:1063 +#: src/slic3r/GUI/Tab.cpp:1386 msgid "Horizontal shells" msgstr "Paredes horizontais" -#: src/slic3r/GUI/Tab.cpp:1064 src/libslic3r/PrintConfig.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 msgid "Solid layers" msgstr "Camadas sólidas" -#: src/slic3r/GUI/Tab.cpp:1068 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Minimum shell thickness" msgstr "Espessura mínima da concha" -#: src/slic3r/GUI/Tab.cpp:1079 +#: src/slic3r/GUI/Tab.cpp:1402 msgid "Quality (slower slicing)" msgstr "Qualidade (fatiamento mais lento)" -#: src/slic3r/GUI/Tab.cpp:1097 +#: src/slic3r/GUI/Tab.cpp:1426 msgid "Reducing printing time" msgstr "Reduzindo o tempo de impressão" -#: src/slic3r/GUI/Tab.cpp:1109 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Skirt and brim" msgstr "Saia e aba" -#: src/slic3r/GUI/Tab.cpp:1126 +#: src/slic3r/GUI/Tab.cpp:1456 msgid "Raft" msgstr "Estrado" -#: src/slic3r/GUI/Tab.cpp:1130 +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Options for support material and raft" msgstr "Opções para material de suporte e estrado" -#: src/slic3r/GUI/Tab.cpp:1145 +#: src/slic3r/GUI/Tab.cpp:1475 msgid "Speed for print moves" msgstr "Velocidade para movimentos de impressão" -#: src/slic3r/GUI/Tab.cpp:1157 +#: src/slic3r/GUI/Tab.cpp:1488 msgid "Speed for non-print moves" msgstr "Velocidade para movimentos não impressos" -#: src/slic3r/GUI/Tab.cpp:1160 +#: src/slic3r/GUI/Tab.cpp:1491 msgid "Modifiers" msgstr "Modificadores" -#: src/slic3r/GUI/Tab.cpp:1163 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Acceleration control (advanced)" msgstr "Controle de aceleração (avançado)" -#: src/slic3r/GUI/Tab.cpp:1170 +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Autospeed (advanced)" msgstr "Velocidade automática (avançado)" -#: src/slic3r/GUI/Tab.cpp:1178 +#: src/slic3r/GUI/Tab.cpp:1509 msgid "Multiple Extruders" msgstr "Extrusoras múltiplas" -#: src/slic3r/GUI/Tab.cpp:1186 +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Ooze prevention" msgstr "Prevenção de vazão" -#: src/slic3r/GUI/Tab.cpp:1204 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Extrusion width" msgstr "Espessura da extrusão" -#: src/slic3r/GUI/Tab.cpp:1214 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Overlap" msgstr "Cobrir" -#: src/slic3r/GUI/Tab.cpp:1217 +#: src/slic3r/GUI/Tab.cpp:1548 msgid "Flow" msgstr "Fluxo" -#: src/slic3r/GUI/Tab.cpp:1226 +#: src/slic3r/GUI/Tab.cpp:1557 msgid "Other" msgstr "Outro" -#: src/slic3r/GUI/Tab.cpp:1229 src/slic3r/GUI/Tab.cpp:3669 +#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 msgid "Output options" msgstr "Opções de saída" -#: src/slic3r/GUI/Tab.cpp:1230 +#: src/slic3r/GUI/Tab.cpp:1561 msgid "Sequential printing" msgstr "Impressão sequencial" -#: src/slic3r/GUI/Tab.cpp:1232 +#: src/slic3r/GUI/Tab.cpp:1563 msgid "Extruder clearance (mm)" msgstr "Folga da extrusora (milímetro)" -#: src/slic3r/GUI/Tab.cpp:1237 src/slic3r/GUI/Tab.cpp:3670 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 msgid "Output file" msgstr "Arquivo de saída" -#: src/slic3r/GUI/Tab.cpp:1244 src/libslic3r/PrintConfig.cpp:1453 +#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 msgid "Post-processing scripts" msgstr "Scripts de pós-processamento" -#: src/slic3r/GUI/Tab.cpp:1250 src/slic3r/GUI/Tab.cpp:1251 -#: src/slic3r/GUI/Tab.cpp:1539 src/slic3r/GUI/Tab.cpp:1540 -#: src/slic3r/GUI/Tab.cpp:2014 src/slic3r/GUI/Tab.cpp:2015 -#: src/slic3r/GUI/Tab.cpp:2130 src/slic3r/GUI/Tab.cpp:2131 -#: src/slic3r/GUI/Tab.cpp:3537 src/slic3r/GUI/Tab.cpp:3538 +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 +#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 msgid "Notes" msgstr "Notas" -#: src/slic3r/GUI/Tab.cpp:1257 src/slic3r/GUI/Tab.cpp:1547 -#: src/slic3r/GUI/Tab.cpp:2021 src/slic3r/GUI/Tab.cpp:2137 -#: src/slic3r/GUI/Tab.cpp:3545 src/slic3r/GUI/Tab.cpp:3675 +#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 msgid "Dependencies" msgstr "Dependências" -#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 -#: src/slic3r/GUI/Tab.cpp:2022 src/slic3r/GUI/Tab.cpp:2138 -#: src/slic3r/GUI/Tab.cpp:3546 src/slic3r/GUI/Tab.cpp:3676 +#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 +#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 msgid "Profile dependencies" msgstr "Dependências de perfil" -#: src/slic3r/GUI/Tab.cpp:1322 src/slic3r/GUI/Tab.cpp:1377 +#: src/slic3r/GUI/Tab.cpp:1669 msgid "Filament Overrides" msgstr "Sobrescrever config. de filamento" -#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1382 -#: src/slic3r/GUI/Tab.cpp:2372 -msgid "Retraction" -msgstr "Retração" - -#: src/slic3r/GUI/Tab.cpp:1432 src/libslic3r/PrintConfig.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:1779 msgid "Temperature" msgstr "Temperatura" -#: src/slic3r/GUI/Tab.cpp:1438 +#: src/slic3r/GUI/Tab.cpp:1785 msgid "Bed" msgstr "Mesa" -#: src/slic3r/GUI/Tab.cpp:1443 +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Cooling" msgstr "Resfriamento" -#: src/slic3r/GUI/Tab.cpp:1444 src/libslic3r/PrintConfig.cpp:1355 -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:2343 msgid "Enable" msgstr "Habilitar" -#: src/slic3r/GUI/Tab.cpp:1455 +#: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Config. da ventoinha" -#: src/slic3r/GUI/Tab.cpp:1464 +#: src/slic3r/GUI/Tab.cpp:1811 msgid "Cooling thresholds" msgstr "Limiares de resfriamento" -#: src/slic3r/GUI/Tab.cpp:1470 +#: src/slic3r/GUI/Tab.cpp:1817 msgid "Filament properties" msgstr "Propriedades de filamento" -#: src/slic3r/GUI/Tab.cpp:1477 +#: src/slic3r/GUI/Tab.cpp:1824 msgid "Print speed override" msgstr "Substituição da velocidade de impressão" -#: src/slic3r/GUI/Tab.cpp:1487 +#: src/slic3r/GUI/Tab.cpp:1834 msgid "Wipe tower parameters" msgstr "Parâmetros da torre de limpeza" -#: src/slic3r/GUI/Tab.cpp:1490 +#: src/slic3r/GUI/Tab.cpp:1837 msgid "Toolchange parameters with single extruder MM printers" msgstr "" "Parâmetros de mudança de ferramenta com impressoras de multi material com " "apenas uma extrusora" -#: src/slic3r/GUI/Tab.cpp:1504 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Ramming settings" msgstr "Config. de Ramming" -#: src/slic3r/GUI/Tab.cpp:1526 src/slic3r/GUI/Tab.cpp:1977 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Custom G-code" msgstr "G-code customizado" -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1978 -#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 msgid "Start G-code" msgstr "G-code de início" -#: src/slic3r/GUI/Tab.cpp:1533 src/slic3r/GUI/Tab.cpp:1984 -#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 +#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 msgid "End G-code" msgstr "G-code de finalização" -#: src/slic3r/GUI/Tab.cpp:1590 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Volumetric flow hints not available" msgstr "Dicas de fluxo volumétrico não disponíveis" -#: src/slic3r/GUI/Tab.cpp:1676 src/slic3r/GUI/Tab.cpp:1917 -msgid "Test" -msgstr "Teste" - -#: src/slic3r/GUI/Tab.cpp:1685 -msgid "Could not get a valid Printer Host reference" -msgstr "Não foi possível obter uma referência de host de impressora válida" - -#: src/slic3r/GUI/Tab.cpp:1691 src/slic3r/GUI/Tab.cpp:1930 -msgid "Success!" -msgstr "Sucesso!" - -#: src/slic3r/GUI/Tab.cpp:1711 +#: src/slic3r/GUI/Tab.cpp:2026 msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." +"Note: All parameters from this group are moved to the Physical Printer " +"settings (see changelog).\n" +"\n" +"A new Physical Printer profile is created by clicking on the \"cog\" icon " +"right of the Printer profiles combo box, by selecting the \"add or remove " +"printers\" item in the Printer combo box. The Physical Printer profile editor " +"opens also when clicking on the \"cog\" icon in the Printer settings tab. The " +"Physical Printer profiles are being stored into PrusaSlicer/physical_printer " +"directory." msgstr "" -"O arquivo HTTPS CA é opcional. Só é necessário se você usar HTTPS com um " -"certificado auto-assinado." +"Nota: Todos os parâmetros deste grupo são movidos para as configurações da " +"Impressora Física (consulte o changelog).\n" +"\n" +"Um novo perfil de impressora física é criado clicando no ícone \"engrenagem\" " +"à direita da caixa de combinação Perfis de impressora, selecionando o item " +"\"adicionar ou remover impressoras\" na caixa de combinação Impressora. O " +"editor de perfis físicos da impressora também é aberto ao clicar no ícone " +"\"engrenagem\" na guia Configurações da impressora. Os perfis de impressora " +"física estão sendo armazenados no diretório PrusaSlicer / physical_printer." -#: src/slic3r/GUI/Tab.cpp:1726 -msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "" -"Arquivos de certificado (*. CRT, *. pem) | *. CRT; *. pem | Todos os " -"arquivos | *. *" - -#: src/slic3r/GUI/Tab.cpp:1727 -msgid "Open CA certificate file" -msgstr "Abra o arquivo de certificado da CA" - -#: src/slic3r/GUI/Tab.cpp:1754 src/libslic3r/PrintConfig.cpp:111 -msgid "HTTPS CA File" -msgstr "Arquivo de CA HTTPS" - -#: src/slic3r/GUI/Tab.cpp:1755 -#, c-format -msgid "" -"On this system, %s uses HTTPS certificates from the system Certificate Store " -"or Keychain." -msgstr "" -"Neste sistema, %s usa certificados HTTPS do sistema Certificate Store ou " -"keychain." - -#: src/slic3r/GUI/Tab.cpp:1756 -msgid "" -"To use a custom CA file, please import your CA file into Certificate Store / " -"Keychain." -msgstr "" -"Para usar um arquivo de CA personalizado, importe seu arquivo de CA para o " -"repositório de certificados/chaveiro." - -#: src/slic3r/GUI/Tab.cpp:1799 src/slic3r/GUI/Tab.cpp:2043 +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 msgid "Size and coordinates" msgstr "Tamanho e coordenadas" -#: src/slic3r/GUI/Tab.cpp:1804 src/slic3r/GUI/Tab.cpp:2048 -#: src/slic3r/GUI/Tab.cpp:3178 -msgid "Set" -msgstr "Definir" - -#: src/slic3r/GUI/Tab.cpp:1836 +#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "Capacidades" -#: src/slic3r/GUI/Tab.cpp:1841 +#: src/slic3r/GUI/Tab.cpp:2073 msgid "Number of extruders of the printer." msgstr "Número de extrusoras da impressora." -#: src/slic3r/GUI/Tab.cpp:1869 +#: src/slic3r/GUI/Tab.cpp:2101 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" -"Do you want to change the diameter for all extruders to first extruder " -"nozzle diameter value?" +"Do you want to change the diameter for all extruders to first extruder nozzle " +"diameter value?" msgstr "" "A extrusora multi material é selecionada, \n" "e todas as extrusoras devem ter o mesmo diâmetro.\n" "Você quer mudar o diâmetro para todas as extrusoras ao primeiro valor do " "diâmetro da ponteira da extrusora?" -#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2342 -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "Nozzle diameter" msgstr "Diâmetro do bico" -#: src/slic3r/GUI/Tab.cpp:1902 -msgid "USB/Serial connection" -msgstr "Conexão USB/serial" - -#: src/slic3r/GUI/Tab.cpp:1903 src/libslic3r/PrintConfig.cpp:1661 -msgid "Serial port" -msgstr "Porte Serial" - -#: src/slic3r/GUI/Tab.cpp:1908 -msgid "Rescan serial ports" -msgstr "Portas seriais de Rescan" - -#: src/slic3r/GUI/Tab.cpp:1930 -msgid "Connection to printer works correctly." -msgstr "A ligação à impressora funciona corretamente." - -#: src/slic3r/GUI/Tab.cpp:1933 -msgid "Connection failed." -msgstr "A conexão falhou." - -#: src/slic3r/GUI/Tab.cpp:1946 src/slic3r/GUI/Tab.cpp:2125 -msgid "Print Host upload" -msgstr "Upload do host de impressão" - -#: src/slic3r/GUI/Tab.cpp:1990 src/libslic3r/PrintConfig.cpp:153 +#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 msgid "Before layer change G-code" msgstr "Antes da mudança de camada G-code" -#: src/slic3r/GUI/Tab.cpp:1996 src/libslic3r/PrintConfig.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 msgid "After layer change G-code" msgstr "Após a mudança da camada do G-code" -#: src/slic3r/GUI/Tab.cpp:2002 src/libslic3r/PrintConfig.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 msgid "Tool change G-code" msgstr "G-code de troca de ferramenta" -#: src/slic3r/GUI/Tab.cpp:2008 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Between objects G-code (for sequential printing)" msgstr "G-code entre objetos (para impressão sequencial)" -#: src/slic3r/GUI/Tab.cpp:2080 +#: src/slic3r/GUI/Tab.cpp:2203 +msgid "Color Change G-code" +msgstr "G-code de troca de cor" + +#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +msgid "Pause Print G-code" +msgstr "Pausa impressão ou código G personalizado" + +#: src/slic3r/GUI/Tab.cpp:2215 +msgid "Template Custom G-code" +msgstr "Modelo de G-code customizado" + +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Display" msgstr "Exibição" -#: src/slic3r/GUI/Tab.cpp:2095 +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Tilt" msgstr "Inclinar" -#: src/slic3r/GUI/Tab.cpp:2096 +#: src/slic3r/GUI/Tab.cpp:2264 msgid "Tilt time" msgstr "Tempo de inclinação" -#: src/slic3r/GUI/Tab.cpp:2102 src/slic3r/GUI/Tab.cpp:3521 +#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 msgid "Corrections" msgstr "Correções" -#: src/slic3r/GUI/Tab.cpp:2119 src/slic3r/GUI/Tab.cpp:3517 +#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 msgid "Exposure" msgstr "Exposição" -#: src/slic3r/GUI/Tab.cpp:2190 src/slic3r/GUI/Tab.cpp:2275 -#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 -#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 -#: src/libslic3r/PrintConfig.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 +#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 +#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 msgid "Machine limits" msgstr "Limites da máquina" -#: src/slic3r/GUI/Tab.cpp:2204 +#: src/slic3r/GUI/Tab.cpp:2371 msgid "Values in this column are for Normal mode" msgstr "Valores nesta coluna são para o modo normal" -#: src/slic3r/GUI/Tab.cpp:2205 -msgid "Normal" -msgstr "Normal" - -#: src/slic3r/GUI/Tab.cpp:2210 +#: src/slic3r/GUI/Tab.cpp:2377 msgid "Values in this column are for Stealth mode" msgstr "Valores nesta coluna são para o modo furtivo" -#: src/slic3r/GUI/Tab.cpp:2211 -msgid "Stealth" -msgstr "Furtivo" - -#: src/slic3r/GUI/Tab.cpp:2219 +#: src/slic3r/GUI/Tab.cpp:2386 msgid "Maximum feedrates" msgstr "Velocidade máxima de alimentação" -#: src/slic3r/GUI/Tab.cpp:2224 +#: src/slic3r/GUI/Tab.cpp:2391 msgid "Maximum accelerations" msgstr "Acelerações máximas" -#: src/slic3r/GUI/Tab.cpp:2231 +#: src/slic3r/GUI/Tab.cpp:2398 msgid "Jerk limits" msgstr "Limites de empurrão" -#: src/slic3r/GUI/Tab.cpp:2236 +#: src/slic3r/GUI/Tab.cpp:2403 msgid "Minimum feedrates" msgstr "Velocidades alimentação mínimos" -#: src/slic3r/GUI/Tab.cpp:2300 src/slic3r/GUI/Tab.cpp:2308 +#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 msgid "Single extruder MM setup" msgstr "Config. de extrusora multi material" -#: src/slic3r/GUI/Tab.cpp:2309 +#: src/slic3r/GUI/Tab.cpp:2476 msgid "Single extruder multimaterial parameters" msgstr "Parâmetros para extrusora única multimaterial" -#: src/slic3r/GUI/Tab.cpp:2340 +#: src/slic3r/GUI/Tab.cpp:2507 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -5783,31 +6933,30 @@ msgstr "" "Esta é uma única impressora multimaterial extrusora, diâmetros de todas as " "extrusoras será definido para o novo valor. Você quer prosseguir?" -#: src/slic3r/GUI/Tab.cpp:2364 +#: src/slic3r/GUI/Tab.cpp:2531 msgid "Layer height limits" msgstr "Limites de altura da camada" -#: src/slic3r/GUI/Tab.cpp:2369 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Position (for multi-extruder printers)" msgstr "Posição (para impressoras multiextrusoras)" -#: src/slic3r/GUI/Tab.cpp:2375 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Only lift Z" msgstr "Apenas elevar Z" -#: src/slic3r/GUI/Tab.cpp:2388 +#: src/slic3r/GUI/Tab.cpp:2555 msgid "" -"Retraction when tool is disabled (advanced settings for multi-extruder " -"setups)" +"Retraction when tool is disabled (advanced settings for multi-extruder setups)" msgstr "" "Retração quando a ferramenta está desativada (config. avançadas para " "instalações multiextrusoras)" -#: src/slic3r/GUI/Tab.cpp:2396 +#: src/slic3r/GUI/Tab.cpp:2564 msgid "Reset to Filament Color" msgstr "Restabelecer cor do filamento" -#: src/slic3r/GUI/Tab.cpp:2577 +#: src/slic3r/GUI/Tab.cpp:2731 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -5817,119 +6966,130 @@ msgstr "" "\n" "Devo desativá-lo, a fim de permitir a retração de firmware?" -#: src/slic3r/GUI/Tab.cpp:2579 +#: src/slic3r/GUI/Tab.cpp:2733 msgid "Firmware Retraction" msgstr "Retração do firmware" -#: src/slic3r/GUI/Tab.cpp:2921 -#, c-format -msgid "Default preset (%s)" -msgstr "Predefinição padrão ( %s)" +#: src/slic3r/GUI/Tab.cpp:3323 +msgid "Detached" +msgstr "Separado" -#: src/slic3r/GUI/Tab.cpp:2922 -#, c-format -msgid "Preset (%s)" -msgstr "Predefinição ( %s)" - -#: src/slic3r/GUI/Tab.cpp:2939 -msgid "has the following unsaved changes:" -msgstr "tem as seguintes alterações não salvas:" - -#: src/slic3r/GUI/Tab.cpp:2942 -msgid "is not compatible with printer" -msgstr "não é compatível com a impressora" - -#: src/slic3r/GUI/Tab.cpp:2943 -msgid "is not compatible with print profile" -msgstr "não é compatível com o perfil de impressão" - -#: src/slic3r/GUI/Tab.cpp:2945 -msgid "and it has the following unsaved changes:" -msgstr "e tem as seguintes alterações não salvas:" - -#: src/slic3r/GUI/Tab.cpp:2949 -msgid "Unsaved Changes" -msgstr "Alterações não salvas" - -#: src/slic3r/GUI/Tab.cpp:3047 -msgctxt "PresetName" -msgid "%1% - Copy" -msgstr "%1% - cópia" - -#: src/slic3r/GUI/Tab.cpp:3070 -msgid "The supplied name is empty. It can't be saved." -msgstr "O nome fornecido está vazio. Não pode ser salvo." - -#: src/slic3r/GUI/Tab.cpp:3075 -msgid "Cannot overwrite a system profile." -msgstr "Não é possível substituir um perfil de sistema." - -#: src/slic3r/GUI/Tab.cpp:3079 -msgid "Cannot overwrite an external profile." -msgstr "Não é possível substituir um perfil externo." - -#: src/slic3r/GUI/Tab.cpp:3084 -msgid "Preset with name \"%1%\" already exists." -msgstr "Predefinido com nome \"%1%\" já existe." - -#: src/slic3r/GUI/Tab.cpp:3085 -msgid "Replace?" -msgstr "Substituir?" - -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "remover" -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "delete" msgstr "excluir" -#. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3125 +#: src/slic3r/GUI/Tab.cpp:3392 +msgid "" +"Are you sure you want to delete \"%1%\" preset from the physical printer \"%2%" +"\"?" +msgstr "" +"Tem certeza de que deseja excluir predefinição \"%1%\" da impressora física " +"\"%2%\"?" + +#: src/slic3r/GUI/Tab.cpp:3404 +msgid "Next physical printer(s) has/have selected preset" +msgstr "Impressora física seguinte tem predefinição selecionada" + +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "" +"Note, that selected preset will be deleted from this/those printer(s) too." +msgstr "" +"Note que a predefinição selecionada será deletada desta(s) impressora(s) também" + +#: src/slic3r/GUI/Tab.cpp:3412 +msgid "Next physical printer(s) has/have one and only selected preset" +msgstr "Impressora física seguinte tem uma única predefinição selecionada" + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "" +"Note, that this/those printer(s) will be deleted after deleting of the " +"selected preset." +msgstr "" +"Note que esta(s) impressora(s) serão excluídas após a exclusão da predefinição " +"selecionada." + +#: src/slic3r/GUI/Tab.cpp:3420 msgid "Are you sure you want to %1% the selected preset?" msgstr "Tem certeza de que deseja %1% da predefinição selecionada?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3128 +#: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" msgstr "%1% Predefinição" -#: src/slic3r/GUI/Tab.cpp:3254 +#: src/slic3r/GUI/Tab.cpp:3435 +msgid "It's a last for this physical printer. We can't delete it" +msgstr "É o último para esta impressora física. Não podemos deletar" + +#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 +msgid "Set" +msgstr "Definir" + +#: src/slic3r/GUI/Tab.cpp:3660 +msgid "Machine limits will be emitted to G-code and used to estimate print time." +msgstr "" +"Os limites da máquina serão emitidos para o G-code e usados o para estimar o " +"tempo de impressão." + +#: src/slic3r/GUI/Tab.cpp:3663 +msgid "" +"Machine limits will NOT be emitted to G-code, however they will be used to " +"estimate print time, which may therefore not be accurate as the printer may " +"apply a different set of machine limits." +msgstr "" +"Os limites da máquina NÃO serão emitidos para o código G, no entanto, eles " +"serão usados para estimar o tempo de impressão, que pode, portanto, não ser " +"preciso, pois a impressora pode aplicar um conjunto diferente de limites da " +"máquina." + +#: src/slic3r/GUI/Tab.cpp:3667 +msgid "" +"Machine limits are not set, therefore the print time estimate may not be " +"accurate." +msgstr "" +"Os limites da máquina não são definidos, portanto, a estimativa do tempo de " +"impressão pode não ser precisa." + +#: src/slic3r/GUI/Tab.cpp:3689 msgid "LOCKED LOCK" msgstr "CADEADO FECHADO" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3256 +#: src/slic3r/GUI/Tab.cpp:3691 msgid "" -"indicates that the settings are the same as the system (or default) values " -"for the current option group" +"indicates that the settings are the same as the system (or default) values for " +"the current option group" msgstr "" -"indica que as config. são as mesmas que os valores do sistema (ou padrão) " -"para o grupo de opções atual" +"indica que as config. são as mesmas que os valores do sistema (ou padrão) para " +"o grupo de opções atual" -#: src/slic3r/GUI/Tab.cpp:3258 +#: src/slic3r/GUI/Tab.cpp:3693 msgid "UNLOCKED LOCK" msgstr "CADEADO ABERTO" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3260 +#: src/slic3r/GUI/Tab.cpp:3695 msgid "" -"indicates that some settings were changed and are not equal to the system " -"(or default) values for the current option group.\n" -"Click the UNLOCKED LOCK icon to reset all settings for current option group " -"to the system (or default) values." +"indicates that some settings were changed and are not equal to the system (or " +"default) values for the current option group.\n" +"Click the UNLOCKED LOCK icon to reset all settings for current option group to " +"the system (or default) values." msgstr "" "indica que algumas config. foram alteradas e não são iguais aos valores do " "sistema (ou padrão) para o grupo de opções atual.\n" -"Clique no ícone DESBLOQUEAR para redefinir todas as config. do grupo de " -"opções atual para os valores do sistema (ou padrão)." +"Clique no ícone DESBLOQUEAR para redefinir todas as config. do grupo de opções " +"atual para os valores do sistema (ou padrão)." -#: src/slic3r/GUI/Tab.cpp:3265 +#: src/slic3r/GUI/Tab.cpp:3700 msgid "WHITE BULLET" msgstr "PONTO BRANCO" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3267 +#: src/slic3r/GUI/Tab.cpp:3702 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -5938,12 +7098,12 @@ msgstr "" "padrão),\n" "para o botão direito: indica que as config. não foram modificadas." -#: src/slic3r/GUI/Tab.cpp:3270 +#: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "REDEFINIR" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3272 +#: src/slic3r/GUI/Tab.cpp:3707 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -5955,33 +7115,33 @@ msgstr "" "Clique no ícone REDEFINIR para redefinir todas as config. do grupo de opções " "atual para a última predefinição salva." -#: src/slic3r/GUI/Tab.cpp:3282 +#: src/slic3r/GUI/Tab.cpp:3717 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" msgstr "" -"O ícone CADEADO FECHADO indica que as config. são as mesmas que os valores " -"do sistema (ou padrão) para o grupo de opções atual" +"O ícone CADEADO FECHADO indica que as config. são as mesmas que os valores do " +"sistema (ou padrão) para o grupo de opções atual" -#: src/slic3r/GUI/Tab.cpp:3284 +#: src/slic3r/GUI/Tab.cpp:3719 msgid "" -"UNLOCKED LOCK icon indicates that some settings were changed and are not " -"equal to the system (or default) values for the current option group.\n" +"UNLOCKED LOCK icon indicates that some settings were changed and are not equal " +"to the system (or default) values for the current option group.\n" "Click to reset all settings for current option group to the system (or " "default) values." msgstr "" -"O ícone de CADEADO ABERTO indica que algumas config. foram alteradas e não " -"são iguais aos valores do sistema (ou padrão) para o grupo de opções atual.\n" +"O ícone de CADEADO ABERTO indica que algumas config. foram alteradas e não são " +"iguais aos valores do sistema (ou padrão) para o grupo de opções atual.\n" "Clique para redefinir todas as config. para o grupo de opções atual para os " "valores do sistema (ou padrão)." -#: src/slic3r/GUI/Tab.cpp:3287 +#: src/slic3r/GUI/Tab.cpp:3722 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" "O ícone PONTO BRANCO indica uma predefinição que não é do sistema (ou não " "predefinida)." -#: src/slic3r/GUI/Tab.cpp:3290 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -5989,19 +7149,19 @@ msgstr "" "O ícone PONTO BRANCO indica que as config. são as mesmas da última " "predefinição salva para o grupo de opções atual." -#: src/slic3r/GUI/Tab.cpp:3292 +#: src/slic3r/GUI/Tab.cpp:3727 msgid "" -"BACK ARROW icon indicates that the settings were changed and are not equal " -"to the last saved preset for the current option group.\n" +"BACK ARROW icon indicates that the settings were changed and are not equal to " +"the last saved preset for the current option group.\n" "Click to reset all settings for the current option group to the last saved " "preset." msgstr "" -"O ícone de REDEFINIR indica que as config. foram alteradas e não são iguais " -"à última predefinição salva para o grupo de opções atual.\n" -"Clique para redefinir todas as config. do grupo de opções atual para a " -"última predefinição salva." +"O ícone de REDEFINIR indica que as config. foram alteradas e não são iguais à " +"última predefinição salva para o grupo de opções atual.\n" +"Clique para redefinir todas as config. do grupo de opções atual para a última " +"predefinição salva." -#: src/slic3r/GUI/Tab.cpp:3298 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -6009,7 +7169,7 @@ msgstr "" "O ícone CADEADO FECHADO indica que o valor é o mesmo que o valor do sistema " "(ou padrão)." -#: src/slic3r/GUI/Tab.cpp:3299 +#: src/slic3r/GUI/Tab.cpp:3734 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -6019,7 +7179,7 @@ msgstr "" "valor do sistema (ou padrão).\n" "Clique para redefinir o valor atual para o valor do sistema (ou padrão)." -#: src/slic3r/GUI/Tab.cpp:3305 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -6027,7 +7187,7 @@ msgstr "" "O ícone PONTO BRANCO indica que o valor é o mesmo da última predefinição " "guardada." -#: src/slic3r/GUI/Tab.cpp:3306 +#: src/slic3r/GUI/Tab.cpp:3741 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -6037,59 +7197,188 @@ msgstr "" "predefinição salva.\n" "Clique para redefinir o valor atual para a última predefinição salva." -#. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3419 -#, c-format -msgid "Save %s as:" -msgstr "Salvar %s como:" - -#: src/slic3r/GUI/Tab.cpp:3463 -msgid "the following suffix is not allowed:" -msgstr "o sufixo seguinte não é permitido:" - -#: src/slic3r/GUI/Tab.cpp:3467 -msgid "The supplied name is not available." -msgstr "O nome fornecido não está disponível." - -#: src/slic3r/GUI/Tab.cpp:3480 src/slic3r/GUI/Tab.cpp:3482 +#: src/slic3r/GUI/Tab.cpp:3894 src/slic3r/GUI/Tab.cpp:3896 msgid "Material" msgstr "Material" -#: src/slic3r/GUI/Tab.cpp:3610 +#: src/slic3r/GUI/Tab.cpp:4018 msgid "Support head" msgstr "Cabeça de suporte" -#: src/slic3r/GUI/Tab.cpp:3615 +#: src/slic3r/GUI/Tab.cpp:4023 msgid "Support pillar" msgstr "Pilar de suporte" -#: src/slic3r/GUI/Tab.cpp:3631 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Connection of the support sticks and junctions" msgstr "Conexão das varas de suporte e junções" -#: src/slic3r/GUI/Tab.cpp:3636 +#: src/slic3r/GUI/Tab.cpp:4051 msgid "Automatic generation" msgstr "Geração Automática" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 +#: src/slic3r/GUI/Tab.cpp:4125 +msgid "" +"\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" +"To enable \"%1%\", please switch off \"%2%\"" +msgstr "" +"\"% 1%\" está desabilitado porque \"% 2%\" está ativado na categoria \"% 3%" +"\".\n" +"Para habilitar \"% 1%\", desligue \"% 2%\"" + +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:2917 +msgid "Object elevation" +msgstr "Elevação do objeto" + +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 +msgid "Pad around object" +msgstr "Pad em torno do objeto" + +#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 msgid "Print Settings" msgstr "Config. de impressão" -#: src/slic3r/GUI/Tab.hpp:355 +#: src/slic3r/GUI/Tab.hpp:409 msgid "Filament Settings" msgstr "Config. de filamento" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:453 msgid "Printer Settings" msgstr "Config. da impressora" -#: src/slic3r/GUI/Tab.hpp:416 +#: src/slic3r/GUI/Tab.hpp:486 msgid "Material Settings" msgstr "Config. de material" -#: src/slic3r/GUI/Tab.hpp:443 -msgid "Save preset" -msgstr "Salvar predefinição" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:137 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:146 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:845 +msgid "Undef" +msgstr "Indef" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 +msgid "Closing PrusaSlicer: Unsaved Changes" +msgstr "Versão mínima do PrusaSlicer" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 +msgid "Switching Presets: Unsaved Changes" +msgstr "Alterando Predefinições: Alterações não salvas" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:608 +msgid "Old Value" +msgstr "Valor Antigo" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 +msgid "New Value" +msgstr "Valor Novo" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:640 +msgid "Transfer" +msgstr "Transferir" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 +msgid "Discard" +msgstr "Descartar" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:642 +msgid "Save" +msgstr "Salvar" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:662 +msgid "PrusaSlicer will remember your action." +msgstr "PrusaSlicer se lembrará de sua ação." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:664 +msgid "" +"You will not be asked about the unsaved changes the next time you close " +"PrusaSlicer." +msgstr "" +"Você não será questionado sobre as alterações não salvas na próxima vez que " +"fechar o PrusaSlicer." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +msgid "" +"You will not be asked about the unsaved changes the next time you switch a " +"preset." +msgstr "" +"Você não será questionado sobre as alterações não salvas na próxima vez que " +"alternar uma predefinição." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +msgid "" +"Visit \"Preferences\" and check \"%1%\"\n" +"to be asked about unsaved changes again." +msgstr "" +"Visite \"Preferências\" e marque \"%1%\"\n" +"para ser questionado sobre alterações não salvas novamente." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +msgid "PrusaSlicer: Don't ask me again" +msgstr "PrusaSlicer: Não me pergunte de novo" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:735 +msgid "Some fields are too long to fit. Right mouse click reveals the full text." +msgstr "" +"Alguns campos são muito longos para caber. Clique com o botão direito do mouse " +"para revelar o texto completo." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All modified options will be reverted." +msgstr "Todos os objetos serão removidos, continuar?" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Save the selected options." +msgstr "Remover o objeto selecionado." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Transfer the selected options to the newly selected presets." +msgstr "" +"Transfira as opções selecionadas para as predefinições recém-selecionados." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 +msgid "Save the selected options to preset \"%1%\"." +msgstr "Salve as opções selecionadas para predefinir \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:745 +msgid "Transfer the selected options to the newly selected preset \"%1%\"." +msgstr "" +"Transfira as opções selecionadas para a predefinição recém-selecionada \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1004 +msgid "The following presets were modified:" +msgstr "Os presets seguintes foram modificados:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 +msgid "Preset \"%1%\" has the following unsaved changes:" +msgstr "\"%1%\"Tem as seguintes alterações não salvas:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1013 +msgid "" +"Preset \"%1%\" is not compatible with the new printer profile and it has the " +"following unsaved changes:" +msgstr "" +"A predefinição \"%1%\" não é compatível com o novo perfil de impressora e " +"possui as seguintes alterações não salvas:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1014 +msgid "" +"Preset \"%1%\" is not compatible with the new print profile and it has the " +"following unsaved changes:" +msgstr "" +"A predefinição \"%1%\" não é compatível com o novo perfil de impressão e " +"possui as seguintes alterações não salvas:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1061 +msgid "Extruders count" +msgstr "Contagem de extrusoras" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1177 +msgid "Old value" +msgstr "Valor padrão" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 +msgid "New value" +msgstr "Novo Valor" #: src/slic3r/GUI/UpdateDialogs.cpp:38 msgid "Update available" @@ -6127,7 +7416,7 @@ msgstr "Não notifique mais sobre novas versões" #: src/slic3r/GUI/UpdateDialogs.cpp:89 src/slic3r/GUI/UpdateDialogs.cpp:266 msgid "Configuration update" -msgstr "Atualização de config." +msgstr "Atualização de config" #: src/slic3r/GUI/UpdateDialogs.cpp:89 msgid "Configuration update is available" @@ -6137,8 +7426,8 @@ msgstr "A atualização de config. está disponível" msgid "" "Would you like to install it?\n" "\n" -"Note that a full configuration snapshot will be created first. It can then " -"be restored at any time should there be a problem with the new version.\n" +"Note that a full configuration snapshot will be created first. It can then be " +"restored at any time should there be a problem with the new version.\n" "\n" "Updated configuration bundles:" msgstr "" @@ -6168,16 +7457,16 @@ msgstr "Você deve instalar uma atualização de configuração." msgid "" "%s will now start updates. Otherwise it won't be able to start.\n" "\n" -"Note that a full configuration snapshot will be created first. It can then " -"be restored at any time should there be a problem with the new version.\n" +"Note that a full configuration snapshot will be created first. It can then be " +"restored at any time should there be a problem with the new version.\n" "\n" "Updated configuration bundles:" msgstr "" "%s agora iniciará atualizações. Caso contrário, não será capaz de começar.\n" "\n" -"Observe que um instantâneo de configuração completo será criado primeiro. " -"Ele pode então ser restaurado a qualquer momento caso haja um problema com a " -"nova versão.\n" +"Observe que um instantâneo de configuração completo será criado primeiro. Ele " +"pode então ser restaurado a qualquer momento caso haja um problema com a nova " +"versão.\n" "\n" "Pacotes de configuração atualizados:" @@ -6196,8 +7485,8 @@ msgstr "%s config. é incompatível" msgid "" "This version of %s is not compatible with currently installed configuration " "bundles.\n" -"This probably happened as a result of running an older %s after using a " -"newer one.\n" +"This probably happened as a result of running an older %s after using a newer " +"one.\n" "\n" "You may either exit %s and try again with a newer version, or you may re-run " "the initial configuration. Doing so will create a backup snapshot of the " @@ -6208,10 +7497,9 @@ msgstr "" "Isso provavelmente aconteceu como resultado da execução de um %s mais antigo " "depois de usar um mais recente.\n" "\n" -"Você pode sair %s e tente novamente com uma versão mais recente, ou você " -"pode executar novamente a config. inicial. Isso criará um instantâneo de " -"backup da config. existente antes de instalar os arquivos compatíveis com " -"este %s." +"Você pode sair %s e tente novamente com uma versão mais recente, ou você pode " +"executar novamente a config. inicial. Isso criará um instantâneo de backup da " +"config. existente antes de instalar os arquivos compatíveis com este %s." #: src/slic3r/GUI/UpdateDialogs.cpp:225 #, c-format @@ -6233,10 +7521,10 @@ msgid "" "\n" "So called 'System presets' have been introduced, which hold the built-in " "default settings for various printers. These System presets cannot be " -"modified, instead, users now may create their own presets inheriting " -"settings from one of the System presets.\n" -"An inheriting preset may either inherit a particular value from its parent " -"or override it with a customized value.\n" +"modified, instead, users now may create their own presets inheriting settings " +"from one of the System presets.\n" +"An inheriting preset may either inherit a particular value from its parent or " +"override it with a customized value.\n" "\n" "Please proceed with the %s that follows to set up the new presets and to " "choose whether to enable automatic preset updates." @@ -6245,9 +7533,9 @@ msgstr "" "\n" "Assim chamado ' Predefinições do sistema ' foram introduzidas, que mantêm as " "config. padrão internas para várias impressoras. Essas predefinições do " -"sistema não podem ser modificadas, em vez disso, os usuários agora podem " -"criar suas próprias predefinições herdando as config. de uma das " -"predefinições do sistema.\n" +"sistema não podem ser modificadas, em vez disso, os usuários agora podem criar " +"suas próprias predefinições herdando as config. de uma das predefinições do " +"sistema.\n" "Uma predefinição herdada pode herdar um valor específico de seu pai ou " "substituí-lo por um valor personalizado.\n" "\n" @@ -6279,22 +7567,22 @@ msgstr "Personalização de Ramming" #: src/slic3r/GUI/WipeTowerDialog.cpp:41 msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" +"extruder MM printer. Its purpose is to properly shape the end of the unloaded " +"filament so it does not prevent insertion of the new filament and can itself " +"be reinserted later. This phase is important and different materials can " +"require different extrusion speeds to get the good shape. For this reason, the " +"extrusion rates during ramming are adjustable.\n" "\n" "This is an expert-level setting, incorrect adjustment will likely lead to " "jams, extruder wheel grinding into filament etc." msgstr "" -"O Ramming denota a extrusão rápida apenas antes que uma mudança da " -"ferramenta em uma única-extrusora a impressora de multifilamentos Sua " -"finalidade é moldar corretamente a extremidade do filamento descarregado " -"assim que não impede a inserção do filamento novo e pode próprio ser " -"reintroduzido mais tarde. Esta fase é importante e os materiais diferentes " -"podem exigir velocidades diferentes da extrusão para começ a boa forma. Por " -"esta razão, as taxas de extrusão durante a batendo são ajustáveis.\n" +"O Ramming denota a extrusão rápida apenas antes que uma mudança da ferramenta " +"em uma única-extrusora a impressora de multifilamentos Sua finalidade é moldar " +"corretamente a extremidade do filamento descarregado assim que não impede a " +"inserção do filamento novo e pode próprio ser reintroduzido mais tarde. Esta " +"fase é importante e os materiais diferentes podem exigir velocidades " +"diferentes da extrusão para começ a boa forma. Por esta razão, as taxas de " +"extrusão durante a batendo são ajustáveis.\n" "\n" "Esta é uma config. de nível especialista, ajuste incorreto provavelmente " "levará a compotas, roda extrusora moagem em filamento etc." @@ -6321,8 +7609,7 @@ msgstr "Torre de limpeza - Ajuste de volume de purga" #: src/slic3r/GUI/WipeTowerDialog.cpp:254 msgid "" -"Here you can adjust required purging volume (mm³) for any given pair of " -"tools." +"Here you can adjust required purging volume (mm³) for any given pair of tools." msgstr "" "Aqui você pode ajustar o volume de purga necessário (mm ³) para qualquer par " "dado de ferramentas." @@ -6348,8 +7635,8 @@ msgid "" "Total purging volume is calculated by summing two values below, depending on " "which tools are loaded/unloaded." msgstr "" -"O volume de purga total é calculado somando-se dois valores abaixo, " -"dependendo de quais ferramentas são carregadas/descarregadas." +"O volume de purga total é calculado somando-se dois valores abaixo, dependendo " +"de quais ferramentas são carregadas/descarregadas." #: src/slic3r/GUI/WipeTowerDialog.cpp:286 msgid "Volume to purge (mm³) when the filament is being" @@ -6361,8 +7648,7 @@ msgstr "De" #: src/slic3r/GUI/WipeTowerDialog.cpp:365 msgid "" -"Switching to simple settings will discard changes done in the advanced " -"mode!\n" +"Switching to simple settings will discard changes done in the advanced mode!\n" "\n" "Do you want to proceed?" msgstr "" @@ -6379,17 +7665,17 @@ msgstr "Mostrar config. simplificadas" msgid "Show advanced settings" msgstr "Mostrar opções avançadas" -#: src/slic3r/GUI/wxExtensions.cpp:706 +#: src/slic3r/GUI/wxExtensions.cpp:623 #, c-format msgid "Switch to the %s mode" msgstr "Mude para o modo %s" -#: src/slic3r/GUI/wxExtensions.cpp:707 +#: src/slic3r/GUI/wxExtensions.cpp:624 #, c-format msgid "Current mode is %s" msgstr "O modo atual é %s" -#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:69 +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:68 #, c-format msgid "Mismatched type of print host: %s" msgstr "Tipo incompatível de host de impressão: %s" @@ -6461,7 +7747,7 @@ msgid "Model fixing" msgstr "Fixação do modelo" #: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." +msgid "Exporting model" msgstr "Exportando o modelo..." #: src/slic3r/Utils/FixModelByWin10.cpp:368 @@ -6515,8 +7801,7 @@ msgstr "Upload não ativado no cartão FlashAir." #: src/slic3r/Utils/FlashAir.cpp:68 msgid "Connection to FlashAir works correctly and upload is enabled." -msgstr "" -"A conexão com o FlashAir funciona corretamente e o upload está ativado." +msgstr "A conexão com o FlashAir funciona corretamente e o upload está ativado." #: src/slic3r/Utils/FlashAir.cpp:74 msgid "Could not connect to FlashAir" @@ -6524,188 +7809,92 @@ msgstr "Não foi possível conectar-se ao FlashAir" #: src/slic3r/Utils/FlashAir.cpp:76 msgid "" -"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " -"is required." +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function is " +"required." msgstr "" -"Nota: O FlashAir com firmware 2.00.02 ou função de upload mais nova e " -"ativada é necessário." +"Nota: O FlashAir com firmware 2.00.02 ou função de upload mais nova e ativada " +"é necessário." -#: src/slic3r/Utils/OctoPrint.cpp:84 +#: src/slic3r/Utils/OctoPrint.cpp:83 msgid "Connection to OctoPrint works correctly." msgstr "A ligação ao OctoPrint funciona correctamente." -#: src/slic3r/Utils/OctoPrint.cpp:90 +#: src/slic3r/Utils/OctoPrint.cpp:89 msgid "Could not connect to OctoPrint" msgstr "Não foi possível conectar-se ao OctoPrint" -#: src/slic3r/Utils/OctoPrint.cpp:92 +#: src/slic3r/Utils/OctoPrint.cpp:91 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Nota: OctoPrint versão pelo menos 1.1.0 é necessária." -#: src/slic3r/Utils/OctoPrint.cpp:179 +#: src/slic3r/Utils/OctoPrint.cpp:185 msgid "Connection to Prusa SL1 works correctly." msgstr "A conexão com o Prusa SL1 funciona corretamente." -#: src/slic3r/Utils/OctoPrint.cpp:185 +#: src/slic3r/Utils/OctoPrint.cpp:191 msgid "Could not connect to Prusa SLA" msgstr "Não foi possível conectar-se a Prusa SLA" -#: src/slic3r/Utils/PresetUpdater.cpp:705 +#: src/slic3r/Utils/PresetUpdater.cpp:726 #, c-format msgid "requires min. %s and max. %s" msgstr "requer min . %s e máx. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:710 +#: src/slic3r/Utils/PresetUpdater.cpp:730 #, c-format msgid "requires min. %s" msgstr "requer min . %s" -#: src/slic3r/Utils/PresetUpdater.cpp:713 +#: src/slic3r/Utils/PresetUpdater.cpp:733 #, c-format msgid "requires max. %s" msgstr "requer Max. %s" -#: src/libslic3r/SLA/Pad.cpp:691 -msgid "Pad brim size is too small for the current configuration." -msgstr "O tamanho da borda do bloco é muito pequeno para a configuração atual." +#: src/slic3r/Utils/Http.cpp:73 +msgid "" +"Could not detect system SSL certificate store. PrusaSlicer will be unable to " +"establish secure network connections." +msgstr "" +"Não foi possível detectar o armazenamento de certificados SSL do sistema. O " +"PrusaSlicer não conseguirá estabelecer conexões de rede seguras." -#: src/libslic3r/Zipper.cpp:32 -msgid "undefined error" -msgstr "erro indefinido" +#: src/slic3r/Utils/Http.cpp:78 +msgid "PrusaSlicer detected system SSL certificate store in: %1%" +msgstr "PrusaSlicer detectou armazenamento de certificados SSL do sistema em:%1%" -#: src/libslic3r/Zipper.cpp:34 -msgid "too many files" -msgstr "muitos arquivos" +#: src/slic3r/Utils/Http.cpp:82 +msgid "" +"To specify the system certificate store manually, please set the %1% " +"environment variable to the correct CA bundle and restart the application." +msgstr "" +"Para especificar o armazenamento de certificado do sistema manualmente, defina " +"a variável de ambiente %1% para o pacote CA correto e reinicie o aplicativo." -#: src/libslic3r/Zipper.cpp:36 -msgid "file too large" -msgstr "arquivo muito grande" +#: src/slic3r/Utils/Http.cpp:91 +msgid "" +"CURL init has failed. PrusaSlicer will be unable to establish network " +"connections. See logs for additional details." +msgstr "" +"A iniciação do CURL falhou. PrusaSlicer não conseguirá estabelecer conexões de " +"rede. Consulte os logs para obter detalhes adicionais." -#: src/libslic3r/Zipper.cpp:38 -msgid "unsupported method" -msgstr "método não suportado" +#: src/slic3r/Utils/Process.cpp:151 +msgid "Open G-code file:" +msgstr "Abrir arquivo G-code:" -#: src/libslic3r/Zipper.cpp:40 -msgid "unsupported encryption" -msgstr "criptografia sem suporte" +#: src/libslic3r/GCode.cpp:604 +msgid "There is an object with no extrusions on the first layer." +msgstr "Há um objeto sem extrusões na primeira camada." -#: src/libslic3r/Zipper.cpp:42 -msgid "unsupported feature" -msgstr "recurso não suportado" - -#: src/libslic3r/Zipper.cpp:44 -msgid "failed finding central directory" -msgstr "falha ao encontrar o diretório central" - -#: src/libslic3r/Zipper.cpp:46 -msgid "not a ZIP archive" -msgstr "não um arquivo ZIP" - -#: src/libslic3r/Zipper.cpp:48 -msgid "invalid header or archive is corrupted" -msgstr "cabeçalho ou arquivo inválido está corrompido" - -#: src/libslic3r/Zipper.cpp:50 -msgid "unsupported multidisk archive" -msgstr "arquivo Multidisk sem suporte" - -#: src/libslic3r/Zipper.cpp:52 -msgid "decompression failed or archive is corrupted" -msgstr "descompressão falhou ou arquivo está corrompido" - -#: src/libslic3r/Zipper.cpp:54 -msgid "compression failed" -msgstr "falha na compactação" - -#: src/libslic3r/Zipper.cpp:56 -msgid "unexpected decompressed size" -msgstr "tamanho descomprimido inesperado" - -#: src/libslic3r/Zipper.cpp:58 -msgid "CRC-32 check failed" -msgstr "Verificação CRC-32 falhou" - -#: src/libslic3r/Zipper.cpp:60 -msgid "unsupported central directory size" -msgstr "tamanho do diretório central não suportado" - -#: src/libslic3r/Zipper.cpp:62 -msgid "allocation failed" -msgstr "alocação falhou" - -#: src/libslic3r/Zipper.cpp:64 -msgid "file open failed" -msgstr "falha na abertura do arquivo" - -#: src/libslic3r/Zipper.cpp:66 -msgid "file create failed" -msgstr "falha na criação do arquivo" - -#: src/libslic3r/Zipper.cpp:68 -msgid "file write failed" -msgstr "falha na gravação do arquivo" - -#: src/libslic3r/Zipper.cpp:70 -msgid "file read failed" -msgstr "falha na leitura do arquivo" - -#: src/libslic3r/Zipper.cpp:72 -msgid "file close failed" -msgstr "falha ao fechar o arquivo" - -#: src/libslic3r/Zipper.cpp:74 -msgid "file seek failed" -msgstr "falha na busca de arquivo" - -#: src/libslic3r/Zipper.cpp:76 -msgid "file stat failed" -msgstr "falha no status do arquivo" - -#: src/libslic3r/Zipper.cpp:78 -msgid "invalid parameter" -msgstr "parâmetro inválido" - -#: src/libslic3r/Zipper.cpp:80 -msgid "invalid filename" -msgstr "nome de arquivo inválido" - -#: src/libslic3r/Zipper.cpp:82 -msgid "buffer too small" -msgstr "buffer muito pequeno" - -#: src/libslic3r/Zipper.cpp:84 -msgid "internal error" -msgstr "erro interno" - -#: src/libslic3r/Zipper.cpp:86 -msgid "file not found" -msgstr "arquivo não encontrado" - -#: src/libslic3r/Zipper.cpp:88 -msgid "archive is too large" -msgstr "arquivo é muito grande" - -#: src/libslic3r/Zipper.cpp:90 -msgid "validation failed" -msgstr "falha na validação" - -#: src/libslic3r/Zipper.cpp:92 -msgid "write calledback failed" -msgstr "write calledback falhou" - -#: src/libslic3r/Zipper.cpp:102 -msgid "Error with zip archive" -msgstr "Erro com arquivo zip" - -#: src/libslic3r/GCode.cpp:637 +#: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Camadas vazias detectadas, a saída não seria imprimível." -#: src/libslic3r/GCode.cpp:638 +#: src/libslic3r/GCode.cpp:623 msgid "Print z" msgstr "Imprimir Z" -#: src/libslic3r/GCode.cpp:639 +#: src/libslic3r/GCode.cpp:624 msgid "" "This is usually caused by negligibly small extrusions or by a faulty model. " "Try to repair the model or change its orientation on the bed." @@ -6713,7 +7902,7 @@ msgstr "" "Isso geralmente é causado por extrusões insignificantes ou por um modelo " "defeituoso. Tente reparar o modelo ou mudar sua orientação na cama." -#: src/libslic3r/ExtrusionEntity.cpp:323 +#: src/libslic3r/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 msgid "Mixed" msgstr "Misto" @@ -6724,53 +7913,184 @@ msgstr "" "Não é possível calcular a largura de extrusão para %1%: Variável \"%2%\" não " "acessível." -#: src/libslic3r/Format/3mf.cpp:1630 +#: src/libslic3r/Format/3mf.cpp:1667 msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " "compatible." msgstr "" -"O arquivo 3mf selecionado foi salvo com uma versão mais recente de %1% e não " -"é compatível." +"O arquivo 3mf selecionado foi salvo com uma versão mais recente de %1% e não é " +"compatível." -#: src/libslic3r/Format/AMF.cpp:934 +#: src/libslic3r/Format/AMF.cpp:955 msgid "" "The selected amf file has been saved with a newer version of %1% and is not " "compatible." msgstr "" -"O arquivo amf selecionado foi salvo com uma versão mais recente de %1% e não " -"é compatível." +"O arquivo amf selecionado foi salvo com uma versão mais recente de %1% e não é " +"compatível." -#: src/libslic3r/Print.cpp:1219 +#: src/libslic3r/miniz_extension.cpp:91 +msgid "undefined error" +msgstr "erro indefinido" + +#: src/libslic3r/miniz_extension.cpp:93 +msgid "too many files" +msgstr "muitos arquivos" + +#: src/libslic3r/miniz_extension.cpp:95 +msgid "file too large" +msgstr "arquivo muito grande" + +#: src/libslic3r/miniz_extension.cpp:97 +msgid "unsupported method" +msgstr "método não suportado" + +#: src/libslic3r/miniz_extension.cpp:99 +msgid "unsupported encryption" +msgstr "criptografia sem suporte" + +#: src/libslic3r/miniz_extension.cpp:101 +msgid "unsupported feature" +msgstr "recurso não suportado" + +#: src/libslic3r/miniz_extension.cpp:103 +msgid "failed finding central directory" +msgstr "falha ao encontrar o diretório central" + +#: src/libslic3r/miniz_extension.cpp:105 +msgid "not a ZIP archive" +msgstr "não um arquivo ZIP" + +#: src/libslic3r/miniz_extension.cpp:107 +msgid "invalid header or archive is corrupted" +msgstr "cabeçalho ou arquivo inválido está corrompido" + +#: src/libslic3r/miniz_extension.cpp:109 +msgid "unsupported multidisk archive" +msgstr "arquivo Multidisk sem suporte" + +#: src/libslic3r/miniz_extension.cpp:111 +msgid "decompression failed or archive is corrupted" +msgstr "descompressão falhou ou arquivo está corrompido" + +#: src/libslic3r/miniz_extension.cpp:113 +msgid "compression failed" +msgstr "falha na compactação" + +#: src/libslic3r/miniz_extension.cpp:115 +msgid "unexpected decompressed size" +msgstr "tamanho descomprimido inesperado" + +#: src/libslic3r/miniz_extension.cpp:117 +msgid "CRC-32 check failed" +msgstr "Verificação CRC-32 falhou" + +#: src/libslic3r/miniz_extension.cpp:119 +msgid "unsupported central directory size" +msgstr "tamanho do diretório central não suportado" + +#: src/libslic3r/miniz_extension.cpp:121 +msgid "allocation failed" +msgstr "alocação falhou" + +#: src/libslic3r/miniz_extension.cpp:123 +msgid "file open failed" +msgstr "falha na abertura do arquivo" + +#: src/libslic3r/miniz_extension.cpp:125 +msgid "file create failed" +msgstr "falha na criação do arquivo" + +#: src/libslic3r/miniz_extension.cpp:127 +msgid "file write failed" +msgstr "falha na gravação do arquivo" + +#: src/libslic3r/miniz_extension.cpp:129 +msgid "file read failed" +msgstr "falha na leitura do arquivo" + +#: src/libslic3r/miniz_extension.cpp:131 +msgid "file close failed" +msgstr "falha ao fechar o arquivo" + +#: src/libslic3r/miniz_extension.cpp:133 +msgid "file seek failed" +msgstr "falha na busca de arquivo" + +#: src/libslic3r/miniz_extension.cpp:135 +msgid "file stat failed" +msgstr "falha no status do arquivo" + +#: src/libslic3r/miniz_extension.cpp:137 +msgid "invalid parameter" +msgstr "parâmetro inválido" + +#: src/libslic3r/miniz_extension.cpp:139 +msgid "invalid filename" +msgstr "nome de arquivo inválido" + +#: src/libslic3r/miniz_extension.cpp:141 +msgid "buffer too small" +msgstr "buffer muito pequeno" + +#: src/libslic3r/miniz_extension.cpp:143 +msgid "internal error" +msgstr "erro interno" + +#: src/libslic3r/miniz_extension.cpp:145 +msgid "file not found" +msgstr "arquivo não encontrado" + +#: src/libslic3r/miniz_extension.cpp:147 +msgid "archive is too large" +msgstr "arquivo é muito grande" + +#: src/libslic3r/miniz_extension.cpp:149 +msgid "validation failed" +msgstr "falha na validação" + +#: src/libslic3r/miniz_extension.cpp:151 +msgid "write calledback failed" +msgstr "write calledback falhou" + +#: src/libslic3r/Preset.cpp:1301 +msgid "filament" +msgstr "filamento" + +#: src/libslic3r/Preset.cpp:1302 +msgid "SLA print" +msgstr "Impressão de SLA" + +#: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Todos os objetos estão fora do volume de impressão." -#: src/libslic3r/Print.cpp:1222 +#: src/libslic3r/Print.cpp:1248 msgid "The supplied settings will cause an empty print." msgstr "As config. fornecidas causarão uma impressão vazia." -#: src/libslic3r/Print.cpp:1226 +#: src/libslic3r/Print.cpp:1252 msgid "Some objects are too close; your extruder will collide with them." msgstr "Alguns objetos são muito próximos; sua extrusora irá colidir com eles." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1254 msgid "" "Some objects are too tall and cannot be printed without extruder collisions." msgstr "" "Alguns objetos são muito altos e não podem ser impressos sem colisões de " "extrusoras." -#: src/libslic3r/Print.cpp:1237 +#: src/libslic3r/Print.cpp:1263 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "A opção vaso espiral só pode ser usada ao imprimir um único objeto." -#: src/libslic3r/Print.cpp:1244 +#: src/libslic3r/Print.cpp:1270 msgid "" -"The Spiral Vase option can only be used when printing single material " -"objects." +"The Spiral Vase option can only be used when printing single material objects." msgstr "" "A opção vaso espiral só pode ser usada ao imprimir objetos de material único." -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1283 msgid "" "The wipe tower is only supported if all extruders have the same nozzle " "diameter and use filaments of the same diameter." @@ -6778,67 +8098,66 @@ msgstr "" "A torre de limpeza só é suportada se todas as extrusoras tiverem o mesmo " "diâmetro da ponteira e usarem filamentos do mesmo diâmetro." -#: src/libslic3r/Print.cpp:1262 +#: src/libslic3r/Print.cpp:1288 msgid "" -"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " -"and Repetier G-code flavors." +"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and " +"Repetier G-code flavors." msgstr "" "A Wipe Tower é atualmente suportada apenas para os firmwares Marlin, RepRap/" "Sprinter e Repetier G-code." -#: src/libslic3r/Print.cpp:1264 +#: src/libslic3r/Print.cpp:1290 msgid "" "The Wipe Tower is currently only supported with the relative extruder " "addressing (use_relative_e_distances=1)." msgstr "" -"A torre da limpeza é suportada atualmente somente com o endereçamento " -"relativo da extrusora (use_relative_e_distances = 1)." +"A torre da limpeza é suportada atualmente somente com o endereçamento relativo " +"da extrusora (use_relative_e_distances = 1)." -#: src/libslic3r/Print.cpp:1266 +#: src/libslic3r/Print.cpp:1292 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "" -"A prevenção de escorrimento não é suportada atualmente com a torre da " -"limpeza permitida." +"A prevenção de escorrimento não é suportada atualmente com a torre da limpeza " +"permitida." -#: src/libslic3r/Print.cpp:1268 +#: src/libslic3r/Print.cpp:1294 msgid "" "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "" "Atualmente, a Torre limpa não suporta E volumétrica (use_volumetric_e=0)." -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1296 msgid "" -"The Wipe Tower is currently not supported for multimaterial sequential " -"prints." +"The Wipe Tower is currently not supported for multimaterial sequential prints." msgstr "" -"A torre de limpeza só é suportada para vários objetos se eles tiverem " -"alturas de camada iguais." +"A torre de limpeza só é suportada para vários objetos se eles tiverem alturas " +"de camada iguais." -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1317 msgid "" -"The Wipe Tower is only supported for multiple objects if they have equal " -"layer heights" +"The Wipe Tower is only supported for multiple objects if they have equal layer " +"heights" msgstr "" -"A torre de limpeza só é suportada para vários objetos se eles tiverem " -"alturas de camada iguais" +"A torre de limpeza só é suportada para vários objetos se eles tiverem alturas " +"de camada iguais" -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1319 msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"over an equal number of raft layers" +"The Wipe Tower is only supported for multiple objects if they are printed over " +"an equal number of raft layers" msgstr "" -"A torre de limpeza só é suportada para vários objetos se elas forem " -"impressas em um número igual de camadas de estrado" +"A torre de limpeza só é suportada para vários objetos se elas forem impressas " +"em um número igual de camadas de estrado" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1321 msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"with the same support_material_contact_distance" +"The Wipe Tower is only supported for multiple objects if they are printed with " +"the same support_material_contact_distance" msgstr "" "A torre de limpeza só é suportado para vários objetos se eles são impressos " "com a mesma distância de contato do suporte" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1323 msgid "" "The Wipe Tower is only supported for multiple objects if they are sliced " "equally." @@ -6846,7 +8165,7 @@ msgstr "" "A torre de limpeza só é suportada para vários objetos se eles são fatiados " "igualmente." -#: src/libslic3r/Print.cpp:1339 +#: src/libslic3r/Print.cpp:1365 msgid "" "The Wipe tower is only supported if all objects have the same variable layer " "height" @@ -6854,85 +8173,89 @@ msgstr "" "A torre de limpeza só é suportada se todos os objetos tiverem a mesma altura " "de camada variável" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1391 msgid "" "One or more object were assigned an extruder that the printer does not have." msgstr "" "Um ou mais objetos foram atribuídos a uma extrusora que a impressora não tem." -#: src/libslic3r/Print.cpp:1374 +#: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "" "%1% = %2% mm é muito baixo para ser impresso a uma altura de camada %3% mm" -#: src/libslic3r/Print.cpp:1377 +#: src/libslic3r/Print.cpp:1403 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "" "Excesso %1%=%2% milímetro a ser imprimível com um diâmetro da ponteira %3% " "milímetro" -#: src/libslic3r/Print.cpp:1388 +#: src/libslic3r/Print.cpp:1414 msgid "" -"Printing with multiple extruders of differing nozzle diameters. If support " -"is to be printed with the current extruder (support_material_extruder == 0 " -"or support_material_interface_extruder == 0), all nozzles have to be of the " -"same diameter." +"Printing with multiple extruders of differing nozzle diameters. If support is " +"to be printed with the current extruder (support_material_extruder == 0 or " +"support_material_interface_extruder == 0), all nozzles have to be of the same " +"diameter." msgstr "" "Impressão com múltiplas extrusoras de diferentes diâmetros de bicos. Se a " "sustentação deve ser imprimida com a extrusora atual " "(support_material_extruder = = 0 ou support_material_interface_extruder = = " "0), todos as ponteiras têm que ser do mesmo diâmetro." -#: src/libslic3r/Print.cpp:1396 +#: src/libslic3r/Print.cpp:1422 msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers " -"need to be synchronized with the object layers." +"For the Wipe Tower to work with the soluble supports, the support layers need " +"to be synchronized with the object layers." msgstr "" "Para que a torre de limpeza funcione com os suportes solúveis, as camadas de " "suporte precisam ser sincronizadas com as camadas de objeto." -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1426 msgid "" "The Wipe Tower currently supports the non-soluble supports only if they are " "printed with the current extruder without triggering a tool change. (both " "support_material_extruder and support_material_interface_extruder need to be " "set to 0)." msgstr "" -"A torre de limpeza suporta atualmente os suportes não-solúveis somente se " -"são imprimidos com o extrusor atual sem provocar uma mudança da ferramenta. " -"(ambos support_material_extruder e support_material_interface_extruder " -"precisam ser definidos como 0)." +"A torre de limpeza suporta atualmente os suportes não-solúveis somente se são " +"imprimidos com o extrusor atual sem provocar uma mudança da ferramenta. (ambos " +"support_material_extruder e support_material_interface_extruder precisam ser " +"definidos como 0)." -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1448 msgid "First layer height can't be greater than nozzle diameter" msgstr "" "A primeira altura da camada não pode ser maior do que o diâmetro da ponteira" -#: src/libslic3r/Print.cpp:1427 +#: src/libslic3r/Print.cpp:1453 msgid "Layer height can't be greater than nozzle diameter" msgstr "A altura da camada não pode ser maior do que o diâmetro da ponteira" -#: src/libslic3r/Print.cpp:1584 +#: src/libslic3r/Print.cpp:1610 msgid "Infilling layers" msgstr "Camadas de preenchimento" -#: src/libslic3r/Print.cpp:1606 +#: src/libslic3r/Print.cpp:1636 msgid "Generating skirt" msgstr "Gerando saia" -#: src/libslic3r/Print.cpp:1614 +#: src/libslic3r/Print.cpp:1645 msgid "Generating brim" msgstr "Gerando a aba" -#: src/libslic3r/Print.cpp:1638 +#: src/libslic3r/Print.cpp:1676 msgid "Exporting G-code" msgstr "Exportando o G-code" -#: src/libslic3r/Print.cpp:1642 +#: src/libslic3r/Print.cpp:1680 msgid "Generating G-code" msgstr "Gerando G-code" -#: src/libslic3r/SLAPrint.cpp:615 +#: src/libslic3r/SLA/Pad.cpp:532 +msgid "Pad brim size is too small for the current configuration." +msgstr "O tamanho da borda do bloco é muito pequeno para a configuração atual." + +#: src/libslic3r/SLAPrint.cpp:627 msgid "" "Cannot proceed without support points! Add support points or disable support " "generation." @@ -6940,110 +8263,110 @@ msgstr "" "Não pode prosseguir sem pontos de suporte! Adicione pontos de suporte ou " "desative a geração de suporte." -#: src/libslic3r/SLAPrint.cpp:627 +#: src/libslic3r/SLAPrint.cpp:639 msgid "" "Elevation is too low for object. Use the \"Pad around object\" feature to " "print the object without elevation." msgstr "" -"A elevação é muito baixa para o objeto. Use o recurso \"pad ao redor do " -"objeto\" para imprimir o objeto sem elevação." +"A elevação é muito baixa para o objeto. Use o recurso \"pad ao redor do objeto" +"\" para imprimir o objeto sem elevação." -#: src/libslic3r/SLAPrint.cpp:633 +#: src/libslic3r/SLAPrint.cpp:645 msgid "" "The endings of the support pillars will be deployed on the gap between the " -"object and the pad. 'Support base safety distance' has to be greater than " -"the 'Pad object gap' parameter to avoid this." +"object and the pad. 'Support base safety distance' has to be greater than the " +"'Pad object gap' parameter to avoid this." msgstr "" "As terminações dos pilares de suporte serão implantadas na lacuna entre o " -"objeto e o pad. ' Distância de segurança de base de suporte ' tem de ser " -"maior do que o parâmetro ' pad objecto Gap ' para evitar este." +"objeto e o pad. ' Distância de segurança de base de suporte ' tem de ser maior " +"do que o parâmetro ' pad objecto Gap ' para evitar este." -#: src/libslic3r/SLAPrint.cpp:648 +#: src/libslic3r/SLAPrint.cpp:660 msgid "Exposition time is out of printer profile bounds." msgstr "O tempo de exposição está fora dos limites do perfil da impressora." -#: src/libslic3r/SLAPrint.cpp:655 +#: src/libslic3r/SLAPrint.cpp:667 msgid "Initial exposition time is out of printer profile bounds." msgstr "" "O tempo de exposição inicial está fora dos limites do perfil da impressora." -#: src/libslic3r/SLAPrint.cpp:762 +#: src/libslic3r/SLAPrint.cpp:780 msgid "Slicing done" msgstr "Fatiamento pronto" -#: src/libslic3r/SLAPrintSteps.cpp:43 +#: src/libslic3r/SLAPrintSteps.cpp:44 msgid "Hollowing model" msgstr "Deixar oco o modelo" -#: src/libslic3r/SLAPrintSteps.cpp:44 -msgid "Drilling holes into model." -msgstr "Furando o modelo" - #: src/libslic3r/SLAPrintSteps.cpp:45 +msgid "Drilling holes into model." +msgstr "Furando o modelo." + +#: src/libslic3r/SLAPrintSteps.cpp:46 msgid "Slicing model" msgstr "Modelo de fatiamento" -#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +#: src/libslic3r/SLAPrintSteps.cpp:47 src/libslic3r/SLAPrintSteps.cpp:359 msgid "Generating support points" msgstr "Gerando pontos de suporte" -#: src/libslic3r/SLAPrintSteps.cpp:47 +#: src/libslic3r/SLAPrintSteps.cpp:48 msgid "Generating support tree" msgstr "Gerando suporte em árvore" -#: src/libslic3r/SLAPrintSteps.cpp:48 +#: src/libslic3r/SLAPrintSteps.cpp:49 msgid "Generating pad" msgstr "Gerando pad" -#: src/libslic3r/SLAPrintSteps.cpp:49 +#: src/libslic3r/SLAPrintSteps.cpp:50 msgid "Slicing supports" msgstr "Fatiando suportes" -#: src/libslic3r/SLAPrintSteps.cpp:64 +#: src/libslic3r/SLAPrintSteps.cpp:65 msgid "Merging slices and calculating statistics" msgstr "Mesclando camadas e calculando estatísticas" -#: src/libslic3r/SLAPrintSteps.cpp:65 +#: src/libslic3r/SLAPrintSteps.cpp:66 msgid "Rasterizing layers" msgstr "Rasterizando camadas" -#: src/libslic3r/SLAPrintSteps.cpp:190 -msgid "Too much overlapping holes." +#: src/libslic3r/SLAPrintSteps.cpp:192 +msgid "Too many overlapping holes." msgstr "Muitos buracos sobrepostos." -#: src/libslic3r/SLAPrintSteps.cpp:199 +#: src/libslic3r/SLAPrintSteps.cpp:201 msgid "" "Drilling holes into the mesh failed. This is usually caused by broken model. " "Try to fix it first." msgstr "" -"Os furos de perfuração na malha falharam. Isso geralmente é causado por " -"modelo quebrado. Tente consertá-lo primeiro." +"Os furos de perfuração na malha falharam. Isso geralmente é causado por modelo " +"quebrado. Tente consertá-lo primeiro." -#: src/libslic3r/SLAPrintSteps.cpp:245 +#: src/libslic3r/SLAPrintSteps.cpp:247 msgid "" "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "" "O fatiamento teve que ser parado devido a um erro interno: índice de " "fatiamento inconsistente." -#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 -#: src/libslic3r/SLAPrintSteps.cpp:461 +#: src/libslic3r/SLAPrintSteps.cpp:411 src/libslic3r/SLAPrintSteps.cpp:420 +#: src/libslic3r/SLAPrintSteps.cpp:459 msgid "Visualizing supports" msgstr "Visualizando suportes" -#: src/libslic3r/SLAPrintSteps.cpp:453 +#: src/libslic3r/SLAPrintSteps.cpp:451 msgid "No pad can be generated for this model with the current configuration" msgstr "Nenhum pad pode ser gerado para este modelo com a configuração atual" -#: src/libslic3r/SLAPrintSteps.cpp:621 +#: src/libslic3r/SLAPrintSteps.cpp:619 msgid "" "There are unprintable objects. Try to adjust support settings to make the " "objects printable." msgstr "" -"Há objetos imprimíveis. Tente ajustar as configurações de suporte para " -"tornar os objetos imprimíveis." +"Há objetos imprimíveis. Tente ajustar as configurações de suporte para tornar " +"os objetos imprimíveis." -#: src/libslic3r/PrintBase.cpp:71 +#: src/libslic3r/PrintBase.cpp:72 msgid "Failed processing of the output_filename_format template." msgstr "Falha no processamento do modelo output_filename_format." @@ -7088,61 +8411,61 @@ msgstr "" "Defina isto para a altura máxima que pode ser alcançada pela sua extrusora " "durante a impressão." -#: src/libslic3r/PrintConfig.cpp:87 +#: src/libslic3r/PrintConfig.cpp:89 msgid "Slice gap closing radius" msgstr "Raio de fechamento da abertura da fatia" -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 msgid "" -"Cracks smaller than 2x gap closing radius are being filled during the " -"triangle mesh slicing. The gap closing operation may reduce the final print " -"resolution, therefore it is advisable to keep the value reasonably low." +"Cracks smaller than 2x gap closing radius are being filled during the triangle " +"mesh slicing. The gap closing operation may reduce the final print resolution, " +"therefore it is advisable to keep the value reasonably low." msgstr "" "As rachaduras menores do que duas vezes o raio de fechamento estão sendo " -"preenchidas durante o fatiamento da malha triangular. A operação de " -"fechamento de vão pode reduzir a resolução final de impressão, portanto, é " -"aconselhável manter o valor razoavelmente baixo." +"preenchidas durante o fatiamento da malha triangular. A operação de fechamento " +"de vão pode reduzir a resolução final de impressão, portanto, é aconselhável " +"manter o valor razoavelmente baixo." -#: src/libslic3r/PrintConfig.cpp:97 +#: src/libslic3r/PrintConfig.cpp:99 msgid "Hostname, IP or URL" msgstr "Hostname, IP ou URL" -#: src/libslic3r/PrintConfig.cpp:98 +#: src/libslic3r/PrintConfig.cpp:100 msgid "" "Slic3r can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance." msgstr "" -"Slic3r pode carregar arquivos de G-code para um host de impressora. Este " -"campo deve conter o nome de host, o endereço IP ou a URL da instância de " -"host da impressora." +"Slic3r pode carregar arquivos de G-code para um host de impressora. Este campo " +"deve conter o nome de host, o endereço IP ou a URL da instância de host da " +"impressora." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:106 msgid "API Key / Password" msgstr "Chave de API/senha" -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:107 msgid "" "Slic3r can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication." msgstr "" -"Slic3r pode carregar arquivos de G-code para um host de impressora. Este " -"campo deve conter a chave de API ou a senha exigida para a autenticação." +"Slic3r pode carregar arquivos de G-code para um host de impressora. Este campo " +"deve conter a chave de API ou a senha exigida para a autenticação." -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:114 msgid "" "Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository " -"is used." +"in crt/pem format. If left blank, the default OS CA certificate repository is " +"used." msgstr "" "O arquivo de certificado de CA personalizado pode ser especificado para " "conexões HTTPS OctoPrint, no formato CRT/PEM. Se deixado em branco, o " "repositório de certificados do OS CA padrão é usado." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:120 msgid "Elephant foot compensation" msgstr "Compensação do pé do elefante" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:122 msgid "" "The first layer will be shrunk in the XY plane by the configured value to " "compensate for the 1st layer squish aka an Elephant Foot effect." @@ -7150,25 +8473,41 @@ msgstr "" "A primeira camada será encolhido no plano XY pelo valor config.urado para " "compensar a 1ª camada esmagada, também conhecida como pé de elefante." -#: src/libslic3r/PrintConfig.cpp:136 +#: src/libslic3r/PrintConfig.cpp:138 +msgid "Password" +msgstr "Senha" + +#: src/libslic3r/PrintConfig.cpp:144 +msgid "Printer preset name" +msgstr "Nome da predefinição da impressora" + +#: src/libslic3r/PrintConfig.cpp:145 +msgid "Related printer preset name" +msgstr "Nome da predefinição da impressora relacionada" + +#: src/libslic3r/PrintConfig.cpp:150 +msgid "Authorization Type" +msgstr "Tipo de Autorização" + +#: src/libslic3r/PrintConfig.cpp:169 msgid "Avoid crossing perimeters" msgstr "Evitar cruzamento de perímetros" -#: src/libslic3r/PrintConfig.cpp:137 +#: src/libslic3r/PrintConfig.cpp:170 msgid "" -"Optimize travel moves in order to minimize the crossing of perimeters. This " -"is mostly useful with Bowden extruders which suffer from oozing. This " -"feature slows down both the print and the G-code generation." +"Optimize travel moves in order to minimize the crossing of perimeters. This is " +"mostly useful with Bowden extruders which suffer from oozing. This feature " +"slows down both the print and the G-code generation." msgstr "" "Otimize os movimentos de viagem para minimizar o cruzamento de perímetros. " "Isto é principalmente útil com extrusoras Bowden que sofrem de escorrimento. " "Este recurso retarda a impressão e a geração de G-code." -#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:2206 msgid "Other layers" msgstr "Outras camadas" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "" "Bed temperature for layers after the first one. Set this to zero to disable " "bed temperature control commands in the output." @@ -7176,32 +8515,32 @@ msgstr "" "Temperatura da mesa para camadas após o primeiro. Defina isso como zero para " "desabilitar os comandos de controle de temperatura da mesa na saída." -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:181 msgid "Bed temperature" msgstr "Temperatura da mesa" -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:188 msgid "" "This custom code is inserted at every layer change, right before the Z move. " -"Note that you can use placeholder variables for all Slic3r settings as well " -"as [layer_num] and [layer_z]." +"Note that you can use placeholder variables for all Slic3r settings as well as " +"[layer_num] and [layer_z]." msgstr "" "Esse código personalizado é inserido em cada alteração de camada, logo antes " "da movimentação Z. Observe que você pode usar variáveis de espaço reservado " "para todas as config. Slic3r, bem como [layer_num] e [layer_z]." -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Between objects G-code" msgstr "G-code entre objetos" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:199 msgid "" "This code is inserted between objects when using sequential printing. By " -"default extruder and bed temperature are reset using non-wait command; " -"however if M104, M109, M140 or M190 are detected in this custom code, Slic3r " -"will not add temperature commands. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want." +"default extruder and bed temperature are reset using non-wait command; however " +"if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not " +"add temperature commands. Note that you can use placeholder variables for all " +"Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command " +"wherever you want." msgstr "" "Esse código é inserido entre objetos ao usar a impressão sequencial. Por " "padrão, a extrusora e a temperatura da mesa são redefinidas usando o comando " @@ -7211,32 +8550,32 @@ msgstr "" "Slic3r, para que você possa colocar um comando \"M109 S " "[temperatura_primeira_camada]\" onde quiser." -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:210 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Número de camadas sólidas para gerar em superfícies inferiores." -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:211 msgid "Bottom solid layers" msgstr "Camadas sólidas inferiores" -#: src/libslic3r/PrintConfig.cpp:185 +#: src/libslic3r/PrintConfig.cpp:219 msgid "" "The number of bottom solid layers is increased above bottom_solid_layers if " "necessary to satisfy minimum thickness of bottom shell." msgstr "" "O número de camadas sólidas inferiores é aumentado acima de " -"bottom_solid_layers se necessário para satisfazer a espessura mínima da " -"camada inferior." +"bottom_solid_layers se necessário para satisfazer a espessura mínima da camada " +"inferior." -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:221 msgid "Minimum bottom shell thickness" msgstr "Espessura mínima da casca inferior" -#: src/libslic3r/PrintConfig.cpp:193 +#: src/libslic3r/PrintConfig.cpp:227 msgid "Bridge" msgstr "Ponte" -#: src/libslic3r/PrintConfig.cpp:194 +#: src/libslic3r/PrintConfig.cpp:228 msgid "" "This is the acceleration your printer will use for bridges. Set zero to " "disable acceleration control for bridges." @@ -7244,93 +8583,95 @@ msgstr "" "Esta é a aceleração que sua impressora usará para pontes. Defina zero para " "desabilitar o controle de aceleração para pontes." -#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 -#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 +#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:202 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Bridging angle" msgstr "Ângulo de ponte" -#: src/libslic3r/PrintConfig.cpp:204 +#: src/libslic3r/PrintConfig.cpp:238 msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for all " "bridges. Use 180° for zero angle." msgstr "" "Sobreposição de ângulo de ponte. Se deixado em zero, o ângulo de ponte será " -"calculado automaticamente. Caso contrário, o ângulo fornecido será usado " -"para todas as pontes. Use 180 ° para o ângulo zero." +"calculado automaticamente. Caso contrário, o ângulo fornecido será usado para " +"todas as pontes. Use 180 ° para o ângulo zero." -#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 -#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 -#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2737 -#: src/libslic3r/PrintConfig.cpp:2858 +#: src/libslic3r/PrintConfig.cpp:241 src/libslic3r/PrintConfig.cpp:816 +#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "°" msgstr "°" -#: src/libslic3r/PrintConfig.cpp:213 +#: src/libslic3r/PrintConfig.cpp:247 msgid "Bridges fan speed" msgstr "Velocidade da ventoinha nas pontes" -#: src/libslic3r/PrintConfig.cpp:214 +#: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "" "Esta velocidade da ventoinha é imposta durante todas as pontes e angulações." -#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 -#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 -#: src/libslic3r/PrintConfig.cpp:2777 +#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 +#: src/libslic3r/PrintConfig.cpp:2931 msgid "%" msgstr "%" -#: src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:256 msgid "Bridge flow ratio" msgstr "Relação de fluxo da ponte" -#: src/libslic3r/PrintConfig.cpp:224 +#: src/libslic3r/PrintConfig.cpp:258 msgid "" "This factor affects the amount of plastic for bridging. You can decrease it " -"slightly to pull the extrudates and prevent sagging, although default " -"settings are usually good and you should experiment with cooling (use a fan) " -"before tweaking this." +"slightly to pull the extrudates and prevent sagging, although default settings " +"are usually good and you should experiment with cooling (use a fan) before " +"tweaking this." msgstr "" "Esse fator afeta a quantidade de plástico para a ponte. Você pode diminuí-lo " -"um pouco para puxar as extrusões e evitar a flacidez, embora as config. " -"padrão são geralmente boas e você deve experimentar com refrigeração (use " -"uma ventoinha) antes de ajustes isso." +"um pouco para puxar as extrusões e evitar a flacidez, embora as config. padrão " +"são geralmente boas e você deve experimentar com refrigeração (use uma " +"ventoinha) antes de ajustes isso." -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Bridges" msgstr "Pontes" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "Speed for printing bridges." msgstr "Velocidade para a impressão de pontes." -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 -#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 -#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 +#: src/libslic3r/PrintConfig.cpp:271 src/libslic3r/PrintConfig.cpp:645 +#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:662 +#: src/libslic3r/PrintConfig.cpp:670 src/libslic3r/PrintConfig.cpp:697 +#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2297 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Brim width" msgstr "Largura da aba" -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:279 msgid "" "Horizontal width of the brim that will be printed around each object on the " "first layer." @@ -7338,146 +8679,145 @@ msgstr "" "Largura horizontal da aba que será impressa em torno de cada objeto na " "primeira camada." -#: src/libslic3r/PrintConfig.cpp:252 +#: src/libslic3r/PrintConfig.cpp:286 msgid "Clip multi-part objects" msgstr "Clip objetos de várias partes" -#: src/libslic3r/PrintConfig.cpp:253 +#: src/libslic3r/PrintConfig.cpp:287 msgid "" "When printing multi-material objects, this settings will make Slic3r to clip " -"the overlapping object parts one by the other (2nd part will be clipped by " -"the 1st, 3rd part will be clipped by the 1st and 2nd etc)." +"the overlapping object parts one by the other (2nd part will be clipped by the " +"1st, 3rd part will be clipped by the 1st and 2nd etc)." msgstr "" -"Ao imprimir objetos de vários materiais, essas config. farão com que o " -"Slic3r recorte as partes do objeto sobrepostas uma pela outra (2ª parte será " -"cortada pela 1ª, 3ª parte será cortada pela 1ª e 2ª, etc.)." +"Ao imprimir objetos de vários materiais, essas config. farão com que o Slic3r " +"recorte as partes do objeto sobrepostas uma pela outra (2ª parte será cortada " +"pela 1ª, 3ª parte será cortada pela 1ª e 2ª, etc.)." -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:294 msgid "Colorprint height" msgstr "Altura da impressão colorida" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:295 msgid "Heights at which a filament change is to occur." msgstr "Alturas em que uma mudança do filamento ocorre." -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:305 msgid "Compatible printers condition" msgstr "Condição de impressoras compatíveis" -#: src/libslic3r/PrintConfig.cpp:272 +#: src/libslic3r/PrintConfig.cpp:306 msgid "" "A boolean expression using the configuration values of an active printer " "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" -"Uma expressão booleana usando os valores de config. de um perfil de " -"impressora ativo. Se essa expressão for avaliada como verdadeira, esse " -"perfil será considerado compatível com o perfil de impressora ativo." +"Uma expressão booleana usando os valores de config. de um perfil de impressora " +"ativo. Se essa expressão for avaliada como verdadeira, esse perfil será " +"considerado compatível com o perfil de impressora ativo." -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Compatible print profiles condition" msgstr "Condição de perfis de impressão compatíveis" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:321 msgid "" "A boolean expression using the configuration values of an active print " "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" -"Uma expressão booleana usando os valores de config. de um perfil de " -"impressão ativo. Se essa expressão for avaliada como verdadeira, esse perfil " -"será considerado compatível com o perfil de impressão ativo." +"Uma expressão booleana usando os valores de config. de um perfil de impressão " +"ativo. Se essa expressão for avaliada como verdadeira, esse perfil será " +"considerado compatível com o perfil de impressão ativo." -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:338 msgid "Complete individual objects" msgstr "Complete objetos individuais" -#: src/libslic3r/PrintConfig.cpp:305 +#: src/libslic3r/PrintConfig.cpp:339 msgid "" "When printing multiple objects or copies, this feature will complete each " "object before moving onto next one (and starting it from its bottom layer). " -"This feature is useful to avoid the risk of ruined prints. Slic3r should " -"warn and prevent you from extruder collisions, but beware." +"This feature is useful to avoid the risk of ruined prints. Slic3r should warn " +"and prevent you from extruder collisions, but beware." msgstr "" -"Ao imprimir vários objetos ou cópias, esse recurso concluirá cada objeto " -"antes de passar para o próximo (e iniciando-o de sua camada inferior). Este " -"recurso é útil para evitar o risco de impressões arruinadas. Slic3r deve " -"avisar e impedi-lo de colisões de extrusoras, mas cuidado." +"Ao imprimir vários objetos ou cópias, esse recurso concluirá cada objeto antes " +"de passar para o próximo (e iniciando-o de sua camada inferior). Este recurso " +"é útil para evitar o risco de impressões arruinadas. Slic3r deve avisar e " +"impedi-lo de colisões de extrusoras, mas cuidado." -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:347 msgid "Enable auto cooling" msgstr "Ativar o resfriamento automático" -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:348 msgid "" -"This flag enables the automatic cooling logic that adjusts print speed and " -"fan speed according to layer printing time." +"This flag enables the automatic cooling logic that adjusts print speed and fan " +"speed according to layer printing time." msgstr "" "Esse sinalizador permite a lógica de resfriamento automática que ajusta a " "velocidade de impressão e a velocidade do ventoinha de acordo com o tempo de " "impressão da camada." -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:353 msgid "Cooling tube position" msgstr "Posição do tubo de resfriamento" -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "" "Distância do ponto central do tubo de resfriamento da ponta da extrusora." -#: src/libslic3r/PrintConfig.cpp:327 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Cooling tube length" msgstr "Comprimento do tubo de resfriamento" -#: src/libslic3r/PrintConfig.cpp:328 +#: src/libslic3r/PrintConfig.cpp:362 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "" "Comprimento do tubo de resfriamento para limitar o espaço para movimentos de " "resfriamento dentro dele." -#: src/libslic3r/PrintConfig.cpp:336 +#: src/libslic3r/PrintConfig.cpp:370 msgid "" -"This is the acceleration your printer will be reset to after the role-" -"specific acceleration values are used (perimeter/infill). Set zero to " -"prevent resetting acceleration at all." +"This is the acceleration your printer will be reset to after the role-specific " +"acceleration values are used (perimeter/infill). Set zero to prevent resetting " +"acceleration at all." msgstr "" "Esta é a aceleração que sua impressora será redefinida para depois que os " "valores de aceleração específicos da função forem usados (perímetro/" "preenchimento). Defina zero para evitar redefinir a aceleração em tudo." -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Default filament profile" msgstr "Perfil de filamento padrão" -#: src/libslic3r/PrintConfig.cpp:346 +#: src/libslic3r/PrintConfig.cpp:380 msgid "" "Default filament profile associated with the current printer profile. On " "selection of the current printer profile, this filament profile will be " "activated." msgstr "" -"Perfil de filamento padrão associado ao perfil de impressora atual. Na " -"seleção do perfil da impressora atual, este perfil de filamento será ativado." +"Perfil de filamento padrão associado ao perfil de impressora atual. Na seleção " +"do perfil da impressora atual, este perfil de filamento será ativado." -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default print profile" msgstr "Perfil de impressão padrão" -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "" "Default print profile associated with the current printer profile. On " -"selection of the current printer profile, this print profile will be " -"activated." +"selection of the current printer profile, this print profile will be activated." msgstr "" -"Perfil de impressão padrão associado ao perfil de impressora atual. Na " -"seleção do perfil de impressora atual, este perfil de impressão será ativado." +"Perfil de impressão padrão associado ao perfil de impressora atual. Na seleção " +"do perfil de impressora atual, este perfil de impressão será ativado." -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Disable fan for the first" msgstr "Desabilite o ventoinha para a(s) primeira(s)" -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:394 msgid "" "You can set this to a positive value to disable fan at all during the first " "layers, so that it does not make adhesion worse." @@ -7485,27 +8825,27 @@ msgstr "" "Você pode ajustar isto a um valor positivo para desabilitar a ventoinha " "durante as primeiras camadas, de modo que melhore a adesão." -#: src/libslic3r/PrintConfig.cpp:369 +#: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "Não suporte pontes" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/libslic3r/PrintConfig.cpp:405 msgid "" -"Experimental option for preventing support material from being generated " -"under bridged areas." +"Experimental option for preventing support material from being generated under " +"bridged areas." msgstr "" -"Opção experimental para impedir que o material de suporte seja gerado em " -"áreas com ponte." +"Opção experimental para impedir que o material de suporte seja gerado em áreas " +"com ponte." -#: src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:411 msgid "Distance between copies" msgstr "Distância entre cópias" -#: src/libslic3r/PrintConfig.cpp:378 +#: src/libslic3r/PrintConfig.cpp:412 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Distância usada para o recurso de organizar automaticamente a bandeja." -#: src/libslic3r/PrintConfig.cpp:386 +#: src/libslic3r/PrintConfig.cpp:420 msgid "" "This end procedure is inserted at the end of the output file. Note that you " "can use placeholder variables for all PrusaSlicer settings." @@ -7514,7 +8854,7 @@ msgstr "" "você pode usar variáveis de espaço reservado para todas as config. de " "PrusaSlicer." -#: src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:430 msgid "" "This end procedure is inserted at the end of the output file, before the " "printer end gcode (and before any toolchange from this filament in case of " @@ -7523,73 +8863,77 @@ msgid "" "in extruder order." msgstr "" "Este procedimento final é inserido no final do arquivo de saída, antes da " -"extremidade da impressora Gcode (e antes de qualquer troca de ferramenta " -"deste filamento em caso de impressoras multimaterial). Observe que você pode " -"usar variáveis de espaço reservado para todas as config. de PrusaSlicer. Se " -"você tiver várias extrusoras, o Gcode é processado em ordem de extrusora." +"extremidade da impressora Gcode (e antes de qualquer troca de ferramenta deste " +"filamento em caso de impressoras multimaterial). Observe que você pode usar " +"variáveis de espaço reservado para todas as config. de PrusaSlicer. Se você " +"tiver várias extrusoras, o Gcode é processado em ordem de extrusora." -#: src/libslic3r/PrintConfig.cpp:407 +#: src/libslic3r/PrintConfig.cpp:441 msgid "Ensure vertical shell thickness" msgstr "Assegure a espessura vertical da parede" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:443 msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." msgstr "" -"Adicionar preenchimento sólido perto de superfícies inclinadas para garantir " -"a espessura do escudo vertical (camadas sólidas no topo + base )." +"Adicionar preenchimento sólido perto de superfícies inclinadas para garantir a " +"espessura do escudo vertical (camadas sólidas no topo + base )." -#: src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:449 msgid "Top fill pattern" msgstr "Padrão de preenchimento do topo" -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:451 msgid "" -"Fill pattern for top infill. This only affects the top visible layer, and " -"not its adjacent solid shells." +"Fill pattern for top infill. This only affects the top visible layer, and not " +"its adjacent solid shells." msgstr "" "Padrão de preenchimento para preenchimento do topo. Isto afeta somente a " "camada visível superior, e não suas paredes adjacentes." -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Rectilinear" msgstr "Rectilíneo" -#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 +#: src/libslic3r/PrintConfig.cpp:461 +msgid "Monotonic" +msgstr "Monotônico" + +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 msgid "Concentric" msgstr "Concêntrico" -#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 msgid "Hilbert Curve" msgstr "Curva de Hilbert" -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 +#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 msgid "Archimedean Chords" msgstr "Cordas Archimedean" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 msgid "Octagram Spiral" msgstr "Espiral estrelado" -#: src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Bottom fill pattern" msgstr "Padrão de preenchimento da base" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:473 msgid "" -"Fill pattern for bottom infill. This only affects the bottom external " -"visible layer, and not its adjacent solid shells." +"Fill pattern for bottom infill. This only affects the bottom external visible " +"layer, and not its adjacent solid shells." msgstr "" "Padrão de preenchimento para preenchimento da base. Isto afeta somente a " "camada visível externa inferior, e não suas paredes adjacentes." -#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:482 src/libslic3r/PrintConfig.cpp:493 msgid "External perimeters" msgstr "Perímetros externos" -#: src/libslic3r/PrintConfig.cpp:448 +#: src/libslic3r/PrintConfig.cpp:484 msgid "" "Set this to a non-zero value to set a manual extrusion width for external " "perimeters. If left zero, default extrusion width will be used if set, " @@ -7602,16 +8946,16 @@ msgstr "" "ponteira será usado. Se expresso em porcentagem(por exemplo 200%), será " "calculado sobre a altura da camada." -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 -#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 +#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "mm or %" msgstr "mm ou %" -#: src/libslic3r/PrintConfig.cpp:459 +#: src/libslic3r/PrintConfig.cpp:495 msgid "" "This separate setting will affect the speed of external perimeters (the " "visible ones). If expressed as percentage (for example: 80%) it will be " @@ -7621,17 +8965,17 @@ msgstr "" "visíveis). Se expresso em porcentagem(por exemplo: 80%) Ele será calculado " "sobre a velocidade de perímetros config. acima. Defina como zero para auto." -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 msgid "mm/s or %" msgstr "mm/s ou %" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:505 msgid "External perimeters first" msgstr "Perímetros externos primeiro" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:507 msgid "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." @@ -7639,22 +8983,22 @@ msgstr "" "Imprima perímetros de contorno do mais externo para o mais interno em vez da " "ordem inversa padrão." -#: src/libslic3r/PrintConfig.cpp:477 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extra perimeters if needed" msgstr "Perímetros extras se necessário" -#: src/libslic3r/PrintConfig.cpp:479 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:515 +#, c-format msgid "" "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " -"keeps adding perimeters, until more than 70% of the loop immediately above " -"is supported." +"keeps adding perimeters, until more than 70% of the loop immediately above is " +"supported." msgstr "" "Adicione mais perímetros quando necessário para evitar lacunas em paredes " "inclinados. Slic3r continua adicionando perímetros, até que mais de 70% o do " "loop imediatamente acima é suportado." -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:525 msgid "" "The extruder to use (unless more specific extruder settings are specified). " "This value overrides perimeter and infill extruders, but not the support " @@ -7664,58 +9008,57 @@ msgstr "" "sejam especificadas). Esse valor substitui as extrusoras de perímetro e " "preenchimento, mas não as extrusoras de suporte." -#: src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:537 msgid "" -"Set this to the vertical distance between your nozzle tip and (usually) the " -"X carriage rods. In other words, this is the height of the clearance " -"cylinder around your extruder, and it represents the maximum depth the " -"extruder can peek before colliding with other printed objects." +"Set this to the vertical distance between your nozzle tip and (usually) the X " +"carriage rods. In other words, this is the height of the clearance cylinder " +"around your extruder, and it represents the maximum depth the extruder can " +"peek before colliding with other printed objects." msgstr "" -"Defina isto para a distância vertical entre a ponta do bico e (normalmente) " -"as hastes do X. Em outras palavras, esta é a altura do cilindro de folga em " -"torno de sua extrusora, e representa a profundidade máxima que a extrusora " -"pode espreitar antes de colidir com outros objetos impressos." +"Defina isto para a distância vertical entre a ponta do bico e (normalmente) as " +"hastes do X. Em outras palavras, esta é a altura do cilindro de folga em torno " +"de sua extrusora, e representa a profundidade máxima que a extrusora pode " +"espreitar antes de colidir com outros objetos impressos." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:548 msgid "" -"Set this to the clearance radius around your extruder. If the extruder is " -"not centered, choose the largest value for safety. This setting is used to " -"check for collisions and to display the graphical preview in the plater." +"Set this to the clearance radius around your extruder. If the extruder is not " +"centered, choose the largest value for safety. This setting is used to check " +"for collisions and to display the graphical preview in the plater." msgstr "" -"Defina isso para o raio de folga em torno de sua extrusora. Se a extrusora " -"não estiver centralizada, escolha o maior valor para a segurança. Essa " -"config. é usada para verificar colisões e exibir a visualização gráfica na " -"bandeja." +"Defina isso para o raio de folga em torno de sua extrusora. Se a extrusora não " +"estiver centralizada, escolha o maior valor para a segurança. Essa config. é " +"usada para verificar colisões e exibir a visualização gráfica na bandeja." -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Cor da extrusora" -#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Isso é usado apenas na interface Slic3r como uma ajuda visual." -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder offset" msgstr "Compensamento da extrusora" -#: src/libslic3r/PrintConfig.cpp:530 +#: src/libslic3r/PrintConfig.cpp:566 msgid "" -"If your firmware doesn't handle the extruder displacement you need the G-" -"code to take it into account. This option lets you specify the displacement " -"of each extruder with respect to the first one. It expects positive " -"coordinates (they will be subtracted from the XY coordinate)." +"If your firmware doesn't handle the extruder displacement you need the G-code " +"to take it into account. This option lets you specify the displacement of each " +"extruder with respect to the first one. It expects positive coordinates (they " +"will be subtracted from the XY coordinate)." msgstr "" -"Se o seu firmware não manipula o deslocamento da extrusora, você precisa do " -"G-code para levá-lo em conta. Esta opção permite especificar o deslocamento " -"de cada extrusora em relação à primeira. Ele espera coordenadas positivas " -"(eles serão subtraída da coordenada XY)." +"Se o seu firmware não manipula o deslocamento da extrusora, você precisa do G-" +"code para levá-lo em conta. Esta opção permite especificar o deslocamento de " +"cada extrusora em relação à primeira. Ele espera coordenadas positivas (eles " +"serão subtraída da coordenada XY)." -#: src/libslic3r/PrintConfig.cpp:539 +#: src/libslic3r/PrintConfig.cpp:575 msgid "Extrusion axis" msgstr "Eixo de extrusão" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:576 msgid "" "Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)." @@ -7723,28 +9066,28 @@ msgstr "" "Use esta opção para definir a letra do eixo associada à extrusora da sua " "impressora (geralmente E, mas algumas impressoras usam A)." -#: src/libslic3r/PrintConfig.cpp:545 +#: src/libslic3r/PrintConfig.cpp:581 msgid "Extrusion multiplier" msgstr "Multiplicador de extrusão" -#: src/libslic3r/PrintConfig.cpp:546 +#: src/libslic3r/PrintConfig.cpp:582 msgid "" "This factor changes the amount of flow proportionally. You may need to tweak " -"this setting to get nice surface finish and correct single wall widths. " -"Usual values are between 0.9 and 1.1. If you think you need to change this " -"more, check filament diameter and your firmware E steps." +"this setting to get nice surface finish and correct single wall widths. Usual " +"values are between 0.9 and 1.1. If you think you need to change this more, " +"check filament diameter and your firmware E steps." msgstr "" -"Esse fator altera a quantidade de fluxo proporcionalmente. Você pode " -"precisar de ajustar esta config. para obter acabamento de superfície " -"agradável e corrigir larguras de parede única. Os valores usuais são entre " -"0,9 e 1,1. Se você acha que precisa mudar isso mais, verifique o diâmetro do " -"filamento e os passos configurados no firmware da extrusora." +"Esse fator altera a quantidade de fluxo proporcionalmente. Você pode precisar " +"de ajustar esta config. para obter acabamento de superfície agradável e " +"corrigir larguras de parede única. Os valores usuais são entre 0,9 e 1,1. Se " +"você acha que precisa mudar isso mais, verifique o diâmetro do filamento e os " +"passos configurados no firmware da extrusora." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/libslic3r/PrintConfig.cpp:590 msgid "Default extrusion width" msgstr "Largura de extrusão padrão" -#: src/libslic3r/PrintConfig.cpp:556 +#: src/libslic3r/PrintConfig.cpp:592 msgid "" "Set this to a non-zero value to allow a manual extrusion width. If left to " "zero, Slic3r derives extrusion widths from the nozzle diameter (see the " @@ -7754,28 +9097,28 @@ msgid "" msgstr "" "Defina isso como um valor diferente de zero para permitir uma largura de " "extrusão manual. Se deixado a zero, Slic3r deriva larguras da extrusão do " -"diâmetro da ponteira (veja as dicas ferramentas para a largura da extrusão " -"do perímetro, a largura de extrusão do preenchimento etc.). Se expresso como " +"diâmetro da ponteira (veja as dicas ferramentas para a largura da extrusão do " +"perímetro, a largura de extrusão do preenchimento etc.). Se expresso como " "porcentagem (por exemplo: 230%), ele será calculado sobre a altura da camada." -#: src/libslic3r/PrintConfig.cpp:566 +#: src/libslic3r/PrintConfig.cpp:602 msgid "Keep fan always on" msgstr "Mantenha a ventoinha sempre ligada" -#: src/libslic3r/PrintConfig.cpp:567 +#: src/libslic3r/PrintConfig.cpp:603 msgid "" "If this is enabled, fan will never be disabled and will be kept running at " "least at its minimum speed. Useful for PLA, harmful for ABS." msgstr "" "Se isso estiver ativado, a ventoinha nunca será desativada e será mantida " -"funcionando pelo menos em sua velocidade mínima. Útil para o PLA, " -"prejudicial para o ABS." +"funcionando pelo menos em sua velocidade mínima. Útil para o PLA, prejudicial " +"para o ABS." -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Enable fan if layer print time is below" msgstr "Ative o ventoinha se o tempo de impressão da camada estiver abaixo" -#: src/libslic3r/PrintConfig.cpp:573 +#: src/libslic3r/PrintConfig.cpp:609 msgid "" "If layer print time is estimated below this number of seconds, fan will be " "enabled and its speed will be calculated by interpolating the minimum and " @@ -7785,23 +9128,23 @@ msgstr "" "segundos, a ventoinha será ativada e sua velocidade será calculada " "interpolando as velocidades mínima e máxima." -#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:611 src/libslic3r/PrintConfig.cpp:1823 msgid "approximate seconds" msgstr "segundos aproximados" -#: src/libslic3r/PrintConfig.cpp:588 +#: src/libslic3r/PrintConfig.cpp:624 msgid "Filament notes" msgstr "Notas de filamento" -#: src/libslic3r/PrintConfig.cpp:589 +#: src/libslic3r/PrintConfig.cpp:625 msgid "You can put your notes regarding the filament here." msgstr "Você pode colocar suas anotações sobre o filamento aqui." -#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 +#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 msgid "Max volumetric speed" msgstr "Máxima velocidade volumétrica" -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:634 msgid "" "Maximum volumetric speed allowed for this filament. Limits the maximum " "volumetric speed of a print to the minimum of print and filament volumetric " @@ -7811,27 +9154,27 @@ msgstr "" "velocidade volumétrica máxima de uma impressão ao mínimo de velocidade " "volumétrica de impressão e de filamento. Defina como zero para nenhum limite." -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:643 msgid "Loading speed" msgstr "Velocidade de carregamento" -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Speed used for loading the filament on the wipe tower." msgstr "Velocidade utilizada para carregar o filamento na torre de limpeza." -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Loading speed at the start" msgstr "Velocidade de carregamento no início" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:652 msgid "Speed used at the very beginning of loading phase." msgstr "Velocidade utilizada no início da fase de carregamento." -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Unloading speed" msgstr "Velocidade de descarregamento" -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:660 msgid "" "Speed used for unloading the filament on the wipe tower (does not affect " "initial part of unloading just after ramming)." @@ -7839,106 +9182,105 @@ msgstr "" "Velocidade utilizada para descarregar o filamento na torre de limpeza (não " "afeta a parte inicial do descarregamento logo após o Ramming)." -#: src/libslic3r/PrintConfig.cpp:632 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Unloading speed at the start" msgstr "Velocidade de descarregamento no início" -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:669 msgid "" "Speed used for unloading the tip of the filament immediately after ramming." msgstr "" "Velocidade usada para descarregar a ponta do filamento imediatamente após o " "Ramming." -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:676 msgid "Delay after unloading" msgstr "Atraso após o descarregamento" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:677 msgid "" "Time to wait after the filament is unloaded. May help to get reliable " "toolchanges with flexible materials that may need more time to shrink to " "original dimensions." msgstr "" -"Tempo de espera após o filamento ser descarregado. Pode ajudar a obter " -"trocas de ferramenta confiáveis com materiais flexíveis que podem precisar " -"de mais tempo para reduzir as dimensões originais." +"Tempo de espera após o filamento ser descarregado. Pode ajudar a obter trocas " +"de ferramenta confiáveis com materiais flexíveis que podem precisar de mais " +"tempo para reduzir as dimensões originais." -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:686 msgid "Number of cooling moves" msgstr "Número de movimentos de resfriamento" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:687 msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves." +"Filament is cooled by being moved back and forth in the cooling tubes. Specify " +"desired number of these moves." msgstr "" "O filamento é resfriado por ser movido para frente e para trás nos tubos de " "resfriamento. Especifique o número desejado desses movimentos." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Speed of the first cooling move" msgstr "Velocidade do primeiro movimento de resfriamento" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:696 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "" "Movimentos de resfriamento estão gradualmente acelerando a partir desta " "velocidade." -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Minimal purge on wipe tower" msgstr "Remoção mínima na torre da limpeza" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:704 msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"stable. Before purging the print head into an infill or a sacrificial object, " +"Slic3r will always prime this amount of material into the wipe tower to " +"produce successive infill or sacrificial object extrusions reliably." msgstr "" "Após uma mudança da ferramenta, a posição exata do filamento recentemente " -"carregado dentro da ponteira pode não ser conhecida, e a pressão do " -"filamento provavelmente ainda não esteja estável. Antes de purgar a cabeça " -"de impressão em um preenchimento ou um objeto sacrificial, Slic3r sempre " -"Prime esta quantidade de material para a torre de limpeza para produzir " -"sucessivas preenchimento ou sacrificial objeto extrusões de forma confiável." +"carregado dentro da ponteira pode não ser conhecida, e a pressão do filamento " +"provavelmente ainda não esteja estável. Antes de purgar a cabeça de impressão " +"em um preenchimento ou um objeto sacrificial, Slic3r sempre Prime esta " +"quantidade de material para a torre de limpeza para produzir sucessivas " +"preenchimento ou sacrificial objeto extrusões de forma confiável." -#: src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:708 msgid "mm³" msgstr "mm³" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:714 msgid "Speed of the last cooling move" msgstr "Velocidade do último movimento de resfriamento" -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:715 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "" -"Movimentos de resfriamento estão gradualmente acelerando para esta " -"velocidade." +"Movimentos de resfriamento estão gradualmente acelerando para esta velocidade." -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Filament load time" msgstr "Tempo de carga do filamento" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:723 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." +"filament during a tool change (when executing the T code). This time is added " +"to the total print time by the G-code time estimator." msgstr "" "Tempo para o firmware da impressora (ou a Multi Material Unit 2.0 para " "carregar um novo filamento durante uma mudança de ferramenta (ao executar o " -"código T). Esse tempo é adicionado ao tempo total de impressão pelo " -"estimador de tempo do G-code." +"código T). Esse tempo é adicionado ao tempo total de impressão pelo estimador " +"de tempo do G-code." -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:730 msgid "Ramming parameters" msgstr "Parâmetros de Ramming" -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:731 msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters." @@ -7946,152 +9288,159 @@ msgstr "" "Essa cadeia de caracteres é editada por rammingdialog e contém parâmetros " "específicos de Ramming." -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Filament unload time" msgstr "Tempo de descarregamento do filamento" -#: src/libslic3r/PrintConfig.cpp:702 +#: src/libslic3r/PrintConfig.cpp:738 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." +"filament during a tool change (when executing the T code). This time is added " +"to the total print time by the G-code time estimator." msgstr "" -"Tempo para o firmware da impressora (ou a unidade de material multi 2,0) " -"para descarregar um filamento durante uma mudança de ferramenta (ao executar " -"o código T). Esse tempo é adicionado ao tempo total de impressão pelo " -"estimador de tempo do G-code." +"Tempo para o firmware da impressora (ou a unidade de material multi 2,0) para " +"descarregar um filamento durante uma mudança de ferramenta (ao executar o " +"código T). Esse tempo é adicionado ao tempo total de impressão pelo estimador " +"de tempo do G-code." -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:746 msgid "" "Enter your filament diameter here. Good precision is required, so use a " "caliper and do multiple measurements along the filament, then compute the " "average." msgstr "" "Insira o diâmetro do filamento aqui. Boa precisão é necessária, então use um " -"paquímetro e fazer várias medições ao longo do filamento, em seguida, " -"calcular a média." +"paquímetro e fazer várias medições ao longo do filamento, em seguida, calcular " +"a média." -#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/libslic3r/PrintConfig.cpp:753 src/libslic3r/PrintConfig.cpp:2646 +#: src/libslic3r/PrintConfig.cpp:2647 msgid "Density" msgstr "Densidade" -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:754 msgid "" -"Enter your filament density here. This is only for statistical information. " -"A decent way is to weigh a known length of filament and compute the ratio of " -"the length to volume. Better is to calculate the volume directly through " +"Enter your filament density here. This is only for statistical information. A " +"decent way is to weigh a known length of filament and compute the ratio of the " +"length to volume. Better is to calculate the volume directly through " "displacement." msgstr "" "Insira sua densidade de filamento aqui. Isto é apenas para informação " -"estatística. Uma maneira decente é pesar um comprimento conhecido do " -"filamento e computar a relação do comprimento ao volume. Melhor é calcular o " -"volume diretamente através do deslocamento." +"estatística. Uma maneira decente é pesar um comprimento conhecido do filamento " +"e computar a relação do comprimento ao volume. Melhor é calcular o volume " +"diretamente através do deslocamento." -#: src/libslic3r/PrintConfig.cpp:721 +#: src/libslic3r/PrintConfig.cpp:757 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/libslic3r/PrintConfig.cpp:762 msgid "Filament type" msgstr "Tipo de filamento" -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:763 msgid "The filament material type for use in custom G-codes." msgstr "O tipo de material de filamento para uso em G-code customizados." -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:790 msgid "Soluble material" msgstr "Material solúvel" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Soluble material is most likely used for a soluble support." msgstr "O material solúvel é mais provável usado para um suporte solúvel." -#: src/libslic3r/PrintConfig.cpp:761 +#: src/libslic3r/PrintConfig.cpp:797 msgid "" -"Enter your filament cost per kg here. This is only for statistical " -"information." +"Enter your filament cost per kg here. This is only for statistical information." msgstr "" "Insira o seu custo de filamento por kg aqui. Isto é apenas para informação " "estatística." -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:798 msgid "money/kg" msgstr "dinheiro/kg" -#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 msgid "(Unknown)" msgstr "(Desconhecido)" -#: src/libslic3r/PrintConfig.cpp:775 +#: src/libslic3r/PrintConfig.cpp:811 msgid "Fill angle" msgstr "Ângulo de preenchimento" -#: src/libslic3r/PrintConfig.cpp:777 +#: src/libslic3r/PrintConfig.cpp:813 msgid "" "Default base angle for infill orientation. Cross-hatching will be applied to " -"this. Bridges will be infilled using the best direction Slic3r can detect, " -"so this setting does not affect them." +"this. Bridges will be infilled using the best direction Slic3r can detect, so " +"this setting does not affect them." msgstr "" "Ângulo padrão para a orientação de preenchimento. A hachura cruzada será " -"aplicada a isso. Pontes serão preenchidas usando a melhor direção Slic3r " -"pode detectar, portanto, essa config. não vai afeta-los." +"aplicada a isso. Pontes serão preenchidas usando a melhor direção Slic3r pode " +"detectar, portanto, essa config. não vai afeta-los." -#: src/libslic3r/PrintConfig.cpp:789 +#: src/libslic3r/PrintConfig.cpp:825 msgid "Fill density" msgstr "Densidade de preenchimento" -#: src/libslic3r/PrintConfig.cpp:791 +#: src/libslic3r/PrintConfig.cpp:827 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Densidade de preenchimento interno, expresso na faixa de 0%-100%." -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:862 msgid "Fill pattern" msgstr "Padrão de preenchimento" -#: src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:864 msgid "Fill pattern for general low-density infill." msgstr "Padrão de preenchimento para preenchimento de baixa densidade." -#: src/libslic3r/PrintConfig.cpp:844 +#: src/libslic3r/PrintConfig.cpp:882 msgid "Grid" msgstr "Grade" -#: src/libslic3r/PrintConfig.cpp:845 +#: src/libslic3r/PrintConfig.cpp:883 msgid "Triangles" msgstr "Triângulos" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:884 msgid "Stars" msgstr "Estrelas" -#: src/libslic3r/PrintConfig.cpp:847 +#: src/libslic3r/PrintConfig.cpp:885 msgid "Cubic" msgstr "Cúbico" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:886 msgid "Line" msgstr "Linha" -#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 +#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 msgid "Honeycomb" msgstr "Hexágono" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:889 msgid "3D Honeycomb" msgstr "Hexágono 3D" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Gyroid" msgstr "Giróide" -#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 -#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:894 +msgid "Adaptive Cubic" +msgstr "Adaptativo" + +#: src/libslic3r/PrintConfig.cpp:895 +msgid "Support Cubic" +msgstr "Pilar de suporte" + +#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 msgid "First layer" msgstr "Primeira camada" -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:900 msgid "" "This is the acceleration your printer will use for first layer. Set zero to " "disable acceleration control for first layer." @@ -8099,7 +9448,11 @@ msgstr "" "Esta é a aceleração que sua impressora usará para a primeira camada. Defina " "zero para desabilitar o controle de aceleração para a primeira camada." -#: src/libslic3r/PrintConfig.cpp:869 +#: src/libslic3r/PrintConfig.cpp:909 +msgid "First layer bed temperature" +msgstr "Velocidade da primeira camada" + +#: src/libslic3r/PrintConfig.cpp:910 msgid "" "Heated build plate temperature for the first layer. Set this to zero to " "disable bed temperature control commands in the output." @@ -8107,12 +9460,12 @@ msgstr "" "Temperatura da mesa aquecida para a primeira camada. Defina isso como zero " "para desabilitar os comandos de controle de temperatura da mesa na saída." -#: src/libslic3r/PrintConfig.cpp:878 +#: src/libslic3r/PrintConfig.cpp:920 msgid "" -"Set this to a non-zero value to set a manual extrusion width for first " -"layer. You can use this to force fatter extrudates for better adhesion. If " -"expressed as percentage (for example 120%) it will be computed over first " -"layer height. If set to zero, it will use the default extrusion width." +"Set this to a non-zero value to set a manual extrusion width for first layer. " +"You can use this to force fatter extrudates for better adhesion. If expressed " +"as percentage (for example 120%) it will be computed over first layer height. " +"If set to zero, it will use the default extrusion width." msgstr "" "Defina isso como um valor diferente de zero para definir uma largura de " "extrusão manual para a primeira camada. Você pode usar este para forçar " @@ -8120,7 +9473,7 @@ msgstr "" "exemplo, 120%) será computado sobre a primeira altura da camada. Se definido " "como zero, ele usará a largura de extrusão padrão." -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:933 msgid "" "When printing with very low layer heights, you might still want to print a " "thicker bottom layer to improve adhesion and tolerance for non perfect build " @@ -8128,27 +9481,30 @@ msgid "" "example: 150%) over the default layer height." msgstr "" "Ao imprimir com alturas muito baixas da camada, você pode ainda querer " -"imprimir uma camada inferior mais grossa para melhorar a adesão e a " -"tolerância para mesas não perfeitas. Isso pode ser expresso como um valor " -"absoluto ou como uma porcentagem (por exemplo: 150%) sobre a altura da " -"camada padrão." +"imprimir uma camada inferior mais grossa para melhorar a adesão e a tolerância " +"para mesas não perfeitas. Isso pode ser expresso como um valor absoluto ou " +"como uma porcentagem (por exemplo: 150%) sobre a altura da camada padrão." -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:942 msgid "First layer speed" msgstr "Velocidade da primeira camada" -#: src/libslic3r/PrintConfig.cpp:901 +#: src/libslic3r/PrintConfig.cpp:943 msgid "" -"If expressed as absolute value in mm/s, this speed will be applied to all " -"the print moves of the first layer, regardless of their type. If expressed " -"as a percentage (for example: 40%) it will scale the default speeds." +"If expressed as absolute value in mm/s, this speed will be applied to all the " +"print moves of the first layer, regardless of their type. If expressed as a " +"percentage (for example: 40%) it will scale the default speeds." msgstr "" -"Se expresso como valor absoluto em mm/s, esta velocidade será aplicada a " -"todos os movimentos de impressão da primeira camada, independentemente do " -"seu tipo. Se expresso em porcentagem(por exemplo: 40%) Ele dimensionará as " -"velocidades padrão." +"Se expresso como valor absoluto em mm/s, esta velocidade será aplicada a todos " +"os movimentos de impressão da primeira camada, independentemente do seu tipo. " +"Se expresso em porcentagem(por exemplo: 40%) Ele dimensionará as velocidades " +"padrão." -#: src/libslic3r/PrintConfig.cpp:911 +#: src/libslic3r/PrintConfig.cpp:953 +msgid "First layer extruder temperature" +msgstr "Temperatura do extrusor na primeira camada" + +#: src/libslic3r/PrintConfig.cpp:954 msgid "" "Extruder temperature for first layer. If you want to control temperature " "manually during print, set this to zero to disable temperature control " @@ -8158,7 +9514,7 @@ msgstr "" "temperatura manualmente durante a impressão, defina isso como zero para " "desabilitar os comandos de controle de temperatura no arquivo de saída." -#: src/libslic3r/PrintConfig.cpp:920 +#: src/libslic3r/PrintConfig.cpp:964 msgid "" "Speed for filling small gaps using short zigzag moves. Keep this reasonably " "low to avoid too much shaking and resonance issues. Set zero to disable gaps " @@ -8169,107 +9525,106 @@ msgstr "" "problemas de ressonância. Defina zero para desabilitar o preenchimento de " "lacunas." -#: src/libslic3r/PrintConfig.cpp:928 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Verbose G-code" msgstr "Gcode detalhado" -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:973 msgid "" "Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." +"descriptive text. If you print from SD card, the additional weight of the file " +"could make your firmware slow down." msgstr "" "Habilite isso para obter um arquivo de G-code comentado, com cada linha " "explicada por um texto descritivo. Se você imprimir a partir do cartão SD, o " "peso adicional do arquivo pode fazer o seu firmware ficar mais lento." -#: src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:980 msgid "G-code flavor" msgstr "Tipo de G-code" -#: src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:981 msgid "" "Some G/M-code commands, including temperature control and others, are not " "universal. Set this option to your printer's firmware to get a compatible " "output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any " "extrusion value at all." msgstr "" -"Alguns comandos G/M-code, incluindo controle de temperatura e outros, não " -"são universais. Defina esta opção para o firmware da impressora para obter " -"uma saída compatível. O \"sem extrusão\" tipo impede PrusaSlicer de exportar " +"Alguns comandos G/M-code, incluindo controle de temperatura e outros, não são " +"universais. Defina esta opção para o firmware da impressora para obter uma " +"saída compatível. O \"sem extrusão\" tipo impede PrusaSlicer de exportar " "qualquer valor de extrusão em tudo." -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:1004 msgid "No extrusion" msgstr "Sem extrusão" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Label objects" msgstr "Rotular objetos" -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1010 msgid "" "Enable this to add comments into the G-Code labeling print moves with what " -"object they belong to, which is useful for the Octoprint CancelObject " -"plugin. This settings is NOT compatible with Single Extruder Multi Material " -"setup and Wipe into Object / Wipe into Infill." +"object they belong to, which is useful for the Octoprint CancelObject plugin. " +"This settings is NOT compatible with Single Extruder Multi Material setup and " +"Wipe into Object / Wipe into Infill." msgstr "" "Habilite isso para adicionar comentários aos movimentos de impressão de " "rotulagem do G-code com o objeto ao qual eles pertencem, o que é útil para o " -"plugin Octoprint CancelObject. Essas config. não são compatíveis com a " -"config. de multi material de extrusora única e limpe em objeto/limpar em " -"preenchimento." +"plugin Octoprint CancelObject. Essas config. não são compatíveis com a config. " +"de multi material de extrusora única e limpe em objeto/limpar em preenchimento." -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1017 msgid "High extruder current on filament swap" msgstr "Corrente elevada da extrusora na troca do filamento" -#: src/libslic3r/PrintConfig.cpp:974 +#: src/libslic3r/PrintConfig.cpp:1018 msgid "" "It may be beneficial to increase the extruder motor current during the " "filament exchange sequence to allow for rapid ramming feed rates and to " "overcome resistance when loading a filament with an ugly shaped tip." msgstr "" "Pode ser benéfico aumentar a corrente do motor da extrusora durante a " -"seqüência da troca do filamento para permitir taxas de alimentação de " -"Ramming rápidas e para superar a resistência ao carregar um filamento com " -"uma ponta feia." +"seqüência da troca do filamento para permitir taxas de alimentação de Ramming " +"rápidas e para superar a resistência ao carregar um filamento com uma ponta " +"feia." -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:1026 msgid "" -"This is the acceleration your printer will use for infill. Set zero to " -"disable acceleration control for infill." +"This is the acceleration your printer will use for infill. Set zero to disable " +"acceleration control for infill." msgstr "" "Esta é a aceleração que sua impressora usará para preenchimento. Defina zero " "para desabilitar o controle de aceleração para preenchimento." -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:1034 msgid "Combine infill every" msgstr "Combine preenchimento a cada" -#: src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "" "This feature allows to combine infill and speed up your print by extruding " "thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "" "Este recurso permite combinar preenchimento e acelerar a sua impressão por " -"extrusão camadas de preenchimento mais espessa, preservando perímetros " -"finos, assim, a precisão." +"extrusão camadas de preenchimento mais espessa, preservando perímetros finos, " +"assim, a precisão." -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1039 msgid "Combine infill every n layers" msgstr "Combine preenchimento cada n camadas" -#: src/libslic3r/PrintConfig.cpp:1001 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "Infill extruder" msgstr "Extrusora de preenchimento" -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1047 msgid "The extruder to use when printing infill." msgstr "" "A extrusora a ser utilizada quando estiver imprimindo preenchimento sólido." -#: src/libslic3r/PrintConfig.cpp:1011 +#: src/libslic3r/PrintConfig.cpp:1055 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill. If " "left zero, default extrusion width will be used if set, otherwise 1.125 x " @@ -8278,17 +9633,17 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" "Defina isso como um valor diferente de zero para definir uma largura de " -"extrusão manual para preenchimento. Se for deixado zero, a largura de " -"extrusão padrão será usada se definido, caso contrário, 1,125 x diâmetro da " -"ponteira será usado. Você pode querer usar extrusora mais larga para " -"acelerar o preenchimento e tornar suas peças mais fortes. Se expresso em " -"porcentagem(por exemplo, 90%) Ele será calculado sobre a altura da camada." +"extrusão manual para preenchimento. Se for deixado zero, a largura de extrusão " +"padrão será usada se definido, caso contrário, 1,125 x diâmetro da ponteira " +"será usado. Você pode querer usar extrusora mais larga para acelerar o " +"preenchimento e tornar suas peças mais fortes. Se expresso em porcentagem(por " +"exemplo, 90%) Ele será calculado sobre a altura da camada." -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1065 msgid "Infill before perimeters" msgstr "Preenchimento antes dos perímetros" -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1066 msgid "" "This option will switch the print order of perimeters and infill, making the " "latter first." @@ -8296,26 +9651,25 @@ msgstr "" "Esta opção irá mudar a ordem de impressão de perímetros e preenchimento, " "tornando o último primeiro." -#: src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Only infill where needed" msgstr "Somente preenchimento onde necessário" -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1073 msgid "" "This option will limit infill to the areas actually needed for supporting " "ceilings (it will act as internal support material). If enabled, slows down " "the G-code generation due to the multiple checks involved." msgstr "" "Esta opção limitará a preenchimento às áreas realmente necessárias para " -"suportar tetos (atuará como o material de sustentação interno). Se " -"habilitada, retarda a geração de G-code devido às várias verificações " -"envolvidas." +"suportar tetos (atuará como o material de sustentação interno). Se habilitada, " +"retarda a geração de G-code devido às várias verificações envolvidas." -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Infill/perimeters overlap" msgstr "Sobreposição de preenchimento/perímetros" -#: src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1082 msgid "" "This setting applies an additional overlap between infill and perimeters for " "better bonding. Theoretically this shouldn't be needed, but backlash might " @@ -8323,230 +9677,277 @@ msgid "" "perimeter extrusion width." msgstr "" "Esta config. aplica uma sobreposição adicional entre preenchimento e " -"perímetros para melhor colagem. Teoricamente isso não deveria ser " -"necessário, mas a folga pode causar lacunas. Se expresso em " -"porcentagem(exemplo: 15%) é calculado sobre a largura da extrusão do " -"perímetro." +"perímetros para melhor colagem. Teoricamente isso não deveria ser necessário, " +"mas a folga pode causar lacunas. Se expresso em porcentagem(exemplo: 15%) é " +"calculado sobre a largura da extrusão do perímetro." -#: src/libslic3r/PrintConfig.cpp:1049 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "" "Velocidade para imprimir o preenchimento interno. Defina como zero para auto." -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/libslic3r/PrintConfig.cpp:1101 msgid "Inherits profile" msgstr "Herda o perfil" -#: src/libslic3r/PrintConfig.cpp:1058 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Name of the profile, from which this profile inherits." msgstr "Nome do perfil, a partir do qual este perfil herda." -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1115 msgid "Interface shells" -msgstr "Interface dos perímetros externos." +msgstr "Interface dos perímetros externos" -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1116 msgid "" "Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material." +"Useful for multi-extruder prints with translucent materials or manual soluble " +"support material." msgstr "" "Force a geração de perímetros externos sólidas entre materiais/volumes " -"adjacentes. Útil para cópias da multi-extrusora com materiais translúcidos " -"ou material de sustentação solúvel manual." +"adjacentes. Útil para cópias da multi-extrusora com materiais translúcidos ou " +"material de sustentação solúvel manual." -#: src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1124 +msgid "Enable ironing" +msgstr "Ativar o modo oco" + +#: src/libslic3r/PrintConfig.cpp:1125 msgid "" -"This custom code is inserted at every layer change, right after the Z move " -"and before the extruder moves to the first layer point. Note that you can " -"use placeholder variables for all Slic3r settings as well as [layer_num] and " +"Enable ironing of the top layers with the hot print head for smooth surface" +msgstr "" +"Ative Passar Ferro nas camadas de topo com a cabeça de impressão a quente para " +"uma superfície lisa" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Ironing Type" +msgstr "Tipo de Passar Ferro" + +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Flow rate" +msgstr "Fluxo" + +#: src/libslic3r/PrintConfig.cpp:1147 +msgid "Percent of a flow rate relative to object's normal layer height." +msgstr "" +"Porcentagem de uma taxa de fluxo em relação à altura normal da camada do " +"objeto." + +#: src/libslic3r/PrintConfig.cpp:1155 +msgid "Spacing between ironing passes" +msgstr "Espaçamento entre passagem de ferro" + +#: src/libslic3r/PrintConfig.cpp:1157 +msgid "Distance between ironing lines" +msgstr "Distância entre cópias" + +#: src/libslic3r/PrintConfig.cpp:1164 src/libslic3r/PrintConfig.cpp:1166 +msgid "Ironing speed" +msgstr "Velocidade de carregamento" + +#: src/libslic3r/PrintConfig.cpp:1174 +msgid "" +"This custom code is inserted at every layer change, right after the Z move and " +"before the extruder moves to the first layer point. Note that you can use " +"placeholder variables for all Slic3r settings as well as [layer_num] and " "[layer_z]." msgstr "" "Este código personalizado é inserido em cada mudança de camada, logo após o " "movimento Z e antes que a extrusora se mova para o primeiro ponto de camada. " -"Observe que você pode usar variáveis de espaço reservado para todas as " -"config. Slic3r, bem como [layer_num] e [layer_z]." +"Observe que você pode usar variáveis de espaço reservado para todas as config. " +"Slic3r, bem como [layer_num] e [layer_z]." -#: src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1185 msgid "Supports remaining times" msgstr "Tempo de impressão restante" -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1186 msgid "" -"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " -"intervals into the G-code to let the firmware show accurate remaining time. " -"As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 " -"firmware supports M73 Qxx Sxx for the silent mode." +"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute intervals " +"into the G-code to let the firmware show accurate remaining time. As of now " +"only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware " +"supports M73 Qxx Sxx for the silent mode." msgstr "" -"Emita M73 P [porcentagem impressa] R [tempo restante em minutos] em " -"intervalos de 1 minuto no G-code para permitir que o firmware mostre o tempo " -"restante exato. A partir de agora apenas o firmware Prusa i3 MK3 reconhece " -"M73. Além disso, o firmware i3 MK3 suporta M73 QXX Sxx para o modo " -"silencioso." +"Emita M73 P [porcentagem impressa] R [tempo restante em minutos] em intervalos " +"de 1 minuto no G-code para permitir que o firmware mostre o tempo restante " +"exato. A partir de agora apenas o firmware Prusa i3 MK3 reconhece M73. Além " +"disso, o firmware i3 MK3 suporta M73 QXX Sxx para o modo silencioso." -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports stealth mode" msgstr "Suporta o modo silencioso" -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1195 msgid "The firmware supports stealth mode" msgstr "O firmware suporta o modo silencioso" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1200 +msgid "How to apply" +msgstr "Como aplicar" + +#: src/libslic3r/PrintConfig.cpp:1201 +msgid "Purpose of Machine Limits" +msgstr "Limites da máquina" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "How to apply the Machine Limits" +msgstr "Como aplicar os Limites da Máquina" + +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Maximum feedrate X" msgstr "Máxima taxa de alimentação do X" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Maximum feedrate Y" msgstr "Máxima taxa de alimentação do Y" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1235 msgid "Maximum feedrate Z" msgstr "Máxima taxa de alimentação do Z" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1236 msgid "Maximum feedrate E" msgstr "Máxima taxa de alimentação do E" -#: src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Maximum feedrate of the X axis" msgstr "Máxima taxa de alimentação do eixo X" -#: src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Maximum feedrate of the Y axis" msgstr "Máxima taxa de alimentação do eixo Y" -#: src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Maximum feedrate of the Z axis" msgstr "Máxima taxa de alimentação do eixo Z" -#: src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "Maximum feedrate of the E axis" msgstr "Máxima taxa de alimentação do eixo E" -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Maximum acceleration X" msgstr "Aceleração máxima do X" -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Maximum acceleration Y" msgstr "Aceleração máxima do Y" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "Maximum acceleration Z" msgstr "Aceleração máxima do Z" -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1253 msgid "Maximum acceleration E" msgstr "Aceleração máxima do E" -#: src/libslic3r/PrintConfig.cpp:1148 +#: src/libslic3r/PrintConfig.cpp:1256 msgid "Maximum acceleration of the X axis" msgstr "Aceleração máxima do eixo X" -#: src/libslic3r/PrintConfig.cpp:1149 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Maximum acceleration of the Y axis" msgstr "Aceleração máxima do eixo Y" -#: src/libslic3r/PrintConfig.cpp:1150 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Maximum acceleration of the Z axis" msgstr "Aceleração máxima do eixo Z" -#: src/libslic3r/PrintConfig.cpp:1151 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Maximum acceleration of the E axis" msgstr "Aceleração máxima do eixo E" -#: src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Maximum jerk X" msgstr "Máximo empurrão X" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Maximum jerk Y" msgstr "Máximo empurrão Y" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1269 msgid "Maximum jerk Z" msgstr "Máximo empurrão Z" -#: src/libslic3r/PrintConfig.cpp:1162 +#: src/libslic3r/PrintConfig.cpp:1270 msgid "Maximum jerk E" msgstr "Máximo empurrão E" -#: src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1273 msgid "Maximum jerk of the X axis" msgstr "Máximo empurrão do eixo X" -#: src/libslic3r/PrintConfig.cpp:1166 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "Maximum jerk of the Y axis" msgstr "Máximo empurrão do eixo Y" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1275 msgid "Maximum jerk of the Z axis" msgstr "Máximo empurrão do eixo Z" -#: src/libslic3r/PrintConfig.cpp:1168 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Maximum jerk of the E axis" msgstr "Máximo empurrão do eixo E" -#: src/libslic3r/PrintConfig.cpp:1178 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Minimum feedrate when extruding" msgstr "Taxa de alimentação mínima ao extrudar" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1288 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Taxa de alimentação mínima ao extrudar (M205 S)" -#: src/libslic3r/PrintConfig.cpp:1188 +#: src/libslic3r/PrintConfig.cpp:1296 msgid "Minimum travel feedrate" msgstr "Taxa de alimentação mínima ao viajar" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Minimum travel feedrate (M205 T)" msgstr "Taxa de alimentação mínima ao viajar (M205 T)" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Maximum acceleration when extruding" msgstr "Aceleração máxima quando expurgando" -#: src/libslic3r/PrintConfig.cpp:1200 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Aceleração máxima quando extrudando (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Maximum acceleration when retracting" msgstr "Aceleração máxima durante a retração" -#: src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1318 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Aceleração máxima quando retração (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 msgid "Max" msgstr "Máx" -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "This setting represents the maximum speed of your fan." msgstr "Esta config. representa a velocidade máxima da sua ventoinha." -#: src/libslic3r/PrintConfig.cpp:1227 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1335 +#, c-format msgid "" -"This is the highest printable layer height for this extruder, used to cap " -"the variable layer height and support layer height. Maximum recommended " -"layer height is 75% of the extrusion width to achieve reasonable inter-layer " +"This is the highest printable layer height for this extruder, used to cap the " +"variable layer height and support layer height. Maximum recommended layer " +"height is 75% of the extrusion width to achieve reasonable inter-layer " "adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "" -"Esta é a altura mais alta imprimível para esta extrusora, usada para tampar " -"a altura variável da camada e suportar a altura da camada. A altura " -"recomendada máxima da camada é 75% o da largura da extrusão para conseguir a " -"adesão razoável entre camadas. Se definido como 0, a altura da camada é " -"limitada a 75% o do diâmetro da ponteira." +"Esta é a altura mais alta imprimível para esta extrusora, usada para tampar a " +"altura variável da camada e suportar a altura da camada. A altura recomendada " +"máxima da camada é 75% o da largura da extrusão para conseguir a adesão " +"razoável entre camadas. Se definido como 0, a altura da camada é limitada a " +"75% o do diâmetro da ponteira." -#: src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1345 msgid "Max print speed" msgstr "Velocidade máxima de impressão" -#: src/libslic3r/PrintConfig.cpp:1238 +#: src/libslic3r/PrintConfig.cpp:1346 msgid "" "When setting other speed settings to 0 Slic3r will autocalculate the optimal " "speed in order to keep constant extruder pressure. This experimental setting " @@ -8557,116 +9958,114 @@ msgstr "" "extrusora. Esta config. experimental é usada para definir a velocidade de " "impressão mais alta que você deseja permitir." -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "" "This experimental setting is used to set the maximum volumetric speed your " "extruder supports." msgstr "" -"Esta config. experimental é usada para definir a velocidade máxima " -"volumétrica que sua extrusora suporta." +"Esta config. experimental é usada para definir a velocidade máxima volumétrica " +"que sua extrusora suporta." -#: src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "Max volumetric slope positive" msgstr "Inclinação volumétrica máx positiva" -#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 msgid "" "This experimental setting is used to limit the speed of change in extrusion " -"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " -"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/" -"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." +"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate of " +"1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) " +"to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "" -"Esta config. experimental é usada para limitar a velocidade de mudança na " -"taxa de extrusão. Um valor de 1,8 mm ³/s ² assegura que uma alteração da " -"taxa de extrusão de 1,8 mm ³/s (largura de extrusão de 0,45 mm, altura de " -"extrusão de 0,2 mm, avanço de 20 mm/s) para 5,4 mm ³/s (avanço 60 mm/s) " -"levará pelo menos 2 segundos." +"Esta config. experimental é usada para limitar a velocidade de mudança na taxa " +"de extrusão. Um valor de 1,8 mm ³/s ² assegura que uma alteração da taxa de " +"extrusão de 1,8 mm ³/s (largura de extrusão de 0,45 mm, altura de extrusão de " +"0,2 mm, avanço de 20 mm/s) para 5,4 mm ³/s (avanço 60 mm/s) levará pelo menos " +"2 segundos." -#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 msgid "mm³/s²" msgstr "mm ³/s ²" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Max volumetric slope negative" msgstr "Inclinação volumétrica máx negativa" -#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 msgid "Min" msgstr "Min" -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1389 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "" -"Esta config. representa o PWM mínimo que seu ventoinha precisa para " -"trabalhar." +"Esta config. representa o PWM mínimo que seu ventoinha precisa para trabalhar." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1398 msgid "" "This is the lowest printable layer height for this extruder and limits the " "resolution for variable layer height. Typical values are between 0.05 mm and " "0.1 mm." msgstr "" -"Esta é a altura mais baixa imprimível para esta extrusora e limita a " -"definição para a altura variável da camada. Os valores típicos são entre 0, " -"5 mm e 0,1 mm." +"Esta é a altura mais baixa imprimível para esta extrusora e limita a definição " +"para a altura variável da camada. Os valores típicos são entre 0, 5 mm e 0,1 " +"mm." -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Min print speed" msgstr "Velocidade mínima de impressão" -#: src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1407 msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r não vai escalar a velocidade abaixo desta velocidade." -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1414 msgid "Minimal filament extrusion length" msgstr "Comprimento mínimo da extrusão do filamento" -#: src/libslic3r/PrintConfig.cpp:1307 +#: src/libslic3r/PrintConfig.cpp:1415 msgid "" "Generate no less than the number of skirt loops required to consume the " -"specified amount of filament on the bottom layer. For multi-extruder " -"machines, this minimum applies to each extruder." +"specified amount of filament on the bottom layer. For multi-extruder machines, " +"this minimum applies to each extruder." msgstr "" -"Gerar não menos do que o número de voltas de saia necessários para consumir " -"a quantidade especificada de filamento na camada inferior. Para máquinas " +"Gerar não menos do que o número de voltas de saia necessários para consumir a " +"quantidade especificada de filamento na camada inferior. Para máquinas " "multiextrusoras, este mínimo aplica-se a cada extrusora." -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1424 msgid "Configuration notes" -msgstr "Notas de config." +msgstr "Notas de config" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/libslic3r/PrintConfig.cpp:1425 msgid "" "You can put here your personal notes. This text will be added to the G-code " "header comments." msgstr "" -"Você pode colocar aqui suas anotações pessoais. Este texto será adicionado " -"aos comentários do cabeçalho do G-code." +"Você pode colocar aqui suas anotações pessoais. Este texto será adicionado aos " +"comentários do cabeçalho do G-code." -#: src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1435 msgid "" "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" -msgstr "" -"Este é o diâmetro da ponteira da extrusora (por exemplo: 0.5, 0.35 etc.)" +msgstr "Este é o diâmetro da ponteira da extrusora (por exemplo: 0.5, 0.35 etc.)" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Host Type" msgstr "Tipo de host" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Slic3r can upload G-code files to a printer host. This field must contain the " +"kind of the host." msgstr "" -"Slic3r pode carregar arquivos de G-code para um host de impressora. Este " -"campo deve conter o tipo do host." +"Slic3r pode carregar arquivos de G-code para um host de impressora. Este campo " +"deve conter o tipo do host." -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Only retract when crossing perimeters" msgstr "Apenas retrair quando cruzar perímetros" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1457 msgid "" "Disables retraction when the travel path does not exceed the upper layer's " "perimeters (and thus any ooze will be probably invisible)." @@ -8675,7 +10074,7 @@ msgstr "" "camada superior (e, portanto, qualquer escorrimento será provavelmente " "invisível)." -#: src/libslic3r/PrintConfig.cpp:1356 +#: src/libslic3r/PrintConfig.cpp:1464 msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing. It will enable a tall skirt automatically and move extruders outside " @@ -8685,96 +10084,94 @@ msgstr "" "escorrimento. Ele vai permitir uma saia alta automaticamente e mover " "extrusoras fora de tal saia quando a mudança de temperatura." -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1471 msgid "Output filename format" msgstr "Formato de nome de arquivo de saída" -#: src/libslic3r/PrintConfig.cpp:1364 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "" "You can use all configuration options as variables inside this template. For " "example: [layer_height], [fill_density] etc. You can also use [timestamp], " "[year], [month], [day], [hour], [minute], [second], [version], " "[input_filename], [input_filename_base]." msgstr "" -"Você pode usar todas as opções de config. como variáveis dentro deste " -"modelo. Por exemplo: [camada_altura], [densidade_preenchimento] etc. Você " -"também pode usar [tempo], [ano], [mês], [dia], [hora], [minuto], [segundo], " -"[versão], [nome_entrada], [nome_entrada_base]." +"Você pode usar todas as opções de config. como variáveis dentro deste modelo. " +"Por exemplo: [camada_altura], [densidade_preenchimento] etc. Você também pode " +"usar [tempo], [ano], [mês], [dia], [hora], [minuto], [segundo], [versão], " +"[nome_entrada], [nome_entrada_base]." -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Detect bridging perimeters" msgstr "Detectar perímetros de ponte" -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "" "Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan." msgstr "" -"Opção experimental para ajustar o fluxo para angulações (o fluxo da ponte " -"será usado), para aplicar a velocidade da ponte a eles e para habilitar a " -"ventoinha." +"Opção experimental para ajustar o fluxo para angulações (o fluxo da ponte será " +"usado), para aplicar a velocidade da ponte a eles e para habilitar a ventoinha." -#: src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "Filament parking position" msgstr "Posição de estacionamento do filamento" -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1490 msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware." msgstr "" "Distância da ponta da extrusora da posição onde o filamento está estacionado " -"quando descarregado. Isso deve corresponder ao valor no firmware da " -"impressora." +"quando descarregado. Isso deve corresponder ao valor no firmware da impressora." -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Extra loading distance" msgstr "Distância de carregamento extra" -#: src/libslic3r/PrintConfig.cpp:1391 +#: src/libslic3r/PrintConfig.cpp:1499 msgid "" "When set to zero, the distance the filament is moved from parking position " "during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading." +"positive, it is loaded further, if negative, the loading move is shorter than " +"unloading." msgstr "" "Quando ajustado a zero, a distância que o filamento é movida da posição do " "estacionamento durante a carga é exatamente a mesma que foi movida para trás " "durante o descarregamento. Quando positivo, ele é carregado ainda mais, se " "negativo, o movimento de carga é menor do que o descarregamento." -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 -#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 msgid "Perimeters" msgstr "Perímetros" -#: src/libslic3r/PrintConfig.cpp:1400 +#: src/libslic3r/PrintConfig.cpp:1508 msgid "" "This is the acceleration your printer will use for perimeters. A high value " "like 9000 usually gives good results if your hardware is up to the job. Set " "zero to disable acceleration control for perimeters." msgstr "" "Esta é a aceleração que sua impressora usará para perímetros. Um alto valor " -"como 9000 geralmente dá bons resultados se o seu hardware suporta. Defina " -"zero para desabilitar o controle de aceleração para perímetros." +"como 9000 geralmente dá bons resultados se o seu hardware suporta. Defina zero " +"para desabilitar o controle de aceleração para perímetros." -#: src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Perimeter extruder" msgstr "Extrusora de perímetro" -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "" "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "" "A extrusora para usar ao imprimir perímetros e aba. A primeira extrusora é 1." -#: src/libslic3r/PrintConfig.cpp:1419 +#: src/libslic3r/PrintConfig.cpp:1527 msgid "" "Set this to a non-zero value to set a manual extrusion width for perimeters. " -"You may want to use thinner extrudates to get more accurate surfaces. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. If expressed as percentage (for example 200%) " -"it will be computed over layer height." +"You may want to use thinner extrudates to get more accurate surfaces. If left " +"zero, default extrusion width will be used if set, otherwise 1.125 x nozzle " +"diameter will be used. If expressed as percentage (for example 200%) it will " +"be computed over layer height." msgstr "" "Defina isso como um valor diferente de zero para definir uma largura de " "extrusão manual para perímetros. Você pode querer usar extrusões mais finos " @@ -8783,124 +10180,123 @@ msgstr "" "ponteira será usado. Se expresso em porcentagem(por exemplo, 200%) Ele será " "calculado sobre a altura da camada." -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "" "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "" -"Velocidade para perímetros (contornos, também chamadas de perímetros " -"externos verticais). Defina como zero para auto." +"Velocidade para perímetros (contornos, também chamadas de perímetros externos " +"verticais). Defina como zero para auto." -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1550 msgid "" "This option sets the number of perimeters to generate for each layer. Note " "that Slic3r may increase this number automatically when it detects sloping " "surfaces which benefit from a higher number of perimeters if the Extra " "Perimeters option is enabled." msgstr "" -"Esta opção define o número de perímetros a gerar para cada camada. Observe " -"que o Slic3r pode aumentar esse número automaticamente quando detecta " -"superfícies inclinadas que se beneficiam de um número maior de perímetros se " -"a opção extra perímetros estiver habilitada." +"Esta opção define o número de perímetros a gerar para cada camada. Observe que " +"o Slic3r pode aumentar esse número automaticamente quando detecta superfícies " +"inclinadas que se beneficiam de um número maior de perímetros se a opção extra " +"perímetros estiver habilitada." -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1554 msgid "(minimum)" msgstr "(mínimo)" -#: src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1562 msgid "" "If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." +"their absolute paths here. Separate multiple scripts with a semicolon. Scripts " +"will be passed the absolute path to the G-code file as the first argument, and " +"they can access the Slic3r config settings by reading environment variables." msgstr "" -"Se você quiser processar o G-code de saída por meio de scripts " -"personalizados, basta listar seus caminhos absolutos aqui. Separe vários " -"scripts com um ponto-e-vírgula. Os scripts serão passados o caminho absoluto " -"para o arquivo de G-code como o primeiro argumento, e eles poderão acessar " -"as config. de config. do Slic3r lendo variáveis de ambiente." +"Se você quiser processar o G-code de saída por meio de scripts personalizados, " +"basta listar seus caminhos absolutos aqui. Separe vários scripts com um ponto-" +"e-vírgula. Os scripts serão passados o caminho absoluto para o arquivo de G-" +"code como o primeiro argumento, e eles poderão acessar as config. de config. " +"do Slic3r lendo variáveis de ambiente." -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "Printer type" msgstr "Tipo de impressora" -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/libslic3r/PrintConfig.cpp:1575 msgid "Type of the printer." msgstr "Tipo da impressora." -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Printer notes" msgstr "Notas da impressora" -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "You can put your notes regarding the printer here." msgstr "Você pode colocar suas anotações sobre a impressora aqui." -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "Printer vendor" msgstr "Fornecedor da impressora" -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1590 msgid "Name of the printer vendor." msgstr "Nome do fornecedor da impressora." -#: src/libslic3r/PrintConfig.cpp:1487 +#: src/libslic3r/PrintConfig.cpp:1595 msgid "Printer variant" msgstr "Variante da impressora" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:1596 msgid "" "Name of the printer variant. For example, the printer variants may be " "differentiated by a nozzle diameter." msgstr "" -"Nome da variante da impressora. Por exemplo, as variantes da impressora " -"podem ser diferenciadas por um diâmetro da ponteira." +"Nome da variante da impressora. Por exemplo, as variantes da impressora podem " +"ser diferenciadas por um diâmetro da ponteira." -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Raft layers" msgstr "Camadas da estrado" -#: src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1611 msgid "" -"The object will be raised by this number of layers, and support material " -"will be generated under it." +"The object will be raised by this number of layers, and support material will " +"be generated under it." msgstr "" -"O objeto será elevado por este número de camadas, e o material de suporte " -"será gerado em baixo dele." +"O objeto será elevado por este número de camadas, e o material de suporte será " +"gerado em baixo dele." -#: src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "Resolution" msgstr "Resolução" -#: src/libslic3r/PrintConfig.cpp:1512 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "" -"Minimum detail resolution, used to simplify the input file for speeding up " -"the slicing job and reducing memory usage. High-resolution models often " -"carry more detail than printers can render. Set to zero to disable any " -"simplification and use full resolution from input." +"Minimum detail resolution, used to simplify the input file for speeding up the " +"slicing job and reducing memory usage. High-resolution models often carry more " +"detail than printers can render. Set to zero to disable any simplification and " +"use full resolution from input." msgstr "" "Resolução de detalhes mínimos, usada para simplificar o arquivo de entrada " -"para acelerar o trabalho de fatiamento e reduzir o uso de memória. Modelos " -"de alta resolução geralmente carregam mais detalhes do que as impressoras " -"podem renderizar. Defina como zero para desabilitar qualquer simplificação e " -"usar a resolução completa da entrada." +"para acelerar o trabalho de fatiamento e reduzir o uso de memória. Modelos de " +"alta resolução geralmente carregam mais detalhes do que as impressoras podem " +"renderizar. Defina como zero para desabilitar qualquer simplificação e usar a " +"resolução completa da entrada." -#: src/libslic3r/PrintConfig.cpp:1522 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Minimum travel after retraction" msgstr "Retração em viagens acima de" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "" "Retraction is not triggered when travel moves are shorter than this length." msgstr "" "A retração não é acionada quando os movimentos de viagem são mais curtos que " "esse comprimento." -#: src/libslic3r/PrintConfig.cpp:1529 +#: src/libslic3r/PrintConfig.cpp:1637 msgid "Retract amount before wipe" msgstr "Quantidade de retração antes da limpeza" -#: src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1638 msgid "" "With bowden extruders, it may be wise to do some amount of quick retract " "before doing the wipe movement." @@ -8908,105 +10304,104 @@ msgstr "" "Com extrusoras Bowden, pode ser sábio fazer alguma quantidade de retração " "rápida antes de fazer o movimento da limpeza." -#: src/libslic3r/PrintConfig.cpp:1537 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Retract on layer change" msgstr "Retrair na mudança de camada" -#: src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Este sinalizador impõe uma retração sempre que um movimento Z é feito." -#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 msgid "Length" msgstr "Comprimento" -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Retraction Length" msgstr "Comprimento de retração" -#: src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1653 msgid "" -"When retraction is triggered, filament is pulled back by the specified " -"amount (the length is measured on raw filament, before it enters the " -"extruder)." +"When retraction is triggered, filament is pulled back by the specified amount " +"(the length is measured on raw filament, before it enters the extruder)." msgstr "" "Quando a retração é acionada, o filamento é puxado para trás pela quantidade " "especificada (o comprimento é medido em filamento cru, antes de entrar na " "extrusora)." -#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 +#: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" msgstr "mm (zero para desativar)" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Retraction Length (Toolchange)" msgstr "Comprimento de retração (mudança de ferramenta)" -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1661 msgid "" -"When retraction is triggered before changing tool, filament is pulled back " -"by the specified amount (the length is measured on raw filament, before it " -"enters the extruder)." +"When retraction is triggered before changing tool, filament is pulled back by " +"the specified amount (the length is measured on raw filament, before it enters " +"the extruder)." msgstr "" "Quando a retração é acionada antes de mudar de ferramenta, o filamento é " "puxado para trás pela quantidade especificada (o comprimento é medido em " "filamento cru, antes de entrar na extrusora)." -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Lift Z" msgstr "Elevar Z" -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/libslic3r/PrintConfig.cpp:1670 msgid "" "If you set this to a positive value, Z is quickly raised every time a " "retraction is triggered. When using multiple extruders, only the setting for " "the first extruder will be considered." msgstr "" "Se você definir isso como um valor positivo, Z é rapidamente elevado sempre " -"que uma retração é acionada. Ao usar várias extrusoras, somente a config. " -"para a primeira extrusora será considerada." +"que uma retração é acionada. Ao usar várias extrusoras, somente a config. para " +"a primeira extrusora será considerada." -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Acima de Z" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1678 msgid "Only lift Z above" msgstr "Apenas elevar Z acima" -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1679 msgid "" "If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z. You can tune this setting for skipping lift on the " -"first layers." +"specified absolute Z. You can tune this setting for skipping lift on the first " +"layers." msgstr "" -"Se você definir isso como um valor positivo, o levante do Z só ocorrerá " -"acima do Z absoluto especificado. Você pode ajustar essa config. para pular " -"o elevador nas primeiras camadas." +"Se você definir isso como um valor positivo, o levante do Z só ocorrerá acima " +"do Z absoluto especificado. Você pode ajustar essa config. para pular o " +"elevador nas primeiras camadas." -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "Below Z" msgstr "Abaixo de Z" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Only lift Z below" msgstr "Apenas elevar Z abaixo" -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1688 msgid "" "If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z. You can tune this setting for limiting lift to the " -"first layers." +"specified absolute Z. You can tune this setting for limiting lift to the first " +"layers." msgstr "" -"Se você definir isso como um valor positivo, o levante do Z só ocorrerá " -"abaixo do Z absoluto especificado. Você pode ajustar essa config. para " -"limitar a elevação às primeiras camadas." +"Se você definir isso como um valor positivo, o levante do Z só ocorrerá abaixo " +"do Z absoluto especificado. Você pode ajustar essa config. para limitar a " +"elevação às primeiras camadas." -#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1704 msgid "Extra length on restart" msgstr "Comprimento extra no reinício" -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1697 msgid "" "When the retraction is compensated after the travel move, the extruder will " "push this additional amount of filament. This setting is rarely needed." @@ -9015,140 +10410,156 @@ msgstr "" "empurrar esta quantidade adicional de filamento. Essa config. raramente é " "necessária." -#: src/libslic3r/PrintConfig.cpp:1597 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." +"When the retraction is compensated after changing tool, the extruder will push " +"this additional amount of filament." msgstr "" "Quando a retração é compensada após a ferramenta de mudança, a extrusora " "empurrará esta quantidade adicional de filamento." -#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 msgid "Retraction Speed" msgstr "Velocidade da retração" -#: src/libslic3r/PrintConfig.cpp:1606 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "A velocidade para retrações (aplica-se somente ao motor da extrusora)." -#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 msgid "Deretraction Speed" msgstr "Velocidade de retorno de retração" -#: src/libslic3r/PrintConfig.cpp:1614 +#: src/libslic3r/PrintConfig.cpp:1722 msgid "" "The speed for loading of a filament into extruder after retraction (it only " -"applies to the extruder motor). If left to zero, the retraction speed is " -"used." +"applies to the extruder motor). If left to zero, the retraction speed is used." msgstr "" -"A velocidade para o carregamento de um filamento na extrusora após a " -"retração (aplica-se somente ao motor da extrusora). Se deixada como zero, a " -"velocidade de retração é usada." +"A velocidade para o carregamento de um filamento na extrusora após a retração " +"(aplica-se somente ao motor da extrusora). Se deixada como zero, a velocidade " +"de retração é usada." -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/libslic3r/PrintConfig.cpp:1729 msgid "Seam position" msgstr "Posição da costura" -#: src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1731 msgid "Position of perimeters starting points." msgstr "Posição inicial dos pontos do perímetro." -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "Random" msgstr "Aleatório" -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "Nearest" msgstr "Próximo" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1739 msgid "Aligned" msgstr "Alinhado(a)" -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1747 msgid "Direction" msgstr "Direção" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Preferred direction of the seam" msgstr "Direção preferida da costura" -#: src/libslic3r/PrintConfig.cpp:1642 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Seam preferred direction" msgstr "Direção de preferência da costura" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Jitter" msgstr "Jitter" -#: src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:1759 msgid "Seam preferred direction jitter" msgstr "Direção da costura preferencial para Jitter" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam - jitter" msgstr "Direção preferida da costura-jitter" -#: src/libslic3r/PrintConfig.cpp:1662 +#: src/libslic3r/PrintConfig.cpp:1769 +msgid "Serial port" +msgstr "Porte Serial" + +#: src/libslic3r/PrintConfig.cpp:1770 msgid "USB/serial port for printer connection." msgstr "USB/porta serial para conexão da impressora." -#: src/libslic3r/PrintConfig.cpp:1669 +#: src/libslic3r/PrintConfig.cpp:1777 msgid "Serial port speed" msgstr "Velocidade da porta serial" -#: src/libslic3r/PrintConfig.cpp:1670 +#: src/libslic3r/PrintConfig.cpp:1778 msgid "Speed (baud) of USB/serial port for printer connection." msgstr "Velocidade (baud) do USB/porta serial para conexão da impressora." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "Distância do objeto" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1788 msgid "" -"Distance between skirt and object(s). Set this to zero to attach the skirt " -"to the object(s) and get a brim for better adhesion." +"Distance between skirt and object(s). Set this to zero to attach the skirt to " +"the object(s) and get a brim for better adhesion." msgstr "" "Distância entre a saia e o objeto (s). Defina isso como zero para anexar a " "saia para o objeto (s) e obter uma aba para uma melhor aderência." -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "Skirt height" msgstr "Altura da saia" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "" -"Height of skirt expressed in layers. Set this to a tall value to use skirt " -"as a shield against drafts." +"Height of skirt expressed in layers. Set this to a tall value to use skirt as " +"a shield against drafts." msgstr "" -"Altura da saia expressa em camadas. Defina isso como um valor alto para usar " -"a saia como um escudo contra rascunhos." +"Altura da saia expressa em camadas. Defina isso como um valor alto para usar a " +"saia como um escudo contra rascunhos." -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1803 +msgid "Draft shield" +msgstr "Escudo de proteção" + +#: src/libslic3r/PrintConfig.cpp:1804 +msgid "" +"If enabled, the skirt will be as tall as a highest printed object. This is " +"useful to protect an ABS or ASA print from warping and detaching from print " +"bed due to wind draft." +msgstr "" +"Se habilitado, a saia será tão alta quanto um objeto impresso mais alto. Isso " +"é útil para proteger uma impressão ABS ou ASA de empenamento e destacamento da " +"base de impressão devido à corrente de vento." + +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Loops (minimum)" msgstr "Voltas (mínimo)" -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Skirt Loops" msgstr "Voltas de saia" -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1812 msgid "" -"Number of loops for the skirt. If the Minimum Extrusion Length option is " -"set, the number of loops might be greater than the one configured here. Set " -"this to zero to disable skirt completely." +"Number of loops for the skirt. If the Minimum Extrusion Length option is set, " +"the number of loops might be greater than the one configured here. Set this to " +"zero to disable skirt completely." msgstr "" "Número de voltas para a saia. Se a opção comprimento mínimo de extrusão " -"estiver definida, o número de voltas pode ser maior do que aquele " -"configurado aqui. Defina isso como zero para desabilitar a saia " -"completamente." +"estiver definida, o número de voltas pode ser maior do que aquele configurado " +"aqui. Defina isso como zero para desabilitar a saia completamente." -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "Slow down if layer print time is below" msgstr "Diminuir a velocidade quando o tempo de impressão for menor que" -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1821 msgid "" "If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value." @@ -9157,11 +10568,11 @@ msgstr "" "segundos, a velocidade de impressão será reduzida para estender a duração a " "esse valor." -#: src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Small perimeters" msgstr "Perímetro pequeno" -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1832 msgid "" "This separate setting will affect the speed of perimeters having radius <= " "6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " @@ -9172,11 +10583,11 @@ msgstr "" "será calculado sobre a velocidade de perímetros configurados acima. Defina " "como zero para auto." -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill threshold area" msgstr "Área de limiar de preenchimento sólido" -#: src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "" "Force solid infill for regions having a smaller area than the specified " "threshold." @@ -9184,37 +10595,37 @@ msgstr "" "Forçar preenchimento sólido para regiões com uma área menor do que o limite " "especificado." -#: src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Solid infill extruder" msgstr "Extrusora de preenchimento sólido" -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "The extruder to use when printing solid infill." msgstr "" "A extrusora a ser utilizada quando estiver imprimindo preenchimento sólido." -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1859 msgid "Solid infill every" msgstr "Preenchimento sólido a cada" -#: src/libslic3r/PrintConfig.cpp:1746 +#: src/libslic3r/PrintConfig.cpp:1861 msgid "" -"This feature allows to force a solid layer every given number of layers. " -"Zero to disable. You can set this to any value (for example 9999); Slic3r " -"will automatically choose the maximum possible number of layers to combine " +"This feature allows to force a solid layer every given number of layers. Zero " +"to disable. You can set this to any value (for example 9999); Slic3r will " +"automatically choose the maximum possible number of layers to combine " "according to nozzle diameter and layer height." msgstr "" "Este recurso permite forçar uma camada sólida a cada número determinado de " "camadas. Zero para desabilitar. Você pode definir isso para qualquer valor " -"(por exemplo 9999); Slic3r escolherá automaticamente o número máximo " -"possível de camadas para combinar de acordo com o diâmetro da ponteira e a " -"altura da camada." +"(por exemplo 9999); Slic3r escolherá automaticamente o número máximo possível " +"de camadas para combinar de acordo com o diâmetro da ponteira e a altura da " +"camada." -#: src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:1873 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "solid surfaces. If left zero, default extrusion width will be used if set, " @@ -9227,80 +10638,77 @@ msgstr "" "1,125 x diâmetro da ponteira será usado. Se expresso em porcentagem(por " "exemplo, 90%) Ele será calculado sobre a altura da camada." -#: src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:1884 msgid "" -"Speed for printing solid regions (top/bottom/internal horizontal shells). " -"This can be expressed as a percentage (for example: 80%) over the default " -"infill speed above. Set to zero for auto." +"Speed for printing solid regions (top/bottom/internal horizontal shells). This " +"can be expressed as a percentage (for example: 80%) over the default infill " +"speed above. Set to zero for auto." msgstr "" "Velocidade para imprimir regiões sólidas (topo/fundo/perímetros externos " -"horizontais internas). Isto pode ser expresso em porcentagem(por exemplo: " -"80%) sobre a velocidade de preenchimento padrão acima. Defina como zero para " -"auto." +"horizontais internas). Isto pode ser expresso em porcentagem(por exemplo: 80%) " +"sobre a velocidade de preenchimento padrão acima. Defina como zero para auto." -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Number of solid layers to generate on top and bottom surfaces." -msgstr "" -"Número de camadas sólidas a serem geradas nas interfaces do topo e base." +msgstr "Número de camadas sólidas a serem geradas nas interfaces do topo e base." -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 msgid "Minimum thickness of a top / bottom shell" msgstr "Espessura mínima de uma parede superior/inferior" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Spiral vase" msgstr "Vaso espiral" -#: src/libslic3r/PrintConfig.cpp:1795 +#: src/libslic3r/PrintConfig.cpp:1910 msgid "" "This feature will raise Z gradually while printing a single-walled object in " -"order to remove any visible seam. This option requires a single perimeter, " -"no infill, no top solid layers and no support material. You can still set " -"any number of bottom solid layers as well as skirt/brim loops. It won't work " -"when printing more than an object." +"order to remove any visible seam. This option requires a single perimeter, no " +"infill, no top solid layers and no support material. You can still set any " +"number of bottom solid layers as well as skirt/brim loops. It won't work when " +"printing more than an object." msgstr "" "Este recurso irá elevar Z gradualmente durante a impressão de um objeto de " "parede única, a fim de remover qualquer costura visível. Esta opção exige um " -"único perímetro, nenhum preenchimento, nenhumas camadas contínuas superiores " -"e nenhum material de sustentação. Você ainda pode definir qualquer número de " +"único perímetro, nenhum preenchimento, nenhumas camadas contínuas superiores e " +"nenhum material de sustentação. Você ainda pode definir qualquer número de " "camadas sólidas de fundo, bem como saia/aba voltas. Ele não funcionará ao " "imprimir mais de um objeto." -#: src/libslic3r/PrintConfig.cpp:1803 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "Temperature variation" msgstr "Variação de temperatura" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1919 msgid "" -"Temperature difference to be applied when an extruder is not active. Enables " -"a full-height \"sacrificial\" skirt on which the nozzles are periodically " -"wiped." +"Temperature difference to be applied when an extruder is not active. Enables a " +"full-height \"sacrificial\" skirt on which the nozzles are periodically wiped." msgstr "" "Diferença de temperatura a ser aplicada quando uma extrusora não está ativa. " "Permite uma saia \"sacrificial\" em que as ponteiras são limpadas " "periodicamente." -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "" "This start procedure is inserted at the beginning, after bed has reached the " -"target temperature and extruder just started heating, and before extruder " -"has finished heating. If PrusaSlicer detects M104 or M190 in your custom " -"codes, such commands will not be prepended automatically so you're free to " -"customize the order of heating commands and other custom actions. Note that " -"you can use placeholder variables for all PrusaSlicer settings, so you can " -"put a \"M109 S[first_layer_temperature]\" command wherever you want." +"target temperature and extruder just started heating, and before extruder has " +"finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, " +"such commands will not be prepended automatically so you're free to customize " +"the order of heating commands and other custom actions. Note that you can use " +"placeholder variables for all PrusaSlicer settings, so you can put a \"M109 " +"S[first_layer_temperature]\" command wherever you want." msgstr "" "Este procedimento do começo é introduzido no início, depois que a mesa " "alcançou a temperatura alvo e a extrusora apenas começou o aquecimento, e " -"antes que a extrusora terminasse o aquecimento. Se PrusaSlicer detecta M104 " -"ou M190 em seus códigos personalizados, esses comandos não serão precedidos " +"antes que a extrusora terminasse o aquecimento. Se PrusaSlicer detecta M104 ou " +"M190 em seus códigos personalizados, esses comandos não serão precedidos " "automaticamente para que você esteja livre para personalizar a ordem dos " "comandos de aquecimento e outras ações personalizadas. Observe que você pode " -"usar variáveis de espaço reservado para todas as config. de PrusaSlicer, " -"para que você possa colocar um comando \"M109 S " -"[temperatura_primeira_camada]\" onde quiser." +"usar variáveis de espaço reservado para todas as config. de PrusaSlicer, para " +"que você possa colocar um comando \"M109 S [temperatura_primeira_camada]\" " +"onde quiser." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1944 msgid "" "This start procedure is inserted at the beginning, after any printer start " "gcode (and after any toolchange to this filament in case of multi-material " @@ -9315,28 +10723,44 @@ msgstr "" "Este procedimento de início é inserido no começo, depois de qualquer " "impressora iniciar Gcode (e depois de qualquer troca de ferramenta para este " "filamento em caso de impressoras de vários materiais). Isso é usado para " -"substituir as config. de um filamento específico. Se PrusaSlicer detecta " -"M104, M109, M140 ou M190 em seus códigos personalizados, esses comandos não " -"serão precedidos automaticamente para que você esteja livre para " -"personalizar a ordem dos comandos de aquecimento e outras ações " -"personalizadas. Observe que você pode usar variáveis de espaço reservado " -"para todas as config. de PrusaSlicer, para que você possa colocar um comando " -"\"M109 S [temperatura_primeira_camada]\" onde quiser. Se você tiver várias " -"extrusoras, o Gcode é processado em ordem de extrusora." +"substituir as config. de um filamento específico. Se PrusaSlicer detecta M104, " +"M109, M140 ou M190 em seus códigos personalizados, esses comandos não serão " +"precedidos automaticamente para que você esteja livre para personalizar a " +"ordem dos comandos de aquecimento e outras ações personalizadas. Observe que " +"você pode usar variáveis de espaço reservado para todas as config. de " +"PrusaSlicer, para que você possa colocar um comando \"M109 S " +"[temperatura_primeira_camada]\" onde quiser. Se você tiver várias extrusoras, " +"o Gcode é processado em ordem de extrusora." -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1960 +msgid "Color change G-code" +msgstr "G-code de troca de ferramenta" + +#: src/libslic3r/PrintConfig.cpp:1961 +msgid "This G-code will be used as a code for the color change" +msgstr "Este G-code será usado como um código para a mudança de cor" + +#: src/libslic3r/PrintConfig.cpp:1970 +msgid "This G-code will be used as a code for the pause print" +msgstr "Este G-code será usado como um código para pausar a impressora" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "This G-code will be used as a custom code" +msgstr "Este G-code será usado como um código customizado" + +#: src/libslic3r/PrintConfig.cpp:1987 msgid "Single Extruder Multi Material" msgstr "Única extrusora multi material" -#: src/libslic3r/PrintConfig.cpp:1846 +#: src/libslic3r/PrintConfig.cpp:1988 msgid "The printer multiplexes filaments into a single hot end." msgstr "A impressora multiplexes filamentos em uma única extremidade quente." -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Prime all printing extruders" msgstr "Extrusar todas as extrusoras de impressão" -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." @@ -9344,62 +10768,60 @@ msgstr "" "Se ativada, todas as extrusoras de impressão extrusarão na aba dianteira da " "mesa de impressão no início da impressão." -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1999 msgid "No sparse layers (EXPERIMENTAL)" msgstr "Sem camadas esparsas (EXPERIMENTAL)" -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:2000 msgid "" -"If enabled, the wipe tower will not be printed on layers with no " -"toolchanges. On layers with a toolchange, extruder will travel downward to " -"print the wipe tower. User is responsible for ensuring there is no collision " -"with the print." +"If enabled, the wipe tower will not be printed on layers with no toolchanges. " +"On layers with a toolchange, extruder will travel downward to print the wipe " +"tower. User is responsible for ensuring there is no collision with the print." msgstr "" -"Se ativada, a torre de limpeza não será impressa em camadas sem alterações " -"de ferramentas. Em camadas com uma troca de ferramentas, o extrusor viajará " -"para baixo para imprimir a torre de limpeza. O usuário é responsável por " -"garantir que não haja colisão com a impressão." +"Se ativada, a torre de limpeza não será impressa em camadas sem alterações de " +"ferramentas. Em camadas com uma troca de ferramentas, o extrusor viajará para " +"baixo para imprimir a torre de limpeza. O usuário é responsável por garantir " +"que não haja colisão com a impressão." -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" msgstr "Gerar material de suporte" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." msgstr "Habilitar geração de material de suporte." -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:2013 msgid "Auto generated supports" msgstr "Gerar suportes automaticamente" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:2015 msgid "" "If checked, supports will be generated automatically based on the overhang " -"threshold value. If unchecked, supports will be generated inside the " -"\"Support Enforcer\" volumes only." +"threshold value. If unchecked, supports will be generated inside the \"Support " +"Enforcer\" volumes only." msgstr "" "Se marcada, os suportes serão gerados automaticamente com base no valor do " "limite de angulação. Se desmarcada, as sustentações serão geradas dentro dos " "volumes do \"reforçador de suporte\" somente." -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:2021 msgid "XY separation between an object and its support" msgstr "Separação entre o objeto e seu suporte em XY" -#: src/libslic3r/PrintConfig.cpp:1881 +#: src/libslic3r/PrintConfig.cpp:2023 msgid "" "XY separation between an object and its support. If expressed as percentage " "(for example 50%), it will be calculated over external perimeter width." msgstr "" "Separação entre o objeto e seu suporte em XY. Se expresso como porcentagem " -"(por exemplo, 50%), será calculado com base na espessura do perímetro " -"externo." +"(por exemplo, 50%), será calculado com base na espessura do perímetro externo." -#: src/libslic3r/PrintConfig.cpp:1891 +#: src/libslic3r/PrintConfig.cpp:2033 msgid "Pattern angle" msgstr "Ângulo do padrão" -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:2035 msgid "" "Use this setting to rotate the support material pattern on the horizontal " "plane." @@ -9407,7 +10829,7 @@ msgstr "" "Use essa config. para girar o padrão de material de suporte no plano " "horizontal." -#: src/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2045 src/libslic3r/PrintConfig.cpp:2840 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -9415,11 +10837,11 @@ msgstr "" "Apenas criar suporte se ele está em uma mesa. Não crie suporte em uma " "impressão." -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "Contact Z distance" msgstr "Distância de contato Z" -#: src/libslic3r/PrintConfig.cpp:1911 +#: src/libslic3r/PrintConfig.cpp:2053 msgid "" "The vertical distance between object and support material interface. Setting " "this to 0 will also prevent Slic3r from using bridge flow and speed for the " @@ -9429,24 +10851,24 @@ msgstr "" "Definir isso como 0 também impedirá Slic3r de usar o fluxo de ponte e a " "velocidade para a primeira camada de objeto." -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "0 (soluble)" msgstr "0 (solúvel)" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "0.2 (detachable)" msgstr "0.2 (destacável)" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/libslic3r/PrintConfig.cpp:2066 msgid "Enforce support for the first" msgstr "Reforçar suportes para a(s) primeira(s)" -#: src/libslic3r/PrintConfig.cpp:1926 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "" "Generate support material for the specified number of layers counting from " "bottom, regardless of whether normal support material is enabled or not and " -"regardless of any angle threshold. This is useful for getting more adhesion " -"of objects having a very thin or poor footprint on the build plate." +"regardless of any angle threshold. This is useful for getting more adhesion of " +"objects having a very thin or poor footprint on the build plate." msgstr "" "Gere material de suporte para o número especificado de camadas que contam da " "parte inferior, independentemente de o material de suporte normal estar " @@ -9454,64 +10876,63 @@ msgstr "" "para obter mais aderência de objetos com uma pegada muito fina ou fraca na " "placa de construção." -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Enforce support for the first n layers" msgstr "Reforçar suportes na(s) primera(s) n camada(s)" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "Support material/raft/skirt extruder" msgstr "Extrusora de material de suporte/estrado/saia" -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "" "The extruder to use when printing support material, raft and skirt (1+, 0 to " "use the current extruder to minimize tool changes)." msgstr "" -"A extrusora a ser usada ao imprimir material de suporte, estrado e saia (1 " -"+, 0 para usar a extrusora atual para minimizar as mudanças na ferramenta)." +"A extrusora a ser usada ao imprimir material de suporte, estrado e saia (1 +, " +"0 para usar a extrusora atual para minimizar as mudanças na ferramenta)." -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:2090 msgid "" "Set this to a non-zero value to set a manual extrusion width for support " -"material. If left zero, default extrusion width will be used if set, " -"otherwise nozzle diameter will be used. If expressed as percentage (for " -"example 90%) it will be computed over layer height." +"material. If left zero, default extrusion width will be used if set, otherwise " +"nozzle diameter will be used. If expressed as percentage (for example 90%) it " +"will be computed over layer height." msgstr "" "Defina isso como um valor diferente de zero para definir uma largura de " -"extrusão manual para material de suporte. Se deixada em zero, a largura " -"padrão da extrusão será usada, se não o diâmetro da ponteira será usado. Se " -"expresso em porcentagem(por exemplo, 90%) Ele será calculado sobre a altura " -"da camada." +"extrusão manual para material de suporte. Se deixada em zero, a largura padrão " +"da extrusão será usada, se não o diâmetro da ponteira será usado. Se expresso " +"em porcentagem(por exemplo, 90%) Ele será calculado sobre a altura da camada." -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Interface loops" msgstr "Voltas da interface" -#: src/libslic3r/PrintConfig.cpp:1959 +#: src/libslic3r/PrintConfig.cpp:2101 msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" "Cubra a camada de contato superior dos suportes com laços. Desativado por " "padrão." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Support material/raft interface extruder" msgstr "Extrusora de material de suporte/estrado" -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:2108 msgid "" -"The extruder to use when printing support material interface (1+, 0 to use " -"the current extruder to minimize tool changes). This affects raft too." +"The extruder to use when printing support material interface (1+, 0 to use the " +"current extruder to minimize tool changes). This affects raft too." msgstr "" "A extrusora para usar ao imprimir a relação material do apoio (1 +, 0 para " "usar o extrusor atual para minimizar mudanças da ferramenta). Isso afeta o " "estrado também." -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface layers" msgstr "Camadas de interface" -#: src/libslic3r/PrintConfig.cpp:1975 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "" "Number of interface layers to insert between the object(s) and support " "material." @@ -9519,55 +10940,54 @@ msgstr "" "Número de camadas de interface para inserir entre o objeto(s) e material de " "suporte." -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Interface pattern spacing" msgstr "Espaçamento do padrão da interface" -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2126 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "" -"Espaçamento entre as linhas de interface. Defina zero para obter uma " -"interface sólida." +"Espaçamento entre as linhas de interface. Defina zero para obter uma interface " +"sólida." -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "" "Speed for printing support material interface layers. If expressed as " -"percentage (for example 50%) it will be calculated over support material " -"speed." +"percentage (for example 50%) it will be calculated over support material speed." msgstr "" "Velocidade para camadas de interface de material de suporte de impressão. Se " "expresso em porcentagem(por exemplo, 50%) Ele será calculado sobre a " "velocidade do material de suporte." -#: src/libslic3r/PrintConfig.cpp:2002 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Pattern" msgstr "Padrão" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "Pattern used to generate support material." msgstr "Padrão usado para gerar material de suporte." -#: src/libslic3r/PrintConfig.cpp:2010 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Rectilinear grid" msgstr "Grade rectilínea" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Pattern spacing" msgstr "Padrão de espaçamento" -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Spacing between support material lines." msgstr "Espaçamento entre linhas de material de suporte." -#: src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Speed for printing support material." msgstr "Velocidade para imprimir material de suporte." -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "Synchronize with object layers" msgstr "Sincronizar com camadas de objeto" -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "" "Synchronize support layers with the object print layers. This is useful with " "multi-material printers, where the extruder switch is expensive." @@ -9576,37 +10996,37 @@ msgstr "" "útil com as impressoras do multi-material, onde o interruptor da extrusora é " "caro." -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Overhang threshold" msgstr "Limite de angulação" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "" -"Support material will not be generated for overhangs whose slope angle (90° " -"= vertical) is above the given threshold. In other words, this value " -"represent the most horizontal slope (measured from the horizontal plane) " -"that you can print without support material. Set to zero for automatic " -"detection (recommended)." +"Support material will not be generated for overhangs whose slope angle (90° = " +"vertical) is above the given threshold. In other words, this value represent " +"the most horizontal slope (measured from the horizontal plane) that you can " +"print without support material. Set to zero for automatic detection " +"(recommended)." msgstr "" "O material de suporte não será gerado para angulações cujo ângulo de " "inclinação (90 ° = vertical) esteja acima do limite determinado. Em outras " -"palavras, esse valor representa a inclinação mais horizontal (medida a " -"partir do plano horizontal) que você pode imprimir sem material de suporte. " -"Defina como zero para detecção automática (recomendado)." +"palavras, esse valor representa a inclinação mais horizontal (medida a partir " +"do plano horizontal) que você pode imprimir sem material de suporte. Defina " +"como zero para detecção automática (recomendado)." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "With sheath around the support" msgstr "Com bainha em torno do apoio" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2200 msgid "" -"Add a sheath (a single perimeter line) around the base support. This makes " -"the support more reliable, but also more difficult to remove." +"Add a sheath (a single perimeter line) around the base support. This makes the " +"support more reliable, but also more difficult to remove." msgstr "" "Adicione uma bainha (uma única linha de perímetro) em torno do suporte base. " "Isso torna o suporte mais confiável, mas também mais difícil de remover." -#: src/libslic3r/PrintConfig.cpp:2065 +#: src/libslic3r/PrintConfig.cpp:2207 msgid "" "Extruder temperature for layers after the first one. Set this to zero to " "disable temperature control commands in the output." @@ -9614,124 +11034,127 @@ msgstr "" "Temperatura da extrusora para camadas após a primeira. Defina como zero para " "desabilitar os comandos de controle de temperatura na saída." -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2210 +msgid "Extruder temperature" +msgstr "Temperaturas da mesa e da extrusora" + +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Detect thin walls" msgstr "Detectar paredes finas" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2218 msgid "" -"Detect single-width walls (parts where two extrusions don't fit and we need " -"to collapse them into a single trace)." +"Detect single-width walls (parts where two extrusions don't fit and we need to " +"collapse them into a single trace)." msgstr "" "Detecte paredes de largura única (partes onde duas extrusões não cabem e " "precisamos recolhê-las em um único traço)." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Threads" msgstr "Roscas" -#: src/libslic3r/PrintConfig.cpp:2082 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "" -"Threads are used to parallelize long-running tasks. Optimal threads number " -"is slightly above the number of available cores/processors." +"Threads are used to parallelize long-running tasks. Optimal threads number is " +"slightly above the number of available cores/processors." msgstr "" -"Tópicos são usados para paralelizar tarefas de execução demorada. O número " -"de tópicos ideais está ligeiramente acima do número de núcleos/processadores " +"Tópicos são usados para paralelizar tarefas de execução demorada. O número de " +"tópicos ideais está ligeiramente acima do número de núcleos/processadores " "disponíveis." -#: src/libslic3r/PrintConfig.cpp:2094 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "" "This custom code is inserted before every toolchange. Placeholder variables " "for all PrusaSlicer settings as well as {previous_extruder} and " -"{next_extruder} can be used. When a tool-changing command which changes to " -"the correct extruder is included (such as T{next_extruder}), PrusaSlicer " -"will emit no other such command. It is therefore possible to script custom " -"behaviour both before and after the toolchange." +"{next_extruder} can be used. When a tool-changing command which changes to the " +"correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit " +"no other such command. It is therefore possible to script custom behaviour " +"both before and after the toolchange." msgstr "" "Este código personalizado é inserido antes de cada troca de ferramenta. " "Variáveis de espaço reservado para todas as config. de PrusaSlicer, bem como " "{previous_extruder} e {next_extruder} podem ser usadas. Quando um comando de " -"mudança de ferramenta que muda para a extrusora correta está incluído (como " -"T {next_extruder}), PrusaSlicer emitirá nenhum outro comando tal. Portanto, " -"é possível script comportamento personalizado antes e depois da mudança de " +"mudança de ferramenta que muda para a extrusora correta está incluído (como T " +"{next_extruder}), PrusaSlicer emitirá nenhum outro comando tal. Portanto, é " +"possível script comportamento personalizado antes e depois da mudança de " "ferramenta." -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2250 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "top surfaces. You may want to use thinner extrudates to fill all narrow " -"regions and get a smoother finish. If left zero, default extrusion width " -"will be used if set, otherwise nozzle diameter will be used. If expressed as " +"regions and get a smoother finish. If left zero, default extrusion width will " +"be used if set, otherwise nozzle diameter will be used. If expressed as " "percentage (for example 90%) it will be computed over layer height." msgstr "" "Defina isso como um valor diferente de zero para definir uma largura de " "extrusão manual para preenchimento para superfícies superiores. Você pode " "querer usar extrusões mais finos para preencher todas as regiões estreitas e " "obter um acabamento mais suave. Se a esquerda zero, a largura padrão da " -"extrusão será usada se ajustado, se não o diâmetro da ponteira será usado. " -"Se expresso em porcentagem(por exemplo, 90%) Ele será calculado sobre a " -"altura da camada." +"extrusão será usada se ajustado, se não o diâmetro da ponteira será usado. Se " +"expresso em porcentagem(por exemplo, 90%) Ele será calculado sobre a altura da " +"camada." -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2262 msgid "" -"Speed for printing top solid layers (it only applies to the uppermost " -"external layers and not to their internal solid layers). You may want to " -"slow down this to get a nicer surface finish. This can be expressed as a " -"percentage (for example: 80%) over the solid infill speed above. Set to zero " -"for auto." +"Speed for printing top solid layers (it only applies to the uppermost external " +"layers and not to their internal solid layers). You may want to slow down this " +"to get a nicer surface finish. This can be expressed as a percentage (for " +"example: 80%) over the solid infill speed above. Set to zero for auto." msgstr "" "Velocidade para imprimir camadas sólidas superiores (só se aplica às camadas " -"externas superiores e não às suas camadas sólidas internas). Você pode " -"querer diminuir este para ter um revestimento de superfície mais agradável. " -"Isto pode ser expresso em porcentagem(por exemplo: 80%) sobre a velocidade " -"de preenchimento sólido acima. Defina como zero para auto." +"externas superiores e não às suas camadas sólidas internas). Você pode querer " +"diminuir este para ter um revestimento de superfície mais agradável. Isto pode " +"ser expresso em porcentagem(por exemplo: 80%) sobre a velocidade de " +"preenchimento sólido acima. Defina como zero para auto." -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "Number of solid layers to generate on top surfaces." msgstr "Número de camadas sólidas para gerar em superfícies superiores." -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2278 msgid "Top solid layers" msgstr "Camadas sólidas de topo" -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2286 msgid "" "The number of top solid layers is increased above top_solid_layers if " -"necessary to satisfy minimum thickness of top shell. This is useful to " -"prevent pillowing effect when printing with variable layer height." +"necessary to satisfy minimum thickness of top shell. This is useful to prevent " +"pillowing effect when printing with variable layer height." msgstr "" "O número de camadas sólidas superiores é aumentado acima de top_solid_layers " "se necessário para satisfazer a espessura mínima da camada superior. Isso é " "útil para evitar o efeito de travesseiro ao imprimir com altura de camada " "variável." -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2289 msgid "Minimum top shell thickness" msgstr "Espessura mínima vertical da parede" -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2296 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "" "Velocidade para movimentos de viagem (saltos entre pontos de extrusão " "distantes)." -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2304 msgid "Use firmware retraction" msgstr "Usar retração do firmware" -#: src/libslic3r/PrintConfig.cpp:2162 +#: src/libslic3r/PrintConfig.cpp:2305 msgid "" "This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin." msgstr "" -"Esta config. experimental usa comandos G10 e G11 para que o firmware " -"manipule a retração. Isso só é suportado no recente Marlin." +"Esta config. experimental usa comandos G10 e G11 para que o firmware manipule " +"a retração. Isso só é suportado no recente Marlin." -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2311 msgid "Use relative E distances" msgstr "Utilizar distâncias relativas do E" -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2312 msgid "" "If your firmware requires relative E values, check this, otherwise leave it " "unchecked. Most firmwares use absolute values." @@ -9739,118 +11162,118 @@ msgstr "" "Se o firmware necessitar de valores relativos E, verifique isto, caso " "contrário, deixe-o desmarcado. A maioria dos firmwares usa valores absolutos." -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2318 msgid "Use volumetric E" msgstr "Usar E volumétrico" -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2319 msgid "" "This experimental setting uses outputs the E values in cubic millimeters " -"instead of linear millimeters. If your firmware doesn't already know " -"filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] " -"T0' in your start G-code in order to turn volumetric mode on and use the " -"filament diameter associated to the filament selected in Slic3r. This is " -"only supported in recent Marlin." +"instead of linear millimeters. If your firmware doesn't already know filament " +"diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in " +"your start G-code in order to turn volumetric mode on and use the filament " +"diameter associated to the filament selected in Slic3r. This is only supported " +"in recent Marlin." msgstr "" -"Essa config. experimental usa saídas os valores E em milímetros cúbicos em " -"vez de milímetros lineares. Se o firmware já não souber o diâmetro (s) do " -"filamento, você pode colocar comandos como ' m 200 D [filament_diameter_0] " -"T0 ' no seu G-code inicial para ativar o modo volumétrico e usar o diâmetro " -"do filamento associado ao filamento selecionado em Slic3r. Isso só é " -"suportado no recente Marlin." +"Essa config. experimental usa saídas os valores E em milímetros cúbicos em vez " +"de milímetros lineares. Se o firmware já não souber o diâmetro (s) do " +"filamento, você pode colocar comandos como ' m 200 D [filament_diameter_0] T0 " +"' no seu G-code inicial para ativar o modo volumétrico e usar o diâmetro do " +"filamento associado ao filamento selecionado em Slic3r. Isso só é suportado no " +"recente Marlin." -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "Enable variable layer height feature" msgstr "Habilitar altura de camada variável" -#: src/libslic3r/PrintConfig.cpp:2187 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "" -"Some printers or printer setups may have difficulties printing with a " -"variable layer height. Enabled by default." +"Some printers or printer setups may have difficulties printing with a variable " +"layer height. Enabled by default." msgstr "" "Algumas impressoras ou config. de impressora podem ter dificuldades para " "imprimir com uma altura de camada variável. Ativado por padrão." -#: src/libslic3r/PrintConfig.cpp:2193 +#: src/libslic3r/PrintConfig.cpp:2336 msgid "Wipe while retracting" msgstr "Limpe durante a retração" -#: src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2337 msgid "" -"This flag will move the nozzle while retracting to minimize the possible " -"blob on leaky extruders." +"This flag will move the nozzle while retracting to minimize the possible blob " +"on leaky extruders." msgstr "" -"Esta bandeira moverá a ponteira ao retrair para minimizar a bolha possível " -"em extrusoras vazando." +"Esta bandeira moverá a ponteira ao retrair para minimizar a bolha possível em " +"extrusoras vazando." -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "" -"Multi material printers may need to prime or purge extruders on tool " -"changes. Extrude the excess material into the wipe tower." +"Multi material printers may need to prime or purge extruders on tool changes. " +"Extrude the excess material into the wipe tower." msgstr "" "Várias impressoras de multi-material podem precisar purgar extrusoras em " "alterações de ferramenta. EXTRUDE o excesso de material para a torre de " "limpeza." -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "Purging volumes - load/unload volumes" msgstr "Volumes de purga-volumes de carga/descarregamento" -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2351 msgid "" "This vector saves required volumes to change from/to each tool used on the " "wipe tower. These values are used to simplify creation of the full purging " "volumes below." msgstr "" "Este vetor salva os volumes necessários para mudar de/para cada ferramenta " -"usada na torre de limpeza. Esses valores são usados para simplificar a " -"criação dos volumes de purga completos abaixo." +"usada na torre de limpeza. Esses valores são usados para simplificar a criação " +"dos volumes de purga completos abaixo." -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "Purging volumes - matrix" msgstr "Volumes de purga-matriz" -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2358 msgid "" -"This matrix describes volumes (in cubic milimetres) required to purge the " -"new filament on the wipe tower for any given pair of tools." +"This matrix describes volumes (in cubic milimetres) required to purge the new " +"filament on the wipe tower for any given pair of tools." msgstr "" -"Esta matriz descreve volumes (em milimetros cúbicos) necessários para limpar " -"o novo filamento na torre de limpeza para qualquer dado par de ferramentas." +"Esta matriz descreve volumes (em milimetros cúbicos) necessários para limpar o " +"novo filamento na torre de limpeza para qualquer dado par de ferramentas." -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Position X" msgstr "Posição X" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2368 msgid "X coordinate of the left front corner of a wipe tower" msgstr "Coordenada X do canto frontal esquerdo de uma torre de limpeza" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Position Y" msgstr "Posição Y" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2375 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Coordenada Y do canto dianteiro esquerdo de uma torre de limpeza" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "Width of a wipe tower" msgstr "Largura de uma torre da limpeza" -#: src/libslic3r/PrintConfig.cpp:2245 +#: src/libslic3r/PrintConfig.cpp:2388 msgid "Wipe tower rotation angle" msgstr "Ângulo de rotação da torre" -#: src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Ângulo de rotação da torre de limpeza em relação ao eixo X." -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Wipe into this object's infill" msgstr "Limpe no preenchimento deste objeto" -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/libslic3r/PrintConfig.cpp:2397 msgid "" "Purging after toolchange will done inside this object's infills. This lowers " "the amount of waste but may result in longer print time due to additional " @@ -9860,163 +11283,161 @@ msgstr "" "objeto. Isso diminui a quantidade de resíduos, mas pode resultar em tempo de " "impressão mais longo devido a movimentos de viagem adicionais." -#: src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "Wipe into this object" msgstr "Limpar neste objeto" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2405 msgid "" "Object will be used to purge the nozzle after a toolchange to save material " -"that would otherwise end up in the wipe tower and decrease print time. " -"Colours of the objects will be mixed as a result." +"that would otherwise end up in the wipe tower and decrease print time. Colours " +"of the objects will be mixed as a result." msgstr "" -"Objeto será usado para limpar o bico após uma troca de ferramenta para " -"salvar o material que de outra forma acabaria na torre de limpeza e diminuir " -"o tempo de impressão. As cores dos objetos serão misturadas como resultado." +"Objeto será usado para limpar o bico após uma troca de ferramenta para salvar " +"o material que de outra forma acabaria na torre de limpeza e diminuir o tempo " +"de impressão. As cores dos objetos serão misturadas como resultado." -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2411 msgid "Maximal bridging distance" msgstr "Distância de ponte máxima" -#: src/libslic3r/PrintConfig.cpp:2269 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Maximal distance between supports on sparse infill sections." -msgstr "" -"Distância máxima entre as sustentações em seções preenchimento esparsas." +msgstr "Distância máxima entre as sustentações em seções preenchimento esparsas." -#: src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "XY Size Compensation" msgstr "Compensação de tamanho em XY" -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/libslic3r/PrintConfig.cpp:2420 msgid "" "The object will be grown/shrunk in the XY plane by the configured value " "(negative = inwards, positive = outwards). This might be useful for fine-" "tuning hole sizes." msgstr "" -"O objeto será aumentado/encolhido no plano XY pelo valor configurado " -"(negativo = para dentro, positivo = para fora). Isso pode ser útil para " -"ajustar os tamanhos dos furos." +"O objeto será aumentado/encolhido no plano XY pelo valor configurado (negativo " +"= para dentro, positivo = para fora). Isso pode ser útil para ajustar os " +"tamanhos dos furos." -#: src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Compensamento do Z" -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2429 msgid "" "This value will be added (or subtracted) from all the Z coordinates in the " "output G-code. It is used to compensate for bad Z endstop position: for " "example, if your endstop zero actually leaves the nozzle 0.3mm far from the " "print bed, set this to -0.3 (or fix your endstop)." msgstr "" -"Esse valor será adicionado (ou subtraído) de todas as coordenadas Z no G-" -"code de saída. Ele é usado para compensar a posição de final de curso Z " -"ruim: por exemplo, se o seu final de curso zero realmente deixa o bico 0.3 " -"mm longe da mesa de impressão, defina este para-0,3 (ou corrigir o seu final " -"de curso)." +"Esse valor será adicionado (ou subtraído) de todas as coordenadas Z no G-code " +"de saída. Ele é usado para compensar a posição de final de curso Z ruim: por " +"exemplo, se o seu final de curso zero realmente deixa o bico 0.3 mm longe da " +"mesa de impressão, defina este para-0,3 (ou corrigir o seu final de curso)." -#: src/libslic3r/PrintConfig.cpp:2353 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Display width" msgstr "Largura do display" -#: src/libslic3r/PrintConfig.cpp:2354 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Width of the display" msgstr "Largura do display" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "Display height" msgstr "Altura do display" -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "Height of the display" msgstr "Altura do display" -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2508 msgid "Number of pixels in" msgstr "Número de pixels em" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2510 msgid "Number of pixels in X" msgstr "Número de pixels em X" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "Number of pixels in Y" msgstr "Número de pixels em Y" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Display horizontal mirroring" msgstr "Exibir espelhamento horizontal" -#: src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Mirror horizontally" msgstr "Espelhar horizontalmente" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2523 msgid "Enable horizontal mirroring of output images" msgstr "Habilitar espelhamento horizontal de imagens de saída" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Display vertical mirroring" msgstr "Exibir espelhamento vertical" -#: src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2529 msgid "Mirror vertically" msgstr "Espelharvertical" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Enable vertical mirroring of output images" msgstr "Habilitar espelhamento vertical de imagens de saída" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2535 msgid "Display orientation" msgstr "Orientação do display" -#: src/libslic3r/PrintConfig.cpp:2393 +#: src/libslic3r/PrintConfig.cpp:2536 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " "images will be rotated by 90 degrees." msgstr "" -"Defina a orientação real do visor LCD dentro da impressora SLA. O modo " -"retrato inverterá o significado dos parâmetros de largura e altura da tela e " -"as imagens de saída serão giradas por 90 graus." +"Defina a orientação real do visor LCD dentro da impressora SLA. O modo retrato " +"inverterá o significado dos parâmetros de largura e altura da tela e as " +"imagens de saída serão giradas por 90 graus." -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Landscape" msgstr "Paisagem" -#: src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2543 msgid "Portrait" msgstr "Retrato" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Rápido" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Fast tilt" msgstr "Inclinação rápida" -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the fast tilt" msgstr "Tempo da inclinação rápida" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Slow" msgstr "Lento" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "Slow tilt" msgstr "Inclinação lenta" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Time of the slow tilt" msgstr "Tempo da inclinação lenta" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Area fill" msgstr "Preenchimento de área" -#: src/libslic3r/PrintConfig.cpp:2424 +#: src/libslic3r/PrintConfig.cpp:2567 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -10027,16 +11448,16 @@ msgstr "" "em seguida, uma inclinação lenta será usada, caso contrário-uma inclinação " "rápida" -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 -#: src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:2574 src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2576 msgid "Printer scaling correction" msgstr "Correção de dimensionamento da impressora" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 msgid "Printer absolute correction" msgstr "Correção absoluta da impressora" -#: src/libslic3r/PrintConfig.cpp:2441 +#: src/libslic3r/PrintConfig.cpp:2584 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -10044,257 +11465,269 @@ msgstr "" "Irá inflar ou esvaziar os polígonos 2D cortados de acordo com o sinal da " "correção." -#: src/libslic3r/PrintConfig.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:2590 msgid "Elephant foot minimum width" msgstr "Largura mínima do pé de elefante" -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2592 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" "Largura mínima de características para manter ao fazer compensação do pé de " "elefante." -#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 msgid "Printer gamma correction" msgstr "Correção de gama de impressora" -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2601 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " "behaviour eliminates antialiasing without losing holes in polygons." msgstr "" -"Isso aplicará uma correção de gama para os polígonos 2D rasterizados. Um " -"valor gama de zero significa limiarização com o limiar no meio. Este " -"comportamento elimina suavização sem perder buracos em polígonos." +"Isso aplicará uma correção de gama para os polígonos 2D rasterizados. Um valor " +"gama de zero significa limiarização com o limiar no meio. Este comportamento " +"elimina suavização sem perder buracos em polígonos." -#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2613 src/libslic3r/PrintConfig.cpp:2614 msgid "SLA material type" msgstr "Tipo de Material de SLA" -#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 msgid "Initial layer height" msgstr "Altura da camada inicial" -#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 +#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 msgid "Bottle volume" msgstr "Volume do pote" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "ml" msgstr "ml" -#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 msgid "Bottle weight" msgstr "Peso do pote" -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2641 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "g/ml" msgstr "g/ml" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2655 msgid "money/bottle" msgstr "dinheiro/pote" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2660 msgid "Faded layers" msgstr "Camadas desbotadas" -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "" -"Número de camadas necessárias para o tempo de exposição desvanecer-se do " -"tempo de exposição inicial ao tempo de exposição" +"Número de camadas necessárias para o tempo de exposição desvanecer-se do tempo " +"de exposição inicial ao tempo de exposição" -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 +#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 msgid "Minimum exposure time" msgstr "Tempo mínimo de exposição" -#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 +#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 msgid "Maximum exposure time" msgstr "Tempo máximo de exposição" -#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Exposure time" msgstr "Tempo de exposição" -#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 msgid "Minimum initial exposure time" msgstr "Tempo inicial mínimo de exposição" -#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 msgid "Maximum initial exposure time" msgstr "Tempo inicial máximo de exposição" -#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 msgid "Initial exposure time" msgstr "Tempo inicial mínimo de exposição" -#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 msgid "Correction for expansion" msgstr "Correção para expansão" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "SLA print material notes" msgstr "Notas de material de impressão de SLA" -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2722 msgid "You can put your notes regarding the SLA print material here." msgstr "" "Você pode colocar suas anotações sobre o material de impressão de SLA aqui." -#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 +#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 msgid "Default SLA material profile" msgstr "Perfil de material de SLA padrão" -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Generate supports" msgstr "Gerar suportes" -#: src/libslic3r/PrintConfig.cpp:2615 +#: src/libslic3r/PrintConfig.cpp:2758 msgid "Generate supports for the models" msgstr "Gere suportes para os modelos" -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Support head front diameter" +#: src/libslic3r/PrintConfig.cpp:2763 +msgid "Pinhead front diameter" msgstr "Diâmetro dianteiro principal da sustentação" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "Diameter of the pointing side of the head" msgstr "Diâmetro do lado apontando da cabeça" -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Support head penetration" -msgstr "Suporte de penetração da cabeça" +#: src/libslic3r/PrintConfig.cpp:2772 +msgid "Head penetration" +msgstr "Penetração inválida da cabeça" -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "How much the pinhead has to penetrate the model surface" msgstr "Quanto a cabeça de alfinete tem de penetrar na superfície do modelo" -#: src/libslic3r/PrintConfig.cpp:2638 -msgid "Support head width" +#: src/libslic3r/PrintConfig.cpp:2781 +msgid "Pinhead width" msgstr "Largura da cabeça de suporte" -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Width from the back sphere center to the front sphere center" msgstr "Largura do centro da esfera traseira ao centro da esfera dianteira" -#: src/libslic3r/PrintConfig.cpp:2648 -msgid "Support pillar diameter" +#: src/libslic3r/PrintConfig.cpp:2791 +msgid "Pillar diameter" msgstr "Diâmetro do pilar do suporte" -#: src/libslic3r/PrintConfig.cpp:2650 +#: src/libslic3r/PrintConfig.cpp:2793 msgid "Diameter in mm of the support pillars" msgstr "Diâmetro em mm dos pilares de suporte" -#: src/libslic3r/PrintConfig.cpp:2658 +#: src/libslic3r/PrintConfig.cpp:2801 +msgid "Small pillar diameter percent" +msgstr "Diâmetro do pilar do suporte" + +#: src/libslic3r/PrintConfig.cpp:2803 +msgid "" +"The percentage of smaller pillars compared to the normal pillar diameter which " +"are used in problematic areas where a normal pilla cannot fit." +msgstr "" +"A porcentagem de pilares menores em comparação com o diâmetro de pilar normal " +"que são usados em áreas problemáticas onde um pilar normal não pode caber." + +#: src/libslic3r/PrintConfig.cpp:2812 msgid "Max bridges on a pillar" msgstr "Distância máxima de conexão entre pilares" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2814 msgid "" -"Maximum number of bridges that can be placed on a pillar. Bridges hold " -"support point pinheads and connect to pillars as small branches." +"Maximum number of bridges that can be placed on a pillar. Bridges hold support " +"point pinheads and connect to pillars as small branches." msgstr "" -"Número máximo de pontes que podem ser colocadas em um pilar. As pontes " -"seguram pinças de ponto de apoio e se conectam a pilares como pequenos ramos." +"Número máximo de pontes que podem ser colocadas em um pilar. As pontes seguram " +"pinças de ponto de apoio e se conectam a pilares como pequenos ramos." -#: src/libslic3r/PrintConfig.cpp:2668 -msgid "Support pillar connection mode" +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "Pillar connection mode" msgstr "Modalidade da conexão da coluna da sustentação" -#: src/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2823 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " -"cross (double zig-zag) or dynamic which will automatically switch between " -"the first two depending on the distance of the two pillars." +"cross (double zig-zag) or dynamic which will automatically switch between the " +"first two depending on the distance of the two pillars." msgstr "" "Controla o tipo de ponte entre dois pilares vizinhos. Pode ser zig-zag, Cruz " "(zig-zag dobro) ou dinâmico que comutará automaticamente entre os primeiros " "dois dependendo da distância dos dois pilares." -#: src/libslic3r/PrintConfig.cpp:2677 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/libslic3r/PrintConfig.cpp:2678 +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Cruz" -#: src/libslic3r/PrintConfig.cpp:2679 +#: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dinâmico" -#: src/libslic3r/PrintConfig.cpp:2691 +#: src/libslic3r/PrintConfig.cpp:2845 msgid "Pillar widening factor" msgstr "Fator de alargamento da coluna" -#: src/libslic3r/PrintConfig.cpp:2693 +#: src/libslic3r/PrintConfig.cpp:2847 msgid "" -"Merging bridges or pillars into another pillars can increase the radius. " -"Zero means no increase, one means full increase." +"Merging bridges or pillars into another pillars can increase the radius. Zero " +"means no increase, one means full increase." msgstr "" "Mesclar pontes ou pilares em outros pilares pode aumentar o raio. Zero " "significa que não há aumento, um significa aumento total." -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "Support base diameter" msgstr "Diâmetro base do suporte" -#: src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "Diameter in mm of the pillar base" msgstr "Diâmetro em mm da base do pilar" -#: src/libslic3r/PrintConfig.cpp:2712 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base height" msgstr "Altura base do suporte" -#: src/libslic3r/PrintConfig.cpp:2714 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "The height of the pillar base cone" msgstr "A altura do cone da base da coluna" -#: src/libslic3r/PrintConfig.cpp:2721 +#: src/libslic3r/PrintConfig.cpp:2875 msgid "Support base safety distance" msgstr "Distância da segurança da base da sustentação" -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2878 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " "between the model and the pad." msgstr "" "A distância mínima da base do pilar do modelo em mm. faz sentido no modo de " -"elevação zero, onde uma lacuna de acordo com este parâmetro é inserida entre " -"o modelo e o pad." +"elevação zero, onde uma lacuna de acordo com este parâmetro é inserida entre o " +"modelo e o pad." -#: src/libslic3r/PrintConfig.cpp:2734 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "Critical angle" msgstr "Ângulo crítico" -#: src/libslic3r/PrintConfig.cpp:2736 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "The default angle for connecting support sticks and junctions." msgstr "O ângulo padrão para conectar suportes e junções." -#: src/libslic3r/PrintConfig.cpp:2744 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max bridge length" msgstr "Comprimento máximo da ponte" -#: src/libslic3r/PrintConfig.cpp:2746 +#: src/libslic3r/PrintConfig.cpp:2900 msgid "The max length of a bridge" msgstr "O comprimento máximo de uma ponte" -#: src/libslic3r/PrintConfig.cpp:2753 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Max pillar linking distance" msgstr "Distância máxima de conexão entre pilares" -#: src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -10302,11 +11735,7 @@ msgstr "" "A distância máxima de dois pilares para ficar ligado uns com os outros. Um " "valor zero irá proibir o pilar em cascata." -#: src/libslic3r/PrintConfig.cpp:2763 -msgid "Object elevation" -msgstr "Elevação do objeto" - -#: src/libslic3r/PrintConfig.cpp:2765 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -10314,161 +11743,152 @@ msgstr "" "Quanto os suportes devem levantar o objecto suportado. Se \"pad em torno do " "objeto\" estiver habilitado, esse valor será ignorado." -#: src/libslic3r/PrintConfig.cpp:2776 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "This is a relative measure of support points density." msgstr "Esta é uma medida relativa de densidade de pontos de suporte." -#: src/libslic3r/PrintConfig.cpp:2782 +#: src/libslic3r/PrintConfig.cpp:2936 msgid "Minimal distance of the support points" msgstr "Distância mínima dos pontos de suporte" -#: src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2938 msgid "No support points will be placed closer than this threshold." msgstr "Nenhum ponto de apoio será colocado mais perto do que este limiar." -#: src/libslic3r/PrintConfig.cpp:2790 +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Use pad" msgstr "Use pad" -#: src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2946 msgid "Add a pad underneath the supported model" msgstr "Adicionar um pad por baixo do modelo suportado" -#: src/libslic3r/PrintConfig.cpp:2797 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Pad wall thickness" msgstr "Espessura da parede do pad" -#: src/libslic3r/PrintConfig.cpp:2799 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The thickness of the pad and its optional cavity walls." msgstr "A espessura da pad e suas paredes de cavidade opcionais." -#: src/libslic3r/PrintConfig.cpp:2807 +#: src/libslic3r/PrintConfig.cpp:2961 msgid "Pad wall height" msgstr "Altura da parede do pad" -#: src/libslic3r/PrintConfig.cpp:2808 +#: src/libslic3r/PrintConfig.cpp:2962 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " "effect inside the cavity, which makes peeling the print off the vat foil " "difficult." msgstr "" -"Define a profundidade da cavidade da pad. Defina como zero para desabilitar " -"a cavidade. Tenha cuidado ao ativar este recurso, como algumas resinas podem " +"Define a profundidade da cavidade da pad. Defina como zero para desabilitar a " +"cavidade. Tenha cuidado ao ativar este recurso, como algumas resinas podem " "produzir um efeito de sucção extrema dentro da cavidade, o que torna a " "descascar a impressão fora da folha de IVA difícil." -#: src/libslic3r/PrintConfig.cpp:2821 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Pad brim size" msgstr "Tamanho da borda do bloco" -#: src/libslic3r/PrintConfig.cpp:2822 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "How far should the pad extend around the contained geometry" msgstr "Até onde o bloco deve se estender em torno da geometria contida" -#: src/libslic3r/PrintConfig.cpp:2832 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Max merge distance" msgstr "Distância máxima da fusão" -#: src/libslic3r/PrintConfig.cpp:2834 +#: src/libslic3r/PrintConfig.cpp:2988 msgid "" "Some objects can get along with a few smaller pads instead of a single big " -"one. This parameter defines how far the center of two smaller pads should " -"be. If theyare closer, they will get merged into one pad." +"one. This parameter defines how far the center of two smaller pads should be. " +"If theyare closer, they will get merged into one pad." msgstr "" "Alguns objetos podem se dar bem com algumas pads menores em vez de um único " -"grande. Este parâmetro define até que ponto o centro de duas pads menores " -"deve ser. Se eles estão mais perto, eles vão se fundir em uma pad." +"grande. Este parâmetro define até que ponto o centro de duas pads menores deve " +"ser. Se eles estão mais perto, eles vão se fundir em uma pad." -#: src/libslic3r/PrintConfig.cpp:2854 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Pad wall slope" msgstr "Inclinação da parede da pad" -#: src/libslic3r/PrintConfig.cpp:2856 +#: src/libslic3r/PrintConfig.cpp:3010 msgid "" -"The slope of the pad wall relative to the bed plane. 90 degrees means " -"straight walls." +"The slope of the pad wall relative to the bed plane. 90 degrees means straight " +"walls." msgstr "" -"A inclinação da parede da pad em relação ao plano da mesa. 90 graus " -"significa paredes retas." +"A inclinação da parede da pad em relação ao plano da mesa. 90 graus significa " +"paredes retas." -#: src/libslic3r/PrintConfig.cpp:2865 -msgid "Pad around object" -msgstr "Pad em torno do objeto" - -#: src/libslic3r/PrintConfig.cpp:2867 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Create pad around object and ignore the support elevation" msgstr "Criar pad ao redor do objeto e ignorar a elevação de suporte" -#: src/libslic3r/PrintConfig.cpp:2872 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "Pad around object everywhere" msgstr "Pad em torno do objeto em todo lugar" -#: src/libslic3r/PrintConfig.cpp:2874 +#: src/libslic3r/PrintConfig.cpp:3028 msgid "Force pad around object everywhere" msgstr "Forçar Pad em torno do objeto em todo lugar" -#: src/libslic3r/PrintConfig.cpp:2879 +#: src/libslic3r/PrintConfig.cpp:3033 msgid "Pad object gap" msgstr "Vão entre o pad e o objeto" -#: src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "" -"The gap between the object bottom and the generated pad in zero elevation " -"mode." +"The gap between the object bottom and the generated pad in zero elevation mode." msgstr "" "A lacuna entre a parte inferior do objeto e o pad gerado no modo de elevação " "zero." -#: src/libslic3r/PrintConfig.cpp:2890 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector stride" msgstr "Inserir pad entre o objeto" -#: src/libslic3r/PrintConfig.cpp:2892 +#: src/libslic3r/PrintConfig.cpp:3046 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "" "Distância entre duas varas do conector que conectam o objeto e a pad gerada." -#: src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector width" msgstr "Largura do conector do objeto pad" -#: src/libslic3r/PrintConfig.cpp:2901 +#: src/libslic3r/PrintConfig.cpp:3055 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "Largura das varas do conector que conectam o objeto e a pad gerada." -#: src/libslic3r/PrintConfig.cpp:2908 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Pad object connector penetration" msgstr "Pad objeto conector de penetração" -#: src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Quanto deve os conectores minúsculos penetrar no corpo do modelo." -#: src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Enable hollowing" msgstr "Ativar o modo oco" -#: src/libslic3r/PrintConfig.cpp:2920 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Hollow out a model to have an empty interior" msgstr "Deixar o modelo oco para ter um interior vazio" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Wall thickness" msgstr "Espessura da parede" -#: src/libslic3r/PrintConfig.cpp:2927 +#: src/libslic3r/PrintConfig.cpp:3081 msgid "Minimum wall thickness of a hollowed model." msgstr "Espessura mínima da parede de um modelo oco." -#: src/libslic3r/PrintConfig.cpp:2935 -msgid "Accuracy" -msgstr "Precisão" - -#: src/libslic3r/PrintConfig.cpp:2937 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -10476,69 +11896,76 @@ msgstr "" "Desempenho versus precisão do cálculo. Valores mais baixos podem produzir " "artefatos indesejados." -#: src/libslic3r/PrintConfig.cpp:2947 +#: src/libslic3r/PrintConfig.cpp:3101 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " -"deeper (offset plus the closing distance) in the object and then it's " -"inflated back to the specified offset. A greater closing distance makes the " -"interior more rounded. At zero, the interior will resemble the exterior the " -"most." +"deeper (offset plus the closing distance) in the object and then it's inflated " +"back to the specified offset. A greater closing distance makes the interior " +"more rounded. At zero, the interior will resemble the exterior the most." msgstr "" "O oco é feito em duas etapas: primeiro, um interior imaginário é calculado " "mais fundo (deslocamento mais a distância de fechamento) no objeto e, em " "seguida, é inflado de volta para o deslocamento especificado. Uma maior " -"distância de fechamento torna o interior mais arredondado. Ao zero, o " -"interior será o mais parecido com o exterior." +"distância de fechamento torna o interior mais arredondado. Ao zero, o interior " +"será o mais parecido com o exterior." -#: src/libslic3r/PrintConfig.cpp:3330 +#: src/libslic3r/PrintConfig.cpp:3513 msgid "Export OBJ" msgstr "Exportar OBJ" -#: src/libslic3r/PrintConfig.cpp:3331 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Export the model(s) as OBJ." msgstr "Exportar modelo(s) como OBJ." -#: src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Export SLA" msgstr "Exportar SLA" -#: src/libslic3r/PrintConfig.cpp:3343 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Fatiar o modelo e exportar as camadas de impressão SLA como PNG." -#: src/libslic3r/PrintConfig.cpp:3348 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Export 3MF" msgstr "Exportar 3MF" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3532 msgid "Export the model(s) as 3MF." msgstr "Exportar modelo(s) como 3MF." -#: src/libslic3r/PrintConfig.cpp:3353 +#: src/libslic3r/PrintConfig.cpp:3536 msgid "Export AMF" msgstr "Exportar AMF" -#: src/libslic3r/PrintConfig.cpp:3354 +#: src/libslic3r/PrintConfig.cpp:3537 msgid "Export the model(s) as AMF." msgstr "Exportar modelo(s) como AMF." -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3541 msgid "Export STL" msgstr "Exportar STL" -#: src/libslic3r/PrintConfig.cpp:3359 +#: src/libslic3r/PrintConfig.cpp:3542 msgid "Export the model(s) as STL." msgstr "Exportar modelo(s) como STL." -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Slice the model and export toolpaths as G-code." msgstr "Fatiar o modelo e exportar o percurso da ferramenta como G-code." -#: src/libslic3r/PrintConfig.cpp:3369 +#: src/libslic3r/PrintConfig.cpp:3552 +msgid "G-code viewer" +msgstr "Tipo de G-code" + +#: src/libslic3r/PrintConfig.cpp:3553 +msgid "Visualize an already sliced and saved G-code" +msgstr "Visualize um G-code já fatiado e salvo" + +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Slice" msgstr "Fatiar" -#: src/libslic3r/PrintConfig.cpp:3370 +#: src/libslic3r/PrintConfig.cpp:3559 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -10546,71 +11973,71 @@ msgstr "" "Divida o modelo como FFF ou SLA com base no valor de config. " "printer_technology." -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3564 msgid "Help" msgstr "Ajuda" -#: src/libslic3r/PrintConfig.cpp:3376 +#: src/libslic3r/PrintConfig.cpp:3565 msgid "Show this help." msgstr "Mostrar esta ajuda." -#: src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3570 msgid "Help (FFF options)" msgstr "Ajuda (opções FDM)" -#: src/libslic3r/PrintConfig.cpp:3382 +#: src/libslic3r/PrintConfig.cpp:3571 msgid "Show the full list of print/G-code configuration options." msgstr "Mostre a lista completa de opções de config. do Print/G-code." -#: src/libslic3r/PrintConfig.cpp:3386 +#: src/libslic3r/PrintConfig.cpp:3575 msgid "Help (SLA options)" msgstr "Ajuda (opções SLA)" -#: src/libslic3r/PrintConfig.cpp:3387 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Show the full list of SLA print configuration options." msgstr "Mostrar a lista completa de opções de config. de impressão de SLA." -#: src/libslic3r/PrintConfig.cpp:3391 +#: src/libslic3r/PrintConfig.cpp:3580 msgid "Output Model Info" msgstr "Informações do modelo de saída" -#: src/libslic3r/PrintConfig.cpp:3392 +#: src/libslic3r/PrintConfig.cpp:3581 msgid "Write information about the model to the console." msgstr "Escreva informações sobre o modelo para o console." -#: src/libslic3r/PrintConfig.cpp:3396 +#: src/libslic3r/PrintConfig.cpp:3585 msgid "Save config file" -msgstr "Salvar arquivo de config." +msgstr "Salvar arquivo de config" -#: src/libslic3r/PrintConfig.cpp:3397 +#: src/libslic3r/PrintConfig.cpp:3586 msgid "Save configuration to the specified file." msgstr "Salvar config. para o arquivo específico." -#: src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3596 msgid "Align XY" msgstr "Alinhar XY" -#: src/libslic3r/PrintConfig.cpp:3408 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Align the model to the given point." msgstr "Alinhar modelo de acordo com o ponto inserido." -#: src/libslic3r/PrintConfig.cpp:3413 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Cut model at the given Z." msgstr "Cortar modelo ao Z fornecido." -#: src/libslic3r/PrintConfig.cpp:3434 +#: src/libslic3r/PrintConfig.cpp:3623 msgid "Center" msgstr "Centralizar" -#: src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Center the print around the given center." msgstr "Centralizar a impressão de acordo com o centro informado." -#: src/libslic3r/PrintConfig.cpp:3439 +#: src/libslic3r/PrintConfig.cpp:3628 msgid "Don't arrange" msgstr "Não organizar" -#: src/libslic3r/PrintConfig.cpp:3440 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -10618,27 +12045,23 @@ msgstr "" "Não reorganize os modelos fornecidos antes de Mesclar e manter suas " "coordenadas XY originais." -#: src/libslic3r/PrintConfig.cpp:3443 +#: src/libslic3r/PrintConfig.cpp:3632 msgid "Duplicate" msgstr "Duplicar" -#: src/libslic3r/PrintConfig.cpp:3444 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Multiply copies by this factor." msgstr "Multiplicar cópias por esse fator." -#: src/libslic3r/PrintConfig.cpp:3448 +#: src/libslic3r/PrintConfig.cpp:3637 msgid "Duplicate by grid" msgstr "Duplicar por grade" -#: src/libslic3r/PrintConfig.cpp:3449 +#: src/libslic3r/PrintConfig.cpp:3638 msgid "Multiply copies by creating a grid." msgstr "Multiplique cópias criando uma grade." -#: src/libslic3r/PrintConfig.cpp:3452 -msgid "Merge" -msgstr "Mesclar" - -#: src/libslic3r/PrintConfig.cpp:3453 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -10646,7 +12069,7 @@ msgstr "" "Organize os modelos fornecidos em uma placa e junte-os em um único modelo, a " "fim de executar ações uma só vez." -#: src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3647 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -10655,31 +12078,31 @@ msgstr "" "adicionada sempre que precisamos cortar o modelo para executar a ação " "solicitada)." -#: src/libslic3r/PrintConfig.cpp:3462 +#: src/libslic3r/PrintConfig.cpp:3651 msgid "Rotation angle around the Z axis in degrees." msgstr "Ângulo de rotação ao redor do eixo Zem graus." -#: src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3655 msgid "Rotate around X" msgstr "Rotacionar no X" -#: src/libslic3r/PrintConfig.cpp:3467 +#: src/libslic3r/PrintConfig.cpp:3656 msgid "Rotation angle around the X axis in degrees." msgstr "Ângulo de rotação ao redor do eixo X em graus." -#: src/libslic3r/PrintConfig.cpp:3471 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Rotate around Y" msgstr "Rotacionar no Y" -#: src/libslic3r/PrintConfig.cpp:3472 +#: src/libslic3r/PrintConfig.cpp:3661 msgid "Rotation angle around the Y axis in degrees." msgstr "Ângulo de rotação ao redor do eixo Y em graus." -#: src/libslic3r/PrintConfig.cpp:3477 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scaling factor or percentage." msgstr "Escalando fator ou porcentagem." -#: src/libslic3r/PrintConfig.cpp:3482 +#: src/libslic3r/PrintConfig.cpp:3671 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -10687,64 +12110,74 @@ msgstr "" "Detecte peças não conectadas em um determinado modelo (s) e divida-as em " "objetos separados." -#: src/libslic3r/PrintConfig.cpp:3485 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Scale to Fit" msgstr "Dimensionar para caber" -#: src/libslic3r/PrintConfig.cpp:3486 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Scale to fit the given volume." msgstr "Escalar para se adequar ao volume informado." -#: src/libslic3r/PrintConfig.cpp:3495 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignorar arquivos de config. não existentes" -#: src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Não falhe se um arquivo fornecido para--carregamento não existe." -#: src/libslic3r/PrintConfig.cpp:3499 +#: src/libslic3r/PrintConfig.cpp:3688 msgid "Load config file" -msgstr "Carregar arquivo de config." +msgstr "Carregar arquivo de config" -#: src/libslic3r/PrintConfig.cpp:3500 +#: src/libslic3r/PrintConfig.cpp:3689 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." msgstr "" -"Carregar a config. do arquivo especificado. Ele pode ser usado mais de uma " -"vez para carregar opções de vários arquivos." +"Carregar a config. do arquivo especificado. Ele pode ser usado mais de uma vez " +"para carregar opções de vários arquivos." -#: src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3692 msgid "Output File" msgstr "Arquivo de saída" -#: src/libslic3r/PrintConfig.cpp:3504 +#: src/libslic3r/PrintConfig.cpp:3693 msgid "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." +"The file where the output will be written (if not specified, it will be based " +"on the input file)." msgstr "" -"O arquivo onde a saída será gravada (se não for especificado, ele será " -"baseado no arquivo de entrada)." +"O arquivo onde a saída será gravada (se não for especificado, ele será baseado " +"no arquivo de entrada)." -#: src/libslic3r/PrintConfig.cpp:3514 +#: src/libslic3r/PrintConfig.cpp:3698 +msgid "" +"If enabled, the command line arguments are sent to an existing instance of GUI " +"PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides the " +"\"single_instance\" configuration value from application preferences." +msgstr "" +"Se habilitado, os argumentos da linha de comando são enviados para uma " +"instância existente do GUI PrusaSlicer ou uma janela do PrusaSlicer existente " +"é ativada. Substitui o valor de configuração \"single_instance\" das " +"preferências do aplicativo." + +#: src/libslic3r/PrintConfig.cpp:3709 msgid "Data directory" msgstr "Diretório de dados" -#: src/libslic3r/PrintConfig.cpp:3515 +#: src/libslic3r/PrintConfig.cpp:3710 msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." +"Load and store settings at the given directory. This is useful for maintaining " +"different profiles or including configurations from a network storage." msgstr "" "Carregar e armazenar as config. no diretório especificado. Isso é útil para " "manter perfis diferentes ou incluir config. de um armazenamento de rede." -#: src/libslic3r/PrintConfig.cpp:3518 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Logging level" msgstr "Nível de registro" -#: src/libslic3r/PrintConfig.cpp:3519 +#: src/libslic3r/PrintConfig.cpp:3714 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -10752,56 +12185,111 @@ msgid "" msgstr "" "Define a sensibilidade de registro. 0:fatal, 1:erro, 2:warning, 3:info, 4:" "debug, 5:trace\n" -"Por exemplo. loglevel=2 logs de mensagens fatais, de nível de erro e de " -"aviso." +"Por exemplo. loglevel=2 logs de mensagens fatais, de nível de erro e de aviso." -#: src/libslic3r/PrintConfig.cpp:3525 +#: src/libslic3r/PrintConfig.cpp:3720 msgid "Render with a software renderer" msgstr "Renderizar com um software renderizador" -#: src/libslic3r/PrintConfig.cpp:3526 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "" -"Render with a software renderer. The bundled MESA software renderer is " -"loaded instead of the default OpenGL driver." +"Render with a software renderer. The bundled MESA software renderer is loaded " +"instead of the default OpenGL driver." msgstr "" "Renderizar com um software renderizador. O renderizador de software MESA " "empacotado é carregado em vez do driver OpenGL padrão." -#: src/libslic3r/PrintObject.cpp:108 +#: src/libslic3r/Zipper.cpp:27 +msgid "Error with zip archive" +msgstr "Erro com arquivo zip" + +#: src/libslic3r/PrintObject.cpp:114 msgid "Processing triangulated mesh" msgstr "Processando malha triangulada" -#: src/libslic3r/PrintObject.cpp:152 +#: src/libslic3r/PrintObject.cpp:158 msgid "Generating perimeters" msgstr "Gerando perímetros" -#: src/libslic3r/PrintObject.cpp:255 +#: src/libslic3r/PrintObject.cpp:261 msgid "Preparing infill" msgstr "Preparando o preenchimento" -#: src/libslic3r/PrintObject.cpp:395 +#: src/libslic3r/PrintObject.cpp:422 msgid "Generating support material" msgstr "Gerando material de suporte" -#: src/libslic3r/GCode/PreviewData.cpp:347 -msgid "Height (mm)" -msgstr "Altura (mm)" +#~ msgid "You have to select at least one filament for selected printers" +#~ msgstr "" +#~ "Você tem que selecionar pelo menos um filamento para impressoras " +#~ "selecionadas" -#: src/libslic3r/GCode/PreviewData.cpp:349 -msgid "Width (mm)" -msgstr "Espessura (mm)" +#~ msgid "Layer height:" +#~ msgstr "Altura da camada:" -#: src/libslic3r/GCode/PreviewData.cpp:351 -msgid "Speed (mm/s)" -msgstr "Velocidade (mm/s)" +#~ msgid "Discard changes and continue anyway?" +#~ msgstr "Descartar mudanças e continuar assim mesmo?" -#: src/libslic3r/GCode/PreviewData.cpp:353 -msgid "Fan Speed (%)" -msgstr "Velocidade da ventoinha (%)" +#~ msgid "Unsaved Presets" +#~ msgstr "config. não salvas" -#: src/libslic3r/GCode/PreviewData.cpp:355 -msgid "Volumetric flow rate (mm³/s)" -msgstr "Vazão volumétrica (mm³/s)" +#~ msgid "Show/Hide Legend" +#~ msgstr "Ligar/Desligar Legenda" + +#, c-format +#~ msgid "Processing input file %s" +#~ msgstr "Processando o arquivo de entrada %s" + +#~ msgid "Hollow" +#~ msgstr "Vazado" + +#~ msgid "Indexing hollowed object" +#~ msgstr "Indexando objeto oco" + +#~ msgid "Hollowing cancelled." +#~ msgstr "Cancelado" + +#~ msgid "Hollowing done." +#~ msgstr "Deixado oco pronto." + +#~ msgid "Hollowing failed." +#~ msgstr "Deixar oco falhou." + +#~ msgid "Add/Remove filaments" +#~ msgstr "Adicionar/Remover filamentos" + +#~ msgid "USB/Serial connection" +#~ msgstr "Conexão USB/serial" + +#~ msgid "Rescan serial ports" +#~ msgstr "Portas seriais de Rescan" + +#~ msgid "Connection to printer works correctly." +#~ msgstr "A ligação à impressora funciona corretamente." + +#~ msgid "Connection failed." +#~ msgstr "A conexão falhou." + +#, c-format +#~ msgid "Default preset (%s)" +#~ msgstr "Predefinição padrão ( %s)" + +#, c-format +#~ msgid "Preset (%s)" +#~ msgstr "Predefinição ( %s)" + +#~ msgid "is not compatible with printer" +#~ msgstr "não é compatível com a impressora" + +#~ msgid "is not compatible with print profile" +#~ msgstr "não é compatível com o perfil de impressão" + +#~ msgctxt "PresetName" +#~ msgid "%1% - Copy" +#~ msgstr "%1% - cópia" + +#~ msgid "Support head penetration" +#~ msgstr "Suporte de penetração da cabeça" #~ msgid "Layers heights" #~ msgstr "Altura de camada" @@ -10825,8 +12313,7 @@ msgstr "Vazão volumétrica (mm³/s)" #~ msgstr "Selecionar nova extrusora para objeto/parte" #~ msgid "Select extruder number for selected objects and/or parts" -#~ msgstr "" -#~ "Selecione o número da extrusora para objetos e/ou peças selecionados" +#~ msgstr "Selecione o número da extrusora para objetos e/ou peças selecionados" #~ msgid "Object Manipulation" #~ msgstr "Manipulação de objeto" @@ -10853,8 +12340,8 @@ msgstr "Vazão volumétrica (mm³/s)" #~ msgstr "O projeto selecionado não está mais disponível" #~ msgid "" -#~ "Messages with severity lower or eqal to the loglevel will be printed out. " -#~ "0:trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" +#~ "Messages with severity lower or eqal to the loglevel will be printed out. 0:" +#~ "trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" #~ msgstr "" -#~ "Mensagens com severidade menor ou igual para o LogLevel serão impressos. " -#~ "0: Trace, 1: debug, 2: info, 3: aviso, 4: erro, 5: fatal" +#~ "Mensagens com severidade menor ou igual para o LogLevel serão impressos. 0: " +#~ "Trace, 1: debug, 2: info, 3: aviso, 4: erro, 5: fatal" From df19697d8e2b78c8958fc5cabfa5b4aed9f52695 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Wed, 18 Nov 2020 15:14:49 +0100 Subject: [PATCH 047/138] Fixed Shift+A to arrange selection --- src/slic3r/GUI/GLCanvas3D.cpp | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 495c165b5..f6ec0bd58 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2909,12 +2909,23 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) return; } - if ((keyCode == WXK_ESCAPE) && (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item())) + if (keyCode == WXK_ESCAPE && (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item())) return; if (m_gizmos.on_char(evt)) return; + auto action_plus = [this](wxKeyEvent& evt) { + if (dynamic_cast<Preview*>(m_canvas->GetParent()) != nullptr) + post_event(wxKeyEvent(EVT_GLCANVAS_EDIT_COLOR_CHANGE, evt)); + else + post_event(Event<int>(EVT_GLCANVAS_INCREASE_INSTANCES, +1)); + }; + + auto action_a = [this]() { + post_event(SimpleEvent(EVT_GLCANVAS_ARRANGE)); + }; + //#ifdef __APPLE__ // ctrlMask |= wxMOD_RAW_CONTROL; //#endif /* __APPLE__ */ @@ -3002,8 +3013,11 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) } else if ((evt.GetModifiers() & shiftMask) != 0) { switch (keyCode) { - case 'g': - case 'G': { + case '+': { action_plus(evt); break; } + case 'A': + case 'a': { action_a(); break; } + case 'G': + case 'g': { if (dynamic_cast<Preview*>(m_canvas->GetParent()) != nullptr) post_event(wxKeyEvent(EVT_GLCANVAS_JUMP_TO, evt)); break; @@ -3029,13 +3043,8 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) case '4': { select_view("rear"); break; } case '5': { select_view("left"); break; } case '6': { select_view("right"); break; } - case '+': { - if (dynamic_cast<Preview*>(m_canvas->GetParent()) != nullptr) - post_event(wxKeyEvent(EVT_GLCANVAS_EDIT_COLOR_CHANGE, evt)); - else - post_event(Event<int>(EVT_GLCANVAS_INCREASE_INSTANCES, +1)); - break; } - case '-': { + case '+': { action_plus(evt); break; } + case '-': { if (dynamic_cast<Preview*>(m_canvas->GetParent()) != nullptr) post_event(wxKeyEvent(EVT_GLCANVAS_EDIT_COLOR_CHANGE, evt)); else @@ -3043,7 +3052,7 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) break; } case '?': { post_event(SimpleEvent(EVT_GLCANVAS_QUESTION_MARK)); break; } case 'A': - case 'a': { post_event(SimpleEvent(EVT_GLCANVAS_ARRANGE)); break; } + case 'a': { action_a(); break; } case 'B': case 'b': { zoom_to_bed(); break; } case 'E': @@ -3079,8 +3088,7 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) { if (!m_selection.is_empty()) zoom_to_selection(); - else - { + else { if (!m_volumes.empty()) zoom_to_volumes(); else From 03b336145f8f1003680d24697d4c0f944c00453a Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Wed, 18 Nov 2020 17:00:08 +0100 Subject: [PATCH 048/138] Updated UI for the "infill_anchor" parameter --- src/libslic3r/PrintConfig.cpp | 13 +++++++ src/slic3r/GUI/Field.cpp | 66 ++++++++++++++--------------------- src/slic3r/GUI/Tab.cpp | 2 +- 3 files changed, 40 insertions(+), 41 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 7eab5ae72..e59e67cff 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1057,6 +1057,19 @@ void PrintConfigDef::init_fff_params() "If expressed as percentage (example: 15%) it is calculated over infill extrusion width."); def->sidetext = L("mm or %"); def->ratio_over = "infill_extrusion_width"; + def->gui_type = "f_enum_open"; + def->enum_values.push_back("0"); + def->enum_values.push_back("1"); + def->enum_values.push_back("2"); + def->enum_values.push_back("5"); + def->enum_values.push_back("10"); + def->enum_values.push_back("1000"); + def->enum_labels.push_back(L("0 (unprintable)")); + def->enum_labels.push_back("1 mm"); + def->enum_labels.push_back("2 mm"); + def->enum_labels.push_back("5 mm"); + def->enum_labels.push_back("10 mm"); + def->enum_labels.push_back(L("1000 (unlimited)")); def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloatOrPercent(300, true)); diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index bc6124b80..a92a98844 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -867,7 +867,7 @@ void Choice::BUILD() { if (m_is_editable) { temp->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) { e.Skip(); - if (m_opt.type == coStrings) { + if (m_opt.type == coStrings || m_opt.type == coFloatOrPercent) { on_change_field(); return; } @@ -898,59 +898,42 @@ void Choice::set_selection() choice_ctrl* field = dynamic_cast<choice_ctrl*>(window); switch (m_opt.type) { - case coFloat: - case coPercent: { - double val = m_opt.default_value->getFloat(); - text_value = val - int(val) == 0 ? wxString::Format(_T("%i"), int(val)) : wxNumberFormatter::ToString(val, 1); - size_t idx = 0; - for (auto el : m_opt.enum_values) - { - if (el == text_value) - break; - ++idx; - } -// if (m_opt.type == coPercent) text_value += "%"; - idx == m_opt.enum_values.size() ? - field->SetValue(text_value) : - field->SetSelection(idx); - break; - } case coEnum:{ int id_value = m_opt.get_default_value<ConfigOptionEnum<SeamPosition>>()->value; //!! field->SetSelection(id_value); break; } + case coFloat: + case coPercent: { + double val = m_opt.default_value->getFloat(); + text_value = val - int(val) == 0 ? wxString::Format(_T("%i"), int(val)) : wxNumberFormatter::ToString(val, 1); + break; + } case coInt:{ - int val = m_opt.default_value->getInt(); //!! - text_value = wxString::Format(_T("%i"), int(val)); - size_t idx = 0; - for (auto el : m_opt.enum_values) - { - if (el == text_value) - break; - ++idx; - } - idx == m_opt.enum_values.size() ? - field->SetValue(text_value) : - field->SetSelection(idx); + text_value = wxString::Format(_T("%i"), int(m_opt.default_value->getInt())); break; } case coStrings:{ text_value = m_opt.get_default_value<ConfigOptionStrings>()->get_at(m_opt_idx); + break; + } + case coFloatOrPercent: { + text_value = double_to_string(m_opt.default_value->getFloat()); + if (m_opt.get_default_value<ConfigOptionFloatOrPercent>()->percent) + text_value += "%"; + break; + } + default: break; + } - size_t idx = 0; - for (auto el : m_opt.enum_values) - { + if (!text_value.IsEmpty()) { + int idx = 0; + for (auto el : m_opt.enum_values) { if (el == text_value) break; ++idx; } - idx == m_opt.enum_values.size() ? - field->SetValue(text_value) : - field->SetSelection(idx); - break; - } - default: break; + idx == m_opt.enum_values.size() ? field->SetValue(text_value) : field->SetSelection(idx); } } @@ -984,6 +967,7 @@ void Choice::set_value(const boost::any& value, bool change_event) case coInt: case coFloat: case coPercent: + case coFloatOrPercent: case coString: case coStrings: { wxString text_value; @@ -1137,7 +1121,9 @@ boost::any& Choice::get_value() (ret_str != m_opt.enum_values[ret_enum] && ret_str != _(m_opt.enum_labels[ret_enum]))) // modifies ret_string! get_value_by_opt_type(ret_str); - else + else if (m_opt.type == coFloatOrPercent) + m_value = m_opt.enum_values[ret_enum]; + else m_value = atof(m_opt.enum_values[ret_enum].c_str()); } else diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index d05b5040f..7a4d9ce3d 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1422,9 +1422,9 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Infill")); optgroup->append_single_option_line("fill_density", category_path + "fill-density"); optgroup->append_single_option_line("fill_pattern", category_path + "fill-pattern"); + optgroup->append_single_option_line("infill_anchor", category_path + "fill-pattern"); optgroup->append_single_option_line("top_fill_pattern", category_path + "top-fill-pattern"); optgroup->append_single_option_line("bottom_fill_pattern", category_path + "bottom-fill-pattern"); - optgroup->append_single_option_line("infill_anchor", category_path + "fill-pattern"); optgroup = page->new_optgroup(L("Ironing")); optgroup->append_single_option_line("ironing"); From 4cc3e939da6511c7f4625a490bbc60c27c3ea545 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Wed, 18 Nov 2020 17:25:05 +0100 Subject: [PATCH 049/138] Localization: Update for the CZ, DE, ES, FR, IT and PL languages --- resources/localization/cs/PrusaSlicer.mo | Bin 279436 -> 280144 bytes resources/localization/cs/PrusaSlicer_cs.po | 153 +- resources/localization/de/PrusaSlicer.mo | Bin 256755 -> 288040 bytes resources/localization/de/PrusaSlicer_de.po | 6221 +++++++++------- resources/localization/es/PrusaSlicer.mo | Bin 255091 -> 287640 bytes resources/localization/es/PrusaSlicer_es.po | 6254 +++++++++------- resources/localization/fr/PrusaSlicer.mo | Bin 262908 -> 295290 bytes resources/localization/fr/PrusaSlicer_fr.po | 6237 +++++++++------- resources/localization/it/PrusaSlicer.mo | Bin 251443 -> 282315 bytes resources/localization/it/PrusaSlicer_it.po | 6866 +++++++++++------- resources/localization/pl/PrusaSlicer.mo | Bin 249993 -> 280143 bytes resources/localization/pl/PrusaSlicer_pl.po | 6451 +++++++++------- src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp | 2 +- 14 files changed, 19560 insertions(+), 12626 deletions(-) diff --git a/resources/localization/cs/PrusaSlicer.mo b/resources/localization/cs/PrusaSlicer.mo index 27449080de0bca34594d63f585d6241e343211ac..b1a000e92e581a87d964a1f11206d2ac12edfd98 100644 GIT binary patch delta 53156 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 DwR~w5 delta 52497 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 Q3wSKZXg^ilV^XpI1M<#%@Bjb+ diff --git a/resources/localization/cs/PrusaSlicer_cs.po b/resources/localization/cs/PrusaSlicer_cs.po index 25222b061..e60316e61 100644 --- a/resources/localization/cs/PrusaSlicer_cs.po +++ b/resources/localization/cs/PrusaSlicer_cs.po @@ -5,21 +5,13 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Poedit 2.4.1\n" +"X-Generator: Poedit 2.4.2\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" -"Last-Translator: Oleksandra Iushchenko <yusanka@gmail.com>\n" +"Last-Translator: \n" "Language-Team: \n" -#: src/slic3r/GUI/MainFrame.cpp:166 -msgid " - Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" -msgstr "- Nezapomeňte zkontrolovat aktualizace na https://github.com/prusa3d/PrusaSlicer/releases" - -#: src/slic3r/GUI/MainFrame.cpp:1573 -msgid " was successfully sliced." -msgstr " byl úspěšně slicován." - #: src/slic3r/GUI/Tab.cpp:4124 msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -50,6 +42,10 @@ msgstr "%1% Přednastavení" msgid "%1% printer was active at the time the target Undo / Redo snapshot was taken. Switching to %1% printer requires reloading of %1% presets." msgstr "%1% tiskárna byla aktivní v době, kdy byly pořízeny kroky Zpět / Vpřed. Přepnutí na tiskárnu %1% vyžaduje opětovné načtení předvoleb %1%." +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." +msgstr "%1% byl úspěšně naslicován." + #: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "%1%=%2% mm je příliš nízké na to, aby bylo možné tisknout ve výšce vrstvy %3% mm" @@ -98,6 +94,11 @@ msgstr "%s &Webová stránka" msgid "%s - BREAKING CHANGE" msgstr "%s - ZLOMOVÁ ZMĚNA" +#: src/slic3r/GUI/Plater.cpp:1410 +#, c-format +msgid "%s - Drop project file" +msgstr "%s - Otevírání projektu" + #: src/slic3r/GUI/UpdateDialogs.cpp:211 #, c-format msgid "%s configuration is incompatible" @@ -395,7 +396,7 @@ msgstr "Obecným pravidlem je 60 °C pro PLA a 110 °C pro ABS. Zadejte nula, po #: src/slic3r/GUI/GLCanvas3D.cpp:634 msgid "A toolpath outside the print area was detected." -msgstr "Byla detekována cesta mimo tiskovou oblast" +msgstr "Byla detekována cesta mimo tiskovou oblast." #: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 #, c-format @@ -428,6 +429,10 @@ msgstr "Přesnost" msgid "Accurate" msgstr "Přesné" +#: src/slic3r/GUI/Plater.cpp:1423 +msgid "Action" +msgstr "Akce" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Aktivovat" @@ -728,10 +733,6 @@ msgstr "Všechna gizma: Rotace - levé talčítko myši; Posun - pravé tlačít msgid "All installed printers are compatible with the selected filament." msgstr "Všechny instalované tiskárny jsou kompatibilní s vybraným filamentem." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 -msgid "All modified options will be reverted." -msgstr "Všechny upravené možnosti budou vráceny." - #: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Všechny objekty jsou mimo tiskový prostor." @@ -740,6 +741,10 @@ msgstr "Všechny objekty jsou mimo tiskový prostor." msgid "All objects will be removed, continue?" msgstr "Všechny objekty budou odebrány, pokračovat?" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All settings changes will be discarded." +msgstr "Všechny změny v nastavení budou zahozeny." + #: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Všechny běžné" @@ -987,6 +992,10 @@ msgstr "Automatické aktualizace" msgid "Automatically repair an STL file" msgstr "Automaticky opravit STL soubor" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "Automaticky podle úhlu" + #: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 msgid "Autoset custom supports" msgstr "Automatické nastavení podpěr" @@ -1749,7 +1758,9 @@ msgstr "Kopírování dočasného G-codu do výstupního G-codu selhalo" msgid "" "Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" "Error message: %1%" -msgstr "Kopírování dočasného G-codu do výstupního G-codu se nezdařilo. Není SD karta chráněná proti zápisu?" +msgstr "" +"Kopírování dočasného G-codu do výstupního G-codu se nezdařilo. Není SD karta chráněná proti zápisu?\n" +"Chybová hláška: %1%" #: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." @@ -2394,6 +2405,10 @@ msgstr "Neuspořádávat" msgid "Don't notify about new releases any more" msgstr "Neupozorňovat na nové verze" +#: src/slic3r/GUI/Plater.cpp:1431 +msgid "Don't show again" +msgstr "Znovu nezobrazovat" + #: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "Nevytvářet podpěry pod mosty" @@ -2534,6 +2549,10 @@ msgstr "Nadzvednutí objektu je příliš malé. Pomocí funkce „Podložka oko msgid "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute intervals into the G-code to let the firmware show accurate remaining time. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." msgstr "Vkládání M73 P[počet vytištěných procent] R[zbývající čas v minutách] v 1 minutových intervalech do G-codu, aby firmware ukázal přesný zbývající čas. M73 nyní rozpoznává pouze firmware tiskárny Prusa i3 MK3. Firmware i3 MK3 také podporuje M73 Qxx Sxx pro tichý režim." +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" +msgstr "Emitivat do G-codu" + #: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Byly detekovány prázdné vrstvy, model by nebylo možné vytisknout." @@ -2565,7 +2584,7 @@ msgstr "Zapnout ironing" #: src/libslic3r/PrintConfig.cpp:1125 msgid "Enable ironing of the top layers with the hot print head for smooth surface" -msgstr "Pro hladké vrchní vrstvy povolte ironing pomocí ohřáté tiskové hlavy." +msgstr "Pro hladké vrchní vrstvy povolte ironing pomocí ohřáté tiskové hlavy" #: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." @@ -2975,10 +2994,6 @@ msgstr "Exportovat vybrané objekty jako STL soubor" msgid "Export to SD card / Flash drive" msgstr "Export na SD kartu / Flash disk" -#: src/slic3r/GUI/Plater.cpp:755 -msgid "Export to SD card / Flash drive " -msgstr "Export na SD kartu / Flash disk" - #: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export toolpaths as OBJ" msgstr "Exportovat trasy extruderu jako OBJ" @@ -3188,7 +3203,7 @@ msgstr "Typ" #: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 #: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" -msgstr "Typy extruzí" +msgstr "Typy extrudování" #: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" @@ -3983,7 +3998,7 @@ msgstr "Pokud je tato volba povolena, bude 3D scéna vykreslena v rozlišení Re #: src/slic3r/GUI/Preferences.cpp:215 msgid "If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene" -msgstr "Pokud je povoleno, bude v pravém horním rohu 3D scény zobrazeno tlačítko pro ovládání bočního panelu." +msgstr "Pokud je povoleno, bude v pravém horním rohu 3D scény zobrazeno tlačítko pro ovládání bočního panelu" #: src/libslic3r/PrintConfig.cpp:3698 msgid "If enabled, the command line arguments are sent to an existing instance of GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides the \"single_instance\" configuration value from application preferences." @@ -4073,6 +4088,10 @@ msgstr "Pokud firmware nezpracovává umístění extruderu správně, potřebuj msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." msgstr "Pokud váš firmware vyžaduje relativní hodnoty E, zaškrtněte toto, jinak nechte nezaškrtnuté. Většina firmwarů používá absolutní hodnoty." +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" +msgstr "Ignorovat" + #: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignorovat neexistující konfigurační soubory" @@ -4098,9 +4117,17 @@ msgstr "Načíst konfiguraci z &projektu" msgid "Import Config from ini/amf/3mf/gcode" msgstr "Načíst konfiguraci ze souboru ini/amf/3mf/gcode" +#: src/slic3r/GUI/Plater.cpp:1419 +msgid "Import config only" +msgstr "Importovat pouze konfiguraci" + #: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 -msgid "Import file: " -msgstr "Importovat soubor:" +msgid "Import file" +msgstr "Importovat soubor" + +#: src/slic3r/GUI/Plater.cpp:1418 +msgid "Import geometry only" +msgstr "Importovat pouze modely" #: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 msgid "Import model and profile" @@ -4566,10 +4593,6 @@ msgstr "Vrchních" msgid "Layout Options" msgstr "Možnosti rozložení" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:233 -msgid "Least supports" -msgstr "Nejméně podpěr" - #: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 msgid "Leaving Paint-on supports" msgstr "Opuštění Malování podpěr" @@ -4670,14 +4693,6 @@ msgstr "Načíst konfiguraci ze zadaného souboru. Může být použito vícekr msgid "Load exported configuration file" msgstr "Načíst exportovaný konfigurační soubor" -#: src/slic3r/GUI/Plater.cpp:1436 -msgid "Load File" -msgstr "Načtení souboru" - -#: src/slic3r/GUI/Plater.cpp:1440 -msgid "Load Files" -msgstr "Naštení souborů" - #: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Přidání části" @@ -4710,9 +4725,9 @@ msgstr "Načteno" msgid "Loading" msgstr "Načítání" -#: src/slic3r/GUI/GUI_App.cpp:759 -msgid "Loading configuration..." -msgstr "Načítání konfigurace ..." +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" +msgstr "Načítání konfigurace" #: src/slic3r/GUI/Plater.cpp:2226 msgid "Loading file" @@ -5690,7 +5705,7 @@ msgstr "Teplota trysky" #: src/libslic3r/PrintConfig.cpp:2198 msgid "Nozzle temperature for layers after the first one. Set this to zero to disable temperature control commands in the output G-code." -msgstr "Teplota trysky pro od druhé vrstvy dále. Nastavte tuto hodnotu na nulu, abyste zakázali příkazy pro řízení teploty ve výstupním G-codu." +msgstr "Teplota trysky od druhé vrstvy dále. Nastavte tuto hodnotu na nulu, abyste zakázali příkazy pro řízení teploty ve výstupním G-codu." #: src/libslic3r/PrintConfig.cpp:961 msgid "Nozzle temperature for the first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output G-code." @@ -5882,6 +5897,10 @@ msgstr "Otevře novou instanci PrusaSliceru" msgid "Open a project file" msgstr "Otevřít soubor s projektem" +#: src/slic3r/GUI/Plater.cpp:1417 +msgid "Open as project" +msgstr "Otevřít jako projekt" + #: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 msgid "Open CA certificate file" msgstr "Otevřít soubor s certifikátem CA" @@ -6338,9 +6357,9 @@ msgstr "Preferovaný směr švu - rozkmit" msgid "Preparing infill" msgstr "Příprava výplně" -#: src/slic3r/GUI/GUI_App.cpp:895 -msgid "Preparing settings tabs..." -msgstr "Příprava karet s nastavením..." +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" +msgstr "Příprava karet s nastavením" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 msgid "Preset \"%1%\" has the following unsaved changes:" @@ -6662,10 +6681,6 @@ msgstr "Kvalita (pomalejší slicing)" msgid "Quality / Speed" msgstr "Kvalita / Rychlost" -#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:56 -msgid "Quality: " -msgstr "Kvalita:" - #: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 msgid "Quick" msgstr "Rychlé" @@ -6693,7 +6708,7 @@ msgstr "Ukončit %s" #: src/slic3r/GUI/GUI_App.cpp:396 msgid "Quit, I will move my data now" -msgstr "Zavřít aplikaci, přesunu si svá data." +msgstr "Zavřít aplikaci, přesunu si svá data" #: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" @@ -6880,6 +6895,10 @@ msgstr "Zapamatovat moji volbu" msgid "Remember output directory" msgstr "Pamatovat si výstupní složku" +#: src/slic3r/GUI/MainFrame.cpp:166 +msgid "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" +msgstr "Nezapomeňte zkontrolovat aktualizace na https://github.com/prusa3d/PrusaSlicer/releases" + #: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "odebrat" @@ -7345,7 +7364,7 @@ msgstr "Uložit SL1 soubor jako:" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 msgid "Save the selected options to preset \"%1%\"." -msgstr "Uložte vybraná nastaneví do přednastavení \"%1%\"." +msgstr "Uloží vybraná nastaneví do přednastavení \"%1%\"." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 msgid "Save the selected options." @@ -7470,6 +7489,10 @@ msgstr "Vybrat všechny body" msgid "Select all standard printers" msgstr "Vybrat všechny standardní tiskárny" +#: src/slic3r/GUI/Plater.cpp:1422 +msgid "Select an action to apply to the file" +msgstr "Vyberte jak chcete na soubor otevřít" + #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Označit obdélníkovým výběrem myši" @@ -7616,10 +7639,6 @@ msgstr "Odeslat k tisku stávající plochu jako G-code" msgid "Send to printer" msgstr "Odeslat do tiskárny" -#: src/slic3r/GUI/Plater.cpp:753 -msgid "Send to printer " -msgstr "Odeslat do tiskárny" - #: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Sekv." @@ -7861,6 +7880,10 @@ msgstr "Zobrazit okno o Slic3ru" msgid "Show advanced settings" msgstr "Zobrazit rozšířená nastavení" +#: src/slic3r/GUI/Preferences.cpp:120 +msgid "Show drop project dialog" +msgstr "Zobrazit dialogové okno při přetažení projektu" + #: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Zobrazit chybovou hlášku" @@ -8522,10 +8545,6 @@ msgstr "Úspěch!" msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." msgstr "Odpojení proběhlo úspěšné. Zařízení %s(%s) lze nyní bezpečně odebrat z počítače." -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:234 -msgid "Suface quality" -msgstr "Kvalita povrchu" - #: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "podpěry" @@ -9159,9 +9178,9 @@ msgstr "Čistící věž je podporována pouze v případě, že všechny extrud msgid "The Wipe tower is only supported if all objects have the same variable layer height" msgstr "Čistící věž je podporována pouze v případě, že všechny objekty mají stejnou variabilní výšku vrstvy" -#: src/slic3r/GUI/Plater.cpp:3543 -msgid "There are active warnings concerning sliced models:\n" -msgstr "Varování týkající se slicovaných modelů:\n" +#: src/slic3r/GUI/Plater.cpp:3563 +msgid "There are active warnings concerning sliced models:" +msgstr "Varování týkající se slicovaných modelů:" #: src/libslic3r/SLAPrintSteps.cpp:619 msgid "There are unprintable objects. Try to adjust support settings to make the objects printable." @@ -9246,7 +9265,7 @@ msgstr "Toto experimentální nastavení používá příkazy G10 a G11, aby si #: src/libslic3r/PrintConfig.cpp:2319 msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." -msgstr "Toto experimentální nastavení používá výstupní hodnoty E v kubických milimetrech místo lineárních milimetrů. Pokud firmware dosud nezná průměr (průměry) filamentu, můžete v počátečním G-code zadat příkazy jako “M200 D [filament_diameter_0] T0”, pro zapnutí volumetrického režimu a použití průměru filamentu přidruženého k vybranému filamentu ve Slic3ru. Toto je podporováno pouze v posledních verzích firmwaru Marlin.\n" +msgstr "Toto experimentální nastavení používá výstupní hodnoty E v kubických milimetrech místo lineárních milimetrů. Pokud firmware dosud nezná průměr (průměry) filamentu, můžete v počátečním G-code zadat příkazy jako “M200 D [filament_diameter_0] T0”, pro zapnutí volumetrického režimu a použití průměru filamentu přidruženého k vybranému filamentu ve Slic3ru. Toto je podporováno pouze v posledních verzích firmwaru Marlin." #: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" @@ -9324,7 +9343,7 @@ msgstr "Toto nastavení přemístí trysku při retrakci, aby se minimalizovalo #: src/libslic3r/PrintConfig.cpp:1961 msgid "This G-code will be used as a code for the color change" -msgstr "Tento G-code bude použit jako kód pro změnu barvy." +msgstr "Tento G-code bude použit jako kód pro změnu barvy" #: src/libslic3r/PrintConfig.cpp:1970 msgid "This G-code will be used as a code for the pause print" @@ -9888,6 +9907,10 @@ msgstr "Použít retrakce z firmwaru" msgid "Use for search" msgstr "Použit pro vyhledávání" +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" +msgstr "Použít pro odhad času" + #: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Pokud je to nutné, použijte pro oddělení složek lomítko ( / )." @@ -10133,6 +10156,10 @@ msgstr "Co chcete udělat s přednastavením „% 1%“ po uložení?" msgid "When checked, the print and filament presets are shown in the preset editor even if they are marked as incompatible with the active printer" msgstr "Pokud je zaškrtnuto, přednastavení tisku a filamentu se zobrazují v editoru přednastavení, i když jsou označeny jako nekompatibilní s aktivní tiskárnou" +#: src/slic3r/GUI/Preferences.cpp:122 +msgid "When checked, whenever dragging and dropping a project file on the application, shows a dialog asking to select the action to take on the file to load." +msgstr "Je-li zaškrtnuto, při každém přetažení souboru s projektem do aplikace se zobrazí dialogové okno s výzvou k výběru akce, kterou se má soubor načíst." + #: src/slic3r/GUI/Preferences.cpp:156 msgid "When closing the application, always ask for unsaved changes" msgstr "Při zavírání aplikace vždy ptát na neuložené změny" diff --git a/resources/localization/de/PrusaSlicer.mo b/resources/localization/de/PrusaSlicer.mo index 7a3021c3018c563d0e1fec35e6885af57a40fae8..f2692af20330ca4af8e8d9d062ed3c81de968964 100644 GIT binary patch delta 79933 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 G^Zx+$s{+;l delta 51532 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 diff --git a/resources/localization/de/PrusaSlicer_de.po b/resources/localization/de/PrusaSlicer_de.po index e926a6145..97c615134 100644 --- a/resources/localization/de/PrusaSlicer_de.po +++ b/resources/localization/de/PrusaSlicer_de.po @@ -5,82 +5,101 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 2.4.2\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" -#: src/slic3r/GUI/MainFrame.cpp:66 -msgid " - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/releases" -msgstr " - Denken Sie an die Überprüfung auf Updates unter http://github.com/prusa3d/PrusaSlicer/releases" +#: src/slic3r/GUI/Tab.cpp:4124 +msgid "" +"\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" +"To enable \"%1%\", please switch off \"%2%\"" +msgstr "" +"\"%1%\" ist deaktiviert, weil \"%2%\" in der Kategorie \"%3%\" eingeschaltet ist.\n" +"Um \"%1%\" zu aktivieren, schalten Sie bitte \"%2%\" aus." -#: src/slic3r/GUI/MainFrame.cpp:872 -msgid " was successfully sliced." -msgstr " wurde erfolgreich gesliced." - -#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 -#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 -#: src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 +#: src/libslic3r/PrintConfig.cpp:2931 msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:963 +#: src/slic3r/GUI/GLCanvas3D.cpp:969 #, c-format msgid "%.2f - %.2f mm" msgstr "%.2f - %.2f mm" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" msgstr "%1% Voreinstellung" -#: src/slic3r/GUI/Plater.cpp:4400 +#: src/slic3r/GUI/Plater.cpp:4423 msgid "%1% printer was active at the time the target Undo / Redo snapshot was taken. Switching to %1% printer requires reloading of %1% presets." msgstr "Der %1% Drucker war zum Zeitpunkt der Aufnahme des Ziel-Rückgängig-/Wiederherstellungs-Schnappschusses aktiv. Die Umstellung auf den %1%-Drucker erfordert ein Neuladen der %1%-Voreinstellungen." -#: src/libslic3r/Print.cpp:1374 +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." +msgstr "%1% wurde erfolgreich gesliced." + +#: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "%1%=%2% mm ist zu niedrig, um auf einer Schichthöhe von %3% mm druckbar zu sein" -#: src/slic3r/GUI/PresetHints.cpp:229 +#: src/slic3r/GUI/PresetHints.cpp:228 #, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm³/s mit einer Filamentgeschwindigkeit von %3.2f mm/s." -#: src/slic3r/GUI/Plater.cpp:1152 +#: src/slic3r/GUI/Plater.cpp:1061 #, c-format msgid "%d (%d shells)" msgstr "%d (%d Konturhüllen)" -#: src/slic3r/GUI/Plater.cpp:1160 +#: src/slic3r/GUI/Plater.cpp:1069 #, c-format msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" msgstr "%d degenerierte Flächen, %d Kanten korrigiert, %d Flächen entfernt, %d Flächen hinzugefügt, %d Flächen umgekehrt, %d rückwärtige Kanten" -#: src/slic3r/GUI/PresetHints.cpp:270 +#: src/slic3r/GUI/PresetHints.cpp:269 #, c-format msgid "%d lines: %.2f mm" msgstr "%d Linien: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1027 +#: src/slic3r/GUI/MainFrame.cpp:1728 #, c-format msgid "%d presets successfully imported." msgstr "%d Voreinstellungen erfolgreich importiert." -#: src/slic3r/GUI/MainFrame.cpp:692 +#: src/slic3r/GUI/GUI_App.cpp:718 +#, c-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"Möchten Sie fortfahren?" + +#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 #, c-format msgid "%s &Website" msgstr "%s &Webseite" +#: src/slic3r/GUI/GUI_App.cpp:394 +#, c-format +msgid "%s - BREAKING CHANGE" +msgstr "%s - BREAKING CHANGE" + #: src/slic3r/GUI/UpdateDialogs.cpp:211 #, c-format msgid "%s configuration is incompatible" msgstr "%s Konfiguration ist nicht kompatibel" -#: src/slic3r/GUI/Field.cpp:175 +#: src/slic3r/GUI/Field.cpp:223 #, c-format msgid "%s doesn't support percentage" msgstr "%s akzeptiert keine Prozentangaben" @@ -90,7 +109,7 @@ msgstr "%s akzeptiert keine Prozentangaben" msgid "%s error" msgstr "%s Fehler" -#: src/slic3r/GUI/ConfigWizard.cpp:481 +#: src/slic3r/GUI/ConfigWizard.cpp:499 #, c-format msgid "%s Family" msgstr "%s Familie" @@ -100,7 +119,7 @@ msgstr "%s Familie" msgid "%s has encountered an error" msgstr "%s ist auf einen Fehler gestoßen" -#: src/slic3r/GUI/GUI_App.cpp:138 +#: src/slic3r/GUI/GUI_App.cpp:528 #, c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n" @@ -111,12 +130,12 @@ msgstr "" "\n" "Die Anwendung wird nun beendet." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:222 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:62 #, c-format msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it." msgstr "%s ist auf einen Fehler gestoßen. Es wurde wahrscheinlich dadurch verursacht, dass der Speicher knapp wird. Wenn Sie sicher sind, dass Sie genügend RAM auf Ihrem System haben, kann dies auch ein Programmfehler sein, und wir würden uns freuen, wenn Sie ihn melden würden." -#: src/slic3r/GUI/UpdateDialogs.cpp:308 +#: src/slic3r/GUI/UpdateDialogs.cpp:309 #, c-format msgid "%s has no configuration updates available." msgstr "Für %s sind keine Konfigurationsaktualisierungen verfügbar." @@ -143,7 +162,7 @@ msgstr "" "\n" "Bitte fahren Sie fort mit '%s'. Dies folgt nun, um die neuen Einstellungen einzurichten sowie auszuwählen, ob Einstellungen automatisch aktualisiert werden dürfen." -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 #, c-format msgid "%s View Mode" msgstr "%s Anzeigemodus" @@ -163,218 +182,248 @@ msgstr "" "\n" "Aktualisierte Konfigurations-Bundles:" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 #, c-format msgid "&About %s" msgstr "Ü&ber %s" -#: src/slic3r/GUI/GUI_App.cpp:908 +#: src/slic3r/GUI/MainFrame.cpp:1297 +msgid "&Collapse sidebar" +msgstr "Seitenleiste zuklappen (&C)" + +#: src/slic3r/GUI/GUI_App.cpp:1645 msgid "&Configuration" msgstr "&Konfiguration" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "&Configuration Snapshots" msgstr "Konfi&gurations-Momentaufnahmen" -#: src/slic3r/GUI/MainFrame.cpp:588 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Copy" msgstr "&Kopieren" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "&Delete selected" msgstr "Löschen aus&gewählt" -#: src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 msgid "&Edit" msgstr "&Bearbeiten" -#: src/slic3r/GUI/MainFrame.cpp:506 +#: src/slic3r/GUI/MainFrame.cpp:1103 msgid "&Export" msgstr "&Export" -#: src/slic3r/GUI/MainFrame.cpp:617 src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 msgid "&Filament Settings Tab" msgstr "&Filamenteinstellungen" -#: src/slic3r/GUI/MainFrame.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 +#: src/slic3r/GUI/MainFrame.cpp:1417 msgid "&File" msgstr "&Datei" -#: src/slic3r/GUI/ConfigWizard.cpp:1981 +#: src/slic3r/GUI/ConfigWizard.cpp:2492 msgid "&Finish" msgstr "&Beenden" -#: src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:1141 +msgid "&G-code preview" +msgstr "&G-Code-Vorschau" + +#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 +#: src/slic3r/GUI/MainFrame.cpp:1423 msgid "&Help" msgstr "&Hilfe" -#: src/slic3r/GUI/MainFrame.cpp:474 +#: src/slic3r/GUI/MainFrame.cpp:1065 msgid "&Import" msgstr "&Import" -#: src/slic3r/GUI/GUI_App.cpp:822 +#: src/slic3r/GUI/GUI_App.cpp:1517 msgid "&Language" msgstr "Sp&rache" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "&New Project" msgstr "&Neues Projekt" -#: src/slic3r/GUI/ConfigWizard.cpp:1980 +#: src/slic3r/GUI/ConfigWizard.cpp:2491 msgid "&Next >" msgstr "&Weiter >" -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "&Open G-code" +msgstr "Öffne G-C&ode" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "&Open Project" msgstr "Pr&ojekt öffnen" -#: src/slic3r/GUI/MainFrame.cpp:591 +#: src/slic3r/GUI/MainFrame.cpp:1197 msgid "&Paste" msgstr "Ei&nfügen" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "&Plater Tab" msgstr "Druck&platte" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1487 msgid "&Preferences" msgstr "&Einstellungen" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 msgid "&Quit" msgstr "&Beenden" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:1189 msgid "&Redo" msgstr "&Redo" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "&Repair STL file" msgstr "STL-Datei &reparieren" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "&Save Project" msgstr "Projekt &sichern" -#: src/slic3r/GUI/MainFrame.cpp:565 +#: src/slic3r/GUI/MainFrame.cpp:1171 msgid "&Select all" msgstr "Alle&s auswählen" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:1186 msgid "&Undo" msgstr "&Undo" -#: src/slic3r/GUI/MainFrame.cpp:724 +#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 +#: src/slic3r/GUI/MainFrame.cpp:1418 msgid "&View" msgstr "&Anzeige" -#: src/slic3r/GUI/MainFrame.cpp:723 +#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 msgid "&Window" msgstr "&Fenster" -#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 +#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 msgid "(All)" msgstr "(Alles)" -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1554 msgid "(minimum)" msgstr "(Minimum)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "(Re)slice" msgstr "(Re)Slice" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "(Re)Slice No&w" msgstr "(Re)Slice jet&zt" -#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 msgid "(Unknown)" msgstr "(Unbekannt)" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") nicht gefunden." -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "0 (soluble)" msgstr "0 (löslich)" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "0.2 (detachable)" msgstr "0,2 (lösbar)" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/Plater.cpp:4097 +#: src/slic3r/GUI/Plater.cpp:4044 msgid "3D editor view" msgstr "3D Editiermodus" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:889 msgid "3D Honeycomb" msgstr "3D Bienenwabe" -#: src/slic3r/GUI/Mouse3DController.cpp:274 +#: src/slic3r/GUI/NotificationManager.hpp:318 +msgid "3D Mouse disconnected." +msgstr "3D-Maus nicht angeschlossen." + +#: src/slic3r/GUI/Mouse3DController.cpp:263 msgid "3Dconnexion settings" msgstr "3Dconnexion Einstellungen" -#: src/slic3r/GUI/Plater.cpp:5038 +#: src/slic3r/GUI/Plater.cpp:5167 #, c-format msgid "3MF file exported to %s" msgstr "3MF Datei exportiert nach %s" -#: src/slic3r/GUI/ConfigWizard.cpp:1979 +#: src/slic3r/GUI/ConfigWizard.cpp:2490 msgid "< &Back" msgstr "< &Zurück" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:321 msgid "A boolean expression using the configuration values of an active print profile. If this expression evaluates to true, this profile is considered compatible with the active print profile." msgstr "Ein boolescher Ausdruck, der die Konfigurationswerte eines aktiven Druckprofils verwendet. Wenn dieser Ausdruck als wahr bewertet wird, wird dieses Profil als kompatibel mit dem aktiven Druckprofil angesehen." -#: src/libslic3r/PrintConfig.cpp:272 +#: src/libslic3r/PrintConfig.cpp:306 msgid "A boolean expression using the configuration values of an active printer profile. If this expression evaluates to true, this profile is considered compatible with the active printer profile." msgstr "Ein boolescher Ausdruck, der die Konfigurationswerte eines aktiven Druckerprofils verwendet. Wenn dieser Ausdruck als wahr bewertet wird, wird dieses Profil als kompatibel mit dem aktiven Druckerprofil angesehen." -#: src/slic3r/GUI/Tab.cpp:975 +#: src/slic3r/GUI/Tab.cpp:1237 msgid "A copy of the current system preset will be created, which will be detached from the system preset." msgstr "Es wird eine Kopie der aktuellen Systemvoreinstellung erstellt, die von der Systemvoreinstellung gelöst wird." -#: src/slic3r/GUI/ConfigWizard.cpp:1034 +#: src/slic3r/GUI/ConfigWizard.cpp:1400 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "Ein Daumenwert ist 160 bis 230 °C für PLA, und 215 bis 250 °C für ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:1048 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." msgstr "Ein Daumenwert ist 60 °C für PLA und 110 °C für ABS. Auf 0 setzen, falls kein beheiztes Druckbett vorhanden ist." -#: src/slic3r/GUI/GLCanvas3D.cpp:686 -msgid "A toolpath outside the print area was detected" -msgstr "Ein Werkzeugweg außerhalb des Druckbereichs wurde erkannt" +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "A toolpath outside the print area was detected." +msgstr "Es wurde ein Werkzeugweg außerhalb des Druckbereichs erkannt." -#: src/slic3r/GUI/AboutDialog.cpp:199 +#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 #, c-format msgid "About %s" msgstr "Über %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:959 +#: src/slic3r/GUI/GCodeViewer.cpp:2189 +msgid "above" +msgstr "über" + +#: src/slic3r/GUI/GLCanvas3D.cpp:965 #, c-format msgid "above %.2f mm" msgstr "oberhalb %.2f mm" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Über Z" -#: src/slic3r/GUI/Tab.cpp:1164 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Acceleration control (advanced)" msgstr "Beschleunigungskontrolle (fortgeschritten)" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Accuracy" msgstr "Genauigkeit" +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 +msgid "Accurate" +msgstr "Akkurat" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Aktivieren" @@ -383,67 +432,75 @@ msgstr "Aktivieren" msgid "Active" msgstr "Aktiv" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1705 +#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "aktiv" -#: src/slic3r/GUI/GLCanvas3D.cpp:267 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Adaptive" msgstr "Adaptiv" -#: src/slic3r/GUI/Tab.cpp:241 -msgid "Add a new printer" -msgstr "Neuen Drucker hinzufügen" +#: src/libslic3r/PrintConfig.cpp:894 +msgid "Adaptive Cubic" +msgstr "Adaptiv kubisch" -#: src/libslic3r/PrintConfig.cpp:2782 +#: src/slic3r/GUI/SavePresetDialog.cpp:314 +msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" +msgstr "\"%1%\" als nächste Voreinstellung für den physischen Drucker \"%2%\" hinzufügen" + +#: src/libslic3r/PrintConfig.cpp:2946 msgid "Add a pad underneath the supported model" msgstr "Fügt eine Grundschicht unter das gestützte Modell" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2200 msgid "Add a sheath (a single perimeter line) around the base support. This makes the support more reliable, but also more difficult to remove." msgstr "Fügen Sie eine Sheath (eine einzelne Druckkontur) um die Basisschicht herum hinzu. Das macht die Stützstrukturen zuverlässiger, aber auch schwieriger zu entfernen." -#: src/slic3r/GUI/DoubleSlider.cpp:991 +#: src/slic3r/GUI/DoubleSlider.cpp:1114 msgid "Add another code - Ctrl + Left click" msgstr "Weiteren Code hinzufügen - Strg + Linksklick" -#: src/slic3r/GUI/DoubleSlider.cpp:992 +#: src/slic3r/GUI/DoubleSlider.cpp:1115 msgid "Add another code - Right click" msgstr "Weiteren Code hinzufügen - Rechtsklick" -#: src/slic3r/GUI/DoubleSlider.cpp:1477 +#: src/slic3r/GUI/DoubleSlider.cpp:1665 msgid "Add color change" msgstr "Farbwechsel hinzufügen" -#: src/slic3r/GUI/DoubleSlider.cpp:1180 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "Add color change (%1%) for:" msgstr "Farbwechsel (%1%) hinzufügen für:" -#: src/slic3r/GUI/DoubleSlider.cpp:988 +#: src/slic3r/GUI/DoubleSlider.cpp:1111 msgid "Add color change - Left click" msgstr "Farbwechsel hinzufügen - Linksklick" -#: src/slic3r/GUI/DoubleSlider.cpp:986 +#: src/slic3r/GUI/DoubleSlider.cpp:1109 msgid "Add color change - Left click for predefined color or Shift + Left click for custom color selection" msgstr "Farbwechsel hinzufügen - Linksklick für vordefinierte Farbe oder Shift + Linksklick für benutzerdefinierte Farbauswahl" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Add color change marker for current layer" msgstr "Fügt einen Farbwechselmarker der aktuellen Schicht hinzu" -#: src/slic3r/GUI/DoubleSlider.cpp:1490 +#: src/slic3r/GUI/DoubleSlider.cpp:1682 msgid "Add custom G-code" msgstr "Benutzerdefinierten G-Code hinzufügen" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/DoubleSlider.cpp:1679 +msgid "Add custom template" +msgstr "Benutzerdefinierte Vorlage hinzufügen" + +#: src/slic3r/GUI/GLCanvas3D.cpp:235 msgid "Add detail" msgstr "Detail hinzufügen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:421 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:308 msgid "Add drainage hole" msgstr "Drainageloch hinzufügen" -#: src/slic3r/GUI/DoubleSlider.cpp:984 +#: src/slic3r/GUI/DoubleSlider.cpp:1107 msgid "Add extruder change - Left click" msgstr "Extruderwechsel hinzufügen - Linksklick" @@ -451,30 +508,30 @@ msgstr "Extruderwechsel hinzufügen - Linksklick" msgid "Add extruder to sequence" msgstr "Extruder zur Sequenz hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1993 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 msgid "Add Generic Subobject" msgstr "Generische Subobjekt hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2896 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2925 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2943 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 msgid "Add Height Range" msgstr "Höhenbereich hinzufügen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3788 -#: src/slic3r/GUI/Plater.cpp:3800 src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 +#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 msgid "Add instance" msgstr "Kopie hinzufügen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 msgid "Add Instance of the selected object" msgstr "Kopie des gewählten Objektes hinzufügen" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:165 msgid "Add layer range" msgstr "Schichtbereich hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2328 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 msgid "Add Layers" msgstr "Schichten hinzufügen" @@ -482,12 +539,12 @@ msgstr "Schichten hinzufügen" msgid "Add modifier" msgstr "Modifizierer hinzufügen" -#: src/libslic3r/PrintConfig.cpp:479 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:515 +#, c-format msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." msgstr "Fügen Sie bei Bedarf weitere Perimeter hinzu, um Spalten in schrägen Wänden zu vermeiden. PrusaSlicer fügt immer wieder Perimeter hinzu, bis mehr als 70% der unmittelbar darüber liegenden Schleife unterstützt werden." -#: src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/Plater.cpp:3858 msgid "Add one more instance of the selected object" msgstr "Eine weitere Kopie des gewählten Objekts hinzufügen" @@ -495,52 +552,61 @@ msgstr "Eine weitere Kopie des gewählten Objekts hinzufügen" msgid "Add part" msgstr "Teil hinzufügen" -#: src/slic3r/GUI/DoubleSlider.cpp:1487 +#: src/slic3r/GUI/DoubleSlider.cpp:1675 msgid "Add pause print" msgstr "Druckpause hinzufügen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 +#: src/slic3r/GUI/PresetComboBoxes.cpp:627 +#: src/slic3r/GUI/PresetComboBoxes.cpp:674 +msgid "Add physical printer" +msgstr "Physischen Drucker hinzufügen" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "Add point" msgstr "Punkt hinzufügen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 msgid "Add point to selection" msgstr "Punkt zur Auswahl hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1509 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +msgid "Add preset for this printer device" +msgstr "Voreinstellung für diesen Drucker hinzufügen" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 msgid "Add settings" msgstr "Einstellungen hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1386 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 msgid "Add Settings Bundle for Height range" msgstr "Höhenbreich Einstellungsbündel hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 msgid "Add Settings Bundle for Object" msgstr "Objekt Einstellungsbündel hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 msgid "Add Settings Bundle for Sub-object" msgstr "Subobjekt Einstellungsbündel hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1314 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 msgid "Add Settings for Layers" msgstr "Schichten Einstellungen hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 msgid "Add Settings for Object" msgstr "Objekt Einstellungen hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 msgid "Add Settings for Sub-object" msgstr "Subobjekt Einstellungen hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2051 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2210 msgid "Add Shape" msgstr "Form hinzufügen" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:443 msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." msgstr "Fügen Sie massives Infill in der Nähe von schrägen Flächen hinzu, um die vertikale Schalenstärke zu gewährleisten (obere und untere massive Schichten)." @@ -552,11 +618,19 @@ msgstr "Stützblocker hinzufügen" msgid "Add support enforcer" msgstr "Stützverstärker hinzufügen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:494 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:374 msgid "Add support point" msgstr "Stützpunkt hinzufügen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 +msgid "Add supports" +msgstr "Stützen hinzufügen" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +msgid "Add supports by angle" +msgstr "Stützen nach Winkel hinzufügen" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4833 msgid "Add..." msgstr "Hinzufügen..." @@ -564,23 +638,29 @@ msgstr "Hinzufügen..." msgid "Add/Remove filaments" msgstr "Filamente hinzufügen/entfernen" -#: src/slic3r/GUI/Preset.cpp:1201 +#: src/slic3r/GUI/PresetComboBoxes.cpp:813 msgid "Add/Remove materials" msgstr "Materialien hinzufügen/entfernen" -#: src/slic3r/GUI/Preset.cpp:1203 +#: src/slic3r/GUI/PresetComboBoxes.cpp:622 +#: src/slic3r/GUI/PresetComboBoxes.cpp:669 +msgid "Add/Remove presets" +msgstr "Voreinstellungen hinzufügen/entfernen" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:815 +#: src/slic3r/GUI/PresetComboBoxes.cpp:972 msgid "Add/Remove printers" msgstr "Drucker hinzufügen/entfernen" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "Additional information:" msgstr "Weitere Informationen:" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:62 msgid "Additional Settings" msgstr "Zusätzliche Einstellungen" -#: src/slic3r/GUI/ConfigWizard.cpp:791 +#: src/slic3r/GUI/ConfigWizard.cpp:1150 msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." msgstr "Zusätzlich wird eine Momentaufnahme der gesamten Konfiguration als Sicherung erstellt, bevor ein Update durchgeführt wird." @@ -588,23 +668,22 @@ msgstr "Zusätzlich wird eine Momentaufnahme der gesamten Konfiguration als Sich msgid "Address" msgstr "Adresse" -#: src/slic3r/GUI/GUI_App.cpp:814 src/slic3r/GUI/GUI_ObjectList.cpp:104 -#: src/slic3r/GUI/GUI_ObjectList.cpp:622 src/slic3r/GUI/Tab.cpp:1087 -#: src/slic3r/GUI/Tab.cpp:1102 src/slic3r/GUI/Tab.cpp:1201 -#: src/slic3r/GUI/Tab.cpp:1204 src/slic3r/GUI/Tab.cpp:1470 -#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:3661 -#: src/slic3r/GUI/wxExtensions.cpp:754 src/libslic3r/PrintConfig.cpp:88 -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 -#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2448 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 +#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 +#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 +#: src/libslic3r/PrintConfig.cpp:2591 msgid "Advanced" msgstr "Erweiterte Einstellungen" -#: src/slic3r/GUI/ConfigWizard.cpp:821 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "Advanced mode" msgstr "Fortgeschrittener Modus" -#: src/slic3r/GUI/GUI_App.cpp:814 +#: src/slic3r/GUI/GUI_App.cpp:1506 msgid "Advanced View Mode" msgstr "Erweiterter Anzeigemodus" @@ -612,124 +691,140 @@ msgstr "Erweiterter Anzeigemodus" msgid "Advanced: Output log" msgstr "Fortgeschritten: Ausgabeprotokoll" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:704 msgid "After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, and the filament pressure is likely not yet stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." msgstr "Nach einem Werkzeugwechsel ist die genaue Position des neu geladenen Filaments innerhalb der Düse möglicherweise nicht bekannt, und der Filamentdruck ist wahrscheinlich noch nicht stabil. Bevor der Druckkopf in eine Füllung oder ein Opferobjekt wischt, wird PrusaSlicer immer diese Materialmenge in den Wischturm leiten, um aufeinanderfolgende Füll- oder Opferobjekt-Extrusionen zuverlässig herzustellen." -#: src/slic3r/GUI/Tab.cpp:1994 src/libslic3r/PrintConfig.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 msgid "After layer change G-code" msgstr "G-Code am Schichtende" -#: src/libslic3r/PrintConfig.cpp:3398 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Align the model to the given point." msgstr "Das Modell auf den angegebenen Punkt ausrichten." -#: src/libslic3r/PrintConfig.cpp:3397 +#: src/libslic3r/PrintConfig.cpp:3596 msgid "Align XY" msgstr "Ausrichten von XY" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1739 msgid "Aligned" msgstr "Ausgerichtet" -#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 -#: src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 +#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "Alle" -#: src/libslic3r/Print.cpp:1219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" +msgstr "Alles Gizmos: Drehen - linke Maustaste; Schwenken - rechte Maustaste" + +#: src/slic3r/GUI/ConfigWizard.cpp:694 +msgid "All installed printers are compatible with the selected filament." +msgstr "Alle installierten Drucker sind mit dem ausgewählten Filament kompatibel." + +#: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Alle Objekte befinden sich außerhalb des Druckraums." -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "All objects will be removed, continue?" msgstr "Alle Objekte werden entfernt, fortfahren?" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All settings changes will be discarded." +msgstr "Alle Einstellungsänderungen werden verworfen." + +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Alles standard" -#: src/libslic3r/Zipper.cpp:62 +#: src/libslic3r/miniz_extension.cpp:121 msgid "allocation failed" msgstr "Allokation fehlgeschlagen" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Entlang der X Achse" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Along Y axis" msgstr "Entlang der Y Achse" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Along Z axis" msgstr "Entlang der Z Achse" -#: src/slic3r/GUI/ConfigWizard.cpp:222 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:160 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:141 +msgid "Alt + Mouse wheel" +msgstr "Alt + Mausrad" + +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "Alternate nozzles:" msgstr "Alternative Düsen:" -#: src/slic3r/GUI/Plater.cpp:5002 +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "Always ask for unsaved changes when selecting new preset" +msgstr "Immer nach nicht gespeicherten Änderungen fragen, wenn eine neue Voreinstellung ausgewählt wird" + +#: src/slic3r/GUI/Plater.cpp:5135 #, c-format msgid "AMF file exported to %s" msgstr "AMF Datei exportiert nach %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:690 +#: src/slic3r/GUI/GLCanvas3D.cpp:638 msgid "" -"An object outside the print area was detected\n" -"Resolve the current problem to continue slicing" +"An object outside the print area was detected.\n" +"Resolve the current problem to continue slicing." msgstr "" -"Ein Objekt außerhalb des Druckbereichs wurde erkannt.\n" -"Beheben Sie das aktuelle Problem, um mit dem Slicen fortzufahren" +"Es wurde ein Objekt außerhalb des Druckbereichs erkannt.\n" +"Das Problem lösen, um mit dem Slicen fortzufahren." -#: src/slic3r/GUI/GLCanvas3D.cpp:685 -msgid "An object outside the print area was detected" -msgstr "Ein Objekt außerhalb des Druckbereichs wurde erkannt" +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "An object outside the print area was detected." +msgstr "Es wurde ein Objekt außerhalb des Druckbereichs erkannt." -#: src/slic3r/GUI/Tab.cpp:2943 -msgid "and it has the following unsaved changes:" -msgstr "und hat die folgenden ungesicherten Änderungen:" - -#: src/slic3r/GUI/Plater.cpp:3170 +#: src/slic3r/GUI/Plater.cpp:2972 msgid "Another export job is currently running." msgstr "Ein anderer Exportjob läuft zurzeit." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Any arrow" msgstr "Jeder Pfeil" -#: src/slic3r/GUI/Tab.cpp:965 +#: src/slic3r/GUI/Tab.cpp:1283 msgid "Any modifications should be saved as a new preset inherited from this one." msgstr "Alle Änderungen sollten als neue Voreinstellungen gespeichert werden, die von diesem vererbt wurden." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:106 msgid "API Key / Password" msgstr "API Key / Kennwort" -#: src/slic3r/GUI/GUI_App.cpp:810 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Application preferences" msgstr "Anwendungseinstellungen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1374 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1221 msgid "Apply changes" msgstr "Änderungen anwenden" -#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:611 src/libslic3r/PrintConfig.cpp:1823 msgid "approximate seconds" msgstr "ungefähre Sekunden" -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 +#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 msgid "Archimedean Chords" msgstr "Archimedische Bögen" -#: src/libslic3r/Zipper.cpp:88 +#: src/libslic3r/miniz_extension.cpp:147 msgid "archive is too large" msgstr "Archiv ist zu groß" -#. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3420 msgid "Are you sure you want to %1% the selected preset?" msgstr "Sind Sie sicher, dass Sie die gewählte Voreinstellung %1% möchten?" @@ -739,97 +834,125 @@ msgid "" "This could leave your printer in an unusable state!" msgstr "Sind Sie sicher, dass Sie das Flashen der Firmware abbrechen wollen? Dies könnte Ihren Drucker in einen unbrauchbaren Zustand versetzen!" -#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 msgid "Are you sure you want to continue?" msgstr "Sind Sie sicher, dass Sie weitermachen wollen?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1269 +#: src/slic3r/GUI/Tab.cpp:3392 +msgid "Are you sure you want to delete \"%1%\" preset from the physical printer \"%2%\"?" +msgstr "Sind Sie sicher, dass Sie die Voreinstellung \"%1%\" des physischen Drucker \"%2%\" löschen möchten?" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +msgid "Are you sure you want to delete \"%1%\" printer?" +msgstr "Sind Sie sicher, dass Sie den Drucker \"%1%\" löschen möchten?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1128 msgid "Are you sure you want to do it?" msgstr "Sind Sie sicher, dass Sie es tun wollen?" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Area fill" msgstr "Bereichsfüllung" -#: src/slic3r/GUI/Plater.cpp:641 +#: src/slic3r/GUI/Plater.cpp:507 msgid "Around object" msgstr "Um das Objekt" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 -#: src/slic3r/GUI/Plater.cpp:2754 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1549 msgid "Arrange" msgstr "Anordnen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "Auswahl anordnen" -#: src/libslic3r/PrintConfig.cpp:3443 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." msgstr "Die zur Verfügung stehenden Modelle in einer Platte anordnen und zu einem einzigen Modell zusammenführen, um Aktionen zusammen durchführen zu können." -#: src/slic3r/GUI/Plater.cpp:2813 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:149 msgid "Arranging" msgstr "Anordnen" -#: src/slic3r/GUI/Plater.cpp:2841 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 msgid "Arranging canceled." msgstr "Anordnen abgebrochen." -#: src/slic3r/GUI/Plater.cpp:2842 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 msgid "Arranging done." msgstr "Anordnung beendet." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Down" msgstr "Pfeil runter" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 msgid "Arrow Left" msgstr "Pfeil links" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Arrow Right" msgstr "Pfeil rechts" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Up" msgstr "Pfeil hoch" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:290 +#: src/slic3r/GUI/GUI_App.cpp:246 +msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" +msgstr "Artwork-Modell von Nora Al-Badri und Jan Nikolai Nelles" + +#: src/slic3r/GUI/OpenGLManager.cpp:265 msgid "As a workaround, you may run PrusaSlicer with a software rendered 3D graphics by running prusa-slicer.exe with the --sw_renderer parameter." msgstr "Als Workaround können Sie PrusaSlicer mit einer software-gerenderten 3D-Grafik ausführen, indem Sie prusa-slicer.exe mit dem Parameter --sw_renderer ausführen." -#: src/slic3r/GUI/GUI_App.cpp:1086 src/slic3r/GUI/Plater.cpp:2313 -#: src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/Preferences.cpp:154 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +msgid "Ask for unsaved changes when closing application" +msgstr "Beim Schließen der Anwendung nach ungespeicherten Änderungen fragen" + +#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 +msgid "Ask for unsaved changes when selecting new preset" +msgstr "Nach nicht gespeicherten Änderungen fragen, wenn eine neue Voreinstellung ausgewählt wird" + +#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 msgid "Attention!" msgstr "Achtung!" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:150 +msgid "Authorization Type" +msgstr "Autorisierungs-Typ" + +#: src/libslic3r/PrintConfig.cpp:2013 msgid "Auto generated supports" msgstr "Stützstrukturen automatisch generieren" -#: src/slic3r/GUI/Preferences.cpp:47 +#: src/slic3r/GUI/Preferences.cpp:64 msgid "Auto-center parts" msgstr "Teile automatisch zentrieren" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1377 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1224 msgid "Auto-generate points" msgstr "Punkte automatisch generieren" -#: src/slic3r/GUI/Plater.cpp:1157 +#: src/slic3r/GUI/Plater.cpp:1066 #, c-format msgid "Auto-repaired (%d errors)" msgstr "Auto-Reparatur (%d Fehler)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:339 +#: src/slic3r/GUI/GUI_ObjectList.cpp:386 #, c-format msgid "Auto-repaired (%d errors):" msgstr "Auto-Reparatur (%d Fehler):" @@ -838,45 +961,53 @@ msgstr "Auto-Reparatur (%d Fehler):" msgid "Autodetected" msgstr "Automatisch erkannt" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1273 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1134 msgid "Autogenerate support points" msgstr "Stützpunkte automatisch generieren" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1268 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1127 msgid "Autogeneration will erase all manually edited points." msgstr "Die automatische Generierung löscht alle manuell bearbeiteten Punkte." -#: src/slic3r/GUI/Tab.cpp:3632 +#: src/slic3r/GUI/Tab.cpp:4051 msgid "Automatic generation" msgstr "Automatische Erzeugung" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Automatic updates" msgstr "Automatische Updates" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Automatically repair an STL file" msgstr "Repariere automatisch die STL Datei" -#: src/slic3r/GUI/Tab.cpp:1171 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "Automatisch setzen nach Winkel" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 +msgid "Autoset custom supports" +msgstr "Automatische benutzerdefinierte Stützen" + +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Autospeed (advanced)" msgstr "Automatische Geschwindigkeit (fortgeschritten)" -#: src/libslic3r/PrintConfig.cpp:136 +#: src/libslic3r/PrintConfig.cpp:169 msgid "Avoid crossing perimeters" msgstr "Kreuzen der Kontur vermeiden" -#: src/slic3r/GUI/Tab.cpp:3268 +#: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "PFEIL ZURÜCK" -#: src/slic3r/GUI/Tab.cpp:3290 +#: src/slic3r/GUI/Tab.cpp:3727 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click to reset all settings for the current option group to the last saved preset." msgstr "Das Symbol PFEIL ZURÜCK zeigt an, dass die Einstellungen geändert wurden und nicht mit dem zuletzt gespeicherten Preset für die aktuelle Optionsgruppe übereinstimmen. Klicken Sie hier, um alle Einstellungen für die aktuelle Optionsgruppe auf das zuletzt gespeicherte Preset zurückzusetzen." -#: src/slic3r/GUI/Tab.cpp:3304 +#: src/slic3r/GUI/Tab.cpp:3741 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the last saved preset.\n" "Click to reset current value to the last saved preset." @@ -884,19 +1015,23 @@ msgstr "" "Das Symbol PFEIL ZURÜCK zeigt an, dass der Wert geändert wurde und nicht mit dem zuletzt gespeicherten Preset übereinstimmt. \n" "Klicken Sie, um den aktuellen Wert auf das zuletzt gespeicherte Preset zurückzusetzen." -#: src/slic3r/GUI/Preferences.cpp:55 +#: src/slic3r/GUI/Preferences.cpp:72 msgid "Background processing" msgstr "Hintergrundberechnung" -#: src/slic3r/GUI/GUI_ObjectList.cpp:351 +#: src/slic3r/GUI/GUI_ObjectList.cpp:398 msgid "backwards edges" msgstr "umgekehrte Kanten" -#: src/slic3r/GUI/MainFrame.cpp:174 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:60 +msgid "Balanced" +msgstr "Balanziert" + +#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 msgid "based on Slic3r" msgstr "basiert auf Slic3r" -#: src/slic3r/GUI/Tab.cpp:1439 +#: src/slic3r/GUI/Tab.cpp:1785 msgid "Bed" msgstr "Druckbett" @@ -908,31 +1043,31 @@ msgstr "Druckbett individuelles Modell" msgid "Bed custom texture" msgstr "Druckbett individuelle Textur" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape" -msgstr "Druckbrettprofil" +msgstr "Druckbettprofil" #: src/libslic3r/PrintConfig.cpp:51 msgid "Bed shape" msgstr "Druckbettkontur" -#: src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape and Size" msgstr "Druckbettform und -größe" -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:181 msgid "Bed temperature" msgstr "Druckbetttemperatur" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." msgstr "Druckbetttemperatur für Schichten nach der ersten Schicht. Setzen Sie diesen Wert auf null, um die Befehle zur Steuerung der Betttemperatur im Output zu deaktivieren." -#: src/slic3r/GUI/ConfigWizard.cpp:1051 +#: src/slic3r/GUI/ConfigWizard.cpp:1417 msgid "Bed Temperature:" msgstr "Druckbetttemperatur:" -#: src/slic3r/GUI/Tab.cpp:1988 src/libslic3r/PrintConfig.cpp:153 +#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 msgid "Before layer change G-code" msgstr "G-Code vor dem Schichtwechsel" @@ -940,143 +1075,191 @@ msgstr "G-Code vor dem Schichtwechsel" msgid "Before roll back" msgstr "Vor dem Zurückwechseln" -#: src/slic3r/GUI/Plater.cpp:640 +#: src/slic3r/GUI/Plater.cpp:506 msgid "Below object" msgstr "Unter dem Objekt" -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "Below Z" msgstr "Unter Z" -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Between objects G-code" msgstr "G-Code zwischen Objekten" -#: src/slic3r/GUI/Tab.cpp:2006 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Between objects G-code (for sequential printing)" msgstr "G-Code zwischen Objekten (Sequentielles Drucken)" -#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +msgid "Block" +msgstr "Blockieren" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:32 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:383 +msgid "Block seam" +msgstr "Naht blockieren" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:373 +msgid "Block supports" +msgstr "Stützen blockieren" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +msgid "Block supports by angle" +msgstr "Stützen nach Winkel blockieren" + +#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 msgid "Bottle volume" msgstr "Flaschenvolumen" -#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 msgid "Bottle weight" msgstr "Flaschengewicht" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:665 src/libslic3r/PrintConfig.cpp:174 -#: src/libslic3r/PrintConfig.cpp:183 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 msgid "Bottom" msgstr "Unten" -#: src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Bottom fill pattern" msgstr "Bodenfüllmuster" -#: src/slic3r/GUI/PresetHints.cpp:342 +#: src/slic3r/GUI/PresetHints.cpp:340 msgid "Bottom is open." msgstr "Boden ist offen." -#: src/slic3r/GUI/PresetHints.cpp:336 +#: src/slic3r/GUI/PresetHints.cpp:334 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "Die Bodenschale ist %1% mm stark für eine Schichthöhe von %2% mm." -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:211 msgid "Bottom solid layers" msgstr "Massive Basisschichten" -#: src/slic3r/GUI/MainFrame.cpp:665 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 msgid "Bottom View" msgstr "Ansicht von unten" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1464 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1468 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "Box" msgstr "Kubus" -#: src/libslic3r/PrintConfig.cpp:193 +#: src/libslic3r/PrintConfig.cpp:227 msgid "Bridge" msgstr "Überbrückung" -#: src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:256 msgid "Bridge flow ratio" msgstr "Brückenflussverhältnis" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:350 msgid "Bridge infill" msgstr "Überbrückungs-Infill" -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Bridges" msgstr "Überbrückungen" -#: src/libslic3r/PrintConfig.cpp:213 +#: src/libslic3r/PrintConfig.cpp:247 msgid "Bridges fan speed" msgstr "Brückenlüftergeschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:202 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Bridging angle" msgstr "Überbrückungswinkel" -#: src/libslic3r/PrintConfig.cpp:204 +#: src/libslic3r/PrintConfig.cpp:238 msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for all bridges. Use 180° for zero angle." msgstr "Überbrückungswinkel Übersteuerung. Wird der Wert auf null gesetzt, wird der Überbrückungswinkel automatisch berechnet. Andernfalls wird der angegebene Winkel für alle Brücken verwendet. Verwenden Sie 180° für den Nullwinkel." -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" msgstr "Überbrückungvolumen" -#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1117 +#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 msgid "Brim" msgstr "Rand" -#: src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Brim width" msgstr "Randbreite" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1658 -#: src/slic3r/GUI/Tab.cpp:1721 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 msgid "Browse" msgstr "Suchen" -#: src/libslic3r/Zipper.cpp:82 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 +msgid "Brush shape" +msgstr "Pinselform" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 +msgid "Brush size" +msgstr "Pinselgröße" + +#: src/libslic3r/miniz_extension.cpp:141 msgid "buffer too small" msgstr "Puffer zu klein" +#: src/slic3r/GUI/GUI_App.cpp:1152 +msgid "" +"But since this version of PrusaSlicer we don't show this information in Printer Settings anymore.\n" +"Settings will be available in physical printers settings." +msgstr "" +"Seit dieser Version von PrusaSlicer zeigen wir diese Informationen nicht mehr in den Druckereinstellungen an.\n" +"Die Einstellungen sind in den Einstellungen für physische Drucker verfügbar." + #: src/slic3r/GUI/ButtonsDescription.cpp:16 msgid "Buttons And Text Colors Description" msgstr "Schaltflächen und Textfarben Beschreibung" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/GUI_App.cpp:1084 +msgid "" +"By default new Printer devices will be named as \"Printer N\" during its creation.\n" +"Note: This name can be changed later from the physical printers settings" +msgstr "" +"Standardmäßig werden neue Drucker bei ihrer Erstellung als \"Drucker N\" bezeichnet.\n" +"Hinweis: Dieser Name kann später über die Einstellungen für physische Drucker geändert werden." + +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "by the print profile maximum" msgstr "mit dem Maximum des Druckerprofils" -#: src/slic3r/GUI/Preferences.cpp:113 +#: src/slic3r/GUI/Preferences.cpp:178 msgid "Camera" msgstr "Kamera" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Camera view" msgstr "Kameraansicht" -#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "Abbrechen" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:155 msgid "Cancel selected" msgstr "Abbruch ausgewählt" -#: src/slic3r/GUI/Plater.cpp:3669 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Abgebrochen" -#: src/slic3r/GUI/Plater.cpp:3153 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Abbrechen" @@ -1088,7 +1271,7 @@ msgstr "Abbrechen..." msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "Kann die Extrusionsbreite für %1% nicht berechnen: Variable \"%2%\" nicht zugänglich." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 msgid "" "Cannot insert a new layer range after the current layer range.\n" "Current layer range overlaps with the next layer range." @@ -1096,7 +1279,7 @@ msgstr "" "Es kann kein neuer Schichtenbereich nach dem aktuellen Schichtenbereich eingefügt werden.\n" "Der aktuelle Schichtenbereich überschneidet sich mit dem nächsten Schichtenbereich." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3008 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 msgid "" "Cannot insert a new layer range after the current layer range.\n" "The next layer range is too thin to be split to two\n" @@ -1105,7 +1288,7 @@ msgstr "" "Es kann kein neuer Schichtenbereich nach dem aktuellen Schichtenbereich eingefügt werden.\n" "Der nächste Schichtenbereich ist zu schmal, um auf zwei Schichten aufgeteilt zu werden ohne die Mindestschichthöhe zu verletzen." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3012 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 msgid "" "Cannot insert a new layer range between the current and the next layer range.\n" "The gap between the current layer range and the next layer range\n" @@ -1114,80 +1297,88 @@ msgstr "" "Es kann kein neuer Schichtenbereich zwischen dem aktuellen und dem nächsten Schichtenbereich eingefügt werden.\n" "Die Lücke zwischen dem aktuellen und dem nächsten Schichtenbereich ist ist schmaler als die minimal zulässige Schichthöhe." -#: src/slic3r/GUI/Tab.cpp:3073 +#: src/slic3r/GUI/SavePresetDialog.cpp:137 msgid "Cannot overwrite a system profile." msgstr "Systemprofil kann nicht überschrieben werden." -#: src/slic3r/GUI/Tab.cpp:3077 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 msgid "Cannot overwrite an external profile." msgstr "Ein externes Profil kann nicht überschrieben werden." -#: src/libslic3r/SLAPrint.cpp:613 +#: src/libslic3r/SLAPrint.cpp:627 msgid "Cannot proceed without support points! Add support points or disable support generation." msgstr "Ohne Stützpunkte kann nicht weitergearbeitet werden! Fügen Sie Stützpunkte hinzu oder deaktivieren Sie die Stützstruktur-Generierung." -#: src/slic3r/GUI/Tab.cpp:1834 +#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "Fähigkeiten" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Capture a configuration snapshot" msgstr "Erfassen einer Konfigurations-Momentaufnahme" -#: src/libslic3r/PrintConfig.cpp:3424 +#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +msgid "Category" +msgstr "Kategorie" + +#: src/libslic3r/PrintConfig.cpp:3623 msgid "Center" msgstr "Mitte" -#: src/libslic3r/PrintConfig.cpp:3425 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Center the print around the given center." msgstr "Zentriert den Druck um den angegebenen Mittelpunkt." -#: src/slic3r/GUI/Tab.cpp:1728 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Zertifikatsdatei (*.crt, *.pem)|*.crt;*.pem|alle Dateien|*.*" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +#: src/slic3r/GUI/SavePresetDialog.cpp:313 +msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" +msgstr "\"%1%\" in \"%2%\" für den physischen Drucker \"%3%\" ändern." + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Change camera type (perspective, orthographic)" msgstr "Ändern des Kameratyps (perspektivisch, orthografisch)" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:885 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:693 msgid "Change drainage hole diameter" msgstr "Durchmesser des Drainagelochs ändern" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "Wechsel Extruder" -#: src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/slic3r/GUI/GUI_ObjectList.cpp:574 msgid "Change Extruder" msgstr "Wechsel Extruder" -#: src/slic3r/GUI/DoubleSlider.cpp:1145 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 msgid "Change extruder (N/A)" msgstr "Extruder wechseln (nv)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3997 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 msgid "Change Extruders" msgstr "Wechsel Extruder" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:157 #, c-format msgid "Change Option %s" msgstr "Ändere Option %s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3558 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 msgid "Change Part Type" msgstr "Teil Typ ändern" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:820 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:694 msgid "Change point head diameter" msgstr "Ändern des Stützpunkt-Kopfdurchmessers" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Change the number of instances of the selected object" msgstr "Anzahl der Kopien des gewählten Objektes ändern" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 msgid "Change type" msgstr "Typ ändern" @@ -1195,125 +1386,172 @@ msgstr "Typ ändern" msgid "Changelog && Download" msgstr "Changelog && Download" -#: src/slic3r/GUI/GUI_App.cpp:442 +#: src/slic3r/GUI/GUI_App.cpp:1245 msgid "Changing of an application language" msgstr "Wechsele die Anwendungssprache" -#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "Nach Updates suchen" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for configuration updates" msgstr "Suche nach Konfigurationsaktualisierungen" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for updates" msgstr "Nach &Updates suchen" -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: src/slic3r/GUI/BedShapeDialog.cpp:608 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Wählen Sie eine Datei aus, aus der Sie die Druckbetttextur importieren möchten (PNG/SVG):" -#: src/slic3r/GUI/MainFrame.cpp:773 +#: src/slic3r/GUI/MainFrame.cpp:1474 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Wählen Sie eine Datei zum Slicen (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/BedShapeDialog.cpp:555 +#: src/slic3r/GUI/BedShapeDialog.cpp:631 msgid "Choose an STL file to import bed model from:" msgstr "Wählen Sie eine STL-Datei aus, aus der Sie das Druckbettmodell importieren möchten:" -#: src/slic3r/GUI/BedShapeDialog.cpp:487 +#: src/slic3r/GUI/BedShapeDialog.cpp:563 msgid "Choose an STL file to import bed shape from:" msgstr "Wählen Sie eine STL-Datei aus, aus der Sie die Druckbettform importieren möchten:" -#: src/slic3r/GUI/GUI_App.cpp:555 +#: src/slic3r/GUI/GUI_App.cpp:1208 msgid "Choose one file (3MF/AMF):" msgstr "Wählen Sie eine Datei (3MF/AMF):" -#: src/slic3r/GUI/GUI_App.cpp:567 +#: src/slic3r/GUI/GUI_App.cpp:1233 +msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" +msgstr "Datei auswählen (GCODE/.GCO/.G/.ngc/NGC):" + +#: src/slic3r/GUI/GUI_App.cpp:1220 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Wählen Sie eine oder mehrere Dateien (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/ConfigWizard.cpp:895 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:35 +msgid "Choose SLA archive:" +msgstr "SLA Archiv wählen:" + +#: src/slic3r/GUI/ConfigWizard.cpp:1261 msgid "Choose the type of firmware used by your printer." msgstr "Wählen Sie den Typ der von Ihrem Drucker verwendeten Firmware." -#: src/slic3r/GUI/BedShapeDialog.cpp:89 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:36 +msgid "Circle" +msgstr "Kreis" + +#: src/slic3r/GUI/BedShapeDialog.cpp:142 msgid "Circular" msgstr "Kreisförmig" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 -msgid "Click right mouse button to open History" -msgstr "Klicken Sie mit der rechten Maustaste, um den Verlauf zu öffnen" +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 +msgid "Click right mouse button to open/close History" +msgstr "Klicken Sie mit der rechten Maustaste, um die Historie zu öffnen/schließen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:404 +#: src/slic3r/GUI/GUI_ObjectList.cpp:451 msgid "Click the icon to change the object printable property" msgstr "Klicken Sie auf das Symbol, um die Druckbar-Eigenschaft des Objekts zu ändern" -#: src/slic3r/GUI/GUI_ObjectList.cpp:398 +#: src/slic3r/GUI/GUI_ObjectList.cpp:445 msgid "Click the icon to change the object settings" msgstr "Klicken Sie auf das Symbol, um die Objekteinstellungen zu ändern" -#: src/slic3r/GUI/Plater.cpp:343 +#: src/slic3r/GUI/PresetComboBoxes.cpp:566 msgid "Click to edit preset" msgstr "Klicken zum Bearbeiten der Voreinstellung" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to hide" +msgstr "Klicken zum Ausblenden" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to show" +msgstr "Klicken zum Anzeigen" + +#: src/libslic3r/PrintConfig.cpp:286 msgid "Clip multi-part objects" msgstr "Beschneiden von Objekten aus mehreren Teilen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:25 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 msgid "Clipping of view" msgstr "Ausschnitt der Ansicht" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:364 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +#: src/slic3r/GUI/Mouse3DController.cpp:353 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Close" msgstr "Schließen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 -#: src/libslic3r/PrintConfig.cpp:2934 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Closing distance" msgstr "Schliessabstand" -#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 +#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +msgid "Collapse sidebar" +msgstr "Seitenleiste zuklappen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Collapse/Expand the sidebar" +msgstr "Seitenleiste zu-/ausklappen" + +#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 msgid "Color" msgstr "Farbe" -#: src/slic3r/GUI/DoubleSlider.cpp:1005 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +msgid "Color change" +msgstr "Farbwechsel" + +#: src/slic3r/GUI/DoubleSlider.cpp:1130 msgid "Color change (\"%1%\")" msgstr "Farbwechsel (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1006 +#: src/slic3r/GUI/DoubleSlider.cpp:1131 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Farbwechsel (\"%1%\") für Extruder %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:995 +#: src/slic3r/GUI/GLCanvas3D.cpp:1001 #, c-format msgid "Color change for Extruder %d at %.2f mm" msgstr "Farbwechsel für Extruder %d bei %.2f mm" -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 -#: src/libslic3r/GCode/PreviewData.cpp:359 +#: src/slic3r/GUI/Tab.cpp:2203 +msgid "Color Change G-code" +msgstr "G-Code für Farbwechsel" + +#: src/libslic3r/PrintConfig.cpp:1960 +msgid "Color change G-code" +msgstr "G-Code für Farbwechsel" + +#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +msgid "Color changes" +msgstr "Farbwechsel" + +#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 +#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 msgid "Color Print" msgstr "Color Print" -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:294 msgid "Colorprint height" msgstr "Colorprint Höhe" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:1034 msgid "Combine infill every" msgstr "Infill kombinieren alle" -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1039 msgid "Combine infill every n layers" msgstr "Kombiniere das Infill all n Schichten" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Commands" msgstr "Befehle" @@ -1321,23 +1559,23 @@ msgstr "Befehle" msgid "Comment:" msgstr "Kommentar:" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 +#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 msgid "Compatible print profiles" msgstr "Kompatible Druckprofile" -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Compatible print profiles condition" msgstr "Kompatible Druckprofile Bedingung" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 +#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 msgid "Compatible printers" msgstr "Kompatible Drucker" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:305 msgid "Compatible printers condition" msgstr "Kompatible Druckerbedingung" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:338 msgid "Complete individual objects" msgstr "Kompatible Einzelobjekte" @@ -1345,27 +1583,27 @@ msgstr "Kompatible Einzelobjekte" msgid "Completed" msgstr "Fertig" -#: src/libslic3r/Zipper.cpp:54 +#: src/libslic3r/miniz_extension.cpp:113 msgid "compression failed" msgstr "Komprimierung fehlgeschlagen" -#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 msgid "Concentric" msgstr "Konzentrisch" -#: src/slic3r/GUI/ConfigWizard.cpp:2110 +#: src/slic3r/GUI/ConfigWizard.cpp:2625 msgid "Configuration &Assistant" msgstr "Konfigurations &Assistent" -#: src/slic3r/GUI/ConfigWizard.cpp:2113 +#: src/slic3r/GUI/ConfigWizard.cpp:2628 msgid "Configuration &Wizard" msgstr "&Konfigurations-Assistent" -#: src/slic3r/GUI/ConfigWizard.cpp:2109 +#: src/slic3r/GUI/ConfigWizard.cpp:2624 msgid "Configuration Assistant" msgstr "Konfigurations-Assistent" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1424 msgid "Configuration notes" msgstr "Konfigurationsnotizen" @@ -1381,11 +1619,15 @@ msgstr "Konfigurationsupdate" msgid "Configuration update is available" msgstr "Konfigurationsupdate ist verfügbar" -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "Configuration update is available." +msgstr "Konfigurationsupdate ist verfügbar." + +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "Configuration updates" msgstr "Konfigurationsupdates" -#: src/slic3r/GUI/ConfigWizard.cpp:2112 +#: src/slic3r/GUI/ConfigWizard.cpp:2627 msgid "Configuration Wizard" msgstr "Konfigurations-Assistent" @@ -1393,15 +1635,11 @@ msgstr "Konfigurations-Assistent" msgid "Confirmation" msgstr "Bestätigung" -#: src/slic3r/GUI/Tab.cpp:1931 -msgid "Connection failed." -msgstr "Verbindung ist fehlgeschlagen." - -#: src/slic3r/GUI/Tab.cpp:3627 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Connection of the support sticks and junctions" msgstr "Verbindung von Stützstäben und Verbindungen" -#: src/slic3r/Utils/AstroBox.cpp:83 +#: src/slic3r/Utils/AstroBox.cpp:84 msgid "Connection to AstroBox works correctly." msgstr "Die Verbindung zur AstroBox funktioniert korrekt." @@ -1417,124 +1655,136 @@ msgstr "Die Verbindung zu FlashAir funktioniert einwandfrei und der Upload ist a msgid "Connection to OctoPrint works correctly." msgstr "Verbindung zu OctoPrint funktioniert einwandfrei." -#: src/slic3r/GUI/Tab.cpp:1928 -msgid "Connection to printer works correctly." -msgstr "Verbindung zum Drucker funktioniert einwandfrei." +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:260 +msgid "Connection to printers connected via the print host failed." +msgstr "Die Verbindung zu Druckern, die über den Druck-Host angeschlossen sind, ist fehlgeschlagen." -#: src/slic3r/Utils/OctoPrint.cpp:176 +#: src/slic3r/Utils/OctoPrint.cpp:185 msgid "Connection to Prusa SL1 works correctly." msgstr "Verbindung zum Prusa SL1 funktioniert einwandfrei." -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "Contact Z distance" msgstr "Kontakt Z-Abstand" -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:286 msgid "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others." msgstr "Beiträge von Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik und zahlreichen anderen." -#: src/libslic3r/PrintConfig.cpp:2659 +#: src/slic3r/GUI/GUI_App.cpp:245 +msgid "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." +msgstr "Beiträge von Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik und zahlreichen anderen." + +#: src/libslic3r/PrintConfig.cpp:2823 msgid "Controls the bridge type between two neighboring pillars. Can be zig-zag, cross (double zig-zag) or dynamic which will automatically switch between the first two depending on the distance of the two pillars." msgstr "Steuert den Brückentyp zwischen zwei benachbarten Säulen. Kann Zickzack, Kreuz (Doppelzickzack) oder dynamisch sein, das je nach Abstand der beiden Säulen automatisch zwischen den beiden erstgenannten umschaltet." -#: src/slic3r/GUI/Tab.cpp:1444 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +msgid "Convert from imperial units" +msgstr "Von imperialen Einheiten umrechnen" + +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Cooling" msgstr "Kühlung" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:696 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "Kühlbewegungen beschleunigen von dieser Anfangsgeschwindigkeit aus." -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:715 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Kühlbewegungen beschleunigen auf diese Geschwindigkeit hin." -#: src/slic3r/GUI/Tab.cpp:1465 +#: src/slic3r/GUI/Tab.cpp:1811 msgid "Cooling thresholds" msgstr "Kühlungsschwellwerte" -#: src/libslic3r/PrintConfig.cpp:327 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Cooling tube length" msgstr "Länge des Kühlschlauchs" -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:353 msgid "Cooling tube position" msgstr "Position des Kühlschlauchs" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4856 msgid "Copies of the selected object" msgstr "Kopien des ausgewählten Objekts" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4871 msgid "Copy" msgstr "Kopieren" -#: src/slic3r/GUI/MainFrame.cpp:589 +#: src/slic3r/GUI/MainFrame.cpp:1195 msgid "Copy selection to clipboard" msgstr "Auswahl in Zwischenablage kopieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Copy to clipboard" msgstr "Zu Zwischenablage kopieren" -#: src/slic3r/GUI/SysInfoDialog.cpp:154 +#: src/slic3r/GUI/SysInfoDialog.cpp:177 msgid "Copy to Clipboard" msgstr "Zu Zwischenablage kopieren" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:121 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 msgid "Copying of the temporary G-code has finished but the exported code couldn't be opened during copy check. The output G-code is at %1%.tmp." msgstr "Das Kopieren des temporären G-Codes ist abgeschlossen, aber der exportierte Code konnte während der Kopierprüfung nicht geöffnet werden. Der Ausgabe-G-Code liegt in %1%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:118 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 msgid "Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "Das Kopieren des temporären G-Codes ist abgeschlossen, aber der Originalcode aus %1% konnte während der Kopierprüfung nicht geöffnet werden. Der ausgegebene G-Code liegt in %2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:480 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "Das Kopieren des temporären G-Codes auf den Ausgabe-G-Code ist fehlgeschlagen" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:109 -msgid "Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?" -msgstr "Das Kopieren des temporären G-Codes auf den Ausgabe-G-Code ist fehlgeschlagen. SD-Karte eventuell schreibgeschützt?" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +msgid "" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" +"Error message: %1%" +msgstr "" +"Das Kopieren des temporären G-Codes auf den Ausgabe-G-Code ist fehlgeschlagen. Vielleicht ist die SD-Karte schreibgeschützt?\n" +"Fehlermeldung: %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:112 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Das Kopieren des temporären G-Codes auf den Ausgabe-G-Code ist fehlgeschlagen. Es könnte ein Problem mit dem Zielgerät vorliegen, bitte versuchen Sie erneut zu exportieren oder ein anderes Gerät zu verwenden. Der beschädigte Ausgabe-G-Code liegt in %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 msgid "Copyright" msgstr "Urheberrecht" -#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 msgid "Correction for expansion" msgstr "Korrektur der Ausdehnung" -#: src/slic3r/GUI/Tab.cpp:2100 src/slic3r/GUI/Tab.cpp:3519 +#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 msgid "Corrections" msgstr "Korrekturen" -#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 msgid "Cost" msgstr "Kosten" -#: src/slic3r/GUI/Plater.cpp:239 +#: src/slic3r/GUI/Plater.cpp:245 msgid "Cost (money)" msgstr "Kosten (Geld)" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "Modellobjekte konnten nicht angeordnet werden! Einige Geometrien können ungültig sein." -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/Utils/AstroBox.cpp:90 msgid "Could not connect to AstroBox" msgstr "Konnte keine Verbindung zur AstroBox herstellen" -#: src/slic3r/Utils/Duet.cpp:54 +#: src/slic3r/Utils/Duet.cpp:55 msgid "Could not connect to Duet" msgstr "Ich konnte keine Verbindung zum Duet herstellen" -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:74 msgid "Could not connect to FlashAir" msgstr "Die Verbindung zu FlashAir konnte nicht hergestellt werden" @@ -1542,56 +1792,69 @@ msgstr "Die Verbindung zu FlashAir konnte nicht hergestellt werden" msgid "Could not connect to OctoPrint" msgstr "Ich konnte keine Verbindung zu OctoPrint herstellen" -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:191 msgid "Could not connect to Prusa SLA" msgstr "Ich konnte keine Verbindung zum Prusa SLA herstellen" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/Utils/Http.cpp:73 +msgid "Could not detect system SSL certificate store. PrusaSlicer will be unable to establish secure network connections." +msgstr "Konnte den System-SSL-Zertifikatspeicher nicht erkennen. PrusaSlicer kann keine sicheren Netzwerkverbindungen herstellen." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 msgid "Could not get a valid Printer Host reference" msgstr "Es konnte keine gültige Drucker-Host-Referenz ermittelt werden" -#: src/slic3r/Utils/Duet.cpp:134 +#: src/slic3r/Utils/Duet.cpp:136 msgid "Could not get resources to create a new connection" msgstr "Ressourcen zum Erstellen einer neuen Verbindung konnten nicht bezogen werden" -#: src/libslic3r/PrintConfig.cpp:1959 +#: src/libslic3r/PrintConfig.cpp:2101 msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "Deckt die obere Kontaktschicht der Stützstrukturen mit Schleifen ab. Standardmäßig deaktiviert." -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 msgid "Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low." msgstr "Spalte, die kleiner als der doppelte Lückenschlussradius sind, werden während des Slicens des Dreiecksnetzes gefüllt. Der Lückenschluss kann die endgültige Druckauflösung verringern, daher ist es ratsam, den Wert relativ niedrig zu halten." -#: src/libslic3r/Zipper.cpp:58 +#: src/libslic3r/miniz_extension.cpp:117 msgid "CRC-32 check failed" msgstr "CRC-32 Check fehlgeschlagen" -#: src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Create pad around object and ignore the support elevation" msgstr "Erstellt eine Grundschicht um das Objekt herum und ignoriert die Unterstützungshöhe" -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "Critical angle" msgstr "Kritischer Winkel" -#: src/libslic3r/PrintConfig.cpp:2668 +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Kreuz" -#: src/libslic3r/PrintConfig.cpp:847 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:225 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:203 +msgid "Ctrl + Mouse wheel" +msgstr "Strg + Mausrad" + +#: src/libslic3r/PrintConfig.cpp:885 msgid "Cubic" msgstr "Kubisch" -#: src/slic3r/GUI/wxExtensions.cpp:704 +#: src/slic3r/Utils/Http.cpp:91 +msgid "CURL init has failed. PrusaSlicer will be unable to establish network connections. See logs for additional details." +msgstr "CURL Init ist fehlgeschlagen. PrusaSlicer ist nicht in der Lage, Netzwerkverbindungen herzustellen. Siehe Protokolle für weitere Details." + +#: src/slic3r/GUI/wxExtensions.cpp:624 #, c-format msgid "Current mode is %s" msgstr "Aktueller Modus ist %s" -#: src/slic3r/GUI/Tab.cpp:959 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "Current preset is inherited from" msgstr "Aktuelle Voreinstellung ist abgeleitet von" -#: src/slic3r/GUI/Tab.cpp:957 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "Current preset is inherited from the default preset." msgstr "Aktuelle Voreinstellung ist abgeleitet von der Standardvoreinstellung." @@ -1599,451 +1862,488 @@ msgstr "Aktuelle Voreinstellung ist abgeleitet von der Standardvoreinstellung." msgid "Current version:" msgstr "Aktuelle Version:" -#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 -#: src/libslic3r/ExtrusionEntity.cpp:322 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 msgid "Custom" msgstr "Benutzerdefiniert" -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:114 msgid "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. If left blank, the default OS CA certificate repository is used." msgstr "Benutzerdefinierte CA-Zertifikatsdatei kann für HTTPS OctoPrint-Verbindungen im crt/pem-Format angegeben werden. Wenn das Feld leer bleibt, wird das standardmäßige Zertifikatsverzeichnis der Betriebssystem-Zertifizierungsstelle verwendet." -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1975 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Custom G-code" msgstr "Benutzerdefinierter G-Code" -#: src/slic3r/GUI/DoubleSlider.cpp:1619 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Custom G-code on current layer (%1% mm)." msgstr "Benutzerdefinierter G-Code auf der aktuellen Ebene (%1% mm)." -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/GCodeViewer.cpp:2580 src/slic3r/GUI/GUI_Preview.cpp:1477 +msgid "Custom G-codes" +msgstr "Benutzerdefinierte G-Codes" + +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer" msgstr "Benutzerdefinierter Drucker" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer Setup" msgstr "Benutzerdefinierte Drucker-Einrichtung" -#: src/slic3r/GUI/ConfigWizard.cpp:736 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 msgid "Custom profile name:" msgstr "Benutzerdefinierter Profilname:" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3402 +#: src/slic3r/GUI/DoubleSlider.cpp:1135 +msgid "Custom template (\"%1%\")" +msgstr "Benutzerdefinierte Vorlage (\"%1%\")" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 msgid "Cut" msgstr "Schneiden" -#: src/slic3r/GUI/Plater.cpp:4786 +#: src/slic3r/GUI/Plater.cpp:4921 msgid "Cut by Plane" msgstr "Schneiden durch Ebene" -#: src/libslic3r/PrintConfig.cpp:3403 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Cut model at the given Z." msgstr "Schneidet Modell am gegebenen Z-Wert." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Cylinder" msgstr "Zylinder" -#: src/slic3r/GUI/MainFrame.cpp:568 +#: src/slic3r/GUI/MainFrame.cpp:1174 msgid "D&eselect all" msgstr "All&es Abwählen" -#: src/libslic3r/PrintConfig.cpp:3504 +#: src/libslic3r/PrintConfig.cpp:3709 msgid "Data directory" msgstr "Datenverzeichnis" -#: src/slic3r/GUI/Mouse3DController.cpp:313 +#: src/slic3r/GUI/Mouse3DController.cpp:300 msgid "Deadzone:" msgstr "Todeszone:" -#: src/libslic3r/Zipper.cpp:52 +#: src/libslic3r/miniz_extension.cpp:111 msgid "decompression failed or archive is corrupted" msgstr "Entpacken fehlgeschlagen oder Archiv defekt" -#: src/slic3r/GUI/Plater.cpp:4720 +#: src/slic3r/GUI/Plater.cpp:4824 msgid "Decrease Instances" msgstr "Kopien verringern" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1704 src/libslic3r/PrintConfig.cpp:335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 msgid "Default" msgstr "Standard" -#: src/slic3r/GUI/GUI_ObjectList.cpp:457 src/slic3r/GUI/GUI_ObjectList.cpp:469 -#: src/slic3r/GUI/GUI_ObjectList.cpp:917 src/slic3r/GUI/GUI_ObjectList.cpp:3967 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3977 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4012 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 +#: src/slic3r/GUI/ExtraRenderers.cpp:297 src/slic3r/GUI/GUI_ObjectList.cpp:496 +#: src/slic3r/GUI/GUI_ObjectList.cpp:508 src/slic3r/GUI/GUI_ObjectList.cpp:1015 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4454 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4464 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4499 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:202 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 msgid "default" msgstr "Standard" -#: src/libslic3r/PrintConfig.cpp:777 +#: src/libslic3r/PrintConfig.cpp:813 msgid "Default base angle for infill orientation. Cross-hatching will be applied to this. Bridges will be infilled using the best direction Slic3r can detect, so this setting does not affect them." msgstr "Standard-Grundwinkel für die Ausrichtung der Füllung. Hierfür werden Kreuzschraffuren verwendet. Brücken werden mit der besten Richtung gefüllt, die Slic3r erkennen kann, so dass diese Einstellung sie nicht beeinflusst." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 +msgid "Default color" +msgstr "Standardfarbe" + +#: src/slic3r/GUI/GCodeViewer.cpp:2313 +msgid "default color" +msgstr "Standardfarbe" + +#: src/libslic3r/PrintConfig.cpp:590 msgid "Default extrusion width" msgstr "Standardextrusionsbreite" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1305 msgid "default filament profile" msgstr "Standard-Filamentprofil" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Default filament profile" msgstr "Standard-Filamentprofil" -#: src/libslic3r/PrintConfig.cpp:346 +#: src/libslic3r/PrintConfig.cpp:380 msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." msgstr "Standard-Filamentprofil, das dem aktuellen Druckerprofil zugeordnet ist. Bei Auswahl des aktuellen Druckerprofils wird dieses Filamentprofil aktiviert." -#: src/slic3r/GUI/Tab.cpp:2919 -#, c-format -msgid "Default preset (%s)" -msgstr "Standard Voreinstellung(%s)" - -#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 msgid "Default print color" msgstr "Standard Druckfarbe" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "Standard-Druckprofil" -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default print profile" msgstr "Standard-Druckprofil" -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." msgstr "Standarddruckprofil, das dem aktuellen Druckerprofil zugeordnet ist. Bei Auswahl des aktuellen Druckerprofils wird dieses Druckprofil aktiviert." -#: src/slic3r/GUI/Tab.cpp:1001 +#: src/slic3r/GUI/Tab.cpp:1319 msgid "default SLA material profile" msgstr "Standard-SLA-Materialprofil" -#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 +#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 msgid "Default SLA material profile" msgstr "Standard-SLA-Materialprofil" -#: src/slic3r/GUI/Tab.cpp:1005 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA print profile" msgstr "Standard-SLA-Druckprofil" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:184 msgid "default value" msgstr "Standardwert" -#: src/slic3r/GUI/ConfigWizard.cpp:734 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Define a custom printer profile" msgstr "Benutzerdefiniertes Druckerprofil definieren" -#: src/libslic3r/PrintConfig.cpp:2798 +#: src/libslic3r/PrintConfig.cpp:2962 msgid "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful when enabling this feature, as some resins may produce an extreme suction effect inside the cavity, which makes peeling the print off the vat foil difficult." msgstr "Definiert die Tiefe des Grundschichthohlraums. Zum Deaktivieren der Aushöhlung auf null setzen. Seien Sie vorsichtig, wenn Sie diese Funktion aktivieren, da einige Harze einen extremen Saugeffekt im Hohlraum erzeugen können, der das Abziehen des Drucks von der Wannenfolie erschwert." -#: src/slic3r/GUI/GUI_ObjectList.cpp:346 +#: src/slic3r/GUI/GUI_ObjectList.cpp:393 msgid "degenerate facets" msgstr "entartete Facetten" -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:676 msgid "Delay after unloading" msgstr "Verzögerung nach dem Entladen" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "delete" msgstr "löschen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1718 -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Delete" msgstr "Löschen" -#: src/slic3r/GUI/MainFrame.cpp:575 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Delete &all" msgstr "&Alles löschen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "Delete all" msgstr "Alle löschen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2176 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 msgid "Delete All Instances from Object" msgstr "Alle Kopien des Objektes löschen" -#: src/slic3r/GUI/DoubleSlider.cpp:1516 +#: src/slic3r/GUI/DoubleSlider.cpp:1708 msgid "Delete color change" msgstr "Farbwechsel löschen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 msgid "Delete color change marker for current layer" msgstr "Löscht einen Farbwechselmarker der aktuellen Schicht" -#: src/slic3r/GUI/DoubleSlider.cpp:1519 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Delete custom G-code" msgstr "Benutzerdefinierten G-Code löschen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:539 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:424 msgid "Delete drainage hole" msgstr "Drainageloch entfernen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 msgid "Delete Height Range" msgstr "Höhenbereich löschen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2246 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Delete Instance" msgstr "Kopie löschen" -#: src/slic3r/GUI/Plater.cpp:2712 +#: src/slic3r/GUI/Plater.cpp:2673 msgid "Delete Object" msgstr "Objekt löschen" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:104 #, c-format msgid "Delete Option %s" msgstr "Lösche Option %s" -#: src/slic3r/GUI/DoubleSlider.cpp:1518 +#: src/slic3r/GUI/DoubleSlider.cpp:1710 msgid "Delete pause print" msgstr "Druckpause löschen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/PresetComboBoxes.cpp:652 +msgid "Delete physical printer" +msgstr "Physischen Drucker löschen" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +msgid "Delete Physical Printer" +msgstr "Physischen Drucker löschen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Delete selected" msgstr "Löschen ausgewählt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2830 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 msgid "Delete Selected" msgstr "Löschen ausgewählt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2693 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 msgid "Delete Selected Item" msgstr "Gewähltes Element löschen" -#: src/slic3r/GUI/Plater.cpp:4677 +#: src/slic3r/GUI/Plater.cpp:4782 msgid "Delete Selected Objects" msgstr "Ausgewählte Objekte entfernen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 msgid "Delete Settings" msgstr "Einstellungen löschen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2227 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 msgid "Delete Subobject" msgstr "Subobjekt löschen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:514 msgid "Delete support point" msgstr "Stützpunkt löschen" -#: src/slic3r/GUI/Tab.cpp:134 +#: src/slic3r/GUI/Tab.cpp:204 msgid "Delete this preset" msgstr "Lösche diese Voreinstellung" -#: src/slic3r/GUI/DoubleSlider.cpp:1035 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +msgid "Delete this preset from this printer device" +msgstr "Voreinstellung dieses Druckers löschen" + +#: src/slic3r/GUI/DoubleSlider.cpp:1160 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "Häkchen löschen - Linksklick oder Taste \"-\" drücken" -#: src/slic3r/GUI/DoubleSlider.cpp:1517 +#: src/slic3r/GUI/DoubleSlider.cpp:1709 msgid "Delete tool change" msgstr "Werkzeugwechsel löschen" -#: src/slic3r/GUI/MainFrame.cpp:576 +#: src/slic3r/GUI/MainFrame.cpp:1182 msgid "Deletes all objects" msgstr "Löscht alle Objekte" -#: src/slic3r/GUI/MainFrame.cpp:573 +#: src/slic3r/GUI/MainFrame.cpp:1179 msgid "Deletes the current selection" msgstr "Löscht die aktuelle Auswahl" -#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/libslic3r/PrintConfig.cpp:753 src/libslic3r/PrintConfig.cpp:2646 +#: src/libslic3r/PrintConfig.cpp:2647 msgid "Density" msgstr "Dichte" -#: src/libslic3r/PrintConfig.cpp:791 +#: src/libslic3r/PrintConfig.cpp:827 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Infilldichte. Als Prozentwert von 0% - 100% ausgedrückt." -#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 -#: src/slic3r/GUI/Tab.cpp:2019 src/slic3r/GUI/Tab.cpp:2135 -#: src/slic3r/GUI/Tab.cpp:3543 src/slic3r/GUI/Tab.cpp:3671 +#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 msgid "Dependencies" msgstr "Abhängigkeiten" -#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 msgid "Deretraction Speed" msgstr "Wiedereinzugsgeschwindigkeit" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 +#: src/slic3r/GUI/GUI_Preview.cpp:1473 +msgid "Deretractions" +msgstr "Wiedereinzüge" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:172 +msgid "Descriptive name for the printer" +msgstr "Beschreibender Name des Druckers" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Deselect all" msgstr "Alles abwählen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Deselect by rectangle" msgstr "Abwahl über Rechteck" -#: src/slic3r/GUI/MainFrame.cpp:569 +#: src/slic3r/GUI/MainFrame.cpp:1175 msgid "Deselects all objects" msgstr "Alle Objekte abwählen" -#: src/slic3r/GUI/Tab.cpp:963 +#: src/slic3r/GUI/Tab.cpp:1224 msgid "Detach from system preset" msgstr "Lösen von der Systemvoreinstellung" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "Detach preset" msgstr "Lösen der Voreinstellugen" -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/Tab.cpp:3323 msgid "Detached" msgstr "Losgelöst" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Detect bridging perimeters" msgstr "Umfangbrücken entdecken" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2218 msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." msgstr "Erkennen von Wänden mit einfacher Breite (Teile, bei denen zwei Extrusionen nicht passen und wir sie in eine einzige Druckspur zusammenfassen müssen)." -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Detect thin walls" msgstr "Dünne Wände erkennen" -#: src/libslic3r/PrintConfig.cpp:3472 +#: src/libslic3r/PrintConfig.cpp:3671 msgid "Detect unconnected parts in the given model(s) and split them into separate objects." msgstr "Erkennung nicht zusammenhängender Teile in den angegebenen Modellen und Aufteilung in einzelne Objekte." -#: src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:2330 msgid "Detected advanced data" msgstr "Erweiterte Daten gefunden" -#: src/slic3r/GUI/Mouse3DController.cpp:289 +#: src/slic3r/GUI/Mouse3DController.cpp:274 msgid "Device:" msgstr "Gerät:" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 msgid "Diameter" msgstr "Durchmesser" -#: src/libslic3r/PrintConfig.cpp:2694 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "Diameter in mm of the pillar base" msgstr "Durchmesser der Pfeilerbasis in mm" -#: src/libslic3r/PrintConfig.cpp:2650 +#: src/libslic3r/PrintConfig.cpp:2793 msgid "Diameter in mm of the support pillars" msgstr "Durchmesser der Stützpfeiler in mm" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "Diameter of the pointing side of the head" msgstr "Durchmesser der Spitzenseite des Kopfes" -#: src/slic3r/GUI/BedShapeDialog.cpp:94 +#: src/slic3r/GUI/BedShapeDialog.cpp:131 msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "Durchmesser des Druckbettes. Es wird angenommen, dass der Ursprung (0,0) sich im Mittelpunkt befindet." -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1747 msgid "Direction" msgstr "Richtung" -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Disable fan for the first" msgstr "Kein Lüfter für die ersten" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1457 msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." msgstr "Deaktiviert den Einzug, wenn der Verfahrweg die Perimeter der oberen Schicht nicht überschreitet (und somit ist der Auslauf wahrscheinlich unsichtbar)." -#: src/slic3r/GUI/DoubleSlider.cpp:952 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 +msgid "Discard" +msgstr "Verwerfen" + +#: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" msgstr "Alle benutzerdefinierten Änderungen verwerfen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1375 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 msgid "Discard changes" msgstr "Änderungen verwerfen" -#: src/slic3r/GUI/GUI_App.cpp:932 src/slic3r/GUI/Tab.cpp:2946 -msgid "Discard changes and continue anyway?" -msgstr "Änderungen verwerfen und fortfahren?" - -#: src/slic3r/GUI/Tab.cpp:2078 +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Display" msgstr "Display" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "Display height" msgstr "Displayhöhe" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Display horizontal mirroring" msgstr "Zeige horizontale Spiegelung" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2535 msgid "Display orientation" msgstr "Displayausrichtung" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Display the Print Host Upload Queue window" msgstr "Zeige das Druckhost Warteschlangenfenster" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Display vertical mirroring" msgstr "Zeige vertikale Spiegelung" -#: src/libslic3r/PrintConfig.cpp:2353 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Display width" msgstr "Displaybreite" -#: src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:411 msgid "Distance between copies" msgstr "Abstand zwischen Kopien" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1157 +msgid "Distance between ironing lines" +msgstr "Abstand zwischen Bügellinien" + +#: src/libslic3r/PrintConfig.cpp:1788 msgid "Distance between skirt and object(s). Set this to zero to attach the skirt to the object(s) and get a brim for better adhesion." msgstr "Distanz zwischen Schürze und Objekt. Auf null stellen um die Schürze an das Objekt zu verbinden und einen Rand für bessere Haftung zu generieren." -#: src/libslic3r/PrintConfig.cpp:2882 +#: src/libslic3r/PrintConfig.cpp:3046 msgid "Distance between two connector sticks which connect the object and the generated pad." msgstr "Abstand zwischen zwei Verbindungsstäben, die das Objekt mit der erzeugten Grundschicht verbinden." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "Abstand vom Objekt" -#: src/slic3r/GUI/BedShapeDialog.cpp:85 +#: src/slic3r/GUI/BedShapeDialog.cpp:121 msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "Abstand der 0,0 G-Code-Koordinate von der linken vorderen Ecke des Rechtecks." -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "Abstand des Mittelpunktes des Kühlrohres von der Extruderspitze." -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1490 msgid "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware." msgstr "Abstand der Extruderspitze von der Position, an der das Filament beim Entladen abgestellt wird. Dies sollte mit dem Wert in der Drucker-Firmware übereinstimmen." -#: src/libslic3r/PrintConfig.cpp:378 +#: src/libslic3r/PrintConfig.cpp:412 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Abstand für die automatische Druckplattenbelegung." -#: src/libslic3r/PrintConfig.cpp:3486 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Nicht abbrechen, wenn eine an --load übergebene Datei nicht existiert." -#: src/libslic3r/PrintConfig.cpp:3430 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "Do not rearrange the given models before merging and keep their original XY coordinates." msgstr "Die angegebenen Modelle werden vor dem Zusammenführen nicht neu angeordnet und behalten ihre ursprünglichen XY-Koordinaten." -#: src/slic3r/GUI/Field.cpp:240 +#: src/slic3r/GUI/Field.cpp:288 #, c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -2054,31 +2354,35 @@ msgstr "" "Wählen Sie JA, wenn Sie diesen Wert auf %s%% ändern möchten, \n" "oder NEIN, wenn Sie sicher sind, dass %s %s ein korrekter Wert ist." -#: src/slic3r/GUI/DoubleSlider.cpp:1920 +#: src/slic3r/GUI/DoubleSlider.cpp:2138 msgid "Do you want to delete all saved tool changes?" msgstr "Möchten Sie alle gespeicherten Werkzeugänderungen löschen?" -#: src/slic3r/GUI/GUI_App.cpp:884 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Do you want to proceed?" msgstr "Wollen Sie fortfahren?" -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "Do you want to retry" msgstr "Möchten Sie es erneut versuchen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1045 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 msgid "Do you want to save your manually edited support points?" msgstr "Möchten Sie Ihre manuell bearbeiteten Stützpunkte speichern?" -#: src/slic3r/GUI/ConfigWizard.cpp:1834 +#: src/slic3r/GUI/ConfigWizard.cpp:2261 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Möchten Sie Standardfilamente für diese FFF-Druckermodelle auswählen?" -#: src/slic3r/GUI/ConfigWizard.cpp:1852 +#: src/slic3r/GUI/ConfigWizard.cpp:2279 msgid "Do you want to select default SLA materials for these printer models?" msgstr "Möchten Sie Standard-SLA-Materialien für diese Druckermodelle auswählen?" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "does not contain valid gcode." +msgstr "enthält keinen gültigen G-Code." + +#: src/libslic3r/PrintConfig.cpp:3628 msgid "Don't arrange" msgstr "Nicht Anordnen" @@ -2086,7 +2390,7 @@ msgstr "Nicht Anordnen" msgid "Don't notify about new releases any more" msgstr "Keine Benachrichtigung mehr über neue Releases" -#: src/libslic3r/PrintConfig.cpp:369 +#: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "Brücken nicht unterstützen" @@ -2094,234 +2398,296 @@ msgstr "Brücken nicht unterstützen" msgid "Downgrade" msgstr "Downgrade" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1803 msgid "Draft shield" msgstr "Windschutz" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Drag" msgstr "Ziehen" -#: src/libslic3r/SLAPrintSteps.cpp:44 +#: src/slic3r/GUI/Plater.cpp:1406 +msgid "Drag and drop G-code file" +msgstr "G-Code-Datei ziehen und ablegen" + +#: src/libslic3r/SLAPrintSteps.cpp:45 msgid "Drilling holes into model." msgstr "Löcher in das Modell bohren." -#: src/libslic3r/SLAPrintSteps.cpp:199 +#: src/libslic3r/SLAPrintSteps.cpp:201 msgid "Drilling holes into the mesh failed. This is usually caused by broken model. Try to fix it first." msgstr "Das Bohren von Löchern in das Netz ist fehlgeschlagen. Dies wird normalerweise durch ein beschädigtes Modell verursacht. Versuchen Sie zuerst, es zu reparieren." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" msgstr "Auf das Druckbett fallen lassen" -#: src/libslic3r/PrintConfig.cpp:3433 +#: src/libslic3r/PrintConfig.cpp:3632 msgid "Duplicate" msgstr "Duplizieren" -#: src/libslic3r/PrintConfig.cpp:3438 +#: src/libslic3r/PrintConfig.cpp:3637 msgid "Duplicate by grid" msgstr "Duplizieren nach Raster" -#: src/slic3r/GUI/PresetHints.cpp:40 +#: src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Duration" +msgstr "Dauer" + +#: src/slic3r/GUI/PresetHints.cpp:39 msgid "During the other layers, fan" msgstr "Während der übrigen Schichten, Lüfter" -#: src/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dynamisch" -#: src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1448 msgid "E&xport" msgstr "E&xport" -#: src/slic3r/GUI/GUI_ObjectList.cpp:347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:394 msgid "edges fixed" msgstr "Kanten korrigiert" -#: src/slic3r/GUI/DoubleSlider.cpp:1508 +#: src/slic3r/GUI/DoubleSlider.cpp:1700 msgid "Edit color" msgstr "Farbe bearbeiten" -#: src/slic3r/GUI/DoubleSlider.cpp:960 +#: src/slic3r/GUI/DoubleSlider.cpp:1083 msgid "Edit current color - Right click the colored slider segment" msgstr "Aktuelle Farbe bearbeiten - Rechtsklick auf das farbige Schiebereglersegment" -#: src/slic3r/GUI/DoubleSlider.cpp:1510 +#: src/slic3r/GUI/DoubleSlider.cpp:1702 msgid "Edit custom G-code" msgstr "Benutzerdefinierten G-Code bearbeiten" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3003 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 msgid "Edit Height Range" msgstr "Höhenbereich bearbeiten" -#: src/slic3r/GUI/DoubleSlider.cpp:1509 +#: src/slic3r/GUI/DoubleSlider.cpp:1701 msgid "Edit pause print message" msgstr "Druckpausen-Mitteilung bearbeiten" -#: src/slic3r/GUI/DoubleSlider.cpp:1037 +#: src/slic3r/GUI/PresetComboBoxes.cpp:645 +msgid "Edit physical printer" +msgstr "Physischen Drucker bearbeiten" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:641 +msgid "Edit preset" +msgstr "Voreinstellung bearbeiten" + +#: src/slic3r/GUI/DoubleSlider.cpp:1162 msgid "Edit tick mark - Ctrl + Left click" msgstr "Häkchen bearbeiten - Strg + Linksklick" -#: src/slic3r/GUI/DoubleSlider.cpp:1038 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 msgid "Edit tick mark - Right click" msgstr "Häkchen bearbeiten - Rechtsklick" -#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:394 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 msgid "Editing" msgstr "Bearbeitung" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Ejec&t SD card / Flash drive" msgstr "SD-Kar&te/Flash-Laufwerk auswerfen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/NotificationManager.cpp:780 +msgid "Eject drive" +msgstr "Laufwerk auswerfen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Eject SD card / Flash drive" msgstr "SD-Karte/Flash-Laufwerk auswerfen" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "SD-Karte / Flash-Laufwerk auswerfen, nachdem der G-Code dorthin exportiert wurde." -#: src/slic3r/GUI/Plater.cpp:2202 +#: src/slic3r/GUI/Plater.cpp:2034 #, c-format msgid "Ejecting of device %s(%s) has failed." msgstr "Das Auswerfen von Gerät %s(%s) ist fehlgeschlagen." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:120 msgid "Elephant foot compensation" msgstr "Elefantenfußkompensation" -#: src/libslic3r/PrintConfig.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:2590 msgid "Elephant foot minimum width" msgstr "Elefantenfuß Mindestbreite" -#: src/libslic3r/SLAPrint.cpp:625 +#: src/libslic3r/SLAPrint.cpp:639 msgid "Elevation is too low for object. Use the \"Pad around object\" feature to print the object without elevation." msgstr "Die Erhöhung ist zu niedrig für das Objekt. Verwenden Sie die Funktion \"Grundschicht um Object\", um das Objekt ohne Erhöhung zu drucken." -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1186 msgid "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute intervals into the G-code to let the firmware show accurate remaining time. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." msgstr "Schreibt M73 P[Prozent gedruckt] R[Restzeit in Minuten] im Abstand von 1 Minute in den G-Code, damit die Firmware die genaue Restzeit anzeigt. Ab sofort erkennt nur noch die Prusa i3 MK3 Firmware das M73. Die i3 MK3 Firmware unterstützt auch das M73 Qxx Sxx für den Silent Mode." -#: src/libslic3r/GCode.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" +msgstr "In G-Code ausgeben" + +#: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Leere Schichten erkannt, die Ausgabe wäre nicht druckbar." -#: src/slic3r/GUI/Tab.cpp:1445 src/libslic3r/PrintConfig.cpp:1355 -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:2343 msgid "Enable" msgstr "Aktivieren" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:347 msgid "Enable auto cooling" msgstr "Automatische Kühlung aktivieren" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Enable fan if layer print time is below" msgstr "Lüfter einschalten wenn die Schichtdruckzeit geringer ist als" -#: src/libslic3r/PrintConfig.cpp:2908 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Enable hollowing" msgstr "Aushöhlung aktivieren" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2523 msgid "Enable horizontal mirroring of output images" msgstr "Horizontale Spiegelung der Ausgabebilder aktivieren" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:1124 +msgid "Enable ironing" +msgstr "Bügeln aktivieren" + +#: src/libslic3r/PrintConfig.cpp:1125 +msgid "Enable ironing of the top layers with the hot print head for smooth surface" +msgstr "Ermöglicht das Bügeln der oberen Schichten mit dem heißen Druckkopf für eine glatte Oberfläche" + +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." msgstr "Aktiviert Generierung von Stützstrukturen." -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1010 msgid "Enable this to add comments into the G-Code labeling print moves with what object they belong to, which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." msgstr "Aktivieren Sie dies, um Kommentare in den G-Code einzufügen, die die Druckbewegungen beschriften zu welchem Objekt sie gehören, was für das OctoPrint CancelObject Plugin nützlich ist. Diese Einstellungen sind NICHT kompatibel mit der Einstellung Single Extruder Multi Material und Wischen ins Objekt / Wischen ins Infill." -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:973 msgid "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down." msgstr "Aktivieren Sie diese Option, um eine kommentierte G-Code-Datei zu erhalten, wobei jede Zeile durch einen beschreibenden Text erklärt wird. Wenn Sie von einer SD-Karte drucken, kann die zusätzliche Dateigröße dazu führen, dass Ihre Firmware langsamer wird." -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "Enable variable layer height feature" msgstr "Variable Schichthöhen aktivieren" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Enable vertical mirroring of output images" msgstr "Vertikale Spiegelung der Ausgabebilder aktivieren" -#: src/slic3r/GUI/Tab.cpp:1534 src/slic3r/GUI/Tab.cpp:1982 -#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 +#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 msgid "End G-code" msgstr "G-Code am Ende" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +msgid "Enforce" +msgstr "Erzwinge" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:30 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:381 +msgid "Enforce seam" +msgstr "Naht erzwingen" + +#: src/libslic3r/PrintConfig.cpp:2066 msgid "Enforce support for the first" msgstr "Erzwinge Stützstrukturen bei den ersten" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Enforce support for the first n layers" msgstr "Erzwinge Stützstrukturen bei den ersten n Schichten" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:47 +msgid "Enforce supports" +msgstr "Stützen erzwingen" + #: src/slic3r/GUI/PrintHostDialogs.cpp:198 #: src/slic3r/GUI/PrintHostDialogs.cpp:229 msgid "Enqueued" msgstr "In der Warteschlange" -#: src/libslic3r/PrintConfig.cpp:407 +#: src/libslic3r/PrintConfig.cpp:441 msgid "Ensure vertical shell thickness" msgstr "Stelle die vertikale Hüllenstärke sicher" -#: src/slic3r/GUI/DoubleSlider.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4410 +#: src/slic3r/GUI/Search.cpp:433 +msgid "Enter a search term" +msgstr "Suchbegriff eingeben" + +#: src/slic3r/GUI/DoubleSlider.cpp:1814 msgid "Enter custom G-code used on current layer" msgstr "Benutzerdefinierten G-Code für die aktuelle Schicht eingeben" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Enter new name" msgstr "Geben Sie den neuen Namen ein" -#: src/slic3r/GUI/DoubleSlider.cpp:1634 +#: src/slic3r/GUI/DoubleSlider.cpp:1830 msgid "Enter short message shown on Printer display when a print is paused" msgstr "Geben Sie eine kurze Nachricht ein, die auf dem Druckerdisplay angezeigt wird, wenn der Druck angehalten wird" -#: src/slic3r/GUI/ConfigWizard.cpp:1047 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." msgstr "Geben Sie die Druckbetttemperatur ein, die erforderlich ist, damit Ihr Filament an Ihrem beheizten Druckbett haftet." -#: src/slic3r/GUI/ConfigWizard.cpp:979 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Enter the diameter of your filament." msgstr "Geben Sie den Durchmesser des Filaments ein." -#: src/slic3r/GUI/ConfigWizard.cpp:966 +#: src/slic3r/GUI/ConfigWizard.cpp:1332 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Geben Sie den Durchmesser der Hotenddüse ein." -#: src/slic3r/GUI/DoubleSlider.cpp:1650 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 msgid "Enter the height you want to jump to" msgstr "Geben Sie die Höhe ein, auf die Sie wechseln möchten" -#: src/slic3r/GUI/Plater.cpp:4751 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 +msgid "Enter the move you want to jump to" +msgstr "Geben Sie die Bewegung ein, zu welcher Sie wechseln möchten" + +#: src/slic3r/GUI/Plater.cpp:4855 msgid "Enter the number of copies:" msgstr "Geben Sie die Anzahl der Kopien ein:" -#: src/slic3r/GUI/ConfigWizard.cpp:1033 +#: src/slic3r/GUI/ConfigWizard.cpp:1399 msgid "Enter the temperature needed for extruding your filament." msgstr "Geben Sie die Temperatur ein, die für die Extrusion Ihres Filaments benötigt wird." -#: src/libslic3r/PrintConfig.cpp:761 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Enter your filament cost per kg here. This is only for statistical information." msgstr "Geben Sie hier Ihre Filamentkosten pro kg ein. Dies dient ausschließlich statistischen Zwecken." -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:754 msgid "Enter your filament density here. This is only for statistical information. A decent way is to weigh a known length of filament and compute the ratio of the length to volume. Better is to calculate the volume directly through displacement." msgstr "Geben Sie hier Ihre Filamentdichte ein. Dies dient ausschließlich statistischen Zwecken. Ein vernünftiger Weg ist es, eine bekannte Filamentlänge zu wiegen und das Verhältnis von Länge zu Volumen zu berechnen. Besser ist es, das Volumen direkt durch Verdrängung zu berechnen." -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:746 msgid "Enter your filament diameter here. Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "Geben Sie hier Ihren Filamentdurchmesser ein. Eine hohe Genauigkeit ist erforderlich, also verwenden Sie einen Messschieber und führen Sie mehrere Messungen entlang des Filaments durch, um dann den Mittelwert zu berechnen." -#: src/slic3r/GUI/MainFrame.cpp:422 src/slic3r/GUI/MainFrame.cpp:785 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 +msgid "Entering Paint-on supports" +msgstr "Beginne Aufmal-Stützen" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 +msgid "Entering Seam painting" +msgstr "Beginne Aufmal-Nähte" + +#: src/slic3r/GUI/MainFrame.cpp:1003 src/slic3r/GUI/MainFrame.cpp:1486 #: src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Error" msgstr "Fehler" @@ -2331,25 +2697,33 @@ msgstr "Fehler" msgid "Error accessing port at %s: %s" msgstr "Fehler beim Zugriff auf Port bei %s:%s" -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3238 msgid "Error during reload" msgstr "Fehler beim erneuten Laden" -#: src/slic3r/GUI/Plater.cpp:5043 +#: src/slic3r/GUI/Plater.cpp:5172 #, c-format msgid "Error exporting 3MF file %s" msgstr "Fehler beim Exportieren der 3MF Datei %s" -#: src/slic3r/GUI/Plater.cpp:5005 +#: src/slic3r/GUI/Plater.cpp:5138 #, c-format msgid "Error exporting AMF file %s" msgstr "Fehler beim Exportieren der AMF Datei %s" -#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +#: src/slic3r/GUI/OpenGLManager.cpp:276 +msgid "Error loading shaders" +msgstr "Fehler beim Laden von Shadern" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 msgid "Error Message" msgstr "Fehlermeldung" -#: src/slic3r/GUI/AppConfig.cpp:114 +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to manually delete the file to recover from the error." +msgstr "Fehler beim Parsen der PrusaGCodeViewer-Konfigurationsdatei, sie ist wahrscheinlich beschädigt. Versuchen Sie, die Datei manuell zu löschen, um den Fehler zu beheben." + +#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 msgid "Error parsing PrusaSlicer config file, it is probably corrupted. Try to manually delete the file to recover from the error. Your user profiles will not be affected." msgstr "Fehler beim Parsen der PrusaSlicer-Konfigurationsdatei, sie ist wahrscheinlich beschädigt. Versuchen Sie, die Datei manuell zu löschen, um den Fehler zu beheben. Ihre Benutzerprofile sind davon nicht betroffen." @@ -2357,45 +2731,60 @@ msgstr "Fehler beim Parsen der PrusaSlicer-Konfigurationsdatei, sie ist wahrsche msgid "Error uploading to print host:" msgstr "Fehler beim Hochloden zu Druckhost:" -#: src/libslic3r/Zipper.cpp:102 +#: src/slic3r/GUI/Plater.cpp:4752 +msgid "Error while loading .gcode file" +msgstr "Fehler beim Laden einer .gcode-Datei" + +#: src/libslic3r/Zipper.cpp:27 msgid "Error with zip archive" msgstr "Fehler beim ZIP-Archiv" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1918 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 msgid "Error!" msgstr "Fehler!" -#: src/slic3r/GUI/BedShapeDialog.cpp:505 +#: src/slic3r/GUI/BedShapeDialog.cpp:581 msgid "Error! Invalid model" msgstr "Fehler! Ungültiges Modell" +#: src/slic3r/GUI/NotificationManager.cpp:667 +#: src/slic3r/GUI/NotificationManager.cpp:683 +#: src/slic3r/GUI/NotificationManager.cpp:694 +msgid "ERROR:" +msgstr "FEHLER:" + #: src/slic3r/GUI/FirmwareDialog.cpp:647 #, c-format msgid "Error: %s" msgstr "Fehler: %s" -#: src/slic3r/GUI/Job.hpp:123 +#: src/slic3r/GUI/Jobs/Job.cpp:74 msgid "ERROR: not enough resources to execute a new job." msgstr "FEHLER: Nicht genügend Ressourcen, um einen neuen Job auszuführen." -#: src/slic3r/GUI/Plater.cpp:240 src/slic3r/GUI/Plater.cpp:1216 -#: src/slic3r/GUI/Plater.cpp:1258 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 src/slic3r/GUI/GCodeViewer.cpp:2557 +#: src/slic3r/GUI/Plater.cpp:246 src/slic3r/GUI/Plater.cpp:1125 +#: src/slic3r/GUI/Plater.cpp:1175 src/slic3r/GUI/Plater.cpp:1196 msgid "Estimated printing time" msgstr "Erwartete Druckzeit" -#: src/slic3r/GUI/Plater.cpp:502 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Event" +msgstr "Ereignis" + +#: src/slic3r/GUI/Plater.cpp:368 msgid "Everywhere" msgstr "Überall" -#: src/slic3r/GUI/PresetHints.cpp:51 +#: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first %1% layers." msgstr "außer für die ersten %1% Schichten." -#: src/slic3r/GUI/PresetHints.cpp:53 +#: src/slic3r/GUI/PresetHints.cpp:52 msgid "except for the first layer." msgstr "außer für die erste Schicht." -#: src/libslic3r/Print.cpp:1377 +#: src/libslic3r/Print.cpp:1403 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "Übermäßig %1%=%2% mm, um mit einem Düsendurchmesser von %3% mm druckbar zu sein" @@ -2404,116 +2793,129 @@ msgstr "Übermäßig %1%=%2% mm, um mit einem Düsendurchmesser von %3% mm druck msgid "Exit %s" msgstr "%s beenden" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/slic3r/GUI/Plater.cpp:2143 +msgid "Expand sidebar" +msgstr "Seitenleiste aufklappen" + +#: src/libslic3r/PrintConfig.cpp:405 msgid "Experimental option for preventing support material from being generated under bridged areas." msgstr "Experimentelle Option zur Verhinderung der Bildung von Trägermaterial unter Überbrückungsflächen." -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." msgstr "Experimentelle Option zur Anpassung des Durchflusses für Überhänge (Brückenvolumenfluss wird verwendet), zur Anwendung der Brückengeschwindigkeit und zur Aktivierung des Lüfters." -#: src/slic3r/GUI/GUI_App.cpp:815 src/slic3r/GUI/wxExtensions.cpp:755 +#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "Experte" -#: src/slic3r/GUI/ConfigWizard.cpp:822 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Expert mode" msgstr "Expertenmodus" -#: src/slic3r/GUI/GUI_App.cpp:815 +#: src/slic3r/GUI/GUI_App.cpp:1507 msgid "Expert View Mode" msgstr "Experten Anzeigemodus" -#: src/slic3r/GUI/Plater.cpp:5521 +#: src/slic3r/GUI/Plater.cpp:5706 msgid "Export" msgstr "Export" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export &Config" msgstr "Export &Konfiguration" -#: src/slic3r/GUI/MainFrame.cpp:477 src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 msgid "Export &G-code" msgstr "Export &G-Code" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export &toolpaths as OBJ" -msgstr "&Werkzeugpfade als OBJ exportieren" +msgstr "&Werkzeugwege als OBJ exportieren" -#: src/libslic3r/PrintConfig.cpp:3338 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Export 3MF" msgstr "Export 3MF" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export all presets including physical printers to file" +msgstr "Alle Voreinstellungen einschließlich physischer Drucker in eine Datei exportieren" + +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export all presets to file" msgstr "Exportiere alle Voreinstellungen in eine Datei" -#: src/libslic3r/PrintConfig.cpp:3343 +#: src/libslic3r/PrintConfig.cpp:3536 msgid "Export AMF" msgstr "Exportiere AMF" -#: src/slic3r/GUI/Plater.cpp:2598 +#: src/slic3r/GUI/Plater.cpp:2560 msgid "Export AMF file:" msgstr "Exportiere AMF Datei:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1657 src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 msgid "Export as STL" msgstr "Exportiere als STL" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 msgid "Export config" msgstr "Konfiguration exportieren" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export Config &Bundle" msgstr "Konfigurationssa&mlung exportieren" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export Config Bundle With Physical Printers" +msgstr "Konfigurations-Bundle mit physischen Druckern exportieren" + +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export current configuration to file" msgstr "Exportiere die aktuelle Konfiguration in eine Datei" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export current plate as AMF" msgstr "Exportiere die aktuelle Plattenbelegung als AMF" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:1068 msgid "Export current plate as G-code" msgstr "Exportiere die aktuelle Plattenbelegung als G-Code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Aktuelle Druckplatte als G-Code auf SD-Karte/Flash-Laufwerk exportieren" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export current plate as STL" msgstr "Exportiere die aktuelle Plattenbelegung als STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export current plate as STL including supports" msgstr "Exportiert die aktuelle Plattenbelegung als STL einschließlich Stützstrukturen" -#: src/slic3r/GUI/Plater.cpp:3664 -msgid "Export failed" -msgstr "Export ist fehlgeschlagen" - -#: src/slic3r/GUI/ConfigWizard.cpp:801 +#: src/slic3r/GUI/ConfigWizard.cpp:1160 msgid "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "Exportieren Sie die vollständigen Pfadnamen der Modelle und Teilequellen in 3mf- und amf-Dateien" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 -#: src/slic3r/GUI/Plater.cpp:5521 src/libslic3r/PrintConfig.cpp:3353 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 +#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 msgid "Export G-code" msgstr "Export G-Code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export G-code to SD card / Flash drive" msgstr "G-Code auf SD-Karte/Flash-Laufwerk exportieren" -#: src/libslic3r/PrintConfig.cpp:3320 +#: src/slic3r/GUI/NotificationManager.cpp:631 +#: src/slic3r/GUI/NotificationManager.cpp:748 +msgid "Export G-Code." +msgstr "G-Code exportieren." + +#: src/libslic3r/PrintConfig.cpp:3513 msgid "Export OBJ" msgstr "Exportiere OBJ" -#: src/slic3r/GUI/Plater.cpp:2610 +#: src/slic3r/GUI/Plater.cpp:2572 msgid "Export OBJ file:" msgstr "Exportiere OBJ Datei:" @@ -2521,212 +2923,215 @@ msgstr "Exportiere OBJ Datei:" msgid "Export of a temporary 3mf file failed" msgstr "Export einer temporären 3MF Datei fehlgeschlagen" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export plate as &AMF" msgstr "Exportiere die Plattenbelegung als &AMF" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export plate as &STL" msgstr "Exportiere die Plattenbelegung als &STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export plate as STL &including supports" msgstr "Export&iere Plattenbelegung als STL einschließlich Stützstrukturen" -#: src/libslic3r/PrintConfig.cpp:3332 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Export SLA" msgstr "Exportiere SLA" -#: src/slic3r/GUI/Preferences.cpp:72 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "Export sources full pathnames to 3mf and amf" msgstr "Vollständige Pfadnamen der Quellen in 3mf und amf exportieren" -#: src/libslic3r/PrintConfig.cpp:3348 +#: src/libslic3r/PrintConfig.cpp:3541 msgid "Export STL" msgstr "Exportiere STL" -#: src/slic3r/GUI/Plater.cpp:2591 +#: src/slic3r/GUI/Plater.cpp:2553 msgid "Export STL file:" msgstr "Exportiere STL Datei:" -#: src/libslic3r/PrintConfig.cpp:3339 +#: src/libslic3r/PrintConfig.cpp:3532 msgid "Export the model(s) as 3MF." msgstr "Exportiert das/die Modell(e) als 3MF Datei." -#: src/libslic3r/PrintConfig.cpp:3344 +#: src/libslic3r/PrintConfig.cpp:3537 msgid "Export the model(s) as AMF." msgstr "Exportiert das/die Modell(e) als AMF Datei." -#: src/libslic3r/PrintConfig.cpp:3321 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Export the model(s) as OBJ." msgstr "Exportiert das/die Modell(e) als OBJ Datei." -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3542 msgid "Export the model(s) as STL." msgstr "Exportiert das/die Modell(e) als STL Datei." -#: src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/Plater.cpp:3884 msgid "Export the selected object as STL file" msgstr "Exportiere das gewählte Objekt als STL Datei" -#: src/slic3r/GUI/Plater.cpp:880 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 msgid "Export to SD card / Flash drive" msgstr "Export auf SD-Karte/Flash-Laufwerk" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export toolpaths as OBJ" -msgstr "Werkzeugpfad als OBJ exportieren" +msgstr "Werkzeugweg als OBJ exportieren" -#: src/libslic3r/Print.cpp:1638 +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Exporting finished." +msgstr "Exportieren beendet." + +#: src/libslic3r/Print.cpp:1676 msgid "Exporting G-code" msgstr "Exportiere G-Code" #: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." -msgstr "Exportiere Modell..." +msgid "Exporting model" +msgstr "Exportiere Modell" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 msgid "Exporting source model" msgstr "Exportieren des Quellmodells" -#: src/libslic3r/SLAPrint.cpp:646 +#: src/libslic3r/SLAPrint.cpp:660 msgid "Exposition time is out of printer profile bounds." msgstr "Belichtungszeit ist außerhalb der Druckerprofilgrenzen." -#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:3515 +#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 msgid "Exposure" msgstr "Belichtung" -#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Exposure time" msgstr "Belichtungszeit" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "External perimeter" msgstr "Außenkontur" -#: src/slic3r/GUI/PresetHints.cpp:156 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "Außenkonturen" -#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:482 src/libslic3r/PrintConfig.cpp:493 msgid "External perimeters" msgstr "Außenkonturen" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:505 msgid "External perimeters first" msgstr "Außenkonturen zuerst drucken" -#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1704 msgid "Extra length on restart" msgstr "Extra Länge bei Neustart" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Extra loading distance" msgstr "Zusätzliche Ladestrecke" -#: src/libslic3r/PrintConfig.cpp:477 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extra perimeters if needed" msgstr "Extra Konturen wenn notwendig" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1434 -#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 +#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Extruder" msgstr "Extruder" -#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 -#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1704 -#: src/slic3r/GUI/Tab.cpp:2320 src/libslic3r/GCode/PreviewData.cpp:445 +#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 #, c-format msgid "Extruder %d" msgstr "Extruder %d" -#: src/slic3r/GUI/DoubleSlider.cpp:1011 +#: src/slic3r/GUI/DoubleSlider.cpp:1137 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "Extruder (Werkzeug) ist geändert auf Extruder \"%1%\"" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 -msgid "Extruder and Bed Temperatures" -msgstr "Extruder- und Druckbetttemperatur" - #: src/slic3r/GUI/WipeTowerDialog.cpp:255 msgid "Extruder changed to" msgstr "Extruder geändert auf" -#: src/slic3r/GUI/Tab.cpp:1233 +#: src/slic3r/GUI/Tab.cpp:1563 msgid "Extruder clearance (mm)" msgstr "Extruder Abstand (mm)" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Extruder Farbe" -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder offset" msgstr "Extruder Offset" -#: src/libslic3r/PrintConfig.cpp:911 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Extrudertemperatur für die erste Schicht. Wenn Sie die Temperatur während des Druckvorgangs manuell regeln möchten, setzen Sie diesen Wert auf null, um die Temperatursteuerbefehle in der Ausgabedatei zu deaktivieren." - -#: src/libslic3r/PrintConfig.cpp:2065 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Extrudertemperatur für Schichten nach der ersten Schicht. Setzen Sie diesen Wert auf null, um die Temperaturregelbefehle in der Ausgabedatei zu deaktivieren." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:617 -#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:1838 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 +#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 msgid "Extruders" msgstr "Extruder" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1061 +msgid "Extruders count" +msgstr "Extruder Anzahl" + +#: src/slic3r/GUI/GCodeViewer.cpp:2493 +msgid "Extrusion" +msgstr "Extrusion" + +#: src/libslic3r/PrintConfig.cpp:575 msgid "Extrusion axis" msgstr "Extrusionsachse" -#: src/libslic3r/PrintConfig.cpp:545 +#: src/libslic3r/PrintConfig.cpp:581 msgid "Extrusion multiplier" msgstr "Extrusionsfaktor" -#: src/slic3r/GUI/ConfigWizard.cpp:1037 +#: src/slic3r/GUI/ConfigWizard.cpp:1403 msgid "Extrusion Temperature:" msgstr "Extrusionstemperatur:" -#: src/slic3r/GUI/Tab.cpp:1205 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Extrusion width" msgstr "Extrusionbreite" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:618 -#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 -#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 msgid "Extrusion Width" msgstr "Extrusionsbreite" -#: src/slic3r/GUI/Plater.cpp:162 +#: src/slic3r/GUI/Plater.cpp:168 msgid "Facets" msgstr "Flächen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:349 +#: src/slic3r/GUI/GUI_ObjectList.cpp:396 msgid "facets added" msgstr "Facetten hinzugefügt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:348 +#: src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "facets removed" msgstr "Facetten enfernt" -#: src/slic3r/GUI/GUI_ObjectList.cpp:350 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "facets reversed" msgstr "Facetten umgekehrt" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2660 msgid "Faded layers" msgstr "Ausblendende Schichten" -#: src/libslic3r/Zipper.cpp:44 +#: src/libslic3r/miniz_extension.cpp:103 msgid "failed finding central directory" msgstr "Zentrales Verzeichnis nicht gefunden" @@ -2734,105 +3139,115 @@ msgstr "Zentrales Verzeichnis nicht gefunden" msgid "Failed loading the input model." msgstr "Das Laden des Inputmodells ist fehlgeschlagen." -#: src/libslic3r/PrintBase.cpp:71 +#: src/libslic3r/PrintBase.cpp:72 msgid "Failed processing of the output_filename_format template." msgstr "Die Verarbeitung der output_filename_format Vorlage ist fehlgeschlagen." -#: src/slic3r/GUI/PresetHints.cpp:42 +#: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Kühllüfter" -#: src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Lüfter Einstellungen" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1457 +#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 msgid "Fan speed" msgstr "Lüftergeschwindigkeit" -#: src/libslic3r/GCode/PreviewData.cpp:353 +#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 msgid "Fan Speed (%)" msgstr "Lüftergeschwindigkeit (%)" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Schnell" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Fast tilt" msgstr "Schnelles Kippen" -#: src/slic3r/GUI/GUI_App.cpp:141 +#: src/slic3r/GUI/GUI_App.cpp:531 msgid "Fatal error" msgstr "Fataler Fehler" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 -#: src/libslic3r/GCode/PreviewData.cpp:345 +#: src/slic3r/GUI/GUI_Init.cpp:88 +msgid "Fatal error, exception catched: %1%" +msgstr "Fataler Fehler, abgefangene Ausnahme: %1%" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 +#: src/libslic3r/GCode/PreviewData.cpp:350 msgid "Feature type" msgstr "Merkmalstyp" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 +#: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" msgstr "Merkmalstypen" -#: src/slic3r/GUI/ConfigWizard.cpp:1525 +#: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" msgstr "FFF Technologie Drucker" -#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1425 -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1771 msgid "Filament" msgstr "Filament" -#: src/slic3r/GUI/Preset.cpp:1522 +#: src/libslic3r/Preset.cpp:1301 msgid "filament" msgstr "Filament" -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Filament and Nozzle Diameters" msgstr "Filament- und Düsendurchmesser" -#: src/slic3r/GUI/ConfigWizard.cpp:983 +#: src/slic3r/GUI/ConfigWizard.cpp:1349 msgid "Filament Diameter:" msgstr "Filamentdurchmesser:" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:687 msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." msgstr "Das Filament wird durch Hin- und Herbewegen in den Kühlschläuchen abgekühlt. Geben Sie die gewünschte Anzahl dieser Bewegungen an." -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Filament load time" msgstr "Filament Ladezeit" -#: src/libslic3r/PrintConfig.cpp:588 +#: src/libslic3r/PrintConfig.cpp:624 msgid "Filament notes" msgstr "Filament Bemerkungen" -#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1378 +#: src/slic3r/GUI/Tab.cpp:1669 msgid "Filament Overrides" msgstr "Filament Übersteuerung" -#: src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "Filament parking position" msgstr "Filament Parkposition" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filament Profiles Selection" msgstr "Filament Profile Auswahl" -#: src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Tab.cpp:1817 msgid "Filament properties" msgstr "Filament Eigenschaften" -#: src/slic3r/GUI/Tab.hpp:355 +#: src/slic3r/GUI/Tab.hpp:409 msgid "Filament Settings" msgstr "Filamenteinstellungen" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Filament Settings Tab" +msgstr "Filamenteinstellungsreiter" + +#: src/libslic3r/PrintConfig.cpp:762 msgid "Filament type" msgstr "Filament Typ" -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Filament unload time" msgstr "Filament Entladezeit" @@ -2840,75 +3255,79 @@ msgstr "Filament Entladezeit" msgid "filaments" msgstr "Filamente" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filaments" msgstr "Filamente" -#: src/libslic3r/Zipper.cpp:72 +#: src/slic3r/GUI/ConfigWizard.cpp:691 +msgid "Filaments marked with <b>*</b> are <b>not</b> compatible with some installed printers." +msgstr "Mit <b>*</b> markierte Filamente sind <b>nicht</b> kompatibel mit einigen installierten Druckern." + +#: src/libslic3r/miniz_extension.cpp:131 msgid "file close failed" msgstr "Dateischließen fehlgeschlagen" -#: src/libslic3r/Zipper.cpp:66 +#: src/libslic3r/miniz_extension.cpp:125 msgid "file create failed" msgstr "Dateierzeugen fehlgeschlagen" -#: src/slic3r/GUI/MainFrame.cpp:791 +#: src/slic3r/GUI/MainFrame.cpp:1492 msgid "File Not Found" msgstr "Datei nicht gefunden" -#: src/libslic3r/Zipper.cpp:86 +#: src/libslic3r/miniz_extension.cpp:145 msgid "file not found" msgstr "Datei nicht gefunden" -#: src/libslic3r/Zipper.cpp:64 +#: src/libslic3r/miniz_extension.cpp:123 msgid "file open failed" msgstr "Öffnen der Datei fehlgeschlagen" -#: src/libslic3r/Zipper.cpp:70 +#: src/libslic3r/miniz_extension.cpp:129 msgid "file read failed" msgstr "Dateilesen fehlgeschlagen" -#: src/libslic3r/Zipper.cpp:74 +#: src/libslic3r/miniz_extension.cpp:133 msgid "file seek failed" msgstr "Dateizugriff fehlgeschlagen" -#: src/libslic3r/Zipper.cpp:76 +#: src/libslic3r/miniz_extension.cpp:135 msgid "file stat failed" msgstr "Zugriff auf Dateieigenschaften fehlgeschlagen" -#: src/libslic3r/Zipper.cpp:36 +#: src/libslic3r/miniz_extension.cpp:95 msgid "file too large" msgstr "Datei zu groß" -#: src/libslic3r/Zipper.cpp:68 +#: src/libslic3r/miniz_extension.cpp:127 msgid "file write failed" msgstr "Schreiben der Datei fehlgeschlagen" -#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 msgid "Filename" msgstr "Dateiname" -#: src/libslic3r/PrintConfig.cpp:775 +#: src/libslic3r/PrintConfig.cpp:811 msgid "Fill angle" msgstr "Füllwinkel" -#: src/libslic3r/PrintConfig.cpp:789 +#: src/libslic3r/PrintConfig.cpp:825 msgid "Fill density" msgstr "Fülldichte" -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:862 msgid "Fill pattern" msgstr "Füllmuster" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:473 msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." msgstr "Füllmuster für die Boden Füllung. Dies wirkt sich nur auf die äußere sichtbare Bodenschicht aus, nicht aber auf die angrenzenden massiven Konturen." -#: src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:864 msgid "Fill pattern for general low-density infill." msgstr "Füllmuster für allgemeines Infill mit niedriger Dichte." -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:451 msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." msgstr "Füllmuster für die obere Füllung. Dies betrifft nur die obere sichtbare Schicht und nicht die angrenzenden massiven Konturen." @@ -2916,7 +3335,7 @@ msgstr "Füllmuster für die obere Füllung. Dies betrifft nur die obere sichtba msgid "Finished" msgstr "Fertig" -#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1947 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 msgid "Firmware" msgstr "Firmware" @@ -2928,44 +3347,52 @@ msgstr "Firmware Flasher" msgid "Firmware image:" msgstr "Firmware Image:" -#: src/slic3r/GUI/Tab.cpp:2577 +#: src/slic3r/GUI/Tab.cpp:2733 msgid "Firmware Retraction" msgstr "Firmware Einzug" -#: src/slic3r/GUI/ConfigWizard.cpp:891 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 msgid "Firmware Type" msgstr "Firmware Typ" -#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 -#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 msgid "First layer" msgstr "Erste Schicht" -#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:909 +msgid "First layer bed temperature" +msgstr "Erste Schicht Bett-Temperatur" + +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 msgid "First layer height" msgstr "Höhe der ersten Schicht" -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1448 msgid "First layer height can't be greater than nozzle diameter" msgstr "Schichthöhe der ersten Schicht darf nicht größer sein als der Düsendurchmesser" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:960 +msgid "First layer nozzle temperature" +msgstr "Erste Schicht Düsentemperatur" + +#: src/libslic3r/PrintConfig.cpp:942 msgid "First layer speed" msgstr "Druckgeschwindigkeit der ersten Schicht" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "Volumenparameter der ersten Schicht" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1647 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Reparieren mittels Netfabb" -#: src/slic3r/GUI/Plater.cpp:3473 +#: src/slic3r/GUI/Plater.cpp:3278 msgid "Fix Throught NetFabb" msgstr "Reparieren mittels Netfabb" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "Flashe Drucker &Firmware" @@ -2993,24 +3420,32 @@ msgstr "Es wird geflashed. Bitte nicht den Drucker abklemmen!" msgid "Flashing succeeded!" msgstr "Flashen erfolgreich!" -#: src/slic3r/GUI/Tab.cpp:1218 +#: src/slic3r/GUI/Tab.cpp:1548 msgid "Flow" msgstr "Fluss" -#: src/slic3r/GUI/PresetHints.cpp:220 +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Flow rate" +msgstr "Flussrate" + +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "flow rate is maximized" msgstr "die Durchflussmenge ist am Maximum" -#: src/slic3r/GUI/UpdateDialogs.cpp:286 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:555 +msgid "Following printer preset(s) is duplicated:%1%The above preset for printer \"%2%\" will be used just once." +msgstr "Folgende Druckervoreinstellung(en) wird (werden) dupliziert:%1% Die obige Voreinstellung für den Drucker \"%2%\" wird nur einmal verwendet." + +#: src/slic3r/GUI/UpdateDialogs.cpp:287 msgid "For more information please visit our wiki page:" msgstr "Für weitere Informationen besuchen Sie bitte unsere Wiki-Seite:" -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 +#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 msgid "For support enforcers only" msgstr "Nur für Stützverstärker" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3267 +#: src/slic3r/GUI/Tab.cpp:3702 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -3018,25 +3453,25 @@ msgstr "" "Beim linken Knopf: zeigt eine Nicht-System- (oder Nicht-Standard-) Einstellung an.\n" "Beim rechten Knopf: zeigt an, dass die Einstellung nicht geändert wurde." -#: src/slic3r/GUI/ConfigManipulation.cpp:136 +#: src/slic3r/GUI/ConfigManipulation.cpp:135 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers." msgstr "Damit der Reinigungsturm mit den löslichen Trägermaterialien arbeiten kann, müssen die Stützschichten mit den Objektschichten synchronisiert sein." -#: src/libslic3r/Print.cpp:1396 +#: src/libslic3r/Print.cpp:1422 msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." msgstr "Damit der Reinigungsturm mit den löslichen Trägermaterialien arbeiten kann, müssen die Stützschichten mit den Objektschichten synchronisiert sein." -#: src/libslic3r/PrintConfig.cpp:2864 +#: src/libslic3r/PrintConfig.cpp:3028 msgid "Force pad around object everywhere" msgstr "Grundschicht überall um Objekt erzwingen" -#: src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Force solid infill for regions having a smaller area than the specified threshold." msgstr "Massives Infill für Bereiche, die eine kleinere Fläche als die angegebene Schwelle aufweisen." -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1116 msgid "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material." msgstr "Erzwingt die Erzeugung von massiven Schalen zwischen benachbarten Materialien/Volumina. Geeignet für Multiextruderdrucke mit transluzenten Materialien oder manuell löslichen Trägermaterialien." @@ -3044,27 +3479,31 @@ msgstr "Erzwingt die Erzeugung von massiven Schalen zwischen benachbarten Materi msgid "From" msgstr "Von" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2223 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "from" +msgstr "von" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 msgid "From Object List You can't delete the last solid part from object." msgstr "Sie können nicht das letzte solide Teil des Objekts von der Objektliste löschen." -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front" msgstr "Front" -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front View" msgstr "Frontalansicht" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "vollständiger Profilname" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "G-code" msgstr "G-Code" -#: src/slic3r/GUI/DoubleSlider.cpp:1021 +#: src/slic3r/GUI/DoubleSlider.cpp:1146 msgid "" "G-code associated to this tick mark is in a conflict with print mode.\n" "Editing it will cause changes of Slider data." @@ -3072,220 +3511,273 @@ msgstr "" "Der mit diesem Häkchen verbundene G-Code steht in Konflikt mit dem Druckmodus.\n" "Seine Bearbeitung führt zu Änderungen der Slicer-Daten." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:130 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "G-code file exported to %1%" msgstr "G-Code Datei exportiert nach %1%" -#: src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:980 msgid "G-code flavor" msgstr "G-Code Typ" -#: src/libslic3r/PrintConfig.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:79 +msgid "G-code preview" +msgstr "G-Code Vorschau" + +#: src/libslic3r/PrintConfig.cpp:3552 +msgid "G-code viewer" +msgstr "G-Code-Viewer" + +#: src/libslic3r/PrintConfig.cpp:757 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "g/ml" msgstr "g/ml" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/PrintConfig.cpp:918 +#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 +#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 msgid "Gap fill" msgstr "Lückenfüllung" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1796 -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 +#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "Allgemein" -#: src/libslic3r/PrintConfig.cpp:1307 +#: src/libslic3r/PrintConfig.cpp:1415 msgid "Generate no less than the number of skirt loops required to consume the specified amount of filament on the bottom layer. For multi-extruder machines, this minimum applies to each extruder." msgstr "Erzeugt nicht weniger als die Anzahl der Schürzenschleifen, die benötigt wird, um die angegebene Menge an Filament auf der unteren Schicht zu verbrauchen. Bei Multiextruder-Maschinen gilt dieses Minimum für jeden Extruder." -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" msgstr "Generiere Stützstrukturen" -#: src/libslic3r/PrintConfig.cpp:1926 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." msgstr "Generiere Stützstrukturen für die angegebene Anzahl von Schichten, die von unten gezählt werden, unabhängig davon, ob normale Stützstrukturen aktiviert sind oder nicht und unabhängig von einer Winkelschwelle. Dies ist nützlich, um die Haftung von Objekten mit einem sehr dünnen oder schlechten Standfuß auf der Bauplatte zu erhöhen." -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Generate supports" msgstr "Stützstrukturen generieren" -#: src/libslic3r/PrintConfig.cpp:2615 +#: src/libslic3r/PrintConfig.cpp:2758 msgid "Generate supports for the models" msgstr "Erzeugt Stützstrukturen für die Modelle" -#: src/libslic3r/Print.cpp:1614 +#: src/slic3r/GUI/Plater.cpp:3554 +msgid "generated warnings" +msgstr "erzeugte Warnungen" + +#: src/libslic3r/Print.cpp:1645 msgid "Generating brim" msgstr "Generiere Rand" -#: src/libslic3r/Print.cpp:1642 +#: src/libslic3r/Print.cpp:1680 msgid "Generating G-code" msgstr "Generiere G-Code" -#: src/libslic3r/SLAPrintSteps.cpp:48 +#: src/slic3r/GUI/GCodeViewer.cpp:1392 +msgid "Generating index buffers" +msgstr "Generiere Indexpuffer" + +#: src/libslic3r/SLAPrintSteps.cpp:49 msgid "Generating pad" msgstr "Generiere Grundschicht" -#: src/libslic3r/PrintObject.cpp:152 +#: src/libslic3r/PrintObject.cpp:158 msgid "Generating perimeters" msgstr "Generiere Außenkonturen" -#: src/libslic3r/Print.cpp:1606 +#: src/libslic3r/Print.cpp:1636 msgid "Generating skirt" msgstr "Generiere Schürze" -#: src/libslic3r/PrintObject.cpp:395 +#: src/libslic3r/PrintObject.cpp:422 msgid "Generating support material" msgstr "Generiere Stützstrukturen" -#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +#: src/libslic3r/SLAPrintSteps.cpp:47 src/libslic3r/SLAPrintSteps.cpp:359 msgid "Generating support points" msgstr "Erzeuge Stützpunkte" -#: src/libslic3r/SLAPrintSteps.cpp:47 +#: src/libslic3r/SLAPrintSteps.cpp:48 msgid "Generating support tree" msgstr "Erzeuge Baumstützstruktur" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2022 +#: src/slic3r/GUI/GCodeViewer.cpp:933 +msgid "Generating toolpaths" +msgstr "Generiere Werkzeugwege" + +#: src/slic3r/GUI/GCodeViewer.cpp:1318 +msgid "Generating vertex buffer" +msgstr "Erzeuge den Vertex-Puffer" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 msgid "Generic" msgstr "Generisch" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Gizmo Schnitt" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Gizmo move" msgstr "Gizmo Bewegung" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Gizmo move: Press to snap by 1mm" +msgstr "Gizmo Bewegung: Drücken um um 1 mm zu Rasten" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "Gizmo Place face on bed" msgstr "Gizmo auf Fläche platzieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Gizmo rotate" msgstr "Gizmo Rotieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 +msgid "Gizmo rotate: Press to rotate selected objects around their own center" +msgstr "Gizmo Rotieren: Drücken, um ausgewählte Objekte um ihr eigenes Zentrum zu drehen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Gizmo scale" msgstr "Gizmo Skalieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmo scale: Press to activate one direction scaling" +msgstr "Gizmo Skalieren: Drücken, um Eine-Richtung-Skalierung zu aktivieren" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +msgid "Gizmo scale: Press to scale selected objects around their own center" +msgstr "Gizmo Skalieren: Drücken, um ausgewählte Objekte um ihr eigenes Zentrum zu skalieren" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +msgid "Gizmo scale: Press to snap by 5%" +msgstr "Gizmo Skalieren: Drücken, um um 5% zu rasten" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Gizmo scale: Scale selection to fit print volume" +msgstr "Gizmo Skalieren: Auswahl skalieren, um in das Druckvolumen zu passen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo SLA hollow" msgstr "Gizmo SLA Aushöhlung" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo SLA support points" msgstr "Gizmo SLA Stützpunkte" -#: src/slic3r/GUI/GLCanvas3D.cpp:2921 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:562 +#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "Gizmo Bewegen" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:489 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 msgid "Gizmo-Place on Face" msgstr "Gizmo Auf Fläche legen" -#: src/slic3r/GUI/GLCanvas3D.cpp:3001 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:564 +#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "Gizmo-Rotation" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:563 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:521 msgid "Gizmo-Scale" msgstr "Gizmo Skalierung" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 msgid "Gizmos" msgstr "Gizmos" -#: src/slic3r/GUI/AboutDialog.cpp:259 +#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, Version 3" -#: src/slic3r/GUI/ConfigWizard.cpp:980 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "Eine hohe Genauigkeit ist erforderlich, also verwenden Sie einen Messschieber und führen Sie mehrere Messungen entlang des Filaments durch, um dann den Mittelwert zu berechnen." -#: src/libslic3r/PrintConfig.cpp:844 +#: src/libslic3r/PrintConfig.cpp:882 msgid "Grid" msgstr "Gitternetz" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2454 +#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +msgid "Group" +msgstr "Gruppe" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Group manipulation" msgstr "Gruppenbearbeitung" -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "GUI" msgstr "GUI" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Gyroid" msgstr "Gyroid" -#: src/slic3r/GUI/Tab.cpp:2937 -msgid "has the following unsaved changes:" -msgstr "hat die folgenden ungesicherten Änderungen:" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Kopfdurchmesser" -#: src/slic3r/GUI/ConfigManipulation.cpp:317 +#: src/libslic3r/PrintConfig.cpp:2772 +msgid "Head penetration" +msgstr "Kopfeindringung" + +#: src/slic3r/GUI/ConfigManipulation.cpp:322 msgid "Head penetration should not be greater than the head width." msgstr "Die Kopfeindringung sollte nicht größer als die Kopfbreite sein." -#: src/libslic3r/PrintConfig.cpp:869 +#: src/libslic3r/PrintConfig.cpp:910 msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." msgstr "Druckbetttemperatur für die erste Schicht. Setzen Sie diesen Wert auf null, um die Befehle zur Steuerung der Betttemperatur im Ausgang zu deaktivieren." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 +#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 msgid "Height" msgstr "Höhe" -#: src/libslic3r/GCode/PreviewData.cpp:347 +#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 msgid "Height (mm)" msgstr "Höhe (mm)" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." msgstr "Höhe der Schürze in Schichten. Eine hohe Schürze kann gegen Zugluft schützen." -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "Height of the display" msgstr "Displayhöhe" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Height range Modifier" msgstr "Höhenbereich Modifizierer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Height ranges" msgstr "Höhenbereiche" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:295 msgid "Heights at which a filament change is to occur." msgstr "Höhen, bei denen eine Filamentwechsel stattfinden soll." -#: src/slic3r/GUI/ConfigWizard.cpp:433 +#: src/slic3r/GUI/ConfigWizard.cpp:451 #, c-format msgid "Hello, welcome to %s! This %s helps you with the initial configuration; just a few settings and you will be ready to print." msgstr "Hallo, willkommen bei %s! Dieses %s hilft Ihnen bei der Erstkonfiguration; nur ein paar Einstellungen und Sie sind bereit zum Drucken." -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3564 msgid "Help" msgstr "Hilfe" -#: src/libslic3r/PrintConfig.cpp:3371 +#: src/libslic3r/PrintConfig.cpp:3570 msgid "Help (FFF options)" msgstr "Hilfe (FFF Optionen)" -#: src/libslic3r/PrintConfig.cpp:3376 +#: src/libslic3r/PrintConfig.cpp:3575 msgid "Help (SLA options)" msgstr "Hilfe (SLA Optionen)" @@ -3293,96 +3785,80 @@ msgstr "Hilfe (SLA Optionen)" msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." msgstr "Hier können Sie das erforderliche Reinigungsvolumen (mm³) für ein beliebiges Werkzeugpaar einstellen." -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1017 msgid "High extruder current on filament swap" msgstr "Hohe Extruderstromstärke beim Filamentwechsel" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 +#: src/slic3r/GUI/GLCanvas3D.cpp:263 msgid "Higher print quality versus higher print speed." msgstr "Höhere Druckqualität versus höhere Druckgeschwindigkeit." -#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 msgid "Hilbert Curve" msgstr "HIlbertkurve" -#: src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:916 msgid "Hold Shift to Slice & Export G-code" msgstr "Halten Sie die Umschalttaste gedrückt, um zu slicen und den G-Code zu exportieren" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 msgid "Hole depth" msgstr "Lochtiefe" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 msgid "Hole diameter" msgstr "Lochdurchmesser" -#: src/slic3r/GUI/Plater.cpp:2760 -msgid "Hollow" -msgstr "Aushöhlen" - -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:977 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:785 msgid "Hollow and drill" msgstr "Aushöhlen und Bohren" -#: src/libslic3r/PrintConfig.cpp:2910 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Hollow out a model to have an empty interior" msgstr "Ein Modell aushöhlen, um einen leeren Innenraum zu erhalten" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:40 msgid "Hollow this object" msgstr "Dieses Objekt aushöhlen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3654 -#: src/slic3r/GUI/Tab.cpp:3655 src/libslic3r/SLA/Hollowing.cpp:46 -#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 -#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2909 -#: src/libslic3r/PrintConfig.cpp:2916 src/libslic3r/PrintConfig.cpp:2926 -#: src/libslic3r/PrintConfig.cpp:2935 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 +#: src/slic3r/GUI/Tab.cpp:4074 src/libslic3r/SLA/Hollowing.cpp:45 +#: src/libslic3r/SLA/Hollowing.cpp:57 src/libslic3r/SLA/Hollowing.cpp:66 +#: src/libslic3r/SLA/Hollowing.cpp:75 src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Hollowing" msgstr "Aushöhlen" -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Hollowing cancelled." -msgstr "Aushöhlen abgebrochen." - -#: src/slic3r/GUI/Plater.cpp:2927 -msgid "Hollowing done." -msgstr "Aushöhlung erledigt." - -#: src/slic3r/GUI/Plater.cpp:2929 -msgid "Hollowing failed." -msgstr "Das Aushöhlen ist fehlgeschlagen." - -#: src/libslic3r/PrintConfig.cpp:2937 +#: src/libslic3r/PrintConfig.cpp:3101 msgid "Hollowing is done in two steps: first, an imaginary interior is calculated deeper (offset plus the closing distance) in the object and then it's inflated back to the specified offset. A greater closing distance makes the interior more rounded. At zero, the interior will resemble the exterior the most." msgstr "Das Aushöhlen erfolgt in zwei Schritten: Zuerst wird ein imaginärer Innenraum tiefer (Versatz plus Schließabstand) in das Objekt hinein berechnet und dann wird es wieder auf den angegebenen Versatz aufgeblasen. Ein größerer Schließabstand macht den Innenraum runder. Bei Null wird der Innenraum dem Außenraum am ähnlichsten sein." -#: src/libslic3r/SLAPrintSteps.cpp:43 +#: src/libslic3r/SLAPrintSteps.cpp:44 msgid "Hollowing model" msgstr "Aushöhlen des Modells" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:813 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:624 msgid "Hollowing parameter change" msgstr "Änderung der Aushöhlungsparameter" -#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 +#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 msgid "Honeycomb" msgstr "Bienenwabe" -#: src/slic3r/GUI/Tab.cpp:1064 +#: src/slic3r/GUI/Tab.cpp:1386 msgid "Horizontal shells" msgstr "Horizontale Konturhüllen" -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." msgstr "Horizontalbreite des Randes, der um jedes Objekt auf der Bodenschicht gedruckt wird." -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" msgstr "Host" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Host Type" msgstr "Host Typ" @@ -3390,11 +3866,11 @@ msgstr "Host Typ" msgid "Hostname" msgstr "Hostname" -#: src/libslic3r/PrintConfig.cpp:97 +#: src/libslic3r/PrintConfig.cpp:99 msgid "Hostname, IP or URL" msgstr "Hostname, IP oder URL" -#: src/slic3r/GUI/Tab.cpp:139 +#: src/slic3r/GUI/Tab.cpp:210 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." @@ -3402,57 +3878,66 @@ msgstr "" "Bewegen Sie den Mauszeiger über die Schaltflächen, um weitere Informationen zu erhalten,\n" "oder klicken Sie auf diese Schaltfläche." -#: src/libslic3r/PrintConfig.cpp:2812 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "How far should the pad extend around the contained geometry" msgstr "Wie weit sich die Grundschicht um die enthaltene Geometrie erstrecken soll" -#: src/libslic3r/PrintConfig.cpp:2901 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Wie weit die kleinen Verbinder in den Modellkörper eindringen sollen." -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "How much the pinhead has to penetrate the model surface" msgstr "Wie tief der Nadelkopf in die Modelloberfläche eindringt" -#: src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "How much the supports should lift up the supported object. If \"Pad around object\" is enabled, this value is ignored." msgstr "Wie viel die Stützen das unterstützte Objekt anheben sollen. Wenn \"Grundschicht um Objekt\" aktiviert ist, wird dieser Wert ignoriert." -#: src/libslic3r/PrintConfig.cpp:111 +#: src/libslic3r/PrintConfig.cpp:1209 +msgid "How to apply limits" +msgstr "Wie man Grenzen anwendet" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "How to apply the Machine Limits" +msgstr "Wie man Maschinengrenzen anwendet" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 +#: src/libslic3r/PrintConfig.cpp:113 msgid "HTTPS CA File" msgstr "HTTPS CA Datei" -#: src/slic3r/GUI/Tab.cpp:1713 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." msgstr "HTTPS-CA-Datei ist optional. Sie wird nur benötigt, wenn Sie HTTPS mit einem selbstsignierten Zertifikat verwenden." -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:376 msgid "Icon size in a respect to the default size" msgstr "Symbolgröße in Bezug auf die Standardgröße" -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:147 msgid "ID" msgstr "ID" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:2015 msgid "If checked, supports will be generated automatically based on the overhang threshold value. If unchecked, supports will be generated inside the \"Support Enforcer\" volumes only." msgstr "Wenn dieses Kontrollkästchen aktiviert ist, werden Stützstrukturen automatisch basierend auf dem Schwellenwert für den Überhang generiert. Wenn diese Option nicht aktiviert ist, werden Stützen nur innerhalb der Volumen der \"Stützverstärker\" generiert." -#: src/slic3r/GUI/ConfigWizard.cpp:773 +#: src/slic3r/GUI/ConfigWizard.cpp:1132 #, c-format msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Falls aktiviert, sucht %s online nach neuen Versionen der Anwendung. Falls eine neue Version verfügbar ist, wird eine Mitteilung beim nächsten Programmstart angezeigt (aber nie während der Programmausführung). Dies dient nur der Mitteilung; es findet keine automatische Installation statt." -#: src/slic3r/GUI/ConfigWizard.cpp:783 +#: src/slic3r/GUI/ConfigWizard.cpp:1142 #, c-format msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." msgstr "Wenn aktiviert, lädt %s Updates der eingebauten Systemvoreinstellungen im Hintergrund herunter. Diese Updates werden in einen separaten temporären Speicherort heruntergeladen. Wenn eine neue Voreinstellungsversion verfügbar wird, wird sie beim Programmstart angeboten." -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." msgstr "Wenn aktiviert, werden alle Druckextruder zu Beginn des Druckvorgangs an der Vorderkante des Druckbetts geprimt." -#: src/slic3r/GUI/ConfigWizard.cpp:805 +#: src/slic3r/GUI/ConfigWizard.cpp:1164 msgid "" "If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n" "If not enabled, the Reload from disk command will ask to select each file using an open file dialog." @@ -3460,127 +3945,172 @@ msgstr "" "Wenn diese Option aktiviert ist, ermöglicht der Befehl Von Festplatte neu laden das automatische Suchen und Laden der Dateien, wenn er aufgerufen wird.\n" "Wenn nicht aktiviert, fordert der Befehl Von der Festplatte neu laden jede Datei über ein Dialogfeld zum Öffnen von Dateien zur Auswahl auf." -#: src/slic3r/GUI/Preferences.cpp:74 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked." msgstr "Wenn diese Option aktiviert ist, ermöglicht der Befehl \"Von Festplatte neu laden\" das automatische Suchen und Laden der Dateien, wenn er aufgerufen wird." -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:238 +msgid "If enabled, changes made using the sequential slider, in preview, apply only to gcode top layer. If disabled, changes made using the sequential slider, in preview, apply to the whole gcode." +msgstr "Wenn diese Option aktiviert ist, gelten Änderungen, die mit dem sequentiellen Schieberegler in der Vorschau vorgenommen werden, nur für den G-Code der obersten Schicht. Wenn deaktiviert, werden Änderungen, die mit dem sequentiellen Schieberegler in der Vorschau vorgenommen werden, auf den gesamten G-Code angewendet." + +#: src/slic3r/GUI/Preferences.cpp:83 msgid "If enabled, PrusaSlicer will check for the new versions of itself online. When a new version becomes available a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Wenn aktiviert, wird PrusaSlicer online nach den neuen Versionen von sich selbst suchen. Wenn eine neue Version verfügbar wird, wird beim nächsten Anwendungsstart (nie während der Programmnutzung) eine Benachrichtigung angezeigt. Dies ist nur ein Benachrichtigungsmechanismus, es erfolgt keine automatische Installation." -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:270 +msgid "If enabled, renders object using the environment map." +msgstr "Wenn aktiviert, wird das Objekt mit Hilfe der Environment Map gerendert." + +#: src/slic3r/GUI/Preferences.cpp:200 +msgid "If enabled, reverses the direction of zoom with mouse wheel" +msgstr "Wenn aktiviert, wird die Richtung des Zooms mit dem Mausrad umgekehrt" + +#: src/slic3r/GUI/Preferences.cpp:99 msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." msgstr "Wenn aktiviert, lädt Slic3r Updates der eingebauten Systemvoreinstellungen im Hintergrund herunter. Diese Updates werden in einen separaten temporären Speicherort heruntergeladen. Wenn eine neue Voreinstellungsversion verfügbar wird, wird sie beim Programmstart angeboten." -#: src/slic3r/GUI/Preferences.cpp:106 +#: src/slic3r/GUI/Preferences.cpp:137 msgid "If enabled, the 3D scene will be rendered in Retina resolution. If you are experiencing 3D performance problems, disabling this option may help." msgstr "Wenn aktiviert, wird die 3D-Szene in Retina-Auflösung gerendert. Wenn Sie Probleme mit der 3D-Leistung haben, kann es hilfreich sein, diese Option zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/slic3r/GUI/Preferences.cpp:215 +msgid "If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene" +msgstr "Wenn aktiviert, wird die Schaltfläche zum Zusammenklappen der Seitenleiste in der oberen rechten Ecke der 3D-Szene angezeigt" + +#: src/libslic3r/PrintConfig.cpp:3698 +msgid "If enabled, the command line arguments are sent to an existing instance of GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides the \"single_instance\" configuration value from application preferences." +msgstr "Wenn aktiviert, werden die Befehlszeilenargumente an eine vorhandene Instanz der GUI PrusaSlicer gesendet, oder ein vorhandenes PrusaSlicer-Fenster wird aktiviert. Übersteuert den Konfigurationswert \"single_instance\" aus den Anwendungseinstellungen." + +#: src/libslic3r/PrintConfig.cpp:1804 msgid "If enabled, the skirt will be as tall as a highest printed object. This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft." msgstr "Wenn diese Option aktiviert ist, wird die Schürze so hoch wie das höchste gedruckte Objekt sein. Dies ist nützlich, um einen ABS- oder ASA-Druck vor dem Verziehen und Ablösen vom Druckbett aufgrund von Zugluft zu schützen." -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:2000 msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." msgstr "Wenn aktiviert, wird der Reinigungsturm nicht auf Schichten ohne Werkzeugwechsel gedruckt. Bei Schichten mit Werkzeugwechsel fährt der Extruder nach unten, um den Reinigungsturm zu drucken. Der Benutzer ist dafür verantwortlich, dass es nicht zu einer Kollision mit dem Druck kommt." -#: src/slic3r/GUI/Preferences.cpp:128 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Wenn aktiviert, verwenden Sie eine freie Kamera. Wenn nicht aktiviert, verwenden Sie eine beschränkte Kamera." -#: src/slic3r/GUI/Preferences.cpp:121 +#: src/slic3r/GUI/Preferences.cpp:186 msgid "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "Wenn aktiviert, verwenden Sie eine perspektivische Kamera. Wenn nicht aktiviert, verwenden Sie eine orthographische Kamera." -#: src/slic3r/GUI/Preferences.cpp:145 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "If enabled, you can change size of toolbar icons manually." msgstr "Wenn aktiviert, können Sie die Größe der Symbolleistensymbole manuell ändern." -#: src/slic3r/GUI/PresetHints.cpp:29 +#: src/slic3r/GUI/PresetHints.cpp:28 msgid "If estimated layer time is below ~%1%s, fan will run at %2%%% and print speed will be reduced so that no less than %3%s are spent on that layer (however, speed will never be reduced below %4%mm/s)." msgstr "Wenn die geschätzte Schichtzeit unter ~%1%s liegt, läuft der Lüfter mit %2%%% und die Druckgeschwindigkeit wird reduziert, so dass nicht weniger als %3%s für diese Schicht verwendet werden (die Geschwindigkeit wird jedoch nie unter %4%mm/s reduziert)." -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:35 msgid "If estimated layer time is greater, but still below ~%1%s, fan will run at a proportionally decreasing speed between %2%%% and %3%%%." msgstr "Falls die erwartete Schichtdruckzeit größer, aber noch unterhalb von ~%1%s ist, wird der Lüfter mit einer sich proportional verringernden Geschwindigkeit zwischen %2%%% und %3%%% laufen." -#: src/libslic3r/PrintConfig.cpp:901 +#: src/libslic3r/PrintConfig.cpp:943 msgid "If expressed as absolute value in mm/s, this speed will be applied to all the print moves of the first layer, regardless of their type. If expressed as a percentage (for example: 40%) it will scale the default speeds." msgstr "Wird diese Geschwindigkeit als Absolutwert in mm/s angegeben, so wird sie auf alle Druckbewegungen der ersten Lage angewendet, unabhängig von ihrem Typ. In Prozent ausgedrückt (z.B. 40%) skaliert es die voreingestellten Geschwindigkeiten." -#: src/libslic3r/PrintConfig.cpp:573 +#: src/libslic3r/PrintConfig.cpp:609 msgid "If layer print time is estimated below this number of seconds, fan will be enabled and its speed will be calculated by interpolating the minimum and maximum speeds." msgstr "Wenn die Druckzeit der Ebenen unter dieser Anzahl von Sekunden liegt, wird der Lüfter aktiviert und seine Geschwindigkeit durch Interpolation der minimalen und maximalen Geschwindigkeiten berechnet." -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1821 msgid "If layer print time is estimated below this number of seconds, print moves speed will be scaled down to extend duration to this value." msgstr "Wenn die Druckzeit der Ebene unter dieser Anzahl von Sekunden liegt, wird die Geschwindigkeit des Druckvorgangs verringert, um die Zeitdauer auf diesen Wert zu verlängern." -#: src/libslic3r/PrintConfig.cpp:567 +#: src/libslic3r/PrintConfig.cpp:603 msgid "If this is enabled, fan will never be disabled and will be kept running at least at its minimum speed. Useful for PLA, harmful for ABS." msgstr "Wenn diese Option aktiviert ist, wird der Lüfter niemals deaktiviert und läuft mindestens mit seiner Minimaldrehzahl weiter. Sinnvoll für PLA, ungeignet für ABS." -#: src/slic3r/GUI/Preferences.cpp:49 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." msgstr "Wenn diese Option aktiviert ist, zentriert PrusaSlicer Objekte automatisch um die Mitte des Druckbettes." -#: src/slic3r/GUI/Preferences.cpp:57 +#: src/slic3r/GUI/Preferences.cpp:74 msgid "If this is enabled, Slic3r will pre-process objects as soon as they're loaded in order to save time when exporting G-code." msgstr "Wenn diese Option aktiviert ist, wird PrusaSlicer Objekte vorverarbeiten, sobald sie geladen werden, um Zeit beim Export von G-Code zu sparen." -#: src/slic3r/GUI/Preferences.cpp:41 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." msgstr "Wenn diese Option aktiviert ist, öffnet PrusaSlicer das letzte Ausgabeverzeichnis anstelle des Verzeichnisses, in dem sich die Eingabedateien befinden." -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/slic3r/GUI/Preferences.cpp:125 +msgid "If this is enabled, when starting PrusaSlicer and another instance of the same PrusaSlicer is already running, that instance will be reactivated instead." +msgstr "Wenn dies aktiviert ist, wird beim Starten von PrusaSlicer, wenn bereits eine andere Instanz desselben PrusaSlicers läuft, diese Instanz stattdessen reaktiviert." + +#: src/libslic3r/PrintConfig.cpp:1670 msgid "If you set this to a positive value, Z is quickly raised every time a retraction is triggered. When using multiple extruders, only the setting for the first extruder will be considered." msgstr "Wenn Sie diesen Wert auf einen positiven Wert setzen, wird Z bei jedem Auslösen eines Einzugs schnell angehoben. Bei Verwendung mehrerer Extruder wird nur die Einstellung für den ersten Extruder berücksichtigt." -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1679 msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z. You can tune this setting for skipping lift on the first layers." msgstr "Wenn Sie diesen Wert auf einen positiven Wert setzen, erfolgt der Z-Hub nur oberhalb des angegebenen absoluten Z-Wertes. Sie können diese Einstellung für das Auslassen von Z-Hüben auf den ersten Ebenen einstellen." -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1688 msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z. You can tune this setting for limiting lift to the first layers." msgstr "Wenn Sie diesen Wert auf einen positiven Wert setzen, erfolgt der Z-Hub nur unterhalb des angegebenen absoluten Z-Wertes. Sie können diese Einstellung so einstellen, dass der Z-Hub auf die ersten Lagen begrenzt wird." -#: src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1562 msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." msgstr "Wenn Sie den Ausgabe-G-Code durch eigene Skripte verarbeiten wollen, geben Sie hier einfach die absoluten Pfade an. Trennen Sie mehrere Skripte durch ein Semikolon. Skripten wird als erstes Argument der absolute Pfad zur G-Code-Datei übergeben, und sie können auf die PrusaSlicer-Konfigurationseinstellungen zugreifen, indem sie Umgebungsvariablen lesen." -#: src/libslic3r/PrintConfig.cpp:530 +#: src/libslic3r/PrintConfig.cpp:566 msgid "If your firmware doesn't handle the extruder displacement you need the G-code to take it into account. This option lets you specify the displacement of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." msgstr "Wenn Ihre Firmware die Verschiebung des Extruders nicht beherrscht, benötigen Sie den G-Code, um sie zu berücksichtigen. Mit dieser Option können Sie die Verschiebung jedes Extruders in Bezug auf den ersten Extruder festlegen. Es erwartet positive Koordinaten (sie werden von der XY-Koordinate subtrahiert)." -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2312 msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." msgstr "Wenn Ihre Firmware relative E-Werte benötigt, diese Option aktivieren, ansonsten lassen Sie sie unmarkiert. Die meisten Firmwares verwenden absolute Werte." -#: src/libslic3r/PrintConfig.cpp:3485 +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" +msgstr "Ignorieren" + +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignoriere fehlende Konfigurationsdateien" -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:192 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:173 +msgid "Ignores facets facing away from the camera." +msgstr "Ignoriert die von der Kamera abgewandten Flächen." + +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Import &Config" msgstr "Importiere &Konfiguration" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Import Config &Bundle" msgstr "Importiere Konfi&gurationssamlung" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Import Config from &project" msgstr "Importiere Konfiguration von &Projekt" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Import Config from ini/amf/3mf/gcode" msgstr "Konfiguration aus ini/amf/3mf/gcode importieren" -#: src/slic3r/GUI/Plater.cpp:4603 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 +msgid "Import file" +msgstr "Datei importieren" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 +msgid "Import model and profile" +msgstr "Modell und Profil importieren" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:48 +msgid "Import model only" +msgstr "Nur Modell importieren" + +#: src/slic3r/GUI/Plater.cpp:4655 msgid "Import Object" msgstr "Objekt importieren" -#: src/slic3r/GUI/Plater.cpp:4607 +#: src/slic3r/GUI/Plater.cpp:4659 msgid "Import Objects" msgstr "Objekte importieren" @@ -3588,15 +4118,50 @@ msgstr "Objekte importieren" msgid "Import of the repaired 3mf file failed" msgstr "Import einer reparierten 3MF Datei fehlgeschlagen" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:47 +msgid "Import profile only" +msgstr "Nur Profil importieren" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Import SL1 archive" +msgstr "SL1-Archiv importieren" + +#: src/slic3r/GUI/Plater.cpp:1561 +msgid "Import SLA archive" +msgstr "SLA-Archiv importieren" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Import STL (imperial units)" +msgstr "STL importieren (imperiale Einheiten)" + +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importiere STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "Importiere STL/OBJ/AMF/3MF mit Konfigurationsdaten, Druckplatte beibehalten" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:159 +msgid "Importing canceled." +msgstr "Importieren abgebrochen." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:160 +msgid "Importing done." +msgstr "Importieren abgeschlossen." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:135 +msgid "Importing SLA archive" +msgstr "Importiere SLA-Archiv" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +msgid "in" +msgstr "in" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 #, c-format msgid "In this mode you can select only other %s Items%s" msgstr "In diesem Modus wählen Sie nur andere %s Elemente%s" @@ -3605,25 +4170,25 @@ msgstr "In diesem Modus wählen Sie nur andere %s Elemente%s" msgid "Incompatible bundles:" msgstr "Inkompatible Konfigurationssammlungen:" +#: src/slic3r/GUI/PresetComboBoxes.cpp:241 +msgid "Incompatible presets" +msgstr "Inkompatible Voreinstellungen" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 #, c-format msgid "Incompatible with this %s" msgstr "Nicht kompatibel mit diesem %s" -#: src/slic3r/GUI/Plater.cpp:4685 +#: src/slic3r/GUI/Plater.cpp:4790 msgid "Increase Instances" msgstr "Kopien erhöhen" -#: src/slic3r/GUI/GLCanvas3D.cpp:264 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Increase/decrease edit area" msgstr "Bearbeitungsbereich vergrößern/verkleinern" -#: src/slic3r/GUI/Plater.cpp:2922 -msgid "Indexing hollowed object" -msgstr "Indizierung ausgehöhlter Objekte" - #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3258 +#: src/slic3r/GUI/Tab.cpp:3695 msgid "" "indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." @@ -3632,12 +4197,12 @@ msgstr "" "Klicken Sie auf das Symbol GEÖFFNETES SCHLOSS, um alle Einstellungen für die aktuelle Optionsgruppe auf die System- (oder Standard-) Werte zurückzusetzen." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3254 +#: src/slic3r/GUI/Tab.cpp:3691 msgid "indicates that the settings are the same as the system (or default) values for the current option group" msgstr "zeigt an, dass die Einstellungen mit den System- (oder Standard-) Werten für die aktuelle Optionsgruppe übereinstimmen" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3270 +#: src/slic3r/GUI/Tab.cpp:3707 msgid "" "indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." @@ -3645,419 +4210,475 @@ msgstr "" "zeigt an, dass die Einstellungen geändert wurden und nicht mit dem zuletzt gespeicherten Preset für die aktuelle Optionsgruppe übereinstimmen.\n" "Klicken Sie auf das Symbol PFEIL ZURÜCK, um alle Einstellungen für die aktuelle Optionsgruppe auf das zuletzt gespeicherte Preset zurückzusetzen." -#: src/slic3r/GUI/ConfigManipulation.cpp:211 -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 -#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/slic3r/GUI/Plater.cpp:527 -#: src/slic3r/GUI/Tab.cpp:1091 src/slic3r/GUI/Tab.cpp:1092 -#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 -#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 -#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 -#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:93 +#: src/slic3r/GUI/GUI_ObjectList.cpp:652 src/slic3r/GUI/Plater.cpp:393 +#: src/slic3r/GUI/Tab.cpp:1413 src/slic3r/GUI/Tab.cpp:1414 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:450 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:826 src/libslic3r/PrintConfig.cpp:863 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1035 +#: src/libslic3r/PrintConfig.cpp:1053 src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1091 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1860 msgid "Infill" msgstr "Infill" -#: src/slic3r/GUI/PresetHints.cpp:174 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "Infill" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1065 msgid "Infill before perimeters" msgstr "Infill vor Kontur" -#: src/libslic3r/PrintConfig.cpp:1001 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "Infill extruder" msgstr "Infill Extruder" -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Infill/perimeters overlap" msgstr "Infill/Kontur Überlappung" -#: src/libslic3r/Print.cpp:1584 +#: src/libslic3r/Print.cpp:1610 msgid "Infilling layers" msgstr "Fülle Schichten" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3430 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3505 src/slic3r/GUI/Plater.cpp:141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:147 msgid "Info" msgstr "Info" -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/slic3r/GUI/GUI_App.cpp:1087 src/slic3r/GUI/Tab.cpp:3435 +msgid "Information" +msgstr "Informationen" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 +msgid "Infornation" +msgstr "Informationen" + +#: src/libslic3r/PrintConfig.cpp:1101 msgid "Inherits profile" msgstr "Übernimmt Profil" -#: src/libslic3r/SLAPrint.cpp:653 +#: src/libslic3r/SLAPrint.cpp:667 msgid "Initial exposition time is out of printer profile bounds." msgstr "Anfang-Belichtungszeit ist außerhalb der Druckerprofilgrenzen." -#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 msgid "Initial exposure time" msgstr "Anfang-Belichtungszeit" -#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 msgid "Initial layer height" msgstr "Anfangsschichthöhe" -#: src/slic3r/GUI/Field.cpp:204 +#: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "Der Eingabewert ist nicht im gültigen Bereich" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "Inspect / activate configuration snapshots" msgstr "Inspiziere / aktiviere Konfigurations-Momentaufnahmen" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:62 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, c-format msgid "Instance %d" msgstr "Kopie %d" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 msgid "Instance manipulation" msgstr "Kopie Bearbeitung" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "Kopien" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1091 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3781 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4244 msgid "Instances to Separated Objects" msgstr "Kopien in einzelne Objekte wandeln" -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface layers" msgstr "Schnittstellen Schichten" -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Interface loops" msgstr "Kontaktschleifen" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Interface pattern spacing" msgstr "Schnittstellenmuster Abstand" -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1115 msgid "Interface shells" msgstr "Schnittstellenshells" -#: src/libslic3r/Zipper.cpp:84 +#: src/libslic3r/miniz_extension.cpp:143 msgid "internal error" msgstr "interner Fehler" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:342 msgid "Internal infill" msgstr "Internes Infill" -#: src/slic3r/GUI/Plater.cpp:3106 +#: src/slic3r/GUI/BedShapeDialog.cpp:145 +msgid "Invalid" +msgstr "Ungültig" + +#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 msgid "Invalid data" msgstr "Ungültige Daten" -#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 -#: src/slic3r/GUI/BedShapeDialog.cpp:566 +#: src/slic3r/GUI/BedShapeDialog.cpp:570 src/slic3r/GUI/BedShapeDialog.cpp:619 +#: src/slic3r/GUI/BedShapeDialog.cpp:642 msgid "Invalid file format." msgstr "Ungültiges Dateiformat." -#: src/libslic3r/Zipper.cpp:80 +#: src/libslic3r/miniz_extension.cpp:139 msgid "invalid filename" msgstr "ungültiger Dateiname" -#: src/slic3r/GUI/ConfigManipulation.cpp:319 +#: src/slic3r/GUI/ConfigManipulation.cpp:324 msgid "Invalid Head penetration" msgstr "Ungültige Eindringtiefe des Stützkopfes" -#: src/libslic3r/Zipper.cpp:48 +#: src/libslic3r/miniz_extension.cpp:107 msgid "invalid header or archive is corrupted" msgstr "ungültiger Dateiheader oder Archiv ist beschädigt" -#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 +#: src/slic3r/GUI/Field.cpp:243 src/slic3r/GUI/Field.cpp:274 +#: src/slic3r/GUI/Field.cpp:1358 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." msgstr "Ungültige numerische Eingabe." -#: src/libslic3r/Zipper.cpp:78 +#: src/libslic3r/miniz_extension.cpp:137 msgid "invalid parameter" msgstr "ungültiger Parameter" -#: src/slic3r/GUI/ConfigManipulation.cpp:332 +#: src/slic3r/GUI/ConfigManipulation.cpp:337 msgid "Invalid pinhead diameter" msgstr "Ungültiger Nadelkopfdurchmesser" +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/slic3r/GUI/Tab.cpp:1420 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 +#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +msgid "Ironing" +msgstr "Bügeln" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Ironing Type" +msgstr "Bügeltyp" + +#: src/slic3r/GUI/GUI_App.cpp:243 +msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "basiert auf Slic3r von Alessandro Ranellucci und der RepRap Community." + #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 msgid "is licensed under the" msgstr "ist unter der Lizenz der" -#: src/slic3r/GUI/Tab.cpp:2941 -msgid "is not compatible with print profile" -msgstr "ist mit dem Druckprofil nicht kompatibel" - -#: src/slic3r/GUI/Tab.cpp:2940 -msgid "is not compatible with printer" -msgstr "ist mit dem Drucker nicht kompatibel" - -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso" msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso View" msgstr "Iso Ansicht" -#: src/slic3r/GUI/Tab.cpp:964 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "It can't be deleted or modified." msgstr "Es ist keine Löschung oder Änderung möglich." -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "It is not allowed to change the file to reload" msgstr "Es ist nicht erlaubt, die neu zu ladende Datei zu ändern" -#: src/libslic3r/PrintConfig.cpp:974 +#: src/libslic3r/PrintConfig.cpp:1018 msgid "It may be beneficial to increase the extruder motor current during the filament exchange sequence to allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly shaped tip." msgstr "Es kann vorteilhaft sein, den Extrudermotorstrom während des Filamentwechselvorgangs zu erhöhen, um schnelle Rammvorschübe zu ermöglichen und den Widerstand beim Laden eines Filaments mit einer ungünstig geformten Spitze zu überwinden." -#: src/slic3r/GUI/GUI_App.cpp:1084 src/slic3r/GUI/Tab.cpp:2958 +#: src/slic3r/GUI/Tab.cpp:3413 +msgid "It's a last preset for this physical printer." +msgstr "Es handelt sich um die letzte Voreinstellung für diesen physischen Drucker." + +#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "Es ist nicht möglich mehrteilige Objekte mit dem SLA-Verfahren zu drucken." -#: src/slic3r/GUI/Tab.cpp:2229 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:601 +msgid "It's not possible to delete the last related preset for the printer." +msgstr "Es ist nicht möglich, die letzte zugehörige Voreinstellung für den Drucker zu löschen." + +#: src/slic3r/GUI/Tab.cpp:2398 msgid "Jerk limits" msgstr "Ruck-Begrenzungen" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Jitter" msgstr "Jitter" -#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 -#: src/slic3r/GUI/DoubleSlider.cpp:1651 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 +#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 msgid "Jump to height" msgstr "Zur Höhe wechseln" -#: src/slic3r/GUI/DoubleSlider.cpp:955 +#: src/slic3r/GUI/DoubleSlider.cpp:1075 #, c-format msgid "Jump to height %s or Set extruder sequence for the entire print" msgstr "Auf Höhe %s wechseln oder Extrudersequenz für den gesamten Druck einstellen" -#: src/libslic3r/PrintConfig.cpp:566 +#: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 +msgid "Jump to move" +msgstr "Zum Bewegen wechseln" + +#: src/slic3r/GUI/SavePresetDialog.cpp:315 +msgid "Just switch to \"%1%\" preset" +msgstr "Wechseln Sie einfach zur \"%1%\" Voreinstellung" + +#: src/libslic3r/PrintConfig.cpp:602 msgid "Keep fan always on" msgstr "Lüfter ständig laufen lassen" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 msgid "Keep lower part" msgstr "Unteren Teil behalten" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 +#: src/slic3r/GUI/GLCanvas3D.cpp:290 msgid "Keep min" msgstr "Halte min" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Keep upper part" msgstr "Oberen Teil behalten" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:37 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 +#: src/slic3r/GUI/MainFrame.cpp:1332 msgid "Keyboard Shortcuts" msgstr "Tastaturkürzel" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 msgid "Keyboard shortcuts" msgstr "Tastaturkürzel" -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2641 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Label objects" msgstr "Objekte benennen" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Landscape" msgstr "Querformat" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Language" msgstr "Spache" -#: src/slic3r/GUI/GUI_App.cpp:885 +#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 msgid "Language selection" msgstr "Sprachauswahl" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2140 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2408 msgid "Last instance of an object cannot be deleted." msgstr "Letzte Kopie eines Objektes kann nicht gelöscht werden." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 msgid "Layer" msgstr "Schicht" -#: src/slic3r/GUI/ConfigManipulation.cpp:49 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "Schichthöhe" -#: src/libslic3r/Print.cpp:1427 +#: src/libslic3r/Print.cpp:1453 msgid "Layer height can't be greater than nozzle diameter" msgstr "Schichthöhe darf nicht größer sein als der Düsendurchmesser" -#: src/slic3r/GUI/Tab.cpp:2362 +#: src/slic3r/GUI/Tab.cpp:2531 msgid "Layer height limits" msgstr "Schichthöhen Grenzen" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 -msgid "Layer height:" -msgstr "Schichthöhe:" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2488 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 msgid "Layer range Settings to modify" msgstr "Schichtbereicheinstellungen zum Ändern" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 -#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 -#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1976 +#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1798 +#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "layers" msgstr "Schichten" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3512 -#: src/slic3r/GUI/Tab.cpp:3600 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 +#: src/slic3r/GUI/Tab.cpp:4010 msgid "Layers" msgstr "Schichten" -#: src/slic3r/GUI/Tab.cpp:1048 src/slic3r/GUI/Tab.cpp:3598 +#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 msgid "Layers and perimeters" msgstr "Schichten und Umfänge" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 -#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 -#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 -#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:2142 +#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:92 +#: src/slic3r/GUI/GUI_ObjectList.cpp:651 src/libslic3r/PrintConfig.cpp:72 +#: src/libslic3r/PrintConfig.cpp:209 src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Layers and Perimeters" msgstr "Schichten und Konturen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Layers Slider" msgstr "Schichtenschieber" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" msgstr "Boden" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Top" msgstr "Decke" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/Preferences.cpp:440 +msgid "Layout Options" +msgstr "Layout-Optionen" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 +msgid "Leaving Paint-on supports" +msgstr "Verlasse Aufmal-Stützen" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 +msgid "Leaving Seam painting" +msgstr "Verlasse Aufmal-Nähte" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left" msgstr "Links" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Left click" msgstr "Linker Mausklick" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:29 +msgid "Left mouse button" +msgstr "Linke Maustaste" + +#: src/slic3r/GUI/GLCanvas3D.cpp:233 msgid "Left mouse button:" msgstr "Linke Maustaste:" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left View" msgstr "Anicht von Links" -#: src/slic3r/GUI/GUI_Preview.cpp:257 +#: src/slic3r/GUI/GUI_Preview.cpp:339 msgid "Legend" msgstr "Legende" -#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 +#: src/slic3r/GUI/GUI_Preview.cpp:1480 +msgid "Legend/Estimated printing time" +msgstr "Legende/geschätzte Druckzeit" + +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 msgid "Length" msgstr "Länge" -#: src/libslic3r/PrintConfig.cpp:328 +#: src/libslic3r/PrintConfig.cpp:362 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "Länge des Kühlschlauchs, um den Raum für Kühlbewegungen im Inneren zu begrenzen." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:129 +#: src/slic3r/GUI/AboutDialog.cpp:141 msgid "License agreements of all following programs (libraries) are part of application license agreement" msgstr "Lizenzvereinbarungen für alle folgenden Programme (Bibliotheken) sind Teil der Anwendungslizenzvereinbarung" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Lift Z" msgstr "Z Hebung" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:886 msgid "Line" msgstr "Linie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1427 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 msgid "Load" msgstr "Laden" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Load a model" msgstr "Lade ein Modell" -#: src/libslic3r/PrintConfig.cpp:3505 +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Load an model saved with imperial units" +msgstr "Laden eines mit imperialen Einheiten gespeicherten Modells" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Load an SL1 archive" +msgstr "SL1-Archiv laden" + +#: src/libslic3r/PrintConfig.cpp:3710 msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." msgstr "Lädt und speichert Einstellungen im angegebenen Verzeichnis. Dies ist nützlich, um verschiedene Profile zu pflegen oder Konfigurationen aus einem Netzwerkspeicher zu übernehmen." -#: src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3688 msgid "Load config file" msgstr "Lade Konfigurationsdatei" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Lade und füge Konfiguration von ini/amf/3mf/gcode hinzu" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Load configuration from project file" msgstr "Lade Konfiguration aus Projektdatei" -#: src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:3689 msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." msgstr "Lädt die Konfiguration aus der angegebenen Datei. Es kann mehr als einmal verwendet werden, um Optionen aus mehreren Dateien zu laden." -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Load exported configuration file" msgstr "Laden einer exportierten Konfigurationsdatei" -#: src/slic3r/GUI/Plater.cpp:1395 -msgid "Load File" -msgstr "Datei laden" - -#: src/slic3r/GUI/Plater.cpp:1399 -msgid "Load Files" -msgstr "Dateien laden" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Teil laden" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Load presets from a bundle" msgstr "Lade Voreinstellungen aus einer Sammlung" -#: src/slic3r/GUI/Plater.cpp:4575 +#: src/slic3r/GUI/Plater.cpp:4627 msgid "Load Project" msgstr "Projekt laden" -#: src/slic3r/GUI/BedShapeDialog.cpp:102 +#: src/slic3r/GUI/BedShapeDialog.cpp:243 msgid "Load shape from STL..." msgstr "Lade Umriß von STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 src/slic3r/GUI/BedShapeDialog.cpp:405 msgid "Load..." msgstr "Laden..." @@ -4065,19 +4686,27 @@ msgstr "Laden..." msgid "loaded" msgstr "geladen wird" -#: src/slic3r/GUI/Plater.cpp:2426 +#: src/slic3r/GUI/Plater.cpp:2388 msgid "Loaded" msgstr "Geladen" -#: src/slic3r/GUI/Plater.cpp:2273 +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Loading" msgstr "Lade" -#: src/slic3r/GUI/GUI_App.cpp:474 +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" +msgstr "Lade Konfiguration" + +#: src/slic3r/GUI/Plater.cpp:2226 +msgid "Loading file" +msgstr "Lade Datei" + +#: src/slic3r/GUI/GUI_App.cpp:1125 msgid "Loading of a mode view" msgstr "Lade Anzeigemodus" -#: src/slic3r/GUI/GUI_App.cpp:466 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "Loading of current presets" msgstr "Laden der aktuellen Voreinstellungen" @@ -4086,101 +4715,117 @@ msgstr "Laden der aktuellen Voreinstellungen" msgid "Loading repaired model" msgstr "Lade repariertes Modell" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:643 msgid "Loading speed" msgstr "Ladegeschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Loading speed at the start" msgstr "Ladegeschwindigkeit zu Beginn" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:69 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:112 msgid "Local coordinates" msgstr "Lokale Koordinaten" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 msgid "Lock supports under new islands" msgstr "Fixiere Stützen unter neuen Inseln" -#: src/slic3r/GUI/Tab.cpp:3252 +#: src/slic3r/GUI/Tab.cpp:3689 msgid "LOCKED LOCK" msgstr "GESCHLOSSENES SCHLOSS" -#: src/slic3r/GUI/Tab.cpp:3280 +#: src/slic3r/GUI/Tab.cpp:3717 msgid "LOCKED LOCK icon indicates that the settings are the same as the system (or default) values for the current option group" -msgstr "Das Symbol LOCKED LOCK zeigt an, dass die Einstellungen mit den System- (oder Standard-) Werten für die aktuelle Optionsgruppe übereinstimmen" +msgstr "Das Symbol GESCHLOSSENES SCHLOSS zeigt an, dass die Einstellungen mit den System- (oder Standard-) Werten für die aktuelle Optionsgruppe übereinstimmen" -#: src/slic3r/GUI/Tab.cpp:3296 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "LOCKED LOCK icon indicates that the value is the same as the system (or default) value." -msgstr "Das Symbol LOCKED LOCK zeigt an, dass der Wert mit dem System- (oder Standard-) Wert übereinstimmt." +msgstr "Das Symbol GESCHLOSSENES SCHLOSS zeigt an, dass der Wert mit dem System- (oder Standard-) Wert übereinstimmt." -#: src/libslic3r/PrintConfig.cpp:3508 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Logging level" msgstr "Logging-Level" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Loops (minimum)" msgstr "Schleifen (minimal)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower Layer" msgstr "Untere Schicht" -#: src/slic3r/GUI/Tab.cpp:2188 src/slic3r/GUI/Tab.cpp:2273 -#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 -#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 -#: src/libslic3r/PrintConfig.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 +#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 +#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 msgid "Machine limits" msgstr "Maschinengrenzen" -#: src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:3667 +msgid "Machine limits are not set, therefore the print time estimate may not be accurate." +msgstr "Maschinengrenzen sind nicht gesetzt, daher ist die Schätzung der Druckzeit möglicherweise nicht genau." + +#: src/slic3r/GUI/Tab.cpp:3660 +msgid "Machine limits will be emitted to G-code and used to estimate print time." +msgstr "Maschinengrenzen werden im G-Code ausgegeben und zur Schätzung der Druckzeit verwendet." + +#: src/slic3r/GUI/Tab.cpp:3663 +msgid "Machine limits will NOT be emitted to G-code, however they will be used to estimate print time, which may therefore not be accurate as the printer may apply a different set of machine limits." +msgstr "Maschinenlimits werden NICHT im G-Code ausgegeben, sie werden jedoch zur Schätzung der Druckzeit verwendet, die daher möglicherweise nicht genau ist, da der Drucker möglicherweise eine andere Reihe von Maschinenlimits anwendet." + +#: src/slic3r/GUI/Plater.cpp:172 msgid "Manifold" msgstr "Hülle ok" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 msgid "Manual editing" msgstr "Manuelle Bearbeitung" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:180 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 msgid "Masked SLA file exported to %1%" msgstr "Maskierte SLA-Datei exportiert nach %1%" -#: src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1451 msgid "Mate&rial Settings Tab" msgstr "Mate&rial Einstellungen" -#: src/slic3r/GUI/Tab.cpp:3478 src/slic3r/GUI/Tab.cpp:3480 +#: src/slic3r/GUI/Tab.cpp:3894 src/slic3r/GUI/Tab.cpp:3896 msgid "Material" msgstr "Material" -#: src/slic3r/GUI/Tab.hpp:416 +#: src/slic3r/GUI/Tab.hpp:486 msgid "Material Settings" msgstr "Material Einstellungen" -#: src/slic3r/GUI/Plater.cpp:163 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Material Settings Tab" +msgstr "Materialeinstellungsreiter" + +#: src/slic3r/GUI/Plater.cpp:169 msgid "Materials" msgstr "Material" -#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 msgid "Max" msgstr "Max" -#: src/libslic3r/PrintConfig.cpp:2734 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max bridge length" msgstr "Max Überbrückungslänge" -#: src/libslic3r/PrintConfig.cpp:2658 +#: src/libslic3r/PrintConfig.cpp:2812 msgid "Max bridges on a pillar" msgstr "Max Brücken auf einem Pfeiler" -#: src/libslic3r/PrintConfig.cpp:2822 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Max merge distance" msgstr "Maximaler Zusammenfügeabstand" -#: src/libslic3r/PrintConfig.cpp:2743 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Max pillar linking distance" msgstr "Max. Pfeiler Verbindungsabstand" @@ -4188,7 +4833,7 @@ msgstr "Max. Pfeiler Verbindungsabstand" msgid "Max print height" msgstr "Max. Druckhöhe" -#: src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1345 msgid "Max print speed" msgstr "Maximale Druckgeschwindigkeit" @@ -4196,171 +4841,189 @@ msgstr "Maximale Druckgeschwindigkeit" msgid "max PrusaSlicer version" msgstr "max PrusaSlicer Version" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Max volumetric slope negative" msgstr "Max. volumetrische Steigung negativ" -#: src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "Max volumetric slope positive" msgstr "Max. volumetrische Steigung positiv" -#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 +#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 msgid "Max volumetric speed" msgstr "Maximale Volumengeschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2411 msgid "Maximal bridging distance" msgstr "Maximaler Überbrückungsabstand" -#: src/libslic3r/PrintConfig.cpp:2269 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Maximal distance between supports on sparse infill sections." msgstr "Maximalabstand zwischen Stützen auf spärlichen Infill-Abschnitten." -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1253 msgid "Maximum acceleration E" msgstr "Maximale Beschleunigung E" -#: src/libslic3r/PrintConfig.cpp:1151 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Maximum acceleration of the E axis" msgstr "Maximale Beschleunigung der E-Achse" -#: src/libslic3r/PrintConfig.cpp:1148 +#: src/libslic3r/PrintConfig.cpp:1256 msgid "Maximum acceleration of the X axis" msgstr "Maximale Beschleunigung der X-Achse" -#: src/libslic3r/PrintConfig.cpp:1149 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Maximum acceleration of the Y axis" msgstr "Maximale Beschleunigung der Y-Achse" -#: src/libslic3r/PrintConfig.cpp:1150 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Maximum acceleration of the Z axis" msgstr "Maximale Beschleunigung der Z-Achse" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Maximum acceleration when extruding" msgstr "Maximale Beschleunigung beim Extrudieren" -#: src/libslic3r/PrintConfig.cpp:1200 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Maximale Beschleunigung beim Extrudieren (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Maximum acceleration when retracting" msgstr "Maximale Beschleunigung beim Einzug" -#: src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1318 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Maximale Beschleunigung beim Einzug (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Maximum acceleration X" msgstr "Maximale Beschleunigung X" -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Maximum acceleration Y" msgstr "Maximale Beschleunigung Y" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "Maximum acceleration Z" msgstr "Maximale Beschleunigung Z" -#: src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2391 msgid "Maximum accelerations" msgstr "Maximale Beschleunigungen" -#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 +#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 msgid "Maximum exposure time" msgstr "Maximale Belichtungszeit" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1236 msgid "Maximum feedrate E" msgstr "Maximaler Vorschub E" -#: src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "Maximum feedrate of the E axis" msgstr "Maximaler Vorschub auf der E-Achse" -#: src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Maximum feedrate of the X axis" msgstr "Maximaler Vorschub auf der X-Achse" -#: src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Maximum feedrate of the Y axis" msgstr "Maximaler Vorschub auf der Y-Achse" -#: src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Maximum feedrate of the Z axis" msgstr "Maximaler Vorschub auf der Z-Achse" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Maximum feedrate X" msgstr "Maximaler Vorschub X" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Maximum feedrate Y" msgstr "Maximaler Vorschub Y" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1235 msgid "Maximum feedrate Z" msgstr "Maximaler Vorschub Z" -#: src/slic3r/GUI/Tab.cpp:2217 +#: src/slic3r/GUI/Tab.cpp:2386 msgid "Maximum feedrates" msgstr "Maximaler Vorschub" -#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 msgid "Maximum initial exposure time" msgstr "Maximale Anfang-Belichtungszeit" -#: src/libslic3r/PrintConfig.cpp:1162 +#: src/libslic3r/PrintConfig.cpp:1270 msgid "Maximum jerk E" msgstr "Maximaler Ruck E" -#: src/libslic3r/PrintConfig.cpp:1168 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Maximum jerk of the E axis" msgstr "Maximaler Ruck auf der E-Achse" -#: src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1273 msgid "Maximum jerk of the X axis" msgstr "Maximaler Ruck auf der X-Achse" -#: src/libslic3r/PrintConfig.cpp:1166 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "Maximum jerk of the Y axis" msgstr "Maximaler Ruck auf der Y-Achse" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1275 msgid "Maximum jerk of the Z axis" msgstr "Maximaler Ruck auf der Z-Achse" -#: src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Maximum jerk X" msgstr "Maximaler Ruck X" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Maximum jerk Y" msgstr "Maximaler Ruck Y" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1269 msgid "Maximum jerk Z" msgstr "Maximaler Ruck Z" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2814 msgid "Maximum number of bridges that can be placed on a pillar. Bridges hold support point pinheads and connect to pillars as small branches." msgstr "Maximale Anzahl von Brücken, die auf einen Pfeiler gesetzt werden können. Brücken halten Stützpunkt-Nadelköpfe und verbinden sich als kleine Äste mit den Pfeilern." -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:634 msgid "Maximum volumetric speed allowed for this filament. Limits the maximum volumetric speed of a print to the minimum of print and filament volumetric speed. Set to zero for no limit." msgstr "Maximale volumetrische Geschwindigkeit, die für dieses Filament zulässig ist. Begrenzt die maximale volumetrische Geschwindigkeit eines Drucks auf das Minimum von Druck- und Filament-Volumengeschwindigkeit. Wird auf null gesetzt, wenn es keine Begrenzung gibt." -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2569 src/libslic3r/PrintConfig.cpp:3641 msgid "Merge" msgstr "Zusammenfügen" -#: src/libslic3r/PrintConfig.cpp:2683 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +msgid "Merge all parts to the one single object" +msgstr "Alle Teile zu einem einzigen Objekt zusammenfügen" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Merge objects to the one multipart object" +msgstr "Objekte zu einem mehrteiligen Objekt zusammenführen" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +msgid "Merge objects to the one single object" +msgstr "Objekte zu einem einzigen Objekt zusammenführen" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +msgid "Merged" +msgstr "Zusammengeführt" + +#: src/libslic3r/PrintConfig.cpp:2847 msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." msgstr "Das Zusammenfügen von Brücken oder Säulen in andere Säulen kann den Radius vergrößern. Null bedeutet keine Erhöhung, eins bedeutet volle Erhöhung." -#: src/libslic3r/SLAPrintSteps.cpp:64 +#: src/libslic3r/SLAPrintSteps.cpp:65 msgid "Merging slices and calculating statistics" msgstr "Zusammenführung der Slices und Berechnung der Statistiken" @@ -4368,15 +5031,15 @@ msgstr "Zusammenführung der Slices und Berechnung der Statistiken" msgid "Mesh repair failed." msgstr "Netzreparatur fehlgeschlagen." -#: src/slic3r/GUI/DoubleSlider.cpp:1635 +#: src/slic3r/GUI/DoubleSlider.cpp:1831 msgid "Message for pause print on current layer (%1% mm)." msgstr "Meldung für die Druckpause auf der aktuellen Schicht (%1% mm)." -#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 msgid "Min" msgstr "Min" -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Min print speed" msgstr "Minimale Druckgeschwindigkeit" @@ -4384,232 +5047,237 @@ msgstr "Minimale Druckgeschwindigkeit" msgid "min PrusaSlicer version" msgstr "min PrusaSlicer Version" -#: src/libslic3r/PrintConfig.cpp:2772 +#: src/libslic3r/PrintConfig.cpp:2936 msgid "Minimal distance of the support points" msgstr "Minimaler Abstand der Stützpunkte" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1414 msgid "Minimal filament extrusion length" msgstr "Minimale Filament Extrusionlänge" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 msgid "Minimal points distance" msgstr "Minimaler Prunktabstand" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Minimal purge on wipe tower" msgstr "Minimale Wischmenge im Wischturm" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:221 msgid "Minimum bottom shell thickness" msgstr "Minimale Stärke der Bodenschale" -#: src/slic3r/GUI/PresetHints.cpp:339 +#: src/slic3r/GUI/PresetHints.cpp:337 msgid "Minimum bottom shell thickness is %1% mm." msgstr "Die Mindeststärke der Bodenschale beträgt %1% mm." -#: src/libslic3r/PrintConfig.cpp:1512 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." msgstr "Minimale Detailauflösung, die verwendet wird, um die Eingabedatei zu vereinfachen, um den Slicingjob zu beschleunigen und den Speicherverbrauch zu reduzieren. Hochauflösende Modelle weisen oft mehr Details auf, als der Drucker wiedergeben kann. Setzen Sie den Wert auf Null, um die Vereinfachung zu deaktivieren und die volle Auflösung des Eingangsdatei zu verwenden." -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 +#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 msgid "Minimum exposure time" msgstr "Minimale Belichtungszeit" -#: src/libslic3r/PrintConfig.cpp:1178 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Minimum feedrate when extruding" msgstr "Maximaler Vorschub bei Extrusion" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1288 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Minimaler Vorschub beim Extrudieren (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2234 +#: src/slic3r/GUI/Tab.cpp:2403 msgid "Minimum feedrates" msgstr "Minimaler Vorschub" -#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 msgid "Minimum initial exposure time" msgstr "Minimale Anfang-Belichtungszeit" -#: src/slic3r/GUI/Tab.cpp:1069 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Minimum shell thickness" msgstr "Minimale Schalenstärke" -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 msgid "Minimum thickness of a top / bottom shell" msgstr "Mindeststärke einer Ober-/Bodenschale" -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2289 msgid "Minimum top shell thickness" msgstr "Mindeststärke der oberen Schale" -#: src/slic3r/GUI/PresetHints.cpp:320 +#: src/slic3r/GUI/PresetHints.cpp:318 msgid "Minimum top shell thickness is %1% mm." msgstr "Die Mindeststärke der Oberschale beträgt %1% mm." -#: src/libslic3r/PrintConfig.cpp:1522 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Minimum travel after retraction" msgstr "Minimalbewegung nach Einziehen" -#: src/libslic3r/PrintConfig.cpp:1188 +#: src/libslic3r/PrintConfig.cpp:1296 msgid "Minimum travel feedrate" msgstr "Minimaler Vorschub im Eilgang" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Minimum travel feedrate (M205 T)" msgstr "Minimaler Vorschub im Eilgang (M205 T)" -#: src/libslic3r/PrintConfig.cpp:2917 +#: src/libslic3r/PrintConfig.cpp:3081 msgid "Minimum wall thickness of a hollowed model." msgstr "Mindestwandstärke eines ausgehöhlten Modells." -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2592 msgid "Minimum width of features to maintain when doing elephant foot compensation." msgstr "Mindestbreite der Merkmale, die bei der Kompensation des Elefantenfußes einzuhalten sind." -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror" msgstr "Spiegeln" -#: src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Mirror horizontally" msgstr "Horizontal spiegeln" -#: src/slic3r/GUI/GLCanvas3D.cpp:2053 +#: src/slic3r/GUI/GLCanvas3D.cpp:2226 msgid "Mirror Object" msgstr "Objekt spiegeln" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror the selected object" msgstr "Ausgewähltes Objekt spiegeln" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Mirror the selected object along the X axis" msgstr "Ausgewähltes Objekt entlang der X-Achse spiegeln" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Mirror the selected object along the Y axis" msgstr "Ausgewähltes Objekt entlang der Y-Achse spiegeln" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Mirror the selected object along the Z axis" msgstr "Ausgewähltes Objekt entlang der Z-Achse spiegeln" -#: src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2529 msgid "Mirror vertically" msgstr "Vertikal spiegeln" -#: src/slic3r/Utils/AstroBox.cpp:68 src/slic3r/Utils/OctoPrint.cpp:68 +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:68 #, c-format msgid "Mismatched type of print host: %s" msgstr "Nicht übereinstimmender Typ des Druckhosts: %s" -#: src/libslic3r/ExtrusionEntity.cpp:323 +#: src/libslic3r/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 msgid "Mixed" msgstr "Gemischt" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "ml" msgstr "ml" -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 -#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 src/slic3r/GUI/GUI_ObjectLayers.cpp:145 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 #: src/slic3r/GUI/WipeTowerDialog.cpp:85 src/libslic3r/PrintConfig.cpp:75 -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:91 -#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 -#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 -#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 -#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 -#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 -#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 -#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 -#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 -#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 -#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 -#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 -#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 -#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 -#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 -#: src/libslic3r/PrintConfig.cpp:2695 src/libslic3r/PrintConfig.cpp:2705 -#: src/libslic3r/PrintConfig.cpp:2717 src/libslic3r/PrintConfig.cpp:2737 -#: src/libslic3r/PrintConfig.cpp:2747 src/libslic3r/PrintConfig.cpp:2757 -#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2790 -#: src/libslic3r/PrintConfig.cpp:2804 src/libslic3r/PrintConfig.cpp:2815 -#: src/libslic3r/PrintConfig.cpp:2828 src/libslic3r/PrintConfig.cpp:2873 -#: src/libslic3r/PrintConfig.cpp:2883 src/libslic3r/PrintConfig.cpp:2892 -#: src/libslic3r/PrintConfig.cpp:2902 src/libslic3r/PrintConfig.cpp:2918 -#: src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:124 src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 +#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 +#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 +#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 msgid "mm" msgstr "mm" -#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 +#: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" msgstr "mm (null eingeben zum Deaktivieren)" -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 -#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 +#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "mm or %" msgstr "mm oder %" -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 -#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 -#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 +#: src/libslic3r/PrintConfig.cpp:271 src/libslic3r/PrintConfig.cpp:645 +#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:662 +#: src/libslic3r/PrintConfig.cpp:670 src/libslic3r/PrintConfig.cpp:697 +#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2297 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 msgid "mm/s or %" msgstr "mm/s oder %" -#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 -#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 +#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:708 msgid "mm³" msgstr "mm³" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "mm³/s" msgstr "mm³/s" -#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 msgid "mm³/s²" msgstr "mm³/s²" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 msgid "Mode" msgstr "&Modus" @@ -4617,7 +5285,7 @@ msgstr "&Modus" msgid "model" msgstr "Modell" -#: src/slic3r/GUI/BedShapeDialog.cpp:251 +#: src/slic3r/GUI/BedShapeDialog.cpp:395 msgid "Model" msgstr "Modell" @@ -4646,99 +5314,125 @@ msgstr "Modellreparatur beendet" msgid "Model repaired successfully" msgstr "Modellreparatur erfolgreich" -#: src/slic3r/GUI/Tab.cpp:979 +#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +msgctxt "Mode" +msgid "Advanced" +msgstr "Erweitert" + +#: src/slic3r/GUI/Tab.cpp:1241 msgid "Modifications to the current profile will be saved." msgstr "Änderungen am aktuellen Profil werden gespeichert." -#: src/slic3r/GUI/Preset.cpp:247 +#: src/slic3r/GUI/GUI_App.cpp:1425 msgid "modified" msgstr "geändert" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Modifier" msgstr "Veränderer" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1491 msgid "Modifiers" msgstr "Veränderer" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2655 msgid "money/bottle" msgstr "Kosten/Flasche" -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:798 msgid "money/kg" msgstr "Kosten/kg" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:461 +msgid "Monotonic" +msgstr "Monotonisch" + +#: src/slic3r/GUI/NotificationManager.cpp:305 +#: src/slic3r/GUI/NotificationManager.cpp:315 +msgid "More" +msgstr "Mehr" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Mouse wheel" msgstr "Mausrad" -#: src/slic3r/GUI/GLCanvas3D.cpp:261 +#: src/slic3r/GUI/GLCanvas3D.cpp:249 msgid "Mouse wheel:" msgstr "Mausrad:" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:64 msgid "Move" msgstr "Bewegen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Beschnittebene bewegen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Move current slider thumb Down" msgstr "Bewege aktuellen Schieberegler nach unten" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +msgid "Move current slider thumb Left" +msgstr "Bewege aktuellen Schieberegler nach links" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 +msgid "Move current slider thumb Right" +msgstr "Bewege aktuellen Schieberegler nach rechts" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Move current slider thumb Up" msgstr "Bewege aktuellen Schieberegler nach oben" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1059 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:835 msgid "Move drainage hole" msgstr "Drainageloch bewegen" -#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Objekt bewegen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 msgid "Move point" msgstr "Punkt bewegen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 msgid "Move selection 10 mm in negative X direction" msgstr "Auswahl 10 mm in negativer X-Richtung verschieben" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 msgid "Move selection 10 mm in negative Y direction" msgstr "Auswahl 10 mm in negativer Y-Richtung verschieben" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 msgid "Move selection 10 mm in positive X direction" msgstr "Auswahl 10 mm in positiver X-Richtung verschieben" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Move selection 10 mm in positive Y direction" msgstr "Auswahl 10 mm in positiver Y-Richtung verschieben" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1097 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:955 msgid "Move support point" msgstr "Stützpunkt bewegen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/GCodeViewer.cpp:2492 +msgid "Movement" +msgstr "Bewegung" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Movement in camera space" msgstr "Bewegung im Kameraraum" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 msgid "Movement step set to 1 mm" msgstr "Bewegungsschritt auf 1 mm eingestellt" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." msgstr "Multi-Material-Drucker müssen eventuell Extruder bei Werkzeugwechseln vor- oder nachspülen. Extrudieren Sie das überschüssige Material in den Reinigungsturm." -#: src/slic3r/GUI/Plater.cpp:2360 src/slic3r/GUI/Plater.cpp:2413 +#: src/slic3r/GUI/Plater.cpp:2322 src/slic3r/GUI/Plater.cpp:2375 msgid "Multi-part object detected" msgstr "Objekt mit mehreren Teilen erkannt" @@ -4747,11 +5441,11 @@ msgstr "Objekt mit mehreren Teilen erkannt" msgid "Multiple %s devices found. Please only connect one at a time for flashing." msgstr "Mehrere %s Geräte gefunden. Bitte immer nur eins zum Flashen anschließen." -#: src/slic3r/GUI/Tab.cpp:1179 +#: src/slic3r/GUI/Tab.cpp:1509 msgid "Multiple Extruders" msgstr "Mehrere Extruder" -#: src/slic3r/GUI/Plater.cpp:2410 +#: src/slic3r/GUI/Plater.cpp:2372 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -4761,36 +5455,41 @@ msgstr "" "Soll ich, anstatt sie als mehrere Objekte zu betrachten, \n" "diese Dateien als ein einzelnes Objekt mit mehreren Teilen behandeln?" -#: src/libslic3r/PrintConfig.cpp:3439 +#: src/libslic3r/PrintConfig.cpp:3638 msgid "Multiply copies by creating a grid." msgstr "Multiple Kopien durch Erstellen eines Rasters." -#: src/libslic3r/PrintConfig.cpp:3434 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Multiply copies by this factor." msgstr "Mehrfache Kopien mit diesem Faktor." -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:580 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "N.V." -#: src/slic3r/GUI/GUI_ObjectList.cpp:270 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "Name" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:114 +msgid "Name of the printer" +msgstr "Name des Druckers" + +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." msgstr "Name der Druckervariante. Beispielsweise können die Druckervarianten durch einen Düsendurchmesser unterschieden werden." -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1590 msgid "Name of the printer vendor." msgstr "Name des Druckerherstellers." -#: src/libslic3r/PrintConfig.cpp:1058 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Name of the profile, from which this profile inherits." msgstr "Name des Profils, von dem dieses Profil abgeleitet wurde." -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "Nearest" msgstr "Nächste" @@ -4798,14 +5497,30 @@ msgstr "Nächste" msgid "Network lookup" msgstr "Network Lookup" -#: src/slic3r/GUI/Plater.cpp:2151 +#: src/slic3r/GUI/Preferences.cpp:430 +msgid "New layout, access via settings button in the top menu" +msgstr "Neues Layout, Zugang über die Schaltfläche Einstellungen im oberen Menü" + +#: src/slic3r/GUI/Plater.cpp:2056 msgid "New Project" msgstr "Neues Projekt" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "New project, clear plater" msgstr "Neues Projekt, Druckplatte leeren" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 +msgid "New Value" +msgstr "Neuer Wert" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 +msgid "New value" +msgstr "Neuer Wert" + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "New version is available." +msgstr "Eine neue Version ist verfügbar." + #: src/slic3r/GUI/UpdateDialogs.cpp:38 #, c-format msgid "New version of %s is available" @@ -4815,23 +5530,23 @@ msgstr "Eine neue Version von %s ist verfügbar" msgid "New version:" msgstr "Neue Version:" -#: src/slic3r/GUI/GLCanvas3D.cpp:4673 +#: src/slic3r/GUI/GLCanvas3D.cpp:5089 msgid "Next Redo action: %1%" msgstr "Nächste Redo Aktion: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:4641 +#: src/slic3r/GUI/GLCanvas3D.cpp:5051 msgid "Next Undo action: %1%" msgstr "Nächste Undo-Aktion: %1%" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:1004 msgid "No extrusion" msgstr "Keine Extrusion" -#: src/libslic3r/SLAPrintSteps.cpp:453 +#: src/libslic3r/SLAPrintSteps.cpp:451 msgid "No pad can be generated for this model with the current configuration" msgstr "Für dieses Modell kann mit der aktuellen Konfiguration keine Grundschicht generiert werden" -#: src/slic3r/GUI/MainFrame.cpp:784 +#: src/slic3r/GUI/MainFrame.cpp:1485 msgid "No previously sliced file." msgstr "Keine vorher gesclicete Datei." @@ -4839,175 +5554,221 @@ msgstr "Keine vorher gesclicete Datei." msgid "NO RAMMING AT ALL" msgstr "ÜBERHAUPT KEIN RAMMEN" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1999 msgid "No sparse layers (EXPERIMENTAL)" msgstr "Keine spärlichen Schichten (EXPERIMENTELL)" -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2938 msgid "No support points will be placed closer than this threshold." msgstr "Es werden keine Stützpunkte näher als dieser Schwellenwert platziert." -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "No updates available" msgstr "Keine Updates verfügbar" -#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 -#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 -#: src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 +#: src/libslic3r/ExtrusionEntity.cpp:312 msgid "None" msgstr "Kein" -#: src/slic3r/GUI/Tab.cpp:2203 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 msgid "Normal" msgstr "Normal" -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 msgid "normal mode" msgstr "Normaler Modus" -#: src/libslic3r/Zipper.cpp:46 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 +msgid "Normal mode" +msgstr "Normaler Modus" + +#: src/libslic3r/miniz_extension.cpp:105 msgid "not a ZIP archive" msgstr "kein ZIP Archiv" -#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +#: src/slic3r/GUI/BedShapeDialog.cpp:366 src/slic3r/GUI/BedShapeDialog.cpp:446 msgid "Not found:" msgstr "Nicht gefunden:" -#: src/slic3r/GUI/DoubleSlider.cpp:1019 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Note" msgstr "Hinweis" -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Note, that selected preset will be deleted from this/those printer(s) too." +msgstr "Beachten Sie, dass die ausgewählte Voreinstellung auch von diesem/diesen Drucker(n) gelöscht wird." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Note, that this/those printer(s) will be deleted after deleting of the selected preset." +msgstr "Beachten Sie, dass dieser/diese Drucker nach dem Löschen der ausgewählten Voreinstellung gelöscht werden." + +#: src/slic3r/GUI/Tab.cpp:2039 +msgid "" +"Note: All parameters from this group are moved to the Physical Printer settings (see changelog).\n" +"\n" +"A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored into PrusaSlicer/physical_printer directory." +msgstr "" +"Hinweis: Alle Parameter aus dieser Gruppe werden in die Einstellungen des physischen Druckers verschoben (siehe Changelog).\n" +"\n" +"Ein neues physisches Druckerprofil wird erstellt, indem man auf das \"Zahnrad\"-Symbol rechts vom Auswahlfeld \"Druckerprofile\" klickt, indem man den Punkt \"Physischen Drucker hinzufügen\" im Auswahlfeld \"Drucker\" auswählt. Der Profil-Editor für physische Drucker wird auch durch Klicken auf das \"Zahnrad\"-Symbol in der Registerkarte \"Druckereinstellungen\" geöffnet. Die Profile des physischen Druckers werden im Verzeichnis PrusaSlicer/physical_printer gespeichert." + +#: src/slic3r/Utils/AstroBox.cpp:92 msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "Hinweis: Die AstroBox-Version 1.1.0 oder höher ist erforderlich." -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:76 msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "Hinweis: FlashAir mit Firmware 2.00.02 oder neuer und aktivierter Upload-Funktion ist erforderlich." -#: src/slic3r/Utils/OctoPrint.cpp:89 +#: src/slic3r/Utils/OctoPrint.cpp:91 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Hinweis: Es ist mindestens die OctoPrint-Version 1.1.0 erforderlich." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1345 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1192 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Hinweis: Einige Tastenkombinationen funktionieren nur im (Nicht-)Bearbeitungsmodus." -#: src/slic3r/GUI/Tab.cpp:1251 src/slic3r/GUI/Tab.cpp:1252 -#: src/slic3r/GUI/Tab.cpp:1540 src/slic3r/GUI/Tab.cpp:1541 -#: src/slic3r/GUI/Tab.cpp:2012 src/slic3r/GUI/Tab.cpp:2013 -#: src/slic3r/GUI/Tab.cpp:2128 src/slic3r/GUI/Tab.cpp:2129 -#: src/slic3r/GUI/Tab.cpp:3535 src/slic3r/GUI/Tab.cpp:3536 +#: src/slic3r/GUI/SavePresetDialog.cpp:151 +msgid "Note: This preset will be replaced after saving" +msgstr "Hinweis: Diese Voreinstellung wird nach dem Speichern ersetzt" + +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 +#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 msgid "Notes" msgstr "Anmerkungen" -#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 -#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:245 +#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "Hinweis" -#: src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:236 msgid "nozzle" msgstr "Düse" -#: src/slic3r/GUI/Tab.cpp:1870 src/slic3r/GUI/Tab.cpp:2340 -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/slic3r/GUI/Tab.cpp:1790 +msgid "Nozzle" +msgstr "Düse" + +#: src/slic3r/GUI/ConfigWizard.cpp:1392 +msgid "Nozzle and Bed Temperatures" +msgstr "Düsen- und Bett-Temperaturen" + +#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "Nozzle diameter" msgstr "Düsendurchmesser" -#: src/slic3r/GUI/ConfigWizard.cpp:969 +#: src/slic3r/GUI/ConfigWizard.cpp:1335 msgid "Nozzle Diameter:" msgstr "Düsendurchmesser:" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:2201 +msgid "Nozzle temperature" +msgstr "Düsentemperatur" + +#: src/libslic3r/PrintConfig.cpp:2198 +msgid "Nozzle temperature for layers after the first one. Set this to zero to disable temperature control commands in the output G-code." +msgstr "Düsentemperatur für Schichten nach der ersten. Setzen Sie diesen Wert auf Null, um Temperatursteuerungsbefehle im ausgegebenen G-Code zu deaktivieren." + +#: src/libslic3r/PrintConfig.cpp:961 +msgid "Nozzle temperature for the first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output G-code." +msgstr "Düsentemperatur für die erste Schicht. Wenn Sie die Temperatur während des Drucks manuell steuern möchten, setzen Sie diesen Wert auf Null, um Temperatursteuerungsbefehle im ausgegebenen G-Code zu deaktivieren." + +#: src/libslic3r/PrintConfig.cpp:686 msgid "Number of cooling moves" msgstr "Anzahl der Kühlbewegungen" -#: src/slic3r/GUI/Tab.cpp:1839 +#: src/slic3r/GUI/Tab.cpp:2073 msgid "Number of extruders of the printer." msgstr "Anzahl der Extruder des Druckers." -#: src/libslic3r/PrintConfig.cpp:1975 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Number of interface layers to insert between the object(s) and support material." msgstr "Anzahl der Schnittstellenschichten, die zwischen Objekt(en) und Trägermaterial eingefügt werden sollen." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1812 msgid "Number of loops for the skirt. If the Minimum Extrusion Length option is set, the number of loops might be greater than the one configured here. Set this to zero to disable skirt completely." msgstr "Anzahl der Schleifen für die Schürze. Wenn die Option Minimale Extrusionslänge gesetzt ist, kann die Anzahl der Schleifen größer sein als die hier konfigurierte. Setzen Sie diesen Wert auf null, um die Schürze komplett zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2508 msgid "Number of pixels in" msgstr "Anzahl an Pixeln in" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2510 msgid "Number of pixels in X" msgstr "Anzahl an Pixeln in X" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "Number of pixels in Y" msgstr "Anzahl an Pixeln in Y" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:210 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Anzahl der zu erzeugenden massiven Schichten auf der Bodenfläche." -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "Anzahl der zu erzeugenden massiven Schichten auf der Ober- und Unterseite." -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "Number of solid layers to generate on top surfaces." msgstr "Anzahl der zu erzeugenden massiven Schichten auf der Oberseite." -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" msgstr "Anzahl der für die Reduzierung der Belichtungszeit benötigten Schichten, von der anfänglichen bis zur Belichtungszeit" -#: src/slic3r/GUI/Plater.cpp:241 +#: src/slic3r/GUI/Plater.cpp:247 msgid "Number of tool changes" msgstr "Anzahl der Werkzeugwechsel" -#: src/libslic3r/PrintConfig.cpp:2753 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:2917 msgid "Object elevation" msgstr "Objekt-Hebung" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2466 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 msgid "Object manipulation" msgstr "Objektbearbeitung" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:623 msgid "Object name" msgstr "Objektname" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3417 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 msgid "Object or Instance" msgstr "Objekt oder Kopie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Object reordered" msgstr "Objekt neu angeordnet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2479 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 msgid "Object Settings to modify" msgstr "Abweichende Objekteigenschaften" -#: src/slic3r/GUI/Plater.cpp:2529 +#: src/slic3r/GUI/Plater.cpp:2491 msgid "Object too large?" msgstr "Objekt zu groß?" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2405 msgid "Object will be used to purge the nozzle after a toolchange to save material that would otherwise end up in the wipe tower and decrease print time. Colours of the objects will be mixed as a result." msgstr "Objekt wird zum Reinigen der Düse nach einem Materialwechsel verwendet, um Material zu sparen, das sonst im Reinigungsturm landen und die Druckzeit verkürzen würde. Die Farben der Objekte werden dabei gemischt." -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "object(s)" msgstr "Objekt(e)" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "objects" msgstr "Objekte" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 msgid "Octagram Spiral" msgstr "Achterstern-Spirale" @@ -5015,64 +5776,97 @@ msgstr "Achterstern-Spirale" msgid "OctoPrint version" msgstr "OctoPrint Version" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3425 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 msgid "of a current Object" msgstr "des aktuellen Objekts" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 msgid "Offset" msgstr "Offset" -#: src/slic3r/GUI/Tab.cpp:1755 +#: src/slic3r/GUI/Preferences.cpp:422 +msgid "Old regular layout with the tab bar" +msgstr "Altes reguläres Layout mit der Registerleiste" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:608 +msgid "Old Value" +msgstr "Alter Wert" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1177 +msgid "Old value" +msgstr "Alter Wert" + +#: src/slic3r/GUI/Preferences.cpp:123 +msgid "On OSX there is always only one instance of app running by default. However it is allowed to run multiple instances of same app from the command line. In such case this settings will allow only one instance." +msgstr "Unter OSX wird standardmäßig immer nur eine Instanz der Anwendung ausgeführt. Es ist jedoch erlaubt, mehrere Instanzen derselben Anwendung von der Befehlszeile aus auszuführen. In einem solchen Fall erlauben diese Einstellungen nur eine Instanz." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 #, c-format msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "Auf diesem System verwendet %s HTTPS-Zertifikate aus dem System Zertifikatsspeicher oder Schlüsselbund." -#: src/slic3r/GUI/DoubleSlider.cpp:950 +#: src/slic3r/GUI/DoubleSlider.cpp:1064 msgid "One layer mode" msgstr "Eine Schicht Modus" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1391 msgid "One or more object were assigned an extruder that the printer does not have." msgstr "Eines oder mehrere Objekte wurden einem Extruder zugewiesen, der auf diesem Drucker nicht vorhanden ist." -#: src/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2676 +#: src/libslic3r/PrintConfig.cpp:2045 src/libslic3r/PrintConfig.cpp:2840 msgid "Only create support if it lies on a build plate. Don't create support on a print." msgstr "Nur dann Stützen schaffen, wenn sie auf der Druckplattform aufbauen. Erstellt keine Stützstrukturen, die auf dem Ausdruck gründen würden." -#: src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Only infill where needed" msgstr "Infill nur wo es notwendig ist drucken" -#: src/slic3r/GUI/Tab.cpp:2373 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Only lift Z" msgstr "Nur Z anheben" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1678 msgid "Only lift Z above" msgstr "Z nur Anheben über" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Only lift Z below" msgstr "Z anheben nur unter" -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Only retract when crossing perimeters" msgstr "Nur bei Umfangsüberquerungen einziehen" -#: src/slic3r/GUI/Tab.cpp:1187 +#: src/slic3r/GUI/ConfigWizard.cpp:714 +msgid "Only the following installed printers are compatible with the selected filament:" +msgstr "Nur die folgenden installierten Drucker sind mit dem ausgewählten Filament kompatibel:" + +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Ooze prevention" msgstr "Vermeidung von Nachsickern (Ooze)" -#: src/libslic3r/Print.cpp:1266 +#: src/libslic3r/Print.cpp:1292 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "Die Sickervermeidung wird derzeit nicht unterstützt, wenn der Wischturm aktiviert ist." -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open &PrusaSlicer" +msgstr "Öffne &PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "Open a G-code file" +msgstr "Öffne eine G-Code-Datei" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 +#: src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open a new PrusaSlicer instance" +msgstr "Öffne eine neue PrusaSlicer-Instanz" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "Open a project file" msgstr "Öffne eine Projektdatei" -#: src/slic3r/GUI/Tab.cpp:1729 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 msgid "Open CA certificate file" msgstr "Open CA Zertifikat Datei" @@ -5085,116 +5879,150 @@ msgstr "Änderungsseite öffnen" msgid "Open download page" msgstr "Downloadseite öffnen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/NotificationManager.cpp:742 +msgid "Open Folder." +msgstr "Öffne Ordner." + +#: src/slic3r/Utils/Process.cpp:151 +msgid "Open G-code file:" +msgstr "Öffne G-Code-Datei:" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +msgid "Open G-code viewer" +msgstr "G-Code-Viewer öffnen" + +#: src/slic3r/GUI/MainFrame.cpp:79 +msgid "Open new G-code viewer" +msgstr "Neuen G-Code-Viewer öffnen" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open new instance" +msgstr "Neue Instanz öffnen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "Öffne Projekt STL/OBJ/AMF/3MF mit Konfiguration, Druckplatte leeren" -#: src/slic3r/GUI/MainFrame.cpp:693 +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open PrusaSlicer" +msgstr "PrusaSlicer öffnen" + +#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 #, c-format msgid "Open the %s website in your browser" msgstr "%s-Website in Ihrem Browser öffnen" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Download-Seite für die Prusa3D-Treiber in Ihrem Browser öffnen" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Open the software releases page in your browser" msgstr "Seite mit Programmversionen in Ihrem Browser öffnen" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 msgid "Optimize orientation" msgstr "Optimiere Ausrichtung" -#: src/slic3r/GUI/Plater.cpp:2767 +#: src/slic3r/GUI/Plater.cpp:1555 msgid "Optimize Rotation" msgstr "Rotation optimieren" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Plater.cpp:3962 msgid "Optimize the rotation of the object for better print results." msgstr "Optimiere die Rotation des Objekts für ein besseres Druckergebnis." -#: src/libslic3r/PrintConfig.cpp:137 +#: src/libslic3r/PrintConfig.cpp:170 msgid "Optimize travel moves in order to minimize the crossing of perimeters. This is mostly useful with Bowden extruders which suffer from oozing. This feature slows down both the print and the G-code generation." msgstr "Optimieren Sie die Verfahrbewegungen, um das Überschreiten von Konturen zu minimieren. Dies ist vor allem bei Bowdenextrudern nützlich, die unter sickerndem Material leiden. Diese Funktion verlangsamt sowohl den Druck als auch die Generierung des G-Codes." -#: src/slic3r/GUI/Tab.cpp:1131 +#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 +#: src/slic3r/GUI/GUI_Preview.cpp:333 +msgid "Options" +msgstr "Optionen" + +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Options for support material and raft" msgstr "Optionen für Stützstrukturen und Raft" -#: src/slic3r/GUI/DoubleSlider.cpp:989 +#: src/slic3r/GUI/Mouse3DController.cpp:315 +msgid "Options:" +msgstr "Optionen:" + +#: src/slic3r/GUI/DoubleSlider.cpp:1112 msgid "or press \"+\" key" msgstr "oder drücken Sie die Taste \"+\"" -#: src/slic3r/GUI/Plater.cpp:2892 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:74 msgid "Orientation found." msgstr "Ausrichtung gefunden." -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:73 msgid "Orientation search canceled." msgstr "Ausrichtungssuche abgebrochen." -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "Origin" msgstr "Nullpunkt" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1557 msgid "Other" msgstr "Sonstige" -#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:2206 msgid "Other layers" msgstr "Andere Schichten" -#: src/slic3r/GUI/ConfigWizard.cpp:856 +#: src/slic3r/GUI/ConfigWizard.cpp:1222 msgid "Other Vendors" msgstr "Andere Hersteller" -#: src/slic3r/GUI/Tab.cpp:1238 src/slic3r/GUI/Tab.cpp:3666 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 msgid "Output file" msgstr "Ausgabedatei" -#: src/libslic3r/PrintConfig.cpp:3493 +#: src/libslic3r/PrintConfig.cpp:3692 msgid "Output File" msgstr "Ausgabedatei" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1471 msgid "Output filename format" msgstr "Ausgabe Dateinamen Format" -#: src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3580 msgid "Output Model Info" msgstr "Ausgabe Modellinformationen" -#: src/slic3r/GUI/Tab.cpp:1230 src/slic3r/GUI/Tab.cpp:3665 +#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 msgid "Output options" msgstr "Ausgabeoptionen" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/libslic3r/ExtrusionEntity.cpp:340 msgid "Overhang perimeter" msgstr "Überhängende Außenkontur" -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Overhang threshold" msgstr "Überhangsschwellwert" -#: src/slic3r/GUI/Tab.cpp:1215 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Overlap" msgstr "Überlappung" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "P&rint Settings Tab" msgstr "D&ruckeinstellungen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:625 -#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3636 -#: src/slic3r/GUI/Tab.cpp:3637 src/libslic3r/PrintConfig.cpp:2781 -#: src/libslic3r/PrintConfig.cpp:2788 src/libslic3r/PrintConfig.cpp:2802 -#: src/libslic3r/PrintConfig.cpp:2813 src/libslic3r/PrintConfig.cpp:2823 -#: src/libslic3r/PrintConfig.cpp:2845 src/libslic3r/PrintConfig.cpp:2856 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:2870 -#: src/libslic3r/PrintConfig.cpp:2881 src/libslic3r/PrintConfig.cpp:2890 -#: src/libslic3r/PrintConfig.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 +#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 +#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 msgid "Pad" msgstr "Grundschicht (Pad)" @@ -5202,150 +6030,186 @@ msgstr "Grundschicht (Pad)" msgid "Pad and Support" msgstr "Grundschicht und Stützen" -#: src/libslic3r/PrintConfig.cpp:2855 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 msgid "Pad around object" msgstr "Grundschicht um Objekt" -#: src/libslic3r/PrintConfig.cpp:2862 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "Pad around object everywhere" msgstr "Grundschicht überall um Objekt" -#: src/libslic3r/PrintConfig.cpp:2811 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Pad brim size" msgstr "Grundschicht Randgröße" -#: src/libslic3r/SLA/Pad.cpp:691 +#: src/libslic3r/SLA/Pad.cpp:532 msgid "Pad brim size is too small for the current configuration." msgstr "Die Randgröße der Grundschicht ist für die aktuelle Konfiguration zu klein." -#: src/libslic3r/PrintConfig.cpp:2898 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Pad object connector penetration" msgstr "Objektgrundschicht Verbindungseindringtiefe" -#: src/libslic3r/PrintConfig.cpp:2880 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector stride" msgstr "Objektgrundschicht Verbindungsschritte" -#: src/libslic3r/PrintConfig.cpp:2889 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector width" msgstr "Objektgrundschicht Verbinderbreite" -#: src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:3033 msgid "Pad object gap" msgstr "Grundschicht Objekt Abstand" -#: src/libslic3r/PrintConfig.cpp:2797 +#: src/libslic3r/PrintConfig.cpp:2961 msgid "Pad wall height" msgstr "Grundschicht Wandhöhe" -#: src/libslic3r/PrintConfig.cpp:2844 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Pad wall slope" msgstr "Grundschicht Wandneigung" -#: src/libslic3r/PrintConfig.cpp:2787 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Pad wall thickness" msgstr "Grundschicht Wandstärke" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Page Down" msgstr "Page Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Page Up" msgstr "Page Up" -#: src/slic3r/GUI/Field.cpp:139 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 +msgid "Paint-on supports" +msgstr "Aufmal-Stützen" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:178 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:159 +msgid "Paints all facets inside, regardless of their orientation." +msgstr "Bemalt alle umfassten Flächen, unabhängig von ihrer Ausrichtung." + +#: src/slic3r/GUI/Field.cpp:187 msgid "parameter name" msgstr "Parametername" -#: src/slic3r/GUI/Field.cpp:243 +#: src/slic3r/GUI/Field.cpp:291 msgid "Parameter validation" msgstr "Parameterüberprüfung" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Part" msgstr "Teil" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2494 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 msgid "Part manipulation" msgstr "Teilbearbeitung" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2483 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 msgid "Part Settings to modify" msgstr "Abweichende Teileigenschaften" -#: src/slic3r/GUI/GLCanvas3D.cpp:4514 +#: src/libslic3r/PrintConfig.cpp:138 +msgid "Password" +msgstr "Kennwort" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4880 msgid "Paste" msgstr "Einfügen" -#: src/slic3r/GUI/MainFrame.cpp:592 +#: src/slic3r/GUI/MainFrame.cpp:1198 msgid "Paste clipboard" msgstr "Aus Zwischenablage einfügen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Paste from clipboard" msgstr "Aus Zwischenablage einfügen" -#: src/slic3r/GUI/Plater.cpp:5606 +#: src/slic3r/GUI/Plater.cpp:5803 msgid "Paste From Clipboard" msgstr "Aus Zwischenablage einfügen" -#: src/libslic3r/PrintConfig.cpp:2002 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Pattern" msgstr "Muster" -#: src/libslic3r/PrintConfig.cpp:1891 +#: src/libslic3r/PrintConfig.cpp:2033 msgid "Pattern angle" msgstr "Muster Winkel" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Pattern spacing" msgstr "Muster Abstand" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "Pattern used to generate support material." msgstr "Unterstützungsmaterialmuster." -#: src/slic3r/GUI/Plater.cpp:1261 +#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 +#: src/slic3r/GUI/Plater.cpp:1199 msgid "Pause" msgstr "Pause" -#: src/slic3r/GUI/DoubleSlider.cpp:1009 +#: src/slic3r/GUI/DoubleSlider.cpp:1133 msgid "Pause print (\"%1%\")" msgstr "Druck pausieren (\"%1%\")" -#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 -#: src/slic3r/GUI/GLCanvas3D.cpp:982 +#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +msgid "Pause Print G-code" +msgstr "Druckpausen G-Code" + +#: src/slic3r/GUI/GLCanvas3D.cpp:940 src/slic3r/GUI/GLCanvas3D.cpp:949 +#: src/slic3r/GUI/GLCanvas3D.cpp:988 msgid "Pause print or custom G-code" msgstr "Druckpausen oder benutzerdefinierter G-Code" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 +#: src/libslic3r/PrintConfig.cpp:1147 +msgid "Percent of a flow rate relative to object's normal layer height." +msgstr "Prozent einer Flussrate relativ zur normalen Schichthöhe des Objekts." + +#: src/slic3r/GUI/GCodeViewer.cpp:2233 +msgid "Percentage" +msgstr "Prozent" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 msgid "Perform cut" msgstr "Schnitt ausführen" -#: src/libslic3r/PrintConfig.cpp:2927 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Performance vs accuracy of calculation. Lower values may produce unwanted artifacts." msgstr "Leistung vs. Genauigkeit der Berechnung. Niedrigere Werte können zu unerwünschten Artefakten führen." -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Perimeter" msgstr "Außenkontur" -#: src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Perimeter extruder" msgstr "Umfang Extruder" -#: src/slic3r/GUI/PresetHints.cpp:165 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "Außenkonturen" -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 -#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 msgid "Perimeters" msgstr "Konturen" -#: src/slic3r/GUI/ConfigWizard.cpp:860 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +msgid "Physical Printer" +msgstr "Physischer Drucker" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:789 +#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +msgid "Physical printers" +msgstr "Physische Drucker" + +#: src/slic3r/GUI/ConfigWizard.cpp:1226 #, c-format msgid "Pick another vendor supported by %s" msgstr "Wählen Sie einen anderen Hersteller, der von %s unterstützt wird" @@ -5354,126 +6218,148 @@ msgstr "Wählen Sie einen anderen Hersteller, der von %s unterstützt wird" msgid "Picture sizes to be stored into a .gcode and .sl1 files" msgstr "Bildgrößen, die in einer.gcode und .sl1 Datei gespeichert werden sollen" -#: src/libslic3r/PrintConfig.cpp:2681 +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "Pillar connection mode" +msgstr "Pfeiler-Verbindungsmodus" + +#: src/libslic3r/PrintConfig.cpp:2791 +msgid "Pillar diameter" +msgstr "Pfeiler-Durchmesser" + +#: src/libslic3r/PrintConfig.cpp:2845 msgid "Pillar widening factor" msgstr "Pfeilerverbreiterungsfaktor" -#: src/slic3r/GUI/ConfigManipulation.cpp:330 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Der Nadelkopfdurchmesser sollte kleiner sein als der Säulendurchmesser." -#: src/slic3r/GUI/DoubleSlider.cpp:79 +#: src/libslic3r/PrintConfig.cpp:2763 +msgid "Pinhead front diameter" +msgstr "Nadelkopf vorderer Durchmesser" + +#: src/libslic3r/PrintConfig.cpp:2781 +msgid "Pinhead width" +msgstr "Nadelkopf Breite" + +#: src/slic3r/GUI/DoubleSlider.cpp:110 msgid "Place bearings in slots and resume printing" msgstr "Lager in Nuten einsetzen und Druck wieder aufnehmen" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 msgid "Place on face" msgstr "Auf Fläche legen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Plater" msgstr "Druckplatte" -#: src/slic3r/GUI/GUI_App.cpp:1085 +#: src/slic3r/GUI/GUI_App.cpp:1877 msgid "Please check and fix your object list." msgstr "Bitte überprüfen und korrigieren Sie Ihre Objektliste." -#: src/slic3r/GUI/Plater.cpp:2312 src/slic3r/GUI/Tab.cpp:2959 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2255 +#: src/slic3r/GUI/Tab.cpp:3188 msgid "Please check your object list before preset changing." msgstr "Bitte überprüfen Sie Ihre Objektliste, bevor Sie die Voreinstellungen ändern." -#: src/slic3r/GUI/Plater.cpp:3286 +#: src/slic3r/GUI/Plater.cpp:3089 msgid "Please select the file to reload" msgstr "Bitte wählen Sie die neu zu ladende Datei aus" -#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 +#: src/slic3r/GUI/AboutDialog.cpp:317 msgid "Portions copyright" msgstr "Teile des Urheberrechts" -#: src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2543 msgid "Portrait" msgstr "Hochformat" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:223 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:505 msgid "Position" msgstr "Position" -#: src/slic3r/GUI/Tab.cpp:2367 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Position (for multi-extruder printers)" msgstr "Position (für Multi-Extruder-Drucker)" -#: src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1731 msgid "Position of perimeters starting points." msgstr "Position des Startpunktes des Umfangs." -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Position X" msgstr "X-Position" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Position Y" msgstr "Y-Position" -#: src/slic3r/GUI/Tab.cpp:1245 src/libslic3r/PrintConfig.cpp:1453 +#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 msgid "Post-processing scripts" msgstr "Nachbearbeitungs Script" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Pre&view" msgstr "&Vorschau" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Preferences.cpp:12 msgid "Preferences" msgstr "Einstellungen" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Preferred direction of the seam" msgstr "Bevorzugte Richtung für die Naht" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam - jitter" msgstr "Bevorzugte Zitterrichtung für die Naht" -#: src/libslic3r/PrintObject.cpp:255 +#: src/libslic3r/PrintObject.cpp:261 msgid "Preparing infill" msgstr "Infill wird vorbereitet" -#: src/slic3r/GUI/Tab.cpp:2920 -#, c-format -msgid "Preset (%s)" -msgstr "Voreinstellung (%s)" +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" +msgstr "Vorbereiten der Einstellungs-Registerkarten" -#: src/slic3r/GUI/Tab.cpp:3082 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 +msgid "Preset \"%1%\" has the following unsaved changes:" +msgstr "Die \"%1%\" Voreinstellung hat die folgenden ungespeicherten Änderungen:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1014 +msgid "Preset \"%1%\" is not compatible with the new print profile and it has the following unsaved changes:" +msgstr "Die \"%1%\" Voreinstellung ist mit dem neuen Druckprofil nicht kompatibel und weist die folgenden ungespeicherten Änderungen auf:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1013 +msgid "Preset \"%1%\" is not compatible with the new printer profile and it has the following unsaved changes:" +msgstr "Die \"%1%\" Voreinstellung ist mit dem neuen Druckerprofil nicht kompatibel und weist die folgenden ungespeicherten Änderungen auf:" + +#: src/slic3r/GUI/SavePresetDialog.cpp:136 +msgid "Preset with name \"%1%\" already exists and is imcopatible with selected printer." +msgstr "Die Voreinstellung mit dem Namen \"%1%\" existiert bereits und ist mit dem ausgewählten Drucker nicht kompatibel." + +#: src/slic3r/GUI/SavePresetDialog.cpp:148 msgid "Preset with name \"%1%\" already exists." msgstr "Eine Voreinstellung mit dem Namen \"%1%\" existiert bereits." -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/SavePresetDialog.cpp:219 msgctxt "PresetName" msgid "Copy" msgstr "Kopieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Drücken um das Abwahlrechteck zu aktivieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "Drücken um Eine-Richtungs-Skalierung im Skalierungsgizmo zu aktivieren" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Press to activate selection rectangle" msgstr "Drücken um das Auswahlrechteck zu aktivieren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 -msgid "" -"Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\n" -"selected objects around their own center" -msgstr "" -"Zum Skalieren drücken (in Gizmo-Skalierung) oder drehen (in Gizmo-Rotation)\n" -"ausgewählter Objekte um ihr eigenes Zentrum herum" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 msgid "" "Press to select multiple objects\n" "or move multiple objects with mouse" @@ -5481,164 +6367,187 @@ msgstr "" "Drücken zum Auswählen des mehrteiligen Objekts \n" "oder Bewegen des mehrteiligen Objekts mit der Maus" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -#, no-c-format +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 msgid "" -"Press to snap by 5% in Gizmo scale\n" -"or to snap by 1mm in Gizmo move" -msgstr "" -"Drücken um mit 5% bei der Gizmo Skalierung zu rasten\n" -"oder mit 1 mm bei der Gizmo Bewegung" +"Press to speed up 5 times while moving thumb\n" +"with arrow keys or mouse wheel" +msgstr "Drücken, um 5 Mal schneller zu werden, während der Regler mit Pfeiltasten oder Mausrad bewegt wird" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4105 -#: src/slic3r/GUI/Tab.cpp:2390 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:2559 msgid "Preview" msgstr "Vorschau" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 msgid "Preview hollowed and drilled model" msgstr "Vorschau des ausgehöhlten und aufgebohrten Modells" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid "Previously sliced file (" msgstr "Vorher geslicete Datei (" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Prime all printing extruders" msgstr "Alle Druckextruder vorfüllen" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1521 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 msgid "print" msgstr "Druck" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +msgid "Print" +msgstr "Druck" + +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Print &Host Upload Queue" msgstr "Druck&host Warteschlange" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:507 msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." msgstr "Drucken Sie Konturumfänge von der äußersten zur innersten Kontur anstatt der standardmäßigen umgekehrten Reihenfolge." -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Print Diameters" msgstr "Druckdurchmesser" -#: src/slic3r/GUI/Tab.cpp:1944 src/slic3r/GUI/Tab.cpp:2123 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 msgid "Print Host upload" msgstr "Hochladen zum Druckhost" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "Druckhost Warteschlange" -#: src/slic3r/GUI/DoubleSlider.cpp:970 +#: src/slic3r/GUI/DoubleSlider.cpp:1093 msgid "Print mode" msgstr "Druckmodus" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 +#: src/slic3r/GUI/GCodeViewer.cpp:2579 src/slic3r/GUI/GUI_Preview.cpp:1476 +msgid "Print pauses" +msgstr "Druckpausen" + +#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 msgid "Print Settings" msgstr "Druckeinstellungen" -#: src/slic3r/GUI/Plater.cpp:815 +#: src/slic3r/GUI/Plater.cpp:690 msgid "Print settings" msgstr "Druckeinstellungen" -#: src/slic3r/GUI/Tab.cpp:1478 +#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Print Settings Tab" +msgstr "Druckeinstellungsreiter" + +#: src/slic3r/GUI/Tab.cpp:1824 msgid "Print speed override" msgstr "Korrektur der Druckgeschwindigkeit" -#: src/libslic3r/GCode.cpp:638 +#: src/libslic3r/GCode.cpp:623 msgid "Print z" msgstr "Druck z" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Print&er Settings Tab" msgstr "Druck&ereinstellungen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Printable" msgstr "Druckbar" -#: src/slic3r/GUI/Plater.cpp:819 +#: src/slic3r/GUI/Plater.cpp:694 msgid "Printer" msgstr "Drucker" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1525 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 msgid "printer" msgstr "Drucker" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 msgid "Printer absolute correction" msgstr "Drucker absolute Korrektur" -#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 msgid "Printer gamma correction" msgstr "Drucker Gammakorrektur" -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1294 msgid "printer model" msgstr "Druckermodell" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Printer notes" msgstr "Drucker Anmerkungen" -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 -#: src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:144 +msgid "Printer preset name" +msgstr "Name der Druckervoreinstellung" + +#: src/libslic3r/PrintConfig.cpp:2574 src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2576 msgid "Printer scaling correction" msgstr "Drucker skalierte Korrektur" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:453 msgid "Printer Settings" msgstr "Druckereinstellungen" +#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +msgid "Printer Settings Tab" +msgstr "Druckereinstellungsreiter" + #: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "Druckertechnologie" -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "Printer type" msgstr "Druckertyp" -#: src/libslic3r/PrintConfig.cpp:1487 +#: src/libslic3r/PrintConfig.cpp:1595 msgid "Printer variant" msgstr "Druckervariante" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "Printer vendor" msgstr "Druckerhersteller" -#: src/libslic3r/Print.cpp:1388 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +msgid "Printer with name \"%1%\" already exists." +msgstr "Drucker mit dem Namen \"%1%\" existiert bereits." + +#: src/slic3r/GUI/ConfigWizard.cpp:587 +msgid "Printer:" +msgstr "Drucker:" + +#: src/libslic3r/Print.cpp:1414 msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." msgstr "Der Druck erfolgt mit mehreren Extrudern mit unterschiedlichen Düsendurchmessern. Falls Stützen mit dem aktuellen Extruder gedruckt werden sollen (support_material_extruder == 0 oder support_material_interface_extruder == 0), müssen alle Druckdüsen den gleichen Durchmesser aufweisen." #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:849 +#: src/slic3r/GUI/MainFrame.cpp:1550 #, c-format msgid "Processing %s" msgstr "Berechne %s" -#: src/slic3r/GUI/Plater.cpp:2283 -#, c-format -msgid "Processing input file %s" -msgstr "Eingabe Datei %s wird verarbeitet" - -#: src/libslic3r/PrintObject.cpp:108 +#: src/libslic3r/PrintObject.cpp:114 msgid "Processing triangulated mesh" msgstr "Verarbeitung der dreieckigen Netze" -#: src/slic3r/GUI/Tab.cpp:1259 src/slic3r/GUI/Tab.cpp:1549 -#: src/slic3r/GUI/Tab.cpp:2020 src/slic3r/GUI/Tab.cpp:2136 -#: src/slic3r/GUI/Tab.cpp:3544 src/slic3r/GUI/Tab.cpp:3672 +#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 +#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 msgid "Profile dependencies" msgstr "Profil Abhängigkeiten" -#: src/slic3r/GUI/ConfigWizard.cpp:566 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Profile:" msgstr "Profil:" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 msgid "Progress" msgstr "Fortschritt" @@ -5646,23 +6555,35 @@ msgstr "Fortschritt" msgid "Progress:" msgstr "Fortschritt:" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Prusa 3D &Drivers" msgstr "Prusa 3&D Treiber" -#: src/slic3r/GUI/ConfigWizard.cpp:1995 +#: src/slic3r/GUI/ConfigWizard.cpp:2506 msgid "Prusa FFF Technology Printers" msgstr "Prusa FFF Technologie Drucker" -#: src/slic3r/GUI/ConfigWizard.cpp:1998 +#: src/slic3r/GUI/ConfigWizard.cpp:2509 msgid "Prusa MSLA Technology Printers" msgstr "Prusa MSLA Technologie Drucker" -#: src/slic3r/GUI/AboutDialog.cpp:260 +#: src/slic3r/Utils/Http.cpp:78 +msgid "PrusaSlicer detected system SSL certificate store in: %1%" +msgstr "PrusaSlicer erkannte System-SSL-Zertifikatspeicher in: %1%" + +#: src/slic3r/GUI/GUI_Init.cpp:85 src/slic3r/GUI/GUI_Init.cpp:88 +msgid "PrusaSlicer GUI initialization failed" +msgstr "PrusaSlicer GUI-Initialisierung fehlgeschlagen" + +#: src/slic3r/GUI/AboutDialog.cpp:285 msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "PrusaSlicer basiert auf Slic3r von Alessandro Ranellucci und der RepRap Community." -#: src/slic3r/GUI/GLCanvas3DManager.cpp:284 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 +msgid "PrusaSlicer is closing: Unsaved Changes" +msgstr "PrusaSlicer wird geschlossen: Nicht gespeicherte Änderungen" + +#: src/slic3r/GUI/OpenGLManager.cpp:259 #, c-format msgid "" "PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" @@ -5673,7 +6594,11 @@ msgstr "PrusaSlicer benötigt einen OpenGL 2.0-fähigen Grafiktreiber, um korrek msgid "PrusaSlicer version" msgstr "PrusaSlicer Version" -#: src/slic3r/GUI/ConfigWizard.cpp:815 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:662 +msgid "PrusaSlicer will remember your action." +msgstr "PrusaSlicer wird sich an Ihre Aktion erinnern." + +#: src/slic3r/GUI/ConfigWizard.cpp:1174 msgid "" "PrusaSlicer's user interfaces comes in three variants:\n" "Simple, Advanced, and Expert.\n" @@ -5683,64 +6608,80 @@ msgstr "" "Einfach, Fortgeschritten und Experte.\n" "Der einfache Modus zeigt nur die am häufigsten verwendeten Einstellungen, die für den regulären 3D-Druck relevant sind. Die beiden anderen bieten eine immer anspruchsvollere Feinabstimmung, sie sind für fortgeschrittene bzw. erfahrene Anwender geeignet." -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +msgid "PrusaSlicer: Don't ask me again" +msgstr "PrusaSlicer: Fragen Sie mich nicht noch einmal" + +#: src/libslic3r/PrintConfig.cpp:2397 msgid "Purging after toolchange will done inside this object's infills. This lowers the amount of waste but may result in longer print time due to additional travel moves." msgstr "Das Reinigen nach dem Werkzeugwechsel erfolgt innerhalb der Füllungen dieses Objekts. Dies reduziert die Abfallquote, kann aber aufgrund zusätzlicher Verfahrwege zu einer längeren Druckzeit führen." -#: src/slic3r/GUI/Plater.cpp:544 +#: src/slic3r/GUI/Plater.cpp:410 msgid "Purging volumes" msgstr "Reinigungsvolumen" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "Purging volumes - load/unload volumes" msgstr "Reinigungsvolumen - Lade-/Entladevolumen" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "Purging volumes - matrix" msgstr "Reinigungsvolumen - Matrix" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:1201 +msgid "Purpose of Machine Limits" +msgstr "Zweck der Maschinengrenzen" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 msgid "Quality" msgstr "Qualität" -#: src/slic3r/GUI/Tab.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:1402 msgid "Quality (slower slicing)" msgstr "Qualität (langsameres Slicen)" -#: src/slic3r/GUI/GLCanvas3D.cpp:273 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Quality / Speed" msgstr "Qualität / Geschwindigkeit" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1182 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1530 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1536 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1849 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 +msgid "Quick" +msgstr "Schnell" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1306 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1661 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1667 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2008 #, c-format msgid "Quick Add Settings (%s)" msgstr "Schnelles Einstellen (%s)" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Quick Slice" msgstr "Quick Slice" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Quick Slice and Save As" msgstr "Quick Slice und Speichern unter" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 #, c-format msgid "Quit %s" msgstr "%s verlassen" -#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Quit, I will move my data now" +msgstr "Beenden, ich werde meine Daten jetzt verschieben" + +#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" msgstr "Radius" -#: src/slic3r/GUI/Tab.cpp:1127 +#: src/slic3r/GUI/Tab.cpp:1456 msgid "Raft" msgstr "Raft" -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Raft layers" msgstr "Raftschichten" @@ -5766,27 +6707,27 @@ msgstr "Abstand der Rammlinien" msgid "Ramming line width" msgstr "Breite der Rammlinie" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:730 msgid "Ramming parameters" msgstr "Rammparameter" -#: src/slic3r/GUI/Tab.cpp:1505 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Ramming settings" msgstr "Einstellungen für das Rammen" -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "Random" msgstr "Zufällig" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 msgid "Range" msgstr "Bereich" -#: src/libslic3r/SLAPrintSteps.cpp:65 +#: src/libslic3r/SLAPrintSteps.cpp:66 msgid "Rasterizing layers" msgstr "Schichten werden gerastert" -#: src/slic3r/GUI/MainFrame.cpp:596 +#: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Re&load from disk" msgstr "Erneutes &Laden von der Festplatte" @@ -5798,210 +6739,243 @@ msgstr "Neu konfigurieren" msgid "Ready" msgstr "Fertig" -#: src/slic3r/GUI/Plater.cpp:3115 +#: src/slic3r/GUI/Plater.cpp:2915 msgid "Ready to slice" msgstr "Bereit zum Slicen" -#: src/slic3r/GUI/MainFrame.cpp:669 src/libslic3r/PrintConfig.cpp:1632 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Rear" msgstr "Hinten" -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 msgid "Rear View" msgstr "Ansicht von Hinten" -#: src/slic3r/GUI/MainFrame.cpp:413 +#: src/slic3r/GUI/MainFrame.cpp:994 msgid "Recent projects" msgstr "L&etzte Projekte" -#: src/slic3r/GUI/PresetHints.cpp:263 +#: src/slic3r/GUI/PresetHints.cpp:262 #, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "Empfohlene Stärke der dünnen Wände des Objekts für die Schichthöhe %.2f und" -#: src/slic3r/GUI/PresetHints.cpp:274 +#: src/slic3r/GUI/PresetHints.cpp:273 msgid "Recommended object thin wall thickness: Not available due to excessively small extrusion width." msgstr "Empfohlene Stärke der dünnen Wände des Objekts: Nicht verfügbar wegen extrem geringer Extrusionsbreite." -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "Recommended object thin wall thickness: Not available due to invalid layer height." msgstr "Empfohlene Stärke der dünnen Wände des Objekts: Nicht verfügbar wegen unzulässiger Schichthöhe." -#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 msgid "Recreating" msgstr "Neu Erzeugen" -#: src/slic3r/GUI/BedShapeDialog.cpp:73 +#: src/slic3r/GUI/BedShapeDialog.cpp:141 msgid "Rectangular" msgstr "Rechteckig" -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Rectilinear" msgstr "Geradlinig" -#: src/libslic3r/PrintConfig.cpp:2010 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Rectilinear grid" msgstr "Rechtwinkliges Gitter" -#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 -#: src/slic3r/GUI/MainFrame.cpp:584 +#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "Redo" msgstr "Redo" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "Redo %1$d Aktion" msgstr[1] "Redo %1$d Aktionen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Redo History" msgstr "Redo Verlauf" -#: src/slic3r/GUI/Tab.cpp:1098 +#: src/slic3r/GUI/Tab.cpp:1426 msgid "Reducing printing time" msgstr "Druckzeit wird verkürzt" -#: src/slic3r/GUI/Plater.cpp:3452 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 +msgid "Refresh Printers" +msgstr "Drucker aktualisieren" + +#: src/libslic3r/PrintConfig.cpp:145 +msgid "Related printer preset name" +msgstr "Zugehöriger Name der Druckervoreinstellung" + +#: src/slic3r/GUI/Plater.cpp:3257 msgid "Reload all from disk" msgstr "Alles von der Festplatte neu laden" -#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3225 -#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 +#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 msgid "Reload from disk" msgstr "Neuladen von Festplatte" -#: src/slic3r/GUI/Plater.cpp:3339 +#: src/slic3r/GUI/Plater.cpp:3142 msgid "Reload from:" msgstr "Neuladen von:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Reload plater from disk" msgstr "Druckplatte neu von der Festplatte laden" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:1203 msgid "Reload the plater from disk" msgstr "Druckplatte neu von der Festplatte laden" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:3881 msgid "Reload the selected object from disk" msgstr "Das ausgewählte Objekt von der Festplatte neu laden" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3934 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3852 msgid "Reload the selected volumes from disk" msgstr "Die ausgewählten Volumen von der Festplatte neu laden" -#: src/slic3r/GUI/Preferences.cpp:39 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Remaining time" +msgstr "Restzeit" + +#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +msgid "Remember my choice" +msgstr "Auswahl merken" + +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Remember output directory" msgstr "Ausgabeverzeichnis merken" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/MainFrame.cpp:166 +msgid "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" +msgstr "Denken Sie daran, nach Updates zu suchen unter https://github.com/prusa3d/PrusaSlicer/releases" + +#: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "Entfernen" -#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Remove" msgstr "Entfernen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 msgid "Remove all holes" msgstr "Alle Löcher entfernen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 msgid "Remove all points" msgstr "Alle Punkte entfernen" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:35 +msgid "Remove all selection" +msgstr "Gesamte Auswahl entfernen" + +#: src/slic3r/GUI/GLCanvas3D.cpp:239 msgid "Remove detail" msgstr "Detail entfernen" -#: src/slic3r/GUI/Plater.cpp:879 -msgid "Remove device" -msgstr "Gerät entfernen" - #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182 msgid "Remove extruder from sequence" msgstr "Extruder aus der Sequenz entfernen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 src/slic3r/GUI/Plater.cpp:3860 msgid "Remove instance" msgstr "Kopie entfernen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 msgid "Remove Instance of the selected object" msgstr "Entfernt Kopie des gewählten Objekts" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:161 msgid "Remove layer range" msgstr "Schichtbereich entfernen" -#: src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/Plater.cpp:3860 msgid "Remove one instance of the selected object" msgstr "Entferne eine Kopie des gewählten Objekts" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:98 msgid "Remove parameter" msgstr "Parameter entfernen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Remove point" msgstr "Punkt entfernen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Remove point from selection" msgstr "Punkt von Auswahl entfernen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 msgid "Remove selected holes" msgstr "Ausgewählte Löcher entfernen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1371 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1218 msgid "Remove selected points" msgstr "Ausgewählte Punkte entfernen" -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:34 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:368 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:378 +msgid "Remove selection" +msgstr "Auswahl entfernen" + +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 msgid "Remove the selected object" msgstr "Ausgewähltes Objekt entfernen" -#: src/slic3r/GUI/ConfigWizard.cpp:453 +#: src/slic3r/GUI/ConfigWizard.cpp:456 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "Benutzerprofile entfernen (eine Momentaufnahme wird vorab erstellt)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1636 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 msgid "Rename" msgstr "Umbenennen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Object" msgstr "Objekt umbenennen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Sub-object" msgstr "Subobjekt umbenennen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Renaming" msgstr "Am Umbenennen" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:115 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 msgid "Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again." msgstr "Das Umbenennen des G-Codes nach dem Kopieren in den ausgewählten Zielordner ist fehlgeschlagen. Der aktuelle Pfad ist %1%.tmp. Bitte versuchen Sie erneut zu exportieren." -#: src/libslic3r/PrintConfig.cpp:3515 +#: src/slic3r/GUI/Preferences.cpp:255 +msgid "Render" +msgstr "Render" + +#: src/libslic3r/PrintConfig.cpp:3720 msgid "Render with a software renderer" msgstr "Rendern mit einem Software-Renderer" -#: src/libslic3r/PrintConfig.cpp:3516 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." msgstr "Rendern mit einem Software-Renderer. Der mitgelieferte MESA-Software-Renderer wird anstelle des standardmäßigen OpenGL-Treibers geladen." -#: src/slic3r/GUI/MainFrame.cpp:911 src/libslic3r/PrintConfig.cpp:3447 +#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 msgid "Repair" msgstr "Reparieren" @@ -6025,38 +6999,38 @@ msgstr "Die reparierte 3MF Datei enhält keine Volumen" msgid "Repairing model by the Netfabb service" msgstr "Reparieren des Modells durch den Netfabb-Dienst" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat last quick slice" msgstr "Letzten Quick Slice wiederholen" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat Last Quick Slice" msgstr "Letzten Quick Slice wiederholen" -#: src/slic3r/GUI/Tab.cpp:3083 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 msgid "Replace?" msgstr "Ersetzen?" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 msgid "Report an I&ssue" msgstr "Ein &Problem melden" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 #, c-format msgid "Report an issue on %s" msgstr "Einen Problem melden über %s" -#: src/slic3r/Utils/PresetUpdater.cpp:713 +#: src/slic3r/Utils/PresetUpdater.cpp:733 #, c-format msgid "requires max. %s" msgstr "benötigt max. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:710 +#: src/slic3r/Utils/PresetUpdater.cpp:730 #, c-format msgid "requires min. %s" msgstr "benötigt min. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:705 +#: src/slic3r/Utils/PresetUpdater.cpp:726 #, c-format msgid "requires min. %s and max. %s" msgstr "benötigt min. %s und max. %s" @@ -6065,270 +7039,300 @@ msgstr "benötigt min. %s und max. %s" msgid "Rescan" msgstr "Rescan" -#: src/slic3r/GUI/Tab.cpp:1906 -msgid "Rescan serial ports" -msgstr "Serielle Schnittstellen nochmals abfragen" - -#: src/slic3r/GUI/GLCanvas3D.cpp:313 +#: src/slic3r/GUI/GLCanvas3D.cpp:299 msgid "Reset" msgstr "Rücksetzen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1373 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 msgid "Reset clipping plane" msgstr "Beschnittebene zurücksetzen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:59 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:26 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 msgid "Reset direction" msgstr "Richtung zurücksetzen" -#: src/slic3r/GUI/Plater.cpp:2723 +#: src/slic3r/GUI/Plater.cpp:2684 msgid "Reset Project" msgstr "Projekt zurücksetzen" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:372 msgid "Reset rotation" msgstr "Rotation zurücksetzen" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:394 msgid "Reset Rotation" msgstr "Rotation zurücksetzen" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:407 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409 msgid "Reset scale" msgstr "Skalierung zurücksetzen" -#: src/slic3r/GUI/GLCanvas3D.cpp:252 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 +msgid "Reset selection" +msgstr "Auswahl zurücksetzen" + +#: src/slic3r/GUI/GLCanvas3D.cpp:243 msgid "Reset to base" msgstr "Zurücksetzen auf Basis" -#: src/slic3r/GUI/Tab.cpp:2394 +#: src/slic3r/GUI/Tab.cpp:2564 msgid "Reset to Filament Color" msgstr "Zurücksetzen auf Filamentfarbe" -#: src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "Resolution" msgstr "Auflösung" -#: src/libslic3r/PrintConfig.cpp:1529 +#: src/libslic3r/PrintConfig.cpp:1637 msgid "Retract amount before wipe" msgstr "Einzugslänge vor einer Reinigung" -#: src/libslic3r/PrintConfig.cpp:1537 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Retract on layer change" msgstr "Bei Schichtwechsel einziehen" -#: src/slic3r/GUI/Tab.cpp:1324 src/slic3r/GUI/Tab.cpp:1383 -#: src/slic3r/GUI/Tab.cpp:2370 +#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 +#: src/slic3r/GUI/Tab.cpp:2539 msgid "Retraction" msgstr "Einzug" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "Retraction is not triggered when travel moves are shorter than this length." msgstr "Der Einzug wird nicht ausgelöst, wenn die Fahrbewegungen kürzer als diese Länge sind." -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Retraction Length" msgstr "Einzugslänge" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Retraction Length (Toolchange)" msgstr "Einzugslänge (Werkzeugwechsel)" -#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 msgid "Retraction Speed" msgstr "Einzugsgeschwindigkeit" -#: src/slic3r/GUI/Tab.cpp:2386 +#: src/slic3r/GUI/Tab.cpp:2555 msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" msgstr "Einzug, wenn das Werkzeug deaktiviert ist (weiterführende Einstellungen für Multi-Extruder-Einrichtungen)" -#: src/slic3r/GUI/GUI_Preview.cpp:254 +#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:1472 msgid "Retractions" msgstr "Einzüge" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/Preferences.cpp:198 +msgid "Reverse direction of zoom with mouse wheel" +msgstr "Umkehrung der Zoom-Richtung des Mausrads" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +msgid "Revert conversion from imperial units" +msgstr "Umrechnung von imperialen Einheiten rückgängig machen" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right" msgstr "Rechts" -#: src/slic3r/GUI/GUI_ObjectList.cpp:402 +#: src/slic3r/GUI/GUI_ObjectList.cpp:449 msgid "Right button click the icon to change the object printable property" msgstr "Klicken Sie mit der rechten Maustaste auf das Symbol, um die Druckbar-Eigenschaft des Objekts zu ändern" -#: src/slic3r/GUI/GUI_ObjectList.cpp:396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:443 msgid "Right button click the icon to change the object settings" msgstr "Klicken Sie mit der rechten Maustaste auf das Symbol, um die Objekteinstellungen zu ändern" -#: src/slic3r/GUI/GUI_ObjectList.cpp:359 +#: src/slic3r/GUI/GUI_ObjectList.cpp:406 msgid "Right button click the icon to fix STL through Netfabb" msgstr "Klicken Sie mit der rechten Maustaste auf das Symbol, um die STL über Netfabb zu reparieren" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Right click" msgstr "Rechter Mausklick" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:31 +msgid "Right mouse button" +msgstr "Rechte Maustaste" + +#: src/slic3r/GUI/GLCanvas3D.cpp:237 msgid "Right mouse button:" msgstr "Rechte Maustaste:" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right View" msgstr "Ansicht von rechts" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 -#: src/libslic3r/PrintConfig.cpp:3451 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:527 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:546 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Rotate" msgstr "Drehen" -#: src/libslic3r/PrintConfig.cpp:3456 +#: src/libslic3r/PrintConfig.cpp:3655 msgid "Rotate around X" msgstr "Rotiere um X" -#: src/libslic3r/PrintConfig.cpp:3461 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Rotate around Y" msgstr "Rotiere um Y" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 msgid "Rotate lower part upwards" msgstr "Unteren Teil umdrehen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Rotate selection 45 degrees CCW" msgstr "Auswahl um 45 Grad drehen gegen UZS" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Rotate selection 45 degrees CW" msgstr "Auswahl um 45 Grad drehen im UZS" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 -#: src/slic3r/GUI/Mouse3DController.cpp:304 -#: src/slic3r/GUI/Mouse3DController.cpp:321 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:309 msgid "Rotation" msgstr "Rotation" -#: src/libslic3r/PrintConfig.cpp:3457 +#: src/libslic3r/PrintConfig.cpp:3656 msgid "Rotation angle around the X axis in degrees." msgstr "Rotationswinkel um die X-Achse in Grad." -#: src/libslic3r/PrintConfig.cpp:3462 +#: src/libslic3r/PrintConfig.cpp:3661 msgid "Rotation angle around the Y axis in degrees." msgstr "Rotationswinkel um die Y-Achse in Grad." -#: src/libslic3r/PrintConfig.cpp:3452 +#: src/libslic3r/PrintConfig.cpp:3651 msgid "Rotation angle around the Z axis in degrees." msgstr "Rotationswinkel um die Z-Achse in Grad." -#: src/slic3r/GUI/GUI_App.cpp:797 +#: src/slic3r/GUI/GUI_App.cpp:1474 #, c-format msgid "Run %s" msgstr "%s ausführen" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:128 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:478 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 msgid "Running post-processing scripts" msgstr "Post-Prozess Scripts werden ausgeführt" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 -#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 -#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 +#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 +#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 +#: src/libslic3r/PrintConfig.cpp:2709 msgid "s" msgstr "s" -#: src/slic3r/GUI/MainFrame.cpp:481 src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end G-code" msgstr "S&ende G-code" -#: src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end to print" msgstr "Zum Drucken s&enden" -#. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3417 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:642 +msgid "Save" +msgstr "Speichern" + +#: src/slic3r/GUI/SavePresetDialog.cpp:72 #, c-format msgid "Save %s as:" msgstr "Speichere %s als:" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 #, c-format msgid "Save %s file as:" msgstr "Speichere %s Datei als:" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1046 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Save changes?" msgstr "Änderungen speichern?" -#: src/libslic3r/PrintConfig.cpp:3386 +#: src/libslic3r/PrintConfig.cpp:3585 msgid "Save config file" msgstr "Speichere Konfigurationsdatei" -#: src/slic3r/GUI/MainFrame.cpp:925 +#: src/slic3r/GUI/MainFrame.cpp:1626 msgid "Save configuration as:" msgstr "Konfiguration speichern unter:" -#: src/libslic3r/PrintConfig.cpp:3387 +#: src/libslic3r/PrintConfig.cpp:3586 msgid "Save configuration to the specified file." msgstr "Sichert die Konfiguration in der angegebenen Datei." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:133 +#: src/slic3r/GUI/Tab.cpp:203 #, c-format msgid "Save current %s" msgstr "Speichere aktuelle %s" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "Save current project file" msgstr "Speichere aktuelle Projektdatei" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save current project file as" msgstr "Speichere aktuelle Projektdatei als" -#: src/slic3r/GUI/Plater.cpp:2604 +#: src/slic3r/GUI/Plater.cpp:2566 msgid "Save file as:" msgstr "Speichere Datei als:" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save G-code file as:" msgstr "Speichere G-Code Datei als:" -#: src/slic3r/GUI/MainFrame.cpp:899 +#: src/slic3r/GUI/MainFrame.cpp:1600 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Speichern als OBJ-Datei (weniger anfällig für Koordinatenfehler als STL):" -#: src/slic3r/GUI/Tab.hpp:443 +#: src/slic3r/GUI/SavePresetDialog.cpp:190 +#: src/slic3r/GUI/SavePresetDialog.cpp:196 msgid "Save preset" msgstr "Sichern der Voreinstellung" -#: src/slic3r/GUI/MainFrame.cpp:980 +#: src/slic3r/GUI/MainFrame.cpp:1681 msgid "Save presets bundle as:" msgstr "Sichern der Voreinstellungssammlung unter:" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save Project &as" msgstr "Projekt sichern &als" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Save project (3mf)" msgstr "Speichere Projekt (3mf)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 msgid "Save project as (3mf)" msgstr "Speichere Projekt als (3mf)" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save SL1 file as:" msgstr "Speichere SL1 Datei als:" -#: src/slic3r/GUI/MainFrame.cpp:838 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 +msgid "Save the selected options to preset \"%1%\"." +msgstr "Speichern der ausgewählten Optionen unter der Voreinstellung \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Save the selected options." +msgstr "Speichern der ausgewählten Optionen." + +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "Save zip file as:" msgstr "Speichere Zip Datei als:" @@ -6338,157 +7342,184 @@ msgstr "Speichere Zip Datei als:" msgid "Saving mesh into the 3MF container failed." msgstr "Sichern des Netzes in einen 3MF-Container fehlgeschlagen." -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 -#: src/libslic3r/PrintConfig.cpp:3466 +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:78 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:238 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:547 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "Scale" msgstr "Skalieren" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "Skalierungsfaktoren" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 -msgid "" -"Scale selection to fit print volume\n" -"in Gizmo scale" -msgstr "Auswahl passend zum Druckvolumen in der Gizmo Skalierung anpassen" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale the selected object to fit the print volume" msgstr "Skalieren des ausgewählten Objekts so, dass es in das Druckvolumen passt" -#: src/libslic3r/PrintConfig.cpp:3475 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Scale to Fit" msgstr "Passend skalieren" -#: src/slic3r/GUI/Selection.cpp:939 +#: src/slic3r/GUI/Selection.cpp:988 msgid "Scale To Fit" msgstr "Passend skalieren" -#: src/libslic3r/PrintConfig.cpp:3476 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Scale to fit the given volume." msgstr "Auf das gegebene Volumen skalieren." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale to print volume" msgstr "Auf Druckvolumen skalieren" -#: src/libslic3r/PrintConfig.cpp:3467 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scaling factor or percentage." msgstr "Skalierungsfaktor oder Prozentsatz." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:505 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Geplante Hochladung auf `%1%`. Siehe Fenster -> Druck-Host Uploadwarteschlange" -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 +msgid "Seam painting" +msgstr "Aufmal-Nähte" + +#: src/libslic3r/PrintConfig.cpp:1729 msgid "Seam position" msgstr "Nahtposition" -#: src/libslic3r/PrintConfig.cpp:1642 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Seam preferred direction" msgstr "Bevorzugte Richtung für Nähte" -#: src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:1759 msgid "Seam preferred direction jitter" msgstr "Bevorzugte Zitterrichtung für Nähte" +#: src/slic3r/GUI/MainFrame.cpp:1207 +msgid "Searc&h" +msgstr "Suc&hen" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 +msgid "Search" +msgstr "Suchen" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +msgid "Search in English" +msgstr "Suche in Englisch" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "Search in settings" +msgstr "Suche in Einstellungen" + +#: src/slic3r/GUI/Tab.cpp:222 +msgid "Search in settings [%1%]" +msgstr "Suche in Einstellungen [%1%]" + #: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "Es wird nach Geräten gesucht" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:41 msgid "Searching for optimal orientation" msgstr "Suche nach der optimalen Orientierung" -#: src/slic3r/GUI/GUI_App.cpp:1103 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "See more." +msgstr "Siehe mehr." + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "See Releases page." +msgstr "Siehe Releases-Seite." + +#: src/slic3r/GUI/GUI_App.cpp:1895 msgid "Select a gcode file:" msgstr "Gcode Datei auswählen:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Select all objects" msgstr "Alle Objekte auswählen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1370 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1217 msgid "Select all points" msgstr "Alle Punkte auswählen" -#: src/slic3r/GUI/ConfigWizard.cpp:1976 +#: src/slic3r/GUI/ConfigWizard.cpp:2487 msgid "Select all standard printers" msgstr "Wähle alle Standarddrucker" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Auswahl über Rechteck" -#: src/slic3r/GUI/MainFrame.cpp:944 src/slic3r/GUI/MainFrame.cpp:1006 +#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 msgid "Select configuration to load:" msgstr "Konfiguration zum Laden auswählen:" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:88 msgid "Select coordinate space, in which the transformation will be performed." msgstr "Koordinatenraum wählen, in dem die Transformation durchgeführt wird." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3971 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 msgid "Select extruder number:" msgstr "Wählen Sie die Extruder Nummer:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Select Filament Settings Tab" msgstr "Wählt Filamenteinstellungsreiter" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Select Plater Tab" msgstr "Wählt Druckplattenreiter" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Select Print Settings Tab" msgstr "Wählt Druckeinstellungsreiter" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Select Printer Settings Tab" msgstr "Wählt Druckereinstellungsreiter" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1265 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 msgid "Select showing settings" msgstr "Wähle Anzeigeeinstellungen" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Select the language" msgstr "Wählen Sie die Sprache aus" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:108 msgid "Select the print profiles this profile is compatible with." msgstr "Wählt die Druckprofile, die mit diesem Profil kompatibel sind." -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:102 msgid "Select the printers this profile is compatible with." msgstr "Wählen Sie die Drucker aus, die mit diesem Profil kompatibel sind." -#: src/slic3r/GUI/MainFrame.cpp:889 +#: src/slic3r/GUI/MainFrame.cpp:1590 msgid "Select the STL file to repair:" msgstr "Geben Sie die STL-Datei an, die repariert werden soll:" -#: src/slic3r/GUI/Preferences.cpp:237 +#: src/slic3r/GUI/Preferences.cpp:391 msgid "Select toolbar icon size in respect to the default one." msgstr "Wählen Sie die Symbolgröße der Symbolleiste in Bezug auf die Standardgröße." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Select type of part" msgstr "Wählen Sie den Typ des Teils" -#: src/slic3r/GUI/Plater.cpp:638 +#: src/slic3r/GUI/Plater.cpp:504 msgid "Select what kind of pad do you need" msgstr "Wählen Sie aus, welche Art von Grundschicht Sie benötigen" -#: src/slic3r/GUI/Plater.cpp:498 +#: src/slic3r/GUI/Plater.cpp:364 msgid "Select what kind of support do you need" msgstr "Wählen Sie aus, welche Art von Unterstützung Sie benötigen" -#: src/slic3r/GUI/DoubleSlider.cpp:1917 +#: src/slic3r/GUI/DoubleSlider.cpp:2135 msgid "" "Select YES if you want to delete all saved tool changes, \n" "NO if you want all tool changes switch to color changes, \n" @@ -6498,59 +7529,59 @@ msgstr "" "NEIN, wenn Sie möchten, dass alle Werkzeugänderungen auf Farbwechsel umgestellt werden, \n" "oder ABBRECHEN, um sie unverändert zu lassen." -#: src/slic3r/GUI/Selection.cpp:146 +#: src/slic3r/GUI/Selection.cpp:191 msgid "Selection-Add" msgstr "Auswahl hinzufügen" -#: src/slic3r/GUI/Selection.cpp:376 +#: src/slic3r/GUI/Selection.cpp:421 msgid "Selection-Add All" msgstr "Auswahl Alles hinzufügen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3299 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 msgid "Selection-Add from list" msgstr "Auswahl aus Liste hinzufügen" -#: src/slic3r/GUI/GLCanvas3D.cpp:6598 +#: src/slic3r/GUI/GLCanvas3D.cpp:7193 msgid "Selection-Add from rectangle" msgstr "Auswahl über Rechteck hinzufügen" -#: src/slic3r/GUI/Selection.cpp:256 +#: src/slic3r/GUI/Selection.cpp:301 msgid "Selection-Add Instance" msgstr "Auswahl Kopie hinzufügen" -#: src/slic3r/GUI/Selection.cpp:219 +#: src/slic3r/GUI/Selection.cpp:264 msgid "Selection-Add Object" msgstr "Auswahl Objekt hinzufügen" -#: src/slic3r/GUI/Selection.cpp:187 +#: src/slic3r/GUI/Selection.cpp:232 msgid "Selection-Remove" msgstr "Auswahl entfernen" -#: src/slic3r/GUI/Selection.cpp:402 +#: src/slic3r/GUI/Selection.cpp:447 msgid "Selection-Remove All" msgstr "Auswahl Alles entfernen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3291 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 msgid "Selection-Remove from list" msgstr "Auswahl aus Liste entfernen" -#: src/slic3r/GUI/GLCanvas3D.cpp:6617 +#: src/slic3r/GUI/GLCanvas3D.cpp:7212 msgid "Selection-Remove from rectangle" msgstr "Auswahl über Rechteck entfernen" -#: src/slic3r/GUI/Selection.cpp:275 +#: src/slic3r/GUI/Selection.cpp:320 msgid "Selection-Remove Instance" msgstr "Auswahl Kopie entfernen" -#: src/slic3r/GUI/Selection.cpp:238 +#: src/slic3r/GUI/Selection.cpp:283 msgid "Selection-Remove Object" msgstr "Auswahl Objekt entfernen" -#: src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Selects all objects" msgstr "Alle Objekte auswählen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 msgid "Send G-code" msgstr "Sende G-code" @@ -6558,29 +7589,29 @@ msgstr "Sende G-code" msgid "Send G-Code to printer host" msgstr "Sende G-Code zum Druckerhost" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:1072 msgid "Send to print current plate as G-code" msgstr "Sende die aktuelle Plattenbelegung als G-Code zum Drucken" -#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 msgid "Send to printer" msgstr "Zum Drucker senden" -#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +#: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Seq." -#: src/slic3r/GUI/Tab.cpp:1231 +#: src/slic3r/GUI/Tab.cpp:1561 msgid "Sequential printing" msgstr "Sequentielles Drucken" -#: src/slic3r/GUI/Tab.cpp:1901 src/libslic3r/PrintConfig.cpp:1661 -msgid "Serial port" -msgstr "Serieller Port" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +msgid "Sequential Slider" +msgstr "Sequentieller Schieberegler" -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Serielle Portgeschwindigkeit" +#: src/slic3r/GUI/Preferences.cpp:230 +msgid "Sequential slider applied only to top layer" +msgstr "Sequentieller Schieberegler wird nur auf die oberste Schicht angewendet" #: src/slic3r/GUI/FirmwareDialog.cpp:807 msgid "Serial port:" @@ -6590,17 +7621,16 @@ msgstr "Serieller Port:" msgid "Service name" msgstr "Name des Dienstes" -#: src/slic3r/GUI/Tab.cpp:1802 src/slic3r/GUI/Tab.cpp:2046 -#: src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 msgid "Set" msgstr "Setzen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Object" msgstr "Als separates Objekt festlegen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Objects" msgstr "Als separate Objekte festlegen" @@ -6608,7 +7638,7 @@ msgstr "Als separate Objekte festlegen" msgid "Set extruder change for every" msgstr "Extruderwechsel bei jedem" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Set extruder for selected items" msgstr "Extruder für die gewählten Elemente wählen" @@ -6616,7 +7646,7 @@ msgstr "Extruder für die gewählten Elemente wählen" msgid "Set extruder sequence" msgstr "Extrudersequenz einstellen" -#: src/slic3r/GUI/DoubleSlider.cpp:1532 +#: src/slic3r/GUI/DoubleSlider.cpp:1728 msgid "Set extruder sequence for the entire print" msgstr "Extrudersequenz für den gesamten Druck einstellen" @@ -6624,84 +7654,84 @@ msgstr "Extrudersequenz für den gesamten Druck einstellen" msgid "Set extruder(tool) sequence" msgstr "Extruder(werkzeug)sequenz einstellen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Stelle den unteren Regler auf den aktuellen Schieberegler" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 msgid "Set Mirror" msgstr "Spiegel setzen" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Set number of instances" msgstr "Setze Anzahl der Kopien" -#: src/slic3r/GUI/Plater.cpp:4756 +#: src/slic3r/GUI/Plater.cpp:4860 #, c-format msgid "Set numbers of copies to %d" msgstr "Setze Anzahl der Kopien auf %d" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:828 msgid "Set Orientation" msgstr "Orientierung setzen" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:797 msgid "Set Position" msgstr "Position setzen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Printable" msgstr "Setze Druckbar" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Printable Instance" msgstr "Setze druckbare Kopie" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:893 msgid "Set Scale" msgstr "Setze Skalierung" -#: src/libslic3r/PrintConfig.cpp:2393 +#: src/libslic3r/PrintConfig.cpp:2536 msgid "Set the actual LCD display orientation inside the SLA printer. Portrait mode will flip the meaning of display width and height parameters and the output images will be rotated by 90 degrees." msgstr "Setzt die aktuelle Ausrichtung der LCD-Anzeige im SLA-Drucker. Der Hochformatmodus kehrt die Bedeutung der Anzeigeparameter Breite und Höhe um und die Ausgabebilder werden um 90 Grad gedreht." -#: src/slic3r/GUI/ConfigWizard.cpp:932 +#: src/slic3r/GUI/ConfigWizard.cpp:1298 msgid "Set the shape of your printer's bed." msgstr "Stellen Sie die Konturen Ihres Druckerbettes ein." -#: src/libslic3r/PrintConfig.cpp:556 +#: src/libslic3r/PrintConfig.cpp:592 msgid "Set this to a non-zero value to allow a manual extrusion width. If left to zero, Slic3r derives extrusion widths from the nozzle diameter (see the tooltips for perimeter extrusion width, infill extrusion width etc). If expressed as percentage (for example: 230%), it will be computed over layer height." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite zuzulassen. Falls auf null belassen, wird PrusaSlicer die Extrusionsbreiten vom Durchmesser der Druckdüse ableiten (siehe die Hilfstexte für die Extrusionsbreite für Außenkonturen, Infill usw.). Falls als Prozentwert (z.B. 230%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:448 +#: src/libslic3r/PrintConfig.cpp:484 msgid "Set this to a non-zero value to set a manual extrusion width for external perimeters. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%), it will be computed over layer height." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für externe Außenkonturen anzugeben. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse x 1,125 verwendet. Falls als Prozentwert (z.B. 200%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:878 +#: src/libslic3r/PrintConfig.cpp:920 msgid "Set this to a non-zero value to set a manual extrusion width for first layer. You can use this to force fatter extrudates for better adhesion. If expressed as percentage (for example 120%) it will be computed over first layer height. If set to zero, it will use the default extrusion width." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für die erste Druckschicht anzugeben. Sie können damit eine stärkere Extrusion für bessere Haftung erzwingen. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet. Falls als Prozentwert (z.B. 120%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:1873 msgid "Set this to a non-zero value to set a manual extrusion width for infill for solid surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für den Infill bei massiven Flächen anzugeben. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse x 1,125 verwendet. Falls als Prozentwert (z.B. 90%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2250 msgid "Set this to a non-zero value to set a manual extrusion width for infill for top surfaces. You may want to use thinner extrudates to fill all narrow regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für die oberen Außenflächen anzugeben. Dünnere Extrusionsbreiten sind vorteilhaft, um Engstellen auszufüllen und um eine schönere Oberfläche zu erhalten. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse verwendet. Falls als Prozentwert (z.B. 90%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:1011 +#: src/libslic3r/PrintConfig.cpp:1055 msgid "Set this to a non-zero value to set a manual extrusion width for infill. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. You may want to use fatter extrudates to speed up the infill and make your parts stronger. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für den Infill anzugeben. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse x 1,125 verwendet. Stärke Extrusionsbreiten sind vorteilhaft, um den Infill zu beschleunigen und um die Teile stärker zu machen. Falls als Prozentwert (z.B. 90%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:1419 +#: src/libslic3r/PrintConfig.cpp:1527 msgid "Set this to a non-zero value to set a manual extrusion width for perimeters. You may want to use thinner extrudates to get more accurate surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%) it will be computed over layer height." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für Außenkonturen anzugeben. Dünnere Extrusionsbreiten sind vorteilhaft, um genauere Oberflächen zu erhalten. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse x 1,125 verwendet. Falls als Prozentwert (z.B. 200%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:2090 msgid "Set this to a non-zero value to set a manual extrusion width for support material. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite für die Stützstrukturen anzugeben. Falls auf null belassen, wird die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse verwendet. Als Prozentwert (z.B. 90%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:548 msgid "Set this to the clearance radius around your extruder. If the extruder is not centered, choose the largest value for safety. This setting is used to check for collisions and to display the graphical preview in the plater." msgstr "Stellen Sie dies auf den Freiraumradius um Ihren Extruder ein. Wenn der Extruder nicht zentriert ist, wählen Sie zur Sicherheit den größten Wert. Diese Einstellung wird verwendet, um Kollisionen zu prüfen und die grafische Vorschau auf der Druckplatte anzuzeigen." @@ -6709,23 +7739,23 @@ msgstr "Stellen Sie dies auf den Freiraumradius um Ihren Extruder ein. Wenn der msgid "Set this to the maximum height that can be reached by your extruder while printing." msgstr "Stellen Sie hier die maximale Höhe ein, die Ihr Extruder beim Drucken erreichen kann." -#: src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:537 msgid "Set this to the vertical distance between your nozzle tip and (usually) the X carriage rods. In other words, this is the height of the clearance cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." msgstr "Stellen Sie dies auf den vertikalen Abstand zwischen Ihrer Düsenspitze und (in der Regel) den X-Wagenstangen ein. Mit anderen Worten, das ist die Höhe des Abstandszylinders um Ihren Extruder herum und stellt die maximale Tiefe dar, die der Extruder vor der Kollision mit anderen Druckobjekten sehen kann." -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Unprintable" msgstr "Setze Undruckbar" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Unprintable Instance" msgstr "Setze undruckbare Kopie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Stelle den oberen Regler auf den aktuellen Schieberegler" -#: src/libslic3r/PrintConfig.cpp:3509 +#: src/libslic3r/PrintConfig.cpp:3714 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" "For example. loglevel=2 logs fatal, error and warning level messages." @@ -6733,63 +7763,74 @@ msgstr "" "Stellt die Empfindlichkeit der Protokollierung ein. 0:fatal, 1:Fehler, 2:Warnung, 3:Info, 4:Debug, 5: Trace.\n" "Zum Beispiel. loglevel=2 protokolliert fatale, Fehler- und Warnstufenmeldungen." -#: src/slic3r/GUI/BedShapeDialog.cpp:155 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 msgid "Settings" msgstr "Einstellungen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Settings for height range" msgstr "Einstellungen für Höhenbereich" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/Preferences.cpp:431 +msgid "Settings in non-modal window" +msgstr "Einstellungen im nicht-modalen Fenster" + +#: src/slic3r/GUI/ConfigManipulation.cpp:161 msgid "Shall I adjust those settings for supports?" msgstr "Soll ich diese Einstellungen für Stützen anpassen?" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:88 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "Soll ich diese Einstellungen anpassen, um die Spiralvase zu aktivieren?" -#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:118 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "Soll ich diese Einstellungen anpassen, um den Reinigungsturm zu aktivieren?" -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:209 msgid "Shall I switch to rectilinear fill pattern?" msgstr "Soll ich auf geradliniges Füllmuster wechseln?" -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:138 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "Soll ich die Stützschichten synchronisieren, um den Reinigungsturm zu aktivieren?" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2059 +#: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 msgid "Shape" msgstr "Form" -#: src/slic3r/GUI/GUI_Preview.cpp:256 +#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 msgid "Shells" msgstr "Konturhüllen" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:33 +msgid "Shift + Left mouse button" +msgstr "Gross + Linke Maustaste" + +#: src/slic3r/GUI/GLCanvas3D.cpp:241 msgid "Shift + Left mouse button:" msgstr "Gross + Linke Maustaste:" -#: src/slic3r/GUI/GLCanvas3D.cpp:255 +#: src/slic3r/GUI/GLCanvas3D.cpp:245 msgid "Shift + Right mouse button:" msgstr "Gross + Rechte Maustaste:" -#: src/slic3r/GUI/GUI_Preview.cpp:231 +#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 msgid "Show" msgstr "Anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show &Configuration Folder" msgstr "Zeige &Konfigurationsordner" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show &labels" msgstr "Anzeigen &Beschriftungen" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "Show about dialog" msgstr "\"Über\"-Dialog anzeigen" @@ -6797,111 +7838,127 @@ msgstr "\"Über\"-Dialog anzeigen" msgid "Show advanced settings" msgstr "Ausführliche Einstellungen anzeigen" -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Fehlermeldungen anzeigen" -#: src/slic3r/GUI/Preferences.cpp:95 +#: src/slic3r/GUI/Preferences.cpp:112 msgid "Show incompatible print and filament presets" msgstr "Inkompatible Druck- und Filamenteinstellungen anzeigen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "Show keyboard shortcuts list" msgstr "Liste der Tastaturkürzel anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 +msgid "Show normal mode" +msgstr "Normalen Modus zeigen" + +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show object/instance labels in 3D scene" msgstr "Objekt-/Kopiebeschriftungen in der 3D-Szene anzeigen" +#: src/slic3r/GUI/Preferences.cpp:213 +msgid "Show sidebar collapse/expand button" +msgstr "Schaltfläche zum Zu-/Ausklappen der Seitenleiste zeigen" + #: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show simplified settings" msgstr "Vereinfachte Einstellungen anzeigen" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +msgid "Show splash screen" +msgstr "Startbildschirm anzeigen" + +#: src/slic3r/GUI/GCodeViewer.cpp:2586 +msgid "Show stealth mode" +msgstr "Stealth Modus anzeigen" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 msgid "Show supports" msgstr "Stützen anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "Show system information" msgstr "Systeminformationen anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Show the 3D editing view" msgstr "Anzeigen des 3D Editiermodus" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Show the 3D slices preview" msgstr "Vorschau der 3D-Schnitte anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:617 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Show the filament settings" msgstr "Filamenteinstellungen anzeigen" -#: src/libslic3r/PrintConfig.cpp:3372 +#: src/libslic3r/PrintConfig.cpp:3571 msgid "Show the full list of print/G-code configuration options." msgstr "Zeigt die vollständige Liste der Konfigurationsmöglichkeiten für Druck/GCode an." -#: src/libslic3r/PrintConfig.cpp:3377 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Show the full list of SLA print configuration options." msgstr "Zeigt die vollständige Liste der Konfigurationsmöglichkeiten für SLA Druck an." -#: src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 msgid "Show the list of the keyboard shortcuts" msgstr "Liste der Tastaturkürzel anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Show the plater" msgstr "Druckplatte anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Show the print settings" msgstr "Druckeinstellungen anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Show the printer settings" msgstr "Druckereinstellungen anzeigen" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3565 msgid "Show this help." msgstr "Diese Hilfe zeigen." -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show user configuration folder (datadir)" msgstr "Zeige Benutzerkonfigurationsordner (datadir)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Einstellungsdialog für 3Dconnexion-Geräte ein-/ausblenden" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -msgid "Show/Hide Legend" -msgstr "Zeige/Verberge Legende" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Show/Hide Legend & Estimated printing time" +msgstr "Legende & geschätzte Druckzeit anzeigen/verbergen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Show/Hide object/instance labels" msgstr "Objekt-/Kopiebeschriftungen ein-/ausblenden" -#: src/slic3r/GUI/GUI_App.cpp:813 src/slic3r/GUI/wxExtensions.cpp:753 +#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "Einfach" -#: src/slic3r/GUI/ConfigWizard.cpp:820 +#: src/slic3r/GUI/ConfigWizard.cpp:1179 msgid "Simple mode" msgstr "Einfacher Modus" -#: src/slic3r/GUI/GUI_App.cpp:813 +#: src/slic3r/GUI/GUI_App.cpp:1504 msgid "Simple View Mode" msgstr "EInfacher Anzeigemodus" -#: src/slic3r/GUI/Tab.cpp:2298 src/slic3r/GUI/Tab.cpp:2306 +#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 msgid "Single extruder MM setup" msgstr "Einzelextruder MM Setup" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "Single Extruder Multi Material" msgstr "Einzelextruder mit Multi-Material" -#: src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2101 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -6911,435 +7968,463 @@ msgstr "" "und alle Extruder müssen den gleichen Durchmesser haben.\n" "Möchten Sie den Durchmesser für alle Extruder auf den Wert des ersten Extruderdüsendurchmessers ändern?" -#: src/slic3r/GUI/Tab.cpp:2307 +#: src/slic3r/GUI/Tab.cpp:2476 msgid "Single extruder multimaterial parameters" msgstr "Einzelextruder Multimaterial Parameter" -#: src/slic3r/GUI/BedShapeDialog.cpp:77 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 -#: src/slic3r/GUI/Tab.cpp:2324 +#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3689 +msgid "Single instance mode" +msgstr "Einzelinstanz-Modus" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:2493 msgid "Size" msgstr "Größe" -#: src/slic3r/GUI/Tab.cpp:1797 src/slic3r/GUI/Tab.cpp:2041 +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 msgid "Size and coordinates" msgstr "Größe und Koordinaten" -#: src/slic3r/GUI/BedShapeDialog.cpp:78 +#: src/slic3r/GUI/BedShapeDialog.cpp:110 msgid "Size in X and Y of the rectangular plate." msgstr "Größe der rechteckigen Platte in X und Y." -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1111 -#: src/libslic3r/ExtrusionEntity.cpp:318 +#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 msgid "Skirt" msgstr "Schürze" -#: src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Skirt and brim" msgstr "Schürze und Rand" -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "Skirt height" msgstr "Schürzenhöhe" -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Skirt Loops" msgstr "Schleifen für die Schürze" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1334 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1181 msgid "SLA gizmo keyboard shortcuts" msgstr "SLA Gizmo Tastaturkürzel" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1058 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:924 msgid "SLA gizmo turned off" msgstr "SLA Gizmo ausgeschaltet" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1017 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 msgid "SLA gizmo turned on" msgstr "SLA Gizmo eingeschaltet" -#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1524 +#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 msgid "SLA material" msgstr "SLA Material" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Material Profiles Selection" msgstr "SLA Material Profile Auswahl" -#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2613 src/libslic3r/PrintConfig.cpp:2614 msgid "SLA material type" msgstr "SLA Materialtyp" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Materials" msgstr "SLA Materialien" -#: src/slic3r/GUI/Preset.cpp:1523 +#: src/libslic3r/Preset.cpp:1302 msgid "SLA print" msgstr "SLA Druck" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "SLA print material notes" msgstr "SLA Druckmaterial-Anmerkungen" -#: src/slic3r/GUI/Plater.cpp:817 +#: src/slic3r/GUI/Plater.cpp:692 msgid "SLA print settings" msgstr "SLA Druckeinstellungen" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:996 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 msgid "SLA Support Points" msgstr "SLA Stützpunkte" -#: src/slic3r/GUI/GLCanvas3D.cpp:687 -msgid "SLA supports outside the print area were detected" -msgstr "SLA Stützstrukturen außerhalb des Druckraums entdeckt" +#: src/slic3r/GUI/GLCanvas3D.cpp:635 +msgid "SLA supports outside the print area were detected." +msgstr "SLA-Stützen außerhalb des Druckbereichs wurden erkannt." -#: src/slic3r/GUI/ConfigWizard.cpp:1530 +#: src/slic3r/GUI/ConfigWizard.cpp:1931 msgid "SLA Technology Printers" msgstr "SLA Technologie Drucker" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Slab" msgstr "Slab" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." msgstr "PrusaSlicer kann G-Code Dateien auf einen Drucker-Host hochladen. Dieses Feld sollte den Typ des Hosts enthalten." -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:107 msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." msgstr "PrusaSlicer kann G-Code Dateien zu einem Druckerhost hochladen. Dieses Feld sollte den API-Schlüssel oder das Kennwort enthalten, die für die Authentifizierung erforderlich sind." -#: src/libslic3r/PrintConfig.cpp:98 +#: src/libslic3r/PrintConfig.cpp:100 msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance." msgstr "PrusaSlicer kann G-Code Dateien auf einen Drucker-Host hochladen. Dieses Feld sollte den Hostnamen, die IP-Adresse oder die URL der Drucker-Hostinstanz enthalten." -#: src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1407 msgid "Slic3r will not scale speed down below this speed." msgstr "PrusaSlicer wird die Geschwindigkeit nicht unterhalb dieser Geschwindigkeit skalieren." -#: src/libslic3r/PrintConfig.cpp:3359 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Slice" msgstr "Slice" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Slice a file into a G-code" msgstr "Datei zu G-Code slicen" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Slice a file into a G-code, save as" msgstr "Datei zu G-Code slicen, speichern als" -#: src/libslic3r/PrintConfig.cpp:87 +#: src/libslic3r/PrintConfig.cpp:89 msgid "Slice gap closing radius" msgstr "Slice Lückenschlussradius" -#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5110 +#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5237 msgid "Slice now" msgstr "Jetzt slicen" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Slice das Modell und Export von SLA-Druckschichten als PNG." -#: src/libslic3r/PrintConfig.cpp:3354 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Slice the model and export toolpaths as G-code." msgstr "Modell slicen und Werkzeugwege als G-Code exportieren." -#: src/libslic3r/PrintConfig.cpp:3360 +#: src/libslic3r/PrintConfig.cpp:3559 msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." msgstr "Slice das Modell als FFF oder SLA basierend auf dem Konfigurationswert von printer_technology." -#: src/slic3r/GUI/Plater.cpp:216 +#: src/slic3r/GUI/Plater.cpp:222 msgid "Sliced Info" msgstr "Slice-Info" -#: src/slic3r/GUI/MainFrame.cpp:847 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5107 src/slic3r/GUI/Tab.cpp:1221 -#: src/slic3r/GUI/Tab.cpp:3662 +#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 +#: src/slic3r/GUI/Tab.cpp:4081 msgid "Slicing" msgstr "Slice" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:134 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:184 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 msgid "Slicing complete" msgstr "Slicing abgeschlossen" -#: src/libslic3r/SLAPrint.cpp:760 +#: src/libslic3r/SLAPrint.cpp:780 msgid "Slicing done" msgstr "Slicing abgeschlossen" -#: src/slic3r/GUI/MainFrame.cpp:874 +#: src/slic3r/GUI/MainFrame.cpp:1575 msgid "Slicing Done!" msgstr "Slicing abgeschlossen!" -#: src/libslic3r/SLAPrintSteps.cpp:245 +#: src/slic3r/GUI/NotificationManager.cpp:751 +msgid "Slicing finished." +msgstr "Slicing abgeschlossen." + +#: src/libslic3r/SLAPrintSteps.cpp:247 msgid "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "Das Slicen wurde wegen eines internen Fehlers gestoppt: Defekter Sliceindex." -#: src/libslic3r/SLAPrintSteps.cpp:45 +#: src/libslic3r/SLAPrintSteps.cpp:46 msgid "Slicing model" msgstr "Slice das Modell" -#: src/libslic3r/SLAPrintSteps.cpp:49 +#: src/libslic3r/SLAPrintSteps.cpp:50 msgid "Slicing supports" msgstr "Slice Stützstrukturen" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Slow" msgstr "Langsam" -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "Slow down if layer print time is below" msgstr "Langsamer drucken wenn die Schichtdruckzeit geringer ist als" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "Slow tilt" msgstr "Langsames Kippen" -#: src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Small perimeters" msgstr "Dünne Außenkonturen" -#: src/slic3r/GUI/GLCanvas3D.cpp:288 +#: src/libslic3r/PrintConfig.cpp:2801 +msgid "Small pillar diameter percent" +msgstr "Kleiner Pfeilerdurchmesser in Prozent" + +#: src/slic3r/GUI/GLCanvas3D.cpp:274 msgid "Smooth" msgstr "Glätten" -#: src/slic3r/GUI/GLCanvas3D.cpp:258 +#: src/slic3r/GUI/GLCanvas3D.cpp:247 msgid "Smoothing" msgstr "Glätten" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Snapshot name" msgstr "Name der Momentaufnahme" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Software &Releases" msgstr "Software &Release" -#: src/slic3r/GUI/PresetHints.cpp:184 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "Massives Infill" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1882 msgid "Solid infill" msgstr "Massives Infill" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1859 msgid "Solid infill every" msgstr "Massives Infill alle" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Solid infill extruder" msgstr "Massives Infill Extruder" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill threshold area" msgstr "Massives Infill Flächen Schwellwert" -#: src/slic3r/GUI/Tab.cpp:1065 src/libslic3r/PrintConfig.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 msgid "Solid layers" msgstr "Massive Schichten" -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:790 msgid "Soluble material" msgstr "Lösliches Material" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Soluble material is most likely used for a soluble support." msgstr "Lösliches Material wird meistens für Stützstrukturen verwendet." -#: src/libslic3r/PrintConfig.cpp:937 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:735 +msgid "Some fields are too long to fit. Right mouse click reveals the full text." +msgstr "Einige Texte sind zu lang. Ein rechter Mausklick zeigt den vollständigen Text an." + +#: src/libslic3r/PrintConfig.cpp:981 msgid "Some G/M-code commands, including temperature control and others, are not universal. Set this option to your printer's firmware to get a compatible output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any extrusion value at all." msgstr "Einige G/M-Code Befehle, einschließlich Temperaturregelung und andere, sind nicht universell einsetzbar. Stellen Sie diese Option auf die Firmware Ihres Druckers ein, um eine kompatible Ausgabe zu erhalten. Der Zusatz \"No Extrusion\" verhindert, dass PrusaSlicer überhaupt einen Extrusionswert exportiert." -#: src/slic3r/GUI/GLCanvas3D.cpp:688 -msgid "Some objects are not visible" -msgstr "Einige Objekte sind nicht sichtbar" +#: src/slic3r/GUI/Plater.cpp:2309 +#, c-format +msgid "" +"Some object(s) in file %s looks like saved in inches.\n" +"Should I consider them as a saved in inches and convert them?" +msgstr "" +"Einige Objekte in der Datei %s sehen aus wie in Zoll gespeichert.\n" +"Als in Zoll gespeicherte Objekte betrachten und konvertieren?" -#: src/libslic3r/Print.cpp:1226 +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "Some objects are not visible." +msgstr "Einige Objekte sind nicht sichtbar." + +#: src/libslic3r/Print.cpp:1252 msgid "Some objects are too close; your extruder will collide with them." msgstr "Einige Objekte sind zu nahe; Ihr Extruder wird mit ihnen zusammenstoßen." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1254 msgid "Some objects are too tall and cannot be printed without extruder collisions." msgstr "Einige Objekte sind zu hoch und können nicht ohne Zusammenstoss mit dem Extruder gedruckt werden." -#: src/libslic3r/PrintConfig.cpp:2824 +#: src/libslic3r/PrintConfig.cpp:2988 msgid "Some objects can get along with a few smaller pads instead of a single big one. This parameter defines how far the center of two smaller pads should be. If theyare closer, they will get merged into one pad." msgstr "Einige Objekte können mit ein paar kleineren Grundschichten auskommen, anstatt mit einer einzigen großen. Dieser Parameter definiert, wie weit die Mittelpunkte von zwei kleineren Grundschichten entfernt sein soll. Wenn sie näher sind, werden sie zu einem Block zusammengeführt." -#: src/libslic3r/PrintConfig.cpp:2187 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." msgstr "Mit einigen Druckern oder Druckerkonfigurationen ist es schwierig, mit einer variablen Schichthöhe zu drucken. Standardmässig aktiviert." -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2126 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "Abstand zwischen den Schnittstellenlinien. Auf null stellen, um ein massives Interface zu erhalten." -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:1155 +msgid "Spacing between ironing passes" +msgstr "Abstand zwischen Bügelwegen" + +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Spacing between support material lines." msgstr "Abstand zwischen Stützstrukturlinien." -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:616 -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 -#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 msgid "Speed" msgstr "Geschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Geschwindigkeit (baud) des USB/seriellen Ports für den Drucker Anschluß." - -#: src/libslic3r/GCode/PreviewData.cpp:351 +#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 msgid "Speed (mm/s)" msgstr "Geschwindigkeit (mm/s)" -#: src/libslic3r/PrintConfig.cpp:920 +#: src/libslic3r/PrintConfig.cpp:964 msgid "Speed for filling small gaps using short zigzag moves. Keep this reasonably low to avoid too much shaking and resonance issues. Set zero to disable gaps filling." msgstr "Geschwindigkeit, mit der kleine Lücken mit kurzen Zickzackbewegungen gefüllt werden. Beschränken Sie diese auf einen mässigen Wert, um übermässiges Rütteln und Resonanzprobleme zu vermeiden. Auf null gesetzt, wird das Füllen kleiner Lücken deaktiviert." -#: src/slic3r/GUI/Tab.cpp:1158 +#: src/slic3r/GUI/Tab.cpp:1488 msgid "Speed for non-print moves" msgstr "Geschwindigkeit für Bewegungen zwischen den Druckvorgängen" -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "Geschwindigkeit für Außenkonturen (Konturen, bzw. vertikale Hüllen). Für Automatik auf null setzen." -#: src/slic3r/GUI/Tab.cpp:1146 +#: src/slic3r/GUI/Tab.cpp:1475 msgid "Speed for print moves" msgstr "Geschwindigkeit für Druckbewegungen" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "Speed for printing bridges." msgstr "Brückendruckgeschwindigkeit." -#: src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:1884 msgid "Speed for printing solid regions (top/bottom/internal horizontal shells). This can be expressed as a percentage (for example: 80%) over the default infill speed above. Set to zero for auto." msgstr "Druckgeschwindigkeit für massive Bereiche (obere/untere/innenliegende waagrechte Hüllen). Sie kann als Prozentwert (z.B. 80%) der oben eingegebenen standardmässigen Infill-Geschwindigkeit angegeben werden. Für Automatik auf null setzen." -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." msgstr "Geschwindigkeit für den Druck von Trägermaterial-Schnittstellenschichten. Wenn es als Prozentsatz (z.B. 50%) ausgedrückt wird, wird es über die Geschwindigkeit des Trägermaterials berechnet." -#: src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Speed for printing support material." msgstr "Druckgeschwindigkeit der Stützstrukturen." -#: src/libslic3r/PrintConfig.cpp:1049 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "Druckgeschwindigkeit für den Infill. Für Automatik auf null setzen." -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2262 msgid "Speed for printing top solid layers (it only applies to the uppermost external layers and not to their internal solid layers). You may want to slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." msgstr "Druckgeschwindigkeit für die oberen massiven Schichten (betrifft nur die obersten Außenkonturen und nicht deren innenliegende massiven Schichten). Wir empfehlen, diesen Wert zu reduzieren, um eine schönere Oberfläche zu erhalten. Dies kann als Prozentwert (z.B. 80%) der oben eingegebenen Geschwindigkeit für massives Infill angegeben werden. Für Automatik auf null setzen." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2296 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "Bewegungsgeschwindigkeit (zwischen weit entfernten Extrusionsorten)." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Speed of the first cooling move" msgstr "Geschwindigkeit der ersten Kühlbewegung" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:714 msgid "Speed of the last cooling move" msgstr "Geschwindigkeit der letzten Kühlbewegung" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:652 msgid "Speed used at the very beginning of loading phase." msgstr "Geschwindigkeit, die zu Beginn der Ladephase verwendet wird." -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Speed used for loading the filament on the wipe tower." msgstr "Geschwindigkeit, mit der Filament auf dem Reinigungsturm geladen wird." -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:660 msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." msgstr "Geschwindigkeit, mit der Filament auf dem Reinigungsturm entladen wird (betrifft nicht den ersten Teil des Entladens direkt nach dem Rammen)." -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Speed used for unloading the tip of the filament immediately after ramming." msgstr "Geschwindigkeit, mit der die Spitze des Filaments unmittelbar nach dem Rammen entladen wird." -#: src/slic3r/GUI/Mouse3DController.cpp:296 +#: src/slic3r/GUI/Mouse3DController.cpp:279 msgid "Speed:" msgstr "Geschwindigkeit:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Sphere" msgstr "Kugel" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Spiral vase" msgstr "Spiralvasenmodus" -#: src/slic3r/GUI/ConfigManipulation.cpp:90 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Spiral Vase" msgstr "Spiralvasenmodus" -#: src/slic3r/GUI/Plater.cpp:4019 src/slic3r/GUI/Plater.cpp:4034 -#: src/slic3r/GUI/Plater.cpp:4048 src/libslic3r/PrintConfig.cpp:3471 +#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 msgid "Split" msgstr "Trennen" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:3939 msgid "Split the selected object" msgstr "Teile das gewählte Objekt" -#: src/slic3r/GUI/Plater.cpp:4014 src/slic3r/GUI/Plater.cpp:4034 +#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 msgid "Split the selected object into individual objects" msgstr "Ausgewähltes Objekt in Einzelobjekte trennen" -#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4048 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 msgid "Split the selected object into individual sub-parts" msgstr "Ausgewähltes Objekt in einzelne Unterteile trennen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4550 +#: src/slic3r/GUI/GLCanvas3D.cpp:4916 msgid "Split to objects" msgstr "In Objekte trennen" -#: src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Split to Objects" msgstr "In Objekte trennen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1487 +#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" msgstr "In Teile trennen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2274 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Split to Parts" msgstr "In Teile trennen" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "Standard" msgstr "Standard" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:884 msgid "Stars" msgstr "Sterne" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "Start a new project" msgstr "Ein neues Projekt beginnen" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "Starte auf Höhe" -#: src/slic3r/GUI/Tab.cpp:1528 src/slic3r/GUI/Tab.cpp:1976 -#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 msgid "Start G-code" msgstr "Start G-Code" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "Start new slicing process" msgstr "Neuen Slicing-Prozess starten" @@ -7347,7 +8432,37 @@ msgstr "Neuen Slicing-Prozess starten" msgid "Start printing after upload" msgstr "Beginne den Druckjob nach dem Hochladen" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Start the application" +msgstr "Anwendung starten" + +#: src/slic3r/GUI/GUI_App.cpp:386 +msgid "" +"Starting with %1% 2.3, configuration directory on Linux has changed (according to XDG Base Directory Specification) to \n" +"%2%.\n" +"\n" +"This directory did not exist yet (maybe you run the new version for the first time).\n" +"However, an old %1% configuration directory was detected in \n" +"%3%.\n" +"\n" +"Consider moving the contents of the old directory to the new location in order to access your profiles, etc.\n" +"Note that if you decide to downgrade %1% in future, it will use the old location again.\n" +"\n" +"What do you want to do now?" +msgstr "" +"Beginnend mit %1% 2.3 hat sich das Konfigurationsverzeichnis unter Linux (gemäß XDG Base Directory Specification) geändert in \n" +"%2%.\n" +"\n" +"Dieses Verzeichnis existierte noch nicht (vielleicht führen Sie die neue Version zum ersten Mal aus).\n" +"Es wurde jedoch ein altes %1%-Konfigurationsverzeichnis entdeckt in \n" +"%3%.\n" +"\n" +"Ziehen Sie in Betracht, den Inhalt des alten Verzeichnisses an den neuen Ort zu verschieben, um auf Ihre Profile usw. zuzugreifen.\n" +"Beachten Sie, dass bei einem zukünftigen Downgrade von %1% wieder der alte Speicherort verwendet wird.\n" +"\n" +"Was möchten Sie jetzt tun?" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 msgid "Status" msgstr "Status" @@ -7355,166 +8470,160 @@ msgstr "Status" msgid "Status:" msgstr "Status:" -#: src/slic3r/GUI/Tab.cpp:2209 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 msgid "Stealth" msgstr "Stealth" -#: src/slic3r/GUI/Plater.cpp:1291 +#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 msgid "stealth mode" msgstr "Stealth Modus" -#: src/slic3r/GUI/Plater.cpp:4985 +#: src/slic3r/GUI/GCodeViewer.cpp:2557 +msgid "Stealth mode" +msgstr "Stealth Modus" + +#: src/slic3r/GUI/Plater.cpp:5118 #, c-format msgid "STL file exported to %s" msgstr "Die STL-Datei wurde exportiert zu %s" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Stop at height" msgstr "Stoppe auf Höhe" -#: src/slic3r/GUI/Tab.cpp:1693 src/slic3r/GUI/Tab.cpp:1928 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "Erfolg!" -#: src/slic3r/GUI/PresetHints.cpp:203 +#: src/slic3r/GUI/Plater.cpp:2047 +#, c-format +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Erfolgreich ausgeworfen. Das Gerät %s(%s) kann nun sicher vom Computer entfernt werden." + +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "Stützen" -#: src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "Support base diameter" msgstr "Stützfuß Durchmesser" -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base height" msgstr "Stützfuß Höhe" -#: src/libslic3r/PrintConfig.cpp:2711 +#: src/libslic3r/PrintConfig.cpp:2875 msgid "Support base safety distance" msgstr "Sicherheitsabstand der Stützbasis" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Blocker" msgstr "Stützblocker" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/libslic3r/PrintConfig.cpp:895 +msgid "Support Cubic" +msgstr "Stütz-kubisch" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Enforcer" msgstr "Stützverstärker" -#: src/slic3r/GUI/ConfigManipulation.cpp:163 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Support Generator" msgstr "Stütz-Generator" -#: src/slic3r/GUI/Tab.cpp:3608 +#: src/slic3r/GUI/Tab.cpp:4018 msgid "Support head" msgstr "Stützkopf" -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Support head front diameter" -msgstr "Durchmesser des Stützkopfes vorne" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Support head penetration" -msgstr "Eindringtiefe des Stützkopfes" - -#: src/libslic3r/PrintConfig.cpp:2638 -msgid "Support head width" -msgstr "Stützkopfbreite" - -#: src/slic3r/GUI/PresetHints.cpp:213 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "Schnittstelle zu den Stützen" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/GUI_Preview.cpp:246 -#: src/slic3r/GUI/Tab.cpp:1120 src/slic3r/GUI/Tab.cpp:1121 -#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 -#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 -#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 -#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 -#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 -#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 +#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:95 +#: src/slic3r/GUI/GUI_ObjectList.cpp:654 src/slic3r/GUI/GUI_Preview.cpp:311 +#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 +#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 +#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "Support material" msgstr "Stützstrukturen" -#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 -#: src/libslic3r/PrintConfig.cpp:1991 +#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 +#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 msgid "Support material interface" msgstr "Schnittstellenmaterial zu den Stützstrukturen" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." msgstr "Für Überhänge, deren Neigungswinkel (90° = vertikal) oberhalb der vorgegebenen Schwelle liegt, wird keine Stützstruktur erzeugt. Mit anderen Worten, dieser Wert stellt die größte horizontale Steigung (gemessen von der horizontalen Ebene) dar, die Sie ohne Trägermaterial drucken können. Für die automatische Erkennung auf null setzen (empfohlen)." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Support material/raft interface extruder" msgstr "Stützstrukturen/Raft Schnittstellen Extruder" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "Support material/raft/skirt extruder" msgstr "Stützstrukturen/Raft/Schürzen Extruder" -#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 -#: src/libslic3r/PrintConfig.cpp:2674 +#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2838 msgid "Support on build plate only" -msgstr "Stützstrukturen nur auf dem Druckbrett" +msgstr "Stützstrukturen nur auf dem Druckbett" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:762 msgid "Support parameter change" msgstr "Stützparameter Änderung" -#: src/slic3r/GUI/Tab.cpp:3613 +#: src/slic3r/GUI/Tab.cpp:4023 msgid "Support pillar" msgstr "Stützpfeiler" -#: src/libslic3r/PrintConfig.cpp:2658 -msgid "Support pillar connection mode" -msgstr "Stützpfeiler Verbindungsmodus" - -#: src/libslic3r/PrintConfig.cpp:2648 -msgid "Support pillar diameter" -msgstr "Durchmesser der Stützpfeiler" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -#: src/libslic3r/PrintConfig.cpp:2764 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/libslic3r/PrintConfig.cpp:2928 msgid "Support points density" msgstr "Stützpunktdichte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1196 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "Support points edit" msgstr "Stützpunkte editieren" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:624 -#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3604 -#: src/slic3r/GUI/Tab.cpp:3605 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 -#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2682 -#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2703 -#: src/libslic3r/PrintConfig.cpp:2712 src/libslic3r/PrintConfig.cpp:2725 -#: src/libslic3r/PrintConfig.cpp:2735 src/libslic3r/PrintConfig.cpp:2744 -#: src/libslic3r/PrintConfig.cpp:2754 src/libslic3r/PrintConfig.cpp:2765 -#: src/libslic3r/PrintConfig.cpp:2773 +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 +#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 +#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 +#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 +#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 msgid "Supports" msgstr "Stützen" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "supports and pad" msgstr "Stützen und Grundschicht" -#: src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1185 msgid "Supports remaining times" msgstr "Unterstützt Restzeit" -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports stealth mode" msgstr "Unterstützt Stealth Modus" -#: src/slic3r/GUI/ConfigManipulation.cpp:159 +#: src/slic3r/GUI/ConfigManipulation.cpp:158 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters" @@ -7522,44 +8631,60 @@ msgstr "" "Stützen funktionieren besser, wenn die folgende Funktion aktiviert ist:\n" "- Erkennen von Umfangbrücken" -#: src/slic3r/GUI/Preferences.cpp:87 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "\"Standard\"-Einstellungen unterdrücken" -#: src/slic3r/GUI/Preferences.cpp:89 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." msgstr "\"Standard\"-Einstellungen in den Auswahlen für Druck / Filament / Drucker unterdrücken, falls andere gültige Voreinstellungen vorhanden sind." -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/Mouse3DController.cpp:318 +msgid "Swap Y/Z axes" +msgstr "Y/Z-Achsen vertauschen" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Switch between Editor/Preview" +msgstr "Umschalten zwischen Editor/Vorschau" + +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Switch code to Change extruder" msgstr "Code umschalten auf Extruder wechseln" -#: src/slic3r/GUI/DoubleSlider.cpp:1179 +#: src/slic3r/GUI/DoubleSlider.cpp:1306 msgid "Switch code to Color change (%1%) for:" msgstr "Umschalten des Codes auf Farbwechsel (%1%) für:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Switch to 3D" msgstr "Zeige 3D" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1376 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1223 msgid "Switch to editing mode" msgstr "Zum Bearbeitungsmodus umschalten" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Switch to Preview" msgstr "Wechseln zur Vorschau" -#: src/slic3r/GUI/wxExtensions.cpp:703 +#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Switch to Settings" +msgstr "Zu Einstellungen wechseln" + +#: src/slic3r/GUI/wxExtensions.cpp:623 #, c-format msgid "Switch to the %s mode" msgstr "Wechseln zum %s Modus" -#: src/slic3r/GUI/GUI_App.cpp:882 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 +msgid "Switching Presets: Unsaved Changes" +msgstr "Voreinstellungen umschalten: Nicht gespeicherte Änderungen" + +#: src/slic3r/GUI/GUI_App.cpp:1608 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." @@ -7577,65 +8702,72 @@ msgstr "" "\n" "Wollen Sie fortfahren?" -#: src/slic3r/GUI/Tab.cpp:1014 +#: src/slic3r/GUI/Tab.cpp:1332 msgid "symbolic profile name" msgstr "symbolischer Profilname" -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." msgstr "Stützschichten mit den Druckschichten des Objekts synchronisieren. Dies ist nützlich bei Multi-Material-Druckern, bei denen der Wechsel des Extruders kostenaufwendig ist." -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "Synchronize with object layers" msgstr "Mit Objektschichten synchronisieren" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "System &Info" msgstr "System&informationen" -#: src/slic3r/GUI/SysInfoDialog.cpp:78 +#: src/slic3r/GUI/SysInfoDialog.cpp:90 src/slic3r/GUI/SysInfoDialog.cpp:92 msgid "System Information" msgstr "Systeminformationen" -#: src/slic3r/GUI/Preset.cpp:1109 src/slic3r/GUI/Preset.cpp:1164 -#: src/slic3r/GUI/Preset.cpp:1242 src/slic3r/GUI/Preset.cpp:1284 -#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1672 +#: src/slic3r/GUI/PresetComboBoxes.cpp:188 +#: src/slic3r/GUI/PresetComboBoxes.cpp:226 +#: src/slic3r/GUI/PresetComboBoxes.cpp:724 +#: src/slic3r/GUI/PresetComboBoxes.cpp:774 +#: src/slic3r/GUI/PresetComboBoxes.cpp:886 +#: src/slic3r/GUI/PresetComboBoxes.cpp:930 msgid "System presets" msgstr "Systemvoreinstellungen" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Take Configuration &Snapshot" msgstr "Erfa&ssen einer Konfigurations-Momentaufnahme" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Taking configuration snapshot" msgstr "Ich erfasse eine Momentaufnahme der Konfiguration" -#: src/slic3r/GUI/Tab.cpp:1433 src/libslic3r/PrintConfig.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:1779 msgid "Temperature" msgstr "Temperatur" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1919 msgid "Temperature difference to be applied when an extruder is not active. Enables a full-height \"sacrificial\" skirt on which the nozzles are periodically wiped." msgstr "Der anzuwendende Temperaturunterschied, wenn kein Extruder aktiv ist. Dies aktiviert eine \"Wegwerf-\"Schürze über die ganze Druckhöhe, auf der die Düsen periodisch gereinigt werden." -#: src/libslic3r/PrintConfig.cpp:1803 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "Temperature variation" msgstr "Temperaturen" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Temperatures" msgstr "Temperaturen" -#: src/slic3r/GUI/Tab.cpp:1677 src/slic3r/GUI/Tab.cpp:1915 +#: src/slic3r/GUI/Tab.cpp:2215 +msgid "Template Custom G-code" +msgstr "Vorlage Benutzerdefinierter G-Code" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 msgid "Test" msgstr "Test" -#: src/slic3r/GUI/BedShapeDialog.cpp:172 +#: src/slic3r/GUI/BedShapeDialog.cpp:315 msgid "Texture" msgstr "Textur" -#: src/slic3r/GUI/ConfigManipulation.cpp:208 +#: src/slic3r/GUI/ConfigManipulation.cpp:207 msgid "The %1% infill pattern is not supposed to work at 100%% density." msgstr "Das %1% Füllmuster ist nicht für die Arbeit mit 100%% Dichte vorgesehen." @@ -7653,11 +8785,11 @@ msgstr "" "Das %s-Gerät wurde nicht gefunden.\n" "Wenn das Gerät angeschlossen ist, drücken Sie bitte die Reset-Taste neben dem USB-Anschluss...." -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1238 msgid "The current custom preset will be detached from the parent system preset." msgstr "Die aktuelle benutzerdefinierte Voreinstellung wird von der Voreinstellung des übergeordneten Systems gelöst." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:925 msgid "" "The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" "Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" @@ -7667,120 +8799,137 @@ msgstr "" "Eine ungleiche Skalierung von geschwenkten Objekten ist nur im Weltkoordinatensystem möglich,\n" "sobald die Drehung in die Objektkoordinaten eingearbeitet wurde." -#: src/libslic3r/PrintConfig.cpp:2726 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "The default angle for connecting support sticks and junctions." msgstr "Der Standardwinkel für die Verbindung von Stützstäben und Verbindungen." -#: src/libslic3r/SLAPrint.cpp:631 +#: src/libslic3r/SLAPrint.cpp:645 msgid "The endings of the support pillars will be deployed on the gap between the object and the pad. 'Support base safety distance' has to be greater than the 'Pad object gap' parameter to avoid this." msgstr "Die Enden der Stützpfeiler werden auf dem Spalt zwischen dem Objekt und der Grundschicht eingesetzt. Der \"Sicherheitsabstand der Stützbasis\" muss größer sein als der Parameter \"Objektabstand Grundschicht\", um dies zu vermeiden." -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:525 msgid "The extruder to use (unless more specific extruder settings are specified). This value overrides perimeter and infill extruders, but not the support extruders." msgstr "Der Extruder, der verwendet werden soll, falls keine sonstigen Extrudereinstellungen angegeben wurden. Dies übersteuert die Angaben für die Außenkontur- und Infill-Extruder, aber nicht die Angabe des Extruders für die Stützen." -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1047 msgid "The extruder to use when printing infill." msgstr "Extruder der beim Infill benutzt wird." -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "Extruder der beim Umfang und Rand Drucken benutzt werden soll. Der erste Extruder ist 1." -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "The extruder to use when printing solid infill." msgstr "Der Extruder der beim Drucken von massivem Infill benutzt werden soll." -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:2108 msgid "The extruder to use when printing support material interface (1+, 0 to use the current extruder to minimize tool changes). This affects raft too." msgstr "Der Extruder, der für den Druck von Schnittstellen zu den Stützstrukturen verwendet wird (1+, oder null um den aktuellen Extruder für die Minimierung von Werkzeugwechseln zu verwenden). Dies betrifft auch den Raft." -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." msgstr "Der Extruder, der für den Druck von Stützstrukturen, Raft und Schürze verwendet wird (1+, oder null um den aktuellen Extruder für die Minimierung von Werkzeugwechseln zu verwenden)." -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:763 msgid "The filament material type for use in custom G-codes." msgstr "Die Materialart des Filaments zur Verwendung in benutzerdefinierten G-Codes." -#: src/libslic3r/PrintConfig.cpp:3494 +#: src/libslic3r/PrintConfig.cpp:3693 msgid "The file where the output will be written (if not specified, it will be based on the input file)." msgstr "Die Datei, in die die Ausgabe geschrieben wird (falls nicht angegeben, basiert sie auf der Eingabedatei)." -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1195 msgid "The firmware supports stealth mode" msgstr "Die Firmware unterstützt den Stealth Modus" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:122 msgid "The first layer will be shrunk in the XY plane by the configured value to compensate for the 1st layer squish aka an Elephant Foot effect." msgstr "Die erste Schicht wird in der XY-Ebene um den vorgegebenen Wert verkleinert, um das Ausquetschen in der ersten Schicht (\"Elephant Foot\"-Effekt) zu kompensieren." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3457 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/SavePresetDialog.cpp:117 msgid "the following characters are not allowed:" msgstr "die folgenden Zeichen sind nicht erlaubt:" -#: src/slic3r/GUI/ConfigWizard.cpp:1830 +#: src/slic3r/GUI/ConfigWizard.cpp:2257 msgid "The following FFF printer models have no filament selected:" msgstr "Bei den folgenden FFF-Druckermodellen wurde kein Filament ausgewählt:" -#: src/slic3r/GUI/ConfigWizard.cpp:1848 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1004 +msgid "The following presets were modified:" +msgstr "Die folgenden Voreinstellungen wurden geändert:" + +#: src/slic3r/GUI/ConfigWizard.cpp:2275 msgid "The following SLA printer models have no materials selected:" msgstr "Bei den folgenden SLA-Druckermodellen wurden keine Materialien ausgewählt:" -#: src/slic3r/GUI/Tab.cpp:3461 +#: src/slic3r/GUI/SavePresetDialog.cpp:125 msgid "the following suffix is not allowed:" msgstr "das folgenden Suffix ist nicht erlaubt:" -#: src/libslic3r/PrintConfig.cpp:2871 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "The gap between the object bottom and the generated pad in zero elevation mode." msgstr "Der Abstand zwischen dem Objektboden und der erzeugten Grundschicht im Nullhöhenmodus." -#: src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "The height of the pillar base cone" msgstr "Die Höhe des Pfeilergrundkegels" -#: src/slic3r/GUI/DoubleSlider.cpp:1922 +#: src/slic3r/GUI/DoubleSlider.cpp:2140 msgid "The last color change data was saved for a multi extruder printing with tool changes for whole print." msgstr "Die letzten Farbwechsel-Daten wurden für einen Multi-Extruder-Druck mit Werkzeugwechsel für den gesamten Druck gespeichert." -#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 msgid "The last color change data was saved for a multi extruder printing." msgstr "Die letzten Farbwechsel-Daten wurden für einen Multi-Extruder-Druck gespeichert." -#: src/slic3r/GUI/DoubleSlider.cpp:1899 +#: src/slic3r/GUI/DoubleSlider.cpp:2118 msgid "The last color change data was saved for a single extruder printing." msgstr "Die letzten Farbwechsel-Daten wurden für einen Einzel-Extruder-Druck gespeichert." -#: src/libslic3r/PrintConfig.cpp:2745 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." msgstr "Der maximale Abstand zwischen 2 Pfeilern, die miteinander verbunden werden. Ein Wert von null verhindert die Kaskadierung von Pfeilern." -#: src/libslic3r/PrintConfig.cpp:2736 +#: src/libslic3r/PrintConfig.cpp:2900 msgid "The max length of a bridge" msgstr "Die maximale Länge einer Überbrückung" -#: src/libslic3r/PrintConfig.cpp:2714 +#: src/libslic3r/PrintConfig.cpp:2878 msgid "The minimum distance of the pillar base from the model in mm. Makes sense in zero elevation mode where a gap according to this parameter is inserted between the model and the pad." msgstr "Der Mindestabstand des Säulenfußes zum Modell in mm. Sinnvoll im Nullhöhenmodus, bei dem ein Spalt gemäß diesem Parameter zwischen Modell und Grundschicht eingefügt wird." -#: src/libslic3r/PrintConfig.cpp:185 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "The name cannot be empty." +msgstr "Name kann nicht leer sein." + +#: src/libslic3r/PrintConfig.cpp:219 msgid "The number of bottom solid layers is increased above bottom_solid_layers if necessary to satisfy minimum thickness of bottom shell." msgstr "Die Anzahl der unteren Massivschichten wird über bottom_solid_layers erhöht, wenn es notwendig ist, um die Mindeststärke der Bodenschale zu erfüllen." -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2286 msgid "The number of top solid layers is increased above top_solid_layers if necessary to satisfy minimum thickness of top shell. This is useful to prevent pillowing effect when printing with variable layer height." msgstr "Die Anzahl der obersten Massivschichten wird über top_solid_layers erhöht, wenn es notwendig ist, um die Mindeststärke der Oberschale zu erfüllen. Dies ist nützlich, um einen Kisseneffekt beim Drucken mit variabler Lagenhöhe zu verhindern." -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/slic3r/GUI/Plater.cpp:2326 +msgid "The object appears to be saved in inches" +msgstr "Das Objekt scheint in Zoll gespeichert zu sein" + +#: src/libslic3r/PrintConfig.cpp:2420 msgid "The object will be grown/shrunk in the XY plane by the configured value (negative = inwards, positive = outwards). This might be useful for fine-tuning hole sizes." msgstr "Das Objekt wird in der XY-Ebene um den konfigurierten Wert (negativ = einwärts, positiv = auswärts) vergrößert/verkleinert. Dies kann bei der Feinabstimmung von Lochgrößen hilfreich sein." -#: src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1611 msgid "The object will be raised by this number of layers, and support material will be generated under it." msgstr "Das Objekt wird um diese Anzahl von Schichten angehoben, und darunter wird Trägermaterial erzeugt." -#: src/libslic3r/PrintConfig.cpp:2424 +#: src/libslic3r/PrintConfig.cpp:2803 +msgid "The percentage of smaller pillars compared to the normal pillar diameter which are used in problematic areas where a normal pilla cannot fit." +msgstr "Der Prozentsatz der im Vergleich zum normalen Pfeilerdurchmesser kleineren Pfeiler, die in problematischen Bereichen eingesetzt werden, in die ein normaler Pfeiler nicht passt." + +#: src/libslic3r/PrintConfig.cpp:2567 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -7790,39 +8939,51 @@ msgstr "" "Wenn der Druckbereich den angegebenen Wert überschreitet,\n" "wird eine langsame Verkippung verwendet, andernfalls - eine schnelle Verkippung" -#: src/slic3r/GUI/GUI_App.cpp:932 -msgid "The presets on the following tabs were modified" -msgstr "Die Voreinstellungen auf den folgenden Reitern wurden geändert" +#: src/slic3r/GUI/Tab.cpp:3430 +msgid "The physical printer(s) below is based on the preset, you are going to delete." +msgstr "Der (die) untenstehende(n) physische(n) Drucker basiert (basieren) auf der Voreinstellung, die Sie löschen möchten." -#: src/libslic3r/PrintConfig.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:3438 +msgid "The physical printer(s) below is based only on the preset, you are going to delete." +msgstr "Der (die) untenstehende(n) physische(n) Drucker basiert (basieren) nur auf der Voreinstellung, die Sie löschen möchten." + +#: src/slic3r/GUI/GUI_App.cpp:1676 +msgid "The preset(s) modifications are successfully saved" +msgstr "Die Änderungen der Voreinstellung(en) wurden erfolgreich gespeichert" + +#: src/libslic3r/PrintConfig.cpp:1988 msgid "The printer multiplexes filaments into a single hot end." msgstr "Der Drucker multiplext mehrere Filamente in einem Hotend." -#: src/libslic3r/Format/3mf.cpp:1630 +#: src/libslic3r/Format/3mf.cpp:1667 msgid "The selected 3mf file has been saved with a newer version of %1% and is not compatible." msgstr "Die ausgewählte 3mf-Datei wurde mit einer neueren Version von %1% gespeichert und ist nicht kompatibel." -#: src/libslic3r/Format/AMF.cpp:934 +#: src/libslic3r/Format/AMF.cpp:955 msgid "The selected amf file has been saved with a newer version of %1% and is not compatible." msgstr "Die ausgewählte amf-Datei wurde mit einer neueren Version von %1% gespeichert und ist nicht kompatibel." -#: src/slic3r/GUI/BedShapeDialog.cpp:513 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "The selected file" +msgstr "Die gewählte Datei" + +#: src/slic3r/GUI/BedShapeDialog.cpp:589 msgid "The selected file contains no geometry." msgstr "Die ausgewählte Datei enthält keine Geometrie." -#: src/slic3r/GUI/BedShapeDialog.cpp:517 +#: src/slic3r/GUI/BedShapeDialog.cpp:593 msgid "The selected file contains several disjoint areas. This is not supported." msgstr "Die ausgewählte Datei enthält mehrere nicht zusammenhängende Bereiche. Dies wird nicht unterstützt." -#: src/slic3r/GUI/Plater.cpp:2970 +#: src/slic3r/GUI/Plater.cpp:2763 msgid "The selected object can't be split because it contains more than one volume/material." msgstr "Das ausgewählte Objekt konnte nicht getrennt werden, weil es aus mehr als einem Volumen/Material besteht." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2270 src/slic3r/GUI/Plater.cpp:2978 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 msgid "The selected object couldn't be split because it contains only one part." msgstr "Das ausgewählte Objekt konnte nicht getrennt werden, da es nur aus einem Teil besteht." -#: src/slic3r/GUI/MainFrame.cpp:461 +#: src/slic3r/GUI/MainFrame.cpp:1003 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -7830,7 +8991,7 @@ msgstr "" "Das ausgewählte Projekt ist nicht mehr verfügbar.\n" "Wollen Sie es aus der Liste der letzten Projekte entfernen?" -#: src/slic3r/GUI/DoubleSlider.cpp:998 +#: src/slic3r/GUI/DoubleSlider.cpp:1121 msgid "" "The sequential print is on.\n" "It's impossible to apply any custom G-code for objects printing sequentually.\n" @@ -7840,20 +9001,24 @@ msgstr "" "Es ist unmöglich, einen benutzerdefinierten G-Code für Objekte anzuwenden, die sequentiell gedruckt werden.\n" "Dieser Code wird bei der G-Code-Generierung nicht verarbeitet." -#: src/libslic3r/PrintConfig.cpp:2846 +#: src/slic3r/GUI/ConfigWizard.cpp:1187 +msgid "The size of the object can be specified in inches" +msgstr "Die Größe des Objekts kann in Zoll angegeben werden" + +#: src/libslic3r/PrintConfig.cpp:3010 msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." msgstr "Die Neigung der Grundschichtwand in Bezug auf die Druckbettebene. 90 Grad bedeutet gerade Wände." -#: src/libslic3r/PrintConfig.cpp:1614 +#: src/libslic3r/PrintConfig.cpp:1722 msgid "The speed for loading of a filament into extruder after retraction (it only applies to the extruder motor). If left to zero, the retraction speed is used." msgstr "Die Geschwindigkeit, mit der ein Filament nach dem Einzug wieder in den Extruder vorgeschoben wird. Falls null, wird die Einzugsgeschwindigkeit verwendet." -#: src/libslic3r/PrintConfig.cpp:1606 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "Die Einzugsgeschwindigkeit (sie betrifft nur den Extruderantrieb)." -#: src/slic3r/GUI/ConfigManipulation.cpp:81 -#, no-c-format +#: src/slic3r/GUI/ConfigManipulation.cpp:80 +#, c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -7871,41 +9036,42 @@ msgstr "" "- Vertikale Schalenstärke sicherstellen aktiv\n" "- Dünne Wände erkennen nicht aktiv" -#: src/libslic3r/Print.cpp:1237 +#: src/libslic3r/Print.cpp:1263 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "Die Option Spiralvase kann nur beim Drucken eines einzelnen Objekts verwendet werden." -#: src/libslic3r/Print.cpp:1244 +#: src/libslic3r/Print.cpp:1270 msgid "The Spiral Vase option can only be used when printing single material objects." msgstr "Die Option Spiralvase kann nur beim Drucken von Objekten aus einem einzigen Material verwendet werden." -#: src/slic3r/GUI/Tab.cpp:3068 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 msgid "The supplied name is empty. It can't be saved." msgstr "Der angegebene Name ist leer. Die Speicherung kann nicht erfolgen." -#: src/slic3r/GUI/Tab.cpp:3465 +#: src/slic3r/GUI/SavePresetDialog.cpp:131 msgid "The supplied name is not available." msgstr "Der angegebene Name ist nicht verfügbar." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3819 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3926 src/slic3r/GUI/Tab.cpp:3456 -#: src/slic3r/GUI/Tab.cpp:3460 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 +#: src/slic3r/GUI/SavePresetDialog.cpp:124 msgid "The supplied name is not valid;" msgstr "Der angegebene Name ist ungültig;" -#: src/libslic3r/Print.cpp:1222 +#: src/libslic3r/Print.cpp:1248 msgid "The supplied settings will cause an empty print." msgstr "Die vorgenommenen Einstellungen führen zu einem leeren Druck." -#: src/libslic3r/PrintConfig.cpp:2789 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The thickness of the pad and its optional cavity walls." msgstr "Die Stärke der Grundschicht und seine optionalen Hohlraumwände." -#: src/libslic3r/PrintConfig.cpp:1911 +#: src/libslic3r/PrintConfig.cpp:2053 msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." msgstr "Der vertikale Abstand zwischen Objekt und Trägermaterialschnittstelle. Wenn Sie diesen Wert auf 0 setzen, wird PrusaSlicer auch verhindern, dass Bridge-Flow und -Geschwindigkeit für die erste Objektschicht verwendet werden." -#: src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:2731 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -7915,11 +9081,11 @@ msgstr "" "\n" "Soll ich sie ausschalten, um den Firmware-Einzug zu aktivieren?" -#: src/libslic3r/Print.cpp:1268 +#: src/libslic3r/Print.cpp:1294 msgid "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "Der Reinigungsturm unterstützt derzeit kein volumetrisches E (use_volumetric_e=0)." -#: src/slic3r/GUI/ConfigManipulation.cpp:115 +#: src/slic3r/GUI/ConfigManipulation.cpp:114 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool change.\n" @@ -7928,51 +9094,55 @@ msgstr "" "Der Reinigungsturm unterstützt derzeit nur die unlöslichen Stützen, wenn sie mit dem aktuellen Extruder gedruckt werden, ohne einen Werkzeugwechsel auszulösen.\n" "(sowohl der Stützstruktur-Extruder als auch der Stützstruktur-Schnittstellen-Extruder müssen auf 0 eingestellt sein)" -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1426 msgid "The Wipe Tower currently supports the non-soluble supports only if they are printed with the current extruder without triggering a tool change. (both support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "Der Reinigungsturm unterstützt zur Zeit nichtlösliche Stützen nur, falls sie mit dem aktuellen Extruder ohne einen Werkzeugwechsel gedruckt werden (sowohl support_material_extruder wie auch support_material_interface_extruder müssen auf null gesetzt werden)." -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1296 msgid "The Wipe Tower is currently not supported for multimaterial sequential prints." msgstr "Der Wischturm wird derzeit nicht für sequentielle Multimaterialdrucke unterstützt." -#: src/libslic3r/Print.cpp:1262 -msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." -msgstr "Der Reinigungsturm wird derzeit nur für die Varianten Marlin und RepRap/Sprinter und Repetier G-Code unterstützt." +#: src/libslic3r/Print.cpp:1290 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "Der Wischturm wird derzeit nur für die Varianten Marlin, RepRap/Sprinter, RepRapFirmware und Repetier-G-Code unterstützt." -#: src/libslic3r/Print.cpp:1264 +#: src/libslic3r/Print.cpp:1290 msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." msgstr "Der Wischturm wird derzeit nur mit relativer Extruder-Adressierung unterstützt ((use_relative_e_distances=1)." -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1319 msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" msgstr "Der Wischturm wird nur für mehrere Objekte unterstützt, wenn diese mit der gleichen Anzahl von Raftschichten gedruckt werden" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1321 msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" msgstr "Der Wischturm wird nur für mehrere Objekte unterstützt, wenn diese mit der gleichen support_material_contact_distance gedruckt werden" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1323 msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." msgstr "Der Wischturm wird nur für mehrere Objekte unterstützt, wenn diese gleich gesliced werden." -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1317 msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heights" msgstr "Der Wischturm wird nur für mehrere Objekte unterstützt, wenn diese die gleiche Schichthöhe haben" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1283 msgid "The wipe tower is only supported if all extruders have the same nozzle diameter and use filaments of the same diameter." msgstr "Der Wischturm wird nur unterstützt, wenn alle Extruder den gleichen Düsendurchmesser haben und Filamente mit dem gleichen Durchmesser verwenden." -#: src/libslic3r/Print.cpp:1339 +#: src/libslic3r/Print.cpp:1365 msgid "The Wipe tower is only supported if all objects have the same variable layer height" msgstr "Der Reinigungsturm wird nur unterstützt, wenn alle Objekte die gleiche variable Schichthöhe haben" -#: src/libslic3r/SLAPrintSteps.cpp:621 +#: src/slic3r/GUI/Plater.cpp:3563 +msgid "There are active warnings concerning sliced models:" +msgstr "Es gibt aktive Warnungen zu gesliceten Modellen:" + +#: src/libslic3r/SLAPrintSteps.cpp:619 msgid "There are unprintable objects. Try to adjust support settings to make the objects printable." msgstr "Es gibt nicht druckbare Objekte. Versuchen Sie, die Stützeinstellungen anzupassen, um die Objekte druckbar zu machen." -#: src/slic3r/GUI/DoubleSlider.cpp:1030 +#: src/slic3r/GUI/DoubleSlider.cpp:1155 msgid "" "There is a color change for extruder that has not been used before.\n" "Check your settings to avoid redundant color changes." @@ -7980,7 +9150,7 @@ msgstr "" "Es gibt einen Farbwechsel für den Extruder, der bisher noch nicht verwendet wurde.\n" "Überprüfen Sie Ihre Einstellungen, um überflüssige Farbwechsel zu vermeiden." -#: src/slic3r/GUI/DoubleSlider.cpp:1024 +#: src/slic3r/GUI/DoubleSlider.cpp:1149 msgid "" "There is a color change for extruder that won't be used till the end of print job.\n" "This code won't be processed during G-code generation." @@ -7988,7 +9158,7 @@ msgstr "" "Es gibt einen Farbwechsel für den Extruder, der nicht vor dem Ende des Druckauftrags verwendet wird.\n" "Dieser Code wird bei der G-Code-Generierung nicht verarbeitet." -#: src/slic3r/GUI/DoubleSlider.cpp:1027 +#: src/slic3r/GUI/DoubleSlider.cpp:1152 msgid "" "There is an extruder change set to the same extruder.\n" "This code won't be processed during G-code generation." @@ -7996,12 +9166,16 @@ msgstr "" "Es gibt einen Extruderwechsel, der auf denselben Extruder eingestellt ist.\n" "Dieser Code wird während der G-Code-Generierung nicht verarbeitet." +#: src/libslic3r/GCode.cpp:604 +msgid "There is an object with no extrusions on the first layer." +msgstr "Es gibt ein Objekt ohne Extrusionen in der ersten Schicht." + #: src/slic3r/GUI/UpdateDialogs.cpp:225 #, c-format msgid "This %s version: %s" msgstr "Diese %s Version: %s" -#: src/slic3r/GUI/Tab.cpp:982 +#: src/slic3r/GUI/Tab.cpp:1244 msgid "" "This action is not revertable.\n" "Do you want to proceed?" @@ -8009,79 +9183,79 @@ msgstr "" "Diese Aktion ist nicht umkehrbar.\n" "Wollen Sie fortfahren?" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:199 msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Dieser Code wird beim sequentiellen Drucken zwischen Objekten eingefügt. Standardmäßig werden Extruder- und Betttemperatur mit dem Befehl, der nicht auf die Änderung wartet, zurückgesetzt. Wenn jedoch M104, M109, M140 oder M190 in diesem benutzerdefinierten Code erkannt werden, fügt Slic3r keine Temperaturbefehle hinzu. Beachten Sie, dass Sie Platzhaltervariablen für alle PrusaSlicer-Einstellungen verwenden können, so dass Sie einen \"M109 S[first_layer_temperature]\"-Befehl an beliebiger Stelle platzieren können." -#: src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1174 msgid "This custom code is inserted at every layer change, right after the Z move and before the extruder moves to the first layer point. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Dieser benutzerdefinierte Code wird bei jedem Schichtwechsel eingefügt, direkt nach der Z-Bewegung und bevor der Extruder zum ersten Lagenpunkt fährt. Beachten Sie, dass Sie Platzhaltervariablen für alle Slic3r-Einstellungen sowie [layer_num] und [layer_z] verwenden können." -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:188 msgid "This custom code is inserted at every layer change, right before the Z move. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Dieser benutzerdefinierte Code wird bei jedem Lagenwechsel, unmittelbar vor der Z Bewegung, eingefügt. Beachten Sie, dass Sie Platzhaltervariablen für alle PrusaSlicer-Einstellungen sowie [layer_num] und [layer_z] verwenden können." -#: src/libslic3r/PrintConfig.cpp:2094 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings as well as {previous_extruder} and {next_extruder} can be used. When a tool-changing command which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. It is therefore possible to script custom behaviour both before and after the toolchange." msgstr "Dieser benutzerdefinierte Code wird vor jedem Werkzeugwechsel eingefügt. Platzhaltervariablen für alle PrusaSlicer-Einstellungen sowie {previous_extruder} und {next_extruder} können verwendet werden. Wenn ein Werkzeugwechselbefehl enthalten ist, der zum richtigen Extruder wechselt (z.B. T{next_extruder}), gibt PrusaSlicer keinen anderen solchen Befehl aus. Es ist daher möglich, benutzerdefiniertes Verhalten sowohl vor als auch nach dem Werkzeugwechsel zu skripten." -#: src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:430 msgid "This end procedure is inserted at the end of the output file, before the printer end gcode (and before any toolchange from this filament in case of multimaterial printers). Note that you can use placeholder variables for all PrusaSlicer settings. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Dieser Endvorgang wird am Ende der Ausgabedatei, vor dem G-Code des Druckerendes (und vor jedem Werkzeugwechsel von diesem Filament bei Multimaterialdruckern) eingefügt. Beachten Sie, dass Sie Platzhaltervariablen für alle PrusaSlicer-Einstellungen verwenden können. Wenn Sie mehrere Extruder haben, wird der gcode in Extruderreihenfolge verarbeitet." -#: src/libslic3r/PrintConfig.cpp:386 +#: src/libslic3r/PrintConfig.cpp:420 msgid "This end procedure is inserted at the end of the output file. Note that you can use placeholder variables for all PrusaSlicer settings." msgstr "Diese Endprozedur wird am Ende der Ausgabedatei eingefügt. Beachten Sie, dass Sie Platzhaltervariablen für alle PrusaSlicer-Einstellungen verwenden können." -#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 msgid "This experimental setting is used to limit the speed of change in extrusion rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "Diese experimentelle Einstellung beschränkt die Änderungsgeschwindigkeit der Extrusionsmenge. Ein Wert von 1.8 mm³/s² gewährleistet, dass eine Änderung der Extrusionsmenge von 1.8 mm³/s (0.45mm Extrusionsbreite, 0.2mm Extrusionshöhe, Vorschub 20 mm/s) zu 5.4 mm³/s (Vorschub 60 mm/s) mindestens 2 Sekunden dauern wird." -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." msgstr "Diese experimentelle Einstellung gibt die maximale volumetrische Geschwindigkeit an, die von Ihrem Extruder unterstützt wird." -#: src/libslic3r/PrintConfig.cpp:2162 +#: src/libslic3r/PrintConfig.cpp:2305 msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." msgstr "Diese experimentelle Einstellung benutzt G10 und G11 Befehle, damit die Druckerfirmware den Einzug übernimmt. Dies wird nur von neueren Marlin-Versionen unterstützt." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2319 msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." msgstr "Diese experimentelle Einstellung generiert E-Koordinaten in Kubikmillimetern stat in linearen Millimetern. Wenn die Firmware den Filamentdurchmesser noch nicht kennt, können Sie Befehle wie 'M200 D[filament_diameter_0] T0' in den Start-G-Code eingeben, um den volumetrischen Modus zu aktivieren und den in PrusaSlicer angegebenen Filamentdurchmesser zu benutzen. Dies wird nur von neueren Marlin-Versionen unterstützt." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" msgstr "Dieser Extruder wird den gewählten Elementen zugeordnet" -#: src/libslic3r/PrintConfig.cpp:224 +#: src/libslic3r/PrintConfig.cpp:258 msgid "This factor affects the amount of plastic for bridging. You can decrease it slightly to pull the extrudates and prevent sagging, although default settings are usually good and you should experiment with cooling (use a fan) before tweaking this." msgstr "Diese Einstellung beeinflusst den Materialausstoss bei Brücken. Sie können den Wert leicht verringern, um die Extrusionsfäden zu strecken und ein Durchhängen zu vermeiden. Die Standardwerte sind aber normalerweise ausreichend und Sie sollten zuerst mit der Lüftergeschwindigkeit experimentieren, bevor Sie diesen Wert verändern." -#: src/libslic3r/PrintConfig.cpp:546 +#: src/libslic3r/PrintConfig.cpp:582 msgid "This factor changes the amount of flow proportionally. You may need to tweak this setting to get nice surface finish and correct single wall widths. Usual values are between 0.9 and 1.1. If you think you need to change this more, check filament diameter and your firmware E steps." msgstr "Dieser Faktor ändert die Extrusionsmenge proportional. Sie müssen diese Einstellung möglicherweise anpassen, um schöne Oberflächen und korrekte Hüllenstärken zu erhalten. Die üblichen Werte bewegen sich zwischen 0,9 und 1,1. Falls Sie größere Anpassungen eingeben müssen, kontrollieren Sie auch den Filamentdurchmesser und die E-Schritte in Ihrer Firmware." -#: src/libslic3r/PrintConfig.cpp:214 +#: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "Die Lüftergeschwindigkeit, die für Überbrückungen und Überhänge benutzt wird." -#: src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "Diese Einstellung erlaubt es, Infill zu kombinieren und die Druckdauer zu verringern, indem stärkere Infill-Schichten gedruckt werden, während gleichzeitig dünne Außenkonturen und damit die Genauigkeit erhalten bleiben." -#: src/libslic3r/PrintConfig.cpp:1746 +#: src/libslic3r/PrintConfig.cpp:1861 msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." msgstr "Diese Einstellung erzwingt eine massive Schicht nach einer vorgegebenen Anzahl von Schichten. Null deaktiviert diese Einstellung. Sie können jeden Wert eingeben (z.B. 9999); PrusaSlicer wird automatisch die größtmögliche Anzahl von Schichten wählen, die in Abhängigkeit von Düsendurchmesser und Schichthöhe kombiniert werden können." -#: src/libslic3r/PrintConfig.cpp:1795 +#: src/libslic3r/PrintConfig.cpp:1910 msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." msgstr "Dieses Verfahren erhöht die Z-Position allmählich, während eine einfache Hülle gedruckt wird, um jeglichen sichtbaren Saum zu vermeiden. Diese Option setzt eine einzige Außenkontur, keinen Infill, keine massiven Deckenschichten und keine Stützen voraus. Sie können immer noch eine beliebige Anzahl von Bodenschichten sowie Schleifen für Schürzen und Rand einstellen. Die Methode funktioniert nicht, wenn mehr als ein Objekt gedruckt wird." -#: src/slic3r/GUI/Plater.cpp:2367 +#: src/slic3r/GUI/Plater.cpp:2329 msgid "This file cannot be loaded in a simple mode. Do you want to switch to an advanced mode?" msgstr "Diese Datei kann nicht im einfachen Modus geladen werden. Möchten Sie in den fortgeschrittenen Modus wechseln?" -#: src/slic3r/GUI/Plater.cpp:2357 +#: src/slic3r/GUI/Plater.cpp:2319 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -8105,84 +9279,96 @@ msgstr "" "Möchtest Sie fortfahren und diese Hex-Datei trotzdem flashen?\n" "Bitte fahren Sie nur fort, wenn Sie der festen Überzeugung sind, dass dies das Richtige ist." -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:348 msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." msgstr "Diese Einstellung aktiviert the Logik, die die Druckgeschwindigkeit und Lüftergeschwindigkeit automatisch gemäß der Schichtdruckdauer regelt." -#: src/slic3r/GUI/Plater.cpp:536 +#: src/slic3r/GUI/Plater.cpp:402 msgid "This flag enables the brim that will be printed around each object on the first layer." msgstr "Dieses Kontrollkästchen aktiviert den Rand (Brim), der um jedes Objekt auf der ersten Ebene gedruckt wird." -#: src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Diese Stellung erzwingt einen Einzug bei jeder Z-Bewegung." -#: src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2337 msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." msgstr "Diese Einstellung wird die Düse während dem Einzug bewegen, um mögliche Tropfen bei einem undichten Extruder zu minimieren." -#: src/slic3r/GUI/Tab.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1961 +msgid "This G-code will be used as a code for the color change" +msgstr "Dieser G-Code wird als Code für den Farbwechsel verwendet" + +#: src/libslic3r/PrintConfig.cpp:1970 +msgid "This G-code will be used as a code for the pause print" +msgstr "Dieser G-Code wird als Code für die Druckpause verwendet" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "This G-code will be used as a custom code" +msgstr "Dieser G-Code wird als benutzerdefinierter Code verwendet" + +#: src/slic3r/GUI/Tab.cpp:1272 msgid "This is a default preset." msgstr "Dies ist eine Standard-Voreinstellung." -#: src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "This is a relative measure of support points density." msgstr "Dies ist ein relatives Maß für die Dichte der Stützpunkte." -#: src/slic3r/GUI/Tab.cpp:2338 +#: src/slic3r/GUI/Tab.cpp:2507 msgid "This is a single extruder multimaterial printer, diameters of all extruders will be set to the new value. Do you want to proceed?" msgstr "Dies ist ein Einzelextruder-Multimaterialdrucker, die Durchmesser aller Extruder werden auf den neuen Wert eingestellt. Möchten Sie fortfahren?" -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:1274 msgid "This is a system preset." msgstr "Dies ist eine Systemvoreinstellung." -#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Dies wird nur als visuelles Hilfsmittel in der PrusaSlicer-Benutzeroberfläche verwendet." -#: src/libslic3r/PrintConfig.cpp:336 +#: src/libslic3r/PrintConfig.cpp:370 msgid "This is the acceleration your printer will be reset to after the role-specific acceleration values are used (perimeter/infill). Set zero to prevent resetting acceleration at all." msgstr "Dies ist der Beschleunigungswert, auf den Ihr Drucker zurückgesetzt wird, nachdem aufgabenspezifische Beschleunigungswerte (Außenkonturen/Infill) verwendet wurden. Setzen Sie dies auf null, um ein Zurückstellen der Beschleunigungswerte zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:194 +#: src/libslic3r/PrintConfig.cpp:228 msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." msgstr "Die Beschleunigung, die Ihr Drucker für Brücken verwendet. Setzen Sie dies auf null, um die Beschleunigungskontrolle bei Brücken zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:900 msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." msgstr "Die Beschleunigung, die Ihr Drucker für die erste Schicht verwendet. Setzen Sie dies auf null, um die Beschleunigungskontrolle bei der ersten Schicht zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:1026 msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." msgstr "Diese Stellung bestimmt die Beschleunigung des Druckers für Infill. Setzen Sie dies auf null, um die Beschleunigungskontrolle für das Infill zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:1400 +#: src/libslic3r/PrintConfig.cpp:1508 msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." msgstr "Dies ist die Beschleunigung, die der Drucker für Außenkonturen benutzen wird. Ein hoher Wert wie 9000 ergibt üblicherweise gute Resultate falls Ihre Hardware mithalten kann. Setzen Sie dies auf null, um die Beschleunigungskontrolle bei Außenkonturen zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1435 msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "Durchmesser der Extruderdüse (z.B.: 0.5, 0.35 usw.)" -#: src/libslic3r/PrintConfig.cpp:1227 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1335 +#, c-format msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "Dies ist die höchste druckbare Schichthöhe für diesen Extruder, mit der die variable Schichthöhe und Stützschichthöhe abgedeckt wird. Die maximale empfohlene Schichthöhe beträgt 75% der Extrusionsbreite, um eine angemessene Zwischenlagenhaftung zu erreichen. Bei Einstellung auf 0 ist die Lagenhöhe auf 75% des Düsendurchmessers begrenzt." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1398 msgid "This is the lowest printable layer height for this extruder and limits the resolution for variable layer height. Typical values are between 0.05 mm and 0.1 mm." msgstr "Dies ist die niedrigste druckbare Schichthöhe für diesen Extruder und begrenzt die Auflösung bei variabler Schichthöhe. Typische Werte liegen zwischen 0,05 mm und 0,1 mm." -#: src/libslic3r/GCode.cpp:639 +#: src/libslic3r/GCode.cpp:624 msgid "This is usually caused by negligibly small extrusions or by a faulty model. Try to repair the model or change its orientation on the bed." msgstr "Dies wird in der Regel durch vernachlässigbar kleine Extrusionen oder durch ein fehlerhaftes Modell verursacht. Versuchen Sie, das Modell zu reparieren oder seine Ausrichtung auf dem Druckbett zu ändern." -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2358 msgid "This matrix describes volumes (in cubic milimetres) required to purge the new filament on the wipe tower for any given pair of tools." msgstr "Diese Matrix beschreibt die Volumina (in Kubikmillimetern), die benötigt werden, um das neue Filament auf dem Reinigungsturm für ein bestimmtes Werkzeugpaar zu reinigen." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:928 msgid "" "This operation is irreversible.\n" "Do you want to proceed?" @@ -8190,31 +9376,35 @@ msgstr "" "Dieser Vorgang ist nicht mehr rückgängig zu machen.\n" "Möchten Sie fortfahren?" -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1550 msgid "This option sets the number of perimeters to generate for each layer. Note that Slic3r may increase this number automatically when it detects sloping surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." msgstr "Diese Stellung bestimmt die Anzahl der Außenkonturen, die für jede Schicht erzeugt werden. PusaSlicer kann diese Zahl automatisch vergrößern, wenn es schräge Oberflächen erkennt, die sich mit einer höheren Zahl von Außenkonturen besser drucken lassen, wenn die \"Zusätzliche Außenkonturen falls notwendig\" Option aktiviert ist." -#: src/libslic3r/PrintConfig.cpp:1356 +#: src/libslic3r/PrintConfig.cpp:1464 msgid "This option will drop the temperature of the inactive extruders to prevent oozing. It will enable a tall skirt automatically and move extruders outside such skirt when changing temperatures." msgstr "Mit dieser Option wird die Temperatur der inaktiven Extruder gesenkt, um ein Materialnachsickern zu verhindern. Es aktiviert automatisch eine hohe Schürze und bewegt die Extruder bei Temperaturänderungen außerhalb dieser Schürze." -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1073 msgid "This option will limit infill to the areas actually needed for supporting ceilings (it will act as internal support material). If enabled, slows down the G-code generation due to the multiple checks involved." msgstr "Diese Einstellung beschränkt den Infill auf die Bereiche, die tatsächlich für das Stützen von Decken benötigt werden (der Infill dient hier als interne Stützstruktur). Falls aktiviert, kann dies die Erstellung des G-Codes wegen zusätzlichen Kontrollschritten verlangsamen." -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1066 msgid "This option will switch the print order of perimeters and infill, making the latter first." msgstr "Diese Einstellungen kehrt die Druckreihenfolge von Außenkonturen und Infill um, sodass der Infill zuerst gedruckt wird." -#: src/libslic3r/PrintConfig.cpp:459 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +msgid "This printer will be shown in the presets list as" +msgstr "Dieser Drucker wird in der Voreinstellungsliste angezeigt als" + +#: src/libslic3r/PrintConfig.cpp:495 msgid "This separate setting will affect the speed of external perimeters (the visible ones). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "Diese separate Einstellung wirkt sich auf die Geschwindigkeit der äußeren (sichtbaren) Außenkonturen aus. Als Prozentwert eingegeben (z.B. 80%), wird sie ausgehend von der obigen Geschwindigkeitseinstellung für Außenkonturen berechnet. Für die automatische Berechnung auf null setzen." -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1832 msgid "This separate setting will affect the speed of perimeters having radius <= 6.5mm (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "Diese separate Einstellung wirkt sich auf die Geschwindigkeit von Außenkonturen mit einem Radius <= 6,5 mm (üblicherweise Bohrungen) aus. Als Prozentwert eingegeben (z.B. 80%), wird sie ausgehend von der obigen Geschwindigkeitseinstellung für Außenkonturen berechnet. Für eine automatische Berechnung setzen Sie dies auf null." -#: src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1082 msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." msgstr "Diese Einstellung fügt eine zusätzliche Überlappung zwischen Außenkonturen und Infill ein, um die Haftung zu verbessern. Theoretisch sollte dies nicht notwendig sein, doch vorhandenes Getriebespiel könnte Lücken erzeugen. Als Prozentwert eingegeben (z.B. 15%) wird sie ausgehend von der Extrusionsbreite für die Außenkontur ausgerechnet." @@ -8222,31 +9412,31 @@ msgstr "Diese Einstellung fügt eine zusätzliche Überlappung zwischen Außenko msgid "This setting controls the height (and thus the total number) of the slices/layers. Thinner layers give better accuracy but take more time to print." msgstr "Diese Einstellung bestimmt die Höhe (und damit die Gesamtanzahl) der Scheiben/Schichten. Dünnere Schichten ergeben eine bessere Genauigkeit, benötigen aber mehr Zeit zum Drucken." -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "This setting represents the maximum speed of your fan." msgstr "Diese Einstellung bestimmt die maximale Geschwindigkeit Ihres Lüfters." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1389 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "Diese Einstellung gibt den minimalen PWM-Wert an, den Ihr Lüfter für den Betrieb benötigt." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1944 msgid "This start procedure is inserted at the beginning, after any printer start gcode (and after any toolchange to this filament in case of multi-material printers). This is used to override settings for a specific filament. If PrusaSlicer detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Dieser Startvorgang wird am Anfang, nach jedem Drucker-Startgcode (und nach jedem Werkzeugwechsel zu diesem Filament bei Multi-Material-Druckern) eingefügt. Dies wird verwendet, um die Einstellungen für einen bestimmten Filament zu überschreiben. Wenn PrusaSlicer M104, M109, M140 oder M190 in Ihren benutzerdefinierten Codes erkennt, werden solche Befehle nicht automatisch vorangestellt, so dass Sie die Reihenfolge der Heizbefehle und andere benutzerdefinierte Aktionen anpassen können. Beachten Sie, dass Sie Platzhaltervariablen für alle PrusaSlicer-Einstellungen verwenden können, so dass Sie einen Befehl \"M109 S[first_layer_temperature]\" beliebig platzieren können. Wenn Sie mehrere Extruder haben, wird der gcode in Extruderreihenfolge verarbeitet." -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Dieser Startvorgang wird am Anfang eingefügt, nachdem das Bett die Solltemperatur erreicht hat und der Extruder gerade mit dem Erwärmen begonnen hat, und bevor der Extruder das Erwärmen beendet hat. Wenn PrusaSlicer M104 oder M190 in Ihren benutzerdefinierten Codes erkennt, werden solche Befehle nicht automatisch vorangestellt, so dass Sie die Reihenfolge der Heizbefehle und andere benutzerdefinierte Aktionen anpassen können. Beachten Sie, dass Sie Platzhaltervariablen für alle PrusaSlicer-Einstellungen verwenden können, so dass Sie einen Befehl \"M109 S[first_layer_temperature]\" beliebig platzieren können." -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:731 msgid "This string is edited by RammingDialog and contains ramming specific parameters." msgstr "Diese Zeichenfolge wird vom RammDialog angepasst und enthält für das Rammen spezifische Parameter." -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2429 msgid "This value will be added (or subtracted) from all the Z coordinates in the output G-code. It is used to compensate for bad Z endstop position: for example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." msgstr "Dieser Wert wird zu allen Z-Koordinaten im ausgegebenen G-Code hinzuaddiert oder davon abgezogen. Damit kann eine fehlerhafte Z-Endanschlagsposition kompensiert werden: wenn z.B. bei Ihrem Nullwert die Druckdüse sich beim Endanschlag 0.3mm über der Druckplatte befindet, setzen Sie diesen Wert auf -0.3 (oder stellen Sie Ihren Endanschlag neu ein)." -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2351 msgid "This vector saves required volumes to change from/to each tool used on the wipe tower. These values are used to simplify creation of the full purging volumes below." msgstr "Dieser Vektor speichert die erforderlichen Volumina für den Wechsel von/zu jedem am Reinigungsturm verwendeten Werkzeug. Diese Werte werden verwendet, um die Erstellung des vollen Reinigungsvolumens zu vereinfachen." @@ -8263,82 +9453,96 @@ msgstr "" "\n" "Sie können %s entweder beenden und es mit einer neueren Version nochmals versuchen, oder Sie können die erstmalige Startkonfiguration nochmals wiederholen. In diesem Fall wird eine Sicherungskopie der aktuellen Konfiguration erstellt, bevor die mit dieser %s-Version kompatiblen Dateien installiert werden." -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2601 msgid "This will apply a gamma correction to the rasterized 2D polygons. A gamma value of zero means thresholding with the threshold in the middle. This behaviour eliminates antialiasing without losing holes in polygons." msgstr "Dadurch wird eine Gammakorrektur auf die gerasterten 2D-Polygone angewendet. Ein Gamma-Wert von null bedeutet Schwellenwertbildung mit dem Schwellenwert in der Mitte. Dieses Verhalten eliminiert Antialiasing, ohne Löcher in Polygonen zu verlieren." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Threads" msgstr "Threads" -#: src/libslic3r/PrintConfig.cpp:2082 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." msgstr "Threads werden benutzt, um mehrere zeitaufwendige Berechnungen gleichzeitig auszuführen. Die optimale Anzahl beträgt etwas mehr als die Anzahl der verfügbaren Kerne/Prozessoren." -#: src/slic3r/GUI/Tab.cpp:2093 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "Threshold:" +msgstr "Schwellwert:" + +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Tilt" msgstr "Kippen" -#: src/slic3r/GUI/Tab.cpp:2094 +#: src/slic3r/GUI/Tab.cpp:2264 msgid "Tilt time" msgstr "Kippzeit" +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "Zeit" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:723 msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." msgstr "Zeit, in der die Druckerfirmware (oder die Multi-Material-Einheit 2.0) während eines Werkzeugwechsels (bei Ausführung des T-Codes) ein anderes Filament lädt. Diese Zeit wird vom G-Code Zeitschätzer zur Gesamtdruckzeit addiert." -#: src/libslic3r/PrintConfig.cpp:702 +#: src/libslic3r/PrintConfig.cpp:738 msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." msgstr "Zeit, in der die Druckerfirmware (oder die Multi-Material-Einheit 2.0) während eines Werkzeugwechsels (bei Ausführung des T-Codes) ein Filament entlädt. Diese Zeit wird vom G-Code Zeitschätzer zur Gesamtdruckzeit addiert." -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the fast tilt" msgstr "Dauer des schnellen Kippens" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Time of the slow tilt" msgstr "Dauer des langsamen Kippens" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:677 msgid "Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible materials that may need more time to shrink to original dimensions." msgstr "Wartezeit, nachdem das Filament entladen wurde. Dies kann zu zuverlässigeren Werkzeugwechseln beitragen bei flexiblen Materialien, die mehr Zeit zum Schrumpfen auf ihre ursprüngliche Größe brauchen." -#: src/slic3r/GUI/Tab.cpp:966 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "to" +msgstr "bis" + +#: src/slic3r/GUI/Tab.cpp:1284 msgid "To do that please specify a new name for the preset." msgstr "Zur Ausführung geben Sie bitte einen neuen Namen für die Voreinstellung ein." -#: src/slic3r/GUI/Plater.cpp:4014 +#: src/slic3r/GUI/Plater.cpp:3934 msgid "To objects" msgstr "Zu Objekten" -#: src/slic3r/GUI/Plater.cpp:4016 +#: src/slic3r/GUI/Plater.cpp:3936 msgid "To parts" msgstr "Zu Teilen" -#: src/slic3r/GUI/Tab.cpp:1756 +#: src/slic3r/Utils/Http.cpp:82 +msgid "To specify the system certificate store manually, please set the %1% environment variable to the correct CA bundle and restart the application." +msgstr "Um den System-Zertifikatspeicher manuell anzugeben, setzen Sie bitte die Umgebungsvariable %1% auf das richtige CA-Bundle und starten Sie die Anwendung neu." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." msgstr "Um eine benutzerdefinierte CA-Datei zu verwenden, importieren Sie bitte Ihre CA-Datei in den Zertifikatsspeicher / Schlüsselbund." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 #, c-format msgid "Toggle %c axis mirroring" msgstr "Umschalten der Spiegelung der %c-Achse" -#: src/libslic3r/Zipper.cpp:34 +#: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "zu viele Dateien" -#: src/libslic3r/SLAPrintSteps.cpp:190 -msgid "Too much overlapping holes." +#: src/libslic3r/SLAPrintSteps.cpp:192 +msgid "Too many overlapping holes." msgstr "Zu viele überlappende Löcher." -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 -#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 +#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 +#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 +#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 +#: src/libslic3r/GCode/PreviewData.cpp:362 msgid "Tool" msgstr "Werkzeug" @@ -8346,51 +9550,64 @@ msgstr "Werkzeug" msgid "Tool #" msgstr "Werkzeug #" -#: src/slic3r/GUI/Tab.cpp:2000 src/libslic3r/PrintConfig.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 msgid "Tool change G-code" msgstr "G-Code für Werkzeugwechsel" -#: src/slic3r/GUI/Tab.cpp:1491 +#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +msgid "Tool changes" +msgstr "Werkzeugwechsel" + +#: src/slic3r/GUI/GUI_Preview.cpp:1479 +msgid "Tool marker" +msgstr "Werkzeugposition" + +#: src/slic3r/GUI/GCodeViewer.cpp:223 +msgid "Tool position" +msgstr "Werkzeugposition" + +#: src/slic3r/GUI/Tab.cpp:1837 msgid "Toolchange parameters with single extruder MM printers" msgstr "Werkzeugwechsel-Parameter für MM-Drucker mit einem Extruder" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:662 src/libslic3r/PrintConfig.cpp:2132 -#: src/libslic3r/PrintConfig.cpp:2141 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 msgid "Top" msgstr "Decke" -#: src/slic3r/GUI/PresetHints.cpp:304 +#: src/slic3r/GUI/PresetHints.cpp:302 msgid "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "Hinweis zur Ober-/Bodenschalestärke: Nicht verfügbar wegen ungültiger Schichthöhe." -#: src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:449 msgid "Top fill pattern" msgstr "Deckenfüllmuster" -#: src/slic3r/GUI/PresetHints.cpp:323 +#: src/slic3r/GUI/PresetHints.cpp:321 msgid "Top is open." msgstr "Oben ist offen." -#: src/slic3r/GUI/PresetHints.cpp:317 +#: src/slic3r/GUI/PresetHints.cpp:315 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "Die obere Schale ist %1% mm stark für eine Schichthöhe von %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:192 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "Oberes massives Infill" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 +#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 +#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Top solid infill" msgstr "Oberes massives Infill" -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2278 msgid "Top solid layers" msgstr "Obere massive Schichten" -#: src/slic3r/GUI/MainFrame.cpp:662 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 msgid "Top View" msgstr "Ansicht von oben" @@ -8406,90 +9623,128 @@ msgstr "Gesamtes Rammvolumen" msgid "Total ramming time" msgstr "Gesamte Rammdauer" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:640 +msgid "Transfer" +msgstr "Transfer" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:745 +msgid "Transfer the selected options to the newly selected preset \"%1%\"." +msgstr "Übertragen der ausgewählten Optionen auf die neu gewählte Voreinstellung \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Transfer the selected settings to the newly selected preset." +msgstr "Übertragen der gewählten Einstellungen auf die neu gewählte Voreinstellung." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:561 msgid "Translate" -msgstr "Übersetzen" +msgstr "Versetzen" -#: src/slic3r/GUI/Mouse3DController.cpp:300 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:282 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Translation" -msgstr "Übersetzung" +msgstr "Position" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 +#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 msgid "Travel" msgstr "Eilgang" -#: src/libslic3r/PrintConfig.cpp:845 +#: src/libslic3r/PrintConfig.cpp:883 msgid "Triangles" msgstr "Dreiecke" -#: src/libslic3r/PrintConfig.cpp:3448 +#: src/libslic3r/PrintConfig.cpp:3647 msgid "Try to repair any non-manifold meshes (this option is implicitly added whenever we need to slice the model to perform the requested action)." msgstr "Repariere alle ungeschlossenen Netze (diese Option wird implizit hinzugefügt, wenn wir das Modell slicen müssen, um die gewünschte Aktion ausführen zu können)." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +msgid "Type here the name of your printer device" +msgstr "Geben Sie hier den Namen Ihres Druckers ein" + +#: src/libslic3r/PrintConfig.cpp:1575 msgid "Type of the printer." msgstr "Druckertyp." -#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "Typ:" -#: src/slic3r/GUI/Plater.cpp:3428 +#: src/slic3r/GUI/OpenGLManager.cpp:275 +#, c-format +msgid "" +"Unable to load the following shaders:\n" +"%s" +msgstr "" +"Die folgenden Shader konnten nicht geladen werden:\n" +"%s" + +#: src/slic3r/GUI/Plater.cpp:3233 msgid "Unable to reload:" msgstr "Kann nicht nachgeladen werden:" -#: src/libslic3r/Zipper.cpp:32 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:137 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:146 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:845 +msgid "Undef" +msgstr "Undef" + +#: src/libslic3r/miniz_extension.cpp:91 msgid "undefined error" msgstr "unbekannter Fehler" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/MainFrame.cpp:581 +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Undo" msgstr "Undo" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "Undo %1$d Aktion" msgstr[1] "Undo %1$d Aktionen" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Undo History" msgstr "Undo Verlauf" -#: src/libslic3r/Zipper.cpp:56 +#: src/libslic3r/miniz_extension.cpp:115 msgid "unexpected decompressed size" msgstr "unerwartete dekomprimierte Größe" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:310 msgid "Unknown" msgstr "Unbekannt" -#: src/slic3r/Utils/Duet.cpp:82 src/slic3r/Utils/Duet.cpp:137 -#: src/slic3r/Utils/FlashAir.cpp:119 src/slic3r/Utils/FlashAir.cpp:140 -#: src/slic3r/Utils/FlashAir.cpp:156 +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 +#: src/slic3r/Utils/FlashAir.cpp:159 msgid "Unknown error occured" msgstr "Unbekannter Fehler aufgetreten" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 +msgid "Unknown error occured during exporting G-code." +msgstr "Unbekannter Fehler trat beim Exportieren von G-Code auf." + #: src/slic3r/GUI/WipeTowerDialog.cpp:263 msgid "unloaded" msgstr "entladen wird" -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Unloading speed" msgstr "Entladegeschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:632 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Unloading speed at the start" msgstr "Entladegeschwindigkeit zu Beginn" -#: src/slic3r/GUI/Tab.cpp:3256 +#: src/slic3r/GUI/Tab.cpp:3693 msgid "UNLOCKED LOCK" msgstr "OFFENES SCHLOSS" -#: src/slic3r/GUI/Tab.cpp:3282 +#: src/slic3r/GUI/Tab.cpp:3719 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click to reset all settings for current option group to the system (or default) values." @@ -8497,7 +9752,7 @@ msgstr "" "Das Symbol GEÖFFNETES SCHLOSS zeigt an, dass einige Einstellungen geändert wurden und nicht mehr mit den System- (oder Standard-) Werte für die aktuelle Optionsgruppe identisch sind.\n" "Klicken Sie, um alle Einstellungen für die aktuelle Optionsgruppe auf die System- (oder Standard-) Werte zurückzusetzen." -#: src/slic3r/GUI/Tab.cpp:3297 +#: src/slic3r/GUI/Tab.cpp:3734 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to the system (or default) value.\n" "Click to reset current value to the system (or default) value." @@ -8505,56 +9760,43 @@ msgstr "" "Das Symbol GEÖFFNETES SCHLOSS zeigt an, dass der Wert geändert wurde und nicht mit der System- (oder Standard-) Einstellung identisch ist.\n" "Klicken Sie, um den aktuellen Wert auf die System- (oder Standard-) Einstellung zurückzusetzen." -#: src/slic3r/GUI/Plater.cpp:5203 -#, c-format -msgid "Unmounting successful. The device %s(%s) can now be safely removed from the computer." -msgstr "Aushängen erfolgreich. Das Gerät %s(%s) kann nun sicher vom Computer entfernt werden." - -#: src/slic3r/GUI/GUI_Preview.cpp:255 -msgid "Unretractions" -msgstr "Wiedereinzüge" - -#: src/slic3r/GUI/Tab.cpp:2947 -msgid "Unsaved Changes" -msgstr "Nicht abgespeicherte Änderungen" - -#: src/slic3r/GUI/GUI_App.cpp:935 -msgid "Unsaved Presets" -msgstr "Nicht abgespeicherte Voreinstellungen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Unselect gizmo or clear selection" msgstr "Gizmo abwählen oder Auswahl löschen" -#: src/libslic3r/Zipper.cpp:60 +#: src/libslic3r/miniz_extension.cpp:119 msgid "unsupported central directory size" msgstr "nicht unterstützte zentrale Verzeichnisgröße" -#: src/libslic3r/Zipper.cpp:40 +#: src/libslic3r/miniz_extension.cpp:99 msgid "unsupported encryption" msgstr "nicht unterstützte Verschlüsselung" -#: src/libslic3r/Zipper.cpp:42 +#: src/libslic3r/miniz_extension.cpp:101 msgid "unsupported feature" msgstr "nicht unterstützte Funktion" -#: src/libslic3r/Zipper.cpp:38 +#: src/libslic3r/miniz_extension.cpp:97 msgid "unsupported method" msgstr "nicht unterstützte Methode" -#: src/libslic3r/Zipper.cpp:50 +#: src/libslic3r/miniz_extension.cpp:109 msgid "unsupported multidisk archive" msgstr "nicht unterstütztes Multidisk-Archiv" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:292 +#: src/slic3r/GUI/OpenGLManager.cpp:267 msgid "Unsupported OpenGL version" msgstr "Nicht unterstützte OpenGL Version" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3420 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 msgid "Unsupported selection" msgstr "Nicht unterstützte Auswahl" -#: src/slic3r/GUI/GLCanvas3D.cpp:955 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 +msgid "up to" +msgstr "bis zu" + +#: src/slic3r/GUI/GLCanvas3D.cpp:961 #, c-format msgid "up to %.2f mm" msgstr "bis zu %.2f mm" @@ -8563,15 +9805,15 @@ msgstr "bis zu %.2f mm" msgid "Update available" msgstr "Ein Update ist verfügbar" -#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "Eingebaute Voreinstellungen automatisch aktualisieren" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Updates" msgstr "Updates" -#: src/slic3r/GUI/ConfigWizard.cpp:786 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 msgid "Updates are never applied without user's consent and never overwrite user's customized settings." msgstr "Updates werden niemals ohne das Einverständnis des Benutzers ausgeführt, und werden niemals die vom Benutzer geänderten Einstellungen überschreiben." @@ -8579,7 +9821,7 @@ msgstr "Updates werden niemals ohne das Einverständnis des Benutzers ausgeführ msgid "Upgrade" msgstr "Aktualisieren" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "Lade ein Firmware Image zu einem Arduino-basierten Drucker hoch" @@ -8595,101 +9837,118 @@ msgstr "Transferiere zum Druckerhost mit dem Dateinamen:" msgid "Uploading" msgstr "Lade hoch" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper Layer" msgstr "Obere Schicht" -#: src/slic3r/GUI/Tab.cpp:1900 -msgid "USB/Serial connection" -msgstr "USB/Serielle Verbindung" - -#: src/libslic3r/PrintConfig.cpp:1662 -msgid "USB/serial port for printer connection." -msgstr "USB-/serielle Schnittstelle für den Druckeranschluss." - -#: src/slic3r/GUI/DoubleSlider.cpp:1147 +#: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Einen anderen Extruder verwenden" -#: src/slic3r/GUI/Preferences.cpp:143 +#: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Benutzerdefinierte Größe für Symbolleistensymbole verwenden" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/slic3r/GUI/Preferences.cpp:268 +msgid "Use environment map" +msgstr "Environment Map verwenden" + +#: src/libslic3r/PrintConfig.cpp:2304 msgid "Use firmware retraction" msgstr "Firmware-Einzug aktivieren" +#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +msgid "Use for search" +msgstr "Zur Suche verwenden" + +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" +msgstr "Zur Zeitschätzung verwenden" + #: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Benutzen Sie den Schrägstrich (/) als Verzeichnistrenner falls nötig." -#: src/slic3r/GUI/Preferences.cpp:126 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use free camera" msgstr "Benutze freie Kamera" -#: src/libslic3r/PrintConfig.cpp:2780 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Use inches" +msgstr "Zoll verwenden" + +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Use pad" msgstr "Grundschicht benutzen" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:184 msgid "Use perspective camera" msgstr "Benutze perspektivische Kamera" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2311 msgid "Use relative E distances" msgstr "Relative Abstände für Extrusion benutzen" -#: src/slic3r/GUI/Preferences.cpp:104 +#: src/slic3r/GUI/Preferences.cpp:135 msgid "Use Retina resolution for the 3D scene" msgstr "Verwende Retina Auflösung für die 3D Anzeige" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." msgstr "Verwenden Sie diese Einstellung, um den Buchstaben der Achse anzugeben, die mit Ihrem Extruder verknüpft ist (normalerweise E, aber bei manchen Druckern ist dies A)." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:2035 msgid "Use this setting to rotate the support material pattern on the horizontal plane." msgstr "Verwenden Sie diese Einstellung, um das Muster für die Stützstrukturen auf der horizontalen Ebene zu drehen." -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2318 msgid "Use volumetric E" msgstr "Volumetrisches E benutzen" -#: src/slic3r/GUI/DoubleSlider.cpp:1171 +#: src/slic3r/GUI/DoubleSlider.cpp:1298 msgid "used" msgstr "genutzt" -#: src/slic3r/GUI/Plater.cpp:237 +#: src/slic3r/GUI/Plater.cpp:243 msgid "Used Filament (g)" msgstr "Filamentbedarf (g)" -#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 +#: src/slic3r/GUI/Plater.cpp:1141 +msgid "Used Filament (in)" +msgstr "Filamentbedarf (Zoll)" + +#: src/slic3r/GUI/Plater.cpp:1153 +msgid "Used Filament (in³)" +msgstr "Filamentbedarf (Zoll³)" + +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 msgid "Used Filament (m)" msgstr "Filamentbedarf (Meter)" -#: src/slic3r/GUI/Plater.cpp:236 +#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 msgid "Used Filament (mm³)" msgstr "Filamentbedarf (mm³)" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1100 msgid "Used Material (ml)" msgstr "Benutztes Material (ml)" -#: src/slic3r/GUI/Plater.cpp:238 +#: src/slic3r/GUI/Plater.cpp:244 msgid "Used Material (unit)" msgstr "Benutztes Material (Einheit)" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 msgid "User" msgstr "Benutzer" -#: src/slic3r/GUI/Preset.cpp:1168 src/slic3r/GUI/Preset.cpp:1288 -#: src/slic3r/GUI/PresetBundle.cpp:1677 +#: src/slic3r/GUI/PresetComboBoxes.cpp:230 +#: src/slic3r/GUI/PresetComboBoxes.cpp:778 +#: src/slic3r/GUI/PresetComboBoxes.cpp:934 msgid "User presets" msgstr "Benutzerdefinierte Voreinstellungen" -#: src/libslic3r/Zipper.cpp:90 +#: src/libslic3r/miniz_extension.cpp:149 msgid "validation failed" msgstr "Überprüfung fehlgeschlagen" @@ -8701,31 +9960,31 @@ msgstr "Der Wert ist gleich wie die Systemeinstellung" msgid "Value was changed and is not equal to the system value or the last saved preset" msgstr "Der Wert wurde geändert und ist nicht gleich wie die Systemeinstellung oder die letzte abgespeicherte Voreinstellung" -#: src/slic3r/GUI/Tab.cpp:2202 +#: src/slic3r/GUI/Tab.cpp:2371 msgid "Values in this column are for Normal mode" msgstr "Werte in dieser Spalte sind für den normalen Modus" -#: src/slic3r/GUI/Tab.cpp:2208 +#: src/slic3r/GUI/Tab.cpp:2377 msgid "Values in this column are for Stealth mode" msgstr "Werte in dieser Spalte sind für den Stealth Modus" -#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 msgid "Variable layer height" msgstr "Variable Schichthöhe" -#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +#: src/slic3r/GUI/GLCanvas3D.cpp:1786 msgid "Variable layer height - Adaptive" msgstr "Variable Schichthöhe - Adaptiv" -#: src/slic3r/GUI/GLCanvas3D.cpp:599 +#: src/slic3r/GUI/GLCanvas3D.cpp:565 msgid "Variable layer height - Manual edit" msgstr "Variable Schichthöhe - Manuell bearbeiten" -#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +#: src/slic3r/GUI/GLCanvas3D.cpp:1778 msgid "Variable layer height - Reset" msgstr "Variable Schichthöhe - Zurücksetzen" -#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +#: src/slic3r/GUI/GLCanvas3D.cpp:1794 msgid "Variable layer height - Smooth all" msgstr "Variable Schichthöhe - Alles glätten" @@ -8733,19 +9992,20 @@ msgstr "Variable Schichthöhe - Alles glätten" msgid "variants" msgstr "Varianten" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 msgid "vendor" msgstr "Hersteller" -#: src/slic3r/GUI/ConfigWizard.cpp:565 +#: src/slic3r/GUI/ConfigWizard.cpp:589 msgid "Vendor:" msgstr "Hersteller:" -#: src/libslic3r/PrintConfig.cpp:928 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Verbose G-code" msgstr "Ausführlicher G-Code" -#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "Version" @@ -8753,24 +10013,36 @@ msgstr "Version" msgid "version" msgstr "Version" -#: src/slic3r/GUI/Tab.cpp:1053 +#: src/slic3r/GUI/Tab.cpp:1375 msgid "Vertical shells" msgstr "Vertikale Konturhüllen" -#: src/slic3r/GUI/GUI_Preview.cpp:218 +#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Ansicht" -#: src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:1172 msgid "View mode" msgstr "Anzeigemodus" -#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 -#: src/libslic3r/SLAPrintSteps.cpp:461 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +msgid "" +"Visit \"Preferences\" and check \"%1%\"\n" +"to be asked about unsaved changes again." +msgstr "" +"Besuchen Sie \"Präferenzen\" und überprüfen Sie \"%1%\",\n" +"um über nicht gespeicherte Änderungen wieder gefragt zu werden." + +#: src/libslic3r/PrintConfig.cpp:3553 +msgid "Visualize an already sliced and saved G-code" +msgstr "Visualisierung eines bereits gesliceten und gespeicherten G-Codes" + +#: src/libslic3r/SLAPrintSteps.cpp:411 src/libslic3r/SLAPrintSteps.cpp:420 +#: src/libslic3r/SLAPrintSteps.cpp:459 msgid "Visualizing supports" msgstr "Anzeigen der Stützstrukturen" -#: src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/Plater.cpp:167 msgid "Volume" msgstr "Volumen" @@ -8778,23 +10050,23 @@ msgstr "Volumen" msgid "Volume to purge (mm³) when the filament is being" msgstr "Volumen zum Reinigen (mm³) wenn das Filament ist" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Volumes in Object reordered" msgstr "Volumen in Objekt neu angeordnet" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "Volumetrisch" -#: src/slic3r/GUI/Tab.cpp:1591 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Volumetric flow hints not available" msgstr "Hinweise zum Volumenstrom nicht verfügbar" -#: src/slic3r/GUI/GUI_Preview.cpp:226 +#: src/slic3r/GUI/GUI_Preview.cpp:280 msgid "Volumetric flow rate" msgstr "Volumetrische Flussrate" -#: src/libslic3r/GCode/PreviewData.cpp:355 +#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 msgid "Volumetric flow rate (mm³/s)" msgstr "Volumetrische Flussrate (mm³/s)" @@ -8802,151 +10074,166 @@ msgstr "Volumetrische Flussrate (mm³/s)" msgid "Volumetric speed" msgstr "Volumengeschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:2915 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Wall thickness" msgstr "Wandstärke" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1270 src/slic3r/GUI/GUI.cpp:251 -#: src/slic3r/GUI/Tab.cpp:3084 src/slic3r/GUI/WipeTowerDialog.cpp:45 -#: src/slic3r/GUI/WipeTowerDialog.cpp:366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Warnung" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/NotificationManager.cpp:672 +#: src/slic3r/GUI/NotificationManager.cpp:687 +#: src/slic3r/GUI/NotificationManager.cpp:702 +msgid "WARNING:" +msgstr "WARNUNG:" + +#: src/slic3r/GUI/ConfigWizard.cpp:449 msgid "Welcome" msgstr "Willkommen" -#: src/slic3r/GUI/ConfigWizard.cpp:427 +#: src/slic3r/GUI/ConfigWizard.cpp:445 #, c-format msgid "Welcome to the %s Configuration Assistant" msgstr "Willkommen zum %s Konfigurations-Assistent" -#: src/slic3r/GUI/ConfigWizard.cpp:429 +#: src/slic3r/GUI/ConfigWizard.cpp:447 #, c-format msgid "Welcome to the %s Configuration Wizard" msgstr "Willkommen zum %s Konfigurations-Assistent" -#: src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/SavePresetDialog.cpp:310 +msgid "What would you like to do with \"%1%\" preset after saving?" +msgstr "Was möchten Sie mit der Voreinstellung \"%1%\" nach dem Speichern machen?" + +#: src/slic3r/GUI/Preferences.cpp:114 msgid "When checked, the print and filament presets are shown in the preset editor even if they are marked as incompatible with the active printer" msgstr "Falls angekreuzt, werden Voreinstellungen für Druck und Filament im Voreinstellungseditor auch dann angezeigt, wenn sie als inkompatibel zum aktiven Drucker gekennzeichnet wurden" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/Preferences.cpp:156 +msgid "When closing the application, always ask for unsaved changes" +msgstr "Wenn Sie die Anwendung schließen, immer nach nicht gespeicherten Änderungen fragen" + +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "when printing" msgstr "während dem Druck" -#: src/libslic3r/PrintConfig.cpp:253 +#: src/libslic3r/PrintConfig.cpp:287 msgid "When printing multi-material objects, this settings will make Slic3r to clip the overlapping object parts one by the other (2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)." msgstr "Wenn Multi-Material-Objekte gedruckt werden, wird Slic3r mit diesen Einstellungen einen überlappenden Teil des Objekts durch den anderen einschränken (zweiter Teil wird durch den ersten Teil eingeschränkt, dritter Teil wird durch den ersten und zweiten eingeschränkt usw.)." -#: src/libslic3r/PrintConfig.cpp:305 +#: src/libslic3r/PrintConfig.cpp:339 msgid "When printing multiple objects or copies, this feature will complete each object before moving onto next one (and starting it from its bottom layer). This feature is useful to avoid the risk of ruined prints. Slic3r should warn and prevent you from extruder collisions, but beware." msgstr "Wenn mehrere Objekte oder Kopien gedruckt werden, wird bei dieser Einstellung jedes Objekt vollständig gedruckt, bevor das nächste (angefangen mit der Bodenschicht) begonnen wird. Diese Einstellung ist nützlich, um Fehldrucke zu vermeiden. PrusaSlicer sollte vor Extruderkollisionen warnen und diese verhindern, aber seien Sie trotzdem aufmerksam." -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:933 msgid "When printing with very low layer heights, you might still want to print a thicker bottom layer to improve adhesion and tolerance for non perfect build plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." msgstr "Wenn mit sehr kleinen Schichthöhen gedruckt wird, möchten Sie vielleicht trotzdem eine stärkere Bodenschicht drucken, um die Haftung sowie die Toleranz bei nicht perfekt ebenen Druckplatten zu verbessern. Dieser Wert kann als Absolutwert oder als Prozentwert (z.B. 150%) der Standardschichthöhe angegeben werden." -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1661 msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." msgstr "Wenn der Einzug vor dem Werkzeugwechsel ausgelöst wird, wird das Filament um diese Länge eingezogen. (Die Länge wird am unverarbeiteten Filament vor dem Extruder gemessen)." -#: src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1653 msgid "When retraction is triggered, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." msgstr "Wenn der Einzug ausgelöst wird, wird das Filament um diese Länge eingezogen. (Die Länge wird am unverarbeiteten Filament vor dem Extruder gemessen)." -#: src/libslic3r/PrintConfig.cpp:1391 +#: src/libslic3r/PrintConfig.cpp:1499 msgid "When set to zero, the distance the filament is moved from parking position during load is exactly the same as it was moved back during unload. When positive, it is loaded further, if negative, the loading move is shorter than unloading." msgstr "Wenn auf null gesetzt, ist der Weg, den das Filament während der Beladung aus der Parkposition zurücklegt, genau der gleiche wie beim Entladen. Im positiven Fall wird sie weiter geladen, im negativen Fall ist die Ladebewegung kürzer als die Entladung." -#: src/libslic3r/PrintConfig.cpp:1238 +#: src/libslic3r/PrintConfig.cpp:1346 msgid "When setting other speed settings to 0 Slic3r will autocalculate the optimal speed in order to keep constant extruder pressure. This experimental setting is used to set the highest print speed you want to allow." msgstr "Wenn andere Geschwindigkeitseinstellungen auf null gesetzt wurden, wird PrusaSlicer die optimale Geschwindigkeit automatisch berechnen, um den Extruderdruck konstant zu halten. Diese experimentelle Einstellung erlaubt Ihnen, die höchste zulässige Druckgeschwindigkeit anzugeben." -#: src/libslic3r/PrintConfig.cpp:1597 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Wenn der Einzug nach dem Werkzeugwechsel kompensiert wurde, wird der Extruder diese zusätzliche Menge an Filament ausgeben." -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1697 msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Wenn der Einzug nach der Zwischenbewegung kompensiert wurde, wird der Extruder diese zusätzliche Menge an Filament ausgeben. Diese Einstellung wird selten benötigt." -#: src/slic3r/GUI/Tab.cpp:3263 +#: src/slic3r/GUI/Tab.cpp:3700 msgid "WHITE BULLET" msgstr "WEISSER PUNKT" -#: src/slic3r/GUI/Tab.cpp:3285 +#: src/slic3r/GUI/Tab.cpp:3722 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "Das Symbol mit dem WEISSEN PUNKT zeigt eine Nicht-System- (oder nicht standardmäßige) Voreinstellung an." -#: src/slic3r/GUI/Tab.cpp:3288 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." msgstr "Das Symbol WEISSER PUNKT zeigt an, dass die Einstellungen dieselben sind wie in der zuletzt gespeicherten Voreinstellung für die aktuelle Optionsgruppe." -#: src/slic3r/GUI/Tab.cpp:3303 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." msgstr "Das Symbol WEISSER PUNKT zeigt an, dass der Wert identisch ist mit demjenigen in der zuletzt gespeicherten Voreinstellung." -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 +#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 msgid "Width" msgstr "Breite" -#: src/libslic3r/GCode/PreviewData.cpp:349 +#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 msgid "Width (mm)" msgstr "Breite (mm)" -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Width from the back sphere center to the front sphere center" msgstr "Abstand von der Mitte der hinteren Kugel bis zur Mitte der vorderen Kugel" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "Width of a wipe tower" msgstr "Breite des Reinigungsturms" -#: src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3055 msgid "Width of the connector sticks which connect the object and the generated pad." msgstr "Breite der Verbindungsstäbe, die das Objekt und die erzeugte Grundschicht verbinden." -#: src/libslic3r/PrintConfig.cpp:2354 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Width of the display" msgstr "Displaybreite" -#: src/slic3r/GUI/PresetHints.cpp:48 +#: src/slic3r/GUI/PresetHints.cpp:47 msgid "will always run at %1%%%" msgstr "wird immer mit %1%%% laufen" -#: src/slic3r/GUI/PresetHints.cpp:55 +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "wird abgeschaltet." -#: src/libslic3r/PrintConfig.cpp:2441 +#: src/libslic3r/PrintConfig.cpp:2584 msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." msgstr "Vergrößert oder verringert die geslicten 2D-Polygone entsprechend dem Vorzeichen der Korrektur." -#: src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "Wipe into this object" msgstr "Dieses Objekt zum Reinigen verwenden" -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Wipe into this object's infill" msgstr "Das Infill dieses Objekts zum Reinigen verwenden" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:619 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2260 +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:99 +#: src/slic3r/GUI/GUI_ObjectList.cpp:658 src/libslic3r/PrintConfig.cpp:2395 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Wipe options" msgstr "Wischoptionen" -#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1191 -#: src/libslic3r/ExtrusionEntity.cpp:321 +#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 +#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Wipe tower" msgstr "Reinigungsturm" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "wipe tower" msgstr "Reinigungsturm" -#: src/slic3r/GUI/ConfigManipulation.cpp:120 -#: src/slic3r/GUI/ConfigManipulation.cpp:140 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Wipe Tower" msgstr "Reinigungsturm" @@ -8954,36 +10241,36 @@ msgstr "Reinigungsturm" msgid "Wipe tower - Purging volume adjustment" msgstr "Reinigungsturm - Anpassung des Reinigungsvolumens" -#: src/slic3r/GUI/Tab.cpp:1488 +#: src/slic3r/GUI/Tab.cpp:1834 msgid "Wipe tower parameters" msgstr "Reinigungsturm Parameter" -#: src/libslic3r/PrintConfig.cpp:2245 +#: src/libslic3r/PrintConfig.cpp:2388 msgid "Wipe tower rotation angle" msgstr "Rotationswinkel des Reinigungsturms" -#: src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Rotationswinkel des Reinigungsturms bezogen auf die X-Achse." -#: src/libslic3r/PrintConfig.cpp:2193 +#: src/libslic3r/PrintConfig.cpp:2336 msgid "Wipe while retracting" msgstr "Während Einzug reinigen" -#: src/slic3r/GUI/PresetHints.cpp:225 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "with a volumetric rate" msgstr "mit einer Volumenrate von" -#: src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1638 msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." msgstr "Bei Bowden-Extrudern kann es ratsam sein, vor der Reinigungsbewegung einen kurzen Einzug auszuführen." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "With sheath around the support" msgstr "Mit Umhüllung der Stützen" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:68 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:111 msgid "World coordinates" msgstr "Weltkoordinaten" @@ -9001,84 +10288,100 @@ msgstr "" "\n" "Aktualisierte Konfigurationssammlungen:" -#: src/libslic3r/Zipper.cpp:92 +#: src/libslic3r/miniz_extension.cpp:151 msgid "write calledback failed" msgstr "Schreibabruf fehlgeschlagen" -#: src/libslic3r/PrintConfig.cpp:3382 +#: src/libslic3r/PrintConfig.cpp:3581 msgid "Write information about the model to the console." msgstr "Schreibt Informationen über das Modell auf die Konsole." -#: src/slic3r/Utils/Duet.cpp:131 +#: src/slic3r/Utils/Duet.cpp:133 msgid "Wrong password" msgstr "Ungültiges Kennwort" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2368 msgid "X coordinate of the left front corner of a wipe tower" msgstr "X-Koordinate der linken vorderen Ecke des Reinigungsturms" -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:2021 msgid "XY separation between an object and its support" msgstr "XY-Abstand zwischen einem Objekt und seinen Stützen" -#: src/libslic3r/PrintConfig.cpp:1881 +#: src/libslic3r/PrintConfig.cpp:2023 msgid "XY separation between an object and its support. If expressed as percentage (for example 50%), it will be calculated over external perimeter width." msgstr "XY-Abstand zwischen einem Objekt und seinen Stützen. Falls in Prozenten angegeben (z.B. 50%), wird der Abstand von der Breite der Außenkontur ausgehend berechnet." -#: src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "XY Size Compensation" msgstr "XY-Größenausgleich" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2375 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Y-Koordinate der linken vorderen Ecke des Reinigungsturms" -#: src/slic3r/GUI/Plater.cpp:1170 +#: src/slic3r/GUI/Plater.cpp:1079 msgid "Yes" msgstr "Ja" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/slic3r/GUI/Plater.cpp:1405 +msgid "You can open only one .gcode file at a time." +msgstr "Sie können immer nur eine .gcode-Datei gleichzeitig öffnen." + +#: src/libslic3r/PrintConfig.cpp:1425 msgid "You can put here your personal notes. This text will be added to the G-code header comments." msgstr "Sie können hier Ihre persönlichen Notizen eingeben. Der Text wird dem Header vom G-Code hinzugefügt." -#: src/libslic3r/PrintConfig.cpp:589 +#: src/libslic3r/PrintConfig.cpp:625 msgid "You can put your notes regarding the filament here." msgstr "Sie können Ihre Notizen zum Filament hier eingeben." -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "You can put your notes regarding the printer here." msgstr "Sie können Ihre Bemerkungen zum Drucker hier eingeben." -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2722 msgid "You can put your notes regarding the SLA print material here." msgstr "Sie können Ihre Notizen zum SLA Druckmaterial hier eingeben." -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:394 msgid "You can set this to a positive value to disable fan at all during the first layers, so that it does not make adhesion worse." msgstr "Sie können einen positiven Wert eingeben, um den Lüfter vollständig für die ersten Schichten auszuschalten, damit er die Haftung nicht beeinträchtigt." -#: src/libslic3r/PrintConfig.cpp:1364 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." msgstr "Sie können alle Konfigurationsoptionen als Variablen in dieser Vorlage benutzen. Zum Beispiel: [layer_height], [fill_density] usw. Sie können auch [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], und [input_filename_base] benutzen." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "You can't change a type of the last solid part of the object." msgstr "Sie können nicht die Art des letzten soliden Teils des Objektes ändern." -#: src/slic3r/GUI/Plater.cpp:2390 +#: src/slic3r/GUI/Plater.cpp:2352 #, c-format msgid "You can't to add the object(s) from %s because of one or some of them is(are) multi-part" msgstr "Sie können die Objekte aus %s nicht hinzufügen, weil eines oder einige von ihnen mehrteilig ist (sind)" -#: src/slic3r/GUI/Plater.cpp:2311 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "Sie können kein SLA-Projekt mit einem mehrteiligen Objekt auf das Druckbett laden" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:625 msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "Sie können den nichtgleichmäßigen Skalierungsmodus nicht für mehrere Objekte/Teileauswahlen verwenden" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:287 +#: src/slic3r/GUI/SavePresetDialog.cpp:277 +msgid "" +"You have selected physical printer \"%1%\" \n" +"with related printer preset \"%2%\"" +msgstr "" +"Sie haben den physischen Drucker \"%1%\" ausgewählt \n" +"mit der zugehörigen Druckervoreinstellung \"%2%\"." + +#: src/slic3r/GUI/GUI_App.cpp:1078 +msgid "You have the following presets with saved options for \"Print Host upload\"" +msgstr "Sie haben die folgenden Voreinstellungen mit gespeicherten Optionen für \"Hochladen zum Druckhost\"" + +#: src/slic3r/GUI/OpenGLManager.cpp:262 msgid "You may need to update your graphics card driver." msgstr "Möglicherweise müssen Sie Ihren Grafikkartentreiber aktualisieren." @@ -9086,37 +10389,49 @@ msgstr "Möglicherweise müssen Sie Ihren Grafikkartentreiber aktualisieren." msgid "You must install a configuration update." msgstr "Ein Konfigurations-Update muss installiert werden." -#: src/slic3r/GUI/Preferences.cpp:172 +#: src/slic3r/GUI/Preferences.cpp:299 #, c-format msgid "You need to restart %s to make the changes effective." msgstr "Sie müssen %s neu starten, damit die Änderungen wirksam werden." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +msgid "You should to change a name of your printer device. It can't be saved." +msgstr "Sie sollten den Namen Ihres Druckers ändern. Er kann nicht gespeichert werden." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 #, c-format msgid "You started your selection with %s Item." msgstr "Sie haben Ihre Auswahl mit %s Elementen begonnen." -#: src/slic3r/GUI/DoubleSlider.cpp:1902 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:664 +msgid "You will not be asked about the unsaved changes the next time you close PrusaSlicer." +msgstr "Wenn Sie PrusaSlicer das nächste Mal schließen, werden Sie nicht nach den ungespeicherten Änderungen gefragt." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +msgid "You will not be asked about the unsaved changes the next time you switch a preset." +msgstr "Wenn Sie das nächste Mal eine Voreinstellung wechseln, werden Sie nicht nach den ungespeicherten Änderungen gefragt." + +#: src/slic3r/GUI/DoubleSlider.cpp:2121 msgid "Your current changes will delete all saved color changes." msgstr "Ihre aktuellen Änderungen löschen alle gespeicherten Farbwechsel." -#: src/slic3r/GUI/DoubleSlider.cpp:1923 +#: src/slic3r/GUI/DoubleSlider.cpp:2141 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "Ihre aktuellen Änderungen löschen alle gespeicherten Extruder-(Werkzeug-) Wechsel." -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Your file was repaired." msgstr "Ihre Datei wurde repariert." -#: src/slic3r/GUI/Plater.cpp:2528 +#: src/slic3r/GUI/Plater.cpp:2490 msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." msgstr "Ihr Objekt scheint zu groß zu sein. Es wurde deshalb automatisch verkleinert, um auf Ihre Druckplatte zu passen." -#: src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Z-Abstand" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 +#: src/slic3r/GUI/ConfigManipulation.cpp:59 msgid "" "Zero first layer height is not valid.\n" "\n" @@ -9126,7 +10441,7 @@ msgstr "" "\n" "Die erste Schichthöhe wird auf 0,01 zurückgesetzt." -#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/ConfigManipulation.cpp:47 msgid "" "Zero layer height is not valid.\n" "\n" @@ -9136,28 +10451,28 @@ msgstr "" "\n" "Die Schichthöhe wird auf 0,01 zurückgesetzt." -#: src/libslic3r/PrintConfig.cpp:2667 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "Zig-Zag" msgstr "Zickzack" -#: src/slic3r/GUI/Mouse3DController.cpp:308 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Zoom" msgstr "Zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 msgid "Zoom in" msgstr "Heranzoomen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 msgid "Zoom out" msgstr "Herauszoomen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Zoom to Bed" msgstr "Zoom aufs Druckbett" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "" "Zoom to selected object\n" "or all objects in scene, if none selected" @@ -9165,14 +10480,16 @@ msgstr "" "Auf ausgewähltes Objekt zoomen\n" "oder alle Objekte in der Szene, wenn keines ausgewählt ist" -#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 -#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 -#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2727 -#: src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:241 src/libslic3r/PrintConfig.cpp:816 +#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "°" msgstr "°" -#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 +#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 msgid "°C" msgstr "°C" diff --git a/resources/localization/es/PrusaSlicer.mo b/resources/localization/es/PrusaSlicer.mo index 0da47d5b627636133bf710a5488a7c651d34219b..43aaac113a429eb2d67497fd0d1bf2fb4b40488d 100644 GIT binary patch delta 80908 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 BRNw#r delta 51419 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%0A&RbDegR=B{VwWZni=mdSbVu*)nOi`ej)UZ>4v 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 bmsN}5@g9?{##m=@`KirXfzioSYtjDzq(<lE diff --git a/resources/localization/es/PrusaSlicer_es.po b/resources/localization/es/PrusaSlicer_es.po index 0e69f373c..2dbf8e8aa 100644 --- a/resources/localization/es/PrusaSlicer_es.po +++ b/resources/localization/es/PrusaSlicer_es.po @@ -5,82 +5,106 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 2.4.2\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" -#: src/slic3r/GUI/MainFrame.cpp:66 -msgid " - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/releases" -msgstr " - Recuerda comprobar las actualizaciones en http://github.com/prusa3d/PrusaSlicer/releases" +#: src/slic3r/GUI/Tab.cpp:4124 +msgid "" +"\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" +"To enable \"%1%\", please switch off \"%2%\"" +msgstr "" +"\"%1%\" está desactivado porque \"%2%\" está en la categoría \"%3%\".\n" +"Para activar \"%1%\", por favor desactiva \"%2%\"" -#: src/slic3r/GUI/MainFrame.cpp:872 -msgid " was successfully sliced." -msgstr " fue laminado con éxito." - -#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 -#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 -#: src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 +#: src/libslic3r/PrintConfig.cpp:2931 msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:963 +#: src/slic3r/GUI/GLCanvas3D.cpp:969 #, c-format msgid "%.2f - %.2f mm" msgstr "%.2f - %.2f mm" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" msgstr "%1% Preset" -#: src/slic3r/GUI/Plater.cpp:4400 +#: src/slic3r/GUI/Plater.cpp:4423 msgid "%1% printer was active at the time the target Undo / Redo snapshot was taken. Switching to %1% printer requires reloading of %1% presets." msgstr "La impresora %1% esta activa mientras la captura del objetivo de Deshacer / Rehacer fue tomada. Cambiar a la impresora %1% requiere recargar los preajustes %1%." -#: src/libslic3r/Print.cpp:1374 +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." +msgstr "%1% fue laminado con éxito." + +#: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "%1%=%2% mm es demasiado bajo para ser impreso a una altura de capa de %3% mm" -#: src/slic3r/GUI/PresetHints.cpp:229 +#: src/slic3r/GUI/PresetHints.cpp:228 #, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm³/s a una velocidad de filamento de %3.2f mm/s." -#: src/slic3r/GUI/Plater.cpp:1152 +#: src/slic3r/GUI/Plater.cpp:1061 #, c-format msgid "%d (%d shells)" msgstr "%d (%d pieles)" -#: src/slic3r/GUI/Plater.cpp:1160 +#: src/slic3r/GUI/Plater.cpp:1069 #, c-format msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" msgstr "%d facetas problemáticas, %d aristas corregidas, %d facetas eliminadas, %d facetas añadidas, %d facetas invertidas, %d aristas del revés" -#: src/slic3r/GUI/PresetHints.cpp:270 +#: src/slic3r/GUI/PresetHints.cpp:269 #, c-format msgid "%d lines: %.2f mm" msgstr "%d líneas: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1027 +#: src/slic3r/GUI/MainFrame.cpp:1728 #, c-format msgid "%d presets successfully imported." msgstr "%d ajustes iniciales importados con éxito." -#: src/slic3r/GUI/MainFrame.cpp:692 +#: src/slic3r/GUI/GUI_App.cpp:718 +#, c-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"¿Quieres continuar?" + +#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 #, c-format msgid "%s &Website" msgstr "%s Sitio &Web" +#: src/slic3r/GUI/GUI_App.cpp:394 +#, c-format +msgid "%s - BREAKING CHANGE" +msgstr "%s - CAMBIO IMPORTANTE" + +#: src/slic3r/GUI/Plater.cpp:1410 +#, c-format +msgid "%s - Drop project file" +msgstr "%s - Soltar archivo de proyecto" + #: src/slic3r/GUI/UpdateDialogs.cpp:211 #, c-format msgid "%s configuration is incompatible" msgstr "%s la configuración es incompatible" -#: src/slic3r/GUI/Field.cpp:175 +#: src/slic3r/GUI/Field.cpp:223 #, c-format msgid "%s doesn't support percentage" msgstr "%s no permite porcentajes" @@ -90,7 +114,7 @@ msgstr "%s no permite porcentajes" msgid "%s error" msgstr "%s error" -#: src/slic3r/GUI/ConfigWizard.cpp:481 +#: src/slic3r/GUI/ConfigWizard.cpp:499 #, c-format msgid "%s Family" msgstr "%s Familia" @@ -100,7 +124,7 @@ msgstr "%s Familia" msgid "%s has encountered an error" msgstr "%s ha ocurrido un error" -#: src/slic3r/GUI/GUI_App.cpp:138 +#: src/slic3r/GUI/GUI_App.cpp:528 #, c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n" @@ -111,12 +135,12 @@ msgstr "" "\n" "La aplicación se cerrará." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:222 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:62 #, c-format msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it." msgstr "%s ha encontrado un error. Probablemente fue causado por quedarse sin memoria. Si estás seguro de tener suficiente RAM en su sistema, esto también puede ser un error y nos complacería que lo informaras." -#: src/slic3r/GUI/UpdateDialogs.cpp:308 +#: src/slic3r/GUI/UpdateDialogs.cpp:309 #, c-format msgid "%s has no configuration updates available." msgstr "%s no tiene actualizaciones de configuración disponibles." @@ -143,7 +167,7 @@ msgstr "" "\n" "Por favof, continúa con el %s que sigue para establecer los nuevos ajustes y seleccionar si quieres que estos se actualicen automáticamente." -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 #, c-format msgid "%s View Mode" msgstr "%s Tipo de vista" @@ -163,218 +187,252 @@ msgstr "" "\n" "Configuraciones actualizadas:" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 #, c-format msgid "&About %s" msgstr "&Acerca de %s" -#: src/slic3r/GUI/GUI_App.cpp:908 +#: src/slic3r/GUI/MainFrame.cpp:1297 +msgid "&Collapse sidebar" +msgstr "Barra lateral ocultable (&C)" + +#: src/slic3r/GUI/GUI_App.cpp:1645 msgid "&Configuration" msgstr "&Configuración" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "&Configuration Snapshots" msgstr "Instantáneas de la &Configuración" -#: src/slic3r/GUI/MainFrame.cpp:588 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Copy" msgstr "&Copiar" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "&Delete selected" msgstr "Eli&minar selección" -#: src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 msgid "&Edit" msgstr "&Editar" -#: src/slic3r/GUI/MainFrame.cpp:506 +#: src/slic3r/GUI/MainFrame.cpp:1103 msgid "&Export" msgstr "&Exportar" -#: src/slic3r/GUI/MainFrame.cpp:617 src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 msgid "&Filament Settings Tab" msgstr "Pestaña de Ajustes de &filamento" -#: src/slic3r/GUI/MainFrame.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 +#: src/slic3r/GUI/MainFrame.cpp:1417 msgid "&File" msgstr "&Archivo" -#: src/slic3r/GUI/ConfigWizard.cpp:1981 +#: src/slic3r/GUI/ConfigWizard.cpp:2492 msgid "&Finish" msgstr "&Terminar" -#: src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:1141 +msgid "&G-code preview" +msgstr "Previsualización código G (&G)" + +#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 +#: src/slic3r/GUI/MainFrame.cpp:1423 msgid "&Help" msgstr "Ayu&da" -#: src/slic3r/GUI/MainFrame.cpp:474 +#: src/slic3r/GUI/MainFrame.cpp:1065 msgid "&Import" msgstr "&Importar" -#: src/slic3r/GUI/GUI_App.cpp:822 +#: src/slic3r/GUI/GUI_App.cpp:1517 msgid "&Language" msgstr "&Idioma" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "&New Project" msgstr "&Nuevo proyecto" -#: src/slic3r/GUI/ConfigWizard.cpp:1980 +#: src/slic3r/GUI/ConfigWizard.cpp:2491 msgid "&Next >" msgstr "&Siguiente >" -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "&Open G-code" +msgstr "Abrir código G (&O)" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "&Open Project" msgstr "Abrir pr&oyecto" -#: src/slic3r/GUI/MainFrame.cpp:591 +#: src/slic3r/GUI/MainFrame.cpp:1197 msgid "&Paste" msgstr "&Pegar" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "&Plater Tab" msgstr "&Pestaña Base de impresión" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1487 msgid "&Preferences" msgstr "&Preferencias" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 msgid "&Quit" msgstr "Sa&lir" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:1189 msgid "&Redo" msgstr "&Rehacer" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "&Repair STL file" msgstr "&Reparar archivo STL" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "&Save Project" msgstr "G&uardar proyecto" -#: src/slic3r/GUI/MainFrame.cpp:565 +#: src/slic3r/GUI/MainFrame.cpp:1171 msgid "&Select all" msgstr "&Seleccionar todo" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:1186 msgid "&Undo" msgstr "Des&hacer" -#: src/slic3r/GUI/MainFrame.cpp:724 +#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 +#: src/slic3r/GUI/MainFrame.cpp:1418 msgid "&View" msgstr "Ve&r" -#: src/slic3r/GUI/MainFrame.cpp:723 +#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 msgid "&Window" msgstr "&Ventana" -#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 +#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 msgid "(All)" msgstr "(Todo)" -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1554 msgid "(minimum)" msgstr "(mínimo)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "(Re)slice" msgstr "(Re)laminar" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "(Re)Slice No&w" msgstr "(Re)Laminar A&hora" -#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 msgid "(Unknown)" msgstr "(Desconocido)" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") no encontrado." -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "0 (soluble)" msgstr "0 (soluble)" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "0.2 (detachable)" msgstr "0.2 (despegable)" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/Plater.cpp:4097 +#: src/slic3r/GUI/Plater.cpp:4044 msgid "3D editor view" msgstr "Vista editor 3D" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:889 msgid "3D Honeycomb" msgstr "Panal de abeja 3D" -#: src/slic3r/GUI/Mouse3DController.cpp:274 +#: src/slic3r/GUI/NotificationManager.hpp:318 +msgid "3D Mouse disconnected." +msgstr "Ratón 3D desconectado." + +#: src/slic3r/GUI/Mouse3DController.cpp:263 msgid "3Dconnexion settings" msgstr "Ajustes 3Dconnexion" -#: src/slic3r/GUI/Plater.cpp:5038 +#: src/slic3r/GUI/Plater.cpp:5167 #, c-format msgid "3MF file exported to %s" msgstr "Archivo 3MF exportado a %s" -#: src/slic3r/GUI/ConfigWizard.cpp:1979 +#: src/slic3r/GUI/ConfigWizard.cpp:2490 msgid "< &Back" msgstr "< &Anterior" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:321 msgid "A boolean expression using the configuration values of an active print profile. If this expression evaluates to true, this profile is considered compatible with the active print profile." msgstr "Una expresión booleana que utiliza los valores de configuración de un perfil de impresión activo. Si esta expresión se evalúa como verdadera, este perfil se considera compatible con el perfil de impresión activo." -#: src/libslic3r/PrintConfig.cpp:272 +#: src/libslic3r/PrintConfig.cpp:306 msgid "A boolean expression using the configuration values of an active printer profile. If this expression evaluates to true, this profile is considered compatible with the active printer profile." msgstr "Una expresión booleana utilizando valores de configuración de un perfil existente. Si esta expresión es verdadera, el perfil será considerado compatible con el perfil de impresión activo." -#: src/slic3r/GUI/Tab.cpp:975 +#: src/slic3r/GUI/Tab.cpp:1237 msgid "A copy of the current system preset will be created, which will be detached from the system preset." msgstr "Se creará una copia del preajuste del sistema actual, que se separará del preajuste del sistema." -#: src/slic3r/GUI/ConfigWizard.cpp:1034 +#: src/slic3r/GUI/ConfigWizard.cpp:1400 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "Una buena aproximación es de 160 a 230 °C para PLA y de 215 a 250 °C para ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:1048 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." msgstr "Una buena aproximación son unos 60 °C para PLA y 110 °C para ABS. Deja el valor a cero si no tienes base calefactable." -#: src/slic3r/GUI/GLCanvas3D.cpp:686 -msgid "A toolpath outside the print area was detected" -msgstr "Se detectó una trayectoria fuera del área de impresión" +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "A toolpath outside the print area was detected." +msgstr "Ha sido detectada una trayectoria fuera del área de impresión." -#: src/slic3r/GUI/AboutDialog.cpp:199 +#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 #, c-format msgid "About %s" msgstr "Acerca de %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:959 +#: src/slic3r/GUI/GCodeViewer.cpp:2189 +msgid "above" +msgstr "sobre" + +#: src/slic3r/GUI/GLCanvas3D.cpp:965 #, c-format msgid "above %.2f mm" msgstr "sobre %.2f mm" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Encima de Z" -#: src/slic3r/GUI/Tab.cpp:1164 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Acceleration control (advanced)" msgstr "Control de aceleración (avanzado)" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Accuracy" msgstr "Precisión" +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 +msgid "Accurate" +msgstr "Preciso" + +#: src/slic3r/GUI/Plater.cpp:1423 +msgid "Action" +msgstr "Acción" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Activar" @@ -383,67 +441,75 @@ msgstr "Activar" msgid "Active" msgstr "Activo" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1705 +#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "activo" -#: src/slic3r/GUI/GLCanvas3D.cpp:267 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Adaptive" msgstr "Adaptativa" -#: src/slic3r/GUI/Tab.cpp:241 -msgid "Add a new printer" -msgstr "Añadir una impresora nueva" +#: src/libslic3r/PrintConfig.cpp:894 +msgid "Adaptive Cubic" +msgstr "Cúbico Adaptativo" -#: src/libslic3r/PrintConfig.cpp:2782 +#: src/slic3r/GUI/SavePresetDialog.cpp:314 +msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" +msgstr "Añade \"%1%\" como siguiente ajuste preestablecido para la impresora física \"%2%\"" + +#: src/libslic3r/PrintConfig.cpp:2946 msgid "Add a pad underneath the supported model" msgstr "Añade un pad debajo del modelo compatible" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2200 msgid "Add a sheath (a single perimeter line) around the base support. This makes the support more reliable, but also more difficult to remove." msgstr "Añadir una funda (una sola línea de perímetro) alrededor de la base del soporte. Esto hace el soporte más fiable pero también más difícil de retirar." -#: src/slic3r/GUI/DoubleSlider.cpp:991 +#: src/slic3r/GUI/DoubleSlider.cpp:1114 msgid "Add another code - Ctrl + Left click" msgstr "Añadir otro código - Ctrl + Click izquierdo" -#: src/slic3r/GUI/DoubleSlider.cpp:992 +#: src/slic3r/GUI/DoubleSlider.cpp:1115 msgid "Add another code - Right click" msgstr "Añadir otro código - Click derecho" -#: src/slic3r/GUI/DoubleSlider.cpp:1477 +#: src/slic3r/GUI/DoubleSlider.cpp:1665 msgid "Add color change" msgstr "Añadir cambio de color" -#: src/slic3r/GUI/DoubleSlider.cpp:1180 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "Add color change (%1%) for:" msgstr "Añadir cambio de color (%1%) para:" -#: src/slic3r/GUI/DoubleSlider.cpp:988 +#: src/slic3r/GUI/DoubleSlider.cpp:1111 msgid "Add color change - Left click" msgstr "Añadir cambio de color - Click izquierdo" -#: src/slic3r/GUI/DoubleSlider.cpp:986 +#: src/slic3r/GUI/DoubleSlider.cpp:1109 msgid "Add color change - Left click for predefined color or Shift + Left click for custom color selection" msgstr "Añadir cambio de color - Click izquierdo para color preddefinido o Mayus + Click izquierdo para selección de color personalizada" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Add color change marker for current layer" msgstr "Añadir marcador de cambio de color para la capa actual" -#: src/slic3r/GUI/DoubleSlider.cpp:1490 +#: src/slic3r/GUI/DoubleSlider.cpp:1682 msgid "Add custom G-code" msgstr "Añadir código G personalizado" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/DoubleSlider.cpp:1679 +msgid "Add custom template" +msgstr "Añadir plantilla personalizada" + +#: src/slic3r/GUI/GLCanvas3D.cpp:235 msgid "Add detail" msgstr "Añadir detalle" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:421 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:308 msgid "Add drainage hole" msgstr "Añadir orificio de drenaje" -#: src/slic3r/GUI/DoubleSlider.cpp:984 +#: src/slic3r/GUI/DoubleSlider.cpp:1107 msgid "Add extruder change - Left click" msgstr "Añadir cambio de extrusor - Click izquierdo" @@ -451,30 +517,30 @@ msgstr "Añadir cambio de extrusor - Click izquierdo" msgid "Add extruder to sequence" msgstr "Añadir extrusor a la secuencia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1993 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 msgid "Add Generic Subobject" msgstr "Añadir Subobjeto Genérico" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2896 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2925 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2943 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 msgid "Add Height Range" msgstr "Añadir Rango de Alturas" -#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3788 -#: src/slic3r/GUI/Plater.cpp:3800 src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 +#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 msgid "Add instance" msgstr "Añadir instancia" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 msgid "Add Instance of the selected object" msgstr "Añadir instancia del objeto seleccionado" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:165 msgid "Add layer range" msgstr "Añadir rango de capas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2328 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 msgid "Add Layers" msgstr "Añadir Capas" @@ -482,12 +548,12 @@ msgstr "Añadir Capas" msgid "Add modifier" msgstr "Añadir modificador" -#: src/libslic3r/PrintConfig.cpp:479 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:515 +#, c-format msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." msgstr "Añadir más perímetros cuando se necesiten para evitar huecos en las paredes inclinadas. Slic3r sigue añadiendo perímetros hasta que más del 70% del perímetro superior sea soportado." -#: src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/Plater.cpp:3858 msgid "Add one more instance of the selected object" msgstr "Añadir una instancia más del objeto seleccionado" @@ -495,52 +561,61 @@ msgstr "Añadir una instancia más del objeto seleccionado" msgid "Add part" msgstr "Añadir pieza" -#: src/slic3r/GUI/DoubleSlider.cpp:1487 +#: src/slic3r/GUI/DoubleSlider.cpp:1675 msgid "Add pause print" msgstr "Añadir pausa de impresión" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 +#: src/slic3r/GUI/PresetComboBoxes.cpp:627 +#: src/slic3r/GUI/PresetComboBoxes.cpp:674 +msgid "Add physical printer" +msgstr "Añadir impresora física" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "Add point" msgstr "Añadir punto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 msgid "Add point to selection" msgstr "Añadir punto a selección" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1509 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +msgid "Add preset for this printer device" +msgstr "Añadir ajuste preestablecido para este dispositivo de impresión" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 msgid "Add settings" msgstr "Añadir ajustes" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1386 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 msgid "Add Settings Bundle for Height range" msgstr "Añadir Conjunto de Ajustes para Rango de Alturas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 msgid "Add Settings Bundle for Object" msgstr "Añadir Conjunto de Ajustes para Objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 msgid "Add Settings Bundle for Sub-object" msgstr "Añadir Conjunto de Ajustes para Sub-objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1314 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 msgid "Add Settings for Layers" msgstr "Añadir Ajustes para Capas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 msgid "Add Settings for Object" msgstr "Agregar Ajustes para Objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 msgid "Add Settings for Sub-object" msgstr "Agregar Ajustes para Sub-objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2051 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2210 msgid "Add Shape" msgstr "Añadir forma" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:443 msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." msgstr "Añade un relleno completo cerca de las superficies inclinadas para garantizar el ancho vertical solicitado(capas sólidas arriba+abajo)." @@ -552,11 +627,19 @@ msgstr "Añadir bloqueo soportes" msgid "Add support enforcer" msgstr "Añadir refuerzo soportes" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:494 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:374 msgid "Add support point" msgstr "Añadir punto de soporte" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 +msgid "Add supports" +msgstr "Añadir soportes" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +msgid "Add supports by angle" +msgstr "Añadir soportes según ángulo" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4833 msgid "Add..." msgstr "Añadir..." @@ -564,23 +647,29 @@ msgstr "Añadir..." msgid "Add/Remove filaments" msgstr "Añadir/Retirar filamentos" -#: src/slic3r/GUI/Preset.cpp:1201 +#: src/slic3r/GUI/PresetComboBoxes.cpp:813 msgid "Add/Remove materials" msgstr "Añadir/Retirar materiales" -#: src/slic3r/GUI/Preset.cpp:1203 +#: src/slic3r/GUI/PresetComboBoxes.cpp:622 +#: src/slic3r/GUI/PresetComboBoxes.cpp:669 +msgid "Add/Remove presets" +msgstr "Añadir/Quitar ajustes preestablecidos" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:815 +#: src/slic3r/GUI/PresetComboBoxes.cpp:972 msgid "Add/Remove printers" msgstr "Añade/Quita impresoras" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "Additional information:" msgstr "Información adicional:" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:62 msgid "Additional Settings" msgstr "Ajustes adiccionales" -#: src/slic3r/GUI/ConfigWizard.cpp:791 +#: src/slic3r/GUI/ConfigWizard.cpp:1150 msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." msgstr "Además se realizará una instantánea de toda la configuración antes de aplicar una actualización." @@ -588,23 +677,22 @@ msgstr "Además se realizará una instantánea de toda la configuración antes d msgid "Address" msgstr "Dirección" -#: src/slic3r/GUI/GUI_App.cpp:814 src/slic3r/GUI/GUI_ObjectList.cpp:104 -#: src/slic3r/GUI/GUI_ObjectList.cpp:622 src/slic3r/GUI/Tab.cpp:1087 -#: src/slic3r/GUI/Tab.cpp:1102 src/slic3r/GUI/Tab.cpp:1201 -#: src/slic3r/GUI/Tab.cpp:1204 src/slic3r/GUI/Tab.cpp:1470 -#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:3661 -#: src/slic3r/GUI/wxExtensions.cpp:754 src/libslic3r/PrintConfig.cpp:88 -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 -#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2448 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 +#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 +#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 +#: src/libslic3r/PrintConfig.cpp:2591 msgid "Advanced" msgstr "Avanzado" -#: src/slic3r/GUI/ConfigWizard.cpp:821 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "Advanced mode" msgstr "Modo avanzado" -#: src/slic3r/GUI/GUI_App.cpp:814 +#: src/slic3r/GUI/GUI_App.cpp:1506 msgid "Advanced View Mode" msgstr "Modo vista avanzada" @@ -612,124 +700,140 @@ msgstr "Modo vista avanzada" msgid "Advanced: Output log" msgstr "Avanzado: Registro de salida" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:704 msgid "After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, and the filament pressure is likely not yet stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." msgstr "Después de un cambio de herramienta, la posición exacta del filamento recién cargado dentro de la boquilla puede no ser conocida, y es probable que la presión del filamento aún no sea estable. Antes de purgar el cabezal de impresión en un relleno o en un objeto de sacrificio, Slic3r siempre purgará esta cantidad de material en la torre de limpieza para producir de forma fiable sucesivas rellenos u objetos de sacrificio." -#: src/slic3r/GUI/Tab.cpp:1994 src/libslic3r/PrintConfig.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 msgid "After layer change G-code" msgstr "Código G tras un cambio de capa" -#: src/libslic3r/PrintConfig.cpp:3398 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Align the model to the given point." msgstr "Alinear el modelo a un punto dado." -#: src/libslic3r/PrintConfig.cpp:3397 +#: src/libslic3r/PrintConfig.cpp:3596 msgid "Align XY" msgstr "Alinear XY" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1739 msgid "Aligned" msgstr "Alineado" -#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 -#: src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 +#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "Todo" -#: src/libslic3r/Print.cpp:1219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" +msgstr "Todos los movimientos: Rotar - botón izquierdo ratón; Girar- botón derecho ratón" + +#: src/slic3r/GUI/ConfigWizard.cpp:694 +msgid "All installed printers are compatible with the selected filament." +msgstr "Todas las impresoras instaladas son compatibles con el filamento seleccionado." + +#: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Todos los objetos están fuera del volumen de impresión." -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "All objects will be removed, continue?" msgstr "Todos los objetos serán eliminados, deseas continuar?" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All settings changes will be discarded." +msgstr "Todos los cambios de los ajustes serán descartados." + +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Todo estandar" -#: src/libslic3r/Zipper.cpp:62 +#: src/libslic3r/miniz_extension.cpp:121 msgid "allocation failed" msgstr "asignación fallida" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "A lo largo del eje X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Along Y axis" msgstr "A lo largo del eje Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Along Z axis" msgstr "A lo largo del eje Z" -#: src/slic3r/GUI/ConfigWizard.cpp:222 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:160 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:141 +msgid "Alt + Mouse wheel" +msgstr "Alt + Rueda del ratón" + +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "Alternate nozzles:" msgstr "Alternar nozzles:" -#: src/slic3r/GUI/Plater.cpp:5002 +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "Always ask for unsaved changes when selecting new preset" +msgstr "Preguntar siempre por los cambios no guardados al seleccionar un nuevo ajuste preestablecido" + +#: src/slic3r/GUI/Plater.cpp:5135 #, c-format msgid "AMF file exported to %s" msgstr "Archivo AMF exportado a %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:690 +#: src/slic3r/GUI/GLCanvas3D.cpp:638 msgid "" -"An object outside the print area was detected\n" -"Resolve the current problem to continue slicing" +"An object outside the print area was detected.\n" +"Resolve the current problem to continue slicing." msgstr "" -"Se ha detectado una pieza fuera del área de impresión\n" -"Soluciona el problema actual para continuar el laminado" +"Se detectó un objeto fuera del área de impresión.\n" +"Resuelve el problema actual para seguir laminando." -#: src/slic3r/GUI/GLCanvas3D.cpp:685 -msgid "An object outside the print area was detected" -msgstr "Se ha detectado una pieza fuera del área de impresión" +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "An object outside the print area was detected." +msgstr "Se detectó un objeto fuera del área de impresión." -#: src/slic3r/GUI/Tab.cpp:2943 -msgid "and it has the following unsaved changes:" -msgstr "y tiene los siguientes cambios sin guardar:" - -#: src/slic3r/GUI/Plater.cpp:3170 +#: src/slic3r/GUI/Plater.cpp:2972 msgid "Another export job is currently running." msgstr "Otro trabajo de exportación está aún en marcha." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Any arrow" msgstr "Cualquier flecha" -#: src/slic3r/GUI/Tab.cpp:965 +#: src/slic3r/GUI/Tab.cpp:1283 msgid "Any modifications should be saved as a new preset inherited from this one." msgstr "Cualquier modificación debe guardarse como un nuevo preset heredado de este." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:106 msgid "API Key / Password" msgstr "Clave API / Contraseña" -#: src/slic3r/GUI/GUI_App.cpp:810 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Application preferences" msgstr "Preferencias de la aplicación" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1374 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1221 msgid "Apply changes" msgstr "Aplicar cambios" -#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:611 src/libslic3r/PrintConfig.cpp:1823 msgid "approximate seconds" msgstr "segundos aproximadamente" -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 +#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 msgid "Archimedean Chords" msgstr "Acordes de Arquímedes" -#: src/libslic3r/Zipper.cpp:88 +#: src/libslic3r/miniz_extension.cpp:147 msgid "archive is too large" msgstr "el archivo es demasiado grande" -#. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3420 msgid "Are you sure you want to %1% the selected preset?" msgstr "¿Estás seguro de que deseas %1% el preset seleccionado?" @@ -741,97 +845,125 @@ msgstr "" "¿Estas seguro de cancelar el flaseo del firmware?\n" "¡Esto podría dejar tu impresora en un estado inusable!" -#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 msgid "Are you sure you want to continue?" msgstr "¿Estás seguro de que quieres continuar?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1269 +#: src/slic3r/GUI/Tab.cpp:3392 +msgid "Are you sure you want to delete \"%1%\" preset from the physical printer \"%2%\"?" +msgstr "¿Está seguro de que desea eliminar el ajuste preestablecido \"%1%\" de la impresora física \"%2%\"?" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +msgid "Are you sure you want to delete \"%1%\" printer?" +msgstr "¿Estás seguro de que quieres borrar la impresora \"%1%\"?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1128 msgid "Are you sure you want to do it?" msgstr "¿Estás seguro de que quieres hacerlo?" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Area fill" msgstr "Área de relleno" -#: src/slic3r/GUI/Plater.cpp:641 +#: src/slic3r/GUI/Plater.cpp:507 msgid "Around object" msgstr "Alrededor de objeto" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 -#: src/slic3r/GUI/Plater.cpp:2754 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1549 msgid "Arrange" msgstr "Organiza" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "Ordenar selección" -#: src/libslic3r/PrintConfig.cpp:3443 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." msgstr "Organizar los modelos suministrados en una base y combínarlos en un solo modelo para realizar acciones una vez." -#: src/slic3r/GUI/Plater.cpp:2813 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:149 msgid "Arranging" msgstr "Organizando" -#: src/slic3r/GUI/Plater.cpp:2841 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 msgid "Arranging canceled." msgstr "Ordenamiento cancelado." -#: src/slic3r/GUI/Plater.cpp:2842 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 msgid "Arranging done." msgstr "Organización terminada." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Down" msgstr "Flecha hacia abajo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 msgid "Arrow Left" msgstr "Flecha hacia izquierda" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Arrow Right" msgstr "Flecha hacia derecha" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Up" msgstr "Flecha hacia arriba" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:290 +#: src/slic3r/GUI/GUI_App.cpp:246 +msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" +msgstr "Modelo artístico realizado por Nora Al-Badri y Jan Nikolai Nelles" + +#: src/slic3r/GUI/OpenGLManager.cpp:265 msgid "As a workaround, you may run PrusaSlicer with a software rendered 3D graphics by running prusa-slicer.exe with the --sw_renderer parameter." msgstr "Como solución alternativa, puedes ejecutar PrusaSlicer con un software de gráficos en 3D ejecutando prusaslicer.exe con el parámetro --sw_renderer." -#: src/slic3r/GUI/GUI_App.cpp:1086 src/slic3r/GUI/Plater.cpp:2313 -#: src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/Preferences.cpp:154 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +msgid "Ask for unsaved changes when closing application" +msgstr "Preguntar por los cambios no guardados al cerrar la aplicación" + +#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 +msgid "Ask for unsaved changes when selecting new preset" +msgstr "Preguntar por los cambios no guardados al seleccionar un nuevo ajuste preestablecido" + +#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 msgid "Attention!" msgstr "¡Atención!" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:150 +msgid "Authorization Type" +msgstr "Tipo de Autorización" + +#: src/libslic3r/PrintConfig.cpp:2013 msgid "Auto generated supports" msgstr "Soportes generados automáticamente" -#: src/slic3r/GUI/Preferences.cpp:47 +#: src/slic3r/GUI/Preferences.cpp:64 msgid "Auto-center parts" msgstr "Piezas auto-centradas" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1377 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1224 msgid "Auto-generate points" msgstr "Auto-generar puntos" -#: src/slic3r/GUI/Plater.cpp:1157 +#: src/slic3r/GUI/Plater.cpp:1066 #, c-format msgid "Auto-repaired (%d errors)" msgstr "Reparados automáticamente (%d errores)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:339 +#: src/slic3r/GUI/GUI_ObjectList.cpp:386 #, c-format msgid "Auto-repaired (%d errors):" msgstr "Reparado automáticamente (%d errores):" @@ -840,39 +972,47 @@ msgstr "Reparado automáticamente (%d errores):" msgid "Autodetected" msgstr "Detectado automáticamente" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1273 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1134 msgid "Autogenerate support points" msgstr "Genera los puntos de apoyo automáticamente" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1268 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1127 msgid "Autogeneration will erase all manually edited points." msgstr "La autogeneración borrará todos los puntos editados manualmente." -#: src/slic3r/GUI/Tab.cpp:3632 +#: src/slic3r/GUI/Tab.cpp:4051 msgid "Automatic generation" msgstr "Generación automática" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Automatic updates" msgstr "Actualizaciones automáticas" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Automatically repair an STL file" msgstr "Archivo STL reparado automáticamente" -#: src/slic3r/GUI/Tab.cpp:1171 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "Establecer automáticamente según ángulo" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 +msgid "Autoset custom supports" +msgstr "Soportes personalizados automáticos" + +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Autospeed (advanced)" msgstr "Velocidad automática (avanzado)" -#: src/libslic3r/PrintConfig.cpp:136 +#: src/libslic3r/PrintConfig.cpp:169 msgid "Avoid crossing perimeters" msgstr "Evita cruzar perímetros" -#: src/slic3r/GUI/Tab.cpp:3268 +#: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "FLECHA HACIA ATRÁS" -#: src/slic3r/GUI/Tab.cpp:3290 +#: src/slic3r/GUI/Tab.cpp:3727 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click to reset all settings for the current option group to the last saved preset." @@ -880,7 +1020,7 @@ msgstr "" "El símbolo de FLECHA ATRÁS indica que los ajustes cambiaron y que no son iguales a los que se guardaron para el grupo de opciones actual.\n" "Haz clic para devolver esos valores a los últimos guardados." -#: src/slic3r/GUI/Tab.cpp:3304 +#: src/slic3r/GUI/Tab.cpp:3741 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the last saved preset.\n" "Click to reset current value to the last saved preset." @@ -888,19 +1028,23 @@ msgstr "" "La FLECHA ATRÁS indica que el valor ha cambiado y ya no es el mismo que el guardado la última vez.\n" "Haz clic para restaurar el valor al último ajuste guardado." -#: src/slic3r/GUI/Preferences.cpp:55 +#: src/slic3r/GUI/Preferences.cpp:72 msgid "Background processing" msgstr "Procesamiento en segundo plano" -#: src/slic3r/GUI/GUI_ObjectList.cpp:351 +#: src/slic3r/GUI/GUI_ObjectList.cpp:398 msgid "backwards edges" msgstr "bordes hacia atrás" -#: src/slic3r/GUI/MainFrame.cpp:174 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:60 +msgid "Balanced" +msgstr "Balanceado" + +#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 msgid "based on Slic3r" msgstr "basado en Slic3r" -#: src/slic3r/GUI/Tab.cpp:1439 +#: src/slic3r/GUI/Tab.cpp:1785 msgid "Bed" msgstr "Base" @@ -912,7 +1056,7 @@ msgstr "Modelo de base personalizado" msgid "Bed custom texture" msgstr "Textura personalizada de la base" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape" msgstr "Forma de la base de impresión" @@ -920,23 +1064,23 @@ msgstr "Forma de la base de impresión" msgid "Bed shape" msgstr "Forma de la base de impresión" -#: src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape and Size" msgstr "Tamaño y forma de la base" -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:181 msgid "Bed temperature" msgstr "Temperatura de la base" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." -msgstr "Temperatura de la base calefactable para las capas después de la primera. Ajuste esto a cero para deshabilitar los comandos de control de temperatura de la base calefactable en la salida." +msgstr "Temperatura de la base calefactable para las capas después de la primera. Ajusta esto a cero para deshabilitar los comandos de control de temperatura de la base calefactable en la salida." -#: src/slic3r/GUI/ConfigWizard.cpp:1051 +#: src/slic3r/GUI/ConfigWizard.cpp:1417 msgid "Bed Temperature:" msgstr "Temperatura de la base:" -#: src/slic3r/GUI/Tab.cpp:1988 src/libslic3r/PrintConfig.cpp:153 +#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 msgid "Before layer change G-code" msgstr "Código G para antes del cambio de capa" @@ -944,143 +1088,191 @@ msgstr "Código G para antes del cambio de capa" msgid "Before roll back" msgstr "Antes de volver atrás" -#: src/slic3r/GUI/Plater.cpp:640 +#: src/slic3r/GUI/Plater.cpp:506 msgid "Below object" msgstr "Por debajo del objeto" -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "Below Z" msgstr "Por debajo de Z" -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Between objects G-code" msgstr "Código G para entre objetos" -#: src/slic3r/GUI/Tab.cpp:2006 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Between objects G-code (for sequential printing)" msgstr "Código G para entre objetos (para impresión secuencial)" -#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +msgid "Block" +msgstr "Bloquear" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:32 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:383 +msgid "Block seam" +msgstr "Bloquear costura" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:373 +msgid "Block supports" +msgstr "Bloquear soportes" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +msgid "Block supports by angle" +msgstr "Bloquear soportes según ángulo" + +#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 msgid "Bottle volume" msgstr "Volumen de la botella" -#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 msgid "Bottle weight" msgstr "Peso botella" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:665 src/libslic3r/PrintConfig.cpp:174 -#: src/libslic3r/PrintConfig.cpp:183 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 msgid "Bottom" msgstr "Inferior" -#: src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Bottom fill pattern" msgstr "Patrón de relleno inferior" -#: src/slic3r/GUI/PresetHints.cpp:342 +#: src/slic3r/GUI/PresetHints.cpp:340 msgid "Bottom is open." msgstr "La parte inferior está abierta." -#: src/slic3r/GUI/PresetHints.cpp:336 +#: src/slic3r/GUI/PresetHints.cpp:334 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "La carcasa inferior es %1% mm más grueso para la altura de capa de %2% mm." -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:211 msgid "Bottom solid layers" msgstr "Capas sólidas inferiores" -#: src/slic3r/GUI/MainFrame.cpp:665 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 msgid "Bottom View" msgstr "Vista inferior" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1464 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1468 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "Box" msgstr "Caja" -#: src/libslic3r/PrintConfig.cpp:193 +#: src/libslic3r/PrintConfig.cpp:227 msgid "Bridge" msgstr "Puente" -#: src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:256 msgid "Bridge flow ratio" msgstr "Relación de flujo del puente" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:350 msgid "Bridge infill" msgstr "Relleno de puente" -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Bridges" msgstr "Puentes" -#: src/libslic3r/PrintConfig.cpp:213 +#: src/libslic3r/PrintConfig.cpp:247 msgid "Bridges fan speed" msgstr "Velocidad del ventilador para puentes" -#: src/libslic3r/PrintConfig.cpp:202 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Bridging angle" msgstr "Ángulo de puente" -#: src/libslic3r/PrintConfig.cpp:204 +#: src/libslic3r/PrintConfig.cpp:238 msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for all bridges. Use 180° for zero angle." msgstr "Anulación de ángulo de puente. Si se deja en cero, el ángulo de puente se calculará automáticamente. De lo contrario, el ángulo proporcionado se usará para todos los puentes. Use 180 ° para ángulo con cero grados." -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" msgstr "Puente volumétrico" -#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1117 +#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 msgid "Brim" msgstr "Balsa" -#: src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Brim width" msgstr "Ancho de la balsa" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1658 -#: src/slic3r/GUI/Tab.cpp:1721 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 msgid "Browse" msgstr "Buscar" -#: src/libslic3r/Zipper.cpp:82 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 +msgid "Brush shape" +msgstr "Forma de pincel" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 +msgid "Brush size" +msgstr "Tamaño del pincel" + +#: src/libslic3r/miniz_extension.cpp:141 msgid "buffer too small" msgstr "buffer demasiado pequeño" +#: src/slic3r/GUI/GUI_App.cpp:1152 +msgid "" +"But since this version of PrusaSlicer we don't show this information in Printer Settings anymore.\n" +"Settings will be available in physical printers settings." +msgstr "" +"Pero dado que a partir de esta versión de PrusaSlicer ya no mostramos esta información el los ajustes de impresora.\n" +"Los ajustes se mostrarán en la configuración de impresora física." + #: src/slic3r/GUI/ButtonsDescription.cpp:16 msgid "Buttons And Text Colors Description" msgstr "Descripción de los botones y de los colores del texto" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/GUI_App.cpp:1084 +msgid "" +"By default new Printer devices will be named as \"Printer N\" during its creation.\n" +"Note: This name can be changed later from the physical printers settings" +msgstr "" +"Por defecto, los nuevos dispositivos de impresión se llamarán \"Impresora N\" durante su creación.\n" +"Nota: Este nombre se puede cambiar posteriormente en los ajustes de impresora física" + +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "by the print profile maximum" msgstr "por el máximo perfil de impresión" -#: src/slic3r/GUI/Preferences.cpp:113 +#: src/slic3r/GUI/Preferences.cpp:178 msgid "Camera" msgstr "Cámara" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Camera view" msgstr "Vista de cámara" -#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "Cancelar" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:155 msgid "Cancel selected" msgstr "Cancelar selección" -#: src/slic3r/GUI/Plater.cpp:3669 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Cancelado" -#: src/slic3r/GUI/Plater.cpp:3153 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Cancelando" @@ -1092,7 +1284,7 @@ msgstr "Cancelando..." msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "No se puede calcular el ancho de extrusión para %1%: Variable \"%2%\" no accesible." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 msgid "" "Cannot insert a new layer range after the current layer range.\n" "Current layer range overlaps with the next layer range." @@ -1100,7 +1292,7 @@ msgstr "" "No se puede insertar un nuevo rango de capas después del rango de capa actual.\n" "El rango de capa actual se superpone con el siguiente rango de capa." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3008 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 msgid "" "Cannot insert a new layer range after the current layer range.\n" "The next layer range is too thin to be split to two\n" @@ -1110,7 +1302,7 @@ msgstr "" "El siguiente rango de capa es demasiado delgado para dividirse en dos\n" "sin violar la altura mínima de la capa." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3012 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 msgid "" "Cannot insert a new layer range between the current and the next layer range.\n" "The gap between the current layer range and the next layer range\n" @@ -1120,80 +1312,88 @@ msgstr "" "La brecha entre el rango de capa actual y el siguiente rango de capa\n" "es más delgada que la altura mínima de capa permitida." -#: src/slic3r/GUI/Tab.cpp:3073 +#: src/slic3r/GUI/SavePresetDialog.cpp:137 msgid "Cannot overwrite a system profile." msgstr "No se puede sobre-escribir un perfil del sistema." -#: src/slic3r/GUI/Tab.cpp:3077 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 msgid "Cannot overwrite an external profile." msgstr "No puedo sobre-escribir un valor externo." -#: src/libslic3r/SLAPrint.cpp:613 +#: src/libslic3r/SLAPrint.cpp:627 msgid "Cannot proceed without support points! Add support points or disable support generation." msgstr "No se puede proceder sin puntos de soporte! Añade puntos de soporte o desactiva la generación de soportes." -#: src/slic3r/GUI/Tab.cpp:1834 +#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "Capacidades" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Capture a configuration snapshot" msgstr "Captura una instantánea de configuración" -#: src/libslic3r/PrintConfig.cpp:3424 +#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +msgid "Category" +msgstr "Categoría" + +#: src/libslic3r/PrintConfig.cpp:3623 msgid "Center" msgstr "Centro" -#: src/libslic3r/PrintConfig.cpp:3425 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Center the print around the given center." msgstr "Centrar la impresión alrededor del centro dado." -#: src/slic3r/GUI/Tab.cpp:1728 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Archivos de certificados (*.crt, *.pem)|*.crt;*.pem|Todos|*.*" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +#: src/slic3r/GUI/SavePresetDialog.cpp:313 +msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" +msgstr "Cambia \"%1%\" a \"%2%\" para esta impresora física \"%3%\"" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Change camera type (perspective, orthographic)" msgstr "Cambiar tipo de cámara (perspectiva, ortográfica)" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:885 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:693 msgid "Change drainage hole diameter" msgstr "Cambiar diámetro orificio de drenaje" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "Cambiar extrusor" -#: src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/slic3r/GUI/GUI_ObjectList.cpp:574 msgid "Change Extruder" msgstr "Cambiar Extrusor" -#: src/slic3r/GUI/DoubleSlider.cpp:1145 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 msgid "Change extruder (N/A)" msgstr "Cambiar extrusor (N/A)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3997 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 msgid "Change Extruders" msgstr "Cambiar Extrusores" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:157 #, c-format msgid "Change Option %s" msgstr "Cambiar opción %s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3558 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 msgid "Change Part Type" msgstr "Cambiar Tipo de Pieza" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:820 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:694 msgid "Change point head diameter" msgstr "Cambiar diámetro de la cabeza de punta" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Change the number of instances of the selected object" msgstr "Cambiar número de instancias al objeto seleccionado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 msgid "Change type" msgstr "Cambiar tipo" @@ -1201,125 +1401,172 @@ msgstr "Cambiar tipo" msgid "Changelog && Download" msgstr "Registro de cambios && Descargar" -#: src/slic3r/GUI/GUI_App.cpp:442 +#: src/slic3r/GUI/GUI_App.cpp:1245 msgid "Changing of an application language" msgstr "Cambio de idioma de una aplicación" -#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "Comprueba si hay actualizaciones de la aplicación" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for configuration updates" msgstr "Comprueba si hay actualizaciones de configuración" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for updates" msgstr "Comprueba si hay act&ualizaciones" -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: src/slic3r/GUI/BedShapeDialog.cpp:608 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Escoge un archivo para importar la textura de la base de impresión (PNG/SVG):" -#: src/slic3r/GUI/MainFrame.cpp:773 +#: src/slic3r/GUI/MainFrame.cpp:1474 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Elija un archivo para laminar (STL / OBJ / AMF / 3MF / PRUSA):" -#: src/slic3r/GUI/BedShapeDialog.cpp:555 +#: src/slic3r/GUI/BedShapeDialog.cpp:631 msgid "Choose an STL file to import bed model from:" msgstr "Escoge un archivo STL para importar el modelo de la base de impresión:" -#: src/slic3r/GUI/BedShapeDialog.cpp:487 +#: src/slic3r/GUI/BedShapeDialog.cpp:563 msgid "Choose an STL file to import bed shape from:" msgstr "Escoge un archivo STL para importar la forma de la base:" -#: src/slic3r/GUI/GUI_App.cpp:555 +#: src/slic3r/GUI/GUI_App.cpp:1208 msgid "Choose one file (3MF/AMF):" msgstr "Selecciona un archivo (3MF/AMF):" -#: src/slic3r/GUI/GUI_App.cpp:567 +#: src/slic3r/GUI/GUI_App.cpp:1233 +msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" +msgstr "Elige un archivo (GCODE/.GCO/.G/.ngc/NGC):" + +#: src/slic3r/GUI/GUI_App.cpp:1220 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Escoja uno o mas archivos (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/ConfigWizard.cpp:895 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:35 +msgid "Choose SLA archive:" +msgstr "Elegir archivo SLA:" + +#: src/slic3r/GUI/ConfigWizard.cpp:1261 msgid "Choose the type of firmware used by your printer." msgstr "Selecciona el tipo de firmware que usa tu impresora." -#: src/slic3r/GUI/BedShapeDialog.cpp:89 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:36 +msgid "Circle" +msgstr "Círculo" + +#: src/slic3r/GUI/BedShapeDialog.cpp:142 msgid "Circular" msgstr "Circular" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 -msgid "Click right mouse button to open History" -msgstr "Click con botón derecho para abrir Historial" +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 +msgid "Click right mouse button to open/close History" +msgstr "Clic con botón derecho del ratón para abrir/cerrar Historia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:404 +#: src/slic3r/GUI/GUI_ObjectList.cpp:451 msgid "Click the icon to change the object printable property" msgstr "Click en el icono para cambiar las propiedades del objeto imprimible" -#: src/slic3r/GUI/GUI_ObjectList.cpp:398 +#: src/slic3r/GUI/GUI_ObjectList.cpp:445 msgid "Click the icon to change the object settings" msgstr "Click en el icono para cambiar los ajustes del objeto" -#: src/slic3r/GUI/Plater.cpp:343 +#: src/slic3r/GUI/PresetComboBoxes.cpp:566 msgid "Click to edit preset" msgstr "Clic para cambiar el ajuste inicial" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to hide" +msgstr "Clic para ocultar" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to show" +msgstr "Clic para mostrar" + +#: src/libslic3r/PrintConfig.cpp:286 msgid "Clip multi-part objects" msgstr "Enlazaar objetos de varias partes" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:25 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 msgid "Clipping of view" msgstr "Recorte de la vista" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:364 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +#: src/slic3r/GUI/Mouse3DController.cpp:353 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Close" msgstr "Cerrar" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 -#: src/libslic3r/PrintConfig.cpp:2934 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Closing distance" msgstr "Distancia de cierre" -#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 +#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +msgid "Collapse sidebar" +msgstr "Ocultar barra lateral" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Collapse/Expand the sidebar" +msgstr "Ocultar/Expandir barra lateral" + +#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 msgid "Color" msgstr "Color" -#: src/slic3r/GUI/DoubleSlider.cpp:1005 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +msgid "Color change" +msgstr "Cambio de color" + +#: src/slic3r/GUI/DoubleSlider.cpp:1130 msgid "Color change (\"%1%\")" msgstr "Cambio de color (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1006 +#: src/slic3r/GUI/DoubleSlider.cpp:1131 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Cambio de color (\"%1%\") para el Extrusor %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:995 +#: src/slic3r/GUI/GLCanvas3D.cpp:1001 #, c-format msgid "Color change for Extruder %d at %.2f mm" msgstr "Cambio de color para Extrusor %d en %.2f mm" -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 -#: src/libslic3r/GCode/PreviewData.cpp:359 +#: src/slic3r/GUI/Tab.cpp:2203 +msgid "Color Change G-code" +msgstr "Código G Cambio Color" + +#: src/libslic3r/PrintConfig.cpp:1960 +msgid "Color change G-code" +msgstr "Código G Cambio color" + +#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +msgid "Color changes" +msgstr "Cambios de color" + +#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 +#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 msgid "Color Print" msgstr "Color Print" -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:294 msgid "Colorprint height" msgstr "Altura de Colorprint" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:1034 msgid "Combine infill every" msgstr "Combinar el relleno cada" -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1039 msgid "Combine infill every n layers" msgstr "Combinar el relleno cada n capas" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Commands" msgstr "Comandos" @@ -1327,23 +1574,23 @@ msgstr "Comandos" msgid "Comment:" msgstr "Comentario:" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 +#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 msgid "Compatible print profiles" msgstr "Perfiles de impresión compatibles" -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Compatible print profiles condition" msgstr "Condición de perfiles de impresión compatibles" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 +#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 msgid "Compatible printers" msgstr "Impresoras compatibles" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:305 msgid "Compatible printers condition" msgstr "Condición de impresoras compatibles" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:338 msgid "Complete individual objects" msgstr "Completar objetos individuales" @@ -1351,27 +1598,27 @@ msgstr "Completar objetos individuales" msgid "Completed" msgstr "Completado" -#: src/libslic3r/Zipper.cpp:54 +#: src/libslic3r/miniz_extension.cpp:113 msgid "compression failed" msgstr "compresión fallida" -#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 msgid "Concentric" msgstr "Concentrico" -#: src/slic3r/GUI/ConfigWizard.cpp:2110 +#: src/slic3r/GUI/ConfigWizard.cpp:2625 msgid "Configuration &Assistant" msgstr "&Asistente de configuración" -#: src/slic3r/GUI/ConfigWizard.cpp:2113 +#: src/slic3r/GUI/ConfigWizard.cpp:2628 msgid "Configuration &Wizard" msgstr "Ayudante de co&nfiguración" -#: src/slic3r/GUI/ConfigWizard.cpp:2109 +#: src/slic3r/GUI/ConfigWizard.cpp:2624 msgid "Configuration Assistant" msgstr "Asistente de Configuración" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1424 msgid "Configuration notes" msgstr "Notas de configuración" @@ -1387,11 +1634,15 @@ msgstr "Actualización de configuración" msgid "Configuration update is available" msgstr "Hay disponible una actualización de la Configuración" -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "Configuration update is available." +msgstr "Disponible la actualización de la configuración." + +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "Configuration updates" msgstr "Actualizaciones de la configuración" -#: src/slic3r/GUI/ConfigWizard.cpp:2112 +#: src/slic3r/GUI/ConfigWizard.cpp:2627 msgid "Configuration Wizard" msgstr "Asistente de configuración" @@ -1399,15 +1650,11 @@ msgstr "Asistente de configuración" msgid "Confirmation" msgstr "Confirmación" -#: src/slic3r/GUI/Tab.cpp:1931 -msgid "Connection failed." -msgstr "Conexión fallida." - -#: src/slic3r/GUI/Tab.cpp:3627 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Connection of the support sticks and junctions" msgstr "Conexión de las varillas de soporte y uniones" -#: src/slic3r/Utils/AstroBox.cpp:83 +#: src/slic3r/Utils/AstroBox.cpp:84 msgid "Connection to AstroBox works correctly." msgstr "La conexión a Astrobox funciona correctamente." @@ -1423,124 +1670,136 @@ msgstr "La conexión a FlashAir funciona correctamente y la carga está habilita msgid "Connection to OctoPrint works correctly." msgstr "La conexión a OctoPrint funciona correctamente." -#: src/slic3r/GUI/Tab.cpp:1928 -msgid "Connection to printer works correctly." -msgstr "La conexión con la impresora funciona correctamente." +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:260 +msgid "Connection to printers connected via the print host failed." +msgstr "Falló la conexión a las impresoras conectadas a través del host de impresión." -#: src/slic3r/Utils/OctoPrint.cpp:176 +#: src/slic3r/Utils/OctoPrint.cpp:185 msgid "Connection to Prusa SL1 works correctly." msgstr "La conexión con la Prusa SL1 funciona correctamente." -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "Contact Z distance" msgstr "Distancia Z de contacto" -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:286 msgid "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others." msgstr "Contribuciones de Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik y muchos otros." -#: src/libslic3r/PrintConfig.cpp:2659 +#: src/slic3r/GUI/GUI_App.cpp:245 +msgid "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." +msgstr "Contribuciones de Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik y muchos otros." + +#: src/libslic3r/PrintConfig.cpp:2823 msgid "Controls the bridge type between two neighboring pillars. Can be zig-zag, cross (double zig-zag) or dynamic which will automatically switch between the first two depending on the distance of the two pillars." msgstr "Controla el tipo de puente entre dos pilares adyacentes. Puede ser zig-zag, cruzado(doble zig-zag) o dinámico que cambiará automáticamente entre los dos primeros dependiendo de la distancia de los dos pilares." -#: src/slic3r/GUI/Tab.cpp:1444 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +msgid "Convert from imperial units" +msgstr "Convertir de unidades imperiales" + +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Cooling" msgstr "Enfriamiento" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:696 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "Los movimientos de enfriamiento se están acelerando gradualmente comenzando a esta velocidad." -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:715 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Los movimientos de enfriamiento se están acelerando gradualmente hacia esta velocidad." -#: src/slic3r/GUI/Tab.cpp:1465 +#: src/slic3r/GUI/Tab.cpp:1811 msgid "Cooling thresholds" msgstr "Umbrales de enfriamiento" -#: src/libslic3r/PrintConfig.cpp:327 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Cooling tube length" msgstr "Longitud del tubo de enfriamiento" -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:353 msgid "Cooling tube position" msgstr "Posición del tubo de refrigeración" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4856 msgid "Copies of the selected object" msgstr "Copias del objeto seleccionado" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4871 msgid "Copy" msgstr "Copiar" -#: src/slic3r/GUI/MainFrame.cpp:589 +#: src/slic3r/GUI/MainFrame.cpp:1195 msgid "Copy selection to clipboard" msgstr "Copiar selección al portapapeles" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Copy to clipboard" msgstr "Copiar al portapapeles" -#: src/slic3r/GUI/SysInfoDialog.cpp:154 +#: src/slic3r/GUI/SysInfoDialog.cpp:177 msgid "Copy to Clipboard" msgstr "Copiar al portapapeles" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:121 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 msgid "Copying of the temporary G-code has finished but the exported code couldn't be opened during copy check. The output G-code is at %1%.tmp." msgstr "La copia del código G temporal ha finalizado, pero el código exportado no se pudo abrir durante la verificación de la copia. El código G de salida está en %1%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:118 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 msgid "Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "La copia del código G temporal ha finalizado, pero el código original en %1% no se pudo abrir durante la verificación de copia. El código G de salida está en%2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:480 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "Error al copiar el código G temporal al código G de salida" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:109 -msgid "Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?" -msgstr "La copia del código G tempolar al código G de salida falló. ¿Tal vez la tarjeta SD tiene la escritura bloqueada?" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +msgid "" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" +"Error message: %1%" +msgstr "" +"Error al copiar el código G temporal en el código G de salida. ¿Quizás la tarjeta SD está bloqueada contra escritura?\n" +"Mensaje de error: %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:112 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "La copia del código G temporal al código G de salida ha fallado. Puede haber un problema con el dispositivo de destino, intenta exportar nuevamente o usa un dispositivo diferente. El código G de salida dañado está en %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 msgid "Copyright" msgstr "Copyright" -#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 msgid "Correction for expansion" msgstr "Corrección para la expansión" -#: src/slic3r/GUI/Tab.cpp:2100 src/slic3r/GUI/Tab.cpp:3519 +#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 msgid "Corrections" msgstr "Correcciones" -#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 msgid "Cost" msgstr "Coste" -#: src/slic3r/GUI/Plater.cpp:239 +#: src/slic3r/GUI/Plater.cpp:245 msgid "Cost (money)" msgstr "Coste (dinero)" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "¡No se pudieron organizar los objetos modelo! Algunas geometrías pueden ser inválidas." -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/Utils/AstroBox.cpp:90 msgid "Could not connect to AstroBox" msgstr "No se pudo conectar con Astrobox" -#: src/slic3r/Utils/Duet.cpp:54 +#: src/slic3r/Utils/Duet.cpp:55 msgid "Could not connect to Duet" msgstr "No se pudo conectar con la Duet" -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:74 msgid "Could not connect to FlashAir" msgstr "No puedo conectar con FlashAir" @@ -1548,56 +1807,69 @@ msgstr "No puedo conectar con FlashAir" msgid "Could not connect to OctoPrint" msgstr "No puedo conectar con OctoPrint" -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:191 msgid "Could not connect to Prusa SLA" msgstr "No se pudo conectar con la Prusa SLA" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/Utils/Http.cpp:73 +msgid "Could not detect system SSL certificate store. PrusaSlicer will be unable to establish secure network connections." +msgstr "No se pudo detectar el almacén de certificados SSL del sistema. PrusaSlicer no podrá establecer conexiones de red seguras." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 msgid "Could not get a valid Printer Host reference" msgstr "No pude conseguir una referencia válida de gestor de impresora" -#: src/slic3r/Utils/Duet.cpp:134 +#: src/slic3r/Utils/Duet.cpp:136 msgid "Could not get resources to create a new connection" msgstr "No se pudieron obtener recursos para crear una nueva conexión" -#: src/libslic3r/PrintConfig.cpp:1959 +#: src/libslic3r/PrintConfig.cpp:2101 msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "Cubrir la capa de contacto superior de los soportes con bucles. Desactivado por defecto." -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 msgid "Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low." msgstr "Las ranuras de menos de dos veces el radio de cierre de huecos se rellenan durante el laminado de la malla triangular. La operación de cierre de huecos puede reducir la resolución de la impresión, por lo tanto es aconsejable mantener ese valor razonablemente bajo." -#: src/libslic3r/Zipper.cpp:58 +#: src/libslic3r/miniz_extension.cpp:117 msgid "CRC-32 check failed" msgstr "Comprobación con CRC-32 fallida" -#: src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Create pad around object and ignore the support elevation" msgstr "Crear pad alrededor del objeto e ignorar la elevación del soporte" -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "Critical angle" msgstr "Ángulo crítico" -#: src/libslic3r/PrintConfig.cpp:2668 +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Cruzado" -#: src/libslic3r/PrintConfig.cpp:847 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:225 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:203 +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl + Rueda del ratón" + +#: src/libslic3r/PrintConfig.cpp:885 msgid "Cubic" msgstr "Cúbico" -#: src/slic3r/GUI/wxExtensions.cpp:704 +#: src/slic3r/Utils/Http.cpp:91 +msgid "CURL init has failed. PrusaSlicer will be unable to establish network connections. See logs for additional details." +msgstr "CURL init ha fallado. PrusaSlicer no podrá establecer conexiones de red. Consulta los registros para obtener detalles adicionales." + +#: src/slic3r/GUI/wxExtensions.cpp:624 #, c-format msgid "Current mode is %s" msgstr "El modo actual es %s" -#: src/slic3r/GUI/Tab.cpp:959 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "Current preset is inherited from" msgstr "El preajuste fue heredado de" -#: src/slic3r/GUI/Tab.cpp:957 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "Current preset is inherited from the default preset." msgstr "El preajuste fue heredado del preajuste predeterminado." @@ -1605,451 +1877,488 @@ msgstr "El preajuste fue heredado del preajuste predeterminado." msgid "Current version:" msgstr "Versión actual:" -#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 -#: src/libslic3r/ExtrusionEntity.cpp:322 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 msgid "Custom" msgstr "Personalizado" -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:114 msgid "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. If left blank, the default OS CA certificate repository is used." msgstr "Un archivo de certificado CA personalizado puede ser especificado para conexiones HTTPS OctoPrint, en formato crt/pem. Si se deja en blanco, el repositorio de certificados OS CA será usado." -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1975 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Custom G-code" msgstr "Código G personalizado" -#: src/slic3r/GUI/DoubleSlider.cpp:1619 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Custom G-code on current layer (%1% mm)." msgstr "Código G personalizado en la capa actual (%1% mm)." -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/GCodeViewer.cpp:2580 src/slic3r/GUI/GUI_Preview.cpp:1477 +msgid "Custom G-codes" +msgstr "Códigos G personalizados" + +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer" msgstr "Impresora customizada" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer Setup" msgstr "Configuración personalizada de impresora" -#: src/slic3r/GUI/ConfigWizard.cpp:736 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 msgid "Custom profile name:" msgstr "Nombre impresora customizada:" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3402 +#: src/slic3r/GUI/DoubleSlider.cpp:1135 +msgid "Custom template (\"%1%\")" +msgstr "Plantilla personalizada (\"%1%\")" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 msgid "Cut" msgstr "Cortar" -#: src/slic3r/GUI/Plater.cpp:4786 +#: src/slic3r/GUI/Plater.cpp:4921 msgid "Cut by Plane" msgstr "Cortar por el Plano" -#: src/libslic3r/PrintConfig.cpp:3403 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Cut model at the given Z." msgstr "Cortar modelo a una Z dada." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Cylinder" msgstr "Cilindro" -#: src/slic3r/GUI/MainFrame.cpp:568 +#: src/slic3r/GUI/MainFrame.cpp:1174 msgid "D&eselect all" msgstr "D&eseleccionar todo" -#: src/libslic3r/PrintConfig.cpp:3504 +#: src/libslic3r/PrintConfig.cpp:3709 msgid "Data directory" msgstr "Directorio de datos" -#: src/slic3r/GUI/Mouse3DController.cpp:313 +#: src/slic3r/GUI/Mouse3DController.cpp:300 msgid "Deadzone:" msgstr "Zona muerta:" -#: src/libslic3r/Zipper.cpp:52 +#: src/libslic3r/miniz_extension.cpp:111 msgid "decompression failed or archive is corrupted" msgstr "descompresión fallida o archivo está dañado" -#: src/slic3r/GUI/Plater.cpp:4720 +#: src/slic3r/GUI/Plater.cpp:4824 msgid "Decrease Instances" msgstr "Reducir Instancias" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1704 src/libslic3r/PrintConfig.cpp:335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 msgid "Default" msgstr "Por defecto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:457 src/slic3r/GUI/GUI_ObjectList.cpp:469 -#: src/slic3r/GUI/GUI_ObjectList.cpp:917 src/slic3r/GUI/GUI_ObjectList.cpp:3967 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3977 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4012 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 +#: src/slic3r/GUI/ExtraRenderers.cpp:297 src/slic3r/GUI/GUI_ObjectList.cpp:496 +#: src/slic3r/GUI/GUI_ObjectList.cpp:508 src/slic3r/GUI/GUI_ObjectList.cpp:1015 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4454 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4464 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4499 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:202 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 msgid "default" msgstr "por defecto" -#: src/libslic3r/PrintConfig.cpp:777 +#: src/libslic3r/PrintConfig.cpp:813 msgid "Default base angle for infill orientation. Cross-hatching will be applied to this. Bridges will be infilled using the best direction Slic3r can detect, so this setting does not affect them." msgstr "Ángulo base predeterminado para orientación de relleno. Se aplicará sombreado cruzado a esto. Los puentes se rellenarán utilizando la mejor dirección que Slic3r pueda detectar, por lo que esta configuración no los afecta." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 +msgid "Default color" +msgstr "Color predeterminado" + +#: src/slic3r/GUI/GCodeViewer.cpp:2313 +msgid "default color" +msgstr "color predeterminado" + +#: src/libslic3r/PrintConfig.cpp:590 msgid "Default extrusion width" msgstr "Ancho de extrusión por defecto" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1305 msgid "default filament profile" msgstr "perfil de filamento por defecto" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Default filament profile" msgstr "Perfil de filamento por defecto" -#: src/libslic3r/PrintConfig.cpp:346 +#: src/libslic3r/PrintConfig.cpp:380 msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." msgstr "Perfil de filamento por defecto asociado con el perfil de impresora actual. Al seleccionar el perfil de impresora actual se activará este perfil de filamento." -#: src/slic3r/GUI/Tab.cpp:2919 -#, c-format -msgid "Default preset (%s)" -msgstr "Ajustes por defecto (%s)" - -#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 msgid "Default print color" msgstr "Color de impresión predeterminado" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "perfil de impresión por defecto" -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default print profile" msgstr "Perfil de impresión por defecto" -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." msgstr "Perfil de impresión por defecto asociado con el perfil de impresora actual. Al seleccionar el perfil de impresora actual se activará este perfil de impresión." -#: src/slic3r/GUI/Tab.cpp:1001 +#: src/slic3r/GUI/Tab.cpp:1319 msgid "default SLA material profile" msgstr "perfil de material de SLA por defecto" -#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 +#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 msgid "Default SLA material profile" msgstr "Perfil de material de SLA predeterminado" -#: src/slic3r/GUI/Tab.cpp:1005 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA print profile" msgstr "perfil de impresión de SLA por defecto" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:184 msgid "default value" msgstr "valor por defecto" -#: src/slic3r/GUI/ConfigWizard.cpp:734 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Define a custom printer profile" msgstr "Definir un perfil de impresora personalizado" -#: src/libslic3r/PrintConfig.cpp:2798 +#: src/libslic3r/PrintConfig.cpp:2962 msgid "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful when enabling this feature, as some resins may produce an extreme suction effect inside the cavity, which makes peeling the print off the vat foil difficult." msgstr "Define la profundidad de la cavidad del pad. Establecerer a cero para deshabilitar la cavidad. Ten cuidado al habilitar esta función, ya que algunas resinas pueden producir un efecto de succión extremo dentro de la cavidad, lo que dificulta el despegado de la impresión de la lámina de la cuba." -#: src/slic3r/GUI/GUI_ObjectList.cpp:346 +#: src/slic3r/GUI/GUI_ObjectList.cpp:393 msgid "degenerate facets" msgstr "facetas degeneradas" -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:676 msgid "Delay after unloading" msgstr "Retardo tras la descarga" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "delete" msgstr "borra" -#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1718 -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Delete" msgstr "Borra" -#: src/slic3r/GUI/MainFrame.cpp:575 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Delete &all" msgstr "Borr&ar todo" -#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "Delete all" msgstr "Eliminar todo" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2176 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 msgid "Delete All Instances from Object" msgstr "Eliminar todas las instancias del Objeto" -#: src/slic3r/GUI/DoubleSlider.cpp:1516 +#: src/slic3r/GUI/DoubleSlider.cpp:1708 msgid "Delete color change" msgstr "Eliminar cambio de color" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 msgid "Delete color change marker for current layer" msgstr "Eliminar marcador de cambio de color para la capa actual" -#: src/slic3r/GUI/DoubleSlider.cpp:1519 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Delete custom G-code" msgstr "Eliminar código G personalizado" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:539 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:424 msgid "Delete drainage hole" msgstr "Eliminar orificio de drenaje" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 msgid "Delete Height Range" msgstr "Eliminar Rango de Alturas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2246 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Delete Instance" msgstr "Eliminar Instancia" -#: src/slic3r/GUI/Plater.cpp:2712 +#: src/slic3r/GUI/Plater.cpp:2673 msgid "Delete Object" msgstr "Eliminar Objeto" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:104 #, c-format msgid "Delete Option %s" msgstr "Eliminar Opción %s" -#: src/slic3r/GUI/DoubleSlider.cpp:1518 +#: src/slic3r/GUI/DoubleSlider.cpp:1710 msgid "Delete pause print" msgstr "Eliminar pausa de impresión" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/PresetComboBoxes.cpp:652 +msgid "Delete physical printer" +msgstr "Eliminar impresora física" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +msgid "Delete Physical Printer" +msgstr "Eliminar Impresora Física" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Delete selected" msgstr "Eliminar selección" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2830 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 msgid "Delete Selected" msgstr "Eliminar Selección" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2693 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 msgid "Delete Selected Item" msgstr "Eliminar Objeto Seleccionado" -#: src/slic3r/GUI/Plater.cpp:4677 +#: src/slic3r/GUI/Plater.cpp:4782 msgid "Delete Selected Objects" msgstr "Eliminar Objetos Seleccionados" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 msgid "Delete Settings" msgstr "Eliminar Ajustes" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2227 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 msgid "Delete Subobject" msgstr "Eliminar Subobjeto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:514 msgid "Delete support point" msgstr "Borra punto de apoyo" -#: src/slic3r/GUI/Tab.cpp:134 +#: src/slic3r/GUI/Tab.cpp:204 msgid "Delete this preset" msgstr "Borra este ajuste" -#: src/slic3r/GUI/DoubleSlider.cpp:1035 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +msgid "Delete this preset from this printer device" +msgstr "Eliminar este ajuste preestablecido para este dispositivo de impresión" + +#: src/slic3r/GUI/DoubleSlider.cpp:1160 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "Eliminar marca de verificación - Click izquierdo o presionar tecla \"-\"" -#: src/slic3r/GUI/DoubleSlider.cpp:1517 +#: src/slic3r/GUI/DoubleSlider.cpp:1709 msgid "Delete tool change" msgstr "Eliminar cambio de herramienta" -#: src/slic3r/GUI/MainFrame.cpp:576 +#: src/slic3r/GUI/MainFrame.cpp:1182 msgid "Deletes all objects" msgstr "Borra todos los objetos" -#: src/slic3r/GUI/MainFrame.cpp:573 +#: src/slic3r/GUI/MainFrame.cpp:1179 msgid "Deletes the current selection" msgstr "Borrar la selección actual" -#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/libslic3r/PrintConfig.cpp:753 src/libslic3r/PrintConfig.cpp:2646 +#: src/libslic3r/PrintConfig.cpp:2647 msgid "Density" msgstr "Densidad" -#: src/libslic3r/PrintConfig.cpp:791 +#: src/libslic3r/PrintConfig.cpp:827 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Densidad de relleno interior, expresado en el rango 0% - 100%." -#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 -#: src/slic3r/GUI/Tab.cpp:2019 src/slic3r/GUI/Tab.cpp:2135 -#: src/slic3r/GUI/Tab.cpp:3543 src/slic3r/GUI/Tab.cpp:3671 +#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 msgid "Dependencies" msgstr "Dependencias" -#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 msgid "Deretraction Speed" msgstr "Velocidad de deretracción" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 +#: src/slic3r/GUI/GUI_Preview.cpp:1473 +msgid "Deretractions" +msgstr "Deretracciones" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:172 +msgid "Descriptive name for the printer" +msgstr "Un nombre descriptivo para la impresora" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Deselect all" msgstr "Deseleccionar todo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Deselect by rectangle" msgstr "Deseleccionar mediante rectángulo" -#: src/slic3r/GUI/MainFrame.cpp:569 +#: src/slic3r/GUI/MainFrame.cpp:1175 msgid "Deselects all objects" msgstr "Deseleccionar todos los objetos" -#: src/slic3r/GUI/Tab.cpp:963 +#: src/slic3r/GUI/Tab.cpp:1224 msgid "Detach from system preset" msgstr "Separar del preajuste del sistema" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "Detach preset" msgstr "Separar preajuste" -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/Tab.cpp:3323 msgid "Detached" msgstr "Separado" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Detect bridging perimeters" msgstr "Detectar perímetros con puentes" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2218 msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." msgstr "Detecta muros de ancho único (partes donde dos extrusiones no se ajustan y tenemos que colapsarlas en un solo rastro)." -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Detect thin walls" msgstr "Detecta paredes delgadas" -#: src/libslic3r/PrintConfig.cpp:3472 +#: src/libslic3r/PrintConfig.cpp:3671 msgid "Detect unconnected parts in the given model(s) and split them into separate objects." msgstr "Detectadas piezas desconectadas en el(los) modelo(s) dado(s) y divídido(s) en objetos separados." -#: src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:2330 msgid "Detected advanced data" msgstr "Datos avanzados detectados" -#: src/slic3r/GUI/Mouse3DController.cpp:289 +#: src/slic3r/GUI/Mouse3DController.cpp:274 msgid "Device:" msgstr "Dispositivo:" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 msgid "Diameter" msgstr "Diámetro" -#: src/libslic3r/PrintConfig.cpp:2694 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "Diameter in mm of the pillar base" msgstr "Diámetro en mm del pilar de la base" -#: src/libslic3r/PrintConfig.cpp:2650 +#: src/libslic3r/PrintConfig.cpp:2793 msgid "Diameter in mm of the support pillars" msgstr "Diámetro en mm de los pilares de soporte" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "Diameter of the pointing side of the head" msgstr "Diámetro de la parte en punta de la cabeza" -#: src/slic3r/GUI/BedShapeDialog.cpp:94 +#: src/slic3r/GUI/BedShapeDialog.cpp:131 msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "Diámetro de la base de impresión. Se supone que el origen (0,0) está ubicado en el centro." -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1747 msgid "Direction" msgstr "Dirección" -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Disable fan for the first" msgstr "Desactivar ventilador para la primera" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1457 msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." msgstr "Desactiva la retracción cuando la trayectoria de desplazamiento no supera los perímetros de la capa superior (y, por lo tanto, cualquier goteo probablemente será invisible)." -#: src/slic3r/GUI/DoubleSlider.cpp:952 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 +msgid "Discard" +msgstr "Descartar" + +#: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" msgstr "Descartar todos los cambios personalizados" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1375 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 msgid "Discard changes" msgstr "Descartar los cambios" -#: src/slic3r/GUI/GUI_App.cpp:932 src/slic3r/GUI/Tab.cpp:2946 -msgid "Discard changes and continue anyway?" -msgstr "¿Descartar los cambios y continuar de todos modos?" - -#: src/slic3r/GUI/Tab.cpp:2078 +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Display" msgstr "Pantalla" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "Display height" msgstr "Altura de la pantalla" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Display horizontal mirroring" msgstr "Espejo horizontal de la pantalla" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2535 msgid "Display orientation" msgstr "Orientación de la pantalla" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Display the Print Host Upload Queue window" msgstr "Mostrar la ventana de la cola de carga del host de impresión" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Display vertical mirroring" msgstr "Espejo vertical de la pantalla" -#: src/libslic3r/PrintConfig.cpp:2353 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Display width" msgstr "Anchura de la pantalla" -#: src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:411 msgid "Distance between copies" msgstr "Distancia entre copias" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1157 +msgid "Distance between ironing lines" +msgstr "Distancia entre las líneas alisadas" + +#: src/libslic3r/PrintConfig.cpp:1788 msgid "Distance between skirt and object(s). Set this to zero to attach the skirt to the object(s) and get a brim for better adhesion." msgstr "Distancia entre falda y objeto(s). Ajuste esto a cero para unir la falda a los objetos y obtener un borde para una mejor adhesión." -#: src/libslic3r/PrintConfig.cpp:2882 +#: src/libslic3r/PrintConfig.cpp:3046 msgid "Distance between two connector sticks which connect the object and the generated pad." msgstr "Distancia entre dos palitos de apoyo entre la pieza y la base generada." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "Distancia del objeto" -#: src/slic3r/GUI/BedShapeDialog.cpp:85 +#: src/slic3r/GUI/BedShapeDialog.cpp:121 msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "Distancia de la coordenada del código G de 0,0 de la esquina frontal izquierda del rectángulo." -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "Distancia desde el centro del tubo de enfriado a la punta del extrusor." -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1490 msgid "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware." msgstr "Distancia de la punta del extrusor desde la posición donde el filamento es colocado cuando se descarga. Esto debería coincidir con el valor en el firmware de la impresora." -#: src/libslic3r/PrintConfig.cpp:378 +#: src/libslic3r/PrintConfig.cpp:412 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Distancia utilizada para la función de organización automática de la base." -#: src/libslic3r/PrintConfig.cpp:3486 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Do not fail if a file supplied to --load does not exist." msgstr "No fallar si el archivo suministrado para --load no existe." -#: src/libslic3r/PrintConfig.cpp:3430 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "Do not rearrange the given models before merging and keep their original XY coordinates." msgstr "No reorganizar los modelos dados antes de fusionar y mantener sus coordenadas XY originales." -#: src/slic3r/GUI/Field.cpp:240 +#: src/slic3r/GUI/Field.cpp:288 #, c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -2060,31 +2369,35 @@ msgstr "" "Escoge SI si deseas cambiar este valor a %s%%,\n" "o NO si estás seguro que %s %s es el valor correcto." -#: src/slic3r/GUI/DoubleSlider.cpp:1920 +#: src/slic3r/GUI/DoubleSlider.cpp:2138 msgid "Do you want to delete all saved tool changes?" msgstr "¿Desea eliminar todos los cambios de herramienta guardados?" -#: src/slic3r/GUI/GUI_App.cpp:884 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Do you want to proceed?" msgstr "¿Deseas continuar?" -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "Do you want to retry" msgstr "Quieres volver a intentarlo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1045 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 msgid "Do you want to save your manually edited support points?" msgstr "¿Deseas guardar tus puntos de soporte editados manualmente?" -#: src/slic3r/GUI/ConfigWizard.cpp:1834 +#: src/slic3r/GUI/ConfigWizard.cpp:2261 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "¿Desea seleccionar filamentos predeterminados para estos modelos de impresoras FFF?" -#: src/slic3r/GUI/ConfigWizard.cpp:1852 +#: src/slic3r/GUI/ConfigWizard.cpp:2279 msgid "Do you want to select default SLA materials for these printer models?" msgstr "¿Desea seleccionar materiales SLA predeterminados para estos modelos de impresora?" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "does not contain valid gcode." +msgstr "no contiene gcode válido." + +#: src/libslic3r/PrintConfig.cpp:3628 msgid "Don't arrange" msgstr "No organizar" @@ -2092,7 +2405,11 @@ msgstr "No organizar" msgid "Don't notify about new releases any more" msgstr "No quiero recibir avisos de nuevas versiones" -#: src/libslic3r/PrintConfig.cpp:369 +#: src/slic3r/GUI/Plater.cpp:1431 +msgid "Don't show again" +msgstr "No mostrar de nuevo" + +#: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "No soportar puentes" @@ -2100,234 +2417,296 @@ msgstr "No soportar puentes" msgid "Downgrade" msgstr "Volver a una versión anterior" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1803 msgid "Draft shield" msgstr "Escudo de protección" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Drag" msgstr "Arrastra" -#: src/libslic3r/SLAPrintSteps.cpp:44 +#: src/slic3r/GUI/Plater.cpp:1406 +msgid "Drag and drop G-code file" +msgstr "Arrastra y suelta el archivo código G" + +#: src/libslic3r/SLAPrintSteps.cpp:45 msgid "Drilling holes into model." msgstr "Taladrando agujeros en el modelo." -#: src/libslic3r/SLAPrintSteps.cpp:199 +#: src/libslic3r/SLAPrintSteps.cpp:201 msgid "Drilling holes into the mesh failed. This is usually caused by broken model. Try to fix it first." msgstr "Perforación de agujeros en la malla fallida. Esto generalmente es causado por un modelo roto. Intenta arreglarlo primero." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" msgstr "Colocar en la Cama" -#: src/libslic3r/PrintConfig.cpp:3433 +#: src/libslic3r/PrintConfig.cpp:3632 msgid "Duplicate" msgstr "Duplicar" -#: src/libslic3r/PrintConfig.cpp:3438 +#: src/libslic3r/PrintConfig.cpp:3637 msgid "Duplicate by grid" msgstr "Duplicar por cuadrícula" -#: src/slic3r/GUI/PresetHints.cpp:40 +#: src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Duration" +msgstr "Duración" + +#: src/slic3r/GUI/PresetHints.cpp:39 msgid "During the other layers, fan" msgstr "Durante las otras capas, el ventilador" -#: src/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dinámico" -#: src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1448 msgid "E&xport" msgstr "E&xportar" -#: src/slic3r/GUI/GUI_ObjectList.cpp:347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:394 msgid "edges fixed" msgstr "esquimas reparadas" -#: src/slic3r/GUI/DoubleSlider.cpp:1508 +#: src/slic3r/GUI/DoubleSlider.cpp:1700 msgid "Edit color" msgstr "Editar color" -#: src/slic3r/GUI/DoubleSlider.cpp:960 +#: src/slic3r/GUI/DoubleSlider.cpp:1083 msgid "Edit current color - Right click the colored slider segment" msgstr "Editar color actual - Clic derecho en el segmento de color deslizante" -#: src/slic3r/GUI/DoubleSlider.cpp:1510 +#: src/slic3r/GUI/DoubleSlider.cpp:1702 msgid "Edit custom G-code" msgstr "Editar código G personalizado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3003 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 msgid "Edit Height Range" msgstr "Editar Rango de Alturas" -#: src/slic3r/GUI/DoubleSlider.cpp:1509 +#: src/slic3r/GUI/DoubleSlider.cpp:1701 msgid "Edit pause print message" msgstr "Editar mensaje de pausa de impresión" -#: src/slic3r/GUI/DoubleSlider.cpp:1037 +#: src/slic3r/GUI/PresetComboBoxes.cpp:645 +msgid "Edit physical printer" +msgstr "Editar impresora física" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:641 +msgid "Edit preset" +msgstr "Editar ajuste preestablecido" + +#: src/slic3r/GUI/DoubleSlider.cpp:1162 msgid "Edit tick mark - Ctrl + Left click" msgstr "Editar la marca - Ctrl+ Click izquierdo" -#: src/slic3r/GUI/DoubleSlider.cpp:1038 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 msgid "Edit tick mark - Right click" msgstr "Editar marca de verificación - Clic derecho" -#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:394 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 msgid "Editing" msgstr "Edición" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Ejec&t SD card / Flash drive" msgstr "Expul&sa tarjeta SD / disco USB" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/NotificationManager.cpp:780 +msgid "Eject drive" +msgstr "Expulsar la unidad" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Eject SD card / Flash drive" msgstr "Expulsa la tarjeta SD / disco USB" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "Expulsa la tarjeta SD / disco USB después de que se haya exportado a él." -#: src/slic3r/GUI/Plater.cpp:2202 +#: src/slic3r/GUI/Plater.cpp:2034 #, c-format msgid "Ejecting of device %s(%s) has failed." msgstr "La expulsión del dispositivo %s(%s) ha fallado." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:120 msgid "Elephant foot compensation" msgstr "Compensación del pie de elefante" -#: src/libslic3r/PrintConfig.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:2590 msgid "Elephant foot minimum width" msgstr "Ancho mínimo del pie de elefante" -#: src/libslic3r/SLAPrint.cpp:625 +#: src/libslic3r/SLAPrint.cpp:639 msgid "Elevation is too low for object. Use the \"Pad around object\" feature to print the object without elevation." msgstr "Elevación demasiado baja para el objeto. Utiliza la característica \"Pad alrededor del objeto\" para imprimir el objeto sin elevación." -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1186 msgid "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute intervals into the G-code to let the firmware show accurate remaining time. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." msgstr "Emitir M73 P[porcentaje impreso] R[tiempo restante en minutos] en intervalos de 1 minuto en el código G para permitir que el firmware muestre el tiempo restante preciso. A partir de ahora solo el firmware Prusa i3 MK3 reconoce M73. También el firmware i3 MK3 es compatible con M73 Qxx Sxx para el modo silencioso." -#: src/libslic3r/GCode.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" +msgstr "Emitir a código G" + +#: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Capas vacías detectadas, la salida no sería imprimible." -#: src/slic3r/GUI/Tab.cpp:1445 src/libslic3r/PrintConfig.cpp:1355 -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:2343 msgid "Enable" msgstr "Habilitar" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:347 msgid "Enable auto cooling" msgstr "Habilitar el enfriamiento automático" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Enable fan if layer print time is below" msgstr "Habilitar ventilador si el tiempo de impresión de la capa está por debajo" -#: src/libslic3r/PrintConfig.cpp:2908 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Enable hollowing" msgstr "Habilitar vaciado" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2523 msgid "Enable horizontal mirroring of output images" msgstr "Activar espejo horizontal de salida de imágenes" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:1124 +msgid "Enable ironing" +msgstr "Activar alisado" + +#: src/libslic3r/PrintConfig.cpp:1125 +msgid "Enable ironing of the top layers with the hot print head for smooth surface" +msgstr "Habilitar el alisado de las capas superiores con el cabezal de impresión caliente para obtener una superficie lisa" + +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." msgstr "Habilite la generación de material de soporte." -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1010 msgid "Enable this to add comments into the G-Code labeling print moves with what object they belong to, which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." msgstr "Habilita esto para añadir los comentarios al código G, etiquetando movimientos de impresión con el objeto al que pertenecen, lo que es útil para el plugin Octoprint CancelObject. Esta configuración NO es compatible con la configuración de Single Extruder Multi Material y Limpiar en Objeto / Limpiar en Relleno." -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:973 msgid "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down." msgstr "Habilítelo para obtener un archivo de código G comentado, con cada línea explicada por un texto descriptivo. Si imprime desde una tarjeta SD, el peso adicional del archivo podría ralentizar su firmware." -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "Enable variable layer height feature" msgstr "Habilitar la función de altura de capa variable" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Enable vertical mirroring of output images" msgstr "Activar espejo vertical de salida de imágenes" -#: src/slic3r/GUI/Tab.cpp:1534 src/slic3r/GUI/Tab.cpp:1982 -#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 +#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 msgid "End G-code" msgstr "Código G final" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +msgid "Enforce" +msgstr "Imponer" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:30 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:381 +msgid "Enforce seam" +msgstr "Imponer costura" + +#: src/libslic3r/PrintConfig.cpp:2066 msgid "Enforce support for the first" msgstr "Forzar soportes para la primera" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Enforce support for the first n layers" msgstr "Aplicar soportes para las primeras n capas" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:47 +msgid "Enforce supports" +msgstr "Imponer soportes" + #: src/slic3r/GUI/PrintHostDialogs.cpp:198 #: src/slic3r/GUI/PrintHostDialogs.cpp:229 msgid "Enqueued" msgstr "En cola" -#: src/libslic3r/PrintConfig.cpp:407 +#: src/libslic3r/PrintConfig.cpp:441 msgid "Ensure vertical shell thickness" msgstr "Asegurar el espesor de la carcasa vertical" -#: src/slic3r/GUI/DoubleSlider.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4410 +#: src/slic3r/GUI/Search.cpp:433 +msgid "Enter a search term" +msgstr "Teclea un término de búsqueda" + +#: src/slic3r/GUI/DoubleSlider.cpp:1814 msgid "Enter custom G-code used on current layer" msgstr "Ingresa el código G personalizado utilizado en la capa actual" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Enter new name" msgstr "Introduce un nuevo nombre" -#: src/slic3r/GUI/DoubleSlider.cpp:1634 +#: src/slic3r/GUI/DoubleSlider.cpp:1830 msgid "Enter short message shown on Printer display when a print is paused" msgstr "Introduce un mensaje corto a mostrar en la pantalla de la impresora cuando la impresión se ponga en pausa" -#: src/slic3r/GUI/ConfigWizard.cpp:1047 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." msgstr "Introduce la temperatura de la base necesaria para que adhiera el filamento a la base calefactable." -#: src/slic3r/GUI/ConfigWizard.cpp:979 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Enter the diameter of your filament." msgstr "Introduce el diámetro de tu filamento." -#: src/slic3r/GUI/ConfigWizard.cpp:966 +#: src/slic3r/GUI/ConfigWizard.cpp:1332 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Introduce el diámetro de la boquilla del fusor de tu impresora." -#: src/slic3r/GUI/DoubleSlider.cpp:1650 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 msgid "Enter the height you want to jump to" msgstr "Introduce la altura a la que deseas saltar" -#: src/slic3r/GUI/Plater.cpp:4751 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 +msgid "Enter the move you want to jump to" +msgstr "Introduce el movimiento al que desea saltar" + +#: src/slic3r/GUI/Plater.cpp:4855 msgid "Enter the number of copies:" msgstr "Introduce el número de copias:" -#: src/slic3r/GUI/ConfigWizard.cpp:1033 +#: src/slic3r/GUI/ConfigWizard.cpp:1399 msgid "Enter the temperature needed for extruding your filament." msgstr "Introduce la temperatura necesaria para extruir tu filamento." -#: src/libslic3r/PrintConfig.cpp:761 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Enter your filament cost per kg here. This is only for statistical information." msgstr "Ingrese su coste del filamento por kg aquí. Esto es solo para información estadística." -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:754 msgid "Enter your filament density here. This is only for statistical information. A decent way is to weigh a known length of filament and compute the ratio of the length to volume. Better is to calculate the volume directly through displacement." msgstr "Ingrese su densidad de filamento aquí. Esto es solo para información estadística. Una forma decente es pesar una longitud conocida de filamento y calcular la relación entre la longitud y el volumen. Lo mejor es calcular el volumen directamente a través del desplazamiento." -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:746 msgid "Enter your filament diameter here. Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "Ingrese el diámetro de su fila aquí. Se requiere una buena precisión, por lo tanto, use un calibre y realice múltiples mediciones a lo largo del filamento, luego calcule el promedio." -#: src/slic3r/GUI/MainFrame.cpp:422 src/slic3r/GUI/MainFrame.cpp:785 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 +msgid "Entering Paint-on supports" +msgstr "Entrando al Pintado de soportes" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 +msgid "Entering Seam painting" +msgstr "Entrando al Pintado de costuras" + +#: src/slic3r/GUI/MainFrame.cpp:1003 src/slic3r/GUI/MainFrame.cpp:1486 #: src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Error" msgstr "Error" @@ -2337,25 +2716,33 @@ msgstr "Error" msgid "Error accessing port at %s: %s" msgstr "Error al acceder al puerto en %s: %s" -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3238 msgid "Error during reload" msgstr "Error al recargar" -#: src/slic3r/GUI/Plater.cpp:5043 +#: src/slic3r/GUI/Plater.cpp:5172 #, c-format msgid "Error exporting 3MF file %s" msgstr "Error al exportar archivo 3MF %s" -#: src/slic3r/GUI/Plater.cpp:5005 +#: src/slic3r/GUI/Plater.cpp:5138 #, c-format msgid "Error exporting AMF file %s" msgstr "Error exportando archivo AMF %s" -#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +#: src/slic3r/GUI/OpenGLManager.cpp:276 +msgid "Error loading shaders" +msgstr "Error al cargar sombras" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 msgid "Error Message" msgstr "Mensaje de Error" -#: src/slic3r/GUI/AppConfig.cpp:114 +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to manually delete the file to recover from the error." +msgstr "Error al analizar el archivo de configuración de PrusaGCodeViewer, probablemente esté dañado. Intenta eliminar manualmente el archivo para recuperarse del error." + +#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 msgid "Error parsing PrusaSlicer config file, it is probably corrupted. Try to manually delete the file to recover from the error. Your user profiles will not be affected." msgstr "Error al analizar el archivo de configuración de PrusaSlicer, probablemente está dañado. Intenta eliminar manualmente el archivo para recuperarse del error. Tus perfiles de usuario no se verán afectados." @@ -2363,45 +2750,60 @@ msgstr "Error al analizar el archivo de configuración de PrusaSlicer, probablem msgid "Error uploading to print host:" msgstr "Error al cargar a la impresora:" -#: src/libslic3r/Zipper.cpp:102 +#: src/slic3r/GUI/Plater.cpp:4752 +msgid "Error while loading .gcode file" +msgstr "Error al cargar el archivo .gcode" + +#: src/libslic3r/Zipper.cpp:27 msgid "Error with zip archive" msgstr "Error con el archivo ZIP" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1918 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 msgid "Error!" msgstr "¡Error!" -#: src/slic3r/GUI/BedShapeDialog.cpp:505 +#: src/slic3r/GUI/BedShapeDialog.cpp:581 msgid "Error! Invalid model" msgstr "Error! Modelo inválido" +#: src/slic3r/GUI/NotificationManager.cpp:667 +#: src/slic3r/GUI/NotificationManager.cpp:683 +#: src/slic3r/GUI/NotificationManager.cpp:694 +msgid "ERROR:" +msgstr "ERROR:" + #: src/slic3r/GUI/FirmwareDialog.cpp:647 #, c-format msgid "Error: %s" msgstr "Error: %s" -#: src/slic3r/GUI/Job.hpp:123 +#: src/slic3r/GUI/Jobs/Job.cpp:74 msgid "ERROR: not enough resources to execute a new job." msgstr "ERROR: no hay suficientes recursos para ejecutar el trabajo." -#: src/slic3r/GUI/Plater.cpp:240 src/slic3r/GUI/Plater.cpp:1216 -#: src/slic3r/GUI/Plater.cpp:1258 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 src/slic3r/GUI/GCodeViewer.cpp:2557 +#: src/slic3r/GUI/Plater.cpp:246 src/slic3r/GUI/Plater.cpp:1125 +#: src/slic3r/GUI/Plater.cpp:1175 src/slic3r/GUI/Plater.cpp:1196 msgid "Estimated printing time" msgstr "Tiempo estimado de impresión" -#: src/slic3r/GUI/Plater.cpp:502 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Event" +msgstr "Evento" + +#: src/slic3r/GUI/Plater.cpp:368 msgid "Everywhere" msgstr "En todos los sitios" -#: src/slic3r/GUI/PresetHints.cpp:51 +#: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first %1% layers." msgstr "a excepción de las %1% primeras capas." -#: src/slic3r/GUI/PresetHints.cpp:53 +#: src/slic3r/GUI/PresetHints.cpp:52 msgid "except for the first layer." msgstr "a excepción de la primera capa." -#: src/libslic3r/Print.cpp:1377 +#: src/libslic3r/Print.cpp:1403 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "%1%=%2% mm excesivos para ser imprimible con un nozzle de diámetro de %3% mm" @@ -2410,116 +2812,129 @@ msgstr "%1%=%2% mm excesivos para ser imprimible con un nozzle de diámetro de % msgid "Exit %s" msgstr "Salir %s" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/slic3r/GUI/Plater.cpp:2143 +msgid "Expand sidebar" +msgstr "Expandir barra lateral" + +#: src/libslic3r/PrintConfig.cpp:405 msgid "Experimental option for preventing support material from being generated under bridged areas." msgstr "Opción experimental para evitar que se genere material de soporte debajo de las áreas con puente." -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." msgstr "Opción experimental para ajustar el flujo para salientes (se usará el flujo del puente), para aplicar la velocidad del puente a ellos y habilitar el ventilador." -#: src/slic3r/GUI/GUI_App.cpp:815 src/slic3r/GUI/wxExtensions.cpp:755 +#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "Experto" -#: src/slic3r/GUI/ConfigWizard.cpp:822 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Expert mode" msgstr "Modo experto" -#: src/slic3r/GUI/GUI_App.cpp:815 +#: src/slic3r/GUI/GUI_App.cpp:1507 msgid "Expert View Mode" msgstr "Modo de visualización experto" -#: src/slic3r/GUI/Plater.cpp:5521 +#: src/slic3r/GUI/Plater.cpp:5706 msgid "Export" msgstr "Exportar" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export &Config" msgstr "Exportar &Configuración" -#: src/slic3r/GUI/MainFrame.cpp:477 src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 msgid "Export &G-code" msgstr "Exportar código &G" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export &toolpaths as OBJ" msgstr "Exportar &trayectorias de herramientas como OBJ" -#: src/libslic3r/PrintConfig.cpp:3338 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Export 3MF" msgstr "Exportar 3MF" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export all presets including physical printers to file" +msgstr "Exportar todos los ajustes preestablecidos, incluidas las impresoras físicas, al archivo" + +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export all presets to file" msgstr "Exportar todos los preajustes al archivo" -#: src/libslic3r/PrintConfig.cpp:3343 +#: src/libslic3r/PrintConfig.cpp:3536 msgid "Export AMF" msgstr "Exportar AMF" -#: src/slic3r/GUI/Plater.cpp:2598 +#: src/slic3r/GUI/Plater.cpp:2560 msgid "Export AMF file:" msgstr "Exportar archivo AMF:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1657 src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 msgid "Export as STL" msgstr "Exportar como STL" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 msgid "Export config" msgstr "Exportar configuración" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export Config &Bundle" msgstr "Exportar Conjunto de A&justes" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export Config Bundle With Physical Printers" +msgstr "Exportar Paquete de Configuración Con Impresoras Físicas" + +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export current configuration to file" msgstr "Exportar la configuración actual al archivo" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export current plate as AMF" msgstr "Exportar plataforma actual como AMF" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:1068 msgid "Export current plate as G-code" msgstr "Exportar plataforma actual como código G" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Exporta a G-code en la tarjeta SD / disco USB" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export current plate as STL" msgstr "Exportar plataforma actual como STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export current plate as STL including supports" msgstr "Exportar la plataforma actual como STL incluyendo soportes" -#: src/slic3r/GUI/Plater.cpp:3664 -msgid "Export failed" -msgstr "Error al exportar" - -#: src/slic3r/GUI/ConfigWizard.cpp:801 +#: src/slic3r/GUI/ConfigWizard.cpp:1160 msgid "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "Exportar nombres de ruta completos de las fuentes de los modelos y de piezas a archivos 3mf y amf" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 -#: src/slic3r/GUI/Plater.cpp:5521 src/libslic3r/PrintConfig.cpp:3353 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 +#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 msgid "Export G-code" msgstr "Exportar código G" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export G-code to SD card / Flash drive" msgstr "Exporta G-code a la tarjeta SD / disco USB" -#: src/libslic3r/PrintConfig.cpp:3320 +#: src/slic3r/GUI/NotificationManager.cpp:631 +#: src/slic3r/GUI/NotificationManager.cpp:748 +msgid "Export G-Code." +msgstr "Exportar Código G." + +#: src/libslic3r/PrintConfig.cpp:3513 msgid "Export OBJ" msgstr "Exportar OBJ" -#: src/slic3r/GUI/Plater.cpp:2610 +#: src/slic3r/GUI/Plater.cpp:2572 msgid "Export OBJ file:" msgstr "Exportar archivo OBJ:" @@ -2527,212 +2942,215 @@ msgstr "Exportar archivo OBJ:" msgid "Export of a temporary 3mf file failed" msgstr "La exportación de un archivo temporal de 3mf falló" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export plate as &AMF" msgstr "Exportar plataforma como &AMF" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export plate as &STL" msgstr "Exportar plataforma como &STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export plate as STL &including supports" msgstr "Exportar plataforma como STL &incluyendo soportes" -#: src/libslic3r/PrintConfig.cpp:3332 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Export SLA" msgstr "Exportar SLA" -#: src/slic3r/GUI/Preferences.cpp:72 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "Export sources full pathnames to 3mf and amf" msgstr "Exportar nombres de ruta completos de las fuentes a 3mf y amf" -#: src/libslic3r/PrintConfig.cpp:3348 +#: src/libslic3r/PrintConfig.cpp:3541 msgid "Export STL" msgstr "Exportar STL" -#: src/slic3r/GUI/Plater.cpp:2591 +#: src/slic3r/GUI/Plater.cpp:2553 msgid "Export STL file:" msgstr "Exportar archivo STL:" -#: src/libslic3r/PrintConfig.cpp:3339 +#: src/libslic3r/PrintConfig.cpp:3532 msgid "Export the model(s) as 3MF." msgstr "Exportar el(los) objeto(s) como 3MF." -#: src/libslic3r/PrintConfig.cpp:3344 +#: src/libslic3r/PrintConfig.cpp:3537 msgid "Export the model(s) as AMF." msgstr "Exportar el(los) objeto(s) como AMF." -#: src/libslic3r/PrintConfig.cpp:3321 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Export the model(s) as OBJ." msgstr "Exportar el(los) objeto(s) como OBJ." -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3542 msgid "Export the model(s) as STL." msgstr "Exportar el(los) objeto(s) como STL." -#: src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/Plater.cpp:3884 msgid "Export the selected object as STL file" msgstr "Exportar el objeto seleccionado como archivo STL" -#: src/slic3r/GUI/Plater.cpp:880 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 msgid "Export to SD card / Flash drive" msgstr "Exportar a tarjeta SD / tarjeta Flash" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export toolpaths as OBJ" msgstr "Exportar trayectorias de herramientas como OBJ" -#: src/libslic3r/Print.cpp:1638 +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Exporting finished." +msgstr "Exportación finalizada." + +#: src/libslic3r/Print.cpp:1676 msgid "Exporting G-code" msgstr "Exportando código G" #: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." -msgstr "Exportando el modelo..." +msgid "Exporting model" +msgstr "Exportando modelo" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 msgid "Exporting source model" msgstr "Exportando el modelo original" -#: src/libslic3r/SLAPrint.cpp:646 +#: src/libslic3r/SLAPrint.cpp:660 msgid "Exposition time is out of printer profile bounds." msgstr "Tiempo de exposición inicial fuera de los límites del perfil de impresión." -#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:3515 +#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 msgid "Exposure" msgstr "Exposición" -#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Exposure time" msgstr "Tiempo de exposición" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "External perimeter" msgstr "Perímetro externo" -#: src/slic3r/GUI/PresetHints.cpp:156 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "perímetros externos" -#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:482 src/libslic3r/PrintConfig.cpp:493 msgid "External perimeters" msgstr "Perímetros externos" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:505 msgid "External perimeters first" msgstr "Perímetros externos primero" -#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1704 msgid "Extra length on restart" msgstr "Longitud adicional en el reinicio" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Extra loading distance" msgstr "Distancia de carga adicional" -#: src/libslic3r/PrintConfig.cpp:477 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extra perimeters if needed" msgstr "Perímetros adicionales si es necesario" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1434 -#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 +#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Extruder" msgstr "Extrusor" -#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 -#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1704 -#: src/slic3r/GUI/Tab.cpp:2320 src/libslic3r/GCode/PreviewData.cpp:445 +#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 #, c-format msgid "Extruder %d" msgstr "Extrusor %d" -#: src/slic3r/GUI/DoubleSlider.cpp:1011 +#: src/slic3r/GUI/DoubleSlider.cpp:1137 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "El Extrusor (herramienta) se cambia al Extrusor \"%1%\"" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 -msgid "Extruder and Bed Temperatures" -msgstr "Temperaturas del Extrusor y de la Base" - #: src/slic3r/GUI/WipeTowerDialog.cpp:255 msgid "Extruder changed to" msgstr "El extrusor cambia a" -#: src/slic3r/GUI/Tab.cpp:1233 +#: src/slic3r/GUI/Tab.cpp:1563 msgid "Extruder clearance (mm)" msgstr "Distancia libre del extrusor (mm)" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Color del extrusor" -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder offset" msgstr "Offset del extrusor" -#: src/libslic3r/PrintConfig.cpp:911 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Temperatura del extrusor para la primera capa. Si desea controlar la temperatura manualmente durante la impresión, configúrela en cero para desactivar los comandos de control de temperatura en el archivo de salida." - -#: src/libslic3r/PrintConfig.cpp:2065 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Temperatura del extrusor para capas después del primera. Ajuste esto a cero para desactivar los comandos de control de temperatura en la salida." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:617 -#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:1838 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 +#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 msgid "Extruders" msgstr "Extrusores" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1061 +msgid "Extruders count" +msgstr "Contador de extrusores" + +#: src/slic3r/GUI/GCodeViewer.cpp:2493 +msgid "Extrusion" +msgstr "Extrusión" + +#: src/libslic3r/PrintConfig.cpp:575 msgid "Extrusion axis" msgstr "Eje de extrusión" -#: src/libslic3r/PrintConfig.cpp:545 +#: src/libslic3r/PrintConfig.cpp:581 msgid "Extrusion multiplier" msgstr "Multiplicador de extrusión" -#: src/slic3r/GUI/ConfigWizard.cpp:1037 +#: src/slic3r/GUI/ConfigWizard.cpp:1403 msgid "Extrusion Temperature:" msgstr "Temperatura de Extrusión:" -#: src/slic3r/GUI/Tab.cpp:1205 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Extrusion width" msgstr "Ancho de extrusión" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:618 -#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 -#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 msgid "Extrusion Width" msgstr "Ancho de Extrusión" -#: src/slic3r/GUI/Plater.cpp:162 +#: src/slic3r/GUI/Plater.cpp:168 msgid "Facets" msgstr "Facetas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:349 +#: src/slic3r/GUI/GUI_ObjectList.cpp:396 msgid "facets added" msgstr "facetas añadidas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:348 +#: src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "facets removed" msgstr "facetas retiradas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:350 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "facets reversed" msgstr "facetas invertidas" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2660 msgid "Faded layers" msgstr "Capas descoloridas" -#: src/libslic3r/Zipper.cpp:44 +#: src/libslic3r/miniz_extension.cpp:103 msgid "failed finding central directory" msgstr "búsqueda de directorio central fallida" @@ -2740,105 +3158,115 @@ msgstr "búsqueda de directorio central fallida" msgid "Failed loading the input model." msgstr "No se pudo cargar el modelo de entrada." -#: src/libslic3r/PrintBase.cpp:71 +#: src/libslic3r/PrintBase.cpp:72 msgid "Failed processing of the output_filename_format template." msgstr "Error al procesar la plantilla output_filename_format." -#: src/slic3r/GUI/PresetHints.cpp:42 +#: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Ventilador" -#: src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Configuración del ventilador" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1457 +#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 msgid "Fan speed" msgstr "Velocidad del ventilador" -#: src/libslic3r/GCode/PreviewData.cpp:353 +#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 msgid "Fan Speed (%)" msgstr "Velocidad Ventilador (%)" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Rápida" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Fast tilt" msgstr "Inclinación rápida" -#: src/slic3r/GUI/GUI_App.cpp:141 +#: src/slic3r/GUI/GUI_App.cpp:531 msgid "Fatal error" msgstr "Error fatal" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 -#: src/libslic3r/GCode/PreviewData.cpp:345 +#: src/slic3r/GUI/GUI_Init.cpp:88 +msgid "Fatal error, exception catched: %1%" +msgstr "Error fatal, excepción detectada: %1%" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 +#: src/libslic3r/GCode/PreviewData.cpp:350 msgid "Feature type" msgstr "Tipo de función" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 +#: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" msgstr "Tipos de funciones" -#: src/slic3r/GUI/ConfigWizard.cpp:1525 +#: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" msgstr "Impresoras de Tecnología FFF" -#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1425 -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1771 msgid "Filament" msgstr "Filamento" -#: src/slic3r/GUI/Preset.cpp:1522 +#: src/libslic3r/Preset.cpp:1301 msgid "filament" msgstr "filamento" -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Filament and Nozzle Diameters" msgstr "Filamento y diámetros de boquilla" -#: src/slic3r/GUI/ConfigWizard.cpp:983 +#: src/slic3r/GUI/ConfigWizard.cpp:1349 msgid "Filament Diameter:" msgstr "Diámetro del filamento:" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:687 msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." msgstr "El filamento se enfría al ser movido hacia adelante y hacia atrás en los tubos de enfriamiento. Especifica el número deseado de estos movimientos." -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Filament load time" msgstr "Tiempo de carga de filamento" -#: src/libslic3r/PrintConfig.cpp:588 +#: src/libslic3r/PrintConfig.cpp:624 msgid "Filament notes" msgstr "Notas del filamento" -#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1378 +#: src/slic3r/GUI/Tab.cpp:1669 msgid "Filament Overrides" msgstr "Anulaciones de filamentos" -#: src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "Filament parking position" msgstr "Posición de aparcar el filamento" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filament Profiles Selection" msgstr "Selección Perfiles de Filamento" -#: src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Tab.cpp:1817 msgid "Filament properties" msgstr "Propiedades del filamento" -#: src/slic3r/GUI/Tab.hpp:355 +#: src/slic3r/GUI/Tab.hpp:409 msgid "Filament Settings" msgstr "Configuración del filamento" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Filament Settings Tab" +msgstr "Pestaña Ajustes Filamento" + +#: src/libslic3r/PrintConfig.cpp:762 msgid "Filament type" msgstr "Tipo de filamento" -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Filament unload time" msgstr "Tiempo de descarga del filamento" @@ -2846,75 +3274,79 @@ msgstr "Tiempo de descarga del filamento" msgid "filaments" msgstr "filamentos" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filaments" msgstr "Filamentos" -#: src/libslic3r/Zipper.cpp:72 +#: src/slic3r/GUI/ConfigWizard.cpp:691 +msgid "Filaments marked with <b>*</b> are <b>not</b> compatible with some installed printers." +msgstr "Los filamentos marcados con <b>*</b> y <b>no</b> son compatibles con algunas impresoras instaladas." + +#: src/libslic3r/miniz_extension.cpp:131 msgid "file close failed" msgstr "cierre del archivo fallido" -#: src/libslic3r/Zipper.cpp:66 +#: src/libslic3r/miniz_extension.cpp:125 msgid "file create failed" msgstr "creación del archivo fallida" -#: src/slic3r/GUI/MainFrame.cpp:791 +#: src/slic3r/GUI/MainFrame.cpp:1492 msgid "File Not Found" msgstr "Archivo no encontrado" -#: src/libslic3r/Zipper.cpp:86 +#: src/libslic3r/miniz_extension.cpp:145 msgid "file not found" msgstr "archivo no encontrado" -#: src/libslic3r/Zipper.cpp:64 +#: src/libslic3r/miniz_extension.cpp:123 msgid "file open failed" msgstr "apertura de archivo fallida" -#: src/libslic3r/Zipper.cpp:70 +#: src/libslic3r/miniz_extension.cpp:129 msgid "file read failed" msgstr "lectura del archivo fallida" -#: src/libslic3r/Zipper.cpp:74 +#: src/libslic3r/miniz_extension.cpp:133 msgid "file seek failed" msgstr "búsqueda de archivo fallida" -#: src/libslic3r/Zipper.cpp:76 +#: src/libslic3r/miniz_extension.cpp:135 msgid "file stat failed" msgstr "estadística de archivos fallida" -#: src/libslic3r/Zipper.cpp:36 +#: src/libslic3r/miniz_extension.cpp:95 msgid "file too large" msgstr "archivo demasiado grande" -#: src/libslic3r/Zipper.cpp:68 +#: src/libslic3r/miniz_extension.cpp:127 msgid "file write failed" msgstr "escritura del archivo fallida" -#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 msgid "Filename" msgstr "Nombre de archivo" -#: src/libslic3r/PrintConfig.cpp:775 +#: src/libslic3r/PrintConfig.cpp:811 msgid "Fill angle" msgstr "Ángulo de relleno" -#: src/libslic3r/PrintConfig.cpp:789 +#: src/libslic3r/PrintConfig.cpp:825 msgid "Fill density" msgstr "Densidad de relleno" -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:862 msgid "Fill pattern" msgstr "Patrón de relleno" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:473 msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." msgstr "Patrón de relleno para la tapa inferior. Esto sólo afecta a la capa inferior externa visible, y no a las paredes adyacentes." -#: src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:864 msgid "Fill pattern for general low-density infill." msgstr "Patrón de relleno para el relleno general de baja densidad." -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:451 msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." msgstr "Patrón de relleno para el relleno superior. Esto solo afecta a la capa superior visible, y no a sus capas sólidas adyacentes." @@ -2922,7 +3354,7 @@ msgstr "Patrón de relleno para el relleno superior. Esto solo afecta a la capa msgid "Finished" msgstr "Terminado" -#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1947 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 msgid "Firmware" msgstr "Firmware" @@ -2934,44 +3366,52 @@ msgstr "Flasheador de firmware" msgid "Firmware image:" msgstr "Imagen del firmware:" -#: src/slic3r/GUI/Tab.cpp:2577 +#: src/slic3r/GUI/Tab.cpp:2733 msgid "Firmware Retraction" msgstr "Retracción del firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:891 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 msgid "Firmware Type" msgstr "Tipo de Firmware" -#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 -#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 msgid "First layer" msgstr "Primera capa" -#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:909 +msgid "First layer bed temperature" +msgstr "Temperatura de la base calefable para la primera capa" + +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 msgid "First layer height" msgstr "Altura de la primera capa" -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1448 msgid "First layer height can't be greater than nozzle diameter" msgstr "La altura de primera capa no puede ser mayor que el diametro de la boquilla" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:960 +msgid "First layer nozzle temperature" +msgstr "Temperatura de la boquilla para la primera capa" + +#: src/libslic3r/PrintConfig.cpp:942 msgid "First layer speed" msgstr "Velocidad de la primera capa" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "Primera capa volumétrica" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1647 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Reparar mediante Netfabb" -#: src/slic3r/GUI/Plater.cpp:3473 +#: src/slic3r/GUI/Plater.cpp:3278 msgid "Fix Throught NetFabb" msgstr "Reparar mediante NetFabb" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "Grabar &firmware en la impresora" @@ -2999,24 +3439,32 @@ msgstr "Flasheo en curso. ¡Por favor no desconecte la impresora!" msgid "Flashing succeeded!" msgstr "¡Exito al flashear!" -#: src/slic3r/GUI/Tab.cpp:1218 +#: src/slic3r/GUI/Tab.cpp:1548 msgid "Flow" msgstr "Flujo" -#: src/slic3r/GUI/PresetHints.cpp:220 +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Flow rate" +msgstr "Tasa de flujo" + +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "flow rate is maximized" msgstr "se maximiza el flujo de material" -#: src/slic3r/GUI/UpdateDialogs.cpp:286 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:555 +msgid "Following printer preset(s) is duplicated:%1%The above preset for printer \"%2%\" will be used just once." +msgstr "Los siguientes ajustes preestablecidos de la impresora están duplicados:%1%El preajuste anterior para impresora \"%2%\" se utilizará solo una vez." + +#: src/slic3r/GUI/UpdateDialogs.cpp:287 msgid "For more information please visit our wiki page:" msgstr "Para más información visite por favor la página de nuestra wiki:" -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 +#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 msgid "For support enforcers only" msgstr "Sólo para modificadores de soportes" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3267 +#: src/slic3r/GUI/Tab.cpp:3702 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -3024,7 +3472,7 @@ msgstr "" "para el botón izquierdo: indica un preajuste que no es del sistema (o no predeterminado),\n" "para el botón derecho: indica que la configuración no se ha modificado." -#: src/slic3r/GUI/ConfigManipulation.cpp:136 +#: src/slic3r/GUI/ConfigManipulation.cpp:135 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers." @@ -3032,19 +3480,19 @@ msgstr "" "Para que la Torre de Limpieza funcione con los soportes solubles, las capas de soporte\n" "deben sincronizarse con las capas de objetos." -#: src/libslic3r/Print.cpp:1396 +#: src/libslic3r/Print.cpp:1422 msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." msgstr "Para que la Torre de limpieza funcione con soportes solubles, las capas de soportes necesitan estar sincronizadas con las capas del objeto." -#: src/libslic3r/PrintConfig.cpp:2864 +#: src/libslic3r/PrintConfig.cpp:3028 msgid "Force pad around object everywhere" msgstr "Forzar el pad alrededor del objeto en todas partes" -#: src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Force solid infill for regions having a smaller area than the specified threshold." msgstr "Forzar el relleno sólido para las regiones que tienen un área más pequeña que el umbral especificado." -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1116 msgid "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material." msgstr "Forzar la generación de carcasas sólidas entre materiales / volúmenes adyacentes. Útil para impresiones de múltiples extrusoras con materiales translúcidos o material de soporte soluble manual." @@ -3052,27 +3500,31 @@ msgstr "Forzar la generación de carcasas sólidas entre materiales / volúmenes msgid "From" msgstr "Desde" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2223 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "from" +msgstr "desde" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 msgid "From Object List You can't delete the last solid part from object." msgstr "Desde la Lista de Objetos no puedes eliminar la última parte sólida del objeto." -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front" msgstr "Frontal" -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front View" msgstr "Vista frontal" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "nombre completo perfil" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "G-code" msgstr "Código G" -#: src/slic3r/GUI/DoubleSlider.cpp:1021 +#: src/slic3r/GUI/DoubleSlider.cpp:1146 msgid "" "G-code associated to this tick mark is in a conflict with print mode.\n" "Editing it will cause changes of Slider data." @@ -3080,220 +3532,273 @@ msgstr "" "El código G asociado a esta marca de verificación está en conflicto con el modo de impresión.\n" "Su edición provocará cambios en los datos del Slider." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:130 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "G-code file exported to %1%" msgstr "Archivo de código G exportado a %1%" -#: src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:980 msgid "G-code flavor" msgstr "Tipo de código G" -#: src/libslic3r/PrintConfig.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:79 +msgid "G-code preview" +msgstr "Previsualización código G" + +#: src/libslic3r/PrintConfig.cpp:3552 +msgid "G-code viewer" +msgstr "Visor código G" + +#: src/libslic3r/PrintConfig.cpp:757 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "g/ml" msgstr "g/ml" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/PrintConfig.cpp:918 +#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 +#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 msgid "Gap fill" msgstr "Relleno" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1796 -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 +#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "General" -#: src/libslic3r/PrintConfig.cpp:1307 +#: src/libslic3r/PrintConfig.cpp:1415 msgid "Generate no less than the number of skirt loops required to consume the specified amount of filament on the bottom layer. For multi-extruder machines, this minimum applies to each extruder." msgstr "Generar no menos que el número de bucles de falda requeridos para consumir la cantidad especificada de filamento en la capa inferior. Para máquinas multi-extrusoras, este mínimo se aplica a cada extrusora." -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" msgstr "Generar material de soporte" -#: src/libslic3r/PrintConfig.cpp:1926 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." msgstr "Generar material de soporte para la cantidad especificada de capas contando desde abajo, independientemente de si el material de soporte normal está habilitado o no e independientemente de cualquier umbral de ángulo. Es útil para obtener una mayor adhesión de los objetos que tienen una huella muy delgada o deficiente en la placa de construcción." -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Generate supports" msgstr "Generar soportes" -#: src/libslic3r/PrintConfig.cpp:2615 +#: src/libslic3r/PrintConfig.cpp:2758 msgid "Generate supports for the models" msgstr "Generar soportes para los modelos" -#: src/libslic3r/Print.cpp:1614 +#: src/slic3r/GUI/Plater.cpp:3554 +msgid "generated warnings" +msgstr "avisos generados" + +#: src/libslic3r/Print.cpp:1645 msgid "Generating brim" msgstr "Generando balsa" -#: src/libslic3r/Print.cpp:1642 +#: src/libslic3r/Print.cpp:1680 msgid "Generating G-code" msgstr "Generando G-code" -#: src/libslic3r/SLAPrintSteps.cpp:48 +#: src/slic3r/GUI/GCodeViewer.cpp:1392 +msgid "Generating index buffers" +msgstr "Generando buffers de índice" + +#: src/libslic3r/SLAPrintSteps.cpp:49 msgid "Generating pad" msgstr "Generando pad" -#: src/libslic3r/PrintObject.cpp:152 +#: src/libslic3r/PrintObject.cpp:158 msgid "Generating perimeters" msgstr "Generando perímetros" -#: src/libslic3r/Print.cpp:1606 +#: src/libslic3r/Print.cpp:1636 msgid "Generating skirt" msgstr "Generando falda" -#: src/libslic3r/PrintObject.cpp:395 +#: src/libslic3r/PrintObject.cpp:422 msgid "Generating support material" msgstr "Generando material de soporte" -#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +#: src/libslic3r/SLAPrintSteps.cpp:47 src/libslic3r/SLAPrintSteps.cpp:359 msgid "Generating support points" msgstr "Generando puntos de soporte" -#: src/libslic3r/SLAPrintSteps.cpp:47 +#: src/libslic3r/SLAPrintSteps.cpp:48 msgid "Generating support tree" msgstr "Generando soporte tipo árbol" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2022 +#: src/slic3r/GUI/GCodeViewer.cpp:933 +msgid "Generating toolpaths" +msgstr "Generando trayectorias" + +#: src/slic3r/GUI/GCodeViewer.cpp:1318 +msgid "Generating vertex buffer" +msgstr "Generando buffer de vértice" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 msgid "Generic" msgstr "Genérico" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Corte Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Gizmo move" msgstr "Movimiento Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Gizmo move: Press to snap by 1mm" +msgstr "Herramienta de mover: Pulsa para ajustar en pasos de 1 mm" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "Gizmo Place face on bed" msgstr "Gizmo Colocar cara en la base" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Gizmo rotate" msgstr "Rotación Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 +msgid "Gizmo rotate: Press to rotate selected objects around their own center" +msgstr "Herramienta de rotación: Pulsa para girar la pieza sobre su propio centro" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Gizmo scale" msgstr "Escala Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmo scale: Press to activate one direction scaling" +msgstr "Herramienta de escala: Pulsa para activar una dirección de escalado" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +msgid "Gizmo scale: Press to scale selected objects around their own center" +msgstr "Herramienta de escala: Pulsa para escalar la pieza seleccionada alrededor de su propio centro" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +msgid "Gizmo scale: Press to snap by 5%" +msgstr "Herramienta de Escala: pulsa para ajustar un 5%" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Gizmo scale: Scale selection to fit print volume" +msgstr "Herramienta de escala: Escala las piezas seleccionadas para ajustarse al volumen de impresión" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo SLA hollow" msgstr "Gizmo SLA vaciado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo SLA support points" msgstr "Puntos de soporte SLA Gizmo" -#: src/slic3r/GUI/GLCanvas3D.cpp:2921 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:562 +#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "Gizmo-Mover" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:489 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 msgid "Gizmo-Place on Face" msgstr "Gizmo-Colocar en Cara" -#: src/slic3r/GUI/GLCanvas3D.cpp:3001 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:564 +#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "Gizmo-Rotar" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:563 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:521 msgid "Gizmo-Scale" msgstr "Gizmo-Escalar" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 msgid "Gizmos" msgstr "Gizmos" -#: src/slic3r/GUI/AboutDialog.cpp:259 +#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versión 3" -#: src/slic3r/GUI/ConfigWizard.cpp:980 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "Se necesita buena precisión, así que usa un calibre y realiza varias medidas a lo largo del filamento, luego calcula la media." -#: src/libslic3r/PrintConfig.cpp:844 +#: src/libslic3r/PrintConfig.cpp:882 msgid "Grid" msgstr "Rejilla" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2454 +#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +msgid "Group" +msgstr "Agrupar" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Group manipulation" msgstr "Manipulación de grupos" -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "GUI" msgstr "IU" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Gyroid" msgstr "Giroide" -#: src/slic3r/GUI/Tab.cpp:2937 -msgid "has the following unsaved changes:" -msgstr "tiene los siguientes cambios no guardados:" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Diámetro de la cabeza" -#: src/slic3r/GUI/ConfigManipulation.cpp:317 +#: src/libslic3r/PrintConfig.cpp:2772 +msgid "Head penetration" +msgstr "Penetración de la cabeza" + +#: src/slic3r/GUI/ConfigManipulation.cpp:322 msgid "Head penetration should not be greater than the head width." msgstr "La penetración de la cabeza no debaría ser mayor que el ancho de la cabeza." -#: src/libslic3r/PrintConfig.cpp:869 +#: src/libslic3r/PrintConfig.cpp:910 msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." -msgstr "Temperatura de base calefactable para la primera capa. Ajuste esto a cero para deshabilitar los comandos de control de temperatura de la cama en la salida." +msgstr "Temperatura de base calefactable para la primera capa. Ajusta esto a cero para deshabilitar los comandos de control de temperatura de la cama en la salida." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 +#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 msgid "Height" msgstr "Altura" -#: src/libslic3r/GCode/PreviewData.cpp:347 +#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 msgid "Height (mm)" msgstr "Altura (mm)" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." msgstr "Altura de la falda expresada en capas. Establezca esto en un valor alto para usar la falda como escudo contra corrientes de aire." -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "Height of the display" msgstr "Altura de la pantalla" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Height range Modifier" msgstr "Modificador Rango de Alturas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Height ranges" msgstr "Rango de alturas" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:295 msgid "Heights at which a filament change is to occur." msgstr "Alturas en las que se producirá un cambio de filamento." -#: src/slic3r/GUI/ConfigWizard.cpp:433 +#: src/slic3r/GUI/ConfigWizard.cpp:451 #, c-format msgid "Hello, welcome to %s! This %s helps you with the initial configuration; just a few settings and you will be ready to print." msgstr "Hola, bienvenido a %s! Este %s te ayuda con la configuración inicial; sólo unos pocos ajustes y estarás preparado para imprimir." -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3564 msgid "Help" msgstr "Ayuda" -#: src/libslic3r/PrintConfig.cpp:3371 +#: src/libslic3r/PrintConfig.cpp:3570 msgid "Help (FFF options)" msgstr "Ayuda (opciones FFF)" -#: src/libslic3r/PrintConfig.cpp:3376 +#: src/libslic3r/PrintConfig.cpp:3575 msgid "Help (SLA options)" msgstr "Ayuda (opciones SLA)" @@ -3301,96 +3806,80 @@ msgstr "Ayuda (opciones SLA)" msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." msgstr "Aquí puedes ajustar el volumende purga requerida (mm³) para cualquier par de herramientas." -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1017 msgid "High extruder current on filament swap" msgstr "Alta intensidad en el extrusor durante el cambio de filamento" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 +#: src/slic3r/GUI/GLCanvas3D.cpp:263 msgid "Higher print quality versus higher print speed." msgstr "Mayor calidad de impresión contra mayor velocidad de impresión." -#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 msgid "Hilbert Curve" msgstr "Curva de Hilbert" -#: src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:916 msgid "Hold Shift to Slice & Export G-code" msgstr "Mantén presionada la tecla Shift para laminar y exportar el código G" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 msgid "Hole depth" msgstr "Profundidad del orificio" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 msgid "Hole diameter" msgstr "Diámetro del orificio" -#: src/slic3r/GUI/Plater.cpp:2760 -msgid "Hollow" -msgstr "Vaciado" - -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:977 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:785 msgid "Hollow and drill" msgstr "Vaciado y taladrado" -#: src/libslic3r/PrintConfig.cpp:2910 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Hollow out a model to have an empty interior" msgstr "Vaciado de un modelo para tener un interior vacío" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:40 msgid "Hollow this object" msgstr "Vaciar este objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3654 -#: src/slic3r/GUI/Tab.cpp:3655 src/libslic3r/SLA/Hollowing.cpp:46 -#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 -#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2909 -#: src/libslic3r/PrintConfig.cpp:2916 src/libslic3r/PrintConfig.cpp:2926 -#: src/libslic3r/PrintConfig.cpp:2935 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 +#: src/slic3r/GUI/Tab.cpp:4074 src/libslic3r/SLA/Hollowing.cpp:45 +#: src/libslic3r/SLA/Hollowing.cpp:57 src/libslic3r/SLA/Hollowing.cpp:66 +#: src/libslic3r/SLA/Hollowing.cpp:75 src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Hollowing" msgstr "Vaciando el interior" -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Hollowing cancelled." -msgstr "Vaciado cancelado." - -#: src/slic3r/GUI/Plater.cpp:2927 -msgid "Hollowing done." -msgstr "Vaciado acabado." - -#: src/slic3r/GUI/Plater.cpp:2929 -msgid "Hollowing failed." -msgstr "Vaciado fallido." - -#: src/libslic3r/PrintConfig.cpp:2937 +#: src/libslic3r/PrintConfig.cpp:3101 msgid "Hollowing is done in two steps: first, an imaginary interior is calculated deeper (offset plus the closing distance) in the object and then it's inflated back to the specified offset. A greater closing distance makes the interior more rounded. At zero, the interior will resemble the exterior the most." msgstr "El vaciado del interior se hace en dos pasos: primero, se calcula un interior imaginario (un desplazamiento más la distancia de cierre) en la pieza y luego, se hincha hasta alcanzar el desplazamiento especificado. Una distancia de cierre mayor hace que interior sea más redondeado. Si es cero, el interior se parecerá mucho al exterior." -#: src/libslic3r/SLAPrintSteps.cpp:43 +#: src/libslic3r/SLAPrintSteps.cpp:44 msgid "Hollowing model" msgstr "Vaciando modelo" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:813 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:624 msgid "Hollowing parameter change" msgstr "Cambio del parámetro de vaciar el interior" -#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 +#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 msgid "Honeycomb" msgstr "Panal de abeja" -#: src/slic3r/GUI/Tab.cpp:1064 +#: src/slic3r/GUI/Tab.cpp:1386 msgid "Horizontal shells" msgstr "Carcasas horizontales" -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." msgstr "Ancho horizontal del borde que se imprimirá alrededor de cada objeto en la primera capa." -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" msgstr "Equipo" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Host Type" msgstr "Tipo de host" @@ -3398,67 +3887,76 @@ msgstr "Tipo de host" msgid "Hostname" msgstr "Nombre del equipo" -#: src/libslic3r/PrintConfig.cpp:97 +#: src/libslic3r/PrintConfig.cpp:99 msgid "Hostname, IP or URL" msgstr "Nombre de equipo, IP o URL" -#: src/slic3r/GUI/Tab.cpp:139 +#: src/slic3r/GUI/Tab.cpp:210 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." msgstr "Sitúa el cursos sobre los botones para más información o haz clic en este botón." -#: src/libslic3r/PrintConfig.cpp:2812 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "How far should the pad extend around the contained geometry" msgstr "¿Hasta dónde debe extenderse el pad alrededor de la geometría contenida" -#: src/libslic3r/PrintConfig.cpp:2901 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Cuanto deberían penetrar los conectores pequeños en el modelo del cuerpo." -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "How much the pinhead has to penetrate the model surface" msgstr "Cuánto tiene que penetrar la cabeza del pin en la superficie del modelo" -#: src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "How much the supports should lift up the supported object. If \"Pad around object\" is enabled, this value is ignored." msgstr "Cuanto deberían los soportes deberían levantar el objeto soportado. Si \"Pad alrededor del objeto\" está activado, este valor será ignorado." -#: src/libslic3r/PrintConfig.cpp:111 +#: src/libslic3r/PrintConfig.cpp:1209 +msgid "How to apply limits" +msgstr "Cómo aplicar límites" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "How to apply the Machine Limits" +msgstr "Cómo aplicar los Límites Máquina" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 +#: src/libslic3r/PrintConfig.cpp:113 msgid "HTTPS CA File" msgstr "Archivo HTTPS CA" -#: src/slic3r/GUI/Tab.cpp:1713 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." msgstr "El archivo HTTPS CA es opcional. Sólo se necesita si vas a usar HTTPS con un certificado auto-firmado." -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:376 msgid "Icon size in a respect to the default size" msgstr "Tamaño del icono respecto al tamaño original" -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:147 msgid "ID" msgstr "ID" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:2015 msgid "If checked, supports will be generated automatically based on the overhang threshold value. If unchecked, supports will be generated inside the \"Support Enforcer\" volumes only." msgstr "Si se marca, los soportes se generarán automáticamente según el valor del umbral de voladizo. Si no se selecciona, los apoyos se generarán solo dentro de los volúmenes \"Forzar soportes\"." -#: src/slic3r/GUI/ConfigWizard.cpp:773 +#: src/slic3r/GUI/ConfigWizard.cpp:1132 #, c-format msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Si está activado, %s comprueba si hay nuevas versiones de Slic3r PE en la red. Cuando hay disponible una nueva versión se muestra una notificación al iniciar la aplicación (nunca durante el uso del programa). Esto es sólo un mecanismo de notificación, sin que se realice una instalación automática." -#: src/slic3r/GUI/ConfigWizard.cpp:783 +#: src/slic3r/GUI/ConfigWizard.cpp:1142 #, c-format msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." msgstr "Si está activado, %s descargará actualizaciones de los ajustes del sistema mientras lo usamos. Estas actualizaciones se descargan a una ubicación temporal. Cuando hay un nuevo ajuste disponible, este se podrá incorporar y usar cuando la aplicación se vuelva a iniciar." -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." msgstr "Si está habilitado, todos los extrusores de impresión estarán cebados en el borde frontal de la cama de impresión al comienzo de la impresión." -#: src/slic3r/GUI/ConfigWizard.cpp:805 +#: src/slic3r/GUI/ConfigWizard.cpp:1164 msgid "" "If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n" "If not enabled, the Reload from disk command will ask to select each file using an open file dialog." @@ -3466,127 +3964,180 @@ msgstr "" "Si está activado, permite que la orden de Recarga desde el disco encuentre y cargue los archivos al invocarla. \n" "Si no está activado, la orden de Recarga desde el disco te pedirá que selecciones cada archivo en un cuadro de abrir archivo." -#: src/slic3r/GUI/Preferences.cpp:74 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked." msgstr "Si está activado, permite que la orden de Recarga desde el disco busque y cargue los ficheros cuando se invoque." -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:238 +msgid "If enabled, changes made using the sequential slider, in preview, apply only to gcode top layer. If disabled, changes made using the sequential slider, in preview, apply to the whole gcode." +msgstr "Si está activado, los cambios realizados con el control deslizante secuencial, en la vista previa, se aplican solo a la capa superior del código G. Si está desactivado, los cambios realizados con el control deslizante secuencial, en la vista previa, se aplican a todo el código G." + +#: src/slic3r/GUI/Preferences.cpp:83 msgid "If enabled, PrusaSlicer will check for the new versions of itself online. When a new version becomes available a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Si está habilitado, PrusaSlicer buscará las nuevas versiones de sí mismo en línea. Cuando una nueva versión esté disponible, se mostrará una notificación en el siguiente inicio de la aplicación (nunca durante el uso del programa). Esto es solo un mecanismo de notificación, no se realiza instalación automática." -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:270 +msgid "If enabled, renders object using the environment map." +msgstr "Si está activado, visualiza el objeto usando el mapa del entorno." + +#: src/slic3r/GUI/Preferences.cpp:200 +msgid "If enabled, reverses the direction of zoom with mouse wheel" +msgstr "Si está habilitado, invierte la dirección del zoom con la rueda del mouse" + +#: src/slic3r/GUI/Preferences.cpp:99 msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." msgstr "Si está activado, Slic3r descargará actualizaciones de los ajustes del sistema mientras lo usamos. Estas actualizaciones se descargan a una ubicación temporal. Cuando hay un nuevo ajuste disponible, este se podrá incorporar y usar cuando la aplicación se vuelva a iniciar." -#: src/slic3r/GUI/Preferences.cpp:106 +#: src/slic3r/GUI/Preferences.cpp:137 msgid "If enabled, the 3D scene will be rendered in Retina resolution. If you are experiencing 3D performance problems, disabling this option may help." msgstr "Si está activado, la escena 3D se mostrará en resolución Retina. Si tienes problemas de prestaciones 3D, desactivar esta opción te puede ayudar." -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/slic3r/GUI/Preferences.cpp:215 +msgid "If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene" +msgstr "Si está habilitado, el botón de la barra lateral ocultable aparecerá en la esquina superior derecha de la escena 3D" + +#: src/libslic3r/PrintConfig.cpp:3698 +msgid "If enabled, the command line arguments are sent to an existing instance of GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides the \"single_instance\" configuration value from application preferences." +msgstr "Si está habilitado, los argumentos de la línea de comando se envían a una instancia existente de GUI PrusaSlicer, o se activa una ventana de PrusaSlicer existente. Anula el valor de configuración \"single_instance\" de las preferencias de la aplicación." + +#: src/libslic3r/PrintConfig.cpp:1804 msgid "If enabled, the skirt will be as tall as a highest printed object. This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft." msgstr "Si está habilitado, la falda será tan alta como un objeto impreso más alto. Esto es útil para proteger una impresión ABS o ASA de la deformación y la separación de la cama de impresión debido al viento." -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:2000 msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." msgstr "Si está habilitado, laTorre de Limpieza no se imprimirá en capas sin cambios de herramientas. En capas con cambio de herramienta, el extrusor viajará hacia abajo para imprimir la torre de limpieza. El usuario es responsable de garantizar que no haya colisión con la impresión." -#: src/slic3r/GUI/Preferences.cpp:128 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Si está activado, usa la cámara libre. Si no está activado, usa la cámara restringida." -#: src/slic3r/GUI/Preferences.cpp:121 +#: src/slic3r/GUI/Preferences.cpp:186 msgid "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "Si está activado, se usará una cámara en perspectiva. Si no está activo, se usará una cámara ortográfica." -#: src/slic3r/GUI/Preferences.cpp:145 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "If enabled, you can change size of toolbar icons manually." msgstr "Si está activado, puedes cambiar el tamaño de la barra de herramientas manualmente." -#: src/slic3r/GUI/PresetHints.cpp:29 +#: src/slic3r/GUI/PresetHints.cpp:28 msgid "If estimated layer time is below ~%1%s, fan will run at %2%%% and print speed will be reduced so that no less than %3%s are spent on that layer (however, speed will never be reduced below %4%mm/s)." msgstr "Si el tiempo de capa estimado está por debajo de ~%1%s, el ventilador funcionará en %2%%% y la velocidad de impresión se reducirá de modo que no se gaste menos de %3%s en esa capa (sin embargo, la velocidad nunca se reducirá por debajo de %4%mm/s) ." -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:35 msgid "If estimated layer time is greater, but still below ~%1%s, fan will run at a proportionally decreasing speed between %2%%% and %3%%%." msgstr "Si el tiempo estimado de la capa es mayor, pero todavía por debajo de ~%1%s, el ventilador funcionará a una velocidad proporcionalmente menor entre %2%%% y %3%%%." -#: src/libslic3r/PrintConfig.cpp:901 +#: src/libslic3r/PrintConfig.cpp:943 msgid "If expressed as absolute value in mm/s, this speed will be applied to all the print moves of the first layer, regardless of their type. If expressed as a percentage (for example: 40%) it will scale the default speeds." msgstr "Si se expresa como valor absoluto en mm / s, esta velocidad se aplicará a todos los movimientos de impresión de la primera capa, independientemente de su tipo. Si se expresa como un porcentaje (por ejemplo: 40%), escalará las velocidades predeterminadas." -#: src/libslic3r/PrintConfig.cpp:573 +#: src/libslic3r/PrintConfig.cpp:609 msgid "If layer print time is estimated below this number of seconds, fan will be enabled and its speed will be calculated by interpolating the minimum and maximum speeds." msgstr "Si el tiempo de impresión de capa se estima por debajo de este número de segundos, el ventilador se habilitará y su velocidad se calculará al interpolar las velocidades mínima y máxima." -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1821 msgid "If layer print time is estimated below this number of seconds, print moves speed will be scaled down to extend duration to this value." msgstr "Si el tiempo de impresión de la capa se estima por debajo de este número de segundos, la velocidad de los movimientos de impresión se reducirá para extender la duración a este valor." -#: src/libslic3r/PrintConfig.cpp:567 +#: src/libslic3r/PrintConfig.cpp:603 msgid "If this is enabled, fan will never be disabled and will be kept running at least at its minimum speed. Useful for PLA, harmful for ABS." msgstr "Si esto está habilitado, el ventilador nunca se desactivará y se mantendrá funcionando al menos a su velocidad mínima. Útil para PLA, no recomendado para ABS." -#: src/slic3r/GUI/Preferences.cpp:49 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." msgstr "Si esto está habilitado, Slic3r centrará automáticamente los objetos alrededor del centro de la base de impresión." -#: src/slic3r/GUI/Preferences.cpp:57 +#: src/slic3r/GUI/Preferences.cpp:74 msgid "If this is enabled, Slic3r will pre-process objects as soon as they're loaded in order to save time when exporting G-code." msgstr "Si esto está habilitado, Slic3r preprocesará objetos tan pronto como se carguen para ahorrar tiempo al exportar el código G." -#: src/slic3r/GUI/Preferences.cpp:41 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." msgstr "Si esto está habilitado, Slic3r solicitará el último directorio de salida en lugar del que contiene los archivos de entrada." -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/slic3r/GUI/Preferences.cpp:125 +msgid "If this is enabled, when starting PrusaSlicer and another instance of the same PrusaSlicer is already running, that instance will be reactivated instead." +msgstr "Si está habilitado, al iniciar PrusaSlicer y ya se está ejecutando otra instancia del mismo PrusaSlicer, esa instancia se reactivará en su lugar." + +#: src/libslic3r/PrintConfig.cpp:1670 msgid "If you set this to a positive value, Z is quickly raised every time a retraction is triggered. When using multiple extruders, only the setting for the first extruder will be considered." msgstr "Si establece esto en un valor positivo, Z se levantará rápidamente cada vez que se active una retracción. Cuando se usan múltiples extrusores , solo se considerará la configuración del primer extrusor." -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1679 msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z. You can tune this setting for skipping lift on the first layers." msgstr "Si establece esto en un valor positivo, la elevación de Z solo tendrá lugar por encima de la Z absoluta especificada. Puede ajustar esta configuración para omitir el levantamiento en las primeras capas." -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1688 msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z. You can tune this setting for limiting lift to the first layers." msgstr "Si configura esto en un valor positivo, la elevación Z solo tendrá lugar por debajo de la Z absoluta especificada. Puede ajustar esta configuración para limitar la elevación a las primeras capas." -#: src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1562 msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." msgstr "Si desea procesar el código G de salida a través de scripts personalizados, simplemente haga una lista de sus rutas absolutas aquí. Separe los scripts múltiples con un punto y coma. Los scripts se pasarán por la ruta absoluta al archivo de código G como primer argumento, y pueden acceder a la configuración de configuración de Slic3r leyendo las variables de entorno." -#: src/libslic3r/PrintConfig.cpp:530 +#: src/libslic3r/PrintConfig.cpp:566 msgid "If your firmware doesn't handle the extruder displacement you need the G-code to take it into account. This option lets you specify the displacement of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." msgstr "Si su firmware no maneja el desplazamiento del extrusor, necesita el código G para tenerlo en cuenta. Esta opción le permite especificar el desplazamiento de cada extrusora con respecto a la primera. Se esperan coordenadas positivas (se restarán de la coordenada XY)." -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2312 msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." msgstr "Si su firmware requiere valores E relativos, verifique esto, de lo contrario, deje sin marcar. La mayoría de los firmwares usan valores absolutos." -#: src/libslic3r/PrintConfig.cpp:3485 +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" +msgstr "Ignorar" + +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignorar archivos de configuración inexistentes" -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:192 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:173 +msgid "Ignores facets facing away from the camera." +msgstr "Ignora los lados que no están mirando hacia la cámara." + +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Import &Config" msgstr "Importar &Configuración" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Import Config &Bundle" msgstr "Importar &Conjunto de Ajustes" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Import Config from &project" msgstr "Importar configuración desde un &proyecto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Import Config from ini/amf/3mf/gcode" msgstr "Importar Configuración desde ini/amf/3mf/gcode" -#: src/slic3r/GUI/Plater.cpp:4603 +#: src/slic3r/GUI/Plater.cpp:1419 +msgid "Import config only" +msgstr "Importar configuración solo" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 +msgid "Import file" +msgstr "Importar archivo" + +#: src/slic3r/GUI/Plater.cpp:1418 +msgid "Import geometry only" +msgstr "Importar geometría solo" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 +msgid "Import model and profile" +msgstr "Importar modelo y perfil" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:48 +msgid "Import model only" +msgstr "Importar modelo únicamente" + +#: src/slic3r/GUI/Plater.cpp:4655 msgid "Import Object" msgstr "Importar Objeto" -#: src/slic3r/GUI/Plater.cpp:4607 +#: src/slic3r/GUI/Plater.cpp:4659 msgid "Import Objects" msgstr "Importar Objetos" @@ -3594,15 +4145,50 @@ msgstr "Importar Objetos" msgid "Import of the repaired 3mf file failed" msgstr "La importación del archivo 3mf reparado ha fallado" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:47 +msgid "Import profile only" +msgstr "Importar perfil únicamente" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Import SL1 archive" +msgstr "Importar archivo SL1" + +#: src/slic3r/GUI/Plater.cpp:1561 +msgid "Import SLA archive" +msgstr "Importar archivo SLA" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Import STL (imperial units)" +msgstr "Importar STL (unidades imperiales)" + +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importar STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "Importar STL/OBJ/AMF/3MF sin configuración, mantener la base" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:159 +msgid "Importing canceled." +msgstr "Importación cancelada." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:160 +msgid "Importing done." +msgstr "Importación finalizada." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:135 +msgid "Importing SLA archive" +msgstr "Importando archivo SLA" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +msgid "in" +msgstr "en" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 #, c-format msgid "In this mode you can select only other %s Items%s" msgstr "En este modo, solo puede seleccionar otros %s Items %s" @@ -3611,25 +4197,25 @@ msgstr "En este modo, solo puede seleccionar otros %s Items %s" msgid "Incompatible bundles:" msgstr "Grupos incompatibles:" +#: src/slic3r/GUI/PresetComboBoxes.cpp:241 +msgid "Incompatible presets" +msgstr "Ajustes preestablecidos imcompatibles" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 #, c-format msgid "Incompatible with this %s" msgstr "Incompatible con este %s" -#: src/slic3r/GUI/Plater.cpp:4685 +#: src/slic3r/GUI/Plater.cpp:4790 msgid "Increase Instances" msgstr "Aumentar Instancias" -#: src/slic3r/GUI/GLCanvas3D.cpp:264 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Increase/decrease edit area" msgstr "Incrementar/reducir area edición" -#: src/slic3r/GUI/Plater.cpp:2922 -msgid "Indexing hollowed object" -msgstr "Indexando pieza vaciada" - #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3258 +#: src/slic3r/GUI/Tab.cpp:3695 msgid "" "indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." @@ -3638,12 +4224,12 @@ msgstr "" "Haz clic en el icono CANDADO DESBLOQUEADO para restablecer todos los ajustes del grupo de opciones actual a los valores del sistema (o predeterminados)." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3254 +#: src/slic3r/GUI/Tab.cpp:3691 msgid "indicates that the settings are the same as the system (or default) values for the current option group" msgstr "indica que los ajustes son los mismos que los valores del sistema (o por defecto) para el grupo de opciones actual" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3270 +#: src/slic3r/GUI/Tab.cpp:3707 msgid "" "indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." @@ -3651,419 +4237,475 @@ msgstr "" "indica que los ajustes cambiaron y no son iguales que los ajustes grabados la última vez para el grupo de opciones actual.\n" "Haz clic en el símbolo de FLECHA ATRÁS para resetear todos los ajustes del grupo de opciones actual a los grabados la vez anterior." -#: src/slic3r/GUI/ConfigManipulation.cpp:211 -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 -#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/slic3r/GUI/Plater.cpp:527 -#: src/slic3r/GUI/Tab.cpp:1091 src/slic3r/GUI/Tab.cpp:1092 -#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 -#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 -#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 -#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:93 +#: src/slic3r/GUI/GUI_ObjectList.cpp:652 src/slic3r/GUI/Plater.cpp:393 +#: src/slic3r/GUI/Tab.cpp:1413 src/slic3r/GUI/Tab.cpp:1414 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:450 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:826 src/libslic3r/PrintConfig.cpp:863 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1035 +#: src/libslic3r/PrintConfig.cpp:1053 src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1091 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1860 msgid "Infill" msgstr "Relleno" -#: src/slic3r/GUI/PresetHints.cpp:174 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "relleno" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1065 msgid "Infill before perimeters" msgstr "Rellenar antes que los perímetros" -#: src/libslic3r/PrintConfig.cpp:1001 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "Infill extruder" msgstr "Extrusor para el relleno" -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Infill/perimeters overlap" msgstr "Superposición de relleno/perímetros" -#: src/libslic3r/Print.cpp:1584 +#: src/libslic3r/Print.cpp:1610 msgid "Infilling layers" msgstr "Rellenando capas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3430 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3505 src/slic3r/GUI/Plater.cpp:141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:147 msgid "Info" msgstr "Info" -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/slic3r/GUI/GUI_App.cpp:1087 src/slic3r/GUI/Tab.cpp:3435 +msgid "Information" +msgstr "Información" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 +msgid "Infornation" +msgstr "Información" + +#: src/libslic3r/PrintConfig.cpp:1101 msgid "Inherits profile" msgstr "Hereda el perfil" -#: src/libslic3r/SLAPrint.cpp:653 +#: src/libslic3r/SLAPrint.cpp:667 msgid "Initial exposition time is out of printer profile bounds." msgstr "El tiempo de exposición inicial está fuera de los límites del perfil de impresión." -#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 msgid "Initial exposure time" msgstr "Tiempo de exposición inicial" -#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 msgid "Initial layer height" msgstr "Altura de la capa inicial" -#: src/slic3r/GUI/Field.cpp:204 +#: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "El valor introducido está fuera de rango" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "Inspect / activate configuration snapshots" msgstr "Inspeccionar / activar instantáneas de configuración" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:62 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, c-format msgid "Instance %d" msgstr "Instancia %d" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 msgid "Instance manipulation" msgstr "Manipulación de instancias" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "Instancias" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1091 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3781 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4244 msgid "Instances to Separated Objects" msgstr "Instancias para Separar Objetos" -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface layers" msgstr "Capas de interfaz" -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Interface loops" msgstr "Bucles de interfaz" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Interface pattern spacing" msgstr "Espaciado de patrón de interfaz" -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1115 msgid "Interface shells" msgstr "Carcasas de interfaz" -#: src/libslic3r/Zipper.cpp:84 +#: src/libslic3r/miniz_extension.cpp:143 msgid "internal error" msgstr "error interno" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:342 msgid "Internal infill" msgstr "Relleno interno" -#: src/slic3r/GUI/Plater.cpp:3106 +#: src/slic3r/GUI/BedShapeDialog.cpp:145 +msgid "Invalid" +msgstr "Inválido" + +#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 msgid "Invalid data" msgstr "Datos inválidos" -#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 -#: src/slic3r/GUI/BedShapeDialog.cpp:566 +#: src/slic3r/GUI/BedShapeDialog.cpp:570 src/slic3r/GUI/BedShapeDialog.cpp:619 +#: src/slic3r/GUI/BedShapeDialog.cpp:642 msgid "Invalid file format." msgstr "Formato inválido de archivo." -#: src/libslic3r/Zipper.cpp:80 +#: src/libslic3r/miniz_extension.cpp:139 msgid "invalid filename" msgstr "nombre de archivo inválido" -#: src/slic3r/GUI/ConfigManipulation.cpp:319 +#: src/slic3r/GUI/ConfigManipulation.cpp:324 msgid "Invalid Head penetration" msgstr "Penetración inválida de la cabeza" -#: src/libslic3r/Zipper.cpp:48 +#: src/libslic3r/miniz_extension.cpp:107 msgid "invalid header or archive is corrupted" msgstr "encabezado inválido o archivo está dañado" -#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 +#: src/slic3r/GUI/Field.cpp:243 src/slic3r/GUI/Field.cpp:274 +#: src/slic3r/GUI/Field.cpp:1358 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." msgstr "Entrada numérica no válida." -#: src/libslic3r/Zipper.cpp:78 +#: src/libslic3r/miniz_extension.cpp:137 msgid "invalid parameter" msgstr "parámetro inválido" -#: src/slic3r/GUI/ConfigManipulation.cpp:332 +#: src/slic3r/GUI/ConfigManipulation.cpp:337 msgid "Invalid pinhead diameter" msgstr "Diámetro de la cabeza del pin inválido" +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/slic3r/GUI/Tab.cpp:1420 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 +#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +msgid "Ironing" +msgstr "Alisado" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Ironing Type" +msgstr "Tipo de alisado" + +#: src/slic3r/GUI/GUI_App.cpp:243 +msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "está basado en Slic3r de Alessandro Ranellucci y la comunidad RepRap." + #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 msgid "is licensed under the" msgstr "está licenciado bajo el/los" -#: src/slic3r/GUI/Tab.cpp:2941 -msgid "is not compatible with print profile" -msgstr "no es compatible con el perfil de impresión" - -#: src/slic3r/GUI/Tab.cpp:2940 -msgid "is not compatible with printer" -msgstr "no es compatible con esta impresora" - -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso" msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso View" msgstr "Vista Iso" -#: src/slic3r/GUI/Tab.cpp:964 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "It can't be deleted or modified." msgstr "No puede ser borrado o modificado." -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "It is not allowed to change the file to reload" msgstr "No está permitido cambiar el archivo a recargar" -#: src/libslic3r/PrintConfig.cpp:974 +#: src/libslic3r/PrintConfig.cpp:1018 msgid "It may be beneficial to increase the extruder motor current during the filament exchange sequence to allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly shaped tip." msgstr "Puede ser beneficioso aumentar la corriente del motor del extrusor durante la secuencia de intercambio de filamentos para permitir velocidades de alimentación de rampa rápidas y superar la resistencia cuando se carga un filamento con una punta de forma fea." -#: src/slic3r/GUI/GUI_App.cpp:1084 src/slic3r/GUI/Tab.cpp:2958 +#: src/slic3r/GUI/Tab.cpp:3413 +msgid "It's a last preset for this physical printer." +msgstr "Es un último valor predeterminado para esta impresora." + +#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "Es imposible imprimir objetos de varias piezas con tecnología SLA." -#: src/slic3r/GUI/Tab.cpp:2229 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:601 +msgid "It's not possible to delete the last related preset for the printer." +msgstr "No es posible borrar el último ajuste preestablecido relacionado con la impresora." + +#: src/slic3r/GUI/Tab.cpp:2398 msgid "Jerk limits" msgstr "Límites del jerk" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Jitter" msgstr "Jitter" -#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 -#: src/slic3r/GUI/DoubleSlider.cpp:1651 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 +#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 msgid "Jump to height" msgstr "Salta a la altura" -#: src/slic3r/GUI/DoubleSlider.cpp:955 +#: src/slic3r/GUI/DoubleSlider.cpp:1075 #, c-format msgid "Jump to height %s or Set extruder sequence for the entire print" msgstr "Salta a la altura %s o Fija la secuencia del extrusor para toda la impresión" -#: src/libslic3r/PrintConfig.cpp:566 +#: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 +msgid "Jump to move" +msgstr "Saltar al movimiento" + +#: src/slic3r/GUI/SavePresetDialog.cpp:315 +msgid "Just switch to \"%1%\" preset" +msgstr "Simplemente cambiar al ajuste predeterminado \"%1%\"" + +#: src/libslic3r/PrintConfig.cpp:602 msgid "Keep fan always on" msgstr "Mantener el ventilador siempre encendido" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 msgid "Keep lower part" msgstr "Mantener la parte inferior" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 +#: src/slic3r/GUI/GLCanvas3D.cpp:290 msgid "Keep min" msgstr "Mantener mínimo" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Keep upper part" msgstr "Mantener la parte superior" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:37 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 +#: src/slic3r/GUI/MainFrame.cpp:1332 msgid "Keyboard Shortcuts" msgstr "Atajos de teclado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 msgid "Keyboard shortcuts" msgstr "Atajos de teclado" -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2641 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Label objects" msgstr "Etiquetar objetos" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Landscape" msgstr "Paisaje" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Language" msgstr "Idioma" -#: src/slic3r/GUI/GUI_App.cpp:885 +#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 msgid "Language selection" msgstr "Selección de idiomas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2140 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2408 msgid "Last instance of an object cannot be deleted." msgstr "La última instancia de un objeto no puede ser eliminada." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 msgid "Layer" msgstr "Capa" -#: src/slic3r/GUI/ConfigManipulation.cpp:49 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "Altura de la capa" -#: src/libslic3r/Print.cpp:1427 +#: src/libslic3r/Print.cpp:1453 msgid "Layer height can't be greater than nozzle diameter" msgstr "La altura de la capa no puede ser mayor que diámetro de la boquilla" -#: src/slic3r/GUI/Tab.cpp:2362 +#: src/slic3r/GUI/Tab.cpp:2531 msgid "Layer height limits" msgstr "Límites de altura de la capa" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 -msgid "Layer height:" -msgstr "Altura de la capa:" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2488 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 msgid "Layer range Settings to modify" msgstr "Ajustes del Rango de capas a modificar" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 -#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 -#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1976 +#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1798 +#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "layers" msgstr "capas" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3512 -#: src/slic3r/GUI/Tab.cpp:3600 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 +#: src/slic3r/GUI/Tab.cpp:4010 msgid "Layers" msgstr "Capas" -#: src/slic3r/GUI/Tab.cpp:1048 src/slic3r/GUI/Tab.cpp:3598 +#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 msgid "Layers and perimeters" msgstr "Capas y perímetros" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 -#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 -#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 -#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:2142 +#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:92 +#: src/slic3r/GUI/GUI_ObjectList.cpp:651 src/libslic3r/PrintConfig.cpp:72 +#: src/libslic3r/PrintConfig.cpp:209 src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Layers and Perimeters" msgstr "Capas y Perímetros" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Layers Slider" msgstr "Deslizador de Capas" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" msgstr "Inferior" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Top" msgstr "Superior" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/Preferences.cpp:440 +msgid "Layout Options" +msgstr "Opciones de diseño" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 +msgid "Leaving Paint-on supports" +msgstr "Saliendo del Pintado de soportes" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 +msgid "Leaving Seam painting" +msgstr "Saliendo del Pintado de costuras" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left" msgstr "Izquierda" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Left click" msgstr "Clic izquierdo" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:29 +msgid "Left mouse button" +msgstr "Botón izquierdo del ratón" + +#: src/slic3r/GUI/GLCanvas3D.cpp:233 msgid "Left mouse button:" msgstr "Botón izquierdo del ratón:" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left View" msgstr "Vista izquierda" -#: src/slic3r/GUI/GUI_Preview.cpp:257 +#: src/slic3r/GUI/GUI_Preview.cpp:339 msgid "Legend" msgstr "Leyenda" -#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 +#: src/slic3r/GUI/GUI_Preview.cpp:1480 +msgid "Legend/Estimated printing time" +msgstr "Leyenda/Tiempo de impresión estimado" + +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 msgid "Length" msgstr "Largo" -#: src/libslic3r/PrintConfig.cpp:328 +#: src/libslic3r/PrintConfig.cpp:362 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "Longitud del tubo de enfriado para limitar el espacio para movimientos de enfriamiento dentro del mismo." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:129 +#: src/slic3r/GUI/AboutDialog.cpp:141 msgid "License agreements of all following programs (libraries) are part of application license agreement" msgstr "Los acuerdos de licencia de todos los programas (bibliotecas) siguientes forman parte del acuerdo de licencia de la aplicación" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Lift Z" msgstr "Levantar Z" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:886 msgid "Line" msgstr "Lineal" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1427 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 msgid "Load" msgstr "Cargar" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Load a model" msgstr "Cargar un modelo" -#: src/libslic3r/PrintConfig.cpp:3505 +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Load an model saved with imperial units" +msgstr "Cargar un modelo guardado con unidades imperiales" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Load an SL1 archive" +msgstr "Cargar un archivo SL1" + +#: src/libslic3r/PrintConfig.cpp:3710 msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." msgstr "Cargar y almacenar configuraciones en el directorio dado. Esto es útil para mantener diferentes perfiles o incluir configuraciones desde un almacenamiento de red." -#: src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3688 msgid "Load config file" msgstr "Cargar archivo de configuración" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Carga Configuración desde ini/amf/3mf/gcode y mezcla" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Load configuration from project file" msgstr "Cargar configuración desde archivo de proyecto" -#: src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:3689 msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." msgstr "Cargar la configuración desde el archivo especificado. Se puede usar más de una vez para cargar opciones de varios archivos." -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Load exported configuration file" msgstr "Cargar archivo de configuración exportado" -#: src/slic3r/GUI/Plater.cpp:1395 -msgid "Load File" -msgstr "Cargar Archivo" - -#: src/slic3r/GUI/Plater.cpp:1399 -msgid "Load Files" -msgstr "Cargar Archivos" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Cargar pieza" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Load presets from a bundle" msgstr "Cargar preajustes de un paquete" -#: src/slic3r/GUI/Plater.cpp:4575 +#: src/slic3r/GUI/Plater.cpp:4627 msgid "Load Project" msgstr "Cargar Proyecto" -#: src/slic3r/GUI/BedShapeDialog.cpp:102 +#: src/slic3r/GUI/BedShapeDialog.cpp:243 msgid "Load shape from STL..." msgstr "Cargar forma desde STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 src/slic3r/GUI/BedShapeDialog.cpp:405 msgid "Load..." msgstr "Cargar..." @@ -4071,19 +4713,27 @@ msgstr "Cargar..." msgid "loaded" msgstr "cargado" -#: src/slic3r/GUI/Plater.cpp:2426 +#: src/slic3r/GUI/Plater.cpp:2388 msgid "Loaded" msgstr "Cargado" -#: src/slic3r/GUI/Plater.cpp:2273 +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Loading" msgstr "Carga" -#: src/slic3r/GUI/GUI_App.cpp:474 +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" +msgstr "Cargando configuración" + +#: src/slic3r/GUI/Plater.cpp:2226 +msgid "Loading file" +msgstr "Cargando archivo" + +#: src/slic3r/GUI/GUI_App.cpp:1125 msgid "Loading of a mode view" msgstr "Carga de modo de vista" -#: src/slic3r/GUI/GUI_App.cpp:466 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "Loading of current presets" msgstr "Cargando los preajustes actuales" @@ -4092,101 +4742,117 @@ msgstr "Cargando los preajustes actuales" msgid "Loading repaired model" msgstr "Cargando modelo reparado" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:643 msgid "Loading speed" msgstr "Velocidad de carga" -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Loading speed at the start" msgstr "Velocidad de carga al inicio" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:69 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:112 msgid "Local coordinates" msgstr "Coordenadas locales" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 msgid "Lock supports under new islands" msgstr "Bloquear soportes bajo nuevas islas" -#: src/slic3r/GUI/Tab.cpp:3252 +#: src/slic3r/GUI/Tab.cpp:3689 msgid "LOCKED LOCK" msgstr "CANDADO CERRADO" -#: src/slic3r/GUI/Tab.cpp:3280 +#: src/slic3r/GUI/Tab.cpp:3717 msgid "LOCKED LOCK icon indicates that the settings are the same as the system (or default) values for the current option group" msgstr "El icono de CANDADO BLOQUEADO indica que los ajustes son los mismos que los valores del sistema (por defecto) para el grupo de opciones actual" -#: src/slic3r/GUI/Tab.cpp:3296 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "LOCKED LOCK icon indicates that the value is the same as the system (or default) value." msgstr "El icono de CANDADO BLOQUEADO indica que el valor es el mismo que el del sistema (por defecto)" -#: src/libslic3r/PrintConfig.cpp:3508 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Logging level" msgstr "Nivel de registro" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Loops (minimum)" msgstr "Bucles (mínimo)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower Layer" msgstr "Capa inferior" -#: src/slic3r/GUI/Tab.cpp:2188 src/slic3r/GUI/Tab.cpp:2273 -#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 -#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 -#: src/libslic3r/PrintConfig.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 +#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 +#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 msgid "Machine limits" msgstr "Límites de la máquina" -#: src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:3667 +msgid "Machine limits are not set, therefore the print time estimate may not be accurate." +msgstr "Los límites de la máquina no están establecidos, por lo tanto, el tiempo estimado de impresión puede no ser exacto." + +#: src/slic3r/GUI/Tab.cpp:3660 +msgid "Machine limits will be emitted to G-code and used to estimate print time." +msgstr "Los límites de la máquina se emitirán al código G y se utilizarán para calcular el tiempo de impresión." + +#: src/slic3r/GUI/Tab.cpp:3663 +msgid "Machine limits will NOT be emitted to G-code, however they will be used to estimate print time, which may therefore not be accurate as the printer may apply a different set of machine limits." +msgstr "Los límites máquina NO se emitirán al código G, sin embargo, se utilizarán para estimar el tiempo de impresión, que por lo tanto puede no ser exacto ya que la impresora puede aplicar un conjunto diferente de límites de la máquina." + +#: src/slic3r/GUI/Plater.cpp:172 msgid "Manifold" msgstr "Manifold" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 msgid "Manual editing" msgstr "Edición manual" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:180 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 msgid "Masked SLA file exported to %1%" msgstr "Archivo SLA enmascarado exportado a %1%" -#: src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1451 msgid "Mate&rial Settings Tab" msgstr "Pestaña Ajustes de Mate&rial" -#: src/slic3r/GUI/Tab.cpp:3478 src/slic3r/GUI/Tab.cpp:3480 +#: src/slic3r/GUI/Tab.cpp:3894 src/slic3r/GUI/Tab.cpp:3896 msgid "Material" msgstr "Material" -#: src/slic3r/GUI/Tab.hpp:416 +#: src/slic3r/GUI/Tab.hpp:486 msgid "Material Settings" msgstr "Configuraciones del material" -#: src/slic3r/GUI/Plater.cpp:163 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Material Settings Tab" +msgstr "Pestaña Ajustes de Material" + +#: src/slic3r/GUI/Plater.cpp:169 msgid "Materials" msgstr "Materiales" -#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 msgid "Max" msgstr "Max" -#: src/libslic3r/PrintConfig.cpp:2734 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max bridge length" msgstr "Distancia máxima de puentes" -#: src/libslic3r/PrintConfig.cpp:2658 +#: src/libslic3r/PrintConfig.cpp:2812 msgid "Max bridges on a pillar" msgstr "Puentes maximos en un pilar" -#: src/libslic3r/PrintConfig.cpp:2822 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Max merge distance" msgstr "Distancia máxima de combinación" -#: src/libslic3r/PrintConfig.cpp:2743 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Max pillar linking distance" msgstr "Distancia máxima de enlace del pilar" @@ -4194,7 +4860,7 @@ msgstr "Distancia máxima de enlace del pilar" msgid "Max print height" msgstr "Máxima altura de impresión" -#: src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1345 msgid "Max print speed" msgstr "Velocidad máxima de impresión" @@ -4202,171 +4868,189 @@ msgstr "Velocidad máxima de impresión" msgid "max PrusaSlicer version" msgstr "máxima versión PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Max volumetric slope negative" msgstr "Máx. Pendiente volumétrica negativa" -#: src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "Max volumetric slope positive" msgstr "Máx. Pendiente volumétrica positiva" -#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 +#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 msgid "Max volumetric speed" msgstr "Velocidad volumétrica máxima" -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2411 msgid "Maximal bridging distance" msgstr "Distancia máxima de puentes" -#: src/libslic3r/PrintConfig.cpp:2269 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Maximal distance between supports on sparse infill sections." msgstr "Distancia máxima entre soportes en las secciones con relleno ligero." -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1253 msgid "Maximum acceleration E" msgstr "Máxima aceleración E" -#: src/libslic3r/PrintConfig.cpp:1151 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Maximum acceleration of the E axis" msgstr "Máxima aceleración en el eje E" -#: src/libslic3r/PrintConfig.cpp:1148 +#: src/libslic3r/PrintConfig.cpp:1256 msgid "Maximum acceleration of the X axis" msgstr "Máxima aceleración en el eje X" -#: src/libslic3r/PrintConfig.cpp:1149 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Maximum acceleration of the Y axis" msgstr "Máxima aceleración en el eje Y" -#: src/libslic3r/PrintConfig.cpp:1150 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Maximum acceleration of the Z axis" msgstr "Máxima aceleración en el eje Z" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Maximum acceleration when extruding" msgstr "Aceleración máxima al extruir" -#: src/libslic3r/PrintConfig.cpp:1200 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Aceleración máxima con extrusión (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Maximum acceleration when retracting" msgstr "Aceleración máxima al retraer" -#: src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1318 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Aceleración máxima al retraer (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Maximum acceleration X" msgstr "Máxima aceleración X" -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Maximum acceleration Y" msgstr "Máxima aceleración Y" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "Maximum acceleration Z" msgstr "Máxima aceleración Z" -#: src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2391 msgid "Maximum accelerations" msgstr "Aceleraciones máximas" -#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 +#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 msgid "Maximum exposure time" msgstr "Tiempo de exposición máximo" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1236 msgid "Maximum feedrate E" msgstr "Máximo avance E" -#: src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "Maximum feedrate of the E axis" msgstr "Máximo avance del eje E" -#: src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Maximum feedrate of the X axis" msgstr "Máximo avance en el eje X" -#: src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Maximum feedrate of the Y axis" msgstr "Máximo avance del eje Y" -#: src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Maximum feedrate of the Z axis" msgstr "Máximo avance del eje Z" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Maximum feedrate X" msgstr "Máxima velocidad en X" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Maximum feedrate Y" msgstr "Máxima velocidad en Y" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1235 msgid "Maximum feedrate Z" msgstr "Máximo avance en Z" -#: src/slic3r/GUI/Tab.cpp:2217 +#: src/slic3r/GUI/Tab.cpp:2386 msgid "Maximum feedrates" msgstr "Avance máximo" -#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 msgid "Maximum initial exposure time" msgstr "Tiempo de exposición inicial máximo" -#: src/libslic3r/PrintConfig.cpp:1162 +#: src/libslic3r/PrintConfig.cpp:1270 msgid "Maximum jerk E" msgstr "Máximo jerk E" -#: src/libslic3r/PrintConfig.cpp:1168 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Maximum jerk of the E axis" msgstr "Maximo jerk del eje E" -#: src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1273 msgid "Maximum jerk of the X axis" msgstr "Maximo jerk del eje Y" -#: src/libslic3r/PrintConfig.cpp:1166 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "Maximum jerk of the Y axis" msgstr "Maximo jerk del eje Y" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1275 msgid "Maximum jerk of the Z axis" msgstr "Maximo jerk del eje Z" -#: src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Maximum jerk X" msgstr "Máximo jerk X" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Maximum jerk Y" msgstr "Máximo jerk Y" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1269 msgid "Maximum jerk Z" msgstr "Máximo jerk Z" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2814 msgid "Maximum number of bridges that can be placed on a pillar. Bridges hold support point pinheads and connect to pillars as small branches." msgstr "Número máximo de puentes que se pueden colocar en un pilar. Los puentes sostienen cabezas de alfiler de puntos de apoyo y se conectan a los pilares como pequeñas ramas." -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:634 msgid "Maximum volumetric speed allowed for this filament. Limits the maximum volumetric speed of a print to the minimum of print and filament volumetric speed. Set to zero for no limit." msgstr "Velocidad volumétrica máxima permitida para este filamento. Limita la velocidad volumétrica máxima de una impresión al mínimo de velocidad volumétrica de impresión y filamento. Establecer en cero para usar sin límite." -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2569 src/libslic3r/PrintConfig.cpp:3641 msgid "Merge" msgstr "Combinar" -#: src/libslic3r/PrintConfig.cpp:2683 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +msgid "Merge all parts to the one single object" +msgstr "Juntar todas las piezas en un único objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Merge objects to the one multipart object" +msgstr "Juntar objeto en un objeto multipieza" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +msgid "Merge objects to the one single object" +msgstr "Juntar objetos en uno solo objeto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +msgid "Merged" +msgstr "Juntar" + +#: src/libslic3r/PrintConfig.cpp:2847 msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." msgstr "La fusión de puentes o pilares en otros pilares puede aumentar el radio. Cero significa que no hay aumento, uno significa aumento total." -#: src/libslic3r/SLAPrintSteps.cpp:64 +#: src/libslic3r/SLAPrintSteps.cpp:65 msgid "Merging slices and calculating statistics" msgstr "Mezclando rebanadas y calculando estadísticas" @@ -4374,15 +5058,15 @@ msgstr "Mezclando rebanadas y calculando estadísticas" msgid "Mesh repair failed." msgstr "Reparación de la malla fallida." -#: src/slic3r/GUI/DoubleSlider.cpp:1635 +#: src/slic3r/GUI/DoubleSlider.cpp:1831 msgid "Message for pause print on current layer (%1% mm)." msgstr "Mensaje para pausa de impresión en la capa actual (%1% mm)." -#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 msgid "Min" msgstr "Min" -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Min print speed" msgstr "Velocidad de impresión mínima" @@ -4390,232 +5074,237 @@ msgstr "Velocidad de impresión mínima" msgid "min PrusaSlicer version" msgstr "mínima versión PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:2772 +#: src/libslic3r/PrintConfig.cpp:2936 msgid "Minimal distance of the support points" msgstr "Distancia mínima de los puntos de apoyo" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1414 msgid "Minimal filament extrusion length" msgstr "Longitud mínima de filamento extruido" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 msgid "Minimal points distance" msgstr "Distancia mínima de puntos" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Minimal purge on wipe tower" msgstr "Purga mínima en la torre de limpieza" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:221 msgid "Minimum bottom shell thickness" msgstr "Espesor mínimo de la tapa inferior" -#: src/slic3r/GUI/PresetHints.cpp:339 +#: src/slic3r/GUI/PresetHints.cpp:337 msgid "Minimum bottom shell thickness is %1% mm." msgstr "El espesor mínimo de la carcasa inferior es %1% mm." -#: src/libslic3r/PrintConfig.cpp:1512 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." msgstr "Resolución mínima de detalles, utilizada para simplificar el archivo de entrada para acelerar el trabajo de laminado y reducir el uso de memoria. Los modelos de alta resolución suelen llevar más detalles de los que las impresoras pueden ofrecer. Establézcalo en cero para desactivar cualquier simplificación y usar la resolución completa de la entrada." -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 +#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 msgid "Minimum exposure time" msgstr "Tiempo de exposición mínimo" -#: src/libslic3r/PrintConfig.cpp:1178 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Minimum feedrate when extruding" msgstr "Avance mínimo al extruir" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1288 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Avance mínimo al extruir (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2234 +#: src/slic3r/GUI/Tab.cpp:2403 msgid "Minimum feedrates" msgstr "Avances míninos" -#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 msgid "Minimum initial exposure time" msgstr "Tiempo de exposición inicial mínimo" -#: src/slic3r/GUI/Tab.cpp:1069 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Minimum shell thickness" msgstr "Espesor mínimo de pared" -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 msgid "Minimum thickness of a top / bottom shell" msgstr "Espesor mínimo de una carcasa superior / inferior" -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2289 msgid "Minimum top shell thickness" msgstr "Espesor mínimo de la carcasa superior" -#: src/slic3r/GUI/PresetHints.cpp:320 +#: src/slic3r/GUI/PresetHints.cpp:318 msgid "Minimum top shell thickness is %1% mm." msgstr "El espesor mínimo de la carcasa superior es %1% mm." -#: src/libslic3r/PrintConfig.cpp:1522 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Minimum travel after retraction" msgstr "Distancia mínima después de la retracción" -#: src/libslic3r/PrintConfig.cpp:1188 +#: src/libslic3r/PrintConfig.cpp:1296 msgid "Minimum travel feedrate" msgstr "Avance mínimo de movimiento" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Minimum travel feedrate (M205 T)" msgstr "Velocidad mínima sin extrusión (M205 T)" -#: src/libslic3r/PrintConfig.cpp:2917 +#: src/libslic3r/PrintConfig.cpp:3081 msgid "Minimum wall thickness of a hollowed model." msgstr "Mínimo de espesor de la pared de un modelo vaciado." -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2592 msgid "Minimum width of features to maintain when doing elephant foot compensation." msgstr "Ancho mínimo característico para mantener al realizar la compensación de pie de elefante." -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror" msgstr "Reflejar" -#: src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Mirror horizontally" msgstr "Reflejar horizontalmente" -#: src/slic3r/GUI/GLCanvas3D.cpp:2053 +#: src/slic3r/GUI/GLCanvas3D.cpp:2226 msgid "Mirror Object" msgstr "Reflejar objeto" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror the selected object" msgstr "Duplicar el objeto seleccionado" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Mirror the selected object along the X axis" msgstr "Duplicar el objeto seleccionado a lo largo del eje X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Mirror the selected object along the Y axis" msgstr "Duplicar el objeto seleccionado a lo largo del eje Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Mirror the selected object along the Z axis" msgstr "Duplicar el objeto seleccionado a lo largo del eje Z" -#: src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2529 msgid "Mirror vertically" msgstr "Reflejar verticalmente" -#: src/slic3r/Utils/AstroBox.cpp:68 src/slic3r/Utils/OctoPrint.cpp:68 +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:68 #, c-format msgid "Mismatched type of print host: %s" msgstr "Tipo de host de impresión no coincidente: %s" -#: src/libslic3r/ExtrusionEntity.cpp:323 +#: src/libslic3r/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 msgid "Mixed" msgstr "Mezclado" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "ml" msgstr "ml" -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 -#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 src/slic3r/GUI/GUI_ObjectLayers.cpp:145 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 #: src/slic3r/GUI/WipeTowerDialog.cpp:85 src/libslic3r/PrintConfig.cpp:75 -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:91 -#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 -#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 -#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 -#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 -#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 -#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 -#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 -#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 -#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 -#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 -#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 -#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 -#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 -#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 -#: src/libslic3r/PrintConfig.cpp:2695 src/libslic3r/PrintConfig.cpp:2705 -#: src/libslic3r/PrintConfig.cpp:2717 src/libslic3r/PrintConfig.cpp:2737 -#: src/libslic3r/PrintConfig.cpp:2747 src/libslic3r/PrintConfig.cpp:2757 -#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2790 -#: src/libslic3r/PrintConfig.cpp:2804 src/libslic3r/PrintConfig.cpp:2815 -#: src/libslic3r/PrintConfig.cpp:2828 src/libslic3r/PrintConfig.cpp:2873 -#: src/libslic3r/PrintConfig.cpp:2883 src/libslic3r/PrintConfig.cpp:2892 -#: src/libslic3r/PrintConfig.cpp:2902 src/libslic3r/PrintConfig.cpp:2918 -#: src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:124 src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 +#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 +#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 +#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 msgid "mm" msgstr "mm" -#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 +#: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" msgstr "mm (cero para deshabilitar)" -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 -#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 +#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "mm or %" msgstr "mm o %" -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 -#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 -#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 +#: src/libslic3r/PrintConfig.cpp:271 src/libslic3r/PrintConfig.cpp:645 +#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:662 +#: src/libslic3r/PrintConfig.cpp:670 src/libslic3r/PrintConfig.cpp:697 +#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2297 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 msgid "mm/s or %" msgstr "mm/s o %" -#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 -#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 +#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:708 msgid "mm³" msgstr "mm³" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "mm³/s" msgstr "mm³/s" -#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 msgid "mm³/s²" msgstr "mm³/s²" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 msgid "Mode" msgstr "&Modo" @@ -4623,7 +5312,7 @@ msgstr "&Modo" msgid "model" msgstr "modelo" -#: src/slic3r/GUI/BedShapeDialog.cpp:251 +#: src/slic3r/GUI/BedShapeDialog.cpp:395 msgid "Model" msgstr "Modelo" @@ -4652,99 +5341,125 @@ msgstr "Reparación del modelo terminada" msgid "Model repaired successfully" msgstr "Modelo reparado exitosamente" -#: src/slic3r/GUI/Tab.cpp:979 +#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +msgctxt "Mode" +msgid "Advanced" +msgstr "Advanzado" + +#: src/slic3r/GUI/Tab.cpp:1241 msgid "Modifications to the current profile will be saved." msgstr "Se guardarán las modificaciones al perfil actual." -#: src/slic3r/GUI/Preset.cpp:247 +#: src/slic3r/GUI/GUI_App.cpp:1425 msgid "modified" msgstr "modificado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Modifier" msgstr "Modificador" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1491 msgid "Modifiers" msgstr "Modificadores" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2655 msgid "money/bottle" msgstr "dinero/botella" -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:798 msgid "money/kg" msgstr "dinero/kg" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:461 +msgid "Monotonic" +msgstr "Monotónico" + +#: src/slic3r/GUI/NotificationManager.cpp:305 +#: src/slic3r/GUI/NotificationManager.cpp:315 +msgid "More" +msgstr "Más" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Mouse wheel" msgstr "Rueda del ratón" -#: src/slic3r/GUI/GLCanvas3D.cpp:261 +#: src/slic3r/GUI/GLCanvas3D.cpp:249 msgid "Mouse wheel:" msgstr "Rueda del ratón:" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:64 msgid "Move" msgstr "Mover" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Mover plano de recorte" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Move current slider thumb Down" msgstr "Mover el control deslizante actual hacia abajo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +msgid "Move current slider thumb Left" +msgstr "Mover el control deslizante actual hacia la izquierda" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 +msgid "Move current slider thumb Right" +msgstr "Mover el control deslizante actual hacia la derecha" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Move current slider thumb Up" msgstr "Mover el control deslizante actual hacia arriba" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1059 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:835 msgid "Move drainage hole" msgstr "Mover orificio de drenaje" -#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Mover Objeto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 msgid "Move point" msgstr "Mover punto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 msgid "Move selection 10 mm in negative X direction" msgstr "Mover la selección 10 mm en dirección X negativa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 msgid "Move selection 10 mm in negative Y direction" msgstr "Mover la selección 10 mm en dirección Y negativa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 msgid "Move selection 10 mm in positive X direction" msgstr "Mover la selección 10 mm en dirección X positiva" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Move selection 10 mm in positive Y direction" msgstr "Mover la selección 10 mm en dirección Y positiva" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1097 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:955 msgid "Move support point" msgstr "Mover punto de soporte" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/GCodeViewer.cpp:2492 +msgid "Movement" +msgstr "Movimiento" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Movement in camera space" msgstr "Movimiento en el espacio de la cámara" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 msgid "Movement step set to 1 mm" msgstr "Paso de movimiento configurado a 1 mm" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." msgstr "Las impresoras de varios materiales pueden necesitar cebar o purgar extrusoras en los cambios de herramientas. Extruya el exceso de material en la torre de limpieza." -#: src/slic3r/GUI/Plater.cpp:2360 src/slic3r/GUI/Plater.cpp:2413 +#: src/slic3r/GUI/Plater.cpp:2322 src/slic3r/GUI/Plater.cpp:2375 msgid "Multi-part object detected" msgstr "Objeto de piezas múltiples detectado" @@ -4753,11 +5468,11 @@ msgstr "Objeto de piezas múltiples detectado" msgid "Multiple %s devices found. Please only connect one at a time for flashing." msgstr "Se encontraron múltiples dispositivos %s. Por favor, conecta solo uno a la vez para flashear." -#: src/slic3r/GUI/Tab.cpp:1179 +#: src/slic3r/GUI/Tab.cpp:1509 msgid "Multiple Extruders" msgstr "Múltiples Extrusores" -#: src/slic3r/GUI/Plater.cpp:2410 +#: src/slic3r/GUI/Plater.cpp:2372 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -4767,36 +5482,41 @@ msgstr "" "En lugar de considerarlos como objetos múltiples, ¿debería considerar\n" "estos archivos para formar un solo objeto que tiene varias partes?" -#: src/libslic3r/PrintConfig.cpp:3439 +#: src/libslic3r/PrintConfig.cpp:3638 msgid "Multiply copies by creating a grid." msgstr "Multiplicar copias creando una rejilla." -#: src/libslic3r/PrintConfig.cpp:3434 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Multiply copies by this factor." msgstr "Multiplicar las copias por este factor." -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:580 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "N/A" -#: src/slic3r/GUI/GUI_ObjectList.cpp:270 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "Nombre" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:114 +msgid "Name of the printer" +msgstr "Nombre de la impresora" + +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." msgstr "Nombre de la variante de impresora. Por ejemplo, las variantes pueden distinguir diferentes diámetros de boquilla." -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1590 msgid "Name of the printer vendor." msgstr "Nombre del fabricante de la impresora." -#: src/libslic3r/PrintConfig.cpp:1058 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Name of the profile, from which this profile inherits." msgstr "Nombre del perfil desde que éste hereda." -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "Nearest" msgstr "Más cercano" @@ -4804,14 +5524,30 @@ msgstr "Más cercano" msgid "Network lookup" msgstr "Búsqueda en la red" -#: src/slic3r/GUI/Plater.cpp:2151 +#: src/slic3r/GUI/Preferences.cpp:430 +msgid "New layout, access via settings button in the top menu" +msgstr "Nuevo diseño, acceso a través del botón de configuración en el menú superior" + +#: src/slic3r/GUI/Plater.cpp:2056 msgid "New Project" msgstr "Nuevo proyecto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "New project, clear plater" msgstr "Nuevo proyecto, limpiar plataforma" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 +msgid "New Value" +msgstr "Nuevo Valor" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 +msgid "New value" +msgstr "Nuevo valor" + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "New version is available." +msgstr "Una nueva versión está disponible." + #: src/slic3r/GUI/UpdateDialogs.cpp:38 #, c-format msgid "New version of %s is available" @@ -4821,23 +5557,23 @@ msgstr "Nueva versión de %s disponible" msgid "New version:" msgstr "Nueva versión:" -#: src/slic3r/GUI/GLCanvas3D.cpp:4673 +#: src/slic3r/GUI/GLCanvas3D.cpp:5089 msgid "Next Redo action: %1%" msgstr "Siguiente acción de Rehacer: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:4641 +#: src/slic3r/GUI/GLCanvas3D.cpp:5051 msgid "Next Undo action: %1%" msgstr "Siguiente acción de Deshacer: %1%" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:1004 msgid "No extrusion" msgstr "Sin extrusión" -#: src/libslic3r/SLAPrintSteps.cpp:453 +#: src/libslic3r/SLAPrintSteps.cpp:451 msgid "No pad can be generated for this model with the current configuration" msgstr "No se puede generar el pad para este modelo con la configuración actual" -#: src/slic3r/GUI/MainFrame.cpp:784 +#: src/slic3r/GUI/MainFrame.cpp:1485 msgid "No previously sliced file." msgstr "Ningún archivo previamente laminado." @@ -4845,175 +5581,221 @@ msgstr "Ningún archivo previamente laminado." msgid "NO RAMMING AT ALL" msgstr "NO EMPUJAR EN ABSOLUTO" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1999 msgid "No sparse layers (EXPERIMENTAL)" msgstr "Sin capas dispersas (EXPERIMENTAL)" -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2938 msgid "No support points will be placed closer than this threshold." msgstr "Ningún punto de soporte se colocará más cerca de este umbral." -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "No updates available" msgstr "No hay actualizaciones disponibles" -#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 -#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 -#: src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 +#: src/libslic3r/ExtrusionEntity.cpp:312 msgid "None" msgstr "Ninguno" -#: src/slic3r/GUI/Tab.cpp:2203 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 msgid "Normal" msgstr "Normal" -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 msgid "normal mode" msgstr "modo normal" -#: src/libslic3r/Zipper.cpp:46 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 +msgid "Normal mode" +msgstr "Modo normal" + +#: src/libslic3r/miniz_extension.cpp:105 msgid "not a ZIP archive" msgstr "no es un archivo ZIP" -#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +#: src/slic3r/GUI/BedShapeDialog.cpp:366 src/slic3r/GUI/BedShapeDialog.cpp:446 msgid "Not found:" msgstr "No encontrado:" -#: src/slic3r/GUI/DoubleSlider.cpp:1019 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Note" msgstr "Nota" -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Note, that selected preset will be deleted from this/those printer(s) too." +msgstr "Tenga en cuenta que ese ajuste preestablecido seleccionado también se eliminará de esta/esas impresoras." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Note, that this/those printer(s) will be deleted after deleting of the selected preset." +msgstr "Tenga en cuenta que esta(s) impresora(s) se eliminarán después de eliminar el ajuste preestablecido seleccionado." + +#: src/slic3r/GUI/Tab.cpp:2039 +msgid "" +"Note: All parameters from this group are moved to the Physical Printer settings (see changelog).\n" +"\n" +"A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored into PrusaSlicer/physical_printer directory." +msgstr "" +"Nota: Todos los parámetros de este grupo se han desplazado a la configuración de Impresora física (consulte el registro de cambios).\n" +"\n" +"Se crea un nuevo perfil de impresora física haciendo clic en el icono de \"engranaje\" a la derecha del cuadro combinado de perfiles de impresora, seleccionando el elemento \"Agregar impresora física\" en el cuadro combinado de impresora. El editor de perfil de Impresora física también se abre al hacer clic en el icono \"engranaje\" en la pestaña Configuración de impresora. Los perfiles de la impresora física se almacenan en el directorio PrusaSlicer/physical_printer." + +#: src/slic3r/Utils/AstroBox.cpp:92 msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "Aviso: Se necesita la versión 1.1.0 o superior de AstroBox." -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:76 msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "Nota: Requiere FlashAir con firmware 2.00.02 o posterior y la función de carga activada." -#: src/slic3r/Utils/OctoPrint.cpp:89 +#: src/slic3r/Utils/OctoPrint.cpp:91 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Nota: Se necesita al menos la versión 1.1.0 de OctoPrint." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1345 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1192 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Nota: algunos accesos directos funcionan solo en modo de (no)edición." -#: src/slic3r/GUI/Tab.cpp:1251 src/slic3r/GUI/Tab.cpp:1252 -#: src/slic3r/GUI/Tab.cpp:1540 src/slic3r/GUI/Tab.cpp:1541 -#: src/slic3r/GUI/Tab.cpp:2012 src/slic3r/GUI/Tab.cpp:2013 -#: src/slic3r/GUI/Tab.cpp:2128 src/slic3r/GUI/Tab.cpp:2129 -#: src/slic3r/GUI/Tab.cpp:3535 src/slic3r/GUI/Tab.cpp:3536 +#: src/slic3r/GUI/SavePresetDialog.cpp:151 +msgid "Note: This preset will be replaced after saving" +msgstr "Nota: Este ajuste se reemplazará tras guardar" + +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 +#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 msgid "Notes" msgstr "Notas" -#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 -#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:245 +#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "Date cuenta" -#: src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:236 msgid "nozzle" msgstr "boquilla" -#: src/slic3r/GUI/Tab.cpp:1870 src/slic3r/GUI/Tab.cpp:2340 -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/slic3r/GUI/Tab.cpp:1790 +msgid "Nozzle" +msgstr "Boquilla" + +#: src/slic3r/GUI/ConfigWizard.cpp:1392 +msgid "Nozzle and Bed Temperatures" +msgstr "Temperaturas de la Base y la Boquilla" + +#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "Nozzle diameter" msgstr "Diámetro de la boquilla" -#: src/slic3r/GUI/ConfigWizard.cpp:969 +#: src/slic3r/GUI/ConfigWizard.cpp:1335 msgid "Nozzle Diameter:" msgstr "Diámetro de la boquilla:" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:2201 +msgid "Nozzle temperature" +msgstr "Temperatura de la boquilla" + +#: src/libslic3r/PrintConfig.cpp:2198 +msgid "Nozzle temperature for layers after the first one. Set this to zero to disable temperature control commands in the output G-code." +msgstr "Temperatura de la boquilla para las capas después de la primera. Ajusta esto a cero para deshabilitar los comandos de control de temperatura en el código G de salida." + +#: src/libslic3r/PrintConfig.cpp:961 +msgid "Nozzle temperature for the first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output G-code." +msgstr "Temperatura de la boquilla para la primera capa. Si deseas controlar la temperatura manualmente durante la impresión, configúralo a cero para deshabilitar las órdenes de control de temperatura en el código G de salida." + +#: src/libslic3r/PrintConfig.cpp:686 msgid "Number of cooling moves" msgstr "Número de movimientos de enfriamiento" -#: src/slic3r/GUI/Tab.cpp:1839 +#: src/slic3r/GUI/Tab.cpp:2073 msgid "Number of extruders of the printer." msgstr "Número de extrusores de la impresora." -#: src/libslic3r/PrintConfig.cpp:1975 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Number of interface layers to insert between the object(s) and support material." msgstr "Número de capas de interfaz para insertar entre el (los) objeto(s) y el material de soporte." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1812 msgid "Number of loops for the skirt. If the Minimum Extrusion Length option is set, the number of loops might be greater than the one configured here. Set this to zero to disable skirt completely." msgstr "Número de vueltas para la falda Si se establece la opción Longitud Mínima de Extrusión, el número de bucles puede ser mayor que el configurado aquí. Ajuste esto a cero para deshabilitar la falda por completo." -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2508 msgid "Number of pixels in" msgstr "Número de píxeles en" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2510 msgid "Number of pixels in X" msgstr "Número de píxeles en X" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "Number of pixels in Y" msgstr "Número de píxeles en Y" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:210 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Número de capas sólidas para generar en las superficies inferiores." -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "Número de capas sólidas para generar en las superficies superior e inferior." -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "Number of solid layers to generate on top surfaces." msgstr "Número de capas sólidas para generar en las superficies superiores." -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" msgstr "El número de capas necesarias para el tiempo de exposición cambie desde el tiempo de exposición inicial hasta el tiempo de exposición" -#: src/slic3r/GUI/Plater.cpp:241 +#: src/slic3r/GUI/Plater.cpp:247 msgid "Number of tool changes" msgstr "Número de cambios de herramienta" -#: src/libslic3r/PrintConfig.cpp:2753 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:2917 msgid "Object elevation" msgstr "Elevación del objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2466 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 msgid "Object manipulation" msgstr "Manipulación de objetos" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:623 msgid "Object name" msgstr "Nombre del objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3417 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 msgid "Object or Instance" msgstr "Objeto o instancia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Object reordered" msgstr "Objetos reordenados" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2479 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 msgid "Object Settings to modify" msgstr "Configuraciones de objetos para modificar" -#: src/slic3r/GUI/Plater.cpp:2529 +#: src/slic3r/GUI/Plater.cpp:2491 msgid "Object too large?" msgstr "Objeto demasiado grande?" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2405 msgid "Object will be used to purge the nozzle after a toolchange to save material that would otherwise end up in the wipe tower and decrease print time. Colours of the objects will be mixed as a result." msgstr "El objeto se utilizará para purgar el nozzle después de un cambio de herramienta para guardar el material que de lo contrario terminaría en la torre de limpieza y disminuir el tiempo de impresión. Los colores de los objetos se mezclarán como resultado." -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "object(s)" msgstr "objeto(s)" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "objects" msgstr "objetos" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 msgid "Octagram Spiral" msgstr "Octagram Spiral" @@ -5021,64 +5803,101 @@ msgstr "Octagram Spiral" msgid "OctoPrint version" msgstr "Versión de OctoPrint" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3425 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 msgid "of a current Object" msgstr "del Objeto actual" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 msgid "Offset" msgstr "Desplazamiento" -#: src/slic3r/GUI/Tab.cpp:1755 +#: src/slic3r/GUI/Preferences.cpp:422 +msgid "Old regular layout with the tab bar" +msgstr "Diseño regular antiguo con la barra de pestañas" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:608 +msgid "Old Value" +msgstr "Valor Antiguo" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1177 +msgid "Old value" +msgstr "Valor antiguo" + +#: src/slic3r/GUI/Preferences.cpp:123 +msgid "On OSX there is always only one instance of app running by default. However it is allowed to run multiple instances of same app from the command line. In such case this settings will allow only one instance." +msgstr "En OSX, siempre hay una sola instancia de aplicación que se ejecuta de forma predeterminada. Sin embargo, está permitido ejecutar varias instancias de la misma aplicación desde la línea de comandos. En tal caso, esta configuración permitirá solo una instancia." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 #, c-format msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "En este sistema,%s usa certificados HTTPS del almacén de certificados o llavero." -#: src/slic3r/GUI/DoubleSlider.cpp:950 +#: src/slic3r/GUI/DoubleSlider.cpp:1064 msgid "One layer mode" msgstr "Modo de capa única" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1391 msgid "One or more object were assigned an extruder that the printer does not have." msgstr "Uno o más objetos fueron asignados a un extrusor no existente." -#: src/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2676 +#: src/libslic3r/PrintConfig.cpp:2045 src/libslic3r/PrintConfig.cpp:2840 msgid "Only create support if it lies on a build plate. Don't create support on a print." msgstr "Solo crear soportes si está en contacto con la plataforma. No crea soporte en la impresión." -#: src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Only infill where needed" msgstr "Solo rellenar cuando sea necesario" -#: src/slic3r/GUI/Tab.cpp:2373 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Only lift Z" msgstr "Solo levantar Z" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1678 msgid "Only lift Z above" msgstr "Solo levantar Z mayor que" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Only lift Z below" msgstr "Solo levantar Z menor que" -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Only retract when crossing perimeters" msgstr "Solo retraer al cruzar perímetros" -#: src/slic3r/GUI/Tab.cpp:1187 +#: src/slic3r/GUI/ConfigWizard.cpp:714 +msgid "Only the following installed printers are compatible with the selected filament:" +msgstr "Solo las siguientes impresoras instaladas son compatibles con el filamento seleccionado:" + +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Ooze prevention" msgstr "Prevención de goteo" -#: src/libslic3r/Print.cpp:1266 +#: src/libslic3r/Print.cpp:1292 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "La prevención de goteo actualmente no es compatible con la torre de limpieza activa." -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open &PrusaSlicer" +msgstr "Abrir &PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "Open a G-code file" +msgstr "Abrir un archivo código G" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 +#: src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open a new PrusaSlicer instance" +msgstr "Abrir instancia nueva de PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "Open a project file" msgstr "Abrir un archivo de proyecto" -#: src/slic3r/GUI/Tab.cpp:1729 +#: src/slic3r/GUI/Plater.cpp:1417 +msgid "Open as project" +msgstr "Abrir como proyecto" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 msgid "Open CA certificate file" msgstr "Abrir archivo de certificado CA" @@ -5091,116 +5910,150 @@ msgstr "Abrir la página del registro de cambios" msgid "Open download page" msgstr "Abrir página de descarga" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/NotificationManager.cpp:742 +msgid "Open Folder." +msgstr "Abrir carpeta." + +#: src/slic3r/Utils/Process.cpp:151 +msgid "Open G-code file:" +msgstr "Abrir archivo código G:" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +msgid "Open G-code viewer" +msgstr "Abrir visor código G" + +#: src/slic3r/GUI/MainFrame.cpp:79 +msgid "Open new G-code viewer" +msgstr "Abrir visor código G nuevo" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open new instance" +msgstr "Abrir instancia nueva" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "Abrir proyecto STL/OBJ/AMF/3MF con configuración, limpiar plataforma" -#: src/slic3r/GUI/MainFrame.cpp:693 +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open PrusaSlicer" +msgstr "Abrir PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 #, c-format msgid "Open the %s website in your browser" msgstr "Abrir el sitio web de %s en su navegador" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Abrir la página de descarga de los controladores Prusa3D en su navegador" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Open the software releases page in your browser" msgstr "Abre la página de lanzamientos de software en tu navegador" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 msgid "Optimize orientation" msgstr "Optimizar la orientación" -#: src/slic3r/GUI/Plater.cpp:2767 +#: src/slic3r/GUI/Plater.cpp:1555 msgid "Optimize Rotation" msgstr "Optimizar Rotación" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Plater.cpp:3962 msgid "Optimize the rotation of the object for better print results." msgstr "Optimizar la rotación del objeto para obtener mejores resultados de impresión." -#: src/libslic3r/PrintConfig.cpp:137 +#: src/libslic3r/PrintConfig.cpp:170 msgid "Optimize travel moves in order to minimize the crossing of perimeters. This is mostly useful with Bowden extruders which suffer from oozing. This feature slows down both the print and the G-code generation." msgstr "Optimiza los movimientos de desplazamiento para minimizar el cruce de perímetros. Esto es principalmente útil con extrusores Bowden que sufren goteo. Esta característica ralentiza tanto la impresión como la generación de código G." -#: src/slic3r/GUI/Tab.cpp:1131 +#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 +#: src/slic3r/GUI/GUI_Preview.cpp:333 +msgid "Options" +msgstr "Opciones" + +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Options for support material and raft" msgstr "Opciones de material de soporte y balsa" -#: src/slic3r/GUI/DoubleSlider.cpp:989 +#: src/slic3r/GUI/Mouse3DController.cpp:315 +msgid "Options:" +msgstr "Opciones:" + +#: src/slic3r/GUI/DoubleSlider.cpp:1112 msgid "or press \"+\" key" msgstr "o presiona la tecla \"+\"" -#: src/slic3r/GUI/Plater.cpp:2892 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:74 msgid "Orientation found." msgstr "Orientación encontrada." -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:73 msgid "Orientation search canceled." msgstr "Búsqueda de orientación cancelada." -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "Origin" msgstr "Origen" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1557 msgid "Other" msgstr "Otro" -#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:2206 msgid "Other layers" msgstr "Otras capas" -#: src/slic3r/GUI/ConfigWizard.cpp:856 +#: src/slic3r/GUI/ConfigWizard.cpp:1222 msgid "Other Vendors" msgstr "Otras Marcas" -#: src/slic3r/GUI/Tab.cpp:1238 src/slic3r/GUI/Tab.cpp:3666 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 msgid "Output file" msgstr "Archivo de salida" -#: src/libslic3r/PrintConfig.cpp:3493 +#: src/libslic3r/PrintConfig.cpp:3692 msgid "Output File" msgstr "Archivo de salida" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1471 msgid "Output filename format" msgstr "Formato de nombre de salida" -#: src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3580 msgid "Output Model Info" msgstr "Información del modelo de salida" -#: src/slic3r/GUI/Tab.cpp:1230 src/slic3r/GUI/Tab.cpp:3665 +#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 msgid "Output options" msgstr "Opciones de salida" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/libslic3r/ExtrusionEntity.cpp:340 msgid "Overhang perimeter" msgstr "Perímetro de voladizos" -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Overhang threshold" msgstr "Umbral de voladizos" -#: src/slic3r/GUI/Tab.cpp:1215 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Overlap" msgstr "Superposición" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "P&rint Settings Tab" msgstr "Configu&ración de Impresión" -#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:625 -#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3636 -#: src/slic3r/GUI/Tab.cpp:3637 src/libslic3r/PrintConfig.cpp:2781 -#: src/libslic3r/PrintConfig.cpp:2788 src/libslic3r/PrintConfig.cpp:2802 -#: src/libslic3r/PrintConfig.cpp:2813 src/libslic3r/PrintConfig.cpp:2823 -#: src/libslic3r/PrintConfig.cpp:2845 src/libslic3r/PrintConfig.cpp:2856 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:2870 -#: src/libslic3r/PrintConfig.cpp:2881 src/libslic3r/PrintConfig.cpp:2890 -#: src/libslic3r/PrintConfig.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 +#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 +#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 msgid "Pad" msgstr "Pad" @@ -5208,150 +6061,186 @@ msgstr "Pad" msgid "Pad and Support" msgstr "Pad y soportes" -#: src/libslic3r/PrintConfig.cpp:2855 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 msgid "Pad around object" msgstr "Pad alrededor del objeto" -#: src/libslic3r/PrintConfig.cpp:2862 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "Pad around object everywhere" msgstr "Pad alrededor del objeto en todos lados" -#: src/libslic3r/PrintConfig.cpp:2811 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Pad brim size" msgstr "Tamaño del borde del pad" -#: src/libslic3r/SLA/Pad.cpp:691 +#: src/libslic3r/SLA/Pad.cpp:532 msgid "Pad brim size is too small for the current configuration." msgstr "El tamaño del borde del pad es demasiado pequeño para la configuración actual." -#: src/libslic3r/PrintConfig.cpp:2898 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Pad object connector penetration" msgstr "Penetración del conector del objeto al Pad" -#: src/libslic3r/PrintConfig.cpp:2880 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector stride" msgstr "Paso del conector del objeto al Pad" -#: src/libslic3r/PrintConfig.cpp:2889 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector width" msgstr "Anchura del conector del pad al objeto" -#: src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:3033 msgid "Pad object gap" msgstr "Espacio del pad con el objeto" -#: src/libslic3r/PrintConfig.cpp:2797 +#: src/libslic3r/PrintConfig.cpp:2961 msgid "Pad wall height" msgstr "Altura de la pared del pad" -#: src/libslic3r/PrintConfig.cpp:2844 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Pad wall slope" msgstr "Pendiente de la pared del pad" -#: src/libslic3r/PrintConfig.cpp:2787 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Pad wall thickness" msgstr "Espesor de la pared del pad" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Page Down" msgstr "Page Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Page Up" msgstr "Page Up" -#: src/slic3r/GUI/Field.cpp:139 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 +msgid "Paint-on supports" +msgstr "Soportes que se pintan" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:178 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:159 +msgid "Paints all facets inside, regardless of their orientation." +msgstr "Pinta todas las caras del interior, independientemente de su orientación." + +#: src/slic3r/GUI/Field.cpp:187 msgid "parameter name" msgstr "nombre del parámetro" -#: src/slic3r/GUI/Field.cpp:243 +#: src/slic3r/GUI/Field.cpp:291 msgid "Parameter validation" msgstr "Validación de parámetros" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Part" msgstr "Pieza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2494 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 msgid "Part manipulation" msgstr "Manipulación de piezas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2483 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 msgid "Part Settings to modify" msgstr "Configuraciones de piezas para modificar" -#: src/slic3r/GUI/GLCanvas3D.cpp:4514 +#: src/libslic3r/PrintConfig.cpp:138 +msgid "Password" +msgstr "Contraseña" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4880 msgid "Paste" msgstr "Pegar" -#: src/slic3r/GUI/MainFrame.cpp:592 +#: src/slic3r/GUI/MainFrame.cpp:1198 msgid "Paste clipboard" msgstr "Pegar portapapeles" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Paste from clipboard" msgstr "Pegar desde el portapapeles" -#: src/slic3r/GUI/Plater.cpp:5606 +#: src/slic3r/GUI/Plater.cpp:5803 msgid "Paste From Clipboard" msgstr "Pegar Desde Portapapeles" -#: src/libslic3r/PrintConfig.cpp:2002 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Pattern" msgstr "Patrón" -#: src/libslic3r/PrintConfig.cpp:1891 +#: src/libslic3r/PrintConfig.cpp:2033 msgid "Pattern angle" msgstr "Ángulo del patrón" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Pattern spacing" msgstr "Espaciado entre patrones" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "Pattern used to generate support material." msgstr "Patrón utilizado para generar material de soporte." -#: src/slic3r/GUI/Plater.cpp:1261 +#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 +#: src/slic3r/GUI/Plater.cpp:1199 msgid "Pause" msgstr "Pausa" -#: src/slic3r/GUI/DoubleSlider.cpp:1009 +#: src/slic3r/GUI/DoubleSlider.cpp:1133 msgid "Pause print (\"%1%\")" msgstr "Pausar impresión (\"%1%\")" -#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 -#: src/slic3r/GUI/GLCanvas3D.cpp:982 +#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +msgid "Pause Print G-code" +msgstr "Pausar Código G de Impresión" + +#: src/slic3r/GUI/GLCanvas3D.cpp:940 src/slic3r/GUI/GLCanvas3D.cpp:949 +#: src/slic3r/GUI/GLCanvas3D.cpp:988 msgid "Pause print or custom G-code" msgstr "Pausar impresión o código G personalizado" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 +#: src/libslic3r/PrintConfig.cpp:1147 +msgid "Percent of a flow rate relative to object's normal layer height." +msgstr "Porcentaje de caudal relativo a la altura normal de la capa del objeto." + +#: src/slic3r/GUI/GCodeViewer.cpp:2233 +msgid "Percentage" +msgstr "Porcentaje" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 msgid "Perform cut" msgstr "Realizar corte" -#: src/libslic3r/PrintConfig.cpp:2927 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Performance vs accuracy of calculation. Lower values may produce unwanted artifacts." msgstr "Rendimiento vs precisión de cálculo. Los valores más bajos pueden producir artefactos no deseados." -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Perimeter" msgstr "Perímetro" -#: src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Perimeter extruder" msgstr "Extrusor para perímetros" -#: src/slic3r/GUI/PresetHints.cpp:165 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "perímetros" -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 -#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 msgid "Perimeters" msgstr "Perímetros" -#: src/slic3r/GUI/ConfigWizard.cpp:860 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +msgid "Physical Printer" +msgstr "Impresora Física" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:789 +#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +msgid "Physical printers" +msgstr "Impresoras físicas" + +#: src/slic3r/GUI/ConfigWizard.cpp:1226 #, c-format msgid "Pick another vendor supported by %s" msgstr "Elije otro proveedor compatible con% s" @@ -5360,126 +6249,148 @@ msgstr "Elije otro proveedor compatible con% s" msgid "Picture sizes to be stored into a .gcode and .sl1 files" msgstr "Tamaños de imagen para almacenar en un archivo .gcode y .sl1" -#: src/libslic3r/PrintConfig.cpp:2681 +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "Pillar connection mode" +msgstr "Modo de conexión del pilar" + +#: src/libslic3r/PrintConfig.cpp:2791 +msgid "Pillar diameter" +msgstr "Diámetro del pilar" + +#: src/libslic3r/PrintConfig.cpp:2845 msgid "Pillar widening factor" msgstr "Factor de ensanchamiento del pilar" -#: src/slic3r/GUI/ConfigManipulation.cpp:330 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "El diámetro de la cabeza del pin debe ser menor que el diámetro del pilar." -#: src/slic3r/GUI/DoubleSlider.cpp:79 +#: src/libslic3r/PrintConfig.cpp:2763 +msgid "Pinhead front diameter" +msgstr "Diámetro frontal de la cabeza" + +#: src/libslic3r/PrintConfig.cpp:2781 +msgid "Pinhead width" +msgstr "Ancho de la cabeza" + +#: src/slic3r/GUI/DoubleSlider.cpp:110 msgid "Place bearings in slots and resume printing" msgstr "Coloca los rodamientos en las ranuras y sigue imprimiendo" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 msgid "Place on face" msgstr "Colocar en la cara" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Plater" msgstr "Plataforma" -#: src/slic3r/GUI/GUI_App.cpp:1085 +#: src/slic3r/GUI/GUI_App.cpp:1877 msgid "Please check and fix your object list." msgstr "Por favor comprueba y soluciona tu lista de objetos." -#: src/slic3r/GUI/Plater.cpp:2312 src/slic3r/GUI/Tab.cpp:2959 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2255 +#: src/slic3r/GUI/Tab.cpp:3188 msgid "Please check your object list before preset changing." msgstr "Por favor comprueba tu lista de objetos antes de cambiar los ajustes iniciales." -#: src/slic3r/GUI/Plater.cpp:3286 +#: src/slic3r/GUI/Plater.cpp:3089 msgid "Please select the file to reload" msgstr "Por favor selecciona el archivo a volver a cargar" -#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 +#: src/slic3r/GUI/AboutDialog.cpp:317 msgid "Portions copyright" msgstr "Porciones del copyright" -#: src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2543 msgid "Portrait" msgstr "Retrato" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:223 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:505 msgid "Position" msgstr "Posición" -#: src/slic3r/GUI/Tab.cpp:2367 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Position (for multi-extruder printers)" msgstr "Posición (para impresoras con múltiples extrusores )" -#: src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1731 msgid "Position of perimeters starting points." msgstr "Posición de los puntos de inicio del perímetro." -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Position X" msgstr "Posición X" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Position Y" msgstr "Posición Y" -#: src/slic3r/GUI/Tab.cpp:1245 src/libslic3r/PrintConfig.cpp:1453 +#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 msgid "Post-processing scripts" msgstr "Scripts de postprocesamiento" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Pre&view" msgstr "Pre&visualizar" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Preferences.cpp:12 msgid "Preferences" msgstr "Preferencias" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Preferred direction of the seam" msgstr "Dirección preferida de la costura" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam - jitter" msgstr "Dirección preferida de la unión - jitter" -#: src/libslic3r/PrintObject.cpp:255 +#: src/libslic3r/PrintObject.cpp:261 msgid "Preparing infill" msgstr "Preparando relleno" -#: src/slic3r/GUI/Tab.cpp:2920 -#, c-format -msgid "Preset (%s)" -msgstr "Ajuste inicial (%s)" +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" +msgstr "Preparando pestañas de configuración" -#: src/slic3r/GUI/Tab.cpp:3082 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 +msgid "Preset \"%1%\" has the following unsaved changes:" +msgstr "El ajuste preestablecido \"%1%\" tiene los siguientes cambios sin guardar:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1014 +msgid "Preset \"%1%\" is not compatible with the new print profile and it has the following unsaved changes:" +msgstr "El ajuste preestablecido \"%1%\" no es compatible con el nuevo perfil de impresión y tiene los siguientes cambios sin guardar:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1013 +msgid "Preset \"%1%\" is not compatible with the new printer profile and it has the following unsaved changes:" +msgstr "El ajuste preestablecido \"%1%\" no es compatible con el nuevo perfil de impresora y tiene los siguientes cambios sin guardar:" + +#: src/slic3r/GUI/SavePresetDialog.cpp:136 +msgid "Preset with name \"%1%\" already exists and is imcopatible with selected printer." +msgstr "El ajuste predeterminado con el nombre \"%1%\" ya existe y no es compatible con la impresora seleccionada." + +#: src/slic3r/GUI/SavePresetDialog.cpp:148 msgid "Preset with name \"%1%\" already exists." msgstr "Ya existe un preset con el nombre \"% 1%\"." -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/SavePresetDialog.cpp:219 msgctxt "PresetName" msgid "Copy" msgstr "Copiar" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Presionar para activar el rectángulo de deselección" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "Presiona para activar la escala de una dirección en la escala Gizmo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Press to activate selection rectangle" msgstr "Presionar para activar el rectángulo de selección" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 -msgid "" -"Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\n" -"selected objects around their own center" -msgstr "" -"Presionar para escalar (en escalar Gizmo) o rotar(en rotar Gizmo)\n" -"objetos seleccionados alrededor de su propio centro" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 msgid "" "Press to select multiple objects\n" "or move multiple objects with mouse" @@ -5487,164 +6398,189 @@ msgstr "" "Presiona para seleccionar objetos múltiples\n" "o mover objetos múltiples con el ratón" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -#, no-c-format +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 msgid "" -"Press to snap by 5% in Gizmo scale\n" -"or to snap by 1mm in Gizmo move" +"Press to speed up 5 times while moving thumb\n" +"with arrow keys or mouse wheel" msgstr "" -"Presiona para ajustar un 5% en escala Gizmo\n" -"o para ajustar cada 1mm en mover Gizmo" +"Presiona para acelerar 5 veces mientras mueves el pulgar\n" +"con teclas de flecha o rueda del ratón" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4105 -#: src/slic3r/GUI/Tab.cpp:2390 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:2559 msgid "Preview" msgstr "Previsualización" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 msgid "Preview hollowed and drilled model" msgstr "Vista preliminar del modelo con su interior vaciado y taladrado" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid "Previously sliced file (" msgstr "Archivo anterior laminado (" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Prime all printing extruders" msgstr "Cebar todos los extrusores de impresión" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1521 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 msgid "print" msgstr "imprimir" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +msgid "Print" +msgstr "Imprimir" + +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Print &Host Upload Queue" msgstr "Cola de subida al &host de impresión" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:507 msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." msgstr "Imprimir perímetros de contorno desde el más externo hasta el más interno en lugar del orden inverso predeterminado." -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Print Diameters" msgstr "Diámetros de impresión" -#: src/slic3r/GUI/Tab.cpp:1944 src/slic3r/GUI/Tab.cpp:2123 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 msgid "Print Host upload" msgstr "Subida al host de impresión" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "Cola de subida al host de impresión" -#: src/slic3r/GUI/DoubleSlider.cpp:970 +#: src/slic3r/GUI/DoubleSlider.cpp:1093 msgid "Print mode" msgstr "Modo de impresión" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 +#: src/slic3r/GUI/GCodeViewer.cpp:2579 src/slic3r/GUI/GUI_Preview.cpp:1476 +msgid "Print pauses" +msgstr "Pausas de impresión" + +#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 msgid "Print Settings" msgstr "Configuración de Impresión" -#: src/slic3r/GUI/Plater.cpp:815 +#: src/slic3r/GUI/Plater.cpp:690 msgid "Print settings" msgstr "Configuración de impresión" -#: src/slic3r/GUI/Tab.cpp:1478 +#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Print Settings Tab" +msgstr "Pestaña Ajustes Impresión" + +#: src/slic3r/GUI/Tab.cpp:1824 msgid "Print speed override" msgstr "Anular la velocidad de impresión" -#: src/libslic3r/GCode.cpp:638 +#: src/libslic3r/GCode.cpp:623 msgid "Print z" msgstr "Imprimir z" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Print&er Settings Tab" msgstr "Configuración de Impr&esión" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Printable" msgstr "Imprimible" -#: src/slic3r/GUI/Plater.cpp:819 +#: src/slic3r/GUI/Plater.cpp:694 msgid "Printer" msgstr "Impresora" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1525 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 msgid "printer" msgstr "impresora" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 msgid "Printer absolute correction" msgstr "Corrección absoluta de la impresora" -#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 msgid "Printer gamma correction" msgstr "Corrección gamma de la impresora" -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1294 msgid "printer model" msgstr "modelo de impresora" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Printer notes" msgstr "Notas de la impresora" -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 -#: src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:144 +msgid "Printer preset name" +msgstr "Nombre predeterminado de la impresora" + +#: src/libslic3r/PrintConfig.cpp:2574 src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2576 msgid "Printer scaling correction" msgstr "Corrección de escala de la impresora" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:453 msgid "Printer Settings" msgstr "Configuración de la Impresora" +#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +msgid "Printer Settings Tab" +msgstr "Pestaña Ajustes Impresora" + #: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "Tecnología de la impresora" -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "Printer type" msgstr "Tipo de impresora" -#: src/libslic3r/PrintConfig.cpp:1487 +#: src/libslic3r/PrintConfig.cpp:1595 msgid "Printer variant" msgstr "Modelo de impresora" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "Printer vendor" msgstr "Fabricante de la impresora" -#: src/libslic3r/Print.cpp:1388 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +msgid "Printer with name \"%1%\" already exists." +msgstr "La impresora con nombre \"%1%\" ya existe." + +#: src/slic3r/GUI/ConfigWizard.cpp:587 +msgid "Printer:" +msgstr "Impresora:" + +#: src/libslic3r/Print.cpp:1414 msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." msgstr "Imprimir con múltiples extrusoras de diferentes diámetros de boquilla. Si el soporte debe imprimirse con la extrusora actual (support_material_extruder == 0 o support_material_interface_extruder == 0), todas las boquillas deben ser del mismo diámetro." #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:849 +#: src/slic3r/GUI/MainFrame.cpp:1550 #, c-format msgid "Processing %s" msgstr "Procesando %s" -#: src/slic3r/GUI/Plater.cpp:2283 -#, c-format -msgid "Processing input file %s" -msgstr "Procesando el archivo de entrada %s" - -#: src/libslic3r/PrintObject.cpp:108 +#: src/libslic3r/PrintObject.cpp:114 msgid "Processing triangulated mesh" msgstr "Procesando malla triangulada" -#: src/slic3r/GUI/Tab.cpp:1259 src/slic3r/GUI/Tab.cpp:1549 -#: src/slic3r/GUI/Tab.cpp:2020 src/slic3r/GUI/Tab.cpp:2136 -#: src/slic3r/GUI/Tab.cpp:3544 src/slic3r/GUI/Tab.cpp:3672 +#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 +#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 msgid "Profile dependencies" msgstr "Dependencias de perfil" -#: src/slic3r/GUI/ConfigWizard.cpp:566 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Profile:" msgstr "Perfil:" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 msgid "Progress" msgstr "Progreso" @@ -5652,23 +6588,35 @@ msgstr "Progreso" msgid "Progress:" msgstr "Progreso:" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Prusa 3D &Drivers" msgstr "Controladores de Prusa 3&D" -#: src/slic3r/GUI/ConfigWizard.cpp:1995 +#: src/slic3r/GUI/ConfigWizard.cpp:2506 msgid "Prusa FFF Technology Printers" msgstr "Impresoras Prusa de tecnología FFF" -#: src/slic3r/GUI/ConfigWizard.cpp:1998 +#: src/slic3r/GUI/ConfigWizard.cpp:2509 msgid "Prusa MSLA Technology Printers" msgstr "Impresoras Prusa de tecnología MSLA" -#: src/slic3r/GUI/AboutDialog.cpp:260 +#: src/slic3r/Utils/Http.cpp:78 +msgid "PrusaSlicer detected system SSL certificate store in: %1%" +msgstr "PrusaSlicer detectó el almacenamiento de certificados SSL del sistema en: %1%" + +#: src/slic3r/GUI/GUI_Init.cpp:85 src/slic3r/GUI/GUI_Init.cpp:88 +msgid "PrusaSlicer GUI initialization failed" +msgstr "Hubo un error al abrir el GUI de PrusaSlicer" + +#: src/slic3r/GUI/AboutDialog.cpp:285 msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "PrusaSlicer está basado en Slic3r de Alessandro Ranellucci y la comunidad RepRap." -#: src/slic3r/GUI/GLCanvas3DManager.cpp:284 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 +msgid "PrusaSlicer is closing: Unsaved Changes" +msgstr "PrusaSlicer se está cerrando: Cambios no guardados" + +#: src/slic3r/GUI/OpenGLManager.cpp:259 #, c-format msgid "" "PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" @@ -5681,7 +6629,11 @@ msgstr "" msgid "PrusaSlicer version" msgstr "Versión PrusaSlicer" -#: src/slic3r/GUI/ConfigWizard.cpp:815 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:662 +msgid "PrusaSlicer will remember your action." +msgstr "PrusaSlicer recordará tu acción." + +#: src/slic3r/GUI/ConfigWizard.cpp:1174 msgid "" "PrusaSlicer's user interfaces comes in three variants:\n" "Simple, Advanced, and Expert.\n" @@ -5691,64 +6643,80 @@ msgstr "" "Simple, avanzado y experto.\n" "El modo Simple muestra solo las configuraciones usadas con más frecuencia relevantes para la impresión 3D normal. Los otros dos ofrecen ajustes progresivamente más sofisticados, son adecuados para usuarios avanzados y expertos, respectivamente." -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +msgid "PrusaSlicer: Don't ask me again" +msgstr "PrusaSlicer: No me vuelvas a preguntar" + +#: src/libslic3r/PrintConfig.cpp:2397 msgid "Purging after toolchange will done inside this object's infills. This lowers the amount of waste but may result in longer print time due to additional travel moves." msgstr "La purga después del cambio de herramientas se realizará dentro de los rellenos de este objeto. Esto reduce la cantidad de desperdicio, pero puede resultar en un tiempo de impresión más largo debido a movimientos de viaje adicionales." -#: src/slic3r/GUI/Plater.cpp:544 +#: src/slic3r/GUI/Plater.cpp:410 msgid "Purging volumes" msgstr "Volúmenes de purga" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "Purging volumes - load/unload volumes" msgstr "Volumen de purga - volumen de carga/descarga" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "Purging volumes - matrix" msgstr "Volúmenes de purga - matriz" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:1201 +msgid "Purpose of Machine Limits" +msgstr "Propósito de los Límites Máquina" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 msgid "Quality" msgstr "Calidad" -#: src/slic3r/GUI/Tab.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:1402 msgid "Quality (slower slicing)" msgstr "Calidad (laminado más lento)" -#: src/slic3r/GUI/GLCanvas3D.cpp:273 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Quality / Speed" msgstr "Calidad / Velocidad" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1182 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1530 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1536 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1849 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 +msgid "Quick" +msgstr "Rápido" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1306 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1661 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1667 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2008 #, c-format msgid "Quick Add Settings (%s)" msgstr "Añadir ajustes rápidos (%s)" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Quick Slice" msgstr "Laminado rápido" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Quick Slice and Save As" msgstr "Laminado rápido y Guardar como" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 #, c-format msgid "Quit %s" msgstr "Cerrar %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Quit, I will move my data now" +msgstr "Termino, moveré mis datos ahora" + +#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" msgstr "Radio" -#: src/slic3r/GUI/Tab.cpp:1127 +#: src/slic3r/GUI/Tab.cpp:1456 msgid "Raft" msgstr "Balsa" -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Raft layers" msgstr "Capas de balsa" @@ -5774,27 +6742,27 @@ msgstr "Espaciado de la linea de empuje" msgid "Ramming line width" msgstr "Ancho de la linea de empuje" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:730 msgid "Ramming parameters" msgstr "Parámetros de empuje" -#: src/slic3r/GUI/Tab.cpp:1505 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Ramming settings" msgstr "Ajustes de empuje" -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "Random" msgstr "Aleatorio" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 msgid "Range" msgstr "Rango" -#: src/libslic3r/SLAPrintSteps.cpp:65 +#: src/libslic3r/SLAPrintSteps.cpp:66 msgid "Rasterizing layers" msgstr "Rastrerizando capas" -#: src/slic3r/GUI/MainFrame.cpp:596 +#: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Re&load from disk" msgstr "Recargar desde e&l disco" @@ -5806,210 +6774,243 @@ msgstr "Reconfigurar" msgid "Ready" msgstr "Listo" -#: src/slic3r/GUI/Plater.cpp:3115 +#: src/slic3r/GUI/Plater.cpp:2915 msgid "Ready to slice" msgstr "Preparado para laminar" -#: src/slic3r/GUI/MainFrame.cpp:669 src/libslic3r/PrintConfig.cpp:1632 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Rear" msgstr "Trasera" -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 msgid "Rear View" msgstr "Vista trasera" -#: src/slic3r/GUI/MainFrame.cpp:413 +#: src/slic3r/GUI/MainFrame.cpp:994 msgid "Recent projects" msgstr "Proy&ectos recientes" -#: src/slic3r/GUI/PresetHints.cpp:263 +#: src/slic3r/GUI/PresetHints.cpp:262 #, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "Espesor de pared delgada del objeto recomendado para una altura de capa %.2f y" -#: src/slic3r/GUI/PresetHints.cpp:274 +#: src/slic3r/GUI/PresetHints.cpp:273 msgid "Recommended object thin wall thickness: Not available due to excessively small extrusion width." msgstr "Espesor de pared delgada del objeto recomendada: No disponible debido al ancho de extrusión excesivamente pequeño." -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "Recommended object thin wall thickness: Not available due to invalid layer height." msgstr "Grosor recomendado de la pared del objeto recomendado: no disponible debido a la altura de capa no válida." -#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 msgid "Recreating" msgstr "Recreando" -#: src/slic3r/GUI/BedShapeDialog.cpp:73 +#: src/slic3r/GUI/BedShapeDialog.cpp:141 msgid "Rectangular" msgstr "Rectangular" -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Rectilinear" msgstr "Rectilíneo" -#: src/libslic3r/PrintConfig.cpp:2010 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Rectilinear grid" msgstr "Rejilla rectilínea" -#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 -#: src/slic3r/GUI/MainFrame.cpp:584 +#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "Redo" msgstr "Rehacer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "Rehacer %1$d Acción" msgstr[1] "Rehacer %1$d Acciones" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Redo History" msgstr "Rehacer Historia" -#: src/slic3r/GUI/Tab.cpp:1098 +#: src/slic3r/GUI/Tab.cpp:1426 msgid "Reducing printing time" msgstr "Reduciendo el tiempo de impresión" -#: src/slic3r/GUI/Plater.cpp:3452 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 +msgid "Refresh Printers" +msgstr "Actualizar lista de impresoras" + +#: src/libslic3r/PrintConfig.cpp:145 +msgid "Related printer preset name" +msgstr "Nombre predeterminado de la impresora relacionada" + +#: src/slic3r/GUI/Plater.cpp:3257 msgid "Reload all from disk" msgstr "Recargar todo desde el disco" -#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3225 -#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 +#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 msgid "Reload from disk" msgstr "Recargar desde el disco" -#: src/slic3r/GUI/Plater.cpp:3339 +#: src/slic3r/GUI/Plater.cpp:3142 msgid "Reload from:" msgstr "Recargar desde:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Reload plater from disk" msgstr "Recargar la base desde el disco" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:1203 msgid "Reload the plater from disk" msgstr "Cargar la base del disco" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:3881 msgid "Reload the selected object from disk" msgstr "Recargar el objeto seleccionado del disco" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3934 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3852 msgid "Reload the selected volumes from disk" msgstr "Vuelve a cargar los volúmenes seleccionados desde el disco" -#: src/slic3r/GUI/Preferences.cpp:39 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Remaining time" +msgstr "Tiempo restante" + +#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +msgid "Remember my choice" +msgstr "Recordar mi elección" + +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Remember output directory" msgstr "Recordar el directorio de salida" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/MainFrame.cpp:166 +msgid "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" +msgstr "Recuerda buscar actualizaciones en https://github.com/prusa3d/PrusaSlicer/releases" + +#: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "eliminar" -#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Remove" msgstr "Eliminar" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 msgid "Remove all holes" msgstr "Elimina todos los huecos" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 msgid "Remove all points" msgstr "Eliminar todos los puntos" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:35 +msgid "Remove all selection" +msgstr "Eliminar toda la selección" + +#: src/slic3r/GUI/GLCanvas3D.cpp:239 msgid "Remove detail" msgstr "Retirar detalle" -#: src/slic3r/GUI/Plater.cpp:879 -msgid "Remove device" -msgstr "Eliminar dispositivo" - #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182 msgid "Remove extruder from sequence" msgstr "Retirar extrusor de la secuencia" -#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 src/slic3r/GUI/Plater.cpp:3860 msgid "Remove instance" msgstr "Retirar una copia" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 msgid "Remove Instance of the selected object" msgstr "Retirar instancia del objeto seleccionado" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:161 msgid "Remove layer range" msgstr "Retirar rango de capas" -#: src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/Plater.cpp:3860 msgid "Remove one instance of the selected object" msgstr "Eliminar una instancia del objeto seleccionado" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:98 msgid "Remove parameter" msgstr "Eliminar parámetro" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Remove point" msgstr "Retirar punto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Remove point from selection" msgstr "Retirar punto de selección" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 msgid "Remove selected holes" msgstr "Elimina huecos seleccionados" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1371 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1218 msgid "Remove selected points" msgstr "Eliminar puntos seleccionados" -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:34 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:368 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:378 +msgid "Remove selection" +msgstr "Eliminar selección" + +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 msgid "Remove the selected object" msgstr "Eliminar el objeto seleccionado" -#: src/slic3r/GUI/ConfigWizard.cpp:453 +#: src/slic3r/GUI/ConfigWizard.cpp:456 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "Eliminar perfiles de usuario (se tomará una instantánea de antemano)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1636 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 msgid "Rename" msgstr "Renombrar" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Object" msgstr "Renombrar Objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Sub-object" msgstr "Renombrar Sub-Objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Renaming" msgstr "Renombrar" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:115 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 msgid "Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again." msgstr "El cambio de nombre del código G después de copiar en la carpeta de destino seleccionada ha fallado. La ruta actual es %1%.tmp. Intenta exportar de nuevo." -#: src/libslic3r/PrintConfig.cpp:3515 +#: src/slic3r/GUI/Preferences.cpp:255 +msgid "Render" +msgstr "Renderizar" + +#: src/libslic3r/PrintConfig.cpp:3720 msgid "Render with a software renderer" msgstr "Renderizar con un software renderizador" -#: src/libslic3r/PrintConfig.cpp:3516 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." msgstr "Render con un software de renderizado. El procesador de software MESA incluido se carga en lugar del controlador OpenGL predeterminado." -#: src/slic3r/GUI/MainFrame.cpp:911 src/libslic3r/PrintConfig.cpp:3447 +#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 msgid "Repair" msgstr "Reparar" @@ -6033,38 +7034,38 @@ msgstr "El archivo 3MF reparado no contiene ningún volumen" msgid "Repairing model by the Netfabb service" msgstr "Reparar el modelo mediante el servicio de Netfabb" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat last quick slice" msgstr "Repetir el último laminado rápido" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat Last Quick Slice" msgstr "Repetir el último laminado rápido" -#: src/slic3r/GUI/Tab.cpp:3083 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 msgid "Replace?" msgstr "¿Reemplazar?" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 msgid "Report an I&ssue" msgstr "Informar de un &problema" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 #, c-format msgid "Report an issue on %s" msgstr "Reportar un problema a %s" -#: src/slic3r/Utils/PresetUpdater.cpp:713 +#: src/slic3r/Utils/PresetUpdater.cpp:733 #, c-format msgid "requires max. %s" msgstr "requiere max. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:710 +#: src/slic3r/Utils/PresetUpdater.cpp:730 #, c-format msgid "requires min. %s" msgstr "requiere min. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:705 +#: src/slic3r/Utils/PresetUpdater.cpp:726 #, c-format msgid "requires min. %s and max. %s" msgstr "requiere un min. %s y un max. %s" @@ -6073,270 +7074,300 @@ msgstr "requiere un min. %s y un max. %s" msgid "Rescan" msgstr "Rescanear" -#: src/slic3r/GUI/Tab.cpp:1906 -msgid "Rescan serial ports" -msgstr "Vuelver a examinar los puertos serie" - -#: src/slic3r/GUI/GLCanvas3D.cpp:313 +#: src/slic3r/GUI/GLCanvas3D.cpp:299 msgid "Reset" msgstr "Reset" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1373 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 msgid "Reset clipping plane" msgstr "Restablecer plano de recorte" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:59 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:26 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 msgid "Reset direction" msgstr "Restablecer dirección" -#: src/slic3r/GUI/Plater.cpp:2723 +#: src/slic3r/GUI/Plater.cpp:2684 msgid "Reset Project" msgstr "Reiniciar Proyecto" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:372 msgid "Reset rotation" msgstr "Reiniciar rotación" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:394 msgid "Reset Rotation" msgstr "Reiniciar rotación" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:407 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409 msgid "Reset scale" msgstr "Reiniciar escala" -#: src/slic3r/GUI/GLCanvas3D.cpp:252 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 +msgid "Reset selection" +msgstr "Reiniciar selección" + +#: src/slic3r/GUI/GLCanvas3D.cpp:243 msgid "Reset to base" msgstr "Reiniciar a la base" -#: src/slic3r/GUI/Tab.cpp:2394 +#: src/slic3r/GUI/Tab.cpp:2564 msgid "Reset to Filament Color" msgstr "Reiniciar Filament Color" -#: src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "Resolution" msgstr "Resolución" -#: src/libslic3r/PrintConfig.cpp:1529 +#: src/libslic3r/PrintConfig.cpp:1637 msgid "Retract amount before wipe" msgstr "Retracta cantidad antes de limpiar" -#: src/libslic3r/PrintConfig.cpp:1537 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Retract on layer change" msgstr "Retraer en el cambio de capa" -#: src/slic3r/GUI/Tab.cpp:1324 src/slic3r/GUI/Tab.cpp:1383 -#: src/slic3r/GUI/Tab.cpp:2370 +#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 +#: src/slic3r/GUI/Tab.cpp:2539 msgid "Retraction" msgstr "Retracción" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "Retraction is not triggered when travel moves are shorter than this length." msgstr "La retracción no se activa cuando los movimientos de desplazamiento son más cortos que esta longitud." -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Retraction Length" msgstr "Longitud de retracción" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Retraction Length (Toolchange)" msgstr "Longitud de retracción (cambio de herramienta)" -#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 msgid "Retraction Speed" msgstr "Velocidad de retracción" -#: src/slic3r/GUI/Tab.cpp:2386 +#: src/slic3r/GUI/Tab.cpp:2555 msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" msgstr "Retracción cuando la herramienta está desactivada (configuraciones avanzadas para configuraciones de extrusores múltiples )" -#: src/slic3r/GUI/GUI_Preview.cpp:254 +#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:1472 msgid "Retractions" msgstr "Retracciones" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/Preferences.cpp:198 +msgid "Reverse direction of zoom with mouse wheel" +msgstr "Revertir zoom con la rueda del ratón" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +msgid "Revert conversion from imperial units" +msgstr "Revertir la conversión de unidades imperiales" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right" msgstr "Derecha" -#: src/slic3r/GUI/GUI_ObjectList.cpp:402 +#: src/slic3r/GUI/GUI_ObjectList.cpp:449 msgid "Right button click the icon to change the object printable property" msgstr "Clic con el botón derecho en el icono para cambiar la propiedad imprimible del objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:443 msgid "Right button click the icon to change the object settings" msgstr "Clic del botón derecho en el ícono para cambiar los ajustes del objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:359 +#: src/slic3r/GUI/GUI_ObjectList.cpp:406 msgid "Right button click the icon to fix STL through Netfabb" msgstr "Clic del botón derecho en el ícono para arreglar el STL a través de Netfabb" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Right click" msgstr "Click derecho" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:31 +msgid "Right mouse button" +msgstr "Botón derecho del ratón" + +#: src/slic3r/GUI/GLCanvas3D.cpp:237 msgid "Right mouse button:" msgstr "Botón derecho del ratón:" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right View" msgstr "Vista derecha" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 -#: src/libslic3r/PrintConfig.cpp:3451 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:527 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:546 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Rotate" msgstr "Girar" -#: src/libslic3r/PrintConfig.cpp:3456 +#: src/libslic3r/PrintConfig.cpp:3655 msgid "Rotate around X" msgstr "Rotar alrededor del eje X" -#: src/libslic3r/PrintConfig.cpp:3461 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Rotate around Y" msgstr "Rotar alrededor del eje Y" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 msgid "Rotate lower part upwards" msgstr "Poner patas arriba" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Rotate selection 45 degrees CCW" msgstr "Gira la selección 45 grados en sentido antihorario" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Rotate selection 45 degrees CW" msgstr "Gira la selección 45 grados en sentido horario" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 -#: src/slic3r/GUI/Mouse3DController.cpp:304 -#: src/slic3r/GUI/Mouse3DController.cpp:321 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:309 msgid "Rotation" msgstr "Rotación" -#: src/libslic3r/PrintConfig.cpp:3457 +#: src/libslic3r/PrintConfig.cpp:3656 msgid "Rotation angle around the X axis in degrees." msgstr "Ángulo de rotación alrededor del eje X en grados." -#: src/libslic3r/PrintConfig.cpp:3462 +#: src/libslic3r/PrintConfig.cpp:3661 msgid "Rotation angle around the Y axis in degrees." msgstr "Ángulo de rotación alrededor del eje Y en grados." -#: src/libslic3r/PrintConfig.cpp:3452 +#: src/libslic3r/PrintConfig.cpp:3651 msgid "Rotation angle around the Z axis in degrees." msgstr "Ángulo de rotación alrededor del eje Z en grados." -#: src/slic3r/GUI/GUI_App.cpp:797 +#: src/slic3r/GUI/GUI_App.cpp:1474 #, c-format msgid "Run %s" msgstr "Ejecutar %s" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:128 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:478 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 msgid "Running post-processing scripts" msgstr "Ejecutando scripts de post-procesamiento" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 -#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 -#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 +#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 +#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 +#: src/libslic3r/PrintConfig.cpp:2709 msgid "s" msgstr "$" -#: src/slic3r/GUI/MainFrame.cpp:481 src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end G-code" msgstr "&Enviar código G" -#: src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end to print" msgstr "E&nviar para imprimir" -#. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3417 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:642 +msgid "Save" +msgstr "Guardar" + +#: src/slic3r/GUI/SavePresetDialog.cpp:72 #, c-format msgid "Save %s as:" msgstr "Guardar %s como:" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 #, c-format msgid "Save %s file as:" msgstr "Guardar archivo %s como:" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1046 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Save changes?" msgstr "¿Guardar cambios?" -#: src/libslic3r/PrintConfig.cpp:3386 +#: src/libslic3r/PrintConfig.cpp:3585 msgid "Save config file" msgstr "Guardar archivo de configuración" -#: src/slic3r/GUI/MainFrame.cpp:925 +#: src/slic3r/GUI/MainFrame.cpp:1626 msgid "Save configuration as:" msgstr "Guardar la configuración como:" -#: src/libslic3r/PrintConfig.cpp:3387 +#: src/libslic3r/PrintConfig.cpp:3586 msgid "Save configuration to the specified file." msgstr "Guarda la configuración al archivo especificado." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:133 +#: src/slic3r/GUI/Tab.cpp:203 #, c-format msgid "Save current %s" msgstr "Guardar lo actual %s" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "Save current project file" msgstr "Guardar el proyecto actual como" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save current project file as" msgstr "Guardar archivo de proyecto actual como" -#: src/slic3r/GUI/Plater.cpp:2604 +#: src/slic3r/GUI/Plater.cpp:2566 msgid "Save file as:" msgstr "Guardar archivo como:" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save G-code file as:" msgstr "Guardar archivo Código G como:" -#: src/slic3r/GUI/MainFrame.cpp:899 +#: src/slic3r/GUI/MainFrame.cpp:1600 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Guardar archivo OBJ (menos propenso a errores de coordinación que STL) como:" -#: src/slic3r/GUI/Tab.hpp:443 +#: src/slic3r/GUI/SavePresetDialog.cpp:190 +#: src/slic3r/GUI/SavePresetDialog.cpp:196 msgid "Save preset" msgstr "Guardar ajuste inicial" -#: src/slic3r/GUI/MainFrame.cpp:980 +#: src/slic3r/GUI/MainFrame.cpp:1681 msgid "Save presets bundle as:" msgstr "Guarde el conjunto de ajustes iniciales como:" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save Project &as" msgstr "Gu&ardar proyecto como" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Save project (3mf)" msgstr "Guardar proyecto (3mf)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 msgid "Save project as (3mf)" msgstr "Guarda el proyecto como (3mf)" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save SL1 file as:" msgstr "Guardar archivo SL1 como:" -#: src/slic3r/GUI/MainFrame.cpp:838 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 +msgid "Save the selected options to preset \"%1%\"." +msgstr "Guardar las opciones seleccionadas al ajuste \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Save the selected options." +msgstr "Guardar las opciones seleccionadas." + +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "Save zip file as:" msgstr "Guardar archivo zip como:" @@ -6346,159 +7377,188 @@ msgstr "Guardar archivo zip como:" msgid "Saving mesh into the 3MF container failed." msgstr "Error al guardar la malla en el contenedor 3MF." -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 -#: src/libslic3r/PrintConfig.cpp:3466 +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:78 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:238 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:547 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "Scale" msgstr "Escalar" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "Factores de escala" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 -msgid "" -"Scale selection to fit print volume\n" -"in Gizmo scale" -msgstr "" -"Redimensiona para ajustar el volumen de impresión\n" -"en escala Gizmo" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale the selected object to fit the print volume" msgstr "Escala los objetos seleccionados para ajustarse al volumen de impresión" -#: src/libslic3r/PrintConfig.cpp:3475 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Scale to Fit" msgstr "Escalar para Adaptarse" -#: src/slic3r/GUI/Selection.cpp:939 +#: src/slic3r/GUI/Selection.cpp:988 msgid "Scale To Fit" msgstr "Escalar para Adaptarse" -#: src/libslic3r/PrintConfig.cpp:3476 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Scale to fit the given volume." msgstr "Escalar para ajustarse al volumen dado." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale to print volume" msgstr "Escalar al volumen de impresión" -#: src/libslic3r/PrintConfig.cpp:3467 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scaling factor or percentage." msgstr "Factor de escalado o porcentaje." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:505 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Subida planificada a `%1%`. Mira Ventana -> Sube a la cola del gestor de impresión" -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 +msgid "Seam painting" +msgstr "Pintado de la costura" + +#: src/libslic3r/PrintConfig.cpp:1729 msgid "Seam position" msgstr "Posición de la costura" -#: src/libslic3r/PrintConfig.cpp:1642 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Seam preferred direction" msgstr "Dirección de la costura" -#: src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:1759 msgid "Seam preferred direction jitter" msgstr "Dirección preferida de unión jitter" +#: src/slic3r/GUI/MainFrame.cpp:1207 +msgid "Searc&h" +msgstr "Busca&r" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 +msgid "Search" +msgstr "Buscar" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +msgid "Search in English" +msgstr "Buscar en Inglés" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "Search in settings" +msgstr "Buscar en los ajustes" + +#: src/slic3r/GUI/Tab.cpp:222 +msgid "Search in settings [%1%]" +msgstr "Buscar en ajustes [%1%]" + #: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "Buscando dispositivos" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:41 msgid "Searching for optimal orientation" msgstr "Buscando la orientación óptima" -#: src/slic3r/GUI/GUI_App.cpp:1103 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "See more." +msgstr "Ver más." + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "See Releases page." +msgstr "Consultar página de lanzamientos." + +#: src/slic3r/GUI/GUI_App.cpp:1895 msgid "Select a gcode file:" msgstr "Seleccione un archivo gcode:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Select all objects" msgstr "Seleccionar todos los objetos" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1370 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1217 msgid "Select all points" msgstr "Seleccionar todos los puntos" -#: src/slic3r/GUI/ConfigWizard.cpp:1976 +#: src/slic3r/GUI/ConfigWizard.cpp:2487 msgid "Select all standard printers" msgstr "Selecciona todas las impresoras estándar" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 +#: src/slic3r/GUI/Plater.cpp:1422 +msgid "Select an action to apply to the file" +msgstr "Selecciona una acción para aplicar al archivo" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Seleccionar mediante rectángulo" -#: src/slic3r/GUI/MainFrame.cpp:944 src/slic3r/GUI/MainFrame.cpp:1006 +#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 msgid "Select configuration to load:" msgstr "Seleccione la configuración para cargar:" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:88 msgid "Select coordinate space, in which the transformation will be performed." msgstr "Escoge el espacio de coordenadas en el que se realizará la transformación." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3971 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 msgid "Select extruder number:" msgstr "Selecciona el número de extrusores:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Select Filament Settings Tab" msgstr "Seleccionar pestaña de configuración de filamento" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Select Plater Tab" msgstr "Seleccionar pestaña de la Base de impresión" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Select Print Settings Tab" msgstr "Seleccione la pestaña Configuración de impresión" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Select Printer Settings Tab" msgstr "Selecciona pestaña de ajustes de impresora" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1265 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 msgid "Select showing settings" msgstr "Seleccionar los ajustes mostrados" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Select the language" msgstr "Seleccione el idioma" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:108 msgid "Select the print profiles this profile is compatible with." msgstr "Seleccione los perfiles de impresión con las que este perfil es compatible." -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:102 msgid "Select the printers this profile is compatible with." msgstr "Seleccione las impresoras con las que este perfil es compatible." -#: src/slic3r/GUI/MainFrame.cpp:889 +#: src/slic3r/GUI/MainFrame.cpp:1590 msgid "Select the STL file to repair:" msgstr "Seleccione el archivo STL para reparar:" -#: src/slic3r/GUI/Preferences.cpp:237 +#: src/slic3r/GUI/Preferences.cpp:391 msgid "Select toolbar icon size in respect to the default one." msgstr "Selecciona el tamaño del icono de la barra de herramientas con respecto al predeterminado." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Select type of part" msgstr "Selecciona el tipo de pieza" -#: src/slic3r/GUI/Plater.cpp:638 +#: src/slic3r/GUI/Plater.cpp:504 msgid "Select what kind of pad do you need" msgstr "Selecciona que tipo de pad necesitas" -#: src/slic3r/GUI/Plater.cpp:498 +#: src/slic3r/GUI/Plater.cpp:364 msgid "Select what kind of support do you need" msgstr "Selecciona qué clase de soporte necesitas" -#: src/slic3r/GUI/DoubleSlider.cpp:1917 +#: src/slic3r/GUI/DoubleSlider.cpp:2135 msgid "" "Select YES if you want to delete all saved tool changes, \n" "NO if you want all tool changes switch to color changes, \n" @@ -6508,59 +7568,59 @@ msgstr "" "NO si deseas que los cambios de herramienta sean cambios de color,\n" "o CANCELAR para no hacer cambios." -#: src/slic3r/GUI/Selection.cpp:146 +#: src/slic3r/GUI/Selection.cpp:191 msgid "Selection-Add" msgstr "Selección-Añadir" -#: src/slic3r/GUI/Selection.cpp:376 +#: src/slic3r/GUI/Selection.cpp:421 msgid "Selection-Add All" msgstr "Selección-Añadir todos" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3299 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 msgid "Selection-Add from list" msgstr "Selección-Añadir de la lista" -#: src/slic3r/GUI/GLCanvas3D.cpp:6598 +#: src/slic3r/GUI/GLCanvas3D.cpp:7193 msgid "Selection-Add from rectangle" msgstr "Selección-Añadir del rectángulo" -#: src/slic3r/GUI/Selection.cpp:256 +#: src/slic3r/GUI/Selection.cpp:301 msgid "Selection-Add Instance" msgstr "Selección-Añadir Instancia" -#: src/slic3r/GUI/Selection.cpp:219 +#: src/slic3r/GUI/Selection.cpp:264 msgid "Selection-Add Object" msgstr "Selección-Añadir Objeto" -#: src/slic3r/GUI/Selection.cpp:187 +#: src/slic3r/GUI/Selection.cpp:232 msgid "Selection-Remove" msgstr "Selección-Retirar" -#: src/slic3r/GUI/Selection.cpp:402 +#: src/slic3r/GUI/Selection.cpp:447 msgid "Selection-Remove All" msgstr "Selección-Retirar todo" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3291 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 msgid "Selection-Remove from list" msgstr "Selección-Retirar de la lista" -#: src/slic3r/GUI/GLCanvas3D.cpp:6617 +#: src/slic3r/GUI/GLCanvas3D.cpp:7212 msgid "Selection-Remove from rectangle" msgstr "Selección-Retirar del rectángulo" -#: src/slic3r/GUI/Selection.cpp:275 +#: src/slic3r/GUI/Selection.cpp:320 msgid "Selection-Remove Instance" msgstr "Selección-Retirar Instancia" -#: src/slic3r/GUI/Selection.cpp:238 +#: src/slic3r/GUI/Selection.cpp:283 msgid "Selection-Remove Object" msgstr "Selección-Retirar Objeto" -#: src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Selects all objects" msgstr "Seleccionar todos los objetos" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 msgid "Send G-code" msgstr "Enviar código G" @@ -6568,29 +7628,29 @@ msgstr "Enviar código G" msgid "Send G-Code to printer host" msgstr "Enviar el código G al host de impresión" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:1072 msgid "Send to print current plate as G-code" msgstr "Enviar para imprimir la plataforma actual como código G" -#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 msgid "Send to printer" msgstr "Enviar a la impresora" -#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +#: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Sec." -#: src/slic3r/GUI/Tab.cpp:1231 +#: src/slic3r/GUI/Tab.cpp:1561 msgid "Sequential printing" msgstr "Impresión secuencial" -#: src/slic3r/GUI/Tab.cpp:1901 src/libslic3r/PrintConfig.cpp:1661 -msgid "Serial port" -msgstr "Puerto serial" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +msgid "Sequential Slider" +msgstr "Deslizador secuencial" -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Velocidad del puerto serial" +#: src/slic3r/GUI/Preferences.cpp:230 +msgid "Sequential slider applied only to top layer" +msgstr "Deslizador secuencial aplicado solo a la capa superior" #: src/slic3r/GUI/FirmwareDialog.cpp:807 msgid "Serial port:" @@ -6600,17 +7660,16 @@ msgstr "Puerto serie:" msgid "Service name" msgstr "Nombre del servicio" -#: src/slic3r/GUI/Tab.cpp:1802 src/slic3r/GUI/Tab.cpp:2046 -#: src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 msgid "Set" msgstr "Ajuste" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Object" msgstr "Establecer como Objeto Separado" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Objects" msgstr "Establecer como Objetos Separados" @@ -6618,7 +7677,7 @@ msgstr "Establecer como Objetos Separados" msgid "Set extruder change for every" msgstr "Establecer cambio de extrusor para cada" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Set extruder for selected items" msgstr "Establecer el extrusor para elementos seleccionados" @@ -6626,7 +7685,7 @@ msgstr "Establecer el extrusor para elementos seleccionados" msgid "Set extruder sequence" msgstr "Establecer secuencia extrusor" -#: src/slic3r/GUI/DoubleSlider.cpp:1532 +#: src/slic3r/GUI/DoubleSlider.cpp:1728 msgid "Set extruder sequence for the entire print" msgstr "Fija la secuencia del extrusor para toda la impresión" @@ -6634,84 +7693,84 @@ msgstr "Fija la secuencia del extrusor para toda la impresión" msgid "Set extruder(tool) sequence" msgstr "Establecer secuencia extrusor(herramienta)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Coloca el pulgar inferior en el control deslizante actual" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 msgid "Set Mirror" msgstr "Establecer Reflejo" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Set number of instances" msgstr "Establecer número de instancias" -#: src/slic3r/GUI/Plater.cpp:4756 +#: src/slic3r/GUI/Plater.cpp:4860 #, c-format msgid "Set numbers of copies to %d" msgstr "Establecer el número de copias a %d" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:828 msgid "Set Orientation" msgstr "Establecer Orientación" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:797 msgid "Set Position" msgstr "Establecer Posición" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Printable" msgstr "Establecer Imprimible" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Printable Instance" msgstr "Establecer Instancia imprimible" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:893 msgid "Set Scale" msgstr "Establecer Escala" -#: src/libslic3r/PrintConfig.cpp:2393 +#: src/libslic3r/PrintConfig.cpp:2536 msgid "Set the actual LCD display orientation inside the SLA printer. Portrait mode will flip the meaning of display width and height parameters and the output images will be rotated by 90 degrees." msgstr "Establece la orientación real de la pantalla LCD dentro de la impresora SLA. El modo retrato cambiará el significado de los parámetros de ancho y alto de la pantalla y las imágenes de salida girarán 90 grados." -#: src/slic3r/GUI/ConfigWizard.cpp:932 +#: src/slic3r/GUI/ConfigWizard.cpp:1298 msgid "Set the shape of your printer's bed." msgstr "Define la forma de la base de impresión de tu impresora." -#: src/libslic3r/PrintConfig.cpp:556 +#: src/libslic3r/PrintConfig.cpp:592 msgid "Set this to a non-zero value to allow a manual extrusion width. If left to zero, Slic3r derives extrusion widths from the nozzle diameter (see the tooltips for perimeter extrusion width, infill extrusion width etc). If expressed as percentage (for example: 230%), it will be computed over layer height." msgstr "Ajuste este valor distinto de cero para permitir un ancho de extrusión manual. Si se deja a cero, Slic3r obtiene anchuras de extrusión del diámetro de la boquilla (consulte la información sobre herramientas para conocer el ancho de extrusión, el ancho de extrusión de relleno, etc.). Si se expresa como porcentaje (por ejemplo: 230%), se computará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:448 +#: src/libslic3r/PrintConfig.cpp:484 msgid "Set this to a non-zero value to set a manual extrusion width for external perimeters. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%), it will be computed over layer height." msgstr "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para perímetros externos. Si se deja en cero, se usará el ancho de extrusión por defecto si se establece, de lo contrario se usará 1.125 x diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, 200%), se computará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:878 +#: src/libslic3r/PrintConfig.cpp:920 msgid "Set this to a non-zero value to set a manual extrusion width for first layer. You can use this to force fatter extrudates for better adhesion. If expressed as percentage (for example 120%) it will be computed over first layer height. If set to zero, it will use the default extrusion width." msgstr "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para la primera capa. Puede usar esto para forzar extrusiones más gordas para una mejor adhesión. Si se expresa como porcentaje (por ejemplo, 120%), se calculará sobre la altura de la primera capa. Si se establece en cero, usará el ancho de extrusión predeterminado." -#: src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:1873 msgid "Set this to a non-zero value to set a manual extrusion width for infill for solid surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para el relleno de superficies sólidas. Si se deja en cero, se usará el ancho de extrusión por defecto si se establece, de lo contrario se usará 1.125 x diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, 90%), se calculará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2250 msgid "Set this to a non-zero value to set a manual extrusion width for infill for top surfaces. You may want to use thinner extrudates to fill all narrow regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para el relleno de las superficies superiores. Es posible que desee utilizar extrusiones más delgadas para llenar todas las regiones estrechas y obtener un acabado más suave. Si se deja en cero, se usará el ancho de extrusión por defecto si se establece, de lo contrario se usará el diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, 90%), se calculará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:1011 +#: src/libslic3r/PrintConfig.cpp:1055 msgid "Set this to a non-zero value to set a manual extrusion width for infill. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. You may want to use fatter extrudates to speed up the infill and make your parts stronger. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para relleno. Si se deja en cero, se usará el ancho de extrusión por defecto si se establece, de lo contrario se usará 1.125 x diámetro de la boquilla. Es posible que desee extrusiones más gordas para acelerar el relleno y fortalecer sus partes. Si se expresa como porcentaje (por ejemplo, 90%), se calculará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:1419 +#: src/libslic3r/PrintConfig.cpp:1527 msgid "Set this to a non-zero value to set a manual extrusion width for perimeters. You may want to use thinner extrudates to get more accurate surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%) it will be computed over layer height." msgstr "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para los perímetros. Es posible que desee utilizar extrusiones más delgadas para obtener superficies más precisas. Si se deja en cero, se usará el ancho de extrusión por defecto si se establece, de lo contrario se usará 1.125 x diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, 200%), se calculará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:2090 msgid "Set this to a non-zero value to set a manual extrusion width for support material. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Ajuste este valor distinto de cero para establecer un ancho de extrusión manual para el material de soporte. Si se deja en cero, se usará el ancho de extrusión por defecto si se establece, de lo contrario se usará el diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, 90%), se calculará sobre la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:548 msgid "Set this to the clearance radius around your extruder. If the extruder is not centered, choose the largest value for safety. This setting is used to check for collisions and to display the graphical preview in the plater." msgstr "Ajuste este parámetro según el radio de espacio libre alrededor de su extrusor. Si el extrusor no está centrado, elija el valor más grande para seguridad. Esta configuración se utiliza para verificar colisiones y mostrar la vista previa gráfica en la bandeja." @@ -6719,23 +7778,23 @@ msgstr "Ajuste este parámetro según el radio de espacio libre alrededor de su msgid "Set this to the maximum height that can be reached by your extruder while printing." msgstr "Ajusta este valor a la altura máxima que puede alcanzar el extrusor mientras imprime." -#: src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:537 msgid "Set this to the vertical distance between your nozzle tip and (usually) the X carriage rods. In other words, this is the height of the clearance cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." msgstr "Ajuste este valor según la distancia vertical entre la punta de la boquilla y (generalmente) las barras X del carro. En otras palabras, esta es la altura del cilindro de holgura alrededor de su extrusor, y representa la profundidad máxima que el extrusor puede asomar antes de colisionar con otros objetos impresos." -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Unprintable" msgstr "Establecer No imprimible" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Unprintable Instance" msgstr "Establecer Instancia No Imprimible" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Coloca el pulgar superior en el control deslizante actual" -#: src/libslic3r/PrintConfig.cpp:3509 +#: src/libslic3r/PrintConfig.cpp:3714 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" "For example. loglevel=2 logs fatal, error and warning level messages." @@ -6743,63 +7802,74 @@ msgstr "" "Ajusta el nivel de avisos: 0:fallo, 1:error, 2:peligro, 3:info, 4:depuración, 5:traza\n" "Por ejemplo. loglevel=2 registrará mensajes de fallo, error y peligro." -#: src/slic3r/GUI/BedShapeDialog.cpp:155 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 msgid "Settings" msgstr "Ajustes" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Settings for height range" msgstr "Ajustes para rango de alturas" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/Preferences.cpp:431 +msgid "Settings in non-modal window" +msgstr "Configuración en ventana no modal" + +#: src/slic3r/GUI/ConfigManipulation.cpp:161 msgid "Shall I adjust those settings for supports?" msgstr "¿Debo ajustar esa configuración para los soportes?" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:88 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "¿Debo ajustar esa configuración para habilitar el modo Vaso Espiral?" -#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:118 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "¿Debo ajustar esa configuración para habilitar la Torre de Limpieza?" -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:209 msgid "Shall I switch to rectilinear fill pattern?" msgstr "¿Debo cambiar al patrón de relleno rectilíneo?" -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:138 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "¿Debo sincronizar las capas de soporte para habilitar la Torre de Limpieza?" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2059 +#: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 msgid "Shape" msgstr "Aspecto" -#: src/slic3r/GUI/GUI_Preview.cpp:256 +#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 msgid "Shells" msgstr "Carcasas" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:33 +msgid "Shift + Left mouse button" +msgstr "Mayús + botón izquierdo del ratón" + +#: src/slic3r/GUI/GLCanvas3D.cpp:241 msgid "Shift + Left mouse button:" msgstr "Mayús + botón izquierdo del ratón:" -#: src/slic3r/GUI/GLCanvas3D.cpp:255 +#: src/slic3r/GUI/GLCanvas3D.cpp:245 msgid "Shift + Right mouse button:" msgstr "Mayús + botón derecho del ratón:" -#: src/slic3r/GUI/GUI_Preview.cpp:231 +#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 msgid "Show" msgstr "Mostrar" -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show &Configuration Folder" msgstr "Mostrar carpeta &Configuración" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show &labels" msgstr "Muestra &etiquetas" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "Show about dialog" msgstr "Mostrar Acerca de" @@ -6807,111 +7877,131 @@ msgstr "Mostrar Acerca de" msgid "Show advanced settings" msgstr "Mostrar ajustes avanzados" -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/Preferences.cpp:120 +msgid "Show drop project dialog" +msgstr "Mostrar cuadro de diálogo al soltar proyecto" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Muestra mensaje de error" -#: src/slic3r/GUI/Preferences.cpp:95 +#: src/slic3r/GUI/Preferences.cpp:112 msgid "Show incompatible print and filament presets" msgstr "Mostrar impresiones incompatibles y ajustes iniciales de filamentos" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "Show keyboard shortcuts list" msgstr "Muestra lista de atajos de teclado" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 +msgid "Show normal mode" +msgstr "Mostrar modo normal" + +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show object/instance labels in 3D scene" msgstr "Muestra etiquetas de pieza/repetición en vista 3D" +#: src/slic3r/GUI/Preferences.cpp:213 +msgid "Show sidebar collapse/expand button" +msgstr "Mostrar botón ocultar/expandir barra lateral" + #: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show simplified settings" msgstr "Muestra los ajustes simplificados" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +msgid "Show splash screen" +msgstr "Mostrar pantalla splash" + +#: src/slic3r/GUI/GCodeViewer.cpp:2586 +msgid "Show stealth mode" +msgstr "Mostrar modo silencioso" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 msgid "Show supports" msgstr "Muestra soportes" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "Show system information" msgstr "Mostrar la información del sistema" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Show the 3D editing view" msgstr "Muestra la vista de edición 3D" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Show the 3D slices preview" msgstr "Muestra la vista 3D preliminar de las rebanadas" -#: src/slic3r/GUI/MainFrame.cpp:617 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Show the filament settings" msgstr "Mostrar los ajustes de filamento" -#: src/libslic3r/PrintConfig.cpp:3372 +#: src/libslic3r/PrintConfig.cpp:3571 msgid "Show the full list of print/G-code configuration options." msgstr "Muestra la lista completa de opciones de configuración de impresión/G-code." -#: src/libslic3r/PrintConfig.cpp:3377 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Show the full list of SLA print configuration options." msgstr "Muestra la lista completa de opciones de configuración de impresión SLA." -#: src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 msgid "Show the list of the keyboard shortcuts" msgstr "Mostrar la lista de los atajos de teclado" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Show the plater" msgstr "Mostrar la base" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Show the print settings" msgstr "Mostrar los ajustes de impresión" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Show the printer settings" msgstr "Mostrar la configuración de la impresora" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3565 msgid "Show this help." msgstr "Mostrar esta ayuda." -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show user configuration folder (datadir)" msgstr "Mostrar carpeta de configuración de usuario (datadir)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Mostrar/Ocultar cuadro de ajustes dispositivos 3Dconnexion" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -msgid "Show/Hide Legend" -msgstr "Muestra/Oculta Leyenda" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Show/Hide Legend & Estimated printing time" +msgstr "Mostrar / Ocultar leyenda y tiempo de impresión estimado" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Show/Hide object/instance labels" msgstr "Muestra/Oculta etiquetas de pieza/repetición" -#: src/slic3r/GUI/GUI_App.cpp:813 src/slic3r/GUI/wxExtensions.cpp:753 +#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "Sencillo" -#: src/slic3r/GUI/ConfigWizard.cpp:820 +#: src/slic3r/GUI/ConfigWizard.cpp:1179 msgid "Simple mode" msgstr "Modo Simple" -#: src/slic3r/GUI/GUI_App.cpp:813 +#: src/slic3r/GUI/GUI_App.cpp:1504 msgid "Simple View Mode" msgstr "Modo de visualización sencillo" -#: src/slic3r/GUI/Tab.cpp:2298 src/slic3r/GUI/Tab.cpp:2306 +#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 msgid "Single extruder MM setup" msgstr "Ajuste para MM con un solo extrusor" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "Single Extruder Multi Material" msgstr "Extrusor único de múltiples materiales" -#: src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2101 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -6921,435 +8011,463 @@ msgstr "" "y todos los extrusores deben tener el mismo diámetro.\n" "¿Deseas cambiar el diámetro de todos los extrusores al valor del diámetro del nozzle del primer extrusor?" -#: src/slic3r/GUI/Tab.cpp:2307 +#: src/slic3r/GUI/Tab.cpp:2476 msgid "Single extruder multimaterial parameters" msgstr "Parámetros multimaterial para un sólo extrusor" -#: src/slic3r/GUI/BedShapeDialog.cpp:77 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 -#: src/slic3r/GUI/Tab.cpp:2324 +#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3689 +msgid "Single instance mode" +msgstr "Modo de instancia única" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:2493 msgid "Size" msgstr "Tamaño" -#: src/slic3r/GUI/Tab.cpp:1797 src/slic3r/GUI/Tab.cpp:2041 +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 msgid "Size and coordinates" msgstr "Tamaño y coordenadas" -#: src/slic3r/GUI/BedShapeDialog.cpp:78 +#: src/slic3r/GUI/BedShapeDialog.cpp:110 msgid "Size in X and Y of the rectangular plate." msgstr "Tamaño en X e Y de la placa rectangular." -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1111 -#: src/libslic3r/ExtrusionEntity.cpp:318 +#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 msgid "Skirt" msgstr "Falda" -#: src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Skirt and brim" msgstr "Falda y balsa" -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "Skirt height" msgstr "Altura de la falda" -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Skirt Loops" msgstr "Vueltas de la falda" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1334 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1181 msgid "SLA gizmo keyboard shortcuts" msgstr "SLA gizmo atajos de teclado" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1058 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:924 msgid "SLA gizmo turned off" msgstr "Gizmo SLA apagado" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1017 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 msgid "SLA gizmo turned on" msgstr "Gizmo SLA encendido" -#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1524 +#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 msgid "SLA material" msgstr "Material SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Material Profiles Selection" msgstr "Selección Perfiles de Material SLA" -#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2613 src/libslic3r/PrintConfig.cpp:2614 msgid "SLA material type" msgstr "Tipo Material SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Materials" msgstr "Materiales SLA" -#: src/slic3r/GUI/Preset.cpp:1523 +#: src/libslic3r/Preset.cpp:1302 msgid "SLA print" msgstr "Impresión SLA" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "SLA print material notes" msgstr "Notas del material de impresión de SLA" -#: src/slic3r/GUI/Plater.cpp:817 +#: src/slic3r/GUI/Plater.cpp:692 msgid "SLA print settings" msgstr "Ajustes de impresión SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:996 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 msgid "SLA Support Points" msgstr "Puntos de soporte SLA" -#: src/slic3r/GUI/GLCanvas3D.cpp:687 -msgid "SLA supports outside the print area were detected" -msgstr "Se detectaron soportes SLA fuera del área de impresión" +#: src/slic3r/GUI/GLCanvas3D.cpp:635 +msgid "SLA supports outside the print area were detected." +msgstr "Se detectaron soportes SLA fuera del área de impresión." -#: src/slic3r/GUI/ConfigWizard.cpp:1530 +#: src/slic3r/GUI/ConfigWizard.cpp:1931 msgid "SLA Technology Printers" msgstr "Impresoras de tecnología SLA" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Slab" msgstr "Rebanada" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." msgstr "Slic3r puede subir archivos de código G a un host de impresión. Este campo debe contener el tipo de host." -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:107 msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." msgstr "Slic3r puede subir archivos de código G a un host de impresión. Este campo debe contener la clave API o la contraseña requerida para la autenticación." -#: src/libslic3r/PrintConfig.cpp:98 +#: src/libslic3r/PrintConfig.cpp:100 msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance." msgstr "Slic3r puede subir archivos G-code a un host de impresión. Este campo debería contener el nombre de equipo, dirección IP o el URL de la instancia del host." -#: src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1407 msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r no escalará la velocidad por debajo de esta velocidad." -#: src/libslic3r/PrintConfig.cpp:3359 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Slice" msgstr "Laminar" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Slice a file into a G-code" msgstr "Laminar un archivo en un código G" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Slice a file into a G-code, save as" msgstr "Laminar un archivo en un código G, guárdar como" -#: src/libslic3r/PrintConfig.cpp:87 +#: src/libslic3r/PrintConfig.cpp:89 msgid "Slice gap closing radius" msgstr "Radio de cierre de los huecos al laminar" -#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5110 +#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5237 msgid "Slice now" msgstr "Laminar ahora" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Laminar el modelo y exportar las capas de impresión de SLA como PNG." -#: src/libslic3r/PrintConfig.cpp:3354 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Slice the model and export toolpaths as G-code." msgstr "Laminar el modelo y exportar las trayectorias como código G." -#: src/libslic3r/PrintConfig.cpp:3360 +#: src/libslic3r/PrintConfig.cpp:3559 msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." msgstr "Laminar el modelo como FFF o SLA basado en el valor de configuración de printer_technology." -#: src/slic3r/GUI/Plater.cpp:216 +#: src/slic3r/GUI/Plater.cpp:222 msgid "Sliced Info" msgstr "Información del laminado" -#: src/slic3r/GUI/MainFrame.cpp:847 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5107 src/slic3r/GUI/Tab.cpp:1221 -#: src/slic3r/GUI/Tab.cpp:3662 +#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 +#: src/slic3r/GUI/Tab.cpp:4081 msgid "Slicing" msgstr "Rebanando" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:134 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:184 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 msgid "Slicing complete" msgstr "Laminado terminado" -#: src/libslic3r/SLAPrint.cpp:760 +#: src/libslic3r/SLAPrint.cpp:780 msgid "Slicing done" msgstr "Laminado terminado" -#: src/slic3r/GUI/MainFrame.cpp:874 +#: src/slic3r/GUI/MainFrame.cpp:1575 msgid "Slicing Done!" msgstr "¡Laminado realizado!" -#: src/libslic3r/SLAPrintSteps.cpp:245 +#: src/slic3r/GUI/NotificationManager.cpp:751 +msgid "Slicing finished." +msgstr "Laminado finalizado." + +#: src/libslic3r/SLAPrintSteps.cpp:247 msgid "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "El laminado se ha tenido que parar debido a un error interno: Índice de laminado inconsistente." -#: src/libslic3r/SLAPrintSteps.cpp:45 +#: src/libslic3r/SLAPrintSteps.cpp:46 msgid "Slicing model" msgstr "Rebanando modelo" -#: src/libslic3r/SLAPrintSteps.cpp:49 +#: src/libslic3r/SLAPrintSteps.cpp:50 msgid "Slicing supports" msgstr "Soportes para el laminado" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Slow" msgstr "Lenta" -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "Slow down if layer print time is below" msgstr "Disminuya la velocidad si el tiempo de impresión de la capa está por debajo" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "Slow tilt" msgstr "Inclinación lenta" -#: src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Small perimeters" msgstr "Perímetros pequeños" -#: src/slic3r/GUI/GLCanvas3D.cpp:288 +#: src/libslic3r/PrintConfig.cpp:2801 +msgid "Small pillar diameter percent" +msgstr "Porcentaje de diámetro de pilar pequeño" + +#: src/slic3r/GUI/GLCanvas3D.cpp:274 msgid "Smooth" msgstr "Suave" -#: src/slic3r/GUI/GLCanvas3D.cpp:258 +#: src/slic3r/GUI/GLCanvas3D.cpp:247 msgid "Smoothing" msgstr "Suavizado" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Snapshot name" msgstr "Nombre de la instantánea" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Software &Releases" msgstr "Lanzamientos de Softwa&re" -#: src/slic3r/GUI/PresetHints.cpp:184 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "relleno sólido" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1882 msgid "Solid infill" msgstr "Relleno sólido" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1859 msgid "Solid infill every" msgstr "Relleno sólido cada" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Solid infill extruder" msgstr "Extrusor para el relleno sólido" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill threshold area" msgstr "Área del umbral de relleno sólido" -#: src/slic3r/GUI/Tab.cpp:1065 src/libslic3r/PrintConfig.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 msgid "Solid layers" msgstr "Capas sólidas" -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:790 msgid "Soluble material" msgstr "Material soluble" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Soluble material is most likely used for a soluble support." msgstr "El material soluble se usa muy probablemente para un soporte soluble." -#: src/libslic3r/PrintConfig.cpp:937 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:735 +msgid "Some fields are too long to fit. Right mouse click reveals the full text." +msgstr "Algunos campos son demasiado largos para caber. El clic derecho del mouse muestra el texto completo." + +#: src/libslic3r/PrintConfig.cpp:981 msgid "Some G/M-code commands, including temperature control and others, are not universal. Set this option to your printer's firmware to get a compatible output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any extrusion value at all." msgstr "Algunos comandos de códigos G/M, incluidos el control de temperatura y otros, no son universales. Configura esta opción en el firmware de tu impresora para obtener una salida compatible. El tipo \"Sin extrusión\" evita que PrusaSlicer exporte ningún valor de extrusión." -#: src/slic3r/GUI/GLCanvas3D.cpp:688 -msgid "Some objects are not visible" -msgstr "Algunas piezas no son visibles" +#: src/slic3r/GUI/Plater.cpp:2309 +#, c-format +msgid "" +"Some object(s) in file %s looks like saved in inches.\n" +"Should I consider them as a saved in inches and convert them?" +msgstr "" +"Alguno(s) objetos del archivo %s parecen estar guardados en pulgadas.\n" +"¿Debería considerarlos como guardados en pulgadas y convertirlos?" -#: src/libslic3r/Print.cpp:1226 +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "Some objects are not visible." +msgstr "Algunos objetos no son visibles." + +#: src/libslic3r/Print.cpp:1252 msgid "Some objects are too close; your extruder will collide with them." msgstr "Algunos objetos están demasiado cerca; el extrusor colisionará con ellos." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1254 msgid "Some objects are too tall and cannot be printed without extruder collisions." msgstr "Algunos objetos son demasiado altos y no se pueden imprimir sin que colisione el extrusor." -#: src/libslic3r/PrintConfig.cpp:2824 +#: src/libslic3r/PrintConfig.cpp:2988 msgid "Some objects can get along with a few smaller pads instead of a single big one. This parameter defines how far the center of two smaller pads should be. If theyare closer, they will get merged into one pad." msgstr "Algunos objetos pueden llevarse bien con unas pocas pads más pequeñas en lugar de una sola grande. Este parámetro define a qué distancia debe estar el centro de dos pads más pequeñas. Si están más cerca, se fusionarán en una sola pad." -#: src/libslic3r/PrintConfig.cpp:2187 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." msgstr "Algunas impresoras o configuraciones de impresora pueden tener dificultades para imprimir con una altura de capa variable. Habilitado por defecto." -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2126 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "Espaciado entre líneas de interfaz. Establezca cero para obtener una interfaz sólida." -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:1155 +msgid "Spacing between ironing passes" +msgstr "Separación entre pasadas de alisado" + +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Spacing between support material lines." msgstr "Espaciado entre las líneas de material de soporte." -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:616 -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 -#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 msgid "Speed" msgstr "Velocidad" -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Velocidad (baudios) del puerto USB / serie para la conexión de la impresora." - -#: src/libslic3r/GCode/PreviewData.cpp:351 +#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 msgid "Speed (mm/s)" msgstr "Velocidad (mm/s)" -#: src/libslic3r/PrintConfig.cpp:920 +#: src/libslic3r/PrintConfig.cpp:964 msgid "Speed for filling small gaps using short zigzag moves. Keep this reasonably low to avoid too much shaking and resonance issues. Set zero to disable gaps filling." msgstr "Velocidad para llenar pequeños espacios usando movimientos cortos de zigzag. Mantenga esto razonablemente bajo para evitar demasiados problemas de vibración y sacudidas. Establezca cero para desactivar el llenado de huecos." -#: src/slic3r/GUI/Tab.cpp:1158 +#: src/slic3r/GUI/Tab.cpp:1488 msgid "Speed for non-print moves" msgstr "Velocidad para movimientos sin impresión" -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "Velocidad para perímetros (contornos, también conocidos como conchas verticales). Establecer a cero para auto." -#: src/slic3r/GUI/Tab.cpp:1146 +#: src/slic3r/GUI/Tab.cpp:1475 msgid "Speed for print moves" msgstr "Velocidad para movimientos de impresión" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "Speed for printing bridges." msgstr "Velocidad para imprimir puentes." -#: src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:1884 msgid "Speed for printing solid regions (top/bottom/internal horizontal shells). This can be expressed as a percentage (for example: 80%) over the default infill speed above. Set to zero for auto." msgstr "Velocidad para imprimir regiones sólidas (superior / inferior / conchas horizontales internas). Esto se puede expresar como un porcentaje (por ejemplo: 80%) sobre la velocidad de relleno predeterminada anterior. Establecer a cero para auto." -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." msgstr "Velocidad para imprimir capas de interfaz de material de soporte. Si se expresa como porcentaje (por ejemplo, 50%), se calculará sobre la velocidad del material de soporte." -#: src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Speed for printing support material." msgstr "Velocidad para imprimir material de soporte." -#: src/libslic3r/PrintConfig.cpp:1049 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "Velocidad para imprimir el relleno interno. Establecer a cero para auto." -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2262 msgid "Speed for printing top solid layers (it only applies to the uppermost external layers and not to their internal solid layers). You may want to slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." msgstr "Velocidad para imprimir capas sólidas superiores (solo se aplica a las capas externas superiores y no a sus capas sólidas internas). Es posible que desee reducir la velocidad para obtener un acabado de superficie más agradable. Esto se puede expresar como un porcentaje (por ejemplo: 80%) sobre la velocidad de relleno sólido anterior. Establecer a cero para auto." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2296 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "Velocidad para movimientos (saltos entre puntos de extrusión distantes)." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Speed of the first cooling move" msgstr "Velocidad del primer movimiento de enfriamiento" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:714 msgid "Speed of the last cooling move" msgstr "Velocidad del último movimiento de enfriamiento" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:652 msgid "Speed used at the very beginning of loading phase." msgstr "Velocidad utilizada al inicio de la fase de carga." -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Speed used for loading the filament on the wipe tower." msgstr "Velocidad empleada para cargar el filamento en la torre de limpieza." -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:660 msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." msgstr "Velocidad empleada para descargar el filamento en la torre de limpieza (no afecta a la fase inicial de la descarga, sólo después de empujar)." -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Speed used for unloading the tip of the filament immediately after ramming." msgstr "Velocidad utilizada para descargar la punta del filamento inmediatamente después del ramming." -#: src/slic3r/GUI/Mouse3DController.cpp:296 +#: src/slic3r/GUI/Mouse3DController.cpp:279 msgid "Speed:" msgstr "Velocidad:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Sphere" msgstr "Esfera" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Spiral vase" msgstr "Modo vaso" -#: src/slic3r/GUI/ConfigManipulation.cpp:90 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Spiral Vase" msgstr "Modo Vaso Espiral" -#: src/slic3r/GUI/Plater.cpp:4019 src/slic3r/GUI/Plater.cpp:4034 -#: src/slic3r/GUI/Plater.cpp:4048 src/libslic3r/PrintConfig.cpp:3471 +#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 msgid "Split" msgstr "Dividir" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:3939 msgid "Split the selected object" msgstr "Dividir el objeto seleccionado" -#: src/slic3r/GUI/Plater.cpp:4014 src/slic3r/GUI/Plater.cpp:4034 +#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 msgid "Split the selected object into individual objects" msgstr "Dividir el objeto seleccionado en objetos individuales" -#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4048 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 msgid "Split the selected object into individual sub-parts" msgstr "Dividir el objeto seleccionado en subpartes individuales" -#: src/slic3r/GUI/GLCanvas3D.cpp:4550 +#: src/slic3r/GUI/GLCanvas3D.cpp:4916 msgid "Split to objects" msgstr "Partir en varias piezas" -#: src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Split to Objects" msgstr "Partir en Varias Piezas" -#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1487 +#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" msgstr "Separar en piezas" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2274 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Split to Parts" msgstr "Separar en Piezas" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "Standard" msgstr "Estándar" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:884 msgid "Stars" msgstr "Estrellas" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "Start a new project" msgstr "Empezar un nuevo proyecto" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "Comenzar en altura" -#: src/slic3r/GUI/Tab.cpp:1528 src/slic3r/GUI/Tab.cpp:1976 -#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 msgid "Start G-code" msgstr "Comenzar el código G" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "Start new slicing process" msgstr "Comenzar un nuevo proceso de laminado" @@ -7357,7 +8475,37 @@ msgstr "Comenzar un nuevo proceso de laminado" msgid "Start printing after upload" msgstr "Empezar a imprimir después de subir" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Start the application" +msgstr "Inicia el programa" + +#: src/slic3r/GUI/GUI_App.cpp:386 +msgid "" +"Starting with %1% 2.3, configuration directory on Linux has changed (according to XDG Base Directory Specification) to \n" +"%2%.\n" +"\n" +"This directory did not exist yet (maybe you run the new version for the first time).\n" +"However, an old %1% configuration directory was detected in \n" +"%3%.\n" +"\n" +"Consider moving the contents of the old directory to the new location in order to access your profiles, etc.\n" +"Note that if you decide to downgrade %1% in future, it will use the old location again.\n" +"\n" +"What do you want to do now?" +msgstr "" +"Comenzando con %1% 2.3, el directorio de configuración en Linux ha cambiado (de acuerdo con la Especificación de directorio base de XDG) a\n" +"%2%.\n" +"\n" +"Este directorio aún no existía (tal vez ejecutes la nueva versión por primera vez).\n" +"Sin embargo, se detectó un directorio de configuración antiguo %1% en\n" +"%3%.\n" +"\n" +"Puedes mover el contenido del directorio antiguo a la nueva ubicación para acceder a tus perfiles, etc.\n" +"Ten en cuenta que si decides retroceder de versión %1% en el futuro, volverás a utilizar la ubicación anterior.\n" +"\n" +"¿Qué quieres hacer ahora?" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 msgid "Status" msgstr "Estado" @@ -7365,166 +8513,160 @@ msgstr "Estado" msgid "Status:" msgstr "Estado:" -#: src/slic3r/GUI/Tab.cpp:2209 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 msgid "Stealth" msgstr "Silencio" -#: src/slic3r/GUI/Plater.cpp:1291 +#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 msgid "stealth mode" msgstr "modo silencioso" -#: src/slic3r/GUI/Plater.cpp:4985 +#: src/slic3r/GUI/GCodeViewer.cpp:2557 +msgid "Stealth mode" +msgstr "Modo silencioso" + +#: src/slic3r/GUI/Plater.cpp:5118 #, c-format msgid "STL file exported to %s" msgstr "Archivo STL exportado a %s" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Stop at height" msgstr "Parar en altura" -#: src/slic3r/GUI/Tab.cpp:1693 src/slic3r/GUI/Tab.cpp:1928 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "¡Éxito!" -#: src/slic3r/GUI/PresetHints.cpp:203 +#: src/slic3r/GUI/Plater.cpp:2047 +#, c-format +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Desmontado con éxito. El dispositivo %s (%s) ahora se puede retirar de forma segura del ordenador." + +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "soporte" -#: src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "Support base diameter" msgstr "Diámetro de la base del soporte" -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base height" msgstr "Altura de la base del soporte" -#: src/libslic3r/PrintConfig.cpp:2711 +#: src/libslic3r/PrintConfig.cpp:2875 msgid "Support base safety distance" msgstr "Distancia de seguridad de la base de soportes" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Blocker" msgstr "Bloqueo de soporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/libslic3r/PrintConfig.cpp:895 +msgid "Support Cubic" +msgstr "Soporte Cúbico" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Enforcer" msgstr "Refuerzo de soporte" -#: src/slic3r/GUI/ConfigManipulation.cpp:163 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Support Generator" msgstr "Generador de Soportes" -#: src/slic3r/GUI/Tab.cpp:3608 +#: src/slic3r/GUI/Tab.cpp:4018 msgid "Support head" msgstr "Cabeza del soporte" -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Support head front diameter" -msgstr "Diámetro del frontal de la cabeza del soporte" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Support head penetration" -msgstr "Penetración de la cabeza del soporte" - -#: src/libslic3r/PrintConfig.cpp:2638 -msgid "Support head width" -msgstr "Ancho de la cabeza del soporte" - -#: src/slic3r/GUI/PresetHints.cpp:213 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "interfaz de soporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/GUI_Preview.cpp:246 -#: src/slic3r/GUI/Tab.cpp:1120 src/slic3r/GUI/Tab.cpp:1121 -#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 -#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 -#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 -#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 -#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 -#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 +#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:95 +#: src/slic3r/GUI/GUI_ObjectList.cpp:654 src/slic3r/GUI/GUI_Preview.cpp:311 +#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 +#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 +#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "Support material" msgstr "Material de soporte" -#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 -#: src/libslic3r/PrintConfig.cpp:1991 +#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 +#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 msgid "Support material interface" msgstr "Interfaz del material de soporte" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." msgstr "El material de soporte no se generará para voladizos cuyo ángulo de inclinación (90 ° = vertical) esté por encima del umbral dado. En otras palabras, este valor representa la pendiente más horizontal (medida desde el plano horizontal) que puede imprimir sin material de soporte. Ajuste a cero para la detección automática (recomendado)." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Support material/raft interface extruder" msgstr "Extrusor para el material de soporte o balsa" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "Support material/raft/skirt extruder" msgstr "Extrusor para el material de soporte/falda/balsa" -#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 -#: src/libslic3r/PrintConfig.cpp:2674 +#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2838 msgid "Support on build plate only" msgstr "Soporte en la base solamente" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:762 msgid "Support parameter change" msgstr "Cambio de parámetros de soporte" -#: src/slic3r/GUI/Tab.cpp:3613 +#: src/slic3r/GUI/Tab.cpp:4023 msgid "Support pillar" msgstr "Pilares de soporte" -#: src/libslic3r/PrintConfig.cpp:2658 -msgid "Support pillar connection mode" -msgstr "Modo de conexión de los pilares de soporte" - -#: src/libslic3r/PrintConfig.cpp:2648 -msgid "Support pillar diameter" -msgstr "Diámetro de los puntos de soporte" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -#: src/libslic3r/PrintConfig.cpp:2764 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/libslic3r/PrintConfig.cpp:2928 msgid "Support points density" msgstr "Densidad de los puntos de soporte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1196 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "Support points edit" msgstr "Edición de puntos de soporte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:624 -#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3604 -#: src/slic3r/GUI/Tab.cpp:3605 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 -#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2682 -#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2703 -#: src/libslic3r/PrintConfig.cpp:2712 src/libslic3r/PrintConfig.cpp:2725 -#: src/libslic3r/PrintConfig.cpp:2735 src/libslic3r/PrintConfig.cpp:2744 -#: src/libslic3r/PrintConfig.cpp:2754 src/libslic3r/PrintConfig.cpp:2765 -#: src/libslic3r/PrintConfig.cpp:2773 +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 +#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 +#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 +#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 +#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 msgid "Supports" msgstr "Soportes" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "supports and pad" msgstr "soportes y pad" -#: src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1185 msgid "Supports remaining times" msgstr "Compatible con tiempos restantes" -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports stealth mode" msgstr "Soporta modo silencioso" -#: src/slic3r/GUI/ConfigManipulation.cpp:159 +#: src/slic3r/GUI/ConfigManipulation.cpp:158 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters" @@ -7532,44 +8674,60 @@ msgstr "" "Los soportes funcionan mejor si la siguiente característica está habilitada:\n" "- Detectar perímetros con puentes" -#: src/slic3r/GUI/Preferences.cpp:87 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Suprima los ajustes iniciales \"- predeterminado -\"" -#: src/slic3r/GUI/Preferences.cpp:89 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." msgstr "Suprima los ajustes iniciales \"- predeterminado -\" en las selecciones Imprimir / Filamento / Impresora una vez que haya otros ajustes preestablecidos disponibles." -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/Mouse3DController.cpp:318 +msgid "Swap Y/Z axes" +msgstr "Alternar ejes Y/Z" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Switch between Editor/Preview" +msgstr "Cambiar entre Editor/Previsualización" + +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Switch code to Change extruder" msgstr "Cambiar código para cambiar extrusor" -#: src/slic3r/GUI/DoubleSlider.cpp:1179 +#: src/slic3r/GUI/DoubleSlider.cpp:1306 msgid "Switch code to Color change (%1%) for:" msgstr "Código para cambiar de color (%1%) para:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Switch to 3D" msgstr "Cambiar a 3D" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1376 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1223 msgid "Switch to editing mode" msgstr "Cambiar al modo edición" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Switch to Preview" msgstr "Cambiar a Previsualización" -#: src/slic3r/GUI/wxExtensions.cpp:703 +#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Switch to Settings" +msgstr "Cambiar a Ajustes" + +#: src/slic3r/GUI/wxExtensions.cpp:623 #, c-format msgid "Switch to the %s mode" msgstr "Cambiar al modo %s" -#: src/slic3r/GUI/GUI_App.cpp:882 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 +msgid "Switching Presets: Unsaved Changes" +msgstr "Cambio de ajustes preestablecidos: Cambios No guardados" + +#: src/slic3r/GUI/GUI_App.cpp:1608 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." @@ -7587,65 +8745,72 @@ msgstr "" "\n" "¿Quiere continuar?" -#: src/slic3r/GUI/Tab.cpp:1014 +#: src/slic3r/GUI/Tab.cpp:1332 msgid "symbolic profile name" msgstr "nombre perfil simbólico" -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." msgstr "Sincronizar las capas de soporte con las capas de impresión del objeto. Esto es útil con impresoras de múltiples materiales, donde el cambio de el extrusor es costoso." -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "Synchronize with object layers" msgstr "Sincronizar con capas las del objeto" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "System &Info" msgstr "&Información del Sistema" -#: src/slic3r/GUI/SysInfoDialog.cpp:78 +#: src/slic3r/GUI/SysInfoDialog.cpp:90 src/slic3r/GUI/SysInfoDialog.cpp:92 msgid "System Information" msgstr "Información del sistema" -#: src/slic3r/GUI/Preset.cpp:1109 src/slic3r/GUI/Preset.cpp:1164 -#: src/slic3r/GUI/Preset.cpp:1242 src/slic3r/GUI/Preset.cpp:1284 -#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1672 +#: src/slic3r/GUI/PresetComboBoxes.cpp:188 +#: src/slic3r/GUI/PresetComboBoxes.cpp:226 +#: src/slic3r/GUI/PresetComboBoxes.cpp:724 +#: src/slic3r/GUI/PresetComboBoxes.cpp:774 +#: src/slic3r/GUI/PresetComboBoxes.cpp:886 +#: src/slic3r/GUI/PresetComboBoxes.cpp:930 msgid "System presets" msgstr "Ajustes del sistema" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Take Configuration &Snapshot" msgstr "&Tomar una Captura de la configuración" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Taking configuration snapshot" msgstr "Haciendo una instantánea de la configuración" -#: src/slic3r/GUI/Tab.cpp:1433 src/libslic3r/PrintConfig.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:1779 msgid "Temperature" msgstr "Temperatura" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1919 msgid "Temperature difference to be applied when an extruder is not active. Enables a full-height \"sacrificial\" skirt on which the nozzles are periodically wiped." msgstr "Diferencia de temperatura que se aplicará cuando un extrusor no esté activo. ACtiva una falda \"de sacrificio\" de altura completa en la que las boquillas se limpian periódicamente." -#: src/libslic3r/PrintConfig.cpp:1803 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "Temperature variation" msgstr "Variación de temperatura" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Temperatures" msgstr "Temperaturas" -#: src/slic3r/GUI/Tab.cpp:1677 src/slic3r/GUI/Tab.cpp:1915 +#: src/slic3r/GUI/Tab.cpp:2215 +msgid "Template Custom G-code" +msgstr "Plantilla Código G Personalizado" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 msgid "Test" msgstr "Test" -#: src/slic3r/GUI/BedShapeDialog.cpp:172 +#: src/slic3r/GUI/BedShapeDialog.cpp:315 msgid "Texture" msgstr "Textura" -#: src/slic3r/GUI/ConfigManipulation.cpp:208 +#: src/slic3r/GUI/ConfigManipulation.cpp:207 msgid "The %1% infill pattern is not supposed to work at 100%% density." msgstr "Se supone que el patrón de relleno %1% no funciona a una densidad del 100%%." @@ -7663,131 +8828,148 @@ msgstr "" "No se encontró el dispositivo %s. \n" "Si el dispositivo está conectado, presione el botón Reset al lado del conector USB ..." -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1238 msgid "The current custom preset will be detached from the parent system preset." msgstr "El preajuste personalizado actual se separará del preajuste del sistema principal." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:925 msgid "" "The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" "Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" "once the rotation is embedded into the object coordinates." msgstr "El objeto que está manipulando está inclinado (los ángulos de rotación no son múltiplos de 90º). El escalado no uniforme de objetos inclinados sólo es posible en sistema de coordenadas Mundo, una vez que la rotación se ha aplicado a las coordenadas del objeto." -#: src/libslic3r/PrintConfig.cpp:2726 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "The default angle for connecting support sticks and junctions." msgstr "El ángulo por defecto para la conexión de sticks y uniones de soporte." -#: src/libslic3r/SLAPrint.cpp:631 +#: src/libslic3r/SLAPrint.cpp:645 msgid "The endings of the support pillars will be deployed on the gap between the object and the pad. 'Support base safety distance' has to be greater than the 'Pad object gap' parameter to avoid this." msgstr "Las terminaciones de los pilares de soporte se desplegarán en el espacio entre el objeto y el pad. La 'distancia de seguridad de la base de soporte' debe ser mayor que el parámetro 'Distancia entre objetos de relleno' para evitar esto." -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:525 msgid "The extruder to use (unless more specific extruder settings are specified). This value overrides perimeter and infill extruders, but not the support extruders." msgstr "La extrusora que se usa (a menos que se especifiquen configuraciones de extrusión más específicas). Este valor anula los extrusores de perímetro y relleno, pero no los extrusores de soporte." -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1047 msgid "The extruder to use when printing infill." msgstr "El extrusor que se usa cuando se imprime relleno." -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "El extrusor que se usa al imprimir perímetros y borde. El primer extrusor es 1." -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "The extruder to use when printing solid infill." msgstr "El extrusor que se usa al imprimir relleno sólido." -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:2108 msgid "The extruder to use when printing support material interface (1+, 0 to use the current extruder to minimize tool changes). This affects raft too." msgstr "La extrusora que se usa al imprimir la interfaz de material de soporte (1+, 0 para usar la extrusora actual para minimizar los cambios de herramientas). Esto también afecta a la balsa." -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." msgstr "El extrusor que se usa al imprimir material de soporte, balsa y falda (1+, 0 para usar la extrusora actual para minimizar los cambios de herramientas)." -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:763 msgid "The filament material type for use in custom G-codes." msgstr "El tipo de material de filamento para uso en códigos G personalizados." -#: src/libslic3r/PrintConfig.cpp:3494 +#: src/libslic3r/PrintConfig.cpp:3693 msgid "The file where the output will be written (if not specified, it will be based on the input file)." msgstr "El archivo donde se escribirá el resultado (si no se especifica, se basará en en archivo de entrada)." -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1195 msgid "The firmware supports stealth mode" msgstr "El firmware soporta el modo silencioso" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:122 msgid "The first layer will be shrunk in the XY plane by the configured value to compensate for the 1st layer squish aka an Elephant Foot effect." msgstr "La primera capa se contraerá en el plano XY por el valor configurado para compensar el aplatamiento de la 1ª capa, también conocido como efecto Pie de Elefante." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3457 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/SavePresetDialog.cpp:117 msgid "the following characters are not allowed:" msgstr "los siguientes caracteres no están permitidos:" -#: src/slic3r/GUI/ConfigWizard.cpp:1830 +#: src/slic3r/GUI/ConfigWizard.cpp:2257 msgid "The following FFF printer models have no filament selected:" msgstr "Los siguientes modelos de impresoras FFF no tienen filamento seleccionado:" -#: src/slic3r/GUI/ConfigWizard.cpp:1848 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1004 +msgid "The following presets were modified:" +msgstr "Los siguientes ajustes fueron modificados:" + +#: src/slic3r/GUI/ConfigWizard.cpp:2275 msgid "The following SLA printer models have no materials selected:" msgstr "Los siguientes modelos de impresoras SLA no tienen filamento seleccionado:" -#: src/slic3r/GUI/Tab.cpp:3461 +#: src/slic3r/GUI/SavePresetDialog.cpp:125 msgid "the following suffix is not allowed:" msgstr "el siguiente sufijo no está permitido:" -#: src/libslic3r/PrintConfig.cpp:2871 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "The gap between the object bottom and the generated pad in zero elevation mode." msgstr "El espacio entre la parte de debajo del objeto y el pad generado en el modo de cero elevación." -#: src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "The height of the pillar base cone" msgstr "La altura del cono de la base de un pilar" -#: src/slic3r/GUI/DoubleSlider.cpp:1922 +#: src/slic3r/GUI/DoubleSlider.cpp:2140 msgid "The last color change data was saved for a multi extruder printing with tool changes for whole print." msgstr "La información del último cambio de color se guardó para impresión con múltiples extrusores mediante cambios de herramienta para toda la impresión." -#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 msgid "The last color change data was saved for a multi extruder printing." msgstr "La información del último cambio de color se guardó para la impresión multi-extrusor." -#: src/slic3r/GUI/DoubleSlider.cpp:1899 +#: src/slic3r/GUI/DoubleSlider.cpp:2118 msgid "The last color change data was saved for a single extruder printing." msgstr "La información del último cambio de color se ha guardado para impresión con un solo extrusor." -#: src/libslic3r/PrintConfig.cpp:2745 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." msgstr "La distancia máxima entre dos pilares par que se unan entre si. Un valor cero prohibirá el encadenamiento de pilares." -#: src/libslic3r/PrintConfig.cpp:2736 +#: src/libslic3r/PrintConfig.cpp:2900 msgid "The max length of a bridge" msgstr "La longitud máxima de un puente" -#: src/libslic3r/PrintConfig.cpp:2714 +#: src/libslic3r/PrintConfig.cpp:2878 msgid "The minimum distance of the pillar base from the model in mm. Makes sense in zero elevation mode where a gap according to this parameter is inserted between the model and the pad." msgstr "La distancia mínima del modelo a la base de pilares en mm. Tiene sentido en el modo de cero elevación donde hay un hueco de acuerdo a cuando este parámetro se introduce entre el modelo y el pad." -#: src/libslic3r/PrintConfig.cpp:185 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "The name cannot be empty." +msgstr "El nombre no puede estar vacío." + +#: src/libslic3r/PrintConfig.cpp:219 msgid "The number of bottom solid layers is increased above bottom_solid_layers if necessary to satisfy minimum thickness of bottom shell." msgstr "El número de capas sólidas en la base se incrementa por encima de bottom_solid_layers si es necesario para asegurar un espesor mínimo en la pared de inferior." -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2286 msgid "The number of top solid layers is increased above top_solid_layers if necessary to satisfy minimum thickness of top shell. This is useful to prevent pillowing effect when printing with variable layer height." msgstr "El número de capas sólidas en la parte superior se incrementa sobre top_solid_layers si es necesario para satisfacer la altura mínima de la tapa superior. Esto es útil para prevenir el efecto de achatado cuando se imprime con altura de capa variable." -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/slic3r/GUI/Plater.cpp:2326 +msgid "The object appears to be saved in inches" +msgstr "La pieza parece que se guardó en pulgadas" + +#: src/libslic3r/PrintConfig.cpp:2420 msgid "The object will be grown/shrunk in the XY plane by the configured value (negative = inwards, positive = outwards). This might be useful for fine-tuning hole sizes." msgstr "El objeto se crecerá / reducirá en el plano XY por el valor configurado (negativo = hacia adentro, positivo = hacia afuera). Esto podría ser útil para ajustar el tamaño de los orificios." -#: src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1611 msgid "The object will be raised by this number of layers, and support material will be generated under it." msgstr "El objeto será elevado por este número de capas y se generará material de soporte debajo de él." -#: src/libslic3r/PrintConfig.cpp:2424 +#: src/libslic3r/PrintConfig.cpp:2803 +msgid "The percentage of smaller pillars compared to the normal pillar diameter which are used in problematic areas where a normal pilla cannot fit." +msgstr "El porcentaje de pilares más pequeños en comparación con el diámetro de pilar normal que se utilizan en áreas problemáticas donde no cabe un pilar normal." + +#: src/libslic3r/PrintConfig.cpp:2567 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -7797,39 +8979,51 @@ msgstr "" "Si el área de impresión excede el valor especificado, \n" "entonces se utilizará una inclinación lenta, de lo contrario - una inclinación rápida" -#: src/slic3r/GUI/GUI_App.cpp:932 -msgid "The presets on the following tabs were modified" -msgstr "Los presets en las siguientes pestañas fueron modificados" +#: src/slic3r/GUI/Tab.cpp:3430 +msgid "The physical printer(s) below is based on the preset, you are going to delete." +msgstr "Las siguientes impresoras físicas se basan en el ajuste preestablecido que va a eliminar." -#: src/libslic3r/PrintConfig.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:3438 +msgid "The physical printer(s) below is based only on the preset, you are going to delete." +msgstr "Las siguientes impresoras están basadas en el mismo ajuste que vas a borrar." + +#: src/slic3r/GUI/GUI_App.cpp:1676 +msgid "The preset(s) modifications are successfully saved" +msgstr "Las modificaciones de los ajustes preestablecidos se guardaron correctamente" + +#: src/libslic3r/PrintConfig.cpp:1988 msgid "The printer multiplexes filaments into a single hot end." msgstr "La impresora multiplexa los filamentos en un solo fusor." -#: src/libslic3r/Format/3mf.cpp:1630 +#: src/libslic3r/Format/3mf.cpp:1667 msgid "The selected 3mf file has been saved with a newer version of %1% and is not compatible." msgstr "El archivo 3mf seleccionado se ha guardado con una versión más reciente de %1% y no es compatible." -#: src/libslic3r/Format/AMF.cpp:934 +#: src/libslic3r/Format/AMF.cpp:955 msgid "The selected amf file has been saved with a newer version of %1% and is not compatible." msgstr "El archivo amf seleccionado se ha guardado con una versión más reciente de %1% y no es compatible." -#: src/slic3r/GUI/BedShapeDialog.cpp:513 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "The selected file" +msgstr "El archivo seleccionado" + +#: src/slic3r/GUI/BedShapeDialog.cpp:589 msgid "The selected file contains no geometry." msgstr "El archivo seleccionado no contiene geometría." -#: src/slic3r/GUI/BedShapeDialog.cpp:517 +#: src/slic3r/GUI/BedShapeDialog.cpp:593 msgid "The selected file contains several disjoint areas. This is not supported." msgstr "El archivo seleccionado contiene varias áreas disjuntas. Esto no es compatible." -#: src/slic3r/GUI/Plater.cpp:2970 +#: src/slic3r/GUI/Plater.cpp:2763 msgid "The selected object can't be split because it contains more than one volume/material." msgstr "El objeto seleccionado no se puede dividir porque contiene más de un volumen / material." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2270 src/slic3r/GUI/Plater.cpp:2978 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 msgid "The selected object couldn't be split because it contains only one part." msgstr "El objeto seleccionado no se pudo dividir porque contiene solo una parte." -#: src/slic3r/GUI/MainFrame.cpp:461 +#: src/slic3r/GUI/MainFrame.cpp:1003 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -7837,7 +9031,7 @@ msgstr "" "El proyecto seleccionado no está disponible.\n" "¿Desea eliminarlo de la lista de proyectos recientes?" -#: src/slic3r/GUI/DoubleSlider.cpp:998 +#: src/slic3r/GUI/DoubleSlider.cpp:1121 msgid "" "The sequential print is on.\n" "It's impossible to apply any custom G-code for objects printing sequentually.\n" @@ -7847,20 +9041,24 @@ msgstr "" "Es imposible incluir G-code personalizado para piezas que se imprimen secuencialmente.\n" "Este código no se procesará durante la generación del G-code." -#: src/libslic3r/PrintConfig.cpp:2846 +#: src/slic3r/GUI/ConfigWizard.cpp:1187 +msgid "The size of the object can be specified in inches" +msgstr "El tamaño del objeto puede ser especificado en pulgadas" + +#: src/libslic3r/PrintConfig.cpp:3010 msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." msgstr "La pendiente de la pared del pad en relación con el plano de la cama. 90 grados significa paredes rectas." -#: src/libslic3r/PrintConfig.cpp:1614 +#: src/libslic3r/PrintConfig.cpp:1722 msgid "The speed for loading of a filament into extruder after retraction (it only applies to the extruder motor). If left to zero, the retraction speed is used." msgstr "La velocidad de carga de un filamento en la extrusora después de la retracción (solo se aplica al motor del extrusor). Si se deja a cero, se usa la velocidad de retracción." -#: src/libslic3r/PrintConfig.cpp:1606 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "La velocidad para las retracciones (solo se aplica al motor del extrusor)." -#: src/slic3r/GUI/ConfigManipulation.cpp:81 -#, no-c-format +#: src/slic3r/GUI/ConfigManipulation.cpp:80 +#, c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -7878,52 +9076,53 @@ msgstr "" "-Comprueba que está activado el espesor de pared vertical\n" "-Desactiva la detección de paredes finas" -#: src/libslic3r/Print.cpp:1237 +#: src/libslic3r/Print.cpp:1263 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "La opción Vaso en espiral solo puede ser usada cuando se imprime un solo objeto." -#: src/libslic3r/Print.cpp:1244 +#: src/libslic3r/Print.cpp:1270 msgid "The Spiral Vase option can only be used when printing single material objects." msgstr "La opción Vaso en espiral solo puede ser usada al imprimir objetos de un solo material." -#: src/slic3r/GUI/Tab.cpp:3068 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 msgid "The supplied name is empty. It can't be saved." msgstr "El nombre proporcionado está vacío. No se puede guardar." -#: src/slic3r/GUI/Tab.cpp:3465 +#: src/slic3r/GUI/SavePresetDialog.cpp:131 msgid "The supplied name is not available." msgstr "El nombre proporcionado no está disponible." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3819 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3926 src/slic3r/GUI/Tab.cpp:3456 -#: src/slic3r/GUI/Tab.cpp:3460 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 +#: src/slic3r/GUI/SavePresetDialog.cpp:124 msgid "The supplied name is not valid;" msgstr "El nombre proporcionado no es válido;" -#: src/libslic3r/Print.cpp:1222 +#: src/libslic3r/Print.cpp:1248 msgid "The supplied settings will cause an empty print." msgstr "Los ajustes proporcionados causarán una impresión vacía." -#: src/libslic3r/PrintConfig.cpp:2789 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The thickness of the pad and its optional cavity walls." msgstr "El grosor de las pads y sus paredes de cavidad opcionales." -#: src/libslic3r/PrintConfig.cpp:1911 +#: src/libslic3r/PrintConfig.cpp:2053 msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." msgstr "La distancia vertical entre el objeto y la interfaz del material de soporte. Establecer esto en 0 también evitará que Slic3r use el flujo y la velocidad del puente para la primera capa de los objetos." -#: src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:2731 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "La opción Limpiar no está disponible cuando se usa el modo Retracción de firmware. ¿Lo inhabilito para habilitar la Retracción de firmware?" -#: src/libslic3r/Print.cpp:1268 +#: src/libslic3r/Print.cpp:1294 msgid "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "La Torre de Limpieza actualmente no es compatible con E volumétrico (use_volumetric_e=0)." -#: src/slic3r/GUI/ConfigManipulation.cpp:115 +#: src/slic3r/GUI/ConfigManipulation.cpp:114 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool change.\n" @@ -7932,51 +9131,55 @@ msgstr "" "La Torre de Limpieza actualmente admite los soportes no solubles solo si están impresos con el extrusor actual sin activar un cambio de herramienta. \n" "(tanto support_material_extruder como support_material_interface_extruder deben configurarse en 0)." -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1426 msgid "The Wipe Tower currently supports the non-soluble supports only if they are printed with the current extruder without triggering a tool change. (both support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "La Torre de Limpieza actualmente admite los soportes no solubles solo si están impresos con el extrusor actual sin activar un cambio de herramienta. (Tanto support_material_extruder como support_material_interface_extruder deben configurarse en 0)." -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1296 msgid "The Wipe Tower is currently not supported for multimaterial sequential prints." msgstr "La Torre de Limpieza no se permite ahora para impresiones secuenciales multimaterial." -#: src/libslic3r/Print.cpp:1262 -msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." -msgstr "Actualmente, La Torre de Limpieza solo es compatible con los tipos de código G de Marlin, RepRap/Sprinter y Repetier." +#: src/libslic3r/Print.cpp:1290 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "La Torre de Limpieza solo es compatible con las variantes de código G usadas por Marlin, RepRap/Sprinter, RepRapFirmware y Repetier." -#: src/libslic3r/Print.cpp:1264 +#: src/libslic3r/Print.cpp:1290 msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." msgstr "En la actualidad, Wipe Tower solo es compatible con el direccionamiento relativo del extrusor (use_relative_e_distances=1)." -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1319 msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" msgstr "La torre de limpieza sólo se permite para varios objetos si se imprimen sobre un número igual de capas de balsa" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1321 msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" msgstr "La torre de limpieza sólo es compatible con varios objetos si se imprimen con la misma support_material_contact_distance" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1323 msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." msgstr "La torre de limpieza sólo es compatible con varios objetos si se cortan por igual." -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1317 msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heights" msgstr "La torre de limpieza sólo es compatible con varios objetos si tienen alturas de capas iguales" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1283 msgid "The wipe tower is only supported if all extruders have the same nozzle diameter and use filaments of the same diameter." msgstr "La torre de limpieza solo es compatible si todos los extrusores tienen el mismo diámetro del nozzle y usan filamento del mismo diámetro." -#: src/libslic3r/Print.cpp:1339 +#: src/libslic3r/Print.cpp:1365 msgid "The Wipe tower is only supported if all objects have the same variable layer height" msgstr "La Torre de Limpieza solo es compatible si todos los objetos tienen la misma altura de capa variable" -#: src/libslic3r/SLAPrintSteps.cpp:621 +#: src/slic3r/GUI/Plater.cpp:3563 +msgid "There are active warnings concerning sliced models:" +msgstr "Hay avisos activos respecto a los modelos laminados:" + +#: src/libslic3r/SLAPrintSteps.cpp:619 msgid "There are unprintable objects. Try to adjust support settings to make the objects printable." msgstr "Hay objetos no imprimibles. Intenta ajustar la configuración de soportes para que los objetos se puedan imprimir." -#: src/slic3r/GUI/DoubleSlider.cpp:1030 +#: src/slic3r/GUI/DoubleSlider.cpp:1155 msgid "" "There is a color change for extruder that has not been used before.\n" "Check your settings to avoid redundant color changes." @@ -7984,13 +9187,13 @@ msgstr "" "Hay un cambio de color para el extrusor que no se ha usado antes. \n" "Comprueba tus ajustes para evitar cambios de color innecesarios." -#: src/slic3r/GUI/DoubleSlider.cpp:1024 +#: src/slic3r/GUI/DoubleSlider.cpp:1149 msgid "" "There is a color change for extruder that won't be used till the end of print job.\n" "This code won't be processed during G-code generation." msgstr "Hay un cambio de color para el extrusor que no será usado hasta el final del trabajo de impresión. Este código no será procesado durante la generación del G-code." -#: src/slic3r/GUI/DoubleSlider.cpp:1027 +#: src/slic3r/GUI/DoubleSlider.cpp:1152 msgid "" "There is an extruder change set to the same extruder.\n" "This code won't be processed during G-code generation." @@ -7998,12 +9201,16 @@ msgstr "" "Hay un cambio de extrusor establecido en el mismo extrusor.\n" "Este código no se procesará durante la generación del código G." +#: src/libslic3r/GCode.cpp:604 +msgid "There is an object with no extrusions on the first layer." +msgstr "Hay un objeto sin extrusiones en la primera capa." + #: src/slic3r/GUI/UpdateDialogs.cpp:225 #, c-format msgid "This %s version: %s" msgstr "Esta %s versión: %s" -#: src/slic3r/GUI/Tab.cpp:982 +#: src/slic3r/GUI/Tab.cpp:1244 msgid "" "This action is not revertable.\n" "Do you want to proceed?" @@ -8011,79 +9218,79 @@ msgstr "" "Esta acción no es reversible.\n" "¿Deseas continuar?" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:199 msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Este código se inserta entre los objetos cuando se utiliza la impresión secuencial. Por defecto, el extrusor y la temperatura de la cama se reinician utilizando un comando de no espera; sin embargo, si se detectan M104, M109, M140 o M190 en este código personalizado, Slic3r no agregará comandos de temperatura. Tenga en cuenta que puede usar variables de marcador de posición para todas las configuraciones de Slic3r, por lo que puede poner un comando \"M109 S [first_layer_temperature]\" donde lo desee." -#: src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1174 msgid "This custom code is inserted at every layer change, right after the Z move and before the extruder moves to the first layer point. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Este código personalizado se inserta en cada cambio de capa, justo después del movimiento Z y antes de que el extrusor se mueva al primer punto de capa. Tenga en cuenta que puede usar variables de marcador de posición para todos los ajustes de Slic3r, así como [layer_num] y [layer_z]." -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:188 msgid "This custom code is inserted at every layer change, right before the Z move. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Este código personalizado se inserta en cada cambio de capa, justo antes del movimiento Z. Tenga en cuenta que puede usar variables de marcador de posición para todos los ajustes de Slic3r, así como [layer_num] y [layer_z]." -#: src/libslic3r/PrintConfig.cpp:2094 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings as well as {previous_extruder} and {next_extruder} can be used. When a tool-changing command which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. It is therefore possible to script custom behaviour both before and after the toolchange." msgstr "Este código personalizado se inserta antes de cada cambio de herramienta. Se pueden utilizar variables de marcador de posición para todas las configuraciones de PrusaSlicer, así como {previous_extruder} y {next_extruder}. Cuando se incluye un comando de cambio de herramienta que cambia al extrusor correcto (como T{next_extruder}), PrusaSlicer no emitirá ningún otro comando. Por lo tanto, es posible escribir un comportamiento personalizado antes y después del cambio de herramienta." -#: src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:430 msgid "This end procedure is inserted at the end of the output file, before the printer end gcode (and before any toolchange from this filament in case of multimaterial printers). Note that you can use placeholder variables for all PrusaSlicer settings. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Este procedimiento final se inserta al final del archivo de salida, antes del código G final de la impresora (y antes de cualquier cambio de herramienta desde este filamento en el caso de impresoras multimateriales). Ten en cuenta que puede usar variables de marcador de posición para todas las configuraciones de PrusaSlicer. Si tienes varios extrusores, el código G se procesa en orden de extrusor." -#: src/libslic3r/PrintConfig.cpp:386 +#: src/libslic3r/PrintConfig.cpp:420 msgid "This end procedure is inserted at the end of the output file. Note that you can use placeholder variables for all PrusaSlicer settings." msgstr "Este procedimiento final se inserta al final del archivo de salida. Ten en cuenta que puedes usar variables de marcador de posición para todas las configuraciones de PrusaSlicer." -#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 msgid "This experimental setting is used to limit the speed of change in extrusion rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "Esta configuración experimental se usa para limitar la velocidad de cambio en la velocidad de extrusión. Un valor de 1,8 mm³ / s² asegura que se cambia la velocidad de extrusión de 1,8 mm³ / s (ancho de extrusión de 0,45 mm, altura de extrusión de 0,2 mm, avance de 20 mm / s) a 5,4 mm³ / s (avance de 60 mm / s) durará al menos 2 segundos." -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." msgstr "Esta configuración experimental se usa para establecer la velocidad volumétrica máxima que admite el extrusor." -#: src/libslic3r/PrintConfig.cpp:2162 +#: src/libslic3r/PrintConfig.cpp:2305 msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." msgstr "Esta configuración experimental utiliza comandos G10 y G11 para que el firmware maneje la retracción. Esto solo se admite en Marlin reciente." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2319 msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." msgstr "Este ajuste experimental utiliza como salida del E valores en milímetros cúbicos en lugar de milímetros lineales. Si su firmware aún no conoce el (los) diámetro (s) del filamento, puede poner comandos como 'M200 D [filament_diameter_0] T0' en su código G inicial para activar el modo volumétrico y usar el diámetro del filamento asociado al filamento seleccionado. en Slic3r. Esto solo se admite en Marlin reciente." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" msgstr "Este extrusor se aplicará a los objetos seleccionados" -#: src/libslic3r/PrintConfig.cpp:224 +#: src/libslic3r/PrintConfig.cpp:258 msgid "This factor affects the amount of plastic for bridging. You can decrease it slightly to pull the extrudates and prevent sagging, although default settings are usually good and you should experiment with cooling (use a fan) before tweaking this." msgstr "Este factor afecta la cantidad de plástico para formar puentes. Puede disminuirlo ligeramente para extraer los extruidos y evitar el combado, aunque la configuración predeterminada suele ser buena y debe experimentar con la refrigeración (usar un ventilador) antes de ajustar esto." -#: src/libslic3r/PrintConfig.cpp:546 +#: src/libslic3r/PrintConfig.cpp:582 msgid "This factor changes the amount of flow proportionally. You may need to tweak this setting to get nice surface finish and correct single wall widths. Usual values are between 0.9 and 1.1. If you think you need to change this more, check filament diameter and your firmware E steps." msgstr "Este factor cambia la cantidad de flujo proporcionalmente. Es posible que necesite ajustar esta configuración para obtener un buen acabado superficial y corregir el ancho de una sola pared. Los valores usuales están entre 0.9 y 1.1. Si cree que necesita cambiar esto más, verifique el diámetro del filamento y los pasos del E en el firmware." -#: src/libslic3r/PrintConfig.cpp:214 +#: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "La velocidad de este ventilador se aplica durante todos los puentes y voladizos." -#: src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "Esta característica permite combinar el relleno y acelerar la impresión mediante la extrusión de capas de relleno más gruesas a la vez que se preservan los finos perímetros y, por lo tanto, la precisión." -#: src/libslic3r/PrintConfig.cpp:1746 +#: src/libslic3r/PrintConfig.cpp:1861 msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." msgstr "Esta característica permite forzar una capa sólida en cada número de capas. Cero para deshabilitar. Puede establecer esto en cualquier valor (por ejemplo, 9999); Slic3r seleccionará automáticamente la cantidad máxima posible de capas para combinar según el diámetro de la boquilla y la altura de la capa." -#: src/libslic3r/PrintConfig.cpp:1795 +#: src/libslic3r/PrintConfig.cpp:1910 msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." msgstr "Esta función aumentará Z gradualmente mientras imprime un objeto de pared simple para eliminar cualquier costura visible. Esta opción requiere un perímetro único, sin relleno, sin capas sólidas superiores y sin material de soporte. Todavía puede establecer cualquier cantidad de capas sólidas inferiores, así como bucles de falda / balsa. No funcionará al imprimir más de un objeto." -#: src/slic3r/GUI/Plater.cpp:2367 +#: src/slic3r/GUI/Plater.cpp:2329 msgid "This file cannot be loaded in a simple mode. Do you want to switch to an advanced mode?" msgstr "Este archivo no puede ser cargado en un modo sencillo. ¿Quieres cambiar al modo experto?" -#: src/slic3r/GUI/Plater.cpp:2357 +#: src/slic3r/GUI/Plater.cpp:2319 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -8108,84 +9315,96 @@ msgstr "" "¿Quieres continuar y grabar este archivo hex de todos modos?\n" "Por favor continúa solo si estás seguro de que es lo correcto." -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:348 msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." msgstr "Este indicador habilita la lógica de enfriamiento automático que ajusta la velocidad de impresión y la velocidad del ventilador según el tiempo de impresión de la capa." -#: src/slic3r/GUI/Plater.cpp:536 +#: src/slic3r/GUI/Plater.cpp:402 msgid "This flag enables the brim that will be printed around each object on the first layer." msgstr "Esta opción activa la balsa que se imprimirá alrededor del objeto en la primera capa." -#: src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Esta bandera impone una retractación cada vez que se realiza un movimiento Z." -#: src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2337 msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." msgstr "Esta bandera moverá la boquilla mientras se retrae para minimizar la posible mancha en los extrusores con fugas." -#: src/slic3r/GUI/Tab.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1961 +msgid "This G-code will be used as a code for the color change" +msgstr "Este código G se utilizará como código para el cambio de color" + +#: src/libslic3r/PrintConfig.cpp:1970 +msgid "This G-code will be used as a code for the pause print" +msgstr "Este código G se utilizará como código para la pausa de impresión" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "This G-code will be used as a custom code" +msgstr "Este código G se utilizará como código personalizado" + +#: src/slic3r/GUI/Tab.cpp:1272 msgid "This is a default preset." msgstr "Este es un preajuste preestablecido." -#: src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "This is a relative measure of support points density." msgstr "Esta es una medida relativa de la densidad de los puntos de soporte." -#: src/slic3r/GUI/Tab.cpp:2338 +#: src/slic3r/GUI/Tab.cpp:2507 msgid "This is a single extruder multimaterial printer, diameters of all extruders will be set to the new value. Do you want to proceed?" msgstr "Esta es una impresora multimaterial de extrusor único, los diámetros de todas los extrusores se establecerán según el nuevo valor. ¿Quieres proceder?" -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:1274 msgid "This is a system preset." msgstr "Este es un preajuste del sistema." -#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Esto solo se usa en la interfaz de Slic3r como ayuda visual." -#: src/libslic3r/PrintConfig.cpp:336 +#: src/libslic3r/PrintConfig.cpp:370 msgid "This is the acceleration your printer will be reset to after the role-specific acceleration values are used (perimeter/infill). Set zero to prevent resetting acceleration at all." msgstr "Esta es la aceleración después de que se usen los valores de aceleración específicos de cada función (perímetro / relleno). Establezca cero para evitar restablecer la aceleración." -#: src/libslic3r/PrintConfig.cpp:194 +#: src/libslic3r/PrintConfig.cpp:228 msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." msgstr "Esta es la aceleración que su impresora usará para los puentes. Establezca cero para deshabilitar el control de aceleración para puentes." -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:900 msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." msgstr "Esta es la aceleración que su impresora usará para la primera capa. Establezca cero para deshabilitar el control de aceleración para la primera capa." -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:1026 msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." msgstr "Esta es la aceleración que su impresora usará para el relleno. Establezca cero para deshabilitar el control de aceleración para el relleno." -#: src/libslic3r/PrintConfig.cpp:1400 +#: src/libslic3r/PrintConfig.cpp:1508 msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." msgstr "Esta es la aceleración que su impresora usará para los perímetros. Un valor alto como 9000 generalmente da buenos resultados si su hardware está a la altura del trabajo. Establezca cero para deshabilitar el control de aceleración para los perímetros." -#: src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1435 msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "Este es el diámetro de la boquilla de su extrusor (por ejemplo: 0.5, 0.35, etc.)" -#: src/libslic3r/PrintConfig.cpp:1227 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1335 +#, c-format msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "Esta es la altura más alta imprimible de capa para este extrusor, que se utiliza para cubrir la altura de la capa variable y la altura de la capa de soporte. La altura máxima recomendada de la capa es del 75% del ancho de extrusión para lograr una adhesión razonable entre capas. Si se establece en 0, la altura de la capa se limita al 75% del diámetro de la boquilla." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1398 msgid "This is the lowest printable layer height for this extruder and limits the resolution for variable layer height. Typical values are between 0.05 mm and 0.1 mm." msgstr "Esta es la altura más baja de la capa imprimible para este extrusor y limita la resolución para la altura de la capa variable. Los valores típicos están entre 0.05 mm y 0.1 mm." -#: src/libslic3r/GCode.cpp:639 +#: src/libslic3r/GCode.cpp:624 msgid "This is usually caused by negligibly small extrusions or by a faulty model. Try to repair the model or change its orientation on the bed." msgstr "Esto generalmente es causado por extrusiones insignificantemente pequeñas o por un modelo defectuoso. Intenta reparar el modelo o cambia su orientación en la cama." -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2358 msgid "This matrix describes volumes (in cubic milimetres) required to purge the new filament on the wipe tower for any given pair of tools." msgstr "Esta matriz detalla los volúmenes (en milímetros cúbicos) necesarios para purgar el nuevo filamento en la torre de limpieza para cualquier par de filamentos." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:928 msgid "" "This operation is irreversible.\n" "Do you want to proceed?" @@ -8193,31 +9412,35 @@ msgstr "" "Esta operación es irreversible. \n" "¿Deseas continuar?" -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1550 msgid "This option sets the number of perimeters to generate for each layer. Note that Slic3r may increase this number automatically when it detects sloping surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." msgstr "Esta opción establece la cantidad de perímetros que se generarán para cada capa. Tenga en cuenta que Slic3r puede aumentar este número automáticamente cuando detecta superficies inclinadas que se benefician de un mayor número de perímetros si la opción Perímetros adicionales está habilitada." -#: src/libslic3r/PrintConfig.cpp:1356 +#: src/libslic3r/PrintConfig.cpp:1464 msgid "This option will drop the temperature of the inactive extruders to prevent oozing. It will enable a tall skirt automatically and move extruders outside such skirt when changing temperatures." msgstr "Esta opción reducirá la temperatura de las extrusoras inactivas para evitar el goteo. Permitirá una falda alta automáticamente y moverá los extrusores fuera de dicha falda cuando cambie la temperatura." -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1073 msgid "This option will limit infill to the areas actually needed for supporting ceilings (it will act as internal support material). If enabled, slows down the G-code generation due to the multiple checks involved." msgstr "Esta opción limitará el relleno a las áreas realmente necesarias para soportar techos (actuará como material de soporte interno). Si está habilitado, ralentiza la generación del código G debido a las múltiples comprobaciones involucradas." -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1066 msgid "This option will switch the print order of perimeters and infill, making the latter first." msgstr "Esta opción cambiará el orden de impresión de los perímetros y el relleno, haciendo que el último sea el primero." -#: src/libslic3r/PrintConfig.cpp:459 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +msgid "This printer will be shown in the presets list as" +msgstr "Esta impresora se mostrará en la lista de ajustes preestablecidos como" + +#: src/libslic3r/PrintConfig.cpp:495 msgid "This separate setting will affect the speed of external perimeters (the visible ones). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "Esta configuración independiente afectará la velocidad de los perímetros externos (los visibles). Si se expresa como porcentaje (por ejemplo: 80%), se calculará en la configuración de velocidad de perímetros anterior. Establecer a cero para auto." -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1832 msgid "This separate setting will affect the speed of perimeters having radius <= 6.5mm (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "Esta configuración por separado afectará la velocidad de los perímetros con un radio <= 6,5 mm (generalmente agujeros). Si se expresa como porcentaje (por ejemplo: 80%), se calculará en la configuración de velocidad de perímetros anterior. Establecer a cero para auto." -#: src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1082 msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." msgstr "Esta configuración aplica una superposición adicional entre relleno y perímetros para una mejor unión. Teóricamente, esto no debería ser necesario, pero la reacción puede causar huecos. Si se expresa como porcentaje (ejemplo: 15%), se calcula sobre el ancho de extrusión del perímetro." @@ -8225,31 +9448,31 @@ msgstr "Esta configuración aplica una superposición adicional entre relleno y msgid "This setting controls the height (and thus the total number) of the slices/layers. Thinner layers give better accuracy but take more time to print." msgstr "Esta configuración controla la altura (y, por tanto, el número total) de las láminas / capas. Las capas más delgadas brindan una mayor precisión pero requieren más tiempo para imprimir." -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "This setting represents the maximum speed of your fan." msgstr "Esta configuración representa la velocidad máxima de su ventilador." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1389 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "Este ajuste representa el PWM mínimo que el ventilador necesita para funcionar." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1944 msgid "This start procedure is inserted at the beginning, after any printer start gcode (and after any toolchange to this filament in case of multi-material printers). This is used to override settings for a specific filament. If PrusaSlicer detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Este procedimiento de inicio se inserta al principio, después de que cualquier impresora inicie un código G(y después de cualquier cambio de herramienta a este filamento en el caso de impresoras de materiales múltiples). Esto se utiliza para anular la configuración de un filamento específico. Si PrusaSlicer detecta un M104, M109, M140 o M190 en tus códigos personalizados, dichos comandos no se agregarán automáticamente, por lo que puede personalizar el orden de los comandos de calentamiento y otras acciones personalizadas. Ten en cuenta que puedes usar variables de marcador de posición para todas las configuraciones de PrusaSlicer, por lo que puedes colocar un comando \"M109 S [first_layer_temperature]\" donde lo desees. Si tienes varias extrusorrs, el código G se procesa en el orden del extrusor." -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Este procedimiento de inicio se inserta al principio, después de que la bse ha alcanzado la temperatura objetivo y el extrusor acaba de comenzar a calentar, y antes de que el extrusor haya terminado de calentar. Si PrusaSlicer detecta un M104 o M190 en tus códigos personalizados, dichos comandos no se agregarán automáticamente, por lo que se puede personalizar el orden de los comandos de calentamiento y otras acciones personalizadas. Ten en cuenta que puedes usar variables de marcador de posición para todas las configuraciones de PrusaSlicer, por lo que puedes colocar un comando \"M109 S [first_layer_temperature]\" donde lo desees." -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:731 msgid "This string is edited by RammingDialog and contains ramming specific parameters." msgstr "Esta cadena se modifica con el Diálogo de Empuje y contiene parámetros específicos de empuje." -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2429 msgid "This value will be added (or subtracted) from all the Z coordinates in the output G-code. It is used to compensate for bad Z endstop position: for example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." msgstr "Este valor será añadido (o eliminado) de todas las coordenadas Z en el G-code de salida. Se usa para compensar una mala posición del final de carrera Z: por ejemplo, si tu interruptor deja la boquilla a 0.3mm de la base de impresión, ajustalo a -0.3 (o arregla tu interruptor)." -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2351 msgid "This vector saves required volumes to change from/to each tool used on the wipe tower. These values are used to simplify creation of the full purging volumes below." msgstr "Este vector guarda los volúmenes necesarios para cambiar desde/hasta cada herramienta usada en la torre de limpieza. Estos valores se emplean para simplificar la creación de los volúmenes totales de purga más abajo." @@ -8265,82 +9488,96 @@ msgstr "" "\n" "Puedes salir de %s e intentarlo de nuevo con una versión más reciente, o puedes volver a ejecutar la configuración inicial. Al hacerlo se creará una copia de respaldo de la configuración existente antes de instalar la nueva compatible con esta versión de %s." -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2601 msgid "This will apply a gamma correction to the rasterized 2D polygons. A gamma value of zero means thresholding with the threshold in the middle. This behaviour eliminates antialiasing without losing holes in polygons." msgstr "Esto aplicará una corrección gamma a los polígonos 2D rasterizados. Un valor gamma de cero significa que el umbral se encuentra en el medio. Este comportamiento elimina el antialiasing sin perder agujeros en los polígonos." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Threads" msgstr "Núcleos" -#: src/libslic3r/PrintConfig.cpp:2082 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." msgstr "Núcleos usados para tareas multi-recurso. Número óptimo de núcleos es ligeramente sobre el numero de núcleos/procesadores disponibles." -#: src/slic3r/GUI/Tab.cpp:2093 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "Threshold:" +msgstr "Umbral:" + +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Tilt" msgstr "Inclinación" -#: src/slic3r/GUI/Tab.cpp:2094 +#: src/slic3r/GUI/Tab.cpp:2264 msgid "Tilt time" msgstr "Tiempo de inclinación" +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "Tiempo" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:723 msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." msgstr "Tiempo para que el firmware de la impresora (o la Unidad Multi Material 2.0) cargue un filamento durante un cambio de herramienta (al ejecutar el código T). Este tiempo se añade al tiempo total de impresión mediante el estimador de tiempo del código G." -#: src/libslic3r/PrintConfig.cpp:702 +#: src/libslic3r/PrintConfig.cpp:738 msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." msgstr "Tiempo para que el firmware de la impresora (o la Unidad Multi Material 2.0) descargue un filamento durante un cambio de herramienta (al ejecutar el código T). Este tiempo se añade al tiempo total de impresión mediante el estimador de tiempo del código G." -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the fast tilt" msgstr "Tiempo de la inclinación rápida" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Time of the slow tilt" msgstr "Tiempo de la inclinación lenta" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:677 msgid "Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible materials that may need more time to shrink to original dimensions." msgstr "Tiempo de espera después de que se ha descargado el filamento. Puede ayudar para conseguir cambios de herramienta fiables con materiales flexibles que pueden necesitar más tiempo para encogerse a su tamaño original." -#: src/slic3r/GUI/Tab.cpp:966 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "to" +msgstr "a" + +#: src/slic3r/GUI/Tab.cpp:1284 msgid "To do that please specify a new name for the preset." msgstr "Para hacerlo por favor especifique un nuevo nombre para esos ajustes." -#: src/slic3r/GUI/Plater.cpp:4014 +#: src/slic3r/GUI/Plater.cpp:3934 msgid "To objects" msgstr "A los objetos" -#: src/slic3r/GUI/Plater.cpp:4016 +#: src/slic3r/GUI/Plater.cpp:3936 msgid "To parts" msgstr "A las piezas" -#: src/slic3r/GUI/Tab.cpp:1756 +#: src/slic3r/Utils/Http.cpp:82 +msgid "To specify the system certificate store manually, please set the %1% environment variable to the correct CA bundle and restart the application." +msgstr "Para especificar el almacén de certificados del sistema manualmente, configure la variable de entorno %1% en el paquete CA correcto y reinicia la aplicación." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." msgstr "Para usar un archivo CA personalizado, importa tu archivo CA al Almacén de Certificados/Llavero." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 #, c-format msgid "Toggle %c axis mirroring" msgstr "Activar reflejo del eje %c" -#: src/libslic3r/Zipper.cpp:34 +#: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "demasiados archivos" -#: src/libslic3r/SLAPrintSteps.cpp:190 -msgid "Too much overlapping holes." +#: src/libslic3r/SLAPrintSteps.cpp:192 +msgid "Too many overlapping holes." msgstr "Demasiados agujeros superpuestos." -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 -#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 +#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 +#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 +#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 +#: src/libslic3r/GCode/PreviewData.cpp:362 msgid "Tool" msgstr "Herramienta" @@ -8348,51 +9585,64 @@ msgstr "Herramienta" msgid "Tool #" msgstr "Herramienta nº" -#: src/slic3r/GUI/Tab.cpp:2000 src/libslic3r/PrintConfig.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 msgid "Tool change G-code" msgstr "Código G de cambio de herramienta" -#: src/slic3r/GUI/Tab.cpp:1491 +#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +msgid "Tool changes" +msgstr "Cambios de herramienta" + +#: src/slic3r/GUI/GUI_Preview.cpp:1479 +msgid "Tool marker" +msgstr "Marcador de herramienta" + +#: src/slic3r/GUI/GCodeViewer.cpp:223 +msgid "Tool position" +msgstr "Posición de herramienta" + +#: src/slic3r/GUI/Tab.cpp:1837 msgid "Toolchange parameters with single extruder MM printers" msgstr "Parámetros del cambio de herramienta para impresoras de un único extrusor MM" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:662 src/libslic3r/PrintConfig.cpp:2132 -#: src/libslic3r/PrintConfig.cpp:2141 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 msgid "Top" msgstr "Superior" -#: src/slic3r/GUI/PresetHints.cpp:304 +#: src/slic3r/GUI/PresetHints.cpp:302 msgid "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "Sugerencia de grosor de la carcasa superior / inferior: no disponible debido a una altura de capa inválida." -#: src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:449 msgid "Top fill pattern" msgstr "Patrón de relleno superior" -#: src/slic3r/GUI/PresetHints.cpp:323 +#: src/slic3r/GUI/PresetHints.cpp:321 msgid "Top is open." msgstr "La parte superior está abierta." -#: src/slic3r/GUI/PresetHints.cpp:317 +#: src/slic3r/GUI/PresetHints.cpp:315 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "La tapa superior es de %1% mm de espesor con una altura de capa de %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:192 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "relleno sólido superior" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 +#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 +#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Top solid infill" msgstr "Relleno sólido superior" -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2278 msgid "Top solid layers" msgstr "Capas solidas superiores" -#: src/slic3r/GUI/MainFrame.cpp:662 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 msgid "Top View" msgstr "Vista superior" @@ -8408,90 +9658,128 @@ msgstr "Volumen total empujado" msgid "Total ramming time" msgstr "Tiempo de empuje total" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:640 +msgid "Transfer" +msgstr "Transferir" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:745 +msgid "Transfer the selected options to the newly selected preset \"%1%\"." +msgstr "Transferir las opciones seleccionadas al nuevo ajuste seleccionado \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Transfer the selected settings to the newly selected preset." +msgstr "Transfiera los ajustes seleccionados al preajuste recién seleccionado." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:561 msgid "Translate" msgstr "Traducir" -#: src/slic3r/GUI/Mouse3DController.cpp:300 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:282 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Translation" msgstr "Translación" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 +#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 msgid "Travel" msgstr "Recorrido" -#: src/libslic3r/PrintConfig.cpp:845 +#: src/libslic3r/PrintConfig.cpp:883 msgid "Triangles" msgstr "Triángulos" -#: src/libslic3r/PrintConfig.cpp:3448 +#: src/libslic3r/PrintConfig.cpp:3647 msgid "Try to repair any non-manifold meshes (this option is implicitly added whenever we need to slice the model to perform the requested action)." msgstr "Intenta reparar cualquier malla no múltiple (esta opción se agrega implícitamente cada vez que necesitamos laminar el modelo para realizar la acción solicitada)." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +msgid "Type here the name of your printer device" +msgstr "Escribe aquí el nombre de tu dispositivo de impresión" + +#: src/libslic3r/PrintConfig.cpp:1575 msgid "Type of the printer." msgstr "Tipo de impresora." -#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "Tipo:" -#: src/slic3r/GUI/Plater.cpp:3428 +#: src/slic3r/GUI/OpenGLManager.cpp:275 +#, c-format +msgid "" +"Unable to load the following shaders:\n" +"%s" +msgstr "" +"No se pueden cargar las siguientes sombras:\n" +"%s" + +#: src/slic3r/GUI/Plater.cpp:3233 msgid "Unable to reload:" msgstr "Incapaz de recargar:" -#: src/libslic3r/Zipper.cpp:32 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:137 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:146 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:845 +msgid "Undef" +msgstr "Undef" + +#: src/libslic3r/miniz_extension.cpp:91 msgid "undefined error" msgstr "error no definido" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/MainFrame.cpp:581 +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Undo" msgstr "Deshacer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "Deshacer %1$d Acción" msgstr[1] "Deshacer %1$d Acciones" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Undo History" msgstr "Deshacer Historia" -#: src/libslic3r/Zipper.cpp:56 +#: src/libslic3r/miniz_extension.cpp:115 msgid "unexpected decompressed size" msgstr "tamaño de descompresión inesperado" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:310 msgid "Unknown" msgstr "Desconocido" -#: src/slic3r/Utils/Duet.cpp:82 src/slic3r/Utils/Duet.cpp:137 -#: src/slic3r/Utils/FlashAir.cpp:119 src/slic3r/Utils/FlashAir.cpp:140 -#: src/slic3r/Utils/FlashAir.cpp:156 +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 +#: src/slic3r/Utils/FlashAir.cpp:159 msgid "Unknown error occured" msgstr "Ha ocurrido un error desconocido" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 +msgid "Unknown error occured during exporting G-code." +msgstr "Se produjo un error desconocido durante la exportación del código G." + #: src/slic3r/GUI/WipeTowerDialog.cpp:263 msgid "unloaded" msgstr "descargado" -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Unloading speed" msgstr "Velocidad de descarga" -#: src/libslic3r/PrintConfig.cpp:632 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Unloading speed at the start" msgstr "Velocidad de descarga al inicio" -#: src/slic3r/GUI/Tab.cpp:3256 +#: src/slic3r/GUI/Tab.cpp:3693 msgid "UNLOCKED LOCK" msgstr "CANDADO ABIERTO" -#: src/slic3r/GUI/Tab.cpp:3282 +#: src/slic3r/GUI/Tab.cpp:3719 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click to reset all settings for current option group to the system (or default) values." @@ -8499,7 +9787,7 @@ msgstr "" "El icono de CANDADO DESBLOQUEADO indica que se cambiaron algunas configuraciones y no son iguales a los valores del sistema (o predeterminados) para el grupo de opciones actual.\n" "Haz clic para restablecer todas las configuraciones para el grupo de opciones actual a los valores del sistema (o predeterminados)." -#: src/slic3r/GUI/Tab.cpp:3297 +#: src/slic3r/GUI/Tab.cpp:3734 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to the system (or default) value.\n" "Click to reset current value to the system (or default) value." @@ -8507,56 +9795,43 @@ msgstr "" "El icono de CANDADO DESBLOQUEADO indica que se cambiaron algunas configuraciones y no son iguales a los valores del sistema (o predeterminados).\n" "Haz clic para reiniciar el valor actual a los del sistema (o predeterminados)" -#: src/slic3r/GUI/Plater.cpp:5203 -#, c-format -msgid "Unmounting successful. The device %s(%s) can now be safely removed from the computer." -msgstr "Expulsión exitosa. El dispositivo %s (%s) puede desconectarse del ordenador de forma segura." - -#: src/slic3r/GUI/GUI_Preview.cpp:255 -msgid "Unretractions" -msgstr "Desretracciones" - -#: src/slic3r/GUI/Tab.cpp:2947 -msgid "Unsaved Changes" -msgstr "Cambios no guardados" - -#: src/slic3r/GUI/GUI_App.cpp:935 -msgid "Unsaved Presets" -msgstr "Ajustes iniciales no guardados" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Unselect gizmo or clear selection" msgstr "Deseleccionar gizmo o borrar selección" -#: src/libslic3r/Zipper.cpp:60 +#: src/libslic3r/miniz_extension.cpp:119 msgid "unsupported central directory size" msgstr "tamaño del directorio central no compatible" -#: src/libslic3r/Zipper.cpp:40 +#: src/libslic3r/miniz_extension.cpp:99 msgid "unsupported encryption" msgstr "encriptación no compatible" -#: src/libslic3r/Zipper.cpp:42 +#: src/libslic3r/miniz_extension.cpp:101 msgid "unsupported feature" msgstr "característica no compatible" -#: src/libslic3r/Zipper.cpp:38 +#: src/libslic3r/miniz_extension.cpp:97 msgid "unsupported method" msgstr "método no compatible" -#: src/libslic3r/Zipper.cpp:50 +#: src/libslic3r/miniz_extension.cpp:109 msgid "unsupported multidisk archive" msgstr "archivo multidisk no compatible" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:292 +#: src/slic3r/GUI/OpenGLManager.cpp:267 msgid "Unsupported OpenGL version" msgstr "Versión de OpenGL no soportada" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3420 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 msgid "Unsupported selection" msgstr "Selección no soportada" -#: src/slic3r/GUI/GLCanvas3D.cpp:955 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 +msgid "up to" +msgstr "hasta" + +#: src/slic3r/GUI/GLCanvas3D.cpp:961 #, c-format msgid "up to %.2f mm" msgstr "hasta %.2f mm" @@ -8565,15 +9840,15 @@ msgstr "hasta %.2f mm" msgid "Update available" msgstr "Actualización disponible" -#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "Actualiza los ajustes de fábrica automáticamente" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Updates" msgstr "Actualizaciones" -#: src/slic3r/GUI/ConfigWizard.cpp:786 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 msgid "Updates are never applied without user's consent and never overwrite user's customized settings." msgstr "Las actualizaciones nunca se realizan sin el consentimiento del usuario y nunca sobre-escriben ajustes personalizados del usuario." @@ -8581,7 +9856,7 @@ msgstr "Las actualizaciones nunca se realizan sin el consentimiento del usuario msgid "Upgrade" msgstr "Actualización" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "Cargar una imagen de firmware a una impresora basada en Arduino" @@ -8597,101 +9872,118 @@ msgstr "Cargar el host de impresión con el siguiente nombre de archivo:" msgid "Uploading" msgstr "Subiendo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper Layer" msgstr "Capa superior" -#: src/slic3r/GUI/Tab.cpp:1900 -msgid "USB/Serial connection" -msgstr "Conexión USB/Serial" - -#: src/libslic3r/PrintConfig.cpp:1662 -msgid "USB/serial port for printer connection." -msgstr "Puerto USB/serial para la conexión con la impresora." - -#: src/slic3r/GUI/DoubleSlider.cpp:1147 +#: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Usar otro extrusor" -#: src/slic3r/GUI/Preferences.cpp:143 +#: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Usar tamaño personalizado para los iconos de la barra de herramientas" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/slic3r/GUI/Preferences.cpp:268 +msgid "Use environment map" +msgstr "Usar mapa ambiental" + +#: src/libslic3r/PrintConfig.cpp:2304 msgid "Use firmware retraction" msgstr "Usar la retracción del firmware" +#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +msgid "Use for search" +msgstr "Usar para buscar" + +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" +msgstr "Usar para la estimación de tiempo" + #: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Use barras diagonales ( / ) como separadores de directorios si fuese necesario." -#: src/slic3r/GUI/Preferences.cpp:126 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use free camera" msgstr "Usar la cámara libre" -#: src/libslic3r/PrintConfig.cpp:2780 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Use inches" +msgstr "Usar pulgadas" + +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Use pad" msgstr "Usar pad" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:184 msgid "Use perspective camera" msgstr "Usar cámara en perspectiva" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2311 msgid "Use relative E distances" msgstr "Usar las distancias relativas en E" -#: src/slic3r/GUI/Preferences.cpp:104 +#: src/slic3r/GUI/Preferences.cpp:135 msgid "Use Retina resolution for the 3D scene" msgstr "Usa la resolución de Retina para la escena 3D" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." msgstr "Utiliza esta opción para ajustar la letra asociada al extrusor de tu impresora (normalmente se usa E pero otras usan A)." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:2035 msgid "Use this setting to rotate the support material pattern on the horizontal plane." msgstr "Use esta configuración para rotar el patrón de material de soporte en el plano horizontal." -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2318 msgid "Use volumetric E" msgstr "Usar E volumétrico" -#: src/slic3r/GUI/DoubleSlider.cpp:1171 +#: src/slic3r/GUI/DoubleSlider.cpp:1298 msgid "used" msgstr "usado" -#: src/slic3r/GUI/Plater.cpp:237 +#: src/slic3r/GUI/Plater.cpp:243 msgid "Used Filament (g)" -msgstr "Filamento usado (g)" +msgstr "Filamento Usado (g)" -#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 +#: src/slic3r/GUI/Plater.cpp:1141 +msgid "Used Filament (in)" +msgstr "Filamento Usado (in)" + +#: src/slic3r/GUI/Plater.cpp:1153 +msgid "Used Filament (in³)" +msgstr "Filamento Usado (in³)" + +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 msgid "Used Filament (m)" -msgstr "Filamento usado (m)" +msgstr "Filamento Usado (m)" -#: src/slic3r/GUI/Plater.cpp:236 +#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 msgid "Used Filament (mm³)" -msgstr "Filamento usado (mm³)" +msgstr "Filamento Usado (mm³)" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1100 msgid "Used Material (ml)" msgstr "Material usado (ml)" -#: src/slic3r/GUI/Plater.cpp:238 +#: src/slic3r/GUI/Plater.cpp:244 msgid "Used Material (unit)" msgstr "Material usado (unidades)" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 msgid "User" msgstr "Usuario" -#: src/slic3r/GUI/Preset.cpp:1168 src/slic3r/GUI/Preset.cpp:1288 -#: src/slic3r/GUI/PresetBundle.cpp:1677 +#: src/slic3r/GUI/PresetComboBoxes.cpp:230 +#: src/slic3r/GUI/PresetComboBoxes.cpp:778 +#: src/slic3r/GUI/PresetComboBoxes.cpp:934 msgid "User presets" msgstr "Ajustes de usuario" -#: src/libslic3r/Zipper.cpp:90 +#: src/libslic3r/miniz_extension.cpp:149 msgid "validation failed" msgstr "validación fallida" @@ -8703,31 +9995,31 @@ msgstr "El valor es el mismo que el del sistema" msgid "Value was changed and is not equal to the system value or the last saved preset" msgstr "El valor ha cambiado y ya no es igual al valor del sistema o al último valor guardado" -#: src/slic3r/GUI/Tab.cpp:2202 +#: src/slic3r/GUI/Tab.cpp:2371 msgid "Values in this column are for Normal mode" msgstr "Los valores en esta columna son para el modo Normal" -#: src/slic3r/GUI/Tab.cpp:2208 +#: src/slic3r/GUI/Tab.cpp:2377 msgid "Values in this column are for Stealth mode" msgstr "Los valores en esta columna son para el modo Silencioso" -#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 msgid "Variable layer height" msgstr "Altura de capa variable" -#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +#: src/slic3r/GUI/GLCanvas3D.cpp:1786 msgid "Variable layer height - Adaptive" msgstr "Altura de capa variable - Adaptativa" -#: src/slic3r/GUI/GLCanvas3D.cpp:599 +#: src/slic3r/GUI/GLCanvas3D.cpp:565 msgid "Variable layer height - Manual edit" msgstr "Altura de capa variable - Edicción manual" -#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +#: src/slic3r/GUI/GLCanvas3D.cpp:1778 msgid "Variable layer height - Reset" msgstr "Altura de capa variable - Reiniciar" -#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +#: src/slic3r/GUI/GLCanvas3D.cpp:1794 msgid "Variable layer height - Smooth all" msgstr "Altura de capa variable - Suavizar todo" @@ -8735,19 +10027,20 @@ msgstr "Altura de capa variable - Suavizar todo" msgid "variants" msgstr "variantes" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 msgid "vendor" msgstr "fabricante" -#: src/slic3r/GUI/ConfigWizard.cpp:565 +#: src/slic3r/GUI/ConfigWizard.cpp:589 msgid "Vendor:" msgstr "Vendedor:" -#: src/libslic3r/PrintConfig.cpp:928 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Verbose G-code" msgstr "Código G detallado" -#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "Versión" @@ -8755,24 +10048,36 @@ msgstr "Versión" msgid "version" msgstr "versión" -#: src/slic3r/GUI/Tab.cpp:1053 +#: src/slic3r/GUI/Tab.cpp:1375 msgid "Vertical shells" msgstr "Carcasas verticales" -#: src/slic3r/GUI/GUI_Preview.cpp:218 +#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Vista" -#: src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:1172 msgid "View mode" msgstr "Modo de vista" -#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 -#: src/libslic3r/SLAPrintSteps.cpp:461 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +msgid "" +"Visit \"Preferences\" and check \"%1%\"\n" +"to be asked about unsaved changes again." +msgstr "" +"Visita \"Preferencias\" y marca\"%1%\"\n" +"para que se le pregunte sobre los cambios no guardados nuevamente." + +#: src/libslic3r/PrintConfig.cpp:3553 +msgid "Visualize an already sliced and saved G-code" +msgstr "Visualizar un código G ya laminado y guardado" + +#: src/libslic3r/SLAPrintSteps.cpp:411 src/libslic3r/SLAPrintSteps.cpp:420 +#: src/libslic3r/SLAPrintSteps.cpp:459 msgid "Visualizing supports" msgstr "Visualizar soportes" -#: src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/Plater.cpp:167 msgid "Volume" msgstr "Volumen" @@ -8780,23 +10085,23 @@ msgstr "Volumen" msgid "Volume to purge (mm³) when the filament is being" msgstr "Volumen a purgar (mm³) cuando el filamento está siendo" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Volumes in Object reordered" msgstr "Volúmenes en Objetos reordenados" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "Volumétrico" -#: src/slic3r/GUI/Tab.cpp:1591 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Volumetric flow hints not available" msgstr "Sugerencias de flujo volumétrico no disponibles" -#: src/slic3r/GUI/GUI_Preview.cpp:226 +#: src/slic3r/GUI/GUI_Preview.cpp:280 msgid "Volumetric flow rate" msgstr "Tasa de caudal volumétrico" -#: src/libslic3r/GCode/PreviewData.cpp:355 +#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 msgid "Volumetric flow rate (mm³/s)" msgstr "Tasa de flujo volumétrico (mm³/seg)" @@ -8804,151 +10109,170 @@ msgstr "Tasa de flujo volumétrico (mm³/seg)" msgid "Volumetric speed" msgstr "Velocidad volumétrica" -#: src/libslic3r/PrintConfig.cpp:2915 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Wall thickness" msgstr "Espesor de pared" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1270 src/slic3r/GUI/GUI.cpp:251 -#: src/slic3r/GUI/Tab.cpp:3084 src/slic3r/GUI/WipeTowerDialog.cpp:45 -#: src/slic3r/GUI/WipeTowerDialog.cpp:366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Peligro" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/NotificationManager.cpp:672 +#: src/slic3r/GUI/NotificationManager.cpp:687 +#: src/slic3r/GUI/NotificationManager.cpp:702 +msgid "WARNING:" +msgstr "AVISO:" + +#: src/slic3r/GUI/ConfigWizard.cpp:449 msgid "Welcome" msgstr "Bienvenido" -#: src/slic3r/GUI/ConfigWizard.cpp:427 +#: src/slic3r/GUI/ConfigWizard.cpp:445 #, c-format msgid "Welcome to the %s Configuration Assistant" msgstr "Bienvenido al %s Asistente de Configuración" -#: src/slic3r/GUI/ConfigWizard.cpp:429 +#: src/slic3r/GUI/ConfigWizard.cpp:447 #, c-format msgid "Welcome to the %s Configuration Wizard" msgstr "Bienvenido al %s Ayudante de Configuración" -#: src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/SavePresetDialog.cpp:310 +msgid "What would you like to do with \"%1%\" preset after saving?" +msgstr "¿Qué te gustaría hacer con el ajuste preestablecido \"%1%\" después de guardar?" + +#: src/slic3r/GUI/Preferences.cpp:114 msgid "When checked, the print and filament presets are shown in the preset editor even if they are marked as incompatible with the active printer" msgstr "Cuando está marcada, los ajustes preestablecidos de impresión y filamento se muestran en el editor de ajustes preestablecidos, incluso si están marcados como incompatibles con la impresora activa" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/Preferences.cpp:122 +msgid "When checked, whenever dragging and dropping a project file on the application, shows a dialog asking to select the action to take on the file to load." +msgstr "Cuando está marcada, cada vez que se arrastra y suelta un archivo de proyecto en la aplicación, muestra un cuadro de diálogo que solicita seleccionar la acción a realizar en el archivo a cargar." + +#: src/slic3r/GUI/Preferences.cpp:156 +msgid "When closing the application, always ask for unsaved changes" +msgstr "Al cerrar la aplicación, siempre preguntar por los cambios no guardados" + +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "when printing" msgstr "al imprimir" -#: src/libslic3r/PrintConfig.cpp:253 +#: src/libslic3r/PrintConfig.cpp:287 msgid "When printing multi-material objects, this settings will make Slic3r to clip the overlapping object parts one by the other (2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)." msgstr "Al imprimir objetos multi-material, esta configuración hará que slic3r recorte las partes del objeto superpuestas una por la otra (la 2da parte será recortada por la 1ra, la 3ra parte será recortada por la 1ra y 2da, etc.)." -#: src/libslic3r/PrintConfig.cpp:305 +#: src/libslic3r/PrintConfig.cpp:339 msgid "When printing multiple objects or copies, this feature will complete each object before moving onto next one (and starting it from its bottom layer). This feature is useful to avoid the risk of ruined prints. Slic3r should warn and prevent you from extruder collisions, but beware." msgstr "Al imprimir múltiples objetos o copias, esta característica completará cada objeto antes de pasar al siguiente (y comenzará desde la capa inferior). Esta función es útil para evitar el riesgo de impresiones arruinadas. Slic3r debería advertirte y evitar las colisiones del extrusor, pero ten cuidado." -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:933 msgid "When printing with very low layer heights, you might still want to print a thicker bottom layer to improve adhesion and tolerance for non perfect build plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." msgstr "Al imprimir con alturas de capa muy bajas, es posible que desee imprimir una capa inferior más gruesa para mejorar la adhesión y la tolerancia de las placas de construcción no perfectas. Esto se puede expresar como un valor absoluto o como un porcentaje (por ejemplo: 150%) sobre la altura de capa predeterminada." -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1661 msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." msgstr "Cuando se desencadena la retracción antes de cambiar la herramienta, el filamento se retira en la cantidad especificada (la longitud se mide en el filamento sin procesar, antes de que entre en el extrusor)." -#: src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1653 msgid "When retraction is triggered, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." msgstr "Cuando se activa la retracción, el filamento se retira en la cantidad especificada (la longitud se mide en el filamento sin procesar, antes de que entre en el extrusor)." -#: src/libslic3r/PrintConfig.cpp:1391 +#: src/libslic3r/PrintConfig.cpp:1499 msgid "When set to zero, the distance the filament is moved from parking position during load is exactly the same as it was moved back during unload. When positive, it is loaded further, if negative, the loading move is shorter than unloading." msgstr "Cuando se establece en cero, la distancia que el filamento se mueve desde la posición de estacionamiento durante la carga es exactamente la misma que se usó durante la descarga. Cuando es positivo, se carga más lejos, si es negativo, el movimiento de carga es más corto que el de descarga." -#: src/libslic3r/PrintConfig.cpp:1238 +#: src/libslic3r/PrintConfig.cpp:1346 msgid "When setting other speed settings to 0 Slic3r will autocalculate the optimal speed in order to keep constant extruder pressure. This experimental setting is used to set the highest print speed you want to allow." msgstr "Al establecer otras configuraciones de velocidad en 0, Slic3r calculará automáticamente la velocidad óptima para mantener constante la presión en el extrusor. Esta configuración experimental se utiliza para establecer la velocidad de impresión más alta que desea permitir." -#: src/libslic3r/PrintConfig.cpp:1597 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Cuando la retracción se compensa después de cambiar la herramienta, el extrusor empujará esta cantidad adicional de filamento." -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1697 msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Cuando la retracción se compensa después de un movimiento, el extrusor necesitará introducir más filamento. Este ajuste raramente se necesita." -#: src/slic3r/GUI/Tab.cpp:3263 +#: src/slic3r/GUI/Tab.cpp:3700 msgid "WHITE BULLET" msgstr "VIÑETA BLANCA" -#: src/slic3r/GUI/Tab.cpp:3285 +#: src/slic3r/GUI/Tab.cpp:3722 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "El icono de VIÑETA BLANCA un ajuste no del sistema (o no por defecto)" -#: src/slic3r/GUI/Tab.cpp:3288 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." msgstr "El símbolo de VIÑETA BLANCA indica que los ajustes son los mismos que los de la última vez que salvaste los ajustes para el grupo de opciones actual." -#: src/slic3r/GUI/Tab.cpp:3303 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." msgstr "El símbolo de VIÑETA BLANCA indica que los valores son los mismos que los de los ajustes guardados la última vez." -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 +#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 msgid "Width" msgstr "Ancho" -#: src/libslic3r/GCode/PreviewData.cpp:349 +#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 msgid "Width (mm)" msgstr "Ancho (mm)" -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Width from the back sphere center to the front sphere center" msgstr "Ancho desde el centro de la esfera trasera al centro de la esfera delantera" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "Width of a wipe tower" msgstr "Ancho de la torre de limpieza" -#: src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3055 msgid "Width of the connector sticks which connect the object and the generated pad." msgstr "Ancho de los palitos de apoyo que conectan la pieza y la base generada." -#: src/libslic3r/PrintConfig.cpp:2354 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Width of the display" msgstr "Ancho de la pantalla" -#: src/slic3r/GUI/PresetHints.cpp:48 +#: src/slic3r/GUI/PresetHints.cpp:47 msgid "will always run at %1%%%" msgstr "siempre funcionará al %1%%%" -#: src/slic3r/GUI/PresetHints.cpp:55 +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "será apagada." -#: src/libslic3r/PrintConfig.cpp:2441 +#: src/libslic3r/PrintConfig.cpp:2584 msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." msgstr "Aumentará o reducirá los polígonos 2D laminados de acuerdo con el signo de la corrección." -#: src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "Wipe into this object" msgstr "Limpiar en el objeto" -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Wipe into this object's infill" msgstr "Limpiar en el relleno del objeto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:619 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2260 +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:99 +#: src/slic3r/GUI/GUI_ObjectList.cpp:658 src/libslic3r/PrintConfig.cpp:2395 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Wipe options" msgstr "Opciones de limpieza" -#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1191 -#: src/libslic3r/ExtrusionEntity.cpp:321 +#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 +#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Wipe tower" msgstr "Torre de limpieza" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "wipe tower" msgstr "torre de limpieza" -#: src/slic3r/GUI/ConfigManipulation.cpp:120 -#: src/slic3r/GUI/ConfigManipulation.cpp:140 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Wipe Tower" msgstr "Torre de limpieza" @@ -8956,36 +10280,36 @@ msgstr "Torre de limpieza" msgid "Wipe tower - Purging volume adjustment" msgstr "Torre de limpieza - Ajuste del volumen de purga" -#: src/slic3r/GUI/Tab.cpp:1488 +#: src/slic3r/GUI/Tab.cpp:1834 msgid "Wipe tower parameters" msgstr "Parámetros de la torre de limpieza" -#: src/libslic3r/PrintConfig.cpp:2245 +#: src/libslic3r/PrintConfig.cpp:2388 msgid "Wipe tower rotation angle" msgstr "Ángulo de rotación de la torre de limpieza" -#: src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Ángulo de rotación de la torre de limpieza con respecto al eje X." -#: src/libslic3r/PrintConfig.cpp:2193 +#: src/libslic3r/PrintConfig.cpp:2336 msgid "Wipe while retracting" msgstr "Limpiar mientras se retrae" -#: src/slic3r/GUI/PresetHints.cpp:225 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "with a volumetric rate" msgstr "con una tasa volumétrica" -#: src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1638 msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." msgstr "Con extrusores bowden, puede ser recomendable realizar una retracción rápida antes de realizar el movimiento de limpiar." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "With sheath around the support" msgstr "Con protección alrededor del soporte" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:68 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:111 msgid "World coordinates" msgstr "Coordenadas mundiales" @@ -9002,84 +10326,100 @@ msgstr "" "Ten en cuenta que primero se creará una instantánea de la configuración. Así que se puede recuperar en cualquier momento en caso de que hubiera algún problema con la nueva versión.\n" "Updated configuration bundles:" -#: src/libslic3r/Zipper.cpp:92 +#: src/libslic3r/miniz_extension.cpp:151 msgid "write calledback failed" msgstr "fallo write calledback" -#: src/libslic3r/PrintConfig.cpp:3382 +#: src/libslic3r/PrintConfig.cpp:3581 msgid "Write information about the model to the console." msgstr "Escribir información sobre el modelo en la consola." -#: src/slic3r/Utils/Duet.cpp:131 +#: src/slic3r/Utils/Duet.cpp:133 msgid "Wrong password" msgstr "Contraseña incorrecta" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2368 msgid "X coordinate of the left front corner of a wipe tower" msgstr "Coordenada X de la esquina frontal izquierda de la torre de limpieza" -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:2021 msgid "XY separation between an object and its support" msgstr "Separación XY entre un objeto y su soporte" -#: src/libslic3r/PrintConfig.cpp:1881 +#: src/libslic3r/PrintConfig.cpp:2023 msgid "XY separation between an object and its support. If expressed as percentage (for example 50%), it will be calculated over external perimeter width." msgstr "Separación XY entre un objeto y su soporte. Si se expresa como porcentaje (por ejemplo 50%), se calculará sobre el ancho del perímetro externo." -#: src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "XY Size Compensation" msgstr "Compensación de tamaño XY" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2375 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Coordenada Y de la esquina delantera izquierda de la torre de limpieza" -#: src/slic3r/GUI/Plater.cpp:1170 +#: src/slic3r/GUI/Plater.cpp:1079 msgid "Yes" msgstr "Sí" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/slic3r/GUI/Plater.cpp:1405 +msgid "You can open only one .gcode file at a time." +msgstr "Solo puedes abrir un archivo .gcode a la vez." + +#: src/libslic3r/PrintConfig.cpp:1425 msgid "You can put here your personal notes. This text will be added to the G-code header comments." msgstr "Puede poner sus notas personales aquí. Este texto se añadirá al código G como comentarios." -#: src/libslic3r/PrintConfig.cpp:589 +#: src/libslic3r/PrintConfig.cpp:625 msgid "You can put your notes regarding the filament here." msgstr "Puede poner sus notas con respecto al filamento aquí." -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "You can put your notes regarding the printer here." msgstr "Puede poner sus notas con respecto a la impresora aquí." -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2722 msgid "You can put your notes regarding the SLA print material here." msgstr "Puede poner tus notas sobre el material de impresión de SLA aquí." -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:394 msgid "You can set this to a positive value to disable fan at all during the first layers, so that it does not make adhesion worse." msgstr "Puedes configurarlo como un valor positivo para desactivar el ventilador durante todas las capas iniciales, de manera que no empeora la adhesión." -#: src/libslic3r/PrintConfig.cpp:1364 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." msgstr "Puedes usar todas las opciones de configuración como las variables dentro de esta muestra. Por ejemplo [layer_height], [fill_density] etc.También puedes usar [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "You can't change a type of the last solid part of the object." msgstr "No puede cambiar un tipo de la última parte sólida del objeto." -#: src/slic3r/GUI/Plater.cpp:2390 +#: src/slic3r/GUI/Plater.cpp:2352 #, c-format msgid "You can't to add the object(s) from %s because of one or some of them is(are) multi-part" msgstr "No puede agregar el(los) objeto(s) desde % s porque uno o algunos de ellos son de varias piezas" -#: src/slic3r/GUI/Plater.cpp:2311 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "No puedes cargar un proyecto SLA con varias piezas en la base" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:625 msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "No puedes usar el modo de escala no uniforme para la selección de múltiples objetos/partes" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:287 +#: src/slic3r/GUI/SavePresetDialog.cpp:277 +msgid "" +"You have selected physical printer \"%1%\" \n" +"with related printer preset \"%2%\"" +msgstr "" +"Ha seleccionado una impresora física \"%1%\" \n" +"con preajuste de impresora relacionado \"%2%\"" + +#: src/slic3r/GUI/GUI_App.cpp:1078 +msgid "You have the following presets with saved options for \"Print Host upload\"" +msgstr "Tiene los siguientes ajustes preestablecidos con opciones guardadas para \"Subida del host de impresión\"" + +#: src/slic3r/GUI/OpenGLManager.cpp:262 msgid "You may need to update your graphics card driver." msgstr "Puede que necesites actualizar tu tarjeta de gráficos." @@ -9087,37 +10427,49 @@ msgstr "Puede que necesites actualizar tu tarjeta de gráficos." msgid "You must install a configuration update." msgstr "Es necesario instalar una actualización de la configuración." -#: src/slic3r/GUI/Preferences.cpp:172 +#: src/slic3r/GUI/Preferences.cpp:299 #, c-format msgid "You need to restart %s to make the changes effective." msgstr "Es necesario reiniciar %s para hacer los cambios efectivos." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +msgid "You should to change a name of your printer device. It can't be saved." +msgstr "Debería cambiar el nombre de su dispositivo de impresión. No se puede guardar." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 #, c-format msgid "You started your selection with %s Item." msgstr "Has empezado la selección con %s Items." -#: src/slic3r/GUI/DoubleSlider.cpp:1902 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:664 +msgid "You will not be asked about the unsaved changes the next time you close PrusaSlicer." +msgstr "No se le preguntará acerca de los cambios no guardados la próxima vez que cierre PrusaSlicer." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +msgid "You will not be asked about the unsaved changes the next time you switch a preset." +msgstr "No se le preguntará acerca de los cambios no guardados la próxima vez que cambie un ajuste preestablecido." + +#: src/slic3r/GUI/DoubleSlider.cpp:2121 msgid "Your current changes will delete all saved color changes." msgstr "Tus nuevos cambios borrarán todos los cambios de color." -#: src/slic3r/GUI/DoubleSlider.cpp:1923 +#: src/slic3r/GUI/DoubleSlider.cpp:2141 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "Tus cambios actuales eliminarán todos los cambios guardados del extrusor (herramienta)." -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Your file was repaired." msgstr "Tu fichero fue reparado." -#: src/slic3r/GUI/Plater.cpp:2528 +#: src/slic3r/GUI/Plater.cpp:2490 msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." msgstr "Tu pieza parece demasiado grande, así que se ha escalado automáticamente para que pueda caber en la base de impresión." -#: src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Ajuste en altura Z" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 +#: src/slic3r/GUI/ConfigManipulation.cpp:59 msgid "" "Zero first layer height is not valid.\n" "\n" @@ -9127,7 +10479,7 @@ msgstr "" "\n" "La altura de la primera capa se restablecerá a 0.01." -#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/ConfigManipulation.cpp:47 msgid "" "Zero layer height is not valid.\n" "\n" @@ -9137,28 +10489,28 @@ msgstr "" "\n" "La altura de capa se restablecerá a 0.01." -#: src/libslic3r/PrintConfig.cpp:2667 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/slic3r/GUI/Mouse3DController.cpp:308 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Zoom" msgstr "Zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 msgid "Zoom in" msgstr "Aumentar zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 msgid "Zoom out" msgstr "Reducir zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Zoom to Bed" msgstr "Zoom a la Cama" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "" "Zoom to selected object\n" "or all objects in scene, if none selected" @@ -9166,14 +10518,16 @@ msgstr "" "Zoom a objetos seleccionados\n" "o a todos los objetos en escena, si no se seleccionó ninguno" -#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 -#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 -#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2727 -#: src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:241 src/libslic3r/PrintConfig.cpp:816 +#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "°" msgstr "°" -#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 +#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 msgid "°C" msgstr "°C" diff --git a/resources/localization/fr/PrusaSlicer.mo b/resources/localization/fr/PrusaSlicer.mo index 5a4620fca19efe78e33258c4c1efb857ad1b9cab..0f66ed22647d7ad9595a6036577979f9f74f21c4 100644 GIT binary patch delta 81042 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%0AkKF_XFsMyJ@_)}!Ov~|Z`4j2f0l_v3e;3&!-H59 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 delta 51796 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ຫP&j6{wLohg<Nyy}s&&d0d}(;hK{v>}7!Wk5JV|9W;6V zF$FY3Kk*T$)j!6@7h*5sOHlhb%`4O3Fw~jf5!Er*#wVb5!yL?j`%xWwsSJSxe6P*E zPKB|E7sF~;4K*SQttYSq@%N~6Am1A^Wpz+Tc|+9D|B5=gJ7HezjXiNamcy)X1H9ic zcY6}hoF72la11p^=TT3;XBdpmJ2U4QP|y2Hcphh=rmpjQGt^_PtFaX6XR#(G`e5Si zu^;jE$W*ybu7Ax4R7F+X2{qIsP(wKvHI%DSL$=p?0lyG`Y~v3;nqBY_wYZ{v3h@4U z{sgG|`eS{ZWYb@v_w)a{|CtKLp@wuWYL)Lst>)XP)t~%xfcHD%c~EmcAGO^MqPFi{ zn;zqf`PwcA>cHuRI--|gG5mnq4SB!PQ9VX05h#l-@G-7N?e}TlOvYoV?RE#XEhBt4 zQx*f&vv{bHN{<?;JQ#>&Y`it9!M$yK7HWi7qxbi}hY4t(UPWbmj9L>>S^HXyu~9dq zLXAv*8?TF6Or21>W(Vs2r>KWnbf4dANC+k)Uem@qp~{)$^Sj<$ts_A_+kqPD1E|$} z6II{?)QJ@-z@(=_O;rX|!^+rrV^qUk)QAj0J%%Tvrf9LfejYWVR|8zX_tg7Nf`&4q z-|zheL?Mhyd<m+h8&KQo0(xgUh7nH`&NQ$wYLySdB6tP0D-wq{9ScD{RSRNy?1)+$ z+g$=$_0Le-FCc<3D(YyChx!0f%38&y*F#k>8rAScs43iv>e*q`l)OMK(j*c6W^JI# zErZ@j^(3Ih=A!0u4eHGQg5xoBB)|7X=nia5JXvJZqrRw$hM=ZsDQ3hISO7nwrY0nc z-#b4lpgP(W+u~@<ul@gtfL3itRFk1J>cDA$>iJMiixX^olXWj@O`JeA;1LF5lxTi$ zdu2j(q!?-hen-_a#$KO|-oO93fq>t~=X}%<o{w${yo*7^!^bcUOOKkO!l<<ohRR<Z zRd5s3h;&9Zcq;1ahMl+^<Hj`Q?8dItcL{g7T&Nh^Y_sTb{N6{c6sWnaiK?(8Y7zEC z&Gj_Y>R*nk_!z3f8>kWU$2D^s1GS6dq4Fg~m6HY61W+%!>f!hJ=0Z>cQ*klWHmr{- zuq%ec{;2IV1l53Ps9mucwU`c|8h8xV@SFDfBUA(4p>|1xgnsXjQ0gaS|F=;_5>!yR zM1Jo)sEw+)3F^kSs3Gr%nQ<iQ;j{?@@i=M?yg)twV<k2X$%-18VyHFM615G-qn?WU z6SMy{XJ1Ls0hB6<-}}K~M$`z@L9OE7QLA?Zs^U4Qf;ZUsHPj+|h1%EAlA8Mpphl!R z>iORS)zFcskze5wP>WBY4u%(~q05)dtcl{NimRiZYQNzk?1E}|vgCg6E2Ltm`!1pO z_ifC9u~V2`Py&_S*~S;3j%fG14SYroajKN2!mOw>yA-MiO;L-oE9z(+j~b!bHhnW{ zah*er#9NylGtg|)jHnSSY2&{k^|{Vq0{Tca-n!LXaPFh__bb$pMhP+%=ELU1t6>}5 zgjzePQ<>GC9kq5su>uyyLO2fd;R$;^VrngB_Fo(Vn)`HK0w0a6#Zg0C3xC1hSQRgz zhB|#3Gql;QjjiKR+io{%(H%mK;49Q~-=EfuL}H9V{Z0`Ax=;x<bj?u}_qXW_QM+Ip z>cBZ+)32eX;x%f7oOEW2vY~of4mE{?(T{Uc^(@3d+=gx@0@n%D#z^VS4UJK&voC5+ zXJdNYg<8drP}?VJuvxq%QB&9y)sWFPeH*GnS1=>KxADLXro4g~*#D}iISD)roS~>5 z?Lpmm8a33<QB&|9_2IK}Mss~OYE^H;oXUqfA5v!Wdq3T-fZD#>P$PN{mH#6q#tfNV z)1wlZ&4rez22Dk6pRE{z&+!=sWidk+J*(+?R%->!!u8)!4WEh{+4WcpZ=*&iG@I#p z6V!-|a0#e|>#-6Z$1qHq-S7RRvKeX$_MjSc2X%tQ&0!W*80!AIsERwGw&hsVL9+<8 z&yS)O;cHa>a5+u6ZZZN|Bn44t`Y-lE57fal71i>Ms6}`iHC1m=1!c))o(-i?6_>-P z*bH@WbwDlJp{S{yjFEA^x$ZhEOu*TXI$E!x9x|^m5W|I-cv@72`A~CN71h9Qs1cfs zT72tKYvCShDih@Pdmp>=qB_zGHKhwMh4%jy0vf81cnXu|F>B!&9`td<hWfp~^}LtY z@BQ*<zx;k@KIz2^Qb7P;ycXiX!AM2@4u6B_#4YZ3dSO6GzxTc5zNP%$pY`-9?e~5f z{s7g03T6DxCF*wu5YUkPQr5J%8ETG)U}4;XCGaDvX9dfdgQx@QvAYL#;2c67(I-)> z`w43I_{*D~M?;Np9@N299$gJx7Xn%Xld&YOu^B#~<~n5sGeUJy2S{HVpM;u%ji}Xs z-lhjsG@m8YVnxzBqAJ{pn%YOGbL4YH_P<tV%1WkXrBOYuhdR5bqgM4J)Mq(=Wz*AK zsMVYwwb&}6rtlYhjeRf(+gCBWW;|+y_M#T$5!Cj(U4{K0jzH9^rodPjlXz+y&xN{P z8rx!doQ9imF;=T)=JGRY3bR)?yC^^Ep!o&W@R6vY--_Dir?42NaBKLzKd)_!n!D4e zIeUg0>UXGZ7p0~dx@6dlcy=3~jLNqd)zF<-6!)R-3s=kBmjJa^GNK-K*-;I0^AgaI zR74GFbJU!6$22$vb&_pGjm$$-!5>gPiBy|4!fLOL%0ID=`P91!)zE0am?`Oq3y3$Z z>-YX-BVs*oQMyhu0&3A1EQwQ42gOx<gHKTV`g(nHrblgH8q^E5c>hK}4LFFai63of z&W+xU{NC?|{DtGV{sk*@eRLBuCD%RKf6<znuUHDA8qfnL;SQ{cRhyY9S%hlnYK(@P zQA2pZre8&k++Ec6b())ULr^2u5jDaCQTe7QuKmA`fad(5^%TY;ei^m;pP&i||EpQG z2~i_b95tuEqZ-y7HAOD!{&A>9IR~}vmZDD3oz{!!?f;hq)S?(I%;PgNs(@cm+w(Wn z+)h9}BQ~NMd;zs~Zem4-_&w$zUZRzmg02`u{14P;zs;zQ+(ec8sulZR1tx553eJOS zNKI4)oly^!KB$qHg57WpYFh>W=6B{`9n>QIgrS(Wjp=a%)Vc6Gs-DTH^48&SJl=-= z--$rYwtoJPWB9TegK=;>(~uRYlkpg;r;kw|FutSmWo~cQLQOnGyeaDF&Dg;_^-5wm z;?+=7R2yqyBh<raqf1~kf!i2`A#B&tWa#m``Lg>Iw&Hr$PE^G8KQRawboP7S13uV= zIplh1SMw#+CLBaOUpK$^4;$>j*2KfQ`@Me?at&&iB<o?)-4g_AsDPfdkb*~JS>ls> z`MqyO-NdWJ5A`<R`Iy(o6m%JjkY1v%-}^P)LHH-}T>Z?Me+)Yk*H>6MaU^PlcVGqV z+270OItK}8U&b3?hO{~UO?(Wt!;pb~@9%ZyVNc>o2ifg|8;Gw%<!?QhMN0=_4e>jh zi3bfepBb;>T;d_a%){&=h7pfFTqiGM_lp<cp@4b0kZ*+F`)k)uSey7UtcIya`n|t+ z?1m?a-^6;jVw9Qt$fM0u?+j)qJ=qwu>MLR(@y@8H>15Q%ox(kuyO?9m8aRWUi8mZ) zdUO_75$`$P%yEVZ=B!_W1xVk8N%-LL8AIrKg2{gGkIu?Z;b0;?`yYO1FzKbHnupcV zX?$)V-g&y;`^Dx1Gbncv1r_?suYYgCd4L*$?Xx&qiND8|7=MnLv%Yiv&QY!(#k!<V znP)yBy_#=EYSTi$_fIXv{F{cVJX}Kl&x_2LYzr6rz2AC?vc&KGbDh<fu>W;1TqU76 zI!pb|JSc&w@FCX0$jkiBJ#32FEv1*65juw}i1%7yc2Dq1zxV4kxmM9b8ZZp^a{c>i zzT<&=*O>F7%UUxP@z=2$)045vI=|z?9_#(y|5<de4Sa^<hV~m-l%zjF{lQ_J&3>l| zmf2#4bm>+z71g(yXT><=$4AZs9Ds*+lAm(Q?csUPeamq_@t1r34*$-Dv(DY;_r8rj z<A6CJIvzAV>w%HTnDUT0vx6}L@uH}PhG94?d)S<8m5!KQ(GH)IZxoinZb!{CVHfI1 zKZV*ww=oFay2nhQ59(nu3w2U0K%IQcQ76_B)JYb2obO&?T8xe}P)F+$)I;VlYPVcR z9p%|hm~txOaN@tAKCrws>3sk9r0Hoo)MvSD7!3<xWGsUVu^Ps~kEoG|ddhrGh=cl7 ziXhZMRr<7fEC-!22TvZ<k=z>9u|XJ&qcD#4|9X4j5Ngq#!bJE6(_z%J<|A58)DX@? z^?052EQSz&jVUqRIa6V2)Z?}>YP<G8jo5k|hkMcc|NpLb-h79m5$c1(Oe~IPP!-0z zV0xMsb+CkBQv4M)#{)1m9>uEo64m3P7tQ0gE~>|EF%YMqj_Qr*Rw7X8l364(QFF7x zx(_uHS5Q59gQ_^nWiwUjP!;7wHLL=*$G(^wpJP5ub;W$Rt&bYf?x<(NtSjt)eUdpt zf?DWYHA9pE)$>r)oRvX+aHxWQY>HYdEiegoLam80sLutHQB%1eHRO*_6~0G(WDCA# z7H6Sr?0@yR9tm1>zhiyuhvV@Yw!pU6&GY{ps-mZ;#rYa@;Ad-=8+=Viyb*rH(3?Em zSe)5!Q7-ns?f3o_of~)j-v5L8QunU;==AG7T1tj>_x(<PZrt<0@BOJ{@rPyv?xGs_ z6szOEsKr+Pk(u*0s1GPRupXXAjac@_X6lM#2I6&5BQO|s-JM22Jy?cXL^n_weNW6+ zD49^Jy&d+)(U=CKKQ%+26F(5Ih-I<lGgHA>)YEQ0YK`2)Ecg-EV!G$vb=SE<Kyw=J zh55jc2&)hufd%m@7R7`w&5+f>WQ<hYf6PNE`z!NU?u&KF_W-+N(br~VHe(6mQQnx{ zQVF$P|HK;F|Hlb5A|dFl8PWmRm-t-NB1`$s@BN=hWx|%k7oiqq%=hL*Oo&m4Cqpf^ z^r)fDjm<C&HRQ`sC+u$2R2{_J)bHFNpzRg+gBj{fs2j?mc0nUlfgMr1WFTr=F2hjV zk802t)D(vM*BFeNx(cYZ(gt;cjzS&Pv(WqZf7aTB?Wnmujk@tYYInr@XwHX>sD|W6 zHLL<=#s(M(N1}GcBn-ltsB(6pD!hq-_y+ZCiTjEDuY~NM%uhb5qDEpk>ftfR#&_a0 z;uld3>iD18hC?wN@iC~yH4*i=-i=xVPd@XN67eQq%v6s5YEII>P>XWeS3Um;93Vjj zzd-fO|IM6e@lYpLDGb22sG;s)?T+f9Yn_G4x5K&{bz<&A-FFMs;76#DdafIFpnR|w zzFGsmoAijNp^bqmAfb(?#2CbbQTK<U7HeTt&&r`HYL2?UH7Z{x)Kv6DO@TXxfaY{5 z>VVmfy5WfRENV)wp&IZOwTM1jV^EEzDhL^AKG}xzt{20Y#A~4LYmQpfZBg|NKo+sf zm)haHhsSaZ=E4os6h!cuf)k=zoEvqfmql&2wwMXKqqft0R71B~&!X}_MU@vlAe`5+ z6sUaZF|zi55dtc(EUKk7P}{3MYHqutT0GhMH)`lMqqfxr)SSOZ9b_L-Bcazo#+=3O zjMc{ff3H84S^Ix47gs65t0-gN!G<p~frUsbsM2{IA${^s1#P78tmKbu^Ixa+6-k>z zJga)bt04KC*|63_56aq1{01#tLqeXF1a8_wJ8<C-ZuU{gE1TBU-t3jee~Od8T)0WE z=X(EiaS3t-+Uk{~H{ovFt=BKS`%zspThapV49`0fB}ODqQNnG>Uyk@}wT;)QpK8m? zwf45`RisxY+}g%#P^SBt#DrR_yjl>hVk<5|rUw*Q(`MG{m}ncpbJu$v;J<uO^j={! zB!qj@@Qz{|keYH66Hh@07Lm`-`;=|uc%%8%1(i{i|7;^;DJ~2q{)HRoQqVKP=Xsam zeVF)K(wC6$$1A#S=5>Vo{^K1&rA4_O(KdD;;cTSW<vx9y&}$&~+#$^@9mvc3PcppY zrjNWw=o+sVy!j;|=U*y*!Fz=oU<=lDeK$cbefgs=Me6@_P3eD=U$1PWHzNGIZR}n0 zUL?HIrSO(N-E@go&9?DlgdcHJdm0vrw9DMUZ#p@JdEZrIi8tqZMXtReZ$Vr5UxW*j zR+NgL5dQJn%YD;%>vhcFxSJ>_fW*}#WFo9rB;wn#F@=X=KML+mS^<W3knM4Gt_`yl zrm~jf{@1(<bL}?w={57G1}MITyft|1L9s;tD(XWD<O$>bII=34^(*I_sO&HqieLsT zOQC&ufBvbkc2ts+v>&gW<gIV7=cM;HxUN@H8r_pJ-~Dv2($A1Ty^fBIR6dxCak;5F z?+aYqipME@4u$mP{SWU+<jX<6v=n%RJnt#A3i&GFbmB|6u0y;BZ@p@9ZJljkBIJXG zlZ|p}Q3mI}Gh5}m+^p9MGXKKGbzGQ9+HYK3Mho@2Yzr|lb_03z@{xZrdCGI|Zri&8 z_?&oBuKk62y&`P@@mAb-&*sZx%XCxPguW)P_upss#xLAdp2iF(z6l@Myy+<@D(~1f zpKdy63v56*5%=jek2F51IthtyC;S`v<Kk3X4j<2Tbn~r8d-E`Q)0i86yx!UhPI7$% zH#M{)a+W-mxpv4_r2KJdAfINPvi6=qw#@zH*}{8@jqfJhjJ(OQm40=6KanuoA{CU7 z0%q9E!<C7!Yp=KA+I{j2w3R6T3$87vj3%V@<NYg*jA=X3);9Pxc^XpI-?*1+mq_2Q zGSvUvBvzo3xHyc0x^uBOi!2V|hg?r>3u({w8N^TXPQuNPu^iVfA>a9M_Hey3=HT9= z+^bhrDosLMuOzlpwYW#$Uuj7mw><^5=0Y4Y?WX{}b`sZj`}Mj)I40@wD0qNcY+oUy z{Z1k0NZ*2uZT<&b*GHR1yw8%RkGAc|`<?d#8q<!nT+~&F`|7LzHAwu%`^SraDAbw7 z`xJ%V!L3|d!^J;%_oXo%DM+v1xc2{F!CW6g{vaBfiF}!PFDFx5jLf?y*Y#@fzkAL4 z^S-|oi41x@<6?iC;U4Piq@EPIlNN6zT+ueR5tTeAe3i7Zy!FjLz0Q!2FGjpqdOP$c z#x|u>i>aq6dHWI`^JD*?A)yrszhWvJ!aFT*z495HNyM|;9^|3ot~B5c@hP@qzD9HU z+D_<}^~5jR##ScZ2(FFbo(wp~mgDt5luUoxjJk0eH~vGRv1xsL($A2luZK61zKM4g z-ubxRiL_`GmYzcO`j>Zp3XZ{jFG<hBy+g=*lCWOY2`}gR0<<qP{xNI;KT@BO=`1(v z8@Ea6^#$UGZ7*wKdRw6K>u;>yVGi=~jRr?WZRB1*fvdLMV&pGMT6W%<Y+4v$Z~uL# z@LRlpycTky&QBHW<AyX8ewm8&o!<$>_mKGj`S@*hrvz`kdXk=za&mYDn>4;;;{So3 zCo1VhDRT<%8N37R2)xz7a)1KrbJI-jsb*U@jCfwI72sOUp9+jhK|4s-s}GIQYoWa- z8}Y3+Esssp_f7N~N;##tcLDeIB3yyAf`r``WC)^ym|P6wLWsR_94(APhP}MMkU5iG z$%#p?t`d2j<DS;!PsaUK$oJ!=?<DG96P-tSzmmS2@CfqOCEpCfcWvI>5$*XOgG9Z` zlPL-X`iUPS%)d75jIs?HO8nVRmE<6uFRh(DR5FKqci{*sh)%vyKjo`Tx?VXA-hapQ z-+q*RJv{3#0vXoYOeZK{Bn9X-ghIX(|Bts`4SBaFT$JmjZKL$X-el5>(2&K-#A`X% z9@+-1Cj6f8Im$n4)5h6*yDPKS|6DE>rci!w-zjS|>Dmh3!)#{7(@@cS<X4}aZoGe` zQoWYh23NDj*Y+bl6M6LFdp%A=%4uQqZ=;Un<S9?w?ZSmECg1=5TZjzR?Uc+VwT`_} z8UCe`CA^!Eb`8Igw;tgF_U?W(G97QdvT=Pg?@->2Y#IFVfOCVmURTxsqc$><3quIU zpul)G?J41K6gHLk3*P$LcMtK;xPbzn<7GM!hqTP}s4!^@Dd#D9r*p50iD)}Q(0kn> z@do$Q^G3&<KhA2~x?WtkYFn?|AGkR;86WWO#5KKq-i>@k!?k!+at?pzomrI=zhKLn zKsoJgSqrFigT22LW$0&YwMk3nl6Z<64&h3hIRb^mB^;OZiDb-$o4IKX;mN%93P;*b z!lf~yz3-;I_KC8(Q+O8MKVC~o(>Ha0yi#%PE%&(tsB92{fAPm_yuC3u2^~oPW((H! zRJ_mGyiKWmJ$d6Y^hHR|Wg9Y$5z0r}VJiKX_Xk_vKioHzeEhM2_kWL0&~?JN_?1vH zF3uvnfkN&P*K4z_$VVYdh|l20BZSA=^tv=azc*3I%dOuO=K~AxY^4AEnnamVxMu+6 ze<B=6Ip27{k6`CNB^UIH!i_s@cqrkPCfWP%b^g1BLiTVyIhAZAev88Nz4!IJ57|n8 zBg{9Joffu{5ePp}ejDFy%Rf)rAl3hbLORonG-OOo;vQSjd@`otrd*`ywcSp`ZQ@V3 zR*STVw$Q5d=I2*it{3N>hiRy7?^{TGG2#5=ZNz;s(M?EYvAA%PNE=(&kAkw0R*LIy zxhdaI*FtRu{oFJ&Z@oTIMrspu{DiM^pE?(f&MhWh0rS|rV~Niqejq$qBGbaIWR6WG zOGs=<rZZG_n6!yxT!_z!H?cQYrqDseC*Vq3q2TX5oRZwHS0nEG!}hwQZFpKNM*4g5 z+$Y>qaWyfR;e0{n@7$P#i)-zTDrh|6|FAcCVsk@tq`l61!g_@g4^PFTd9R_Ndexzf zPbTR230EXM)iz$qq4wT4+?z`KzlciYm6Y%x3OP^atF&|yX|o6i@z(wE`Oipu^AO#@ zYY+E4q>_Z>UyFLpr;KSdT;It5@rr7%DISsQIq)Cuai>tgQ=2QAdSH9Mi*P<}de8Nj zKizDzI_rNLrSrB?BgwadLUVBK2KRU2y^?DgR4%XDbU+_?`O`V4KjpU7*Z*k=@WX@u zy-JXwB=MJ||9FigoW$liM))=F;=~7&_bKlgwt;a-i(p4{3^$)79!$It*XR9Ip2|JJ zedYMpx%X<!#Vdpwl30Qk_pk*fA)JKtZd^Z0s|(t~)6&bM6kdTey%O0Gcx9r_YOd>* zlItCLpP{@~lo4dp`Fk#>4EKj<I4*J_0~tDV!!p7r3D+cjrY-yyX?h(cJ--d7pu+21 z|C4<4xi%Nu^Da)Fs$Oo^6P4Y!`E8OjnfuC;Z<I}NH`9vKBy1z00pVGgiyQyMdK9Kt zL)*JjRG5Q21IZtmJp4ZpINNQW?xasAuGa<(ME>a9dnM$*)5!ljZ~i|&oKn1ZaNlw5 z|Na!djYv&0?ZuU3x<Xoz9qQzSb8)R56@25`S>8XtLWmTmK)te4VL`(2xhFC2ZoGfI z8ghR%u6_8CfMd1)dr|2<Zj4UCpBUR_7*9I?;(+7lJ%F3<@!r6-CO@t-v?oZLKqWoN zbA$B4w$VEYm*W0`r03`QZQj2V*Xz<xQ<C4MfOTBVWP6|tZ+L$t?JGU4Y;P(=L9s|H zs|>tW*-@BFnqIxJq)i)blAO5QQ=0p;VOPrUK*hxg|Bd~~qkp`~?L)#E-jR9trho<9 z5Ws~1!h;D{w-qeI^Td;p?;Hgz;60DV*CjrR^dGN|+&6)@@23v+=K4A^_-t84xi=H{ zPBf1QjzluYCSeyBdf^1#-+2FcMWMhSuU+JA&b8+_9Vb$F2O6Q*RPJ~5<`tiNlA53s zfpBpfE^G59r7>lE%>Q@_xkQH4xPw9qQNS(=twDyIybE$|2<bPu-i>sAM(eB~o}Fut ziT^{v?Z}gbH2ucVC2T<Yk5_co#BuUouxU4~#c;m9{%gWpuSVS1n(zVM6Dep04M{}W z6f%YopGJCT{Dt=x(u-j?8q=S93!q+uxn~98L*)JOIz^xjWqcz4|21|U@KF`rerIMw z2?Qb~)WD^Nme52X)BsWggoIv%O>&bgY<8C|2_T<AK0ZJY5LP&X6a}eL#0W!?qESS; z1*LaER8%Z{NPYj=oj`o=d++zo?{{|2oPOs{Irk>n6v93boxscU>fxFWhr?l14E<VY z)lUG2La94i1xYZD1Ac)kRnQImcF<j;Mh<j+%})exq^6bLU)ugKY&+>#6EtsaF|5B{ z$aWkI+CX6!P=OD41Iit=VkQzAqK!WW?+@tl!u<jL>*&YA<~^-%fqp#X1@Ju?c1hr? zUkp@G3AzIc6H(89kr;*mgpm+zgkf8q{bTT!L9sQQxMBDZ{T4tU^b{-wT?kRIIS<>L z(Cwt{`$8`X3ixYi%kRKaNT@V0N(T?xBEAKGe{Cs%@juZPLO$rnz>neV4h-(2%>=p; zU<2CURUjnr2WSNhjxU0@5`GjM(8&#gj|SikL^}i*8U~%C=!bzW1)aRza6T78Rn}bB znT>@|!5_L6Fvy4U1RX3S4Snu~?PZYFAm0z?9pI-4=vMG`8Mq#{dD_ni?LP|rH0V|d zeFH|wQF}0FgSity)`D&b$K!xywXxFb3E4B~_kq(01bG#7jgWcp^Ba6->3%+fZG(Pq z=q*xykXRJ_D@cZ26!<qpSu7tge}VE{D7%6`lN$<k1+8GBARVgj0u^l0?K)W1ML!C< z#lSlY4-WL}Ahln>>x;G!W<qx*LXL;dC2fCE$B0CX*FYZu?f~{v??hsCp31>i7`+Q) zD-^?k)gg;PzYwel<k9;5a0zb%-+}NFbjHGATi8zl?{m-!Jkb9Dyo+e3LuVOqGWbo^ z#X@hs+7mq>6nG&l160rz?FsPrAlNxv#jn7@=&#U@)8Mc+P{CUW@UX~5C|*|t7+Hk( z1$4SV|0Y@mv5*gk&rxbm+y%^qU<VkBA$$vghQT;o2Rj6r1STOV2e6)Ytm<h6@9Cu1 zqyGVHj-Y=_%g*W~D}!Gqq;4q#`Z>^H(8)^!QA|771Hn>Y6pZ?5!-Klr59JX^ECETr z3!Ar*#6N(aqhAQmz;+V)CK#Py*GLPV*U6}E1auyvKPzOHhyNdh${w9$I7<e-Q71DN z{p#vIX*d9f3E-WA&IRxabYKZO1-u6;QP@_7&f7ZRbhNL7eH;Aez;~ek8TtyggMOs; z#D?0DV#eVLAEDicwkYJG|0^6EM4*}wxMA}?`pXft8+i564g%hU>^tbTg=_%Ynz(=f z+7ZwnhJe+;{~M@1@kQV{2=+ih!BOBRK?<uL#_7N>(f7c~A_OS~x<2%$;;Ndd0O0Kf z*3kCaG}vIx2jMGxeh8gS3Xw2}t%AIHDtj2>t3iS=77AY@;LGU0j&@CmZK;buCX7x& z-T=J0pvRyMgU(GPb{q5q_-TN|^0o89y4?lYJ?LG6>^a!~@HEjpOKmvr28Bp4zlNiR zT4)134*ZqCW}qj-Siy%#tN|Qfg~Pt!)j%5${zLFyhMp7hOwgY|)(Gt+$Yz6I2#Me~ zLyTk4!}Vk5(~f6C>3w9^Pxs#g-5x3@(2j%bGZ;*R>_gyL^xJ8tZ|HUd^a`N@0xv~k zL%`^c_E%sbECXE*xClBbe(=|8tD{|otlmKoE3hP-)(1Ai=&XX`NFBrrLykc6lrbPn z^H-sr0a<zQPD54?xDkF*!K;OY3&2kStza|y3a%htUOzqDbHQ|JXZ3WO0S6VdJPpPL z!2K|+2zfu?QSGpa*4Y4FhUOhn5dc4fw-$0cXe($1b9D0GtAF6zQyVKmS75~={mw{g z1g>@roUTGLg>Vr4o^T?8#W6y2AS=*LBcR_zC((}={@%$A&Do&6ya88T!P^R4gD9WF zTELTnFOh)(x{B`KgH0rK1_P&QKmWj`d;+=yum<!9QK#q(cEbK$=xzkghHYLtJ_hP* z?+(Qep%AZ?ZE&y-^mViwV9*Qnv%qxdbw@IX!CR|Z@S+eX8@3hTD-yg$Xs1Ij6)1rU z#slv_w<Thh3i0wR?ZB9a0Jp&W4fIS1?t@+m<qgUT&<4(r>m(N;NJr=#L#rSLw%@>R zFZu_73D7;Mbr-@<MI@Pu_84?aLw7g&eL#1CZcX)b=W8&&2ZOhubYDAd0VfLPpnnar zLy)zAUP<&nL;prdY%xIB)i#<H{Ean5FF>FVU=xj?uY*?52#Nm%?1BDEXqT#z>>D_L z21-{7m9)cJaQ=SCF8CP$-wxh#w0_tq$byrOXe%J$&*9@T{G9;K23;1q3g$tl9r{;` zBzi#Gt2J)<2}1P%>{lIt5B;7nx(TIHz{#NBgnR`Y=Rm#`^g^Yl1FVJoRh_)DAE}+6 zg}#CokbMT9h43Ea9?0sb=Z<9%E(fjvwuPV@vb>8nLK`ci6X5Lt&Oo3X1U;Z-L&3`c zDu{!9YmCAK=-dHjgxHo!(60>s9i3Et&<2u;M&DHLolk;z3@5Ag)ez`KP`IQGR)BvE z{kPzB5^xSsK_291fP)}Af%aAK2f?;+NNhO`JHOVQh~yO5koW}9=U{VEB_14qv~5&J z!w?vyLU9<Bl0i3vfgAGQ(ccZH&7fBn{Y&WAM1Ko{{{}3C8sIgDtQ>S^qAd!i&}pMb zFA=`;N}{tw2mb+dD(DM3>!OB}wb5=k9H!+%kl6R=?*g_il7O-+hyHOLyf$pt!S4$2 zE2CWidp~4g7hZoT)N{yuw01NQ3g7BsivceUct{5xk9IXo{sm{<!T%oZ9`pwSdw?zq zcXi@r;I9ej5{OX<TU3o@g~3svT?baewVIxT1a9dhPV4qOWH0C|n-6-bPAUxT8aV$R zdS~Hd8e}hNJ>~NVWHZ4#3B9dIWCnP(^K>>oFzYETz!4oN*a7`LWUoT+9_UeUFcSg; zyf~m6j$VYUKKP|^5qH5`2t5z_|3Lp7`U+a2Jplebw7Ib94c-A@aQt6^pbrd2!JrnH z!*o(0ga4iOD;UfI-4i<hhRlkq>I0qvpKcq1Hwst=zFvpkKjG_F$ilJQ7NcDWyL;fB zg{%-7sprlyn$cK0Qo<T=qF^3yYLG&`4d)6<z~L?}zlJs!j>qYKE9jI$5CySlGr`XW z-3I(P=s7{x(Q$qU{fc_VssctbIxZ-27*&O$f-Asq;H%&@M9}Rz(PNNb2HhL{2;dtC z@<7{|=>LTNRroA{HW$NvQOk<M=11^<))&$W{Ql}0Ya0X`AQ%qg+ge#AV4xohc_pBN zmw^{xToZitgNQd^a~JwG(0;0&PC~l|vO`cgjrIy;$CbVYrbYz(Lde?;;Wsdv1wksf zOF)l7z&LHR1P%%z0ldAs-xq;P!;u%df5Emgl(y(Z&*=73=zIq(g!-CTtbH5B^<h~P z4yM4_w{RW}+G4~Sw0JeENBdT@##M}5o7eFA)6z_@H^c96Of<X>dzzUZ7uaxcL;m>B zqghF#{tz?OYxkM?2M@gz78rWM9XNHOMWE6b*YeAKc^g$}Lf`Imd<&}>h(6gr%4g59 z`Akbf8VEG$Hn$@3Po1pFN;%D3!|ky<eWoY>$8WB){O?XVSRmt!5m<jFKah8}UH;Lt zt9an|3xfjgi!A~lTzn?*=wg$=gNt#2;g_1_&%QL51r}X-5IA`C)sjA+>GauM&RY3j zU8}|Nqp$B^`4?{ZS^n&sCs?4&Pj$+7P3{`ovW1bBWu}cYGHiB-nVz3~tCI*U`PGx( z<@Pcb`2Dx@fqTD?3cT<~y}&Df{43Dt&(7TC32geaO5m$M+Xw30G4co8Iluz(cdHf; zIf%>edAAmeG;&>@ab6?M<?)zlKF7qs+`sk&F5EjB=5pAbnSnA78s*=)zmW%id{8S8 z^Qc<>?MIuLEXUYUCV%71WRziL&&v0$YzU)D#n|zZrq}ct4eEIt%Cp7TXimu`*$o;H z&f3!UaQ3y_S&BX6w6_e4sg-8)q~n@w&P>y5*qoqU7zd}{L}y~IZDJ?7T!tNx2g<VR zRyt6Dts#F!){Hh*WZP+46#G~vS7Ki=dbSGNFZ)+zJvnWx&N|b>>MT}vjAlcb+*yM) z;8eaAn?`Z9*{4*#4jVvY>#)J{cpWyG(e!$3noOwA%CfNFpvoRG>@+Kp?MgQtadC07 zZ9~?bRZyvQG1HBKX13e(*nEDE=_P+7_I#w_d&)90Tplu}vUz1PaDU<~&rk4q{OP7A zko0{onl_a+D)p4-l_wjq7)C}DHbri4!UU6%acmo-%S~CLOl-!YnEbjq8zE$3EA|$r zur}-^+S-PVdB)@NsX5uhJ}KK}c++eS8XV6GsAfC1LLP6&nhN@NN0!kf&E`xq9hfF@ zmYyz$!<CDBX{5WH$m?le&jXp<iRB3SpbK*rqb0rBLg`6l*~RJPAXZl{8^~5$sn;-8 zo#qc?vuM<C)|)O2XSJyB2sV(mk6<06(#;9VeO53K#>tgB7E_6Ck6>xiF_PICogc+a zIphV_iqWpotRr<8!&2qJF^uu@S*ATR%NK7+v`sWUhDS{X8vid=fv%*o5i~iCH7Wt2 znQ1!H>0%oDvut;at|ifBOE(ndrDN%=iG0pvYZyJwVBb<pJ9EpOc6K0ayPNF`qoaOy znzrRIKiPBHuQGK4OX2kSB=#kpdy!R>)h4q97U9F)^E=byE&W_RlkVlQ&*=6P)}^Y^ z&2Gy!vB;HV(j<pzq-%!UK9$w8%BwS2E~9r}VI#|RO)%0-kI$ZAPs1%TFbnAIS*(jJ zJ)7NSRC*3GWUD!>7N=G7*z<II9$P}oUt@7pc|My#AJ1p0)Mo+fC-*L3U$PQ~i->++ z$UO9JTUIf`use+>_nrDIVl7+X{+mXFqI`$h&~RZKgVUslD8y(OPUqXQhU8ns`nPe~ z+(zm|qgB1XId+)gu=indX?gSP?57IZt{juB#4>3-u|9O1*jyU>2D;bZU|p%hVm3s6 zx|oHraJ$p($Dra4(e5Q|6CHe$B~zEBY>5=hSYt;0ma{)-<O=p2y|IFIl7FsXv#qr0 z9hOg1SF@^gYc(50L)Ne|#nR0jY~nO(4Ld7)tz~6c;FqhFWzITwh(%(S8(!06w>b>A z%j5G>`weWY+`fUOFdDv*U6o0j*d$Jex3F6B_7=8~(UGleG{wiW=!(ej>1bj`rKqu_ z*DkP%)aiY;pCa;EcX}(IwUWQ(vqRSU!Ob4i+>-J%U{Tuex=k}(@}2C}vhv-7tP7*! zhuAkX`Y4Mc>tRgj_J>(zIq@+2h{=IRSsIf^j<J^ojsB8tmW{t+-!j^Nl2wwYPO`e3 zs-0r>nx)$O>A0O4#-NlgO^aNp+G+|<AGK*ZvD|Qe#K|_NSm)yHe15Mb1>1z*8;{ns zIeb}YU2enXGeXPFk`g*5Yk_d9p)<NTTxsJ>54F6)rgX|OvAQxm*o~h|_a}-$ncH-l zKJ0`D`gcLDJ>8cjH(X(YQ;h{IDyq=G+wO4KJcaJ$%4=*4qqyrVn>Js^cKzr&Th3+v zP4=f%?)aJYE-7Q~D$d1wY&est4_G8y^oYIK06VYg^BOLv;mg7jd$P6pY^h!&*YubM z_HL{|>h+jCTsVb?Z%gHj%Y~fB3n_~61B^roUP<Pc;IpHtXAEy7m(=G~Bjmo8{5Vo> z%{{`OmPLWqytTaDn!m}YLOlOK{ua--v-Y?P`tCm+bj$zq-q7*(Jc@p7&y&f~fyb85 z#(smtF0)9*LMJb?gxEn&j~d(H9rfbBXL)To*i*ZPj>#weq|ivnMIAVXdQ&G}jc#?~ zePq|pydjgXC-8fWN_69A<xk!CD~z^u=kw%?J$RMU@}m^KLeQNdd;uLF%46j6VZ0Ql zEhBgxid=}j;foRc5%ny_A_@OquA}TVir;6{Yc!9h$qQK>Ie9dn$7w(+FW=SfHJmOV zCSbN3Qy~>wQLf#W6`Gj%bg9*E`M;D*k4#JDojI*Z=cnW}lfS@3v$!_&T?X&hvA@F{ z=f%<Mu^GMm-YnEU&T%fI{X{>Q<7}NXvvFd_A$G^`L>wA^Tc#O1(6nX88{xsa@cIl< zuOtT7V`TY!?qG#T^Rjqt+MUV2mibwHAfwu2d3l*UmaiyAWyWJX^2hVG^3ix+i^(=# z-c^)KvU$>6evj8kFIexxA}d%=b93OMAcs$<0lB=g{4^IUzMRwL&r!#%Vb8`sk!^GO zq<bO{a9MXUFUu+ACEi@V{}QjjaJ29t(m#cF5tKcRkD*7?cn=!$FJ7^1f1H|FZ+{CE zY57mwF5$@q>%A^VjyVY@jvDDyN5Q&mP{=j-;q}{duojRIgsL9);}URo6|BeQxG_|c zrt@n|hP}d3!L6Ugmy}8<tU`@ivihrhE|cfxa0izIU*i?H+_8X<<aB=_Z(gzB6;*~B z>3$SHUY`*vP1nvMZl#59^67HuQXa=?=L%j*u3yeuFv9<9akaO5()<pa-D6t1+faXd z4ZqV!LwRnbdt7#3@IE<gh8Gur2@|{y45`QNF&r^H>GQYvHd^;K@65W<7$GWfOII>i z^5(R0C2vnJujCaedKEY1z*RhvhxN64Q5N)HjT!sz)jXnZqAj#XPQY$u*bIz8mdjtT zKF-or?VLewI(_tus3hyJ;cXeY@z;*@?J#RZr3{xdxD1^pJOt}wGaIEkEnCZv(!F*3 zhK$(2M+=JE#2e9)O}thW3^yi8X2E*XFr6xt$F9mnqm#U~iBIP8kN0>*l%1c5Dzf7H zJb_71K0nH6@HU<y&ursUSwnS4J#gW`T`~|DC5~as$iU<?LmM)3GTb(A94(Uk0!yL` z`Mgp@u;9i8`5mU;Ll^zlsw5@fBa?UXHe7Dl&25Yt@8SLBx;?xslh^k0Da>j^u_Ckf z^8uVb`k41?;dH_rBaVons$5;H*TAeSEX+Mdw#|`=^iUw+c<&@53OGvDo}ch?#c0YQ zeu2!xyocO&7@H799pz`F^%!r<Wzq>A$>gao_!Un4ByP;@ule)T`y@}1yH4``Om6y? zui`Z43|}S1IbM!Y!g)TLHlF9{vgrkWo{{Ym&zG5(c?K(=7-LQdo>@=tB^|lKzonP1 z@(8*4DnE{b>^ojcs0x1hcYG78uPXO~^}2LdE5Q+?%X2Ikwd(vvqTNTmZ}9%nMRkL! zSEejBL$y4H_EtS>)j>vz-N<oaP2t0#79mbbPr(Oj@UZs%Y9~-bXJAIF2ZX}NhRqMv z;C6xx;8yJxSe%%bO^j^H?j{UcF;uiHjtVl%j>GuWP!UZ9?}!T2cs{R7E02jP<etx~ z)3#xva<tY`IeKw~+n+vjAcXwr2A|HX11Gvs)ZFA1X!cD$TR!&#N8J(eliG79|IBl# z_Afj@@)!P4_Pfn1TP42A{3lLt-sP)l+FyK9?Ie2+3Su=ULdB9Lxcb#jhan3Vqg49= zzf7eb@_q8!L%x?q;i4zuK|`gLW%K(mA1%XOPAMOAAE!E8*b)j}$+4%0M#!e-oLY-T zc!-y6cPeILOu_o6s!vxg{gaD{G+Ky?vb+#$aIzN{xh3d>s-hglJ|i~LvlT>?G|P*A zC8=CZQCH567AwN2MI8}GbLxmg^ln`-m<H7ojp_S(VknKQF9t{Va^g8ASki<hh<b|g zAtn;Qw!gK$SRhBli1$zsG!%>Frwzq4Ml%|VQPi%9m`7o;qQf&i@IZ^f!fnO{*t7lF zvVW{-#i_+WYdIEA|7<GeQ)V;Kl(se#<>mLy#6(sTL)krayYU@jHczHrfSTu}p)Ev$ zywyUq=5kmoQJc}IHexdEZX-%c(N+vEE`RAPjue*#Jw;QtsJGZGt$oBWCNmSoeNH+3 z#UFGyNz{}z2Z*;>#a@`F*jH^htK%)nX12{U-fzm-!J;^$oFO8Gjtvo&u*q&+i~KGO z6P3c`h%ur#_J>q4hf>o-eQJ>|#>%VdA_GN0rf4E(WQxByoga&V=rK<0pqdVmM28)q z@I_)T(MYG5D66@IjYmA$)zr%Ya(RWDF5csHYK5oUoa#JK&sORkgxaQqCqUt(qf=hd zoKAa1L|>1YZpYG6OU8+jYEbYNma^K>gQsudoJ7s+SFcI1@w)W{ZV-F`Qm&sUh11~s zyfu~d33GVp*wn=%9Aon0x#&N84~O$$exXuRX~#4-@RWpnQPt&yW_Dp1I_tyz8sitQ zQ@I?mi!SAew`par7*56nF;D(5LDXR7k!@%Wz!f$QjFd@tCyG7P>P2Crqc4gb^1aC- z2RrRcq7I|Ed7?diktb4R#uRZeOwO7vA{l*ziiZ+rit%(}rl?ZF=62gWrrjaW%@oy` zEIUgKz_gex2J<Q=UK|9+Pi^(VCnv*;P0EgEwK?K5xniz3!|2Lu;)=X5U$haGQW6tz zLI)odij+d$P%ZSrLJ=!zq4<E)jyG^^zuo8MN;+a}>UA0Ru$LE$N+rVeNYci8JX#K3 zEKvL(ULt(7`AyN9URx^a%jQePo?^sTi7K^|)B{N<A<JM@EO>+4O>oZ-vDc1Rg#|u! zr|6HjP`kunM%VU<^5p$cG@xa>MQQr(L&#h15q4g#s|~XQJDAN##IcIk2&O!-PwZ#3 z_9HRPn&Pmf%4Q#n&qY{pFQUhviptdFfVd|UKNI6Q<sTB&B)&rGV_e=*QNLa2nGAO~ zm`<?x4-TE4vPEl+;6*>F2+cV8^-(dkMDW-pd_hsu5H;r;5gVfRej_&1snenc@iU?t zEjWXX|JWH3Ne9k|r6bgvh=O%K%xPN=3e4aph4ZCg1Ku?t9esZ+Nd@b%cj||;|4k`T zZ8SLg)JX^*GWo1%%v<%vYcItLKHP-rB3!23ful&V3nM&DM2&)UoEKj+nsiaTLv1gK zrgF_CF&*!%u8DhLbn*ug6Rp=WPD|6H7H+T<?Gf8G7>(xr%&L@DXK=FVHgSk~sPm5) z@zXzuZlz?uI|A>(4*n%RWOB=WQIb*mL$RuwnzdLXg&T@;sGbQk9j1?B?}!?*+GCNx zw)w52xeOQ9twLIhTk(2uT1jhV*+1OcsGi){)cS0syx+-sK+xoF)@yRf^VTt(*7mfX zkV|`68*tmx>QLR}l;BOa1gGZH{(rdXYDi;>+;sf^WVZ`vym~x>3>%!@<>RS*qSZ~8 z60Mc#VxqNi?QB#Ls_4UI`C$-eBw|0Yp`66RbQtx#4eC+i8BrxKSj7jQ`B8@j!?`@^ zb|>CBsbU6C#wg8jx3DXsn1*?rrCV^Uf)ACUXLj7_&}*vT?dXSHF~x?BD--7zo-8a$ ze;eHYCT3n)tgrPtr!q;_n&e2bI_1wvRy&h3lC5hvogQR;EUyi={>-S(FzY#K8*aT) zM&{YAc#T-hWj#a9-PRUz;CSmrP91#KX034R?G9riD)awdcsh}nw@6-?fp{aYO44}g z@LA*WGSP2!%RV_)>^*#<wN8`&;o^w}e8rl0vd*-7)%L1fbe?GKDI)O5;WgCH3Gl+y oLT|RWR;MH%FH<~JmjyZ1!k^wyd2X_GDVHziS<5mCOtIehFRf^fGynhq diff --git a/resources/localization/fr/PrusaSlicer_fr.po b/resources/localization/fr/PrusaSlicer_fr.po index e6b8515f3..1f5cdc29c 100644 --- a/resources/localization/fr/PrusaSlicer_fr.po +++ b/resources/localization/fr/PrusaSlicer_fr.po @@ -5,82 +5,101 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 2.4.2\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" -#: src/slic3r/GUI/MainFrame.cpp:66 -msgid " - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/releases" -msgstr " - Pensez à vérifier les mises à jour sur http://github.com/prusa3d/PrusaSlicer/releases" +#: src/slic3r/GUI/Tab.cpp:4124 +msgid "" +"\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" +"To enable \"%1%\", please switch off \"%2%\"" +msgstr "" +"\"%1%\" est désactivé car \"%2%\" est activé dans la catégorie \"%3%\".\n" +"Pour activer \"%1%\", veuillez désactiver \"%2%\"" -#: src/slic3r/GUI/MainFrame.cpp:872 -msgid " was successfully sliced." -msgstr " a été découpé avec succès." - -#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 -#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 -#: src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 +#: src/libslic3r/PrintConfig.cpp:2931 msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:963 +#: src/slic3r/GUI/GLCanvas3D.cpp:969 #, c-format msgid "%.2f - %.2f mm" msgstr "%.2f - %.2f mm" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" msgstr "%1% Préréglage" -#: src/slic3r/GUI/Plater.cpp:4400 +#: src/slic3r/GUI/Plater.cpp:4423 msgid "%1% printer was active at the time the target Undo / Redo snapshot was taken. Switching to %1% printer requires reloading of %1% presets." msgstr "L'imprimante %1% était active au moment où l'instantané cible Annuler / Refaire a été pris. Basculer vers l'imprimante %1% requiert de recharger les préréglages de %1%." -#: src/libslic3r/Print.cpp:1374 +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." +msgstr "%1% a été découpé avec succès." + +#: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "%1%=%2% mm est trop bas pour être imprimable avec une hauteur de couche de %3% mm" -#: src/slic3r/GUI/PresetHints.cpp:229 +#: src/slic3r/GUI/PresetHints.cpp:228 #, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm³/s à une vitesse de filament de %3.2f mm/s." -#: src/slic3r/GUI/Plater.cpp:1152 +#: src/slic3r/GUI/Plater.cpp:1061 #, c-format msgid "%d (%d shells)" msgstr "%d (%d coques)" -#: src/slic3r/GUI/Plater.cpp:1160 +#: src/slic3r/GUI/Plater.cpp:1069 #, c-format msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" msgstr "%d faces invalides, %d arrêtes corrigées, %d faces retirées, %d faces ajoutées, %d faces inversées, %d arrêtes à l'envers" -#: src/slic3r/GUI/PresetHints.cpp:270 +#: src/slic3r/GUI/PresetHints.cpp:269 #, c-format msgid "%d lines: %.2f mm" msgstr "%d lignes : %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1027 +#: src/slic3r/GUI/MainFrame.cpp:1728 #, c-format msgid "%d presets successfully imported." msgstr "%d préréglages importés avec succès." -#: src/slic3r/GUI/MainFrame.cpp:692 +#: src/slic3r/GUI/GUI_App.cpp:718 +#, c-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"Voulez-vous continuer ?" + +#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 #, c-format msgid "%s &Website" msgstr "Site &Web de %s" +#: src/slic3r/GUI/GUI_App.cpp:394 +#, c-format +msgid "%s - BREAKING CHANGE" +msgstr "%s - MODIFICATION IMPACTANTE" + #: src/slic3r/GUI/UpdateDialogs.cpp:211 #, c-format msgid "%s configuration is incompatible" msgstr "La configuration de %s n'est pas compatible" -#: src/slic3r/GUI/Field.cpp:175 +#: src/slic3r/GUI/Field.cpp:223 #, c-format msgid "%s doesn't support percentage" msgstr "%s ne supporte pas un pourcentage" @@ -90,7 +109,7 @@ msgstr "%s ne supporte pas un pourcentage" msgid "%s error" msgstr "Erreur %s" -#: src/slic3r/GUI/ConfigWizard.cpp:481 +#: src/slic3r/GUI/ConfigWizard.cpp:499 #, c-format msgid "%s Family" msgstr "%s Famille" @@ -100,7 +119,7 @@ msgstr "%s Famille" msgid "%s has encountered an error" msgstr "%s a rencontré une erreur" -#: src/slic3r/GUI/GUI_App.cpp:138 +#: src/slic3r/GUI/GUI_App.cpp:528 #, c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n" @@ -111,12 +130,12 @@ msgstr "" "\n" "L'application va maintenant fermer." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:222 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:62 #, c-format msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it." msgstr "%s a rencontré une erreur. Elle a apparemment été provoquée par un manque de mémoire. Si vous êtes certain d'avoir assez de RAM sur votre système, cela peut également être un bug et nous aimerions que vous le signaliez." -#: src/slic3r/GUI/UpdateDialogs.cpp:308 +#: src/slic3r/GUI/UpdateDialogs.cpp:309 #, c-format msgid "%s has no configuration updates available." msgstr "%s n'a aucunes mises à jour de configuration disponibles." @@ -143,7 +162,7 @@ msgstr "" "\n" "Veuillez utiliser les %s qui suivent pour paramétrer les nouveaux réglages et éventuellement accepter les mises à jour de réglage automatiques." -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 #, c-format msgid "%s View Mode" msgstr "Mode de Vue de %s" @@ -163,218 +182,248 @@ msgstr "" "\n" "Lots de configuration mis à jour :" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 #, c-format msgid "&About %s" msgstr "&Au sujet de %s" -#: src/slic3r/GUI/GUI_App.cpp:908 +#: src/slic3r/GUI/MainFrame.cpp:1297 +msgid "&Collapse sidebar" +msgstr "&Réduire la barre latérale" + +#: src/slic3r/GUI/GUI_App.cpp:1645 msgid "&Configuration" msgstr "&Configuration" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "&Configuration Snapshots" msgstr "Instantanés de &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:588 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Copy" msgstr "&Copier" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "&Delete selected" msgstr "Suppri&mer la sélection" -#: src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 msgid "&Edit" msgstr "&Editer" -#: src/slic3r/GUI/MainFrame.cpp:506 +#: src/slic3r/GUI/MainFrame.cpp:1103 msgid "&Export" msgstr "&Exporter" -#: src/slic3r/GUI/MainFrame.cpp:617 src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 msgid "&Filament Settings Tab" msgstr "Onglet des Réglages du &Filament" -#: src/slic3r/GUI/MainFrame.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 +#: src/slic3r/GUI/MainFrame.cpp:1417 msgid "&File" msgstr "&Fichier" -#: src/slic3r/GUI/ConfigWizard.cpp:1981 +#: src/slic3r/GUI/ConfigWizard.cpp:2492 msgid "&Finish" msgstr "&Fin" -#: src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:1141 +msgid "&G-code preview" +msgstr "&Aperçu du G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 +#: src/slic3r/GUI/MainFrame.cpp:1423 msgid "&Help" msgstr "&Aide" -#: src/slic3r/GUI/MainFrame.cpp:474 +#: src/slic3r/GUI/MainFrame.cpp:1065 msgid "&Import" msgstr "&Importer" -#: src/slic3r/GUI/GUI_App.cpp:822 +#: src/slic3r/GUI/GUI_App.cpp:1517 msgid "&Language" msgstr "&Langue" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "&New Project" msgstr "&Nouveau Projet" -#: src/slic3r/GUI/ConfigWizard.cpp:1980 +#: src/slic3r/GUI/ConfigWizard.cpp:2491 msgid "&Next >" msgstr "&Suivant >" -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "&Open G-code" +msgstr "&Ouvrir le G-code" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "&Open Project" msgstr "&Ouvrir Projet" -#: src/slic3r/GUI/MainFrame.cpp:591 +#: src/slic3r/GUI/MainFrame.cpp:1197 msgid "&Paste" msgstr "C&oller" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "&Plater Tab" msgstr "Onglet du &Plateau" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1487 msgid "&Preferences" msgstr "&Préférences" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 msgid "&Quit" msgstr "&Quitter" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:1189 msgid "&Redo" msgstr "&Refaire" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "&Repair STL file" msgstr "&Réparer le fichier STL" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "&Save Project" msgstr "&Sauvegarder Projet" -#: src/slic3r/GUI/MainFrame.cpp:565 +#: src/slic3r/GUI/MainFrame.cpp:1171 msgid "&Select all" msgstr "Tout &Sélectionner" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:1186 msgid "&Undo" msgstr "Ann&uler" -#: src/slic3r/GUI/MainFrame.cpp:724 +#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 +#: src/slic3r/GUI/MainFrame.cpp:1418 msgid "&View" msgstr "&Vue" -#: src/slic3r/GUI/MainFrame.cpp:723 +#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 msgid "&Window" msgstr "Fenê&tre" -#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 +#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 msgid "(All)" msgstr "(Tout)" -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1554 msgid "(minimum)" msgstr "(minimum)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "(Re)slice" msgstr "(Re)découper" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "(Re)Slice No&w" msgstr "(Re)Découper Main&tenant" -#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 msgid "(Unknown)" msgstr "(Inconnu)" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") non trouvé." -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "0 (soluble)" msgstr "0 (soluble)" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "0.2 (detachable)" msgstr "0.2 (détachable)" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/Plater.cpp:4097 +#: src/slic3r/GUI/Plater.cpp:4044 msgid "3D editor view" msgstr "Vue d'éditeur 3D" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:889 msgid "3D Honeycomb" msgstr "Nid d'abeille 3D" -#: src/slic3r/GUI/Mouse3DController.cpp:274 +#: src/slic3r/GUI/NotificationManager.hpp:318 +msgid "3D Mouse disconnected." +msgstr "Souris 3D déconnectée." + +#: src/slic3r/GUI/Mouse3DController.cpp:263 msgid "3Dconnexion settings" msgstr "Paramètres 3Dconnexion" -#: src/slic3r/GUI/Plater.cpp:5038 +#: src/slic3r/GUI/Plater.cpp:5167 #, c-format msgid "3MF file exported to %s" msgstr "Fichier 3MF exporté vers %s" -#: src/slic3r/GUI/ConfigWizard.cpp:1979 +#: src/slic3r/GUI/ConfigWizard.cpp:2490 msgid "< &Back" msgstr "< &Précédent" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:321 msgid "A boolean expression using the configuration values of an active print profile. If this expression evaluates to true, this profile is considered compatible with the active print profile." msgstr "Une expression booléenne utilisant les valeurs de configuration d'un profil d'imprimante actif. Si cette expression est évaluée comme vraie, ce profil est considéré comme compatible avec le profil d'imprimante actif." -#: src/libslic3r/PrintConfig.cpp:272 +#: src/libslic3r/PrintConfig.cpp:306 msgid "A boolean expression using the configuration values of an active printer profile. If this expression evaluates to true, this profile is considered compatible with the active printer profile." msgstr "Une expression booléenne utilisant les valeurs de configuration d'un profil d'imprimante actif. Si cette expression est évaluée comme vraie, ce profil est considéré comme compatible avec le profil d'imprimante actif." -#: src/slic3r/GUI/Tab.cpp:975 +#: src/slic3r/GUI/Tab.cpp:1237 msgid "A copy of the current system preset will be created, which will be detached from the system preset." msgstr "Une copie du préréglage système actuel sera créé, et il sera détaché du préréglage système." -#: src/slic3r/GUI/ConfigWizard.cpp:1034 +#: src/slic3r/GUI/ConfigWizard.cpp:1400 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "La règle générale est 160 à 230 °C pour le PLA et 215 à 250 °C pour l'ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:1048 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." msgstr "La règle générale est 60 °C pour le PLA et 110 °C pour l'ABS. Laissez à zéro si vous n'avez pas de lit chauffant." -#: src/slic3r/GUI/GLCanvas3D.cpp:686 -msgid "A toolpath outside the print area was detected" -msgstr "Parcours détecté en dehors de la zone d'impression" +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "A toolpath outside the print area was detected." +msgstr "Un parcours d'outil en dehors de la zone d'impression a été détecté." -#: src/slic3r/GUI/AboutDialog.cpp:199 +#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 #, c-format msgid "About %s" msgstr "Au sujet de %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:959 +#: src/slic3r/GUI/GCodeViewer.cpp:2189 +msgid "above" +msgstr "au-dessus" + +#: src/slic3r/GUI/GLCanvas3D.cpp:965 #, c-format msgid "above %.2f mm" msgstr "au dessus de %.2f mm" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Au-delà de Z" -#: src/slic3r/GUI/Tab.cpp:1164 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Acceleration control (advanced)" msgstr "Contrôle de l'accélération (avancé)" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Accuracy" msgstr "Précision" +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 +msgid "Accurate" +msgstr "Précis" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Activer" @@ -383,67 +432,75 @@ msgstr "Activer" msgid "Active" msgstr "Actif" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1705 +#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "actif" -#: src/slic3r/GUI/GLCanvas3D.cpp:267 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Adaptive" msgstr "Adaptatif" -#: src/slic3r/GUI/Tab.cpp:241 -msgid "Add a new printer" -msgstr "Ajouter une nouvelle imprimante" +#: src/libslic3r/PrintConfig.cpp:894 +msgid "Adaptive Cubic" +msgstr "Cubique adaptatif" -#: src/libslic3r/PrintConfig.cpp:2782 +#: src/slic3r/GUI/SavePresetDialog.cpp:314 +msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" +msgstr "Ajouter \"%1%\" comme préréglage suivant pour l'imprimante physique \"%2%\"" + +#: src/libslic3r/PrintConfig.cpp:2946 msgid "Add a pad underneath the supported model" msgstr "Ajouter une base sous le modèle supporté" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2200 msgid "Add a sheath (a single perimeter line) around the base support. This makes the support more reliable, but also more difficult to remove." msgstr "Ajouter une enveloppe (une ligne unique de périmètre) autour de la base du support. Ceci rend le support plus fiable, mais aussi plus difficile à retirer." -#: src/slic3r/GUI/DoubleSlider.cpp:991 +#: src/slic3r/GUI/DoubleSlider.cpp:1114 msgid "Add another code - Ctrl + Left click" msgstr "Ajouter un autre code - Ctr + Clic gauche" -#: src/slic3r/GUI/DoubleSlider.cpp:992 +#: src/slic3r/GUI/DoubleSlider.cpp:1115 msgid "Add another code - Right click" msgstr "Ajouter un autre code - Clic droit" -#: src/slic3r/GUI/DoubleSlider.cpp:1477 +#: src/slic3r/GUI/DoubleSlider.cpp:1665 msgid "Add color change" msgstr "Ajouter un changement de couleur" -#: src/slic3r/GUI/DoubleSlider.cpp:1180 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "Add color change (%1%) for:" msgstr "Ajouter le changement de couleur (%1%) pour :" -#: src/slic3r/GUI/DoubleSlider.cpp:988 +#: src/slic3r/GUI/DoubleSlider.cpp:1111 msgid "Add color change - Left click" msgstr "Ajouter un changement de couleur - Clic gauche" -#: src/slic3r/GUI/DoubleSlider.cpp:986 +#: src/slic3r/GUI/DoubleSlider.cpp:1109 msgid "Add color change - Left click for predefined color or Shift + Left click for custom color selection" msgstr "Ajouter un changement de couleur - Clic gauche pour la couleur prédéfinie ou Maj + Clic gauche pour la sélection d'une couleur personnalisée" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Add color change marker for current layer" msgstr "Ajouter un repère de changement de couleur pour la couche en cours" -#: src/slic3r/GUI/DoubleSlider.cpp:1490 +#: src/slic3r/GUI/DoubleSlider.cpp:1682 msgid "Add custom G-code" msgstr "Ajouter un G-code personnalisé" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/DoubleSlider.cpp:1679 +msgid "Add custom template" +msgstr "Ajouter un modèle personnalisé" + +#: src/slic3r/GUI/GLCanvas3D.cpp:235 msgid "Add detail" msgstr "Ajouter des détails" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:421 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:308 msgid "Add drainage hole" msgstr "Ajouter un trou de drainage" -#: src/slic3r/GUI/DoubleSlider.cpp:984 +#: src/slic3r/GUI/DoubleSlider.cpp:1107 msgid "Add extruder change - Left click" msgstr "Ajouter un changement d'extrudeur - Clic gauche" @@ -451,30 +508,30 @@ msgstr "Ajouter un changement d'extrudeur - Clic gauche" msgid "Add extruder to sequence" msgstr "Ajouter l'extrudeur à la séquence" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1993 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 msgid "Add Generic Subobject" msgstr "Ajouter un Sous-objet Générique" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2896 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2925 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2943 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 msgid "Add Height Range" msgstr "Ajouter une Zone de Hauteur" -#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3788 -#: src/slic3r/GUI/Plater.cpp:3800 src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 +#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 msgid "Add instance" msgstr "Ajouter l'instance" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 msgid "Add Instance of the selected object" msgstr "Ajouter une Instance à l'objet sélectionné" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:165 msgid "Add layer range" msgstr "Ajouter une zone de couche" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2328 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 msgid "Add Layers" msgstr "Ajouter des couches" @@ -482,12 +539,12 @@ msgstr "Ajouter des couches" msgid "Add modifier" msgstr "Ajouter un modificateur" -#: src/libslic3r/PrintConfig.cpp:479 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:515 +#, c-format msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." msgstr "Ajouter plus de périmètres si nécessaire pour éviter des trous dans les parois inclinées. Slic3r ajoute des périmètres, jusqu'à ce que plus de 70% de la boucle immédiatement au-dessus soit supportée." -#: src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/Plater.cpp:3858 msgid "Add one more instance of the selected object" msgstr "Ajouter une instance supplémentaire de l'objet sélectionné" @@ -495,52 +552,61 @@ msgstr "Ajouter une instance supplémentaire de l'objet sélectionné" msgid "Add part" msgstr "Ajouter une pièce" -#: src/slic3r/GUI/DoubleSlider.cpp:1487 +#: src/slic3r/GUI/DoubleSlider.cpp:1675 msgid "Add pause print" msgstr "Ajouter une pause d'impression" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 +#: src/slic3r/GUI/PresetComboBoxes.cpp:627 +#: src/slic3r/GUI/PresetComboBoxes.cpp:674 +msgid "Add physical printer" +msgstr "Ajouter une imprimante physique" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "Add point" msgstr "Ajouter un point" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 msgid "Add point to selection" msgstr "Ajouter un point à la sélection" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1509 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +msgid "Add preset for this printer device" +msgstr "Ajouter un préréglage pour cette imprimante" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 msgid "Add settings" msgstr "Ajouter des réglages" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1386 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 msgid "Add Settings Bundle for Height range" msgstr "Ajouter une Combinaison de Réglages pour la zone de Hauteur" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 msgid "Add Settings Bundle for Object" msgstr "Ajouter une Combinaison de Réglages pour l'Objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 msgid "Add Settings Bundle for Sub-object" msgstr "Ajouter une Combinaison de Réglages pour le Sous-objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1314 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 msgid "Add Settings for Layers" msgstr "Ajouter des Réglages pour les Couches" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 msgid "Add Settings for Object" msgstr "Ajouter des Réglages pour un Objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 msgid "Add Settings for Sub-object" msgstr "Ajouter des Réglages pour un Sous-objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2051 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2210 msgid "Add Shape" msgstr "Ajouter une Forme" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:443 msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." msgstr "Ajouter un remplissage plein à proximité des surfaces inclinées pour garantir une épaisseur de coque verticale (couches solides supérieures+inférieures)." @@ -552,11 +618,19 @@ msgstr "Ajouter un bloqueur de support" msgid "Add support enforcer" msgstr "Ajouter un générateur de supports" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:494 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:374 msgid "Add support point" msgstr "Ajouter un point de support" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 +msgid "Add supports" +msgstr "Ajouter des supports" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +msgid "Add supports by angle" +msgstr "Ajouter des supports par angle" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4833 msgid "Add..." msgstr "Ajouter..." @@ -564,23 +638,29 @@ msgstr "Ajouter..." msgid "Add/Remove filaments" msgstr "Ajouter/Enlever des filaments" -#: src/slic3r/GUI/Preset.cpp:1201 +#: src/slic3r/GUI/PresetComboBoxes.cpp:813 msgid "Add/Remove materials" msgstr "Ajouter/Enlever des matériaux" -#: src/slic3r/GUI/Preset.cpp:1203 +#: src/slic3r/GUI/PresetComboBoxes.cpp:622 +#: src/slic3r/GUI/PresetComboBoxes.cpp:669 +msgid "Add/Remove presets" +msgstr "Ajouter/Supprimer des préréglages" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:815 +#: src/slic3r/GUI/PresetComboBoxes.cpp:972 msgid "Add/Remove printers" msgstr "Ajouter/Supprimer des imprimantes" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "Additional information:" msgstr "Informations complémentaires :" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:62 msgid "Additional Settings" msgstr "Réglages Additionnels" -#: src/slic3r/GUI/ConfigWizard.cpp:791 +#: src/slic3r/GUI/ConfigWizard.cpp:1150 msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." msgstr "De plus, un instantané de sauvegarde de l'ensemble de la configuration est créé avant qu'une mise à jour ne soit appliquée." @@ -588,23 +668,22 @@ msgstr "De plus, un instantané de sauvegarde de l'ensemble de la configuration msgid "Address" msgstr "Adresse" -#: src/slic3r/GUI/GUI_App.cpp:814 src/slic3r/GUI/GUI_ObjectList.cpp:104 -#: src/slic3r/GUI/GUI_ObjectList.cpp:622 src/slic3r/GUI/Tab.cpp:1087 -#: src/slic3r/GUI/Tab.cpp:1102 src/slic3r/GUI/Tab.cpp:1201 -#: src/slic3r/GUI/Tab.cpp:1204 src/slic3r/GUI/Tab.cpp:1470 -#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:3661 -#: src/slic3r/GUI/wxExtensions.cpp:754 src/libslic3r/PrintConfig.cpp:88 -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 -#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2448 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 +#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 +#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 +#: src/libslic3r/PrintConfig.cpp:2591 msgid "Advanced" msgstr "Avancé" -#: src/slic3r/GUI/ConfigWizard.cpp:821 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "Advanced mode" msgstr "Mode avancé" -#: src/slic3r/GUI/GUI_App.cpp:814 +#: src/slic3r/GUI/GUI_App.cpp:1506 msgid "Advanced View Mode" msgstr "Vue en Mode Avancé" @@ -612,124 +691,140 @@ msgstr "Vue en Mode Avancé" msgid "Advanced: Output log" msgstr "Avancé : journal de Sortie" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:704 msgid "After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, and the filament pressure is likely not yet stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." msgstr "Après un changement d'outil, la position exacte dans la buse du filament qui vient d'être chargé peut ne pas être connue, et la pression du filament n'est probablement pas encore stable. Avant de purger la tête d'impression dans un remplissage ou un objet sacrificiel, Slic3r va toujours utiliser cette quantité de matériau dans la tour de nettoyage pour produire un remplissage successif ou des extrusions d'objet sacrificiel de façon fiable." -#: src/slic3r/GUI/Tab.cpp:1994 src/libslic3r/PrintConfig.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 msgid "After layer change G-code" msgstr "G-Code après changement de couche" -#: src/libslic3r/PrintConfig.cpp:3398 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Align the model to the given point." msgstr "Aligner le modèle sur le point défini." -#: src/libslic3r/PrintConfig.cpp:3397 +#: src/libslic3r/PrintConfig.cpp:3596 msgid "Align XY" msgstr "Aligner XY" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1739 msgid "Aligned" msgstr "Aligné" -#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 -#: src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 +#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "Tous" -#: src/libslic3r/Print.cpp:1219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" +msgstr "Tous les gizmos : Rotation - bouton gauche de la souris ; Panoramique - bouton droit de la souris" + +#: src/slic3r/GUI/ConfigWizard.cpp:694 +msgid "All installed printers are compatible with the selected filament." +msgstr "Toutes les imprimantes installées sont compatibles avec le filament sélectionné." + +#: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Tous les objets sont en dehors du volume d'impression." -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "All objects will be removed, continue?" msgstr "Tous les objets seront supprimés, continuer ?" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All settings changes will be discarded." +msgstr "Tous les changements de réglages seront perdus." + +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Tout en standard" -#: src/libslic3r/Zipper.cpp:62 +#: src/libslic3r/miniz_extension.cpp:121 msgid "allocation failed" msgstr "échec de l'allocation" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Le long de l'axe X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Along Y axis" msgstr "Le long de l'axe Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Along Z axis" msgstr "Le long de l'axe Z" -#: src/slic3r/GUI/ConfigWizard.cpp:222 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:160 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:141 +msgid "Alt + Mouse wheel" +msgstr "Alt + molette de la souris" + +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "Alternate nozzles:" msgstr "Buses alternatives :" -#: src/slic3r/GUI/Plater.cpp:5002 +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "Always ask for unsaved changes when selecting new preset" +msgstr "Toujours demander pour les modifications non enregistrées lors de la sélection d'un nouveau préréglage" + +#: src/slic3r/GUI/Plater.cpp:5135 #, c-format msgid "AMF file exported to %s" msgstr "Fichier AMF exporté vers %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:690 +#: src/slic3r/GUI/GLCanvas3D.cpp:638 msgid "" -"An object outside the print area was detected\n" -"Resolve the current problem to continue slicing" +"An object outside the print area was detected.\n" +"Resolve the current problem to continue slicing." msgstr "" -"Objet détecté en dehors de la zone d'impression\n" -"Résolvez ce problème pour poursuivre le processus de découpage" +"Un objet en dehors de la zone d'impression a été détecté.\n" +"Résolvez le problème actuel pour continuer le découpage." -#: src/slic3r/GUI/GLCanvas3D.cpp:685 -msgid "An object outside the print area was detected" -msgstr "Objet détecté en dehors de la zone d'impression" +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "An object outside the print area was detected." +msgstr "Un objet en dehors de la zone d'impression a été détecté." -#: src/slic3r/GUI/Tab.cpp:2943 -msgid "and it has the following unsaved changes:" -msgstr "et il y a les changements non sauvegardés suivants :" - -#: src/slic3r/GUI/Plater.cpp:3170 +#: src/slic3r/GUI/Plater.cpp:2972 msgid "Another export job is currently running." msgstr "Une autre tâche d'export est actuellement en cours." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Any arrow" msgstr "N'importe quelle flèche" -#: src/slic3r/GUI/Tab.cpp:965 +#: src/slic3r/GUI/Tab.cpp:1283 msgid "Any modifications should be saved as a new preset inherited from this one." msgstr "Toute modification doit être enregistrée comme un nouveau préréglage hérité de celui-ci." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:106 msgid "API Key / Password" msgstr "Clé API / Mot de Passe" -#: src/slic3r/GUI/GUI_App.cpp:810 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Application preferences" msgstr "Préférences de l'application" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1374 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1221 msgid "Apply changes" msgstr "Appliquer les modifications" -#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:611 src/libslic3r/PrintConfig.cpp:1823 msgid "approximate seconds" msgstr "secondes approximatives" -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 +#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 msgid "Archimedean Chords" msgstr "Accords archimédiens" -#: src/libslic3r/Zipper.cpp:88 +#: src/libslic3r/miniz_extension.cpp:147 msgid "archive is too large" msgstr "l'archive est trop volumineuse" -#. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3420 msgid "Are you sure you want to %1% the selected preset?" msgstr "Êtes-vous sûr de vouloir %1% le préréglage sélectionné ?" @@ -741,97 +836,125 @@ msgstr "" "Êtes-vous certain de vouloir annuler le processus de flash du firmware ?\n" "Cela pourrait rendre votre imprimante inutilisable !" -#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 msgid "Are you sure you want to continue?" msgstr "Êtes-vous sûr de vouloir continuer ?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1269 +#: src/slic3r/GUI/Tab.cpp:3392 +msgid "Are you sure you want to delete \"%1%\" preset from the physical printer \"%2%\"?" +msgstr "Voulez-vous vraiment supprimer le préréglage \"%1%\" de l'imprimante physique \"%2%\" ?" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +msgid "Are you sure you want to delete \"%1%\" printer?" +msgstr "Voulez-vous vraiment supprimer l'imprimante \"%1%\" ?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1128 msgid "Are you sure you want to do it?" msgstr "Êtes-vous certain de vouloir le faire ?" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Area fill" msgstr "Remplissage de zone" -#: src/slic3r/GUI/Plater.cpp:641 +#: src/slic3r/GUI/Plater.cpp:507 msgid "Around object" msgstr "Autour de l'objet" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 -#: src/slic3r/GUI/Plater.cpp:2754 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1549 msgid "Arrange" msgstr "Agencer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "Agencer la sélection" -#: src/libslic3r/PrintConfig.cpp:3443 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." msgstr "Agencer les modèles fournis sur un plateau et les fusionner en un seul modèle afin de ne réaliser les actions qu'une seule fois." -#: src/slic3r/GUI/Plater.cpp:2813 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:149 msgid "Arranging" msgstr "Agencement en cours" -#: src/slic3r/GUI/Plater.cpp:2841 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 msgid "Arranging canceled." msgstr "Agencement annulé." -#: src/slic3r/GUI/Plater.cpp:2842 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 msgid "Arranging done." msgstr "Agencement terminé." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Down" msgstr "Flèche Bas" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 msgid "Arrow Left" msgstr "Flèche Gauche" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Arrow Right" msgstr "Flèche Droite" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Up" msgstr "Flèche Haut" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:290 +#: src/slic3r/GUI/GUI_App.cpp:246 +msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" +msgstr "Modèle d'illustration par Nora Al-Badri et Jan Nikolai Nelles" + +#: src/slic3r/GUI/OpenGLManager.cpp:265 msgid "As a workaround, you may run PrusaSlicer with a software rendered 3D graphics by running prusa-slicer.exe with the --sw_renderer parameter." msgstr "Une solution consiste à lancer PrusaSlicer avec des graphismes 3D rendus par un logiciel en lançant prusa-slicer.exe avec le paramètre --sw_renderer." -#: src/slic3r/GUI/GUI_App.cpp:1086 src/slic3r/GUI/Plater.cpp:2313 -#: src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/Preferences.cpp:154 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +msgid "Ask for unsaved changes when closing application" +msgstr "Demander pour les modifications non enregistrées lors de la fermeture de l'application" + +#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 +msgid "Ask for unsaved changes when selecting new preset" +msgstr "Demander pour les modifications non enregistrées lors de la sélection d'un nouveau préréglage" + +#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 msgid "Attention!" msgstr "Attention !" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:150 +msgid "Authorization Type" +msgstr "Type d'autorisation" + +#: src/libslic3r/PrintConfig.cpp:2013 msgid "Auto generated supports" msgstr "Supports générés automatiquement" -#: src/slic3r/GUI/Preferences.cpp:47 +#: src/slic3r/GUI/Preferences.cpp:64 msgid "Auto-center parts" msgstr "Centrer automatiquement les pièces" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1377 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1224 msgid "Auto-generate points" msgstr "Générer automatiquement les points" -#: src/slic3r/GUI/Plater.cpp:1157 +#: src/slic3r/GUI/Plater.cpp:1066 #, c-format msgid "Auto-repaired (%d errors)" msgstr "Réparé automatiquement (%d erreurs)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:339 +#: src/slic3r/GUI/GUI_ObjectList.cpp:386 #, c-format msgid "Auto-repaired (%d errors):" msgstr "Réparé automatiquement (%d erreurs):" @@ -840,39 +963,47 @@ msgstr "Réparé automatiquement (%d erreurs):" msgid "Autodetected" msgstr "Autodétecté" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1273 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1134 msgid "Autogenerate support points" msgstr "Autogénérer les points de support" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1268 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1127 msgid "Autogeneration will erase all manually edited points." msgstr "L'autogénération va effacer tous les points édités manuellement." -#: src/slic3r/GUI/Tab.cpp:3632 +#: src/slic3r/GUI/Tab.cpp:4051 msgid "Automatic generation" msgstr "Génération automatique" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Automatic updates" msgstr "Mises à jour automatiques" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Automatically repair an STL file" msgstr "Réparer automatiquement un fichier STL" -#: src/slic3r/GUI/Tab.cpp:1171 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "Autoset par angle" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 +msgid "Autoset custom supports" +msgstr "Supports personnalisés Autoset" + +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Autospeed (advanced)" msgstr "Vitesse automatique (avancé)" -#: src/libslic3r/PrintConfig.cpp:136 +#: src/libslic3r/PrintConfig.cpp:169 msgid "Avoid crossing perimeters" msgstr "Éviter de traverser les périmètres" -#: src/slic3r/GUI/Tab.cpp:3268 +#: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "FLÈCHE ARRIÈRE" -#: src/slic3r/GUI/Tab.cpp:3290 +#: src/slic3r/GUI/Tab.cpp:3727 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click to reset all settings for the current option group to the last saved preset." @@ -880,7 +1011,7 @@ msgstr "" "L'icône FLÈCHE ARRIÈRE indique que les paramètres ont été changés et qu'ils ne sont pas identiques au dernier préréglage enregistré du groupe d'options en cours.\n" "Cliquez pour restaurer tous les paramètres du groupe d'options en cours avec les valeurs du dernier préréglage enregistré." -#: src/slic3r/GUI/Tab.cpp:3304 +#: src/slic3r/GUI/Tab.cpp:3741 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the last saved preset.\n" "Click to reset current value to the last saved preset." @@ -888,19 +1019,23 @@ msgstr "" "L'icône FLÈCHE ARRIÈRE indique que la valeur a été changée et qu'elle n'est pas identique au dernier préréglage enregistré.\n" "Cliquez pour restaurer la valeur à celle du dernier préréglage enregistré." -#: src/slic3r/GUI/Preferences.cpp:55 +#: src/slic3r/GUI/Preferences.cpp:72 msgid "Background processing" msgstr "Tâche en arrière plan" -#: src/slic3r/GUI/GUI_ObjectList.cpp:351 +#: src/slic3r/GUI/GUI_ObjectList.cpp:398 msgid "backwards edges" msgstr "arrêtes à l'envers" -#: src/slic3r/GUI/MainFrame.cpp:174 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:60 +msgid "Balanced" +msgstr "Équilibré" + +#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 msgid "based on Slic3r" msgstr "basé sur Slic3r" -#: src/slic3r/GUI/Tab.cpp:1439 +#: src/slic3r/GUI/Tab.cpp:1785 msgid "Bed" msgstr "Plateau" @@ -912,7 +1047,7 @@ msgstr "Modèle personnalisé de lit" msgid "Bed custom texture" msgstr "Texture du plateau personnalisée" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape" msgstr "Forme du plateau" @@ -920,23 +1055,23 @@ msgstr "Forme du plateau" msgid "Bed shape" msgstr "Forme du plateau" -#: src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape and Size" msgstr "Forme du Plateau et Taille" -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:181 msgid "Bed temperature" msgstr "Température du plateau" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." msgstr "Température du plateau pour les couches après la première. Mettez ceci à zéro pour désactiver les commandes de contrôle de température du plateau dans la sortie." -#: src/slic3r/GUI/ConfigWizard.cpp:1051 +#: src/slic3r/GUI/ConfigWizard.cpp:1417 msgid "Bed Temperature:" msgstr "Température du Plateau :" -#: src/slic3r/GUI/Tab.cpp:1988 src/libslic3r/PrintConfig.cpp:153 +#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 msgid "Before layer change G-code" msgstr "G-Code avant changement de couche" @@ -944,143 +1079,191 @@ msgstr "G-Code avant changement de couche" msgid "Before roll back" msgstr "Avant le retour en arrière" -#: src/slic3r/GUI/Plater.cpp:640 +#: src/slic3r/GUI/Plater.cpp:506 msgid "Below object" msgstr "Sous l'objet" -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "Below Z" msgstr "En-deçà de Z" -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Between objects G-code" msgstr "Entre le G-code des objets" -#: src/slic3r/GUI/Tab.cpp:2006 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Between objects G-code (for sequential printing)" msgstr "Entre le G-code des objets (pour une impression séquentielle)" -#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +msgid "Block" +msgstr "Bloquer" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:32 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:383 +msgid "Block seam" +msgstr "Bloquer la jointure" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:373 +msgid "Block supports" +msgstr "Bloquer les supports" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +msgid "Block supports by angle" +msgstr "Bloquer les supports par angle" + +#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 msgid "Bottle volume" msgstr "Volume de la bouteille" -#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 msgid "Bottle weight" msgstr "Poids de la bouteille" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:665 src/libslic3r/PrintConfig.cpp:174 -#: src/libslic3r/PrintConfig.cpp:183 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 msgid "Bottom" msgstr "Dessous" -#: src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Bottom fill pattern" msgstr "Motif de remplissage du dessous" -#: src/slic3r/GUI/PresetHints.cpp:342 +#: src/slic3r/GUI/PresetHints.cpp:340 msgid "Bottom is open." msgstr "Le fond est ouvert." -#: src/slic3r/GUI/PresetHints.cpp:336 +#: src/slic3r/GUI/PresetHints.cpp:334 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "La coque inférieure a une épaisseur de %1% mm pour une hauteur de couche %2% mm." -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:211 msgid "Bottom solid layers" msgstr "Couches solides inférieures" -#: src/slic3r/GUI/MainFrame.cpp:665 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 msgid "Bottom View" msgstr "Vue du Dessous" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1464 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1468 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "Box" msgstr "Case" -#: src/libslic3r/PrintConfig.cpp:193 +#: src/libslic3r/PrintConfig.cpp:227 msgid "Bridge" msgstr "Pont" -#: src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:256 msgid "Bridge flow ratio" msgstr "Ratio de flux pour les ponts" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:350 msgid "Bridge infill" msgstr "Remplissage du pont" -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Bridges" msgstr "Ponts" -#: src/libslic3r/PrintConfig.cpp:213 +#: src/libslic3r/PrintConfig.cpp:247 msgid "Bridges fan speed" msgstr "Vitesse du ventilateur pour les ponts" -#: src/libslic3r/PrintConfig.cpp:202 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Bridging angle" msgstr "Angle du pont" -#: src/libslic3r/PrintConfig.cpp:204 +#: src/libslic3r/PrintConfig.cpp:238 msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for all bridges. Use 180° for zero angle." msgstr "Contournement de l'angle du pont. Si laissé à zéro, l'angle du pont sera calculé automatiquement. Sinon, l'angle fourni sera utilisé pour tous les ponts. Utilisez 180° pour un angle nul." -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" msgstr "Volumétrie des ponts" -#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1117 +#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 msgid "Brim" msgstr "Bordure" -#: src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Brim width" msgstr "Largeur de la bordure" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1658 -#: src/slic3r/GUI/Tab.cpp:1721 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 msgid "Browse" msgstr "Parcourir" -#: src/libslic3r/Zipper.cpp:82 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 +msgid "Brush shape" +msgstr "Forme du pinceau" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 +msgid "Brush size" +msgstr "Taille du pinceau" + +#: src/libslic3r/miniz_extension.cpp:141 msgid "buffer too small" msgstr "buffer trop petit" +#: src/slic3r/GUI/GUI_App.cpp:1152 +msgid "" +"But since this version of PrusaSlicer we don't show this information in Printer Settings anymore.\n" +"Settings will be available in physical printers settings." +msgstr "" +"Mais depuis cette version de PrusaSlicer, nous ne montrons plus ces informations dans les Réglages de l'imprimante.\n" +"Les réglages seront disponibles dans les réglages des imprimantes physiques." + #: src/slic3r/GUI/ButtonsDescription.cpp:16 msgid "Buttons And Text Colors Description" msgstr "Description des Boutons et des Couleurs de Texte" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/GUI_App.cpp:1084 +msgid "" +"By default new Printer devices will be named as \"Printer N\" during its creation.\n" +"Note: This name can be changed later from the physical printers settings" +msgstr "" +"Par défaut, les nouvelles imprimantes seront nommées \"Imprimante N\" lors de leur création.\n" +"Remarque : ce nom peut être modifié ultérieurement dans les réglages des imprimantes physiques" + +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "by the print profile maximum" msgstr "par le maximum du profil de l'imprimante" -#: src/slic3r/GUI/Preferences.cpp:113 +#: src/slic3r/GUI/Preferences.cpp:178 msgid "Camera" msgstr "Caméra" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Camera view" msgstr "Vue caméra" -#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "Annuler" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:155 msgid "Cancel selected" msgstr "Annuler la sélection" -#: src/slic3r/GUI/Plater.cpp:3669 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Annulé" -#: src/slic3r/GUI/Plater.cpp:3153 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Annulation" @@ -1092,7 +1275,7 @@ msgstr "Annulation..." msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "Impossible de calculer la largeur d'extrusion pour %1% : la variable \"%2%\" n'est pas accessible." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 msgid "" "Cannot insert a new layer range after the current layer range.\n" "Current layer range overlaps with the next layer range." @@ -1100,7 +1283,7 @@ msgstr "" "Impossible d'insérer une nouvelle zone de couche après la zone de couche actuelle.\n" "La zone de couche actuelle chevauche la prochaine zone de couche." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3008 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 msgid "" "Cannot insert a new layer range after the current layer range.\n" "The next layer range is too thin to be split to two\n" @@ -1109,7 +1292,7 @@ msgstr "" "Impossible d'insérer une nouvelle zone de couche après la zone de couche actuelle.\n" "La zone de couche suivante est trop fine pour être séparée en deux sans enfreindre la hauteur de couche minimum." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3012 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 msgid "" "Cannot insert a new layer range between the current and the next layer range.\n" "The gap between the current layer range and the next layer range\n" @@ -1118,80 +1301,88 @@ msgstr "" "Impossible d'insérer une nouvelle zone de couche entre l'actuelle et la prochaine.\n" "L'espace entre la zone de couche actuelle et la prochaine est inférieur à la hauteur de couche minimum autorisée." -#: src/slic3r/GUI/Tab.cpp:3073 +#: src/slic3r/GUI/SavePresetDialog.cpp:137 msgid "Cannot overwrite a system profile." msgstr "Impossible d'écraser un profil système." -#: src/slic3r/GUI/Tab.cpp:3077 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 msgid "Cannot overwrite an external profile." msgstr "Impossible d'écraser un profil externe." -#: src/libslic3r/SLAPrint.cpp:613 +#: src/libslic3r/SLAPrint.cpp:627 msgid "Cannot proceed without support points! Add support points or disable support generation." msgstr "Il n'est pas possible de continuer sans ajouter des points de support ! Ajoutez des points de support ou désactivez la génération de support." -#: src/slic3r/GUI/Tab.cpp:1834 +#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "Fonctionnalités" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Capture a configuration snapshot" msgstr "Capturer un instantané de la configuration" -#: src/libslic3r/PrintConfig.cpp:3424 +#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +msgid "Category" +msgstr "Catégorie" + +#: src/libslic3r/PrintConfig.cpp:3623 msgid "Center" msgstr "Centrer" -#: src/libslic3r/PrintConfig.cpp:3425 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Center the print around the given center." msgstr "Centrer l'impression autour d'un point donné." -#: src/slic3r/GUI/Tab.cpp:1728 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Fichiers de certificat (*.crt, *.pem)|*.crt;*.pem|Tous les fichiers|*.*" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +#: src/slic3r/GUI/SavePresetDialog.cpp:313 +msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" +msgstr "Changer \"%1%\" par \"%2%\" pour cette imprimante physique \"%3%\"" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Change camera type (perspective, orthographic)" msgstr "Changer le type d'appareil photo (perspective, orthographique)" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:885 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:693 msgid "Change drainage hole diameter" msgstr "Changer le diamètre du trou de drainage" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "Changer l'extrudeur" -#: src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/slic3r/GUI/GUI_ObjectList.cpp:574 msgid "Change Extruder" msgstr "Changer d'Extrudeur" -#: src/slic3r/GUI/DoubleSlider.cpp:1145 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 msgid "Change extruder (N/A)" msgstr "Changer l'extrudeur (N/A)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3997 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 msgid "Change Extruders" msgstr "Changer les Extrudeurs" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:157 #, c-format msgid "Change Option %s" msgstr "Modifier l'Option %s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3558 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 msgid "Change Part Type" msgstr "Changer le Type de Partie" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:820 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:694 msgid "Change point head diameter" msgstr "Changer le diamètre de la tête de la pointe" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Change the number of instances of the selected object" msgstr "Modifie le nombre d'instances de l'objet sélectionné" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 msgid "Change type" msgstr "Changer le type" @@ -1199,125 +1390,172 @@ msgstr "Changer le type" msgid "Changelog && Download" msgstr "Téléchargement du Journal des Modifications" -#: src/slic3r/GUI/GUI_App.cpp:442 +#: src/slic3r/GUI/GUI_App.cpp:1245 msgid "Changing of an application language" msgstr "Changer la langue d'une application" -#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "Vérifier les mises à jour de l'application" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for configuration updates" msgstr "Vérifier les mises à jour de configuration" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for updates" msgstr "Vérifier les mises à jo&ur" -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: src/slic3r/GUI/BedShapeDialog.cpp:608 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Choisir un fichier à partir duquel importer la texture du plateau (PNG/SVG) :" -#: src/slic3r/GUI/MainFrame.cpp:773 +#: src/slic3r/GUI/MainFrame.cpp:1474 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Choisir un fichier à découper (STL/OBJ/AMF/3MF/PRUSA) :" -#: src/slic3r/GUI/BedShapeDialog.cpp:555 +#: src/slic3r/GUI/BedShapeDialog.cpp:631 msgid "Choose an STL file to import bed model from:" msgstr "Choisissez un fichier STL à partir duquel importer le modèle de lit :" -#: src/slic3r/GUI/BedShapeDialog.cpp:487 +#: src/slic3r/GUI/BedShapeDialog.cpp:563 msgid "Choose an STL file to import bed shape from:" msgstr "Choisissez un fichier STL à partir duquel importer la forme du plateau :" -#: src/slic3r/GUI/GUI_App.cpp:555 +#: src/slic3r/GUI/GUI_App.cpp:1208 msgid "Choose one file (3MF/AMF):" msgstr "Choisir un fichier (3MF/AMF) :" -#: src/slic3r/GUI/GUI_App.cpp:567 +#: src/slic3r/GUI/GUI_App.cpp:1233 +msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" +msgstr "Choisir un fichier (GCODE/.GCO/.G/.ngc/NGC) :" + +#: src/slic3r/GUI/GUI_App.cpp:1220 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Choisir un ou plusieurs fichiers (STL/OBJ/AMF/3MF/PRUSA) :" -#: src/slic3r/GUI/ConfigWizard.cpp:895 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:35 +msgid "Choose SLA archive:" +msgstr "Choisir l'archive SLA :" + +#: src/slic3r/GUI/ConfigWizard.cpp:1261 msgid "Choose the type of firmware used by your printer." msgstr "Choisissez le type de firmware utilisé par votre imprimante." -#: src/slic3r/GUI/BedShapeDialog.cpp:89 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:36 +msgid "Circle" +msgstr "Cercle" + +#: src/slic3r/GUI/BedShapeDialog.cpp:142 msgid "Circular" msgstr "Circulaire" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 -msgid "Click right mouse button to open History" -msgstr "Faites un clic droit sur la souris pour ouvrir l'Historique" +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 +msgid "Click right mouse button to open/close History" +msgstr "Cliquez avec le bouton droit de la souris pour ouvrir/fermer l'historique" -#: src/slic3r/GUI/GUI_ObjectList.cpp:404 +#: src/slic3r/GUI/GUI_ObjectList.cpp:451 msgid "Click the icon to change the object printable property" msgstr "Cliquez sur l'icône pour changer les propriétés imprimables de l'objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:398 +#: src/slic3r/GUI/GUI_ObjectList.cpp:445 msgid "Click the icon to change the object settings" msgstr "Cliquez sur l'icône pour modifier les réglages de l'objet" -#: src/slic3r/GUI/Plater.cpp:343 +#: src/slic3r/GUI/PresetComboBoxes.cpp:566 msgid "Click to edit preset" msgstr "Cliquez pour éditer le préréglage" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to hide" +msgstr "Cliquez pour cacher" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to show" +msgstr "Cliquez pour afficher" + +#: src/libslic3r/PrintConfig.cpp:286 msgid "Clip multi-part objects" msgstr "Dissocier les objets multi-pièces" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:25 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 msgid "Clipping of view" msgstr "Le plan de découpage" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:364 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +#: src/slic3r/GUI/Mouse3DController.cpp:353 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Close" msgstr "Fermer" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 -#: src/libslic3r/PrintConfig.cpp:2934 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Closing distance" -msgstr "Distance de fermeture" +msgstr "Intervalle d'espacement" -#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 +#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +msgid "Collapse sidebar" +msgstr "Réduire la barre latérale" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Collapse/Expand the sidebar" +msgstr "Réduire/développer la barre latérale" + +#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 msgid "Color" msgstr "Couleur" -#: src/slic3r/GUI/DoubleSlider.cpp:1005 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +msgid "Color change" +msgstr "Changement de couleur" + +#: src/slic3r/GUI/DoubleSlider.cpp:1130 msgid "Color change (\"%1%\")" msgstr "Changement de couleur (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1006 +#: src/slic3r/GUI/DoubleSlider.cpp:1131 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Changement de couleur (\"%1%\") pour l'extrudeur %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:995 +#: src/slic3r/GUI/GLCanvas3D.cpp:1001 #, c-format msgid "Color change for Extruder %d at %.2f mm" msgstr "Changement de couleur pour l'Extrudeur %d à %.2f mm" -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 -#: src/libslic3r/GCode/PreviewData.cpp:359 +#: src/slic3r/GUI/Tab.cpp:2203 +msgid "Color Change G-code" +msgstr "G-code de changement de couleur" + +#: src/libslic3r/PrintConfig.cpp:1960 +msgid "Color change G-code" +msgstr "G-code de changement de couleur" + +#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +msgid "Color changes" +msgstr "Changements de couleur" + +#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 +#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 msgid "Color Print" msgstr "Couleur d'Impression" -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:294 msgid "Colorprint height" msgstr "Hauteur du Colorprint" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:1034 msgid "Combine infill every" msgstr "Combiner le remplissage toutes les" -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1039 msgid "Combine infill every n layers" msgstr "Combiner le remplissage toutes les n couches" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Commands" msgstr "Commandes" @@ -1325,23 +1563,23 @@ msgstr "Commandes" msgid "Comment:" msgstr "Commentaire :" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 +#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 msgid "Compatible print profiles" msgstr "Profils d'impression compatibles" -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Compatible print profiles condition" msgstr "Condition des profils d'impression compatibles" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 +#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 msgid "Compatible printers" msgstr "Imprimantes compatibles" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:305 msgid "Compatible printers condition" msgstr "Condition de compatibilité des imprimantes" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:338 msgid "Complete individual objects" msgstr "Compléter les objets individuels" @@ -1349,27 +1587,27 @@ msgstr "Compléter les objets individuels" msgid "Completed" msgstr "Terminé" -#: src/libslic3r/Zipper.cpp:54 +#: src/libslic3r/miniz_extension.cpp:113 msgid "compression failed" msgstr "échec de la compression" -#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 msgid "Concentric" msgstr "Concentrique" -#: src/slic3r/GUI/ConfigWizard.cpp:2110 +#: src/slic3r/GUI/ConfigWizard.cpp:2625 msgid "Configuration &Assistant" msgstr "&Assistant de Configuration" -#: src/slic3r/GUI/ConfigWizard.cpp:2113 +#: src/slic3r/GUI/ConfigWizard.cpp:2628 msgid "Configuration &Wizard" msgstr "Assistant de Co&nfiguration" -#: src/slic3r/GUI/ConfigWizard.cpp:2109 +#: src/slic3r/GUI/ConfigWizard.cpp:2624 msgid "Configuration Assistant" msgstr "Assistant de Configuration" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1424 msgid "Configuration notes" msgstr "Notes de configuration" @@ -1385,11 +1623,15 @@ msgstr "Mise à jour de la configuration" msgid "Configuration update is available" msgstr "Une mise à jour de la configuration est disponible" -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "Configuration update is available." +msgstr "Une mise à jour de la configuration est disponible." + +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "Configuration updates" msgstr "Mises à jour de la configuration" -#: src/slic3r/GUI/ConfigWizard.cpp:2112 +#: src/slic3r/GUI/ConfigWizard.cpp:2627 msgid "Configuration Wizard" msgstr "Assistant de Configuration" @@ -1397,15 +1639,11 @@ msgstr "Assistant de Configuration" msgid "Confirmation" msgstr "Confirmation" -#: src/slic3r/GUI/Tab.cpp:1931 -msgid "Connection failed." -msgstr "La connexion a échoué." - -#: src/slic3r/GUI/Tab.cpp:3627 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Connection of the support sticks and junctions" msgstr "Connexion des tiges de support et jonctions" -#: src/slic3r/Utils/AstroBox.cpp:83 +#: src/slic3r/Utils/AstroBox.cpp:84 msgid "Connection to AstroBox works correctly." msgstr "La connexion à AstroBox fonctionne correctement." @@ -1421,124 +1659,136 @@ msgstr "La connexion à FlashAir fonctionne correctement et le téléchargement msgid "Connection to OctoPrint works correctly." msgstr "La connexion avec OctoPrint fonctionne correctement." -#: src/slic3r/GUI/Tab.cpp:1928 -msgid "Connection to printer works correctly." -msgstr "La connexion avec l'imprimante fonctionne correctement." +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:260 +msgid "Connection to printers connected via the print host failed." +msgstr "La connexion aux imprimantes connectées via l'hôte d'impression a échoué." -#: src/slic3r/Utils/OctoPrint.cpp:176 +#: src/slic3r/Utils/OctoPrint.cpp:185 msgid "Connection to Prusa SL1 works correctly." msgstr "La connexion avec Prusa SL1 fonctionne correctement." -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "Contact Z distance" msgstr "Distance de contact Z" -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:286 msgid "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others." msgstr "Contributions par Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik et de nombreux autres personnes." -#: src/libslic3r/PrintConfig.cpp:2659 +#: src/slic3r/GUI/GUI_App.cpp:245 +msgid "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." +msgstr "Contributions de Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik et bien d'autres." + +#: src/libslic3r/PrintConfig.cpp:2823 msgid "Controls the bridge type between two neighboring pillars. Can be zig-zag, cross (double zig-zag) or dynamic which will automatically switch between the first two depending on the distance of the two pillars." msgstr "Contrôle le type de pont entre deux piliers voisins. Peut-être en zig-zag, en croisement (double zig-zag) ou dynamique auquel cas il alternera automatiquement entre les deux premiers en fonction de la distance entre les deux piliers." -#: src/slic3r/GUI/Tab.cpp:1444 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +msgid "Convert from imperial units" +msgstr "Convertir à partir des unités impériales" + +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Cooling" msgstr "Refroidissement" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:696 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "Les mouvements de refroidissement accélèrent progressivement à partir de cette vitesse." -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:715 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Les mouvements de refroidissement accélèrent progressivement jusqu'à cette vitesse." -#: src/slic3r/GUI/Tab.cpp:1465 +#: src/slic3r/GUI/Tab.cpp:1811 msgid "Cooling thresholds" msgstr "Seuils de refroidissement" -#: src/libslic3r/PrintConfig.cpp:327 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Cooling tube length" msgstr "Longueur du tube de refroidissement" -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:353 msgid "Cooling tube position" msgstr "Position du tube de refroidissement" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4856 msgid "Copies of the selected object" msgstr "Copies de l'objet sélectionné" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4871 msgid "Copy" msgstr "Copier" -#: src/slic3r/GUI/MainFrame.cpp:589 +#: src/slic3r/GUI/MainFrame.cpp:1195 msgid "Copy selection to clipboard" msgstr "Copier la sélection dans le presse-papier" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Copy to clipboard" msgstr "Copier dans le presse-papier" -#: src/slic3r/GUI/SysInfoDialog.cpp:154 +#: src/slic3r/GUI/SysInfoDialog.cpp:177 msgid "Copy to Clipboard" msgstr "Copier dans le Presse-Papier" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:121 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 msgid "Copying of the temporary G-code has finished but the exported code couldn't be opened during copy check. The output G-code is at %1%.tmp." msgstr "La copie du G-code temporaire est terminée mais le code exporté n'a pas pu être ouvert au cours de la vérification de copie. Le G-code de sortie se trouve en %1%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:118 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 msgid "Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "La copie du G-code temporaire est terminée mais le code localisé en %1% n'a pas pu être ouvert au cours de la vérification de copie. Le G-code de sortie se trouve en %2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:480 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "La copie du G-code provisoire dans le G-code final a échoué" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:109 -msgid "Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?" -msgstr "La copie du G-code provisoire dans le G-code final a échoué. Peut-être que la carte SD est protégée en écriture ?" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +msgid "" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" +"Error message: %1%" +msgstr "" +"La copie du G-code temporaire vers le G-code de sortie a échoué. Peut-être que la carte SD est verrouillée en écriture ?\n" +"Message d'erreur : %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:112 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "La copie du G-code temporaire vers le G-code de sortie a échoué. Il est possible qu'il y ait un problème avec le matériel cible, veuillez tenter à nouveau l'export ou utilisez un matériel différent. Le G-code de sortie corrompu se trouve en %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 msgid "Copyright" msgstr "Droits d'auteur" -#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 msgid "Correction for expansion" msgstr "Correction avant expansion" -#: src/slic3r/GUI/Tab.cpp:2100 src/slic3r/GUI/Tab.cpp:3519 +#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 msgid "Corrections" msgstr "Corrections" -#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 msgid "Cost" msgstr "Coût" -#: src/slic3r/GUI/Plater.cpp:239 +#: src/slic3r/GUI/Plater.cpp:245 msgid "Cost (money)" msgstr "Coût (argent)" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "Impossible d'agencer les objets du modèle ! Certaines géométries sont peut-être non-valides." -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/Utils/AstroBox.cpp:90 msgid "Could not connect to AstroBox" msgstr "Impossible de se connecter à AstroBox" -#: src/slic3r/Utils/Duet.cpp:54 +#: src/slic3r/Utils/Duet.cpp:55 msgid "Could not connect to Duet" msgstr "Impossible de se connecter à Duet" -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:74 msgid "Could not connect to FlashAir" msgstr "Impossible de se connecter à FlashAir" @@ -1546,56 +1796,69 @@ msgstr "Impossible de se connecter à FlashAir" msgid "Could not connect to OctoPrint" msgstr "Impossible de se connecter à OctoPrint" -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:191 msgid "Could not connect to Prusa SLA" msgstr "Impossible de se connecter à Prusa SLA" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/Utils/Http.cpp:73 +msgid "Could not detect system SSL certificate store. PrusaSlicer will be unable to establish secure network connections." +msgstr "Impossible de détecter le stockage de certificats SSL du système. PrusaSlicer ne pourra pas établir de connexions réseau sécurisées." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 msgid "Could not get a valid Printer Host reference" msgstr "Impossible d'obtenir une référence d'Hôte d'Imprimante valide" -#: src/slic3r/Utils/Duet.cpp:134 +#: src/slic3r/Utils/Duet.cpp:136 msgid "Could not get resources to create a new connection" msgstr "Impossible d'obtenir les ressources pour créer une nouvelle connexion" -#: src/libslic3r/PrintConfig.cpp:1959 +#: src/libslic3r/PrintConfig.cpp:2101 msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "Recouvrir la couche de contact supérieure des supports avec des boucles. Désactivé par défaut." -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 msgid "Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low." -msgstr "Les fentes d'une taille inférieure à 2x le rayon de fermeture de l'espacement sont remplies au cours du tranchage par maillage triangulaire. L'opération de fermeture de l'espacement peut réduire la résolution de l'impression finale, aussi est-il conseillé de conserver une valeur relativement basse." +msgstr "Les fentes d'une taille inférieure à 2x le rayon de l'espacement sont remplies au cours du tranchage par maillage triangulaire. L'opération de fermeture de l'espacement peut réduire la résolution de l'impression finale, aussi est-il conseillé de conserver une valeur relativement basse." -#: src/libslic3r/Zipper.cpp:58 +#: src/libslic3r/miniz_extension.cpp:117 msgid "CRC-32 check failed" msgstr "Échec du test CRC-32" -#: src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Create pad around object and ignore the support elevation" msgstr "Créer un socle autour de l'objet et ignorer l'élévation du support" -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "Critical angle" msgstr "Angle critique" -#: src/libslic3r/PrintConfig.cpp:2668 +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Croiser" -#: src/libslic3r/PrintConfig.cpp:847 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:225 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:203 +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl + molette de la souris" + +#: src/libslic3r/PrintConfig.cpp:885 msgid "Cubic" msgstr "Cubique" -#: src/slic3r/GUI/wxExtensions.cpp:704 +#: src/slic3r/Utils/Http.cpp:91 +msgid "CURL init has failed. PrusaSlicer will be unable to establish network connections. See logs for additional details." +msgstr "L'initialisation de CURL a échoué. PrusaSlicer ne pourra pas établir de connexions réseau. Voir les journaux pour plus de détails." + +#: src/slic3r/GUI/wxExtensions.cpp:624 #, c-format msgid "Current mode is %s" msgstr "Le mode actuel est %s" -#: src/slic3r/GUI/Tab.cpp:959 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "Current preset is inherited from" msgstr "Le préréglage actuel est hérité de" -#: src/slic3r/GUI/Tab.cpp:957 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "Current preset is inherited from the default preset." msgstr "Le préréglage actuel est hérité du préréglage par défaut." @@ -1603,451 +1866,488 @@ msgstr "Le préréglage actuel est hérité du préréglage par défaut." msgid "Current version:" msgstr "Version actuelle :" -#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 -#: src/libslic3r/ExtrusionEntity.cpp:322 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 msgid "Custom" msgstr "Personnalisé" -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:114 msgid "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. If left blank, the default OS CA certificate repository is used." msgstr "Un fichier de certificat CA personnalisé peut être spécifié pour les connexions HTTPS OctoPrint, au format crt / pem. Si ce champ est vide, le certificat par défaut OS CA certificate repository est utilisé." -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1975 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Custom G-code" msgstr "G-code personnalisé" -#: src/slic3r/GUI/DoubleSlider.cpp:1619 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Custom G-code on current layer (%1% mm)." msgstr "G-code personnalisé sur la couche actuelle actuel (%1% mm)." -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/GCodeViewer.cpp:2580 src/slic3r/GUI/GUI_Preview.cpp:1477 +msgid "Custom G-codes" +msgstr "G-codes personnalisés" + +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer" msgstr "Imprimante Personnalisée" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer Setup" msgstr "Configuration d'une Imprimante Personnalisée" -#: src/slic3r/GUI/ConfigWizard.cpp:736 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 msgid "Custom profile name:" msgstr "Nom de profil personnalisé :" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3402 +#: src/slic3r/GUI/DoubleSlider.cpp:1135 +msgid "Custom template (\"%1%\")" +msgstr "Modèle personnalisé (\"%1%\")" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 msgid "Cut" msgstr "Couper" -#: src/slic3r/GUI/Plater.cpp:4786 +#: src/slic3r/GUI/Plater.cpp:4921 msgid "Cut by Plane" msgstr "Couper selon un Plan" -#: src/libslic3r/PrintConfig.cpp:3403 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Cut model at the given Z." msgstr "Couper le modèle au Z donné." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Cylinder" msgstr "Cylindre" -#: src/slic3r/GUI/MainFrame.cpp:568 +#: src/slic3r/GUI/MainFrame.cpp:1174 msgid "D&eselect all" msgstr "Tout désél&ectionner" -#: src/libslic3r/PrintConfig.cpp:3504 +#: src/libslic3r/PrintConfig.cpp:3709 msgid "Data directory" msgstr "Répertoire de données" -#: src/slic3r/GUI/Mouse3DController.cpp:313 +#: src/slic3r/GUI/Mouse3DController.cpp:300 msgid "Deadzone:" msgstr "Zone morte :" -#: src/libslic3r/Zipper.cpp:52 +#: src/libslic3r/miniz_extension.cpp:111 msgid "decompression failed or archive is corrupted" msgstr "la décompression a échoué ou l'archive est corrompue" -#: src/slic3r/GUI/Plater.cpp:4720 +#: src/slic3r/GUI/Plater.cpp:4824 msgid "Decrease Instances" msgstr "Diminuer les Instances" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1704 src/libslic3r/PrintConfig.cpp:335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 msgid "Default" msgstr "Défaut" -#: src/slic3r/GUI/GUI_ObjectList.cpp:457 src/slic3r/GUI/GUI_ObjectList.cpp:469 -#: src/slic3r/GUI/GUI_ObjectList.cpp:917 src/slic3r/GUI/GUI_ObjectList.cpp:3967 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3977 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4012 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 +#: src/slic3r/GUI/ExtraRenderers.cpp:297 src/slic3r/GUI/GUI_ObjectList.cpp:496 +#: src/slic3r/GUI/GUI_ObjectList.cpp:508 src/slic3r/GUI/GUI_ObjectList.cpp:1015 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4454 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4464 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4499 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:202 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 msgid "default" msgstr "défaut" -#: src/libslic3r/PrintConfig.cpp:777 +#: src/libslic3r/PrintConfig.cpp:813 msgid "Default base angle for infill orientation. Cross-hatching will be applied to this. Bridges will be infilled using the best direction Slic3r can detect, so this setting does not affect them." -msgstr "Angle de base par défaut pour l'orientation du remplissage. Des croisements seront appliqués à cette valeur. Les ponts seront remplis avec la meilleure direction que Slic3r peut détecter, ce réglage ne les affecteront donc pas." +msgstr "Angle de base par défaut pour l'orientation du remplissage. Des croisements seront appliqués à cette valeur. Les ponts seront remplis avec la meilleure direction que Slic3r peut détecter,ce réglage de les affectera donc pas." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 +msgid "Default color" +msgstr "Couleur par défaut" + +#: src/slic3r/GUI/GCodeViewer.cpp:2313 +msgid "default color" +msgstr "couleur par défaut" + +#: src/libslic3r/PrintConfig.cpp:590 msgid "Default extrusion width" msgstr "Largeur d'extrusion par défaut" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1305 msgid "default filament profile" msgstr "profil du filament par défaut" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Default filament profile" msgstr "Profil de filament par défaut" -#: src/libslic3r/PrintConfig.cpp:346 +#: src/libslic3r/PrintConfig.cpp:380 msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." msgstr "Profil de filament par défaut associé au profil d'imprimante courant. En sélectionnant le profil d'imprimante courant, ce profil de filament sera activé." -#: src/slic3r/GUI/Tab.cpp:2919 -#, c-format -msgid "Default preset (%s)" -msgstr "Préréglage par défaut (%s)" - -#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 msgid "Default print color" msgstr "Couleur d'impression par défaut" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "profil d'impression par défaut" -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default print profile" msgstr "Profil de filament par défaut" -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." msgstr "Profil de filament par défaut associé au profil d'imprimante courant. En sélectionnant le profil d'imprimante courant, ce profil de filament sera activé." -#: src/slic3r/GUI/Tab.cpp:1001 +#: src/slic3r/GUI/Tab.cpp:1319 msgid "default SLA material profile" msgstr "profil par défaut du matériau SLA" -#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 +#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 msgid "Default SLA material profile" msgstr "Profil par défaut du matériau SLA" -#: src/slic3r/GUI/Tab.cpp:1005 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA print profile" msgstr "profil d'impression SLA par défaut" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:184 msgid "default value" msgstr "valeur par défaut" -#: src/slic3r/GUI/ConfigWizard.cpp:734 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Define a custom printer profile" msgstr "Définissez un profil d'imprimante personnalisée" -#: src/libslic3r/PrintConfig.cpp:2798 +#: src/libslic3r/PrintConfig.cpp:2962 msgid "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful when enabling this feature, as some resins may produce an extreme suction effect inside the cavity, which makes peeling the print off the vat foil difficult." msgstr "Définit la profondeur de la cavité du socle. Réglez sur zéro pour désactiver la cavité. Faites bien attention lorsque vous activez cette fonctionnalité, car certaines résines génèrent un effet de succion extrême dans la cavité, et il est alors difficile de retirer l'impression de la feuille de la cuve." -#: src/slic3r/GUI/GUI_ObjectList.cpp:346 +#: src/slic3r/GUI/GUI_ObjectList.cpp:393 msgid "degenerate facets" msgstr "faces défectueuses" -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:676 msgid "Delay after unloading" msgstr "Délai après le déchargement" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "delete" msgstr "supprimer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1718 -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Delete" msgstr "Supprimer" -#: src/slic3r/GUI/MainFrame.cpp:575 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Delete &all" msgstr "Tout eff&acer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "Delete all" msgstr "Tout Supprimer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2176 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 msgid "Delete All Instances from Object" msgstr "Supprimer Toutes les Instances depuis l'Objet" -#: src/slic3r/GUI/DoubleSlider.cpp:1516 +#: src/slic3r/GUI/DoubleSlider.cpp:1708 msgid "Delete color change" msgstr "Supprimer le changement de couleur" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 msgid "Delete color change marker for current layer" msgstr "Retirer le repère de changement de couleur pour la couche en cours" -#: src/slic3r/GUI/DoubleSlider.cpp:1519 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Delete custom G-code" msgstr "Supprimer le G-code personnalisé" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:539 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:424 msgid "Delete drainage hole" msgstr "Supprimer le trou de drainage" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 msgid "Delete Height Range" msgstr "Supprimer la Zone de Hauteur" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2246 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Delete Instance" msgstr "Supprimer l'Instance" -#: src/slic3r/GUI/Plater.cpp:2712 +#: src/slic3r/GUI/Plater.cpp:2673 msgid "Delete Object" msgstr "Supprimer l'Objet" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:104 #, c-format msgid "Delete Option %s" msgstr "Supprimer l'Option %s" -#: src/slic3r/GUI/DoubleSlider.cpp:1518 +#: src/slic3r/GUI/DoubleSlider.cpp:1710 msgid "Delete pause print" msgstr "Supprimer la pause d'impression" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/PresetComboBoxes.cpp:652 +msgid "Delete physical printer" +msgstr "Supprimer l'imprimante physique" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +msgid "Delete Physical Printer" +msgstr "Supprimer l'imprimante physique" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Delete selected" msgstr "Supprimer la sélection" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2830 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 msgid "Delete Selected" msgstr "Supprimer la Sélection" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2693 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 msgid "Delete Selected Item" msgstr "Supprimer l'Item Sélectionné" -#: src/slic3r/GUI/Plater.cpp:4677 +#: src/slic3r/GUI/Plater.cpp:4782 msgid "Delete Selected Objects" msgstr "Supprimer les Objets Sélectionnés" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 msgid "Delete Settings" msgstr "Supprimer les Réglages" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2227 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 msgid "Delete Subobject" msgstr "Supprimer le sous-objet" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:514 msgid "Delete support point" msgstr "Supprimer un point de support" -#: src/slic3r/GUI/Tab.cpp:134 +#: src/slic3r/GUI/Tab.cpp:204 msgid "Delete this preset" msgstr "Supprimer ce préréglage" -#: src/slic3r/GUI/DoubleSlider.cpp:1035 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +msgid "Delete this preset from this printer device" +msgstr "Supprimer ce préréglage de cette imprimante" + +#: src/slic3r/GUI/DoubleSlider.cpp:1160 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "Supprimer la coche - Faites un clic gauche ou appuyez sur la touche \"-\"" -#: src/slic3r/GUI/DoubleSlider.cpp:1517 +#: src/slic3r/GUI/DoubleSlider.cpp:1709 msgid "Delete tool change" msgstr "Supprimer le changement d'outil" -#: src/slic3r/GUI/MainFrame.cpp:576 +#: src/slic3r/GUI/MainFrame.cpp:1182 msgid "Deletes all objects" msgstr "Supprimer tous les objets" -#: src/slic3r/GUI/MainFrame.cpp:573 +#: src/slic3r/GUI/MainFrame.cpp:1179 msgid "Deletes the current selection" msgstr "Supprime la sélection en cours" -#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/libslic3r/PrintConfig.cpp:753 src/libslic3r/PrintConfig.cpp:2646 +#: src/libslic3r/PrintConfig.cpp:2647 msgid "Density" msgstr "Densité" -#: src/libslic3r/PrintConfig.cpp:791 +#: src/libslic3r/PrintConfig.cpp:827 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Densité du remplissage interne, exprimée en pourcentage de 0% à 100%." -#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 -#: src/slic3r/GUI/Tab.cpp:2019 src/slic3r/GUI/Tab.cpp:2135 -#: src/slic3r/GUI/Tab.cpp:3543 src/slic3r/GUI/Tab.cpp:3671 +#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 msgid "Dependencies" msgstr "Dépendances" -#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 msgid "Deretraction Speed" msgstr "Vitesse de réinsertion" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 +#: src/slic3r/GUI/GUI_Preview.cpp:1473 +msgid "Deretractions" +msgstr "Réinsertions" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:172 +msgid "Descriptive name for the printer" +msgstr "Nom descriptif de l'imprimante" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Deselect all" msgstr "Désélectionner tout" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Deselect by rectangle" msgstr "Désélectionner par rectangle" -#: src/slic3r/GUI/MainFrame.cpp:569 +#: src/slic3r/GUI/MainFrame.cpp:1175 msgid "Deselects all objects" msgstr "Désélectionner tous les objets" -#: src/slic3r/GUI/Tab.cpp:963 +#: src/slic3r/GUI/Tab.cpp:1224 msgid "Detach from system preset" msgstr "Détacher du préréglage système" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "Detach preset" msgstr "Détacher le préréglage" -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/Tab.cpp:3323 msgid "Detached" msgstr "Détaché" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Detect bridging perimeters" msgstr "Détecter les périmètres faisant des ponts" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2218 msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." msgstr "Détecter les parois de largeur unique (où deux extrusions côte à côte ne rentrent pas et doivent êtres fusionnées en un seul trait)." -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Detect thin walls" msgstr "Détecter les parois fines" -#: src/libslic3r/PrintConfig.cpp:3472 +#: src/libslic3r/PrintConfig.cpp:3671 msgid "Detect unconnected parts in the given model(s) and split them into separate objects." -msgstr "Détecter les parties non-connectées sur un modèle donné (ou plusieurs) et les scinder en objets séparés." +msgstr "Détecter les pièces non-connectées sur un modèle donné (ou plusieurs) et les scinder en objets séparés." -#: src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:2330 msgid "Detected advanced data" msgstr "Données avancées détectées" -#: src/slic3r/GUI/Mouse3DController.cpp:289 +#: src/slic3r/GUI/Mouse3DController.cpp:274 msgid "Device:" msgstr "Appareil :" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 msgid "Diameter" msgstr "Diamètre" -#: src/libslic3r/PrintConfig.cpp:2694 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "Diameter in mm of the pillar base" msgstr "Diamètre en mm de la base du pilier" -#: src/libslic3r/PrintConfig.cpp:2650 +#: src/libslic3r/PrintConfig.cpp:2793 msgid "Diameter in mm of the support pillars" msgstr "Diamètre en mm des piliers de support" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "Diameter of the pointing side of the head" msgstr "Diamètre du côté de pointage de la tête" -#: src/slic3r/GUI/BedShapeDialog.cpp:94 +#: src/slic3r/GUI/BedShapeDialog.cpp:131 msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "Diamètre du plateau d'impression. Il est supposé que l'origine (0,0) est située au centre." -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1747 msgid "Direction" msgstr "Direction" -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Disable fan for the first" msgstr "Désactiver le ventilateur pour le(s) première(s)" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1457 msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." msgstr "Désactiver la rétraction lorsque le chemin de déplacement ne franchit pas les périmètres des couches supérieures (et donc les coulures seront probablement invisibles)." -#: src/slic3r/GUI/DoubleSlider.cpp:952 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 +msgid "Discard" +msgstr "Ignorer" + +#: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" msgstr "Éliminer toutes les modifications personnalisées" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1375 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 msgid "Discard changes" msgstr "Annuler les modifications" -#: src/slic3r/GUI/GUI_App.cpp:932 src/slic3r/GUI/Tab.cpp:2946 -msgid "Discard changes and continue anyway?" -msgstr "Annuler les changements et continuer malgré tout ?" - -#: src/slic3r/GUI/Tab.cpp:2078 +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Display" msgstr "Afficher" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "Display height" msgstr "Hauteur de l'affichage" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Display horizontal mirroring" msgstr "Afficher la symétrie horizontale" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2535 msgid "Display orientation" msgstr "Orientation de l'affichage" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Display the Print Host Upload Queue window" msgstr "Afficher la fenêtre de la File d'Attente de Téléchargement de l'Hôte d'Impression" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Display vertical mirroring" msgstr "Afficher la symétrie verticale" -#: src/libslic3r/PrintConfig.cpp:2353 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Display width" msgstr "Largeur de l'affichage" -#: src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:411 msgid "Distance between copies" msgstr "Distance entre les copies" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1157 +msgid "Distance between ironing lines" +msgstr "Distance entre les lignes de lissage" + +#: src/libslic3r/PrintConfig.cpp:1788 msgid "Distance between skirt and object(s). Set this to zero to attach the skirt to the object(s) and get a brim for better adhesion." msgstr "Distance entre le ou les objet(s) et la jupe. Mettez zéro pour attacher la jupe a(ux) objet(s) et obtenir une bordure pour une meilleure adhésion." -#: src/libslic3r/PrintConfig.cpp:2882 +#: src/libslic3r/PrintConfig.cpp:3046 msgid "Distance between two connector sticks which connect the object and the generated pad." msgstr "La distance entre deux bâtonnets de connexion qui connectent l'objet et le socle généré." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "Distance de l'objet" -#: src/slic3r/GUI/BedShapeDialog.cpp:85 +#: src/slic3r/GUI/BedShapeDialog.cpp:121 msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "Distance des coordonnées 0,0 du G-code depuis le coin avant gauche du rectangle." -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "Distance entre le point central du tube de refroidissement et la pointe de l'extrudeur." -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1490 msgid "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware." msgstr "Distance entre la pointe de l'extrudeur et la position où le filament est positionné en attente lorsqu'il est déchargé. Cela doit correspondre à la valeur dans le firmware de l'imprimante." -#: src/libslic3r/PrintConfig.cpp:378 +#: src/libslic3r/PrintConfig.cpp:412 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Distance utilisée par la fonction d'agencement automatique du plateau." -#: src/libslic3r/PrintConfig.cpp:3486 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Ne pas obtenir d'échec si un fichier fourni pour --télécharger n'existe pas." -#: src/libslic3r/PrintConfig.cpp:3430 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "Do not rearrange the given models before merging and keep their original XY coordinates." msgstr "Ne pas ré-agencer les modèles donnés avant la fusion et conserver leurs coordonnées XY originales." -#: src/slic3r/GUI/Field.cpp:240 +#: src/slic3r/GUI/Field.cpp:288 #, c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -2058,31 +2358,35 @@ msgstr "" "Sélectionnez OUI si vous voulez changer cette valeur pour %s%%,\n" "ou NON si vous êtes certain que %s%s est une valeur correcte." -#: src/slic3r/GUI/DoubleSlider.cpp:1920 +#: src/slic3r/GUI/DoubleSlider.cpp:2138 msgid "Do you want to delete all saved tool changes?" msgstr "Voulez-vous supprimer tous les changements d'outils enregistrés ?" -#: src/slic3r/GUI/GUI_App.cpp:884 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Do you want to proceed?" msgstr "Voulez-vous poursuivre?" -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "Do you want to retry" msgstr "Voulez-vous réessayer" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1045 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 msgid "Do you want to save your manually edited support points?" msgstr "Voulez-vous sauvegarder vos points de support édités manuellement ?" -#: src/slic3r/GUI/ConfigWizard.cpp:1834 +#: src/slic3r/GUI/ConfigWizard.cpp:2261 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Voulez-vous sélectionner les filaments par défaut pour ces modèles d'imprimantes FFF ?" -#: src/slic3r/GUI/ConfigWizard.cpp:1852 +#: src/slic3r/GUI/ConfigWizard.cpp:2279 msgid "Do you want to select default SLA materials for these printer models?" msgstr "Voulez-vous sélectionner les matériaux SLA par défaut pour ces modèles d'imprimantes ?" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "does not contain valid gcode." +msgstr "ne contient pas de gcode valide." + +#: src/libslic3r/PrintConfig.cpp:3628 msgid "Don't arrange" msgstr "Ne pas agencer" @@ -2090,7 +2394,7 @@ msgstr "Ne pas agencer" msgid "Don't notify about new releases any more" msgstr "Ne plus me notifier au sujet des nouvelles publications" -#: src/libslic3r/PrintConfig.cpp:369 +#: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "Ne pas supporter les ponts" @@ -2098,234 +2402,296 @@ msgstr "Ne pas supporter les ponts" msgid "Downgrade" msgstr "Rétrograder" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1803 msgid "Draft shield" msgstr "Bouclier contre les flux d'air" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Drag" msgstr "Faites glisser" -#: src/libslic3r/SLAPrintSteps.cpp:44 +#: src/slic3r/GUI/Plater.cpp:1406 +msgid "Drag and drop G-code file" +msgstr "Glisser et déposer un fichier G-code" + +#: src/libslic3r/SLAPrintSteps.cpp:45 msgid "Drilling holes into model." msgstr "Perçage de trous dans le modèle." -#: src/libslic3r/SLAPrintSteps.cpp:199 +#: src/libslic3r/SLAPrintSteps.cpp:201 msgid "Drilling holes into the mesh failed. This is usually caused by broken model. Try to fix it first." msgstr "Le perçage des trous dans le maillage a échoué. Cela est généralement dû à un modèle cassé. Essayez de le réparer en premier." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" msgstr "Déposer sur le lit" -#: src/libslic3r/PrintConfig.cpp:3433 +#: src/libslic3r/PrintConfig.cpp:3632 msgid "Duplicate" msgstr "Dupliquer" -#: src/libslic3r/PrintConfig.cpp:3438 +#: src/libslic3r/PrintConfig.cpp:3637 msgid "Duplicate by grid" msgstr "Dupliquer par grille" -#: src/slic3r/GUI/PresetHints.cpp:40 +#: src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Duration" +msgstr "Durée" + +#: src/slic3r/GUI/PresetHints.cpp:39 msgid "During the other layers, fan" msgstr "Pendant les autres couches, le ventilateur" -#: src/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dynamique" -#: src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1448 msgid "E&xport" msgstr "E&xporter" -#: src/slic3r/GUI/GUI_ObjectList.cpp:347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:394 msgid "edges fixed" msgstr "arrêtes corrigées" -#: src/slic3r/GUI/DoubleSlider.cpp:1508 +#: src/slic3r/GUI/DoubleSlider.cpp:1700 msgid "Edit color" msgstr "Éditer la couleur" -#: src/slic3r/GUI/DoubleSlider.cpp:960 +#: src/slic3r/GUI/DoubleSlider.cpp:1083 msgid "Edit current color - Right click the colored slider segment" msgstr "Modifier la couleur actuelle - Cliquez avec le bouton droit sur le segment de curseur de couleur" -#: src/slic3r/GUI/DoubleSlider.cpp:1510 +#: src/slic3r/GUI/DoubleSlider.cpp:1702 msgid "Edit custom G-code" msgstr "Éditer un G-code personnalisé" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3003 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 msgid "Edit Height Range" msgstr "Éditer la Zone de Hauteur" -#: src/slic3r/GUI/DoubleSlider.cpp:1509 +#: src/slic3r/GUI/DoubleSlider.cpp:1701 msgid "Edit pause print message" msgstr "Modifier le message de pause d'impression" -#: src/slic3r/GUI/DoubleSlider.cpp:1037 +#: src/slic3r/GUI/PresetComboBoxes.cpp:645 +msgid "Edit physical printer" +msgstr "Modifier l'imprimante physique" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:641 +msgid "Edit preset" +msgstr "Modifier le préréglage" + +#: src/slic3r/GUI/DoubleSlider.cpp:1162 msgid "Edit tick mark - Ctrl + Left click" msgstr "Modifier la coche - Ctrl + Clic gauche" -#: src/slic3r/GUI/DoubleSlider.cpp:1038 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 msgid "Edit tick mark - Right click" msgstr "Modifier la coche - Clic droit" -#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:394 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 msgid "Editing" msgstr "Édition" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Ejec&t SD card / Flash drive" msgstr "Éjec&ter la carte SD / la clef USB" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/NotificationManager.cpp:780 +msgid "Eject drive" +msgstr "Éjecter le lecteur" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Eject SD card / Flash drive" msgstr "Éjecter la carte SD / la clef USB" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "Éjecter la carte SD / la clef USB une fois que la G-code y a été exporté." -#: src/slic3r/GUI/Plater.cpp:2202 +#: src/slic3r/GUI/Plater.cpp:2034 #, c-format msgid "Ejecting of device %s(%s) has failed." msgstr "L'éjection de l'appareil %s(%s) a échoué." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:120 msgid "Elephant foot compensation" msgstr "Compensation de l'effet patte d'éléphant" -#: src/libslic3r/PrintConfig.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:2590 msgid "Elephant foot minimum width" msgstr "Largeur minimum du pied d'éléphant" -#: src/libslic3r/SLAPrint.cpp:625 +#: src/libslic3r/SLAPrint.cpp:639 msgid "Elevation is too low for object. Use the \"Pad around object\" feature to print the object without elevation." msgstr "L'Élévation est trop basse pour cet objet. utilisez la fonction \"Socle autour de l'objet\" pour imprimer l'objet sans élévation." -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1186 msgid "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute intervals into the G-code to let the firmware show accurate remaining time. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." msgstr "Émet M73 P[pourcentage imprimé] R[temps restant en minutes] à 1 minute d'intervalle dans le G-code afin que le firmware puisse indiquer précisément le temps restant. Jusqu'à présent seul le firmware Prusa i3 MK3 reconnait M73. Par ailleurs le firmware i3 MK3 supporte M73 Qxx Sxx pour le mode silencieux." -#: src/libslic3r/GCode.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" +msgstr "Émettre en G-code" + +#: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Couches vides détectées, la sortie ne serait pas imprimable." -#: src/slic3r/GUI/Tab.cpp:1445 src/libslic3r/PrintConfig.cpp:1355 -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:2343 msgid "Enable" msgstr "Activer" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:347 msgid "Enable auto cooling" msgstr "Activer le refroidissement automatique" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Enable fan if layer print time is below" msgstr "Activer le ventilateur si le temps d'impression de la couche est inférieur à" -#: src/libslic3r/PrintConfig.cpp:2908 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Enable hollowing" msgstr "Activer l'évidement" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2523 msgid "Enable horizontal mirroring of output images" msgstr "Active la symétrie horizontale des images de sortie" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:1124 +msgid "Enable ironing" +msgstr "Activer le lissage" + +#: src/libslic3r/PrintConfig.cpp:1125 +msgid "Enable ironing of the top layers with the hot print head for smooth surface" +msgstr "Activer le lissage des couches supérieures avec la tête d'impression chaude pour une surface lisse" + +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." msgstr "Activer la génération des supports." -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1010 msgid "Enable this to add comments into the G-Code labeling print moves with what object they belong to, which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." msgstr "Activez cette option pour ajouter des commentaires dans le G-code afin d'identifier les mouvements d'impression avec l'objet concerné. Cela est utile pour le plugin Octoprint CancelObject. Ce paramètre n'est PAS compatible avec la configuration mono-extrudeur multi-matériaux ni avec la configuration Nettoyer dans l'objet ou Nettoyer dans le remplissage." -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:973 msgid "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down." msgstr "Activez ceci pour obtenir un fichier G-code commenté, avec chaque ligne expliquée par un texte descriptif. Si vous imprimez depuis une carte SD, le poids supplémentaire du fichier pourrait ralentir le firmware de votre imprimante." -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "Enable variable layer height feature" msgstr "Activer la fonction de hauteur de couche variable" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Enable vertical mirroring of output images" msgstr "Activer la symétrie verticale des images de sortie" -#: src/slic3r/GUI/Tab.cpp:1534 src/slic3r/GUI/Tab.cpp:1982 -#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 +#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 msgid "End G-code" msgstr "G-code de fin" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +msgid "Enforce" +msgstr "Forcer" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:30 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:381 +msgid "Enforce seam" +msgstr "Forcer la jointure" + +#: src/libslic3r/PrintConfig.cpp:2066 msgid "Enforce support for the first" msgstr "Générer des supports sur le(s) première(s)" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Enforce support for the first n layers" msgstr "Générer des supports sur les n premières couches" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:47 +msgid "Enforce supports" +msgstr "Forcer les supports" + #: src/slic3r/GUI/PrintHostDialogs.cpp:198 #: src/slic3r/GUI/PrintHostDialogs.cpp:229 msgid "Enqueued" msgstr "Placé dans la file d'attente" -#: src/libslic3r/PrintConfig.cpp:407 +#: src/libslic3r/PrintConfig.cpp:441 msgid "Ensure vertical shell thickness" msgstr "S'assurer de l'épaisseur de la coque verticale" -#: src/slic3r/GUI/DoubleSlider.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4410 +#: src/slic3r/GUI/Search.cpp:433 +msgid "Enter a search term" +msgstr "Entrer un terme de recherche" + +#: src/slic3r/GUI/DoubleSlider.cpp:1814 msgid "Enter custom G-code used on current layer" msgstr "Entrez le G-code personnalisé utilisé sur la couche actuelle" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Enter new name" msgstr "Entrer de nouveaux noms" -#: src/slic3r/GUI/DoubleSlider.cpp:1634 +#: src/slic3r/GUI/DoubleSlider.cpp:1830 msgid "Enter short message shown on Printer display when a print is paused" msgstr "Entrez un court message affiché sur l'écran de l'imprimante lorsqu'une impression est mise en pause" -#: src/slic3r/GUI/ConfigWizard.cpp:1047 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." msgstr "Entrez la température du lit nécessaire pour que votre filament colle à votre lit chauffant." -#: src/slic3r/GUI/ConfigWizard.cpp:979 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Enter the diameter of your filament." msgstr "Entrez le diamètre de votre filament." -#: src/slic3r/GUI/ConfigWizard.cpp:966 +#: src/slic3r/GUI/ConfigWizard.cpp:1332 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Entrez le diamètre de la buse de la tête d'impression de votre imprimante." -#: src/slic3r/GUI/DoubleSlider.cpp:1650 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 msgid "Enter the height you want to jump to" msgstr "Entrez la hauteur à laquelle vous souhaitez sauter" -#: src/slic3r/GUI/Plater.cpp:4751 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 +msgid "Enter the move you want to jump to" +msgstr "Entrez le mouvement auquel vous souhaitez accéder" + +#: src/slic3r/GUI/Plater.cpp:4855 msgid "Enter the number of copies:" msgstr "Saisissez le nombre de copies :" -#: src/slic3r/GUI/ConfigWizard.cpp:1033 +#: src/slic3r/GUI/ConfigWizard.cpp:1399 msgid "Enter the temperature needed for extruding your filament." msgstr "Entrez la température nécessaire pour extruder votre filament." -#: src/libslic3r/PrintConfig.cpp:761 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Enter your filament cost per kg here. This is only for statistical information." msgstr "Entrez le coût par Kg de votre filament. Ceci est uniquement pour l'information statistique." -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:754 msgid "Enter your filament density here. This is only for statistical information. A decent way is to weigh a known length of filament and compute the ratio of the length to volume. Better is to calculate the volume directly through displacement." msgstr "Entrez ici la densité de votre filament. Ceci est uniquement pour des informations statistiques. Un bon moyen d'obtenir cette valeur est de peser un morceau de filament d'une longueur connue et de calculer le rapport de sa longueur par son poids. Le mieux est de calculer le volume directement par déplacement." -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:746 msgid "Enter your filament diameter here. Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "Entrez le diamètre de votre filament ici. Une bonne précision est requise, utilisez un pied à coulisse et calculez la moyenne de plusieurs mesures le long du filament." -#: src/slic3r/GUI/MainFrame.cpp:422 src/slic3r/GUI/MainFrame.cpp:785 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 +msgid "Entering Paint-on supports" +msgstr "Accès aux Supports peints" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 +msgid "Entering Seam painting" +msgstr "Accès à la peinture de jointure" + +#: src/slic3r/GUI/MainFrame.cpp:1003 src/slic3r/GUI/MainFrame.cpp:1486 #: src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Error" msgstr "Erreur" @@ -2335,25 +2701,33 @@ msgstr "Erreur" msgid "Error accessing port at %s: %s" msgstr "Erreur d'accès au port sur %s : %s" -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3238 msgid "Error during reload" msgstr "Erreur lors du rechargement" -#: src/slic3r/GUI/Plater.cpp:5043 +#: src/slic3r/GUI/Plater.cpp:5172 #, c-format msgid "Error exporting 3MF file %s" msgstr "Erreur d'export du fichier 3MF %s" -#: src/slic3r/GUI/Plater.cpp:5005 +#: src/slic3r/GUI/Plater.cpp:5138 #, c-format msgid "Error exporting AMF file %s" msgstr "Erreur d'export du fichier AMF %s" -#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +#: src/slic3r/GUI/OpenGLManager.cpp:276 +msgid "Error loading shaders" +msgstr "Erreur lors du chargement des shaders" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 msgid "Error Message" msgstr "Message d'erreur" -#: src/slic3r/GUI/AppConfig.cpp:114 +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to manually delete the file to recover from the error." +msgstr "Erreur lors de l'analyse du fichier de configuration de PrusaGCodeViewer, il est probablement corrompu. Essayez de supprimer manuellement le fichier pour corriger l'erreur." + +#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 msgid "Error parsing PrusaSlicer config file, it is probably corrupted. Try to manually delete the file to recover from the error. Your user profiles will not be affected." msgstr "Erreur d'analyse du fichier config PrusaSlicer, il est probablement corrompu. Essayez de supprimer manuellement le fichier pour récupérer après cette erreur. Vos profils d'utilisateurs ne seront pas affectés." @@ -2361,45 +2735,60 @@ msgstr "Erreur d'analyse du fichier config PrusaSlicer, il est probablement corr msgid "Error uploading to print host:" msgstr "Erreur lors du téléchargement vers l'hôte d'impression :" -#: src/libslic3r/Zipper.cpp:102 +#: src/slic3r/GUI/Plater.cpp:4752 +msgid "Error while loading .gcode file" +msgstr "Erreur lors du chargement du fichier .gcode" + +#: src/libslic3r/Zipper.cpp:27 msgid "Error with zip archive" msgstr "Erreur liée à l'archive zip" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1918 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 msgid "Error!" msgstr "Erreur!" -#: src/slic3r/GUI/BedShapeDialog.cpp:505 +#: src/slic3r/GUI/BedShapeDialog.cpp:581 msgid "Error! Invalid model" msgstr "Erreur ! Modèle invalide" +#: src/slic3r/GUI/NotificationManager.cpp:667 +#: src/slic3r/GUI/NotificationManager.cpp:683 +#: src/slic3r/GUI/NotificationManager.cpp:694 +msgid "ERROR:" +msgstr "ERREUR :" + #: src/slic3r/GUI/FirmwareDialog.cpp:647 #, c-format msgid "Error: %s" msgstr "Erreur : %s" -#: src/slic3r/GUI/Job.hpp:123 +#: src/slic3r/GUI/Jobs/Job.cpp:74 msgid "ERROR: not enough resources to execute a new job." msgstr "ERREUR : il n'y a pas assez de ressources pour exécuter une nouvelle tâche." -#: src/slic3r/GUI/Plater.cpp:240 src/slic3r/GUI/Plater.cpp:1216 -#: src/slic3r/GUI/Plater.cpp:1258 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 src/slic3r/GUI/GCodeViewer.cpp:2557 +#: src/slic3r/GUI/Plater.cpp:246 src/slic3r/GUI/Plater.cpp:1125 +#: src/slic3r/GUI/Plater.cpp:1175 src/slic3r/GUI/Plater.cpp:1196 msgid "Estimated printing time" msgstr "Temps d'impression estimé" -#: src/slic3r/GUI/Plater.cpp:502 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Event" +msgstr "Événement" + +#: src/slic3r/GUI/Plater.cpp:368 msgid "Everywhere" msgstr "Partout" -#: src/slic3r/GUI/PresetHints.cpp:51 +#: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first %1% layers." msgstr "sauf pour les %1% première couches." -#: src/slic3r/GUI/PresetHints.cpp:53 +#: src/slic3r/GUI/PresetHints.cpp:52 msgid "except for the first layer." msgstr "sauf pour la première couche." -#: src/libslic3r/Print.cpp:1377 +#: src/libslic3r/Print.cpp:1403 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "Dépasse de %1%=%2% mm pour être imprimable avec une buse de diamètre %3% mm" @@ -2408,116 +2797,129 @@ msgstr "Dépasse de %1%=%2% mm pour être imprimable avec une buse de diamètre msgid "Exit %s" msgstr "Sortir de %s" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/slic3r/GUI/Plater.cpp:2143 +msgid "Expand sidebar" +msgstr "Développer la barre latérale" + +#: src/libslic3r/PrintConfig.cpp:405 msgid "Experimental option for preventing support material from being generated under bridged areas." msgstr "Option expérimentale pour empêcher la génération de support sous les ponts." -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." msgstr "Option expérimentale qui ajuste le flux pour les surplombs (le flux pour les ponts sera utilisé), leur applique la vitesse pour les ponts et active le ventilateur." -#: src/slic3r/GUI/GUI_App.cpp:815 src/slic3r/GUI/wxExtensions.cpp:755 +#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "Expert" -#: src/slic3r/GUI/ConfigWizard.cpp:822 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Expert mode" msgstr "Mode expert" -#: src/slic3r/GUI/GUI_App.cpp:815 +#: src/slic3r/GUI/GUI_App.cpp:1507 msgid "Expert View Mode" msgstr "Mode de Vue Expert" -#: src/slic3r/GUI/Plater.cpp:5521 +#: src/slic3r/GUI/Plater.cpp:5706 msgid "Export" msgstr "Exporter" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export &Config" msgstr "Exporter la &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:477 src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 msgid "Export &G-code" msgstr "Exporter le &G-code" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export &toolpaths as OBJ" msgstr "Exporter les parcours en &tant que OBJ" -#: src/libslic3r/PrintConfig.cpp:3338 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Export 3MF" msgstr "Exporter 3MF" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export all presets including physical printers to file" +msgstr "Exporter tous les préréglage y compris les imprimantes physiques vers un fichier" + +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export all presets to file" msgstr "Exporter tous les préréglage vers un fichier" -#: src/libslic3r/PrintConfig.cpp:3343 +#: src/libslic3r/PrintConfig.cpp:3536 msgid "Export AMF" msgstr "Exporter AMF" -#: src/slic3r/GUI/Plater.cpp:2598 +#: src/slic3r/GUI/Plater.cpp:2560 msgid "Export AMF file:" msgstr "Exporter le fichier AMF :" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1657 src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 msgid "Export as STL" msgstr "Exporter en tant que STL" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 msgid "Export config" msgstr "Exporter la configuration" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export Config &Bundle" msgstr "Exporter le &Lot de Configuration" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export Config Bundle With Physical Printers" +msgstr "Exporter le Lot de Configurations Avec les Imprimantes Physiques" + +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export current configuration to file" msgstr "Exporter la configuration actuelle vers un fichier" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export current plate as AMF" msgstr "Exporter le plateau courant en AMF" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:1068 msgid "Export current plate as G-code" msgstr "Exporter le plateau courant en G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Exporter le plateau actuel en tant que G-code vers la carte SD / la clef USB" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export current plate as STL" msgstr "Exporter le plateau courant en STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export current plate as STL including supports" msgstr "Exporter le contenu du plateau en STL, supports inclus" -#: src/slic3r/GUI/Plater.cpp:3664 -msgid "Export failed" -msgstr "L'export a échoué" - -#: src/slic3r/GUI/ConfigWizard.cpp:801 +#: src/slic3r/GUI/ConfigWizard.cpp:1160 msgid "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "Exportez les chemins d'accès complets des modèles et des sources de pièces dans des fichiers 3mf et amf" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 -#: src/slic3r/GUI/Plater.cpp:5521 src/libslic3r/PrintConfig.cpp:3353 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 +#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 msgid "Export G-code" msgstr "Exporter le G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export G-code to SD card / Flash drive" msgstr "Exporter le G-code vers la carte SD / la clef USB" -#: src/libslic3r/PrintConfig.cpp:3320 +#: src/slic3r/GUI/NotificationManager.cpp:631 +#: src/slic3r/GUI/NotificationManager.cpp:748 +msgid "Export G-Code." +msgstr "Exporter le G-code." + +#: src/libslic3r/PrintConfig.cpp:3513 msgid "Export OBJ" msgstr "Exporter OBJ" -#: src/slic3r/GUI/Plater.cpp:2610 +#: src/slic3r/GUI/Plater.cpp:2572 msgid "Export OBJ file:" msgstr "Exporter le fichier OBJ :" @@ -2525,212 +2927,215 @@ msgstr "Exporter le fichier OBJ :" msgid "Export of a temporary 3mf file failed" msgstr "Exporter un fichier temporaire 3mf qui a échoué" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export plate as &AMF" msgstr "Exporter le plateau en tant que &AMF" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export plate as &STL" -msgstr "Exporter le plateau en tant que &STL" +msgstr "Exporter le plateau au format &STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export plate as STL &including supports" msgstr "Exporter le plateau en STL en &incluant les supports" -#: src/libslic3r/PrintConfig.cpp:3332 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Export SLA" msgstr "Exporter SLA" -#: src/slic3r/GUI/Preferences.cpp:72 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "Export sources full pathnames to 3mf and amf" msgstr "Exporter les noms de chemins complets des sources vers 3mf et amf" -#: src/libslic3r/PrintConfig.cpp:3348 +#: src/libslic3r/PrintConfig.cpp:3541 msgid "Export STL" msgstr "Exporter STL" -#: src/slic3r/GUI/Plater.cpp:2591 +#: src/slic3r/GUI/Plater.cpp:2553 msgid "Export STL file:" msgstr "Exporter le fichier STL :" -#: src/libslic3r/PrintConfig.cpp:3339 +#: src/libslic3r/PrintConfig.cpp:3532 msgid "Export the model(s) as 3MF." msgstr "Exporter le(s) modèle(s) en tant que 3MF." -#: src/libslic3r/PrintConfig.cpp:3344 +#: src/libslic3r/PrintConfig.cpp:3537 msgid "Export the model(s) as AMF." msgstr "Exporter le(s) modèle(s) en tant que AMF." -#: src/libslic3r/PrintConfig.cpp:3321 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Export the model(s) as OBJ." msgstr "Exporter le(s) modèle(s) en tant que OBJ." -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3542 msgid "Export the model(s) as STL." msgstr "Exporter le(s) modèle(s) en tant que STL." -#: src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/Plater.cpp:3884 msgid "Export the selected object as STL file" msgstr "Exporter l'objet sélectionné en tant que fichier STL" -#: src/slic3r/GUI/Plater.cpp:880 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 msgid "Export to SD card / Flash drive" msgstr "Exporter vers une carte SD / une clé USB" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export toolpaths as OBJ" msgstr "Exporter le parcours en tant que OBJ" -#: src/libslic3r/Print.cpp:1638 +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Exporting finished." +msgstr "Exportation terminée." + +#: src/libslic3r/Print.cpp:1676 msgid "Exporting G-code" msgstr "Exportation du G-code" #: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." -msgstr "Exportation du modèle ..." +msgid "Exporting model" +msgstr "Exportation du modèle" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 msgid "Exporting source model" msgstr "Exportation du modèle source" -#: src/libslic3r/SLAPrint.cpp:646 +#: src/libslic3r/SLAPrint.cpp:660 msgid "Exposition time is out of printer profile bounds." msgstr "Le temps d'exposition dépasse les limites du profil d'imprimante." -#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:3515 +#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 msgid "Exposure" msgstr "Exposition" -#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Exposure time" msgstr "Temps d'exposition" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "External perimeter" msgstr "Périmètre externe" -#: src/slic3r/GUI/PresetHints.cpp:156 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "périmètres externes" -#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:482 src/libslic3r/PrintConfig.cpp:493 msgid "External perimeters" msgstr "Périmètres externes" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:505 msgid "External perimeters first" msgstr "Périmètres externes en premier" -#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1704 msgid "Extra length on restart" msgstr "Longueur supplémentaire à la reprise" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Extra loading distance" msgstr "Distance de chargement supplémentaire" -#: src/libslic3r/PrintConfig.cpp:477 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extra perimeters if needed" msgstr "Périmètres supplémentaires si nécessaire" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1434 -#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 +#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Extruder" msgstr "Extrudeur" -#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 -#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1704 -#: src/slic3r/GUI/Tab.cpp:2320 src/libslic3r/GCode/PreviewData.cpp:445 +#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 #, c-format msgid "Extruder %d" msgstr "Extrudeur %d" -#: src/slic3r/GUI/DoubleSlider.cpp:1011 +#: src/slic3r/GUI/DoubleSlider.cpp:1137 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "L'extrudeur (outil) est remplacée par l'extrudeur \"%1%\"" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 -msgid "Extruder and Bed Temperatures" -msgstr "Températures de l'Extrudeur et du Lit" - #: src/slic3r/GUI/WipeTowerDialog.cpp:255 msgid "Extruder changed to" msgstr "Extrudeur changé à" -#: src/slic3r/GUI/Tab.cpp:1233 +#: src/slic3r/GUI/Tab.cpp:1563 msgid "Extruder clearance (mm)" msgstr "Dégagement de l'extrudeur (mm)" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Couleur de l'extrudeur" -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder offset" msgstr "Décalage de l'extrudeur" -#: src/libslic3r/PrintConfig.cpp:911 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Température de l’extrudeur pour la première couche. Si vous voulez contrôler manuellement la température au cours de l’impression, mettez à zéro pour désactiver les commandes de contrôle de température dans le fichier de sortie." - -#: src/libslic3r/PrintConfig.cpp:2065 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Température de l'extrudeur pour les couches après la première. Mettez zéro pour désactiver les commandes de contrôle de la température dans le fichier de sortie." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:617 -#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:1838 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 +#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 msgid "Extruders" msgstr "Extrudeurs" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1061 +msgid "Extruders count" +msgstr "Nombre d'extrudeurs" + +#: src/slic3r/GUI/GCodeViewer.cpp:2493 +msgid "Extrusion" +msgstr "Extrusion" + +#: src/libslic3r/PrintConfig.cpp:575 msgid "Extrusion axis" msgstr "Axe d'extrusion" -#: src/libslic3r/PrintConfig.cpp:545 +#: src/libslic3r/PrintConfig.cpp:581 msgid "Extrusion multiplier" msgstr "Multiplicateur d'extrusion" -#: src/slic3r/GUI/ConfigWizard.cpp:1037 +#: src/slic3r/GUI/ConfigWizard.cpp:1403 msgid "Extrusion Temperature:" msgstr "Température d'Extrusion :" -#: src/slic3r/GUI/Tab.cpp:1205 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Extrusion width" msgstr "Largeur d'extrusion" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:618 -#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 -#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 msgid "Extrusion Width" msgstr "Largeur d'Extrusion" -#: src/slic3r/GUI/Plater.cpp:162 +#: src/slic3r/GUI/Plater.cpp:168 msgid "Facets" msgstr "Faces" -#: src/slic3r/GUI/GUI_ObjectList.cpp:349 +#: src/slic3r/GUI/GUI_ObjectList.cpp:396 msgid "facets added" msgstr "faces ajoutées" -#: src/slic3r/GUI/GUI_ObjectList.cpp:348 +#: src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "facets removed" msgstr "faces supprimées" -#: src/slic3r/GUI/GUI_ObjectList.cpp:350 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "facets reversed" msgstr "faces inversées" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2660 msgid "Faded layers" msgstr "Couches estompées" -#: src/libslic3r/Zipper.cpp:44 +#: src/libslic3r/miniz_extension.cpp:103 msgid "failed finding central directory" msgstr "impossible de trouver le répertoire central" @@ -2738,105 +3143,115 @@ msgstr "impossible de trouver le répertoire central" msgid "Failed loading the input model." msgstr "Échec du chargement du modèle d'entrée." -#: src/libslic3r/PrintBase.cpp:71 +#: src/libslic3r/PrintBase.cpp:72 msgid "Failed processing of the output_filename_format template." msgstr "Échec du traitement du modèle output_filename_format." -#: src/slic3r/GUI/PresetHints.cpp:42 +#: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Ventilateur" -#: src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Réglages du ventilateur" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1457 +#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 msgid "Fan speed" msgstr "Vitesse du ventilateur" -#: src/libslic3r/GCode/PreviewData.cpp:353 +#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 msgid "Fan Speed (%)" msgstr "Vitesse du ventilateur (%)" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Rapide" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Fast tilt" msgstr "Inclinaison rapide" -#: src/slic3r/GUI/GUI_App.cpp:141 +#: src/slic3r/GUI/GUI_App.cpp:531 msgid "Fatal error" msgstr "Erreur fatale" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 -#: src/libslic3r/GCode/PreviewData.cpp:345 +#: src/slic3r/GUI/GUI_Init.cpp:88 +msgid "Fatal error, exception catched: %1%" +msgstr "Erreur fatale, exception interceptée : %1%" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 +#: src/libslic3r/GCode/PreviewData.cpp:350 msgid "Feature type" msgstr "Type de fonctionnalité" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 +#: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" msgstr "Types de fonctionnalité" -#: src/slic3r/GUI/ConfigWizard.cpp:1525 +#: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" msgstr "Imprimantes Technologie FFF" -#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1425 -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1771 msgid "Filament" msgstr "Filament" -#: src/slic3r/GUI/Preset.cpp:1522 +#: src/libslic3r/Preset.cpp:1301 msgid "filament" msgstr "filament" -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Filament and Nozzle Diameters" msgstr "Diamètres du Filament et de la Buse" -#: src/slic3r/GUI/ConfigWizard.cpp:983 +#: src/slic3r/GUI/ConfigWizard.cpp:1349 msgid "Filament Diameter:" msgstr "Diamètre du Filament :" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:687 msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." msgstr "Le filament est refroidi en étant déplacé d'avant en arrière dans les tubes de refroidissement. Spécifiez le nombre souhaité de ces mouvements." -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Filament load time" msgstr "Temps de chargement du filament" -#: src/libslic3r/PrintConfig.cpp:588 +#: src/libslic3r/PrintConfig.cpp:624 msgid "Filament notes" msgstr "Notes du filament" -#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1378 +#: src/slic3r/GUI/Tab.cpp:1669 msgid "Filament Overrides" msgstr "Annulations de Filament" -#: src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "Filament parking position" msgstr "Position d'attente du filament" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filament Profiles Selection" msgstr "Sélection des Profils de Filament" -#: src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Tab.cpp:1817 msgid "Filament properties" msgstr "Propriétés du filament" -#: src/slic3r/GUI/Tab.hpp:355 +#: src/slic3r/GUI/Tab.hpp:409 msgid "Filament Settings" msgstr "Réglages du filament" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Filament Settings Tab" +msgstr "Onglet de réglages du filament" + +#: src/libslic3r/PrintConfig.cpp:762 msgid "Filament type" msgstr "Type de filament" -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Filament unload time" msgstr "Temps de déchargement du filament" @@ -2844,75 +3259,79 @@ msgstr "Temps de déchargement du filament" msgid "filaments" msgstr "filaments" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filaments" msgstr "Filaments" -#: src/libslic3r/Zipper.cpp:72 +#: src/slic3r/GUI/ConfigWizard.cpp:691 +msgid "Filaments marked with <b>*</b> are <b>not</b> compatible with some installed printers." +msgstr "Les filaments marqués d'une <b>*</b> <b>ne</b> sont <b>pas</b> compatibles avec certaines imprimantes installées." + +#: src/libslic3r/miniz_extension.cpp:131 msgid "file close failed" msgstr "échec de la fermeture du fichier" -#: src/libslic3r/Zipper.cpp:66 +#: src/libslic3r/miniz_extension.cpp:125 msgid "file create failed" msgstr "échec de création du fichier" -#: src/slic3r/GUI/MainFrame.cpp:791 +#: src/slic3r/GUI/MainFrame.cpp:1492 msgid "File Not Found" msgstr "Fichier non trouvé" -#: src/libslic3r/Zipper.cpp:86 +#: src/libslic3r/miniz_extension.cpp:145 msgid "file not found" msgstr "fichier non trouvé" -#: src/libslic3r/Zipper.cpp:64 +#: src/libslic3r/miniz_extension.cpp:123 msgid "file open failed" msgstr "échec de l'ouverture du fichier" -#: src/libslic3r/Zipper.cpp:70 +#: src/libslic3r/miniz_extension.cpp:129 msgid "file read failed" msgstr "échec de lecture du fichier" -#: src/libslic3r/Zipper.cpp:74 +#: src/libslic3r/miniz_extension.cpp:133 msgid "file seek failed" msgstr "impossible de trouver le fichier" -#: src/libslic3r/Zipper.cpp:76 +#: src/libslic3r/miniz_extension.cpp:135 msgid "file stat failed" msgstr "impossible d'établir des statistiques pour ce fichier" -#: src/libslic3r/Zipper.cpp:36 +#: src/libslic3r/miniz_extension.cpp:95 msgid "file too large" msgstr "fichier trop volumineux" -#: src/libslic3r/Zipper.cpp:68 +#: src/libslic3r/miniz_extension.cpp:127 msgid "file write failed" msgstr "échec d'écriture du fichier" -#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 msgid "Filename" msgstr "Nom de fichier" -#: src/libslic3r/PrintConfig.cpp:775 +#: src/libslic3r/PrintConfig.cpp:811 msgid "Fill angle" msgstr "Angle du remplissage" -#: src/libslic3r/PrintConfig.cpp:789 +#: src/libslic3r/PrintConfig.cpp:825 msgid "Fill density" msgstr "Densité de remplissage" -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:862 msgid "Fill pattern" msgstr "Motif de remplissage" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:473 msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." msgstr "Motif pour les remplissages pour le remplissage du bas. Ceci affecte seulement la couche externe visible en bas, et non les coques solides adjacentes." -#: src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:864 msgid "Fill pattern for general low-density infill." msgstr "Motif pour les remplissages de faible densité." -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:451 msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." msgstr "Motif pour les remplissages pour le remplissage du haut. Ceci affecte seulement la couche externe visible en haut, et non les coques solides adjacentes." @@ -2920,7 +3339,7 @@ msgstr "Motif pour les remplissages pour le remplissage du haut. Ceci affecte se msgid "Finished" msgstr "Terminé" -#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1947 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 msgid "Firmware" msgstr "Firmware" @@ -2932,50 +3351,58 @@ msgstr "Outil de flash du firmware" msgid "Firmware image:" msgstr "Image du firmware :" -#: src/slic3r/GUI/Tab.cpp:2577 +#: src/slic3r/GUI/Tab.cpp:2733 msgid "Firmware Retraction" msgstr "Rétraction du Firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:891 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 msgid "Firmware Type" msgstr "Type de Firmware" -#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 -#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 msgid "First layer" msgstr "Première couche" -#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:909 +msgid "First layer bed temperature" +msgstr "Température du plateau de la première couche" + +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 msgid "First layer height" msgstr "Hauteur de la première couche" -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1448 msgid "First layer height can't be greater than nozzle diameter" msgstr "La hauteur de la première couche ne peut pas être supérieure au diamètre de la buse" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:960 +msgid "First layer nozzle temperature" +msgstr "Température de la buse de la première couche" + +#: src/libslic3r/PrintConfig.cpp:942 msgid "First layer speed" msgstr "Vitesse de la première couche" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "Volume de la première couche" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1647 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Corriger avec Netfabb" -#: src/slic3r/GUI/Plater.cpp:3473 +#: src/slic3r/GUI/Plater.cpp:3278 msgid "Fix Throught NetFabb" msgstr "Corriger Avec NetFabb" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "Flasher le &firmware de l'imprimante" #: src/slic3r/GUI/FirmwareDialog.cpp:150 msgid "Flash!" -msgstr "Flash !" +msgstr "Flasher !" #: src/slic3r/GUI/FirmwareDialog.cpp:284 msgid "Flashing cancelled." @@ -2997,24 +3424,32 @@ msgstr "Processus de flash en cours. Veuillez ne pas déconnecter l'imprimante ! msgid "Flashing succeeded!" msgstr "Flash effectué avec succès !" -#: src/slic3r/GUI/Tab.cpp:1218 +#: src/slic3r/GUI/Tab.cpp:1548 msgid "Flow" msgstr "Flux" -#: src/slic3r/GUI/PresetHints.cpp:220 +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Flow rate" +msgstr "Débit" + +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "flow rate is maximized" msgstr "le débit est maximisé" -#: src/slic3r/GUI/UpdateDialogs.cpp:286 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:555 +msgid "Following printer preset(s) is duplicated:%1%The above preset for printer \"%2%\" will be used just once." +msgstr "Le ou les préréglages d'imprimante suivants sont dupliqués :%1% Le préréglage ci-dessus pour l'imprimante \"%2%\" sera utilisé une seule fois." + +#: src/slic3r/GUI/UpdateDialogs.cpp:287 msgid "For more information please visit our wiki page:" msgstr "Pour plus d'informations, merci de visiter notre page wiki :" -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 +#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 msgid "For support enforcers only" msgstr "Seulement pour les générateur de supports" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3267 +#: src/slic3r/GUI/Tab.cpp:3702 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -3022,7 +3457,7 @@ msgstr "" "pour le bouton gauche : indique un préréglage non-système (ou non par défaut),\n" "pour le bouton droit : indique que le réglage n'a pas été modifié." -#: src/slic3r/GUI/ConfigManipulation.cpp:136 +#: src/slic3r/GUI/ConfigManipulation.cpp:135 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers." @@ -3030,21 +3465,21 @@ msgstr "" "Pour que la tour de nettoyage fonctionne avec les supports solubles, les couches du support\n" "doivent être synchronisées avec les couches d'objets." -#: src/libslic3r/Print.cpp:1396 +#: src/libslic3r/Print.cpp:1422 msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." msgstr "" "Pour que la Tour de Nettoyage fonctionne avec des supports solubles, les couches de support\n" "doivent être synchronisées avec les couches de l'objet." -#: src/libslic3r/PrintConfig.cpp:2864 +#: src/libslic3r/PrintConfig.cpp:3028 msgid "Force pad around object everywhere" msgstr "Forcer le socle partout autour de l'objet" -#: src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Force solid infill for regions having a smaller area than the specified threshold." msgstr "Forcer un remplissage solide pour les zones ayant une surface plus petite que la valeur indiquée." -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1116 msgid "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material." msgstr "Force la génération de coques solides entre des volumes/matériaux adjacents. Utile pour des impressions multi-extrudeurs avec des matériaux translucides ou avec un support manuel soluble." @@ -3052,27 +3487,31 @@ msgstr "Force la génération de coques solides entre des volumes/matériaux adj msgid "From" msgstr "De" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2223 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "from" +msgstr "de" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 msgid "From Object List You can't delete the last solid part from object." msgstr "Depuis la Liste d'Objet Vous ne pouvez pas supprimer la dernière partie solide de l'objet." -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front" msgstr "Avant" -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front View" msgstr "Vue Avant" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "nom de profil complet" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/DoubleSlider.cpp:1021 +#: src/slic3r/GUI/DoubleSlider.cpp:1146 msgid "" "G-code associated to this tick mark is in a conflict with print mode.\n" "Editing it will cause changes of Slider data." @@ -3080,220 +3519,273 @@ msgstr "" "Le G-code associé à cette coche est en conflit avec le mode d'impression.\n" "Le modifier entraînera des modifications des données du curseur." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:130 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "G-code file exported to %1%" msgstr "Fichier G-code exporté vers %1%" -#: src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:980 msgid "G-code flavor" msgstr "Version du G-code" -#: src/libslic3r/PrintConfig.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:79 +msgid "G-code preview" +msgstr "Aperçu du G-code" + +#: src/libslic3r/PrintConfig.cpp:3552 +msgid "G-code viewer" +msgstr "Visionneuse de G-code" + +#: src/libslic3r/PrintConfig.cpp:757 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "g/ml" msgstr "g/ml" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/PrintConfig.cpp:918 +#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 +#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 msgid "Gap fill" msgstr "Remplissage des trous" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1796 -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 +#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "Général" -#: src/libslic3r/PrintConfig.cpp:1307 +#: src/libslic3r/PrintConfig.cpp:1415 msgid "Generate no less than the number of skirt loops required to consume the specified amount of filament on the bottom layer. For multi-extruder machines, this minimum applies to each extruder." msgstr "Nombre minimum de contours à générer afin de consommer la quantité de filament spécifiée sur la couche inférieure. Pour les machines multi-extrudeurs, ce minimum s'applique à chaque extrudeur." -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" msgstr "Générer des supports" -#: src/libslic3r/PrintConfig.cpp:1926 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." msgstr "Générer des supports pour le nombre de couches spécifié à partir du bas, que les supports normaux soient activés ou non et sans tenir compte des seuils d'inclinaison. Ceci est utile pour obtenir une meilleure adhérence pour des objets ayant une surface de contact très fine ou limitée sur le plateau." -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Generate supports" msgstr "Générer des supports" -#: src/libslic3r/PrintConfig.cpp:2615 +#: src/libslic3r/PrintConfig.cpp:2758 msgid "Generate supports for the models" msgstr "Générer des supports pour les modèles" -#: src/libslic3r/Print.cpp:1614 +#: src/slic3r/GUI/Plater.cpp:3554 +msgid "generated warnings" +msgstr "avertissements générés" + +#: src/libslic3r/Print.cpp:1645 msgid "Generating brim" msgstr "Génération de la bordure" -#: src/libslic3r/Print.cpp:1642 +#: src/libslic3r/Print.cpp:1680 msgid "Generating G-code" msgstr "Génération du G-code" -#: src/libslic3r/SLAPrintSteps.cpp:48 +#: src/slic3r/GUI/GCodeViewer.cpp:1392 +msgid "Generating index buffers" +msgstr "Génération des tampons d'index" + +#: src/libslic3r/SLAPrintSteps.cpp:49 msgid "Generating pad" msgstr "Génération du socle" -#: src/libslic3r/PrintObject.cpp:152 +#: src/libslic3r/PrintObject.cpp:158 msgid "Generating perimeters" msgstr "Génération des périmètres" -#: src/libslic3r/Print.cpp:1606 +#: src/libslic3r/Print.cpp:1636 msgid "Generating skirt" msgstr "Génération de la jupe" -#: src/libslic3r/PrintObject.cpp:395 +#: src/libslic3r/PrintObject.cpp:422 msgid "Generating support material" msgstr "Génération des supports" -#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +#: src/libslic3r/SLAPrintSteps.cpp:47 src/libslic3r/SLAPrintSteps.cpp:359 msgid "Generating support points" msgstr "Génération des points de support" -#: src/libslic3r/SLAPrintSteps.cpp:47 +#: src/libslic3r/SLAPrintSteps.cpp:48 msgid "Generating support tree" msgstr "Génération de l'arbre de support" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2022 +#: src/slic3r/GUI/GCodeViewer.cpp:933 +msgid "Generating toolpaths" +msgstr "Génération des parcours d'outils" + +#: src/slic3r/GUI/GCodeViewer.cpp:1318 +msgid "Generating vertex buffer" +msgstr "Génération du tampon de vertex" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 msgid "Generic" msgstr "Générique" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Couper le Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Gizmo move" msgstr "Déplacer le Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Gizmo move: Press to snap by 1mm" +msgstr "Déplacement du gizmo : appuyez pour des pas de 1 mm" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "Gizmo Place face on bed" msgstr "Emplacement du Gizmo face au lit" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Gizmo rotate" msgstr "Pivoter le Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 +msgid "Gizmo rotate: Press to rotate selected objects around their own center" +msgstr "Rotation du gizmo : appuyez pour faire pivoter les objets sélectionnés autour de leur propre centre" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Gizmo scale" msgstr "Échelle du Gizmo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmo scale: Press to activate one direction scaling" +msgstr "Redimensionnement du gizmo : appuyez pour activer le redimensionnement dans une direction" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +msgid "Gizmo scale: Press to scale selected objects around their own center" +msgstr "Redimensionnement du gizmo : appuyez pour mettre redimensionner les objets sélectionnés autour de leur propre centre" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +msgid "Gizmo scale: Press to snap by 5%" +msgstr "Redimensionnement du gizmo : appuyez pour des pas de 5%" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Gizmo scale: Scale selection to fit print volume" +msgstr "Redimensionnement du gizmo : redimensionner la sélection pour remplir le volume d'impression" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo SLA hollow" msgstr "Gizmo SLA évidé" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo SLA support points" msgstr "Points de support SLA du Gizmo" -#: src/slic3r/GUI/GLCanvas3D.cpp:2921 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:562 +#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "Gizmo-Déplacement" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:489 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 msgid "Gizmo-Place on Face" msgstr "Gizmo-Positionner sur la surface" -#: src/slic3r/GUI/GLCanvas3D.cpp:3001 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:564 +#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "Gizmo-Rotation" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:563 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:521 msgid "Gizmo-Scale" msgstr "Gizmo-Échelle" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 msgid "Gizmos" msgstr "Gizmos" -#: src/slic3r/GUI/AboutDialog.cpp:259 +#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero Licence Publique Générale, version 3" -#: src/slic3r/GUI/ConfigWizard.cpp:980 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "Une bonne précision est requise, utilisez un pied à coulisse et calculez la moyenne de plusieurs mesures le long du filament." -#: src/libslic3r/PrintConfig.cpp:844 +#: src/libslic3r/PrintConfig.cpp:882 msgid "Grid" msgstr "Grille" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2454 +#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +msgid "Group" +msgstr "Grouper" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Group manipulation" msgstr "Manipulation d'un groupe" -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "GUI" msgstr "GUI" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Gyroid" msgstr "Gyroïde" -#: src/slic3r/GUI/Tab.cpp:2937 -msgid "has the following unsaved changes:" -msgstr "a les changements suivants non-enregistrés :" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Diamètre de la tête" -#: src/slic3r/GUI/ConfigManipulation.cpp:317 +#: src/libslic3r/PrintConfig.cpp:2772 +msgid "Head penetration" +msgstr "Pénétration de la tête" + +#: src/slic3r/GUI/ConfigManipulation.cpp:322 msgid "Head penetration should not be greater than the head width." msgstr "La pénétration de la tête ne doit pas être supérieure à la largeur de la tête." -#: src/libslic3r/PrintConfig.cpp:869 +#: src/libslic3r/PrintConfig.cpp:910 msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." msgstr "Température du plateau chauffant pour la première couche. Mettez ceci à zéro pour désactiver les commandes de contrôle de température du plateau dans la sortie." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 +#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 msgid "Height" msgstr "Hauteur" -#: src/libslic3r/GCode/PreviewData.cpp:347 +#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 msgid "Height (mm)" msgstr "Hauteur (mm)" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." msgstr "Hauteur de la jupe exprimée en couches. Mettez une valeur élevée pour utiliser la jupe comme un bouclier contre les flux d'airs." -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "Height of the display" msgstr "Hauteur de l'affichage" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Height range Modifier" -msgstr "Modificateur de la zone de hauteur" +msgstr "Modificateur de plage de hauteur" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Height ranges" -msgstr "Zones de hauteur" +msgstr "Plages de hauteur" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:295 msgid "Heights at which a filament change is to occur." msgstr "Hauteurs auxquelles le changement de filament doit se produire." -#: src/slic3r/GUI/ConfigWizard.cpp:433 +#: src/slic3r/GUI/ConfigWizard.cpp:451 #, c-format msgid "Hello, welcome to %s! This %s helps you with the initial configuration; just a few settings and you will be ready to print." msgstr "Bonjour, bienvenu dans %s ! Ce %s vous aide à la configuration initiale ; juste quelques paramètres et vous serez prêt à imprimer." -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3564 msgid "Help" msgstr "Aide" -#: src/libslic3r/PrintConfig.cpp:3371 +#: src/libslic3r/PrintConfig.cpp:3570 msgid "Help (FFF options)" msgstr "Aide (options FFF)" -#: src/libslic3r/PrintConfig.cpp:3376 +#: src/libslic3r/PrintConfig.cpp:3575 msgid "Help (SLA options)" msgstr "Aide (options SLA)" @@ -3301,96 +3793,80 @@ msgstr "Aide (options SLA)" msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." msgstr "Ici vous pouvez ajuster le volume de purge nécessaire (mm³) pour une paire d'outils donnée." -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1017 msgid "High extruder current on filament swap" msgstr "Courant de l'extrudeur élevé lors du changement de filament" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 +#: src/slic3r/GUI/GLCanvas3D.cpp:263 msgid "Higher print quality versus higher print speed." msgstr "Meilleure qualité d'impression par rapport à une vitesse d'impression plus élevée." -#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 msgid "Hilbert Curve" msgstr "Courbe de Hilbert" -#: src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:916 msgid "Hold Shift to Slice & Export G-code" msgstr "Maintenez la touche Majuscule pour Trancher et Exporter le G-code" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 msgid "Hole depth" msgstr "Profondeur du trou" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 msgid "Hole diameter" msgstr "Diamètre du trou" -#: src/slic3r/GUI/Plater.cpp:2760 -msgid "Hollow" -msgstr "Évider" - -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:977 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:785 msgid "Hollow and drill" msgstr "Évider et percer" -#: src/libslic3r/PrintConfig.cpp:2910 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Hollow out a model to have an empty interior" msgstr "Évider un modèle pour avoir un intérieur vide" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:40 msgid "Hollow this object" msgstr "Évider cet objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3654 -#: src/slic3r/GUI/Tab.cpp:3655 src/libslic3r/SLA/Hollowing.cpp:46 -#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 -#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2909 -#: src/libslic3r/PrintConfig.cpp:2916 src/libslic3r/PrintConfig.cpp:2926 -#: src/libslic3r/PrintConfig.cpp:2935 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 +#: src/slic3r/GUI/Tab.cpp:4074 src/libslic3r/SLA/Hollowing.cpp:45 +#: src/libslic3r/SLA/Hollowing.cpp:57 src/libslic3r/SLA/Hollowing.cpp:66 +#: src/libslic3r/SLA/Hollowing.cpp:75 src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Hollowing" msgstr "Évidement" -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Hollowing cancelled." -msgstr "Évidement annulé." - -#: src/slic3r/GUI/Plater.cpp:2927 -msgid "Hollowing done." -msgstr "Évidement terminé." - -#: src/slic3r/GUI/Plater.cpp:2929 -msgid "Hollowing failed." -msgstr "L'évidement a échoué." - -#: src/libslic3r/PrintConfig.cpp:2937 +#: src/libslic3r/PrintConfig.cpp:3101 msgid "Hollowing is done in two steps: first, an imaginary interior is calculated deeper (offset plus the closing distance) in the object and then it's inflated back to the specified offset. A greater closing distance makes the interior more rounded. At zero, the interior will resemble the exterior the most." -msgstr "L'Évidement se fait en deux temps : tout d'abord, un intérieur fictif est calculé plus profondément (décalage plus distance de fermeture) dans l'objet puis il est ré-augmenté jusqu'au décalage spécifié. Une distance de fermeture plus importante rend l'intérieur plus rond. À zéro, l'intérieur sera très semblable à l'extérieur." +msgstr "L'Évidement se fait en deux temps : tout d'abord, un intérieur fictif est calculé plus profondément (décalage plus intervalle d'espacement) dans l'objet puis il est ré-augmenté jusqu'au décalage spécifié. Une distance de fermeture plus importante rend l'intérieur plus rond. À zéro, l'intérieur sera très semblable à l'extérieur." -#: src/libslic3r/SLAPrintSteps.cpp:43 +#: src/libslic3r/SLAPrintSteps.cpp:44 msgid "Hollowing model" msgstr "Évidement du modèle" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:813 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:624 msgid "Hollowing parameter change" msgstr "Modification des paramètres d'évidement" -#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 +#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 msgid "Honeycomb" msgstr "Nid d'abeille" -#: src/slic3r/GUI/Tab.cpp:1064 +#: src/slic3r/GUI/Tab.cpp:1386 msgid "Horizontal shells" msgstr "Coques horizontales" -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." msgstr "Largeur horizontale de la bordure qui sera imprimée autour de chaque objet sur la première couche." -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" msgstr "L'Hôte" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Host Type" msgstr "Type d'hôte" @@ -3398,11 +3874,11 @@ msgstr "Type d'hôte" msgid "Hostname" msgstr "Nom d'hôte" -#: src/libslic3r/PrintConfig.cpp:97 +#: src/libslic3r/PrintConfig.cpp:99 msgid "Hostname, IP or URL" msgstr "Nom d'hôte, IP ou URL" -#: src/slic3r/GUI/Tab.cpp:139 +#: src/slic3r/GUI/Tab.cpp:210 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." @@ -3410,57 +3886,66 @@ msgstr "" "Passez le curseur au dessus des boutons pour obtenir plus d'informations\n" "ou cliquez sur ce bouton." -#: src/libslic3r/PrintConfig.cpp:2812 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "How far should the pad extend around the contained geometry" msgstr "Jusqu'où le socle doit-il s'étendre autour de la géométrie contenue" -#: src/libslic3r/PrintConfig.cpp:2901 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "How much should the tiny connectors penetrate into the model body." msgstr "À quelle profondeur les petits connecteurs doivent-ils pénétrer dans le corps du modèle." -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "How much the pinhead has to penetrate the model surface" msgstr "Niveau de pénétration de l'épingle dans la surface du modèle" -#: src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "How much the supports should lift up the supported object. If \"Pad around object\" is enabled, this value is ignored." msgstr "A quel point les supports devraient soutenir l'objet supporté. Si la fonction \"Socle autour de l'objet\" est activée, cette valeur est ignorée." -#: src/libslic3r/PrintConfig.cpp:111 +#: src/libslic3r/PrintConfig.cpp:1209 +msgid "How to apply limits" +msgstr "Comment appliquer des limites" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "How to apply the Machine Limits" +msgstr "Comment appliquer les limites de la machine" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 +#: src/libslic3r/PrintConfig.cpp:113 msgid "HTTPS CA File" msgstr "HTTPS CA Fichier" -#: src/slic3r/GUI/Tab.cpp:1713 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." msgstr "Le fichier HTTPS CA est optionnel. Il est uniquement requis si vous utilisez le HTTPS avec un certificat auto-signé." -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:376 msgid "Icon size in a respect to the default size" msgstr "Taille de l'icône par rapport à la taille par défaut" -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:147 msgid "ID" msgstr "ID" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:2015 msgid "If checked, supports will be generated automatically based on the overhang threshold value. If unchecked, supports will be generated inside the \"Support Enforcer\" volumes only." msgstr "Si cette case est cochée, les supports seront générés automatiquement en fonction de la valeur seuil de surplomb. Si cette case n'est pas cochée, les supports seront générés uniquement dans les volumes \"Générateur de supports\"." -#: src/slic3r/GUI/ConfigWizard.cpp:773 +#: src/slic3r/GUI/ConfigWizard.cpp:1132 #, c-format msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Si activé, %s vérifie en ligne l'existence de nouvelles versions de Slic3r PE. Lorsqu'une nouvelle version est disponible, une notification est affichée au démarrage suivant de l'application (jamais pendant l'utilisation du programme). Ceci est uniquement un mécanisme de notification, aucune installation automatique n'est faite." -#: src/slic3r/GUI/ConfigWizard.cpp:783 +#: src/slic3r/GUI/ConfigWizard.cpp:1142 #, c-format msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." msgstr "Si activé, %s télécharge les mises à jours des préréglages système intégrés en arrière-plan. Ces mises à jour sont téléchargées dans un répertoire temporaire séparé. Lorsqu'une nouvelle version de préréglages est disponible, elle est proposée au démarrage de l'application." -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." msgstr "Si ceci est activé, tous les extrudeurs qui impriment seront positionnés sur la bordure avant du lit d'impression au début de l'impression." -#: src/slic3r/GUI/ConfigWizard.cpp:805 +#: src/slic3r/GUI/ConfigWizard.cpp:1164 msgid "" "If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n" "If not enabled, the Reload from disk command will ask to select each file using an open file dialog." @@ -3468,127 +3953,172 @@ msgstr "" "Si activé, permet à la commande Recharger à partir du disque de rechercher et de charger automatiquement les fichiers lorsqu'elle est invoquée.\n" "Si non activée, la commande Recharger à partir du disque demandera de sélectionner chaque fichier à l'aide d'une boîte de dialogue d'ouverture de fichier." -#: src/slic3r/GUI/Preferences.cpp:74 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked." msgstr "Si activé, permet à la commande Recharger à partir du disque de rechercher et de charger automatiquement les fichiers lorsqu'elle est invoquée." -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:238 +msgid "If enabled, changes made using the sequential slider, in preview, apply only to gcode top layer. If disabled, changes made using the sequential slider, in preview, apply to the whole gcode." +msgstr "Si activé, les modifications apportées à l'aide du curseur séquentiel, dans l'aperçu, s'appliquent uniquement à la couche supérieure du gcode. Si désactivé, les modifications effectuées à l'aide du curseur séquentiel, dans l'aperçu, s'appliquent à l'ensemble du gcode." + +#: src/slic3r/GUI/Preferences.cpp:83 msgid "If enabled, PrusaSlicer will check for the new versions of itself online. When a new version becomes available a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Si activé, PrusaSlicer vérifie l'existence de ses nouvelles versions en ligne . Lorsqu'une nouvelle version est disponible, une notification est affichée au prochain démarrage de l'application (jamais pendant l'utilisation du programme). Ceci est uniquement un mécanisme de notification, aucune installation automatique n'est faite." -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:270 +msgid "If enabled, renders object using the environment map." +msgstr "Si activé, rend l'objet à l'aide de la carte d'environnement." + +#: src/slic3r/GUI/Preferences.cpp:200 +msgid "If enabled, reverses the direction of zoom with mouse wheel" +msgstr "Si activé, inverse la direction du zoom avec la molette de la souris" + +#: src/slic3r/GUI/Preferences.cpp:99 msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." msgstr "Si activé, Slic3r télécharge les mises à jours des préréglages système intégrés en arrière-plan. Ces mises à jour sont téléchargées dans un répertoire temporaire séparé. Lorsqu'une nouvelle version de préréglages est disponible, elle est proposée au démarrage de l'application." -#: src/slic3r/GUI/Preferences.cpp:106 +#: src/slic3r/GUI/Preferences.cpp:137 msgid "If enabled, the 3D scene will be rendered in Retina resolution. If you are experiencing 3D performance problems, disabling this option may help." msgstr "Si ceci est activé, la scène 3D sera affichée avec la résolution Retina. Si vous rencontrez des problèmes de performance 3D, le fait de désactiver cette option vous aidera peut-être." -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/slic3r/GUI/Preferences.cpp:215 +msgid "If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene" +msgstr "Si activé, le bouton de réduction de la barre latérale apparaîtra dans le coin supérieur droit de la scène 3D" + +#: src/libslic3r/PrintConfig.cpp:3698 +msgid "If enabled, the command line arguments are sent to an existing instance of GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides the \"single_instance\" configuration value from application preferences." +msgstr "Si activé, les arguments de ligne de commande sont envoyés à une instance existante de la GUI de PrusaSlicer, ou une fenêtre existante de PrusaSlicer est activée. Remplace la valeur de configuration \"single_instance\" des préférences de l'application." + +#: src/libslic3r/PrintConfig.cpp:1804 msgid "If enabled, the skirt will be as tall as a highest printed object. This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft." msgstr "Si elle est activée, la jupe sera aussi haute que l'objet imprimé le plus haut. Cela sert à protéger les impressions ABS ou ASA des phénomènes de déformation ou de décollement du plateau d'impression liés au flux d'air." -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:2000 msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." msgstr "Si elle est activée, la tour de nettoyage ne sera pas imprimée sur des couches sans changement d'outil. Sur les couches avec un changement d'outil, l'extrudeur se déplacera vers le bas pour imprimer la tour de nettoyage. C'est à l'utilisateur de s'assurer qu'il n'y a pas de collision avec l'impression." -#: src/slic3r/GUI/Preferences.cpp:128 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Si activé, utilise la caméra libre. Si non activé, utilise la caméra contrainte." -#: src/slic3r/GUI/Preferences.cpp:121 +#: src/slic3r/GUI/Preferences.cpp:186 msgid "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "Si activé, utilise la l'appareil photo en perspective. Si n'est pas activé, utilise l'appareil photo en vue orthographique." -#: src/slic3r/GUI/Preferences.cpp:145 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "If enabled, you can change size of toolbar icons manually." msgstr "Si activé, vous pouvez changer la taille des icônes de la barre d'outils manuellement." -#: src/slic3r/GUI/PresetHints.cpp:29 +#: src/slic3r/GUI/PresetHints.cpp:28 msgid "If estimated layer time is below ~%1%s, fan will run at %2%%% and print speed will be reduced so that no less than %3%s are spent on that layer (however, speed will never be reduced below %4%mm/s)." msgstr "Si le temps de couche estimé est inférieur à ~%1%s, le ventilateur tournera à %2%%% et la vitesse d'impression sera réduite pour qu'au moins %3%s soient passées sur cette couche (cependant, la vitesse ne sera jamais réduite en-dessous de %4%mm/s)." -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:35 msgid "If estimated layer time is greater, but still below ~%1%s, fan will run at a proportionally decreasing speed between %2%%% and %3%%%." msgstr "Si le temps estimé pour la couche est supérieur, mais cependant inférieur à ~%1%s, le ventilateur tournera à une vitesse proportionnellement décroissante entre %2%%% et %3%%%." -#: src/libslic3r/PrintConfig.cpp:901 +#: src/libslic3r/PrintConfig.cpp:943 msgid "If expressed as absolute value in mm/s, this speed will be applied to all the print moves of the first layer, regardless of their type. If expressed as a percentage (for example: 40%) it will scale the default speeds." msgstr "Si exprimée avec une valeur absolue en mm/s, cette vitesse sera appliquée à tous les déplacements d'impression de la première couche, quel que soit leur type. Si exprimée comme un pourcentage (par exemple 40%), cela modulera la vitesse par défaut." -#: src/libslic3r/PrintConfig.cpp:573 +#: src/libslic3r/PrintConfig.cpp:609 msgid "If layer print time is estimated below this number of seconds, fan will be enabled and its speed will be calculated by interpolating the minimum and maximum speeds." msgstr "Si le temps d'impression estimé de la couche est inférieur à ce nombre de secondes, le ventilateur sera activé et sa vitesse calculée par interpolation des vitesses minimum et maximum." -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1821 msgid "If layer print time is estimated below this number of seconds, print moves speed will be scaled down to extend duration to this value." msgstr "Si le temps d'impression estimé de la couche est inférieur à ce nombre de secondes, la vitesse des déplacements d'impression sera réduite afin d'atteindre cette valeur." -#: src/libslic3r/PrintConfig.cpp:567 +#: src/libslic3r/PrintConfig.cpp:603 msgid "If this is enabled, fan will never be disabled and will be kept running at least at its minimum speed. Useful for PLA, harmful for ABS." msgstr "Si ceci est activé, le ventilateur ne sera jamais désactivé et sera maintenu au moins à sa vitesse minimum. Utile pour le PLA, mais risqué pour l'ABS." -#: src/slic3r/GUI/Preferences.cpp:49 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." msgstr "Si ceci est activé, Slic3r centrera automatique les objets autour du centre du plateau d'impression." -#: src/slic3r/GUI/Preferences.cpp:57 +#: src/slic3r/GUI/Preferences.cpp:74 msgid "If this is enabled, Slic3r will pre-process objects as soon as they're loaded in order to save time when exporting G-code." msgstr "Si ceci est activé, Slic3r va pré-calculer les objets dès qu'ils sont chargés pour gagner du temps lors de l'export du G-code." -#: src/slic3r/GUI/Preferences.cpp:41 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." msgstr "Si ceci est activé, Slic3r affichera le dernier répertoire de sortie au lieu de celui contenant les fichiers d'entrée." -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/slic3r/GUI/Preferences.cpp:125 +msgid "If this is enabled, when starting PrusaSlicer and another instance of the same PrusaSlicer is already running, that instance will be reactivated instead." +msgstr "Si cela est activé, lors du démarrage de PrusaSlicer et si une autre instance du même PrusaSlicer est déjà en cours d'exécution, cette instance sera réactivée à la place." + +#: src/libslic3r/PrintConfig.cpp:1670 msgid "If you set this to a positive value, Z is quickly raised every time a retraction is triggered. When using multiple extruders, only the setting for the first extruder will be considered." msgstr "Si vous indiquez une valeur positive, l'axe Z est rapidement élevé à chaque rétraction. Lorsque vous utilisez plusieurs extrudeurs, seul le réglage du premier extrudeur sera pris en compte." -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1679 msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z. You can tune this setting for skipping lift on the first layers." msgstr "Si vous indiquez une valeur positive, le levage de l'axe Z ne sera déclenché qu'à partir de la valeur absolue indiquée pour l'axe Z. Vous pouvez modifier ce réglage pour éviter le levage de l'axe Z sur les premières couches." -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1688 msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z. You can tune this setting for limiting lift to the first layers." msgstr "Si vous indiquez une valeur positive, le levage de l'axe Z ne sera déclenché que jusqu'à la valeur absolue indiquée pour l'axe Z. Vous pouvez modifier ce réglage pour limiter le levage de l'axe Z aux premières couches." -#: src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1562 msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." msgstr "Si vous voulez traiter le G-code de sortie à l'aide de scripts personnalisés, listez simplement leurs chemins absolus ici. Séparez les divers scripts avec un point virgule. Les scripts vont recevoir en premier argument le chemin absolu du fichier G-code, et ils peuvent accéder aux réglages de configuration de Slic3r en lisant des variables d'environnement." -#: src/libslic3r/PrintConfig.cpp:530 +#: src/libslic3r/PrintConfig.cpp:566 msgid "If your firmware doesn't handle the extruder displacement you need the G-code to take it into account. This option lets you specify the displacement of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." msgstr "Si le firmware de votre imprimante ne gère pas le décalage de l'extrudeur, c'est au G-code d'en tenir compte. Cette option vous permet de spécifier le décalage de chaque extrudeur par rapport au premier. Des valeurs positives sont attendues (elles seront soustraites des coordonnées XY)." -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2312 msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." msgstr "Si votre firmware requiert des valeurs relatives pour E, cochez cette case, sinon laissez-la décochée. La plupart des firmwares utilisent des valeurs absolues." -#: src/libslic3r/PrintConfig.cpp:3485 +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" +msgstr "Ignorer" + +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignorer les fichiers de configuration non-existants" -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:192 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:173 +msgid "Ignores facets facing away from the camera." +msgstr "Ignore les facettes opposées à la caméra." + +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Import &Config" msgstr "Importer la &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Import Config &Bundle" msgstr "Importer le &Lot de Configuration" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Import Config from &project" msgstr "Importer la Configuration depuis le &projet" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Import Config from ini/amf/3mf/gcode" msgstr "Importer une Configuration depuis ini/amf/3mf/gcode" -#: src/slic3r/GUI/Plater.cpp:4603 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 +msgid "Import file" +msgstr "Importer le fichier" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 +msgid "Import model and profile" +msgstr "Importer le modèle et le profil" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:48 +msgid "Import model only" +msgstr "Importer le modèle uniquement" + +#: src/slic3r/GUI/Plater.cpp:4655 msgid "Import Object" msgstr "Importer l'Objet" -#: src/slic3r/GUI/Plater.cpp:4607 +#: src/slic3r/GUI/Plater.cpp:4659 msgid "Import Objects" msgstr "Importer les Objets" @@ -3596,15 +4126,50 @@ msgstr "Importer les Objets" msgid "Import of the repaired 3mf file failed" msgstr "Échec de l'import du fichier 3mf réparé" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:47 +msgid "Import profile only" +msgstr "Importer le profil uniquement" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Import SL1 archive" +msgstr "Importer l'archive SL1" + +#: src/slic3r/GUI/Plater.cpp:1561 +msgid "Import SLA archive" +msgstr "Importer l'archive SLA" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Import STL (imperial units)" +msgstr "Importer le STL (unités impériales)" + +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importer STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "Importer un STL/OBJ/AMF/3MF sans configuration, conserver le plateau" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:159 +msgid "Importing canceled." +msgstr "Importation annulée." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:160 +msgid "Importing done." +msgstr "Importation terminée." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:135 +msgid "Importing SLA archive" +msgstr "Importation de l'archive SLA" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +msgid "in" +msgstr "in" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 #, c-format msgid "In this mode you can select only other %s Items%s" msgstr "Dans ce mode vous ne pouvez sélectionner que d'autres %s Items %s" @@ -3613,25 +4178,25 @@ msgstr "Dans ce mode vous ne pouvez sélectionner que d'autres %s Items %s" msgid "Incompatible bundles:" msgstr "Lots incompatibles :" +#: src/slic3r/GUI/PresetComboBoxes.cpp:241 +msgid "Incompatible presets" +msgstr "Préréglages incompatibles" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 #, c-format msgid "Incompatible with this %s" msgstr "Incompatible avec ce %s" -#: src/slic3r/GUI/Plater.cpp:4685 +#: src/slic3r/GUI/Plater.cpp:4790 msgid "Increase Instances" msgstr "Augmenter les Instances" -#: src/slic3r/GUI/GLCanvas3D.cpp:264 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Increase/decrease edit area" msgstr "Augmenter/diminuer la zone d'édition" -#: src/slic3r/GUI/Plater.cpp:2922 -msgid "Indexing hollowed object" -msgstr "Indexation de l'objet évidé" - #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3258 +#: src/slic3r/GUI/Tab.cpp:3695 msgid "" "indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." @@ -3640,12 +4205,12 @@ msgstr "" "Cliquez sur l'icône CADENAS OUVERT pour régler tous les paramètres pour le groupe d'options actuel sur les valeurs du système (ou par défaut)." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3254 +#: src/slic3r/GUI/Tab.cpp:3691 msgid "indicates that the settings are the same as the system (or default) values for the current option group" msgstr "indique que les paramètres sont les mêmes que les valeurs système (ou par défaut) pour le groupe d'options en cours" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3270 +#: src/slic3r/GUI/Tab.cpp:3707 msgid "" "indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." @@ -3653,419 +4218,475 @@ msgstr "" "indique que les paramètres ont été changés et qu'ils ne sont pas identiques au dernier préréglage enregistré du groupe d'options en cours.\n" "Cliquez sur l'icône FLÈCHE ARRIÈRE pour restaurer tous les paramètres du groupe d'options en cours avec les valeurs du dernier préréglage enregistré." -#: src/slic3r/GUI/ConfigManipulation.cpp:211 -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 -#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/slic3r/GUI/Plater.cpp:527 -#: src/slic3r/GUI/Tab.cpp:1091 src/slic3r/GUI/Tab.cpp:1092 -#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 -#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 -#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 -#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:93 +#: src/slic3r/GUI/GUI_ObjectList.cpp:652 src/slic3r/GUI/Plater.cpp:393 +#: src/slic3r/GUI/Tab.cpp:1413 src/slic3r/GUI/Tab.cpp:1414 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:450 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:826 src/libslic3r/PrintConfig.cpp:863 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1035 +#: src/libslic3r/PrintConfig.cpp:1053 src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1091 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1860 msgid "Infill" msgstr "Remplissage" -#: src/slic3r/GUI/PresetHints.cpp:174 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "remplissage" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1065 msgid "Infill before perimeters" msgstr "Remplissage avant les périmètres" -#: src/libslic3r/PrintConfig.cpp:1001 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "Infill extruder" msgstr "Extrudeur pour le remplissage" -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Infill/perimeters overlap" msgstr "Chevauchement remplissage/périmètres" -#: src/libslic3r/Print.cpp:1584 +#: src/libslic3r/Print.cpp:1610 msgid "Infilling layers" msgstr "Remplissage des couches" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3430 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3505 src/slic3r/GUI/Plater.cpp:141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:147 msgid "Info" msgstr "Info" -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/slic3r/GUI/GUI_App.cpp:1087 src/slic3r/GUI/Tab.cpp:3435 +msgid "Information" +msgstr "Information" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 +msgid "Infornation" +msgstr "Information" + +#: src/libslic3r/PrintConfig.cpp:1101 msgid "Inherits profile" msgstr "Hérite du profil" -#: src/libslic3r/SLAPrint.cpp:653 +#: src/libslic3r/SLAPrint.cpp:667 msgid "Initial exposition time is out of printer profile bounds." msgstr "Le temps d'exposition initial est en dehors des limites du profil d'imprimante." -#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 msgid "Initial exposure time" msgstr "Temps d'exposition initial" -#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 msgid "Initial layer height" msgstr "Hauteur de couche initiale" -#: src/slic3r/GUI/Field.cpp:204 +#: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "La valeur entrée est hors plage" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "Inspect / activate configuration snapshots" msgstr "Inspecter / activer les instantanés de configuration" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:62 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, c-format msgid "Instance %d" msgstr "Instance %d" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 msgid "Instance manipulation" msgstr "Manipulation d'instance" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "Instances" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1091 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3781 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4244 msgid "Instances to Separated Objects" msgstr "Instances vers les Objets Séparés" -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface layers" msgstr "Couches d'interface" -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Interface loops" msgstr "Boucles d'interface" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Interface pattern spacing" msgstr "Espacement du motif d'interface" -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1115 msgid "Interface shells" msgstr "Coques d'interface" -#: src/libslic3r/Zipper.cpp:84 +#: src/libslic3r/miniz_extension.cpp:143 msgid "internal error" msgstr "erreur interne" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:342 msgid "Internal infill" msgstr "Remplissage interne" -#: src/slic3r/GUI/Plater.cpp:3106 +#: src/slic3r/GUI/BedShapeDialog.cpp:145 +msgid "Invalid" +msgstr "Invalide" + +#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 msgid "Invalid data" msgstr "Donnée non valide" -#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 -#: src/slic3r/GUI/BedShapeDialog.cpp:566 +#: src/slic3r/GUI/BedShapeDialog.cpp:570 src/slic3r/GUI/BedShapeDialog.cpp:619 +#: src/slic3r/GUI/BedShapeDialog.cpp:642 msgid "Invalid file format." msgstr "Format de fichier non valide." -#: src/libslic3r/Zipper.cpp:80 +#: src/libslic3r/miniz_extension.cpp:139 msgid "invalid filename" msgstr "nom de fichier non valide" -#: src/slic3r/GUI/ConfigManipulation.cpp:319 +#: src/slic3r/GUI/ConfigManipulation.cpp:324 msgid "Invalid Head penetration" msgstr "Pénétration de Tête invalide" -#: src/libslic3r/Zipper.cpp:48 +#: src/libslic3r/miniz_extension.cpp:107 msgid "invalid header or archive is corrupted" msgstr "entête non valide ou archive corrompue" -#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 +#: src/slic3r/GUI/Field.cpp:243 src/slic3r/GUI/Field.cpp:274 +#: src/slic3r/GUI/Field.cpp:1358 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." msgstr "Entrée numérique non valide." -#: src/libslic3r/Zipper.cpp:78 +#: src/libslic3r/miniz_extension.cpp:137 msgid "invalid parameter" msgstr "paramètre non valide" -#: src/slic3r/GUI/ConfigManipulation.cpp:332 +#: src/slic3r/GUI/ConfigManipulation.cpp:337 msgid "Invalid pinhead diameter" msgstr "Diamètre de tête d'épingle non valide" +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/slic3r/GUI/Tab.cpp:1420 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 +#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +msgid "Ironing" +msgstr "Lissage" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Ironing Type" +msgstr "Type de lissage" + +#: src/slic3r/GUI/GUI_App.cpp:243 +msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "est basé sur Slic3r par Alessandro Ranellucci et la communauté RepRap." + #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 msgid "is licensed under the" msgstr "est sous licence" -#: src/slic3r/GUI/Tab.cpp:2941 -msgid "is not compatible with print profile" -msgstr "n'est pas compatible avec le profil d'impression" - -#: src/slic3r/GUI/Tab.cpp:2940 -msgid "is not compatible with printer" -msgstr "n'est pas compatible avec l'imprimante" - -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso" msgstr "Isométrique" -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso View" msgstr "Vue Isométrique" -#: src/slic3r/GUI/Tab.cpp:964 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "It can't be deleted or modified." msgstr "Il ne peut être supprimé ou modifié." -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "It is not allowed to change the file to reload" msgstr "Il n'est pas autorisé de modifier le fichier à recharger" -#: src/libslic3r/PrintConfig.cpp:974 +#: src/libslic3r/PrintConfig.cpp:1018 msgid "It may be beneficial to increase the extruder motor current during the filament exchange sequence to allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly shaped tip." msgstr "Il peut être intéressant d'augmenter le courant du moteur de l'extrudeur pendant la séquence d'échange de filament pour permettre un débit d'expulsion rapide et pour compenser la résistance lors du chargement d'un filament avec une pointe mal taillée." -#: src/slic3r/GUI/GUI_App.cpp:1084 src/slic3r/GUI/Tab.cpp:2958 +#: src/slic3r/GUI/Tab.cpp:3413 +msgid "It's a last preset for this physical printer." +msgstr "C'est le dernier préréglage pour cette imprimante physique." + +#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "Il est impossible d'imprimer un (des) objet(s) en plusieurs parties avec la technologie SLA." -#: src/slic3r/GUI/Tab.cpp:2229 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:601 +msgid "It's not possible to delete the last related preset for the printer." +msgstr "Il n'est pas possible de supprimer le dernier préréglage associé pour l'imprimante." + +#: src/slic3r/GUI/Tab.cpp:2398 msgid "Jerk limits" msgstr "Limites de mouvements brusques" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Jitter" msgstr "Gigue" -#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 -#: src/slic3r/GUI/DoubleSlider.cpp:1651 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 +#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 msgid "Jump to height" msgstr "Sauter à la hauteur" -#: src/slic3r/GUI/DoubleSlider.cpp:955 +#: src/slic3r/GUI/DoubleSlider.cpp:1075 #, c-format msgid "Jump to height %s or Set extruder sequence for the entire print" msgstr "Sauter à la hauteur %s ou Définir la séquence d'extrusion pour toute l'impression" -#: src/libslic3r/PrintConfig.cpp:566 +#: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 +msgid "Jump to move" +msgstr "Sauter pour bouger" + +#: src/slic3r/GUI/SavePresetDialog.cpp:315 +msgid "Just switch to \"%1%\" preset" +msgstr "Passez simplement au préréglage \"%1%\"" + +#: src/libslic3r/PrintConfig.cpp:602 msgid "Keep fan always on" msgstr "Garder le ventilateur toujours actif" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 msgid "Keep lower part" msgstr "Garder la partie du bas" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 +#: src/slic3r/GUI/GLCanvas3D.cpp:290 msgid "Keep min" -msgstr "Garder au minimum" +msgstr "Conserver min" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Keep upper part" msgstr "Garder la partie du haut" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:37 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 +#: src/slic3r/GUI/MainFrame.cpp:1332 msgid "Keyboard Shortcuts" msgstr "Raccourcis Clavier" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 msgid "Keyboard shortcuts" msgstr "Raccourcis clavier" -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2641 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Label objects" msgstr "Marquer les objets" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Landscape" msgstr "Paysage" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Language" msgstr "Langue" -#: src/slic3r/GUI/GUI_App.cpp:885 +#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 msgid "Language selection" msgstr "Sélection de la langue" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2140 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2408 msgid "Last instance of an object cannot be deleted." msgstr "La dernière instance d'un objet ne peut être supprimée." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 msgid "Layer" msgstr "Couche" -#: src/slic3r/GUI/ConfigManipulation.cpp:49 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "Hauteur de couche" -#: src/libslic3r/Print.cpp:1427 +#: src/libslic3r/Print.cpp:1453 msgid "Layer height can't be greater than nozzle diameter" msgstr "La hauteur de couche ne peut pas être supérieure au diamètre de la buse" -#: src/slic3r/GUI/Tab.cpp:2362 +#: src/slic3r/GUI/Tab.cpp:2531 msgid "Layer height limits" msgstr "Limites de hauteur de couche" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 -msgid "Layer height:" -msgstr "Hauteur de couche :" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2488 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 msgid "Layer range Settings to modify" msgstr "Réglages de zone de Couche à modifier" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 -#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 -#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1976 +#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1798 +#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "layers" msgstr "couches" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3512 -#: src/slic3r/GUI/Tab.cpp:3600 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 +#: src/slic3r/GUI/Tab.cpp:4010 msgid "Layers" msgstr "Couches" -#: src/slic3r/GUI/Tab.cpp:1048 src/slic3r/GUI/Tab.cpp:3598 +#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 msgid "Layers and perimeters" msgstr "Couches et périmètres" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 -#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 -#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 -#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:2142 +#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:92 +#: src/slic3r/GUI/GUI_ObjectList.cpp:651 src/libslic3r/PrintConfig.cpp:72 +#: src/libslic3r/PrintConfig.cpp:209 src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Layers and Perimeters" msgstr "Couches et Périmètres" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Layers Slider" msgstr "Barre de défilement des couches" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" msgstr "Du bas" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Top" msgstr "Du haut" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/Preferences.cpp:440 +msgid "Layout Options" +msgstr "Options de disposition" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 +msgid "Leaving Paint-on supports" +msgstr "Laisser les Supports peints" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 +msgid "Leaving Seam painting" +msgstr "Laisser la Peinture de jointure" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left" msgstr "Gauche" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Left click" msgstr "Clic gauche" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:29 +msgid "Left mouse button" +msgstr "Bouton gauche de la souris" + +#: src/slic3r/GUI/GLCanvas3D.cpp:233 msgid "Left mouse button:" msgstr "Bouton gauche de souris :" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left View" msgstr "Vue Gauche" -#: src/slic3r/GUI/GUI_Preview.cpp:257 +#: src/slic3r/GUI/GUI_Preview.cpp:339 msgid "Legend" msgstr "Légende" -#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 +#: src/slic3r/GUI/GUI_Preview.cpp:1480 +msgid "Legend/Estimated printing time" +msgstr "Légende/Temps d'impression estimé" + +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 msgid "Length" msgstr "Longueur" -#: src/libslic3r/PrintConfig.cpp:328 +#: src/libslic3r/PrintConfig.cpp:362 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "Longueur du tube de refroidissement pour limiter l'espace pour les déplacements de refroidissement à l'intérieur de celui-ci." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:129 +#: src/slic3r/GUI/AboutDialog.cpp:141 msgid "License agreements of all following programs (libraries) are part of application license agreement" msgstr "Les contrats de licence de tous les programmes suivants (bibliothèques) font partie de la mise en oeuvre du contrat de licence" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Lift Z" msgstr "Levage de l'axe Z" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:886 msgid "Line" msgstr "Ligne" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1427 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 msgid "Load" msgstr "Charger" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Load a model" msgstr "Charger un modèle" -#: src/libslic3r/PrintConfig.cpp:3505 +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Load an model saved with imperial units" +msgstr "Charger un modèle enregistré avec des unités impériales" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Load an SL1 archive" +msgstr "Charger une archive SL1" + +#: src/libslic3r/PrintConfig.cpp:3710 msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." msgstr "Charger et stocker les réglages dans le répertoire donné. Ceci est utile pour conserver différents profils ou inclure des configurations depuis un stockage réseau." -#: src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3688 msgid "Load config file" msgstr "Charger le fichier de configuration" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Charger une configuration à partir d'un ini/amf/3mf/gcode et fusionner" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Load configuration from project file" msgstr "Charger la configuration depuis le fichier du projet" -#: src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:3689 msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." msgstr "Charger la configuration depuis le fichier spécifié. Ceci peut être utilisé plusieurs fois afin de charger des options depuis plusieurs fichiers." -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Load exported configuration file" msgstr "Charger le fichier de configuration exporté" -#: src/slic3r/GUI/Plater.cpp:1395 -msgid "Load File" -msgstr "Charger le Fichier" - -#: src/slic3r/GUI/Plater.cpp:1399 -msgid "Load Files" -msgstr "Charger les Fichiers" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Charger une Partie" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Load presets from a bundle" msgstr "Charger les préréglages à partir d'un lot" -#: src/slic3r/GUI/Plater.cpp:4575 +#: src/slic3r/GUI/Plater.cpp:4627 msgid "Load Project" msgstr "Charger le Projet" -#: src/slic3r/GUI/BedShapeDialog.cpp:102 +#: src/slic3r/GUI/BedShapeDialog.cpp:243 msgid "Load shape from STL..." msgstr "Charger une forme depuis un STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 src/slic3r/GUI/BedShapeDialog.cpp:405 msgid "Load..." msgstr "Charger..." @@ -4073,19 +4694,27 @@ msgstr "Charger..." msgid "loaded" msgstr "chargé" -#: src/slic3r/GUI/Plater.cpp:2426 +#: src/slic3r/GUI/Plater.cpp:2388 msgid "Loaded" msgstr "Chargé" -#: src/slic3r/GUI/Plater.cpp:2273 +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Loading" msgstr "Chargement" -#: src/slic3r/GUI/GUI_App.cpp:474 +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" +msgstr "Chargement de la configuration" + +#: src/slic3r/GUI/Plater.cpp:2226 +msgid "Loading file" +msgstr "Chargement du fichier" + +#: src/slic3r/GUI/GUI_App.cpp:1125 msgid "Loading of a mode view" msgstr "Chargement d'un mode de vue" -#: src/slic3r/GUI/GUI_App.cpp:466 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "Loading of current presets" msgstr "Chargement de préréglages actuels" @@ -4094,101 +4723,117 @@ msgstr "Chargement de préréglages actuels" msgid "Loading repaired model" msgstr "Chargement du modèle réparé" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:643 msgid "Loading speed" msgstr "Vitesse de chargement" -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Loading speed at the start" msgstr "Vitesse de chargement au départ" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:69 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:112 msgid "Local coordinates" msgstr "Coordonnées locaux" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 msgid "Lock supports under new islands" msgstr "Verrouiller les supports sous de nouveaux îlots" -#: src/slic3r/GUI/Tab.cpp:3252 +#: src/slic3r/GUI/Tab.cpp:3689 msgid "LOCKED LOCK" msgstr "CADENAS FERMÉ" -#: src/slic3r/GUI/Tab.cpp:3280 +#: src/slic3r/GUI/Tab.cpp:3717 msgid "LOCKED LOCK icon indicates that the settings are the same as the system (or default) values for the current option group" msgstr "L'icône CADENAS FERMÉ indique que les réglages sont les mêmes que les valeurs système (ou par défaut) pour le groupe d'options actuel" -#: src/slic3r/GUI/Tab.cpp:3296 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "LOCKED LOCK icon indicates that the value is the same as the system (or default) value." msgstr "L'icône CADENAS FERMÉ indique que la valeur est la même que la valeur système (ou par défaut)." -#: src/libslic3r/PrintConfig.cpp:3508 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Logging level" msgstr "Niveau d'enregistrement" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Loops (minimum)" msgstr "Boucles (minimum)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower Layer" msgstr "Couche Inférieure" -#: src/slic3r/GUI/Tab.cpp:2188 src/slic3r/GUI/Tab.cpp:2273 -#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 -#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 -#: src/libslic3r/PrintConfig.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 +#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 +#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 msgid "Machine limits" msgstr "Limites de la machine" -#: src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:3667 +msgid "Machine limits are not set, therefore the print time estimate may not be accurate." +msgstr "Les limites de la machine ne sont pas définies, par conséquent l'estimation du temps d'impression peut ne pas être précise." + +#: src/slic3r/GUI/Tab.cpp:3660 +msgid "Machine limits will be emitted to G-code and used to estimate print time." +msgstr "Les limites de la machine seront émises dans le G-code et utilisées pour estimer le temps d'impression." + +#: src/slic3r/GUI/Tab.cpp:3663 +msgid "Machine limits will NOT be emitted to G-code, however they will be used to estimate print time, which may therefore not be accurate as the printer may apply a different set of machine limits." +msgstr "Les limites de la machine NE seront PAS émises dans le G-code, mais elles seront utilisées pour estimer le temps d'impression, ce qui peut donc ne pas être précis car l'imprimante peut appliquer un ensemble différent de limites de la machine." + +#: src/slic3r/GUI/Plater.cpp:172 msgid "Manifold" msgstr "Variété" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 msgid "Manual editing" msgstr "Édition manuelle" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:180 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 msgid "Masked SLA file exported to %1%" msgstr "Fichier SLA masqué exporté vers %1%" -#: src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1451 msgid "Mate&rial Settings Tab" msgstr "Onglet Réglage&s Matériau" -#: src/slic3r/GUI/Tab.cpp:3478 src/slic3r/GUI/Tab.cpp:3480 +#: src/slic3r/GUI/Tab.cpp:3894 src/slic3r/GUI/Tab.cpp:3896 msgid "Material" msgstr "Matériau" -#: src/slic3r/GUI/Tab.hpp:416 +#: src/slic3r/GUI/Tab.hpp:486 msgid "Material Settings" msgstr "Réglages Matériau" -#: src/slic3r/GUI/Plater.cpp:163 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Material Settings Tab" +msgstr "Onglet de réglages du matériau" + +#: src/slic3r/GUI/Plater.cpp:169 msgid "Materials" msgstr "Matériaux" -#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 msgid "Max" msgstr "Maximum" -#: src/libslic3r/PrintConfig.cpp:2734 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max bridge length" msgstr "Longueur maximum de pont" -#: src/libslic3r/PrintConfig.cpp:2658 +#: src/libslic3r/PrintConfig.cpp:2812 msgid "Max bridges on a pillar" msgstr "Nombre de ponts maximum par pilier" -#: src/libslic3r/PrintConfig.cpp:2822 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Max merge distance" msgstr "Distance maximum de fusion" -#: src/libslic3r/PrintConfig.cpp:2743 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Max pillar linking distance" msgstr "Distance maximum de jonction de pilier" @@ -4196,7 +4841,7 @@ msgstr "Distance maximum de jonction de pilier" msgid "Max print height" msgstr "Hauteur maximale d'impression" -#: src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1345 msgid "Max print speed" msgstr "Vitesse d'impression maximale" @@ -4204,171 +4849,189 @@ msgstr "Vitesse d'impression maximale" msgid "max PrusaSlicer version" msgstr "Version maximum de PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Max volumetric slope negative" msgstr "Pente volumétrique négative maximum" -#: src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "Max volumetric slope positive" msgstr "Pente volumétrique positive maximum" -#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 +#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 msgid "Max volumetric speed" msgstr "Vitesse volumétrique maximale" -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2411 msgid "Maximal bridging distance" msgstr "Distance maximale de pont" -#: src/libslic3r/PrintConfig.cpp:2269 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Maximal distance between supports on sparse infill sections." msgstr "Distance maximale entre les supports sur les sections de remplissage épars." -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1253 msgid "Maximum acceleration E" msgstr "Accélérations maximum E" -#: src/libslic3r/PrintConfig.cpp:1151 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Maximum acceleration of the E axis" msgstr "Accélération maximum de l'axe E" -#: src/libslic3r/PrintConfig.cpp:1148 +#: src/libslic3r/PrintConfig.cpp:1256 msgid "Maximum acceleration of the X axis" msgstr "Accélération maximum de l'axe X" -#: src/libslic3r/PrintConfig.cpp:1149 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Maximum acceleration of the Y axis" msgstr "Accélération maximum de l'axe Y" -#: src/libslic3r/PrintConfig.cpp:1150 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Maximum acceleration of the Z axis" msgstr "Accélération maximum de l'axe Z" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Maximum acceleration when extruding" msgstr "Accélération maximum lors de l'extrusion" -#: src/libslic3r/PrintConfig.cpp:1200 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Accélération maximum lors de l'extrusion (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Maximum acceleration when retracting" msgstr "Accélération maximum lors de la rétraction" -#: src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1318 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Accélération maximum lors de la rétraction (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Maximum acceleration X" msgstr "Accélérations maximum X" -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Maximum acceleration Y" msgstr "Accélérations maximum Y" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "Maximum acceleration Z" msgstr "Accélérations maximum Z" -#: src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2391 msgid "Maximum accelerations" msgstr "Accélérations maximum" -#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 +#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 msgid "Maximum exposure time" msgstr "Temps d'exposition maximum" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1236 msgid "Maximum feedrate E" msgstr "Vitesse d'avance maximum en E" -#: src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "Maximum feedrate of the E axis" msgstr "Vitesse d'avance maximum de l'axe E" -#: src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Maximum feedrate of the X axis" msgstr "Vitesse d'avance maximum de l'axe X" -#: src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Maximum feedrate of the Y axis" msgstr "Vitesse d'avance maximum de l'axe Y" -#: src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Maximum feedrate of the Z axis" msgstr "Vitesse d'avance maximum de l'axe Z" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Maximum feedrate X" msgstr "Vitesse d'avance maximum en X" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Maximum feedrate Y" msgstr "Vitesse d'avance maximum en Y" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1235 msgid "Maximum feedrate Z" msgstr "Vitesse d'avance maximum en Z" -#: src/slic3r/GUI/Tab.cpp:2217 +#: src/slic3r/GUI/Tab.cpp:2386 msgid "Maximum feedrates" msgstr "Vitesses d'avance maximum" -#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 msgid "Maximum initial exposure time" msgstr "Temps d'exposition initiale Maximum" -#: src/libslic3r/PrintConfig.cpp:1162 +#: src/libslic3r/PrintConfig.cpp:1270 msgid "Maximum jerk E" msgstr "Mouvement brusque maximum E" -#: src/libslic3r/PrintConfig.cpp:1168 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Maximum jerk of the E axis" msgstr "Mouvement brusque maximum de l'axe E" -#: src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1273 msgid "Maximum jerk of the X axis" msgstr "Mouvement brusque maximum de l'axe X" -#: src/libslic3r/PrintConfig.cpp:1166 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "Maximum jerk of the Y axis" msgstr "Mouvement brusque maximum de l'axe Y" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1275 msgid "Maximum jerk of the Z axis" msgstr "Mouvement brusque maximum de l'axe Z" -#: src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Maximum jerk X" msgstr "Mouvement brusque maximum X" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Maximum jerk Y" msgstr "Mouvement brusque maximum Y" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1269 msgid "Maximum jerk Z" msgstr "Mouvement brusque maximum Z" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2814 msgid "Maximum number of bridges that can be placed on a pillar. Bridges hold support point pinheads and connect to pillars as small branches." msgstr "Le nombre de ponts maximum pouvant être placés sur un pilier. Les ponts soutiennent les têtes des points de support et sont connectés aux piliers comme de petites branches." -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:634 msgid "Maximum volumetric speed allowed for this filament. Limits the maximum volumetric speed of a print to the minimum of print and filament volumetric speed. Set to zero for no limit." msgstr "Vitesse volumétrique maximale autorisée pour ce filament. Limite la vitesse volumétrique d'une impression au minimum des vitesses volumétriques d'impression et de filament. Mettez à zéro pour enlever la limite." -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2569 src/libslic3r/PrintConfig.cpp:3641 msgid "Merge" msgstr "Fusionner" -#: src/libslic3r/PrintConfig.cpp:2683 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +msgid "Merge all parts to the one single object" +msgstr "Fusionner toutes les pièces en un seul objet" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Merge objects to the one multipart object" +msgstr "Fusionner des objets en un seul objet multi-pièces" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +msgid "Merge objects to the one single object" +msgstr "Fusionner des objets en un seul objet" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +msgid "Merged" +msgstr "Fusionné" + +#: src/libslic3r/PrintConfig.cpp:2847 msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." msgstr "Le fait de fusionner des ponts ou des piliers avec d'autres piliers peut augmenter le rayon. Zéro signifie aucune augmentation, un signifie augmentation totale." -#: src/libslic3r/SLAPrintSteps.cpp:64 +#: src/libslic3r/SLAPrintSteps.cpp:65 msgid "Merging slices and calculating statistics" msgstr "Fusion des tranches et calcul des statistiques" @@ -4376,15 +5039,15 @@ msgstr "Fusion des tranches et calcul des statistiques" msgid "Mesh repair failed." msgstr "Échec de la réparation du maillage." -#: src/slic3r/GUI/DoubleSlider.cpp:1635 +#: src/slic3r/GUI/DoubleSlider.cpp:1831 msgid "Message for pause print on current layer (%1% mm)." msgstr "Message pour mettre en pause l'impression sur la couche en cours (%1% mm)." -#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 msgid "Min" msgstr "Minimum" -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Min print speed" msgstr "Vitesse d'impression minimale" @@ -4392,232 +5055,237 @@ msgstr "Vitesse d'impression minimale" msgid "min PrusaSlicer version" msgstr "Version minimum de PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:2772 +#: src/libslic3r/PrintConfig.cpp:2936 msgid "Minimal distance of the support points" msgstr "Distance minimale des points de support" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1414 msgid "Minimal filament extrusion length" msgstr "Longueur minimale d'extrusion de filament" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 msgid "Minimal points distance" msgstr "Distance minimale des points" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Minimal purge on wipe tower" msgstr "Purge minimale sur la tour de nettoyage" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:221 msgid "Minimum bottom shell thickness" msgstr "Épaisseur minimale de la coque inférieure" -#: src/slic3r/GUI/PresetHints.cpp:339 +#: src/slic3r/GUI/PresetHints.cpp:337 msgid "Minimum bottom shell thickness is %1% mm." msgstr "L'épaisseur minimale de la coque inférieure est de %1% mm." -#: src/libslic3r/PrintConfig.cpp:1512 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." msgstr "Résolution minimale pour les détails, utilisée pour simplifier le fichier d'entrée afin d'accélérer le découpage et de réduire l'utilisation de la mémoire. Les modèles haute-résolution possèdent souvent plus de détails que ce que les imprimantes peuvent produire. Mettez à zéro pour désactiver toute simplification et utiliser la résolution complète de l'entrée." -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 +#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 msgid "Minimum exposure time" msgstr "Temps d'exposition minimum" -#: src/libslic3r/PrintConfig.cpp:1178 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Minimum feedrate when extruding" msgstr "Vitesse d'avance minimum lors de l'extrusion" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1288 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Vitesse d'avance minimum lors de l'extrusion (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2234 +#: src/slic3r/GUI/Tab.cpp:2403 msgid "Minimum feedrates" msgstr "Vitesses d'avance minimum" -#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 msgid "Minimum initial exposure time" msgstr "Temps d'exposition initiale minimum" -#: src/slic3r/GUI/Tab.cpp:1069 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Minimum shell thickness" msgstr "Épaisseur de coque minimale" -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 msgid "Minimum thickness of a top / bottom shell" msgstr "Épaisseur minimale d'une coque supérieure/inférieure" -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2289 msgid "Minimum top shell thickness" msgstr "Épaisseur minimale de la coque supérieure" -#: src/slic3r/GUI/PresetHints.cpp:320 +#: src/slic3r/GUI/PresetHints.cpp:318 msgid "Minimum top shell thickness is %1% mm." msgstr "L'épaisseur minimale de la coque supérieure est de %1% mm." -#: src/libslic3r/PrintConfig.cpp:1522 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Minimum travel after retraction" msgstr "Trajet minimal après une rétraction" -#: src/libslic3r/PrintConfig.cpp:1188 +#: src/libslic3r/PrintConfig.cpp:1296 msgid "Minimum travel feedrate" msgstr "Vitesse d'avance minimum en déplacement" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Minimum travel feedrate (M205 T)" msgstr "Vitesse d'avance minimum en déplacement (M205 T)" -#: src/libslic3r/PrintConfig.cpp:2917 +#: src/libslic3r/PrintConfig.cpp:3081 msgid "Minimum wall thickness of a hollowed model." msgstr "Épaisseur de paroi minimale d'un modèle évidé." -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2592 msgid "Minimum width of features to maintain when doing elephant foot compensation." msgstr "Largeur minimum des caractéristiques à maintenir lorsque vous pratiquez une compensation de pied d'éléphant." -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror" msgstr "Symétrie" -#: src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Mirror horizontally" msgstr "Symétriser horizontalement" -#: src/slic3r/GUI/GLCanvas3D.cpp:2053 +#: src/slic3r/GUI/GLCanvas3D.cpp:2226 msgid "Mirror Object" msgstr "Symétriser l'Objet" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror the selected object" msgstr "Symétriser l'objet sélectionné" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Mirror the selected object along the X axis" msgstr "Symétriser l'objet sélectionné selon l'axe X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Mirror the selected object along the Y axis" msgstr "Symétriser l'objet sélectionné selon l'axe Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Mirror the selected object along the Z axis" msgstr "Symétriser l'objet sélectionné selon l'axe Z" -#: src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2529 msgid "Mirror vertically" msgstr "Symétriser verticalement" -#: src/slic3r/Utils/AstroBox.cpp:68 src/slic3r/Utils/OctoPrint.cpp:68 +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:68 #, c-format msgid "Mismatched type of print host: %s" msgstr "Mauvais appariement de l'hôte d'impression : %s" -#: src/libslic3r/ExtrusionEntity.cpp:323 +#: src/libslic3r/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 msgid "Mixed" msgstr "Mélangé" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "ml" msgstr "ml" -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 -#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 src/slic3r/GUI/GUI_ObjectLayers.cpp:145 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 #: src/slic3r/GUI/WipeTowerDialog.cpp:85 src/libslic3r/PrintConfig.cpp:75 -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:91 -#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 -#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 -#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 -#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 -#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 -#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 -#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 -#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 -#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 -#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 -#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 -#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 -#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 -#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 -#: src/libslic3r/PrintConfig.cpp:2695 src/libslic3r/PrintConfig.cpp:2705 -#: src/libslic3r/PrintConfig.cpp:2717 src/libslic3r/PrintConfig.cpp:2737 -#: src/libslic3r/PrintConfig.cpp:2747 src/libslic3r/PrintConfig.cpp:2757 -#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2790 -#: src/libslic3r/PrintConfig.cpp:2804 src/libslic3r/PrintConfig.cpp:2815 -#: src/libslic3r/PrintConfig.cpp:2828 src/libslic3r/PrintConfig.cpp:2873 -#: src/libslic3r/PrintConfig.cpp:2883 src/libslic3r/PrintConfig.cpp:2892 -#: src/libslic3r/PrintConfig.cpp:2902 src/libslic3r/PrintConfig.cpp:2918 -#: src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:124 src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 +#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 +#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 +#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 msgid "mm" msgstr "mm" -#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 +#: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" msgstr "mm (zéro pour désactiver)" -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 -#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 +#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "mm or %" msgstr "mm ou %" -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 -#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 -#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 +#: src/libslic3r/PrintConfig.cpp:271 src/libslic3r/PrintConfig.cpp:645 +#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:662 +#: src/libslic3r/PrintConfig.cpp:670 src/libslic3r/PrintConfig.cpp:697 +#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2297 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 msgid "mm/s or %" msgstr "mm/s ou %" -#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 -#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 +#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:708 msgid "mm³" msgstr "mm³" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "mm³/s" msgstr "mm³/s" -#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 msgid "mm³/s²" msgstr "mm³/s²" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 msgid "Mode" msgstr "&Mode" @@ -4625,7 +5293,7 @@ msgstr "&Mode" msgid "model" msgstr "modèle" -#: src/slic3r/GUI/BedShapeDialog.cpp:251 +#: src/slic3r/GUI/BedShapeDialog.cpp:395 msgid "Model" msgstr "Modèle" @@ -4654,99 +5322,125 @@ msgstr "Réparation du modèle terminée" msgid "Model repaired successfully" msgstr "Réparation du modèle réussie" -#: src/slic3r/GUI/Tab.cpp:979 +#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +msgctxt "Mode" +msgid "Advanced" +msgstr "Avancé" + +#: src/slic3r/GUI/Tab.cpp:1241 msgid "Modifications to the current profile will be saved." msgstr "Les modifications du profil actuel vont être sauvegardées." -#: src/slic3r/GUI/Preset.cpp:247 +#: src/slic3r/GUI/GUI_App.cpp:1425 msgid "modified" msgstr "modifié" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Modifier" msgstr "Modificateur" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1491 msgid "Modifiers" msgstr "Modificateurs" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2655 msgid "money/bottle" msgstr "prix/bouteille" -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:798 msgid "money/kg" msgstr "€/kg" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:461 +msgid "Monotonic" +msgstr "Monotone" + +#: src/slic3r/GUI/NotificationManager.cpp:305 +#: src/slic3r/GUI/NotificationManager.cpp:315 +msgid "More" +msgstr "Plus" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Mouse wheel" msgstr "Roulette de la souris" -#: src/slic3r/GUI/GLCanvas3D.cpp:261 +#: src/slic3r/GUI/GLCanvas3D.cpp:249 msgid "Mouse wheel:" msgstr "Roulette de la souris:" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:64 msgid "Move" msgstr "Déplacer" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Déplacer le plan de coupe" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Move current slider thumb Down" msgstr "Déplacer le curseur actuel vers le bas" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +msgid "Move current slider thumb Left" +msgstr "Déplacer le curseur actuel vers la gauche" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 +msgid "Move current slider thumb Right" +msgstr "Déplacer le curseur actuel vers la droite" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Move current slider thumb Up" msgstr "Déplacer le curseur actuel vers le haut" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1059 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:835 msgid "Move drainage hole" msgstr "Déplacer le trou de drainage" -#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Déplacer l'Objet" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 msgid "Move point" msgstr "Déplacer le point" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 msgid "Move selection 10 mm in negative X direction" msgstr "Déplacer la sélection de 10 mm dans la direction négative X" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 msgid "Move selection 10 mm in negative Y direction" msgstr "Déplacer la sélection de 10 mm dans la direction négative Y" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 msgid "Move selection 10 mm in positive X direction" msgstr "Déplacer la sélection de 10 mm dans la direction positive X" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Move selection 10 mm in positive Y direction" msgstr "Déplacer la sélection de 10 mm dans la direction positive Y" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1097 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:955 msgid "Move support point" msgstr "Déplacer un point de support" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/GCodeViewer.cpp:2492 +msgid "Movement" +msgstr "Mouvement" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Movement in camera space" msgstr "Mouvement dans l'espace de la caméra" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 msgid "Movement step set to 1 mm" msgstr "Pas du mouvement réglé sur 1 mm" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." msgstr "Les imprimantes multi-matériaux peuvent avoir besoin de préparer ou de purger leurs extrudeurs lors d'un changement d'outil. Extruder le matériau en excès dans la tour de nettoyage." -#: src/slic3r/GUI/Plater.cpp:2360 src/slic3r/GUI/Plater.cpp:2413 +#: src/slic3r/GUI/Plater.cpp:2322 src/slic3r/GUI/Plater.cpp:2375 msgid "Multi-part object detected" msgstr "Objet multi-pièces détecté" @@ -4755,11 +5449,11 @@ msgstr "Objet multi-pièces détecté" msgid "Multiple %s devices found. Please only connect one at a time for flashing." msgstr "Plusieurs %s équipements ont été détectés. Veuillez n'en connecter qu'un seul à la fois pour le processus de flash." -#: src/slic3r/GUI/Tab.cpp:1179 +#: src/slic3r/GUI/Tab.cpp:1509 msgid "Multiple Extruders" msgstr "Extrudeurs Multiples" -#: src/slic3r/GUI/Plater.cpp:2410 +#: src/slic3r/GUI/Plater.cpp:2372 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -4769,36 +5463,41 @@ msgstr "" "Au lieu de les considérer en tant que plusieurs objets, dois-je considérer\n" "ces fichiers en tant que un seul objet ayant plusieurs pièces ?" -#: src/libslic3r/PrintConfig.cpp:3439 +#: src/libslic3r/PrintConfig.cpp:3638 msgid "Multiply copies by creating a grid." msgstr "Multiplier les copies en créant une grille." -#: src/libslic3r/PrintConfig.cpp:3434 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Multiply copies by this factor." msgstr "Multiplier les copies par ce facteur." -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:580 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "N/A" -#: src/slic3r/GUI/GUI_ObjectList.cpp:270 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "Nom" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:114 +msgid "Name of the printer" +msgstr "Nom de l'imprimante" + +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." msgstr "Nom de la variante d'imprimante. Par exemple, la variante d'imprimante peut être différenciée par un diamètre de buse." -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1590 msgid "Name of the printer vendor." msgstr "Nom du fabriquant de l'imprimante." -#: src/libslic3r/PrintConfig.cpp:1058 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Name of the profile, from which this profile inherits." msgstr "Nom du profil, duquel hérite ce profil." -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "Nearest" msgstr "Le plus proche" @@ -4806,14 +5505,30 @@ msgstr "Le plus proche" msgid "Network lookup" msgstr "Recherche réseau" -#: src/slic3r/GUI/Plater.cpp:2151 +#: src/slic3r/GUI/Preferences.cpp:430 +msgid "New layout, access via settings button in the top menu" +msgstr "Nouvelle disposition, accès via le bouton des réglages dans le menu supérieur" + +#: src/slic3r/GUI/Plater.cpp:2056 msgid "New Project" msgstr "Nouveau Projet" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "New project, clear plater" msgstr "Nouveau projet, libérer le plateau" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 +msgid "New Value" +msgstr "Nouvelle Valeur" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 +msgid "New value" +msgstr "Nouvelle valeur" + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "New version is available." +msgstr "Une nouvelle version est disponible." + #: src/slic3r/GUI/UpdateDialogs.cpp:38 #, c-format msgid "New version of %s is available" @@ -4823,23 +5538,23 @@ msgstr "Une nouvelle version de %s est disponible" msgid "New version:" msgstr "Nouvelle version :" -#: src/slic3r/GUI/GLCanvas3D.cpp:4673 +#: src/slic3r/GUI/GLCanvas3D.cpp:5089 msgid "Next Redo action: %1%" msgstr "Prochaine action Répéter : %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:4641 +#: src/slic3r/GUI/GLCanvas3D.cpp:5051 msgid "Next Undo action: %1%" msgstr "Prochaine action Annuler : %1%" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:1004 msgid "No extrusion" msgstr "Aucune extrusion" -#: src/libslic3r/SLAPrintSteps.cpp:453 +#: src/libslic3r/SLAPrintSteps.cpp:451 msgid "No pad can be generated for this model with the current configuration" msgstr "Aucun socle ne peut être généré pour ce modèle avec la configuration actuelle" -#: src/slic3r/GUI/MainFrame.cpp:784 +#: src/slic3r/GUI/MainFrame.cpp:1485 msgid "No previously sliced file." msgstr "Aucun fichier précédemment découpé." @@ -4847,175 +5562,221 @@ msgstr "Aucun fichier précédemment découpé." msgid "NO RAMMING AT ALL" msgstr "PAS D'EXPULSION DU TOUT" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1999 msgid "No sparse layers (EXPERIMENTAL)" msgstr "Sans couches dispersées (EXPERIMENTAL)" -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2938 msgid "No support points will be placed closer than this threshold." msgstr "Aucun point de support ne sera positionné plus près que ce seuil." -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "No updates available" msgstr "Aucune mise à jour disponible" -#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 -#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 -#: src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 +#: src/libslic3r/ExtrusionEntity.cpp:312 msgid "None" msgstr "Aucun" -#: src/slic3r/GUI/Tab.cpp:2203 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 msgid "Normal" msgstr "Normal" -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 msgid "normal mode" msgstr "mode normal" -#: src/libslic3r/Zipper.cpp:46 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 +msgid "Normal mode" +msgstr "Mode normal" + +#: src/libslic3r/miniz_extension.cpp:105 msgid "not a ZIP archive" msgstr "n'est pas une archive ZIP" -#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +#: src/slic3r/GUI/BedShapeDialog.cpp:366 src/slic3r/GUI/BedShapeDialog.cpp:446 msgid "Not found:" msgstr "Introuvable:" -#: src/slic3r/GUI/DoubleSlider.cpp:1019 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Note" msgstr "Remarque" -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Note, that selected preset will be deleted from this/those printer(s) too." +msgstr "Notez que ce préréglage sélectionné sera également supprimé pour cette/ces imprimante(s)." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Note, that this/those printer(s) will be deleted after deleting of the selected preset." +msgstr "Notez que cette/ces imprimante(s) seront supprimées après la suppression du préréglage sélectionné." + +#: src/slic3r/GUI/Tab.cpp:2039 +msgid "" +"Note: All parameters from this group are moved to the Physical Printer settings (see changelog).\n" +"\n" +"A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored into PrusaSlicer/physical_printer directory." +msgstr "" +"Remarque : Tous les paramètres de ce groupe sont déplacés vers les paramètres de l'imprimante physique (voir le journal des modifications).\n" +"\n" +"Un nouveau profil d'imprimante physique est créé en cliquant sur l'icône \"rouage\" à droite de la zone de liste déroulante de Profils d'imprimante, en sélectionnant l'élément \"Ajouter une imprimante physique\" dans la zone de liste déroulante Imprimante. L'éditeur de profil d'imprimante physique s'ouvre également en cliquant sur l'icône \"rouage\" dans l'onglet Réglages de l'imprimante. Les profils d'imprimante physique sont stockés dans le répertoire PrusaSlicer/physical_printer." + +#: src/slic3r/Utils/AstroBox.cpp:92 msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "Remarque : AstroBox en version 1.1.0 minimum est requis." -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:76 msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "Remarque : FlashAir avec firmware 2.00.02 ou plus récent avec une fonction de téléchargement activée est nécessaire." -#: src/slic3r/Utils/OctoPrint.cpp:89 +#: src/slic3r/Utils/OctoPrint.cpp:91 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Note : une version d'Octoprint supérieure ou égale à 1.1.0 est requise." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1345 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1192 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Remarque: certains raccourcis ne fonctionnent qu'en mode de (non-)édition." -#: src/slic3r/GUI/Tab.cpp:1251 src/slic3r/GUI/Tab.cpp:1252 -#: src/slic3r/GUI/Tab.cpp:1540 src/slic3r/GUI/Tab.cpp:1541 -#: src/slic3r/GUI/Tab.cpp:2012 src/slic3r/GUI/Tab.cpp:2013 -#: src/slic3r/GUI/Tab.cpp:2128 src/slic3r/GUI/Tab.cpp:2129 -#: src/slic3r/GUI/Tab.cpp:3535 src/slic3r/GUI/Tab.cpp:3536 +#: src/slic3r/GUI/SavePresetDialog.cpp:151 +msgid "Note: This preset will be replaced after saving" +msgstr "Remarque : ce préréglage sera remplacé après l'enregistrement" + +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 +#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 msgid "Notes" msgstr "Notes" -#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 -#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:245 +#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "Remarque" -#: src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:236 msgid "nozzle" msgstr "buse" -#: src/slic3r/GUI/Tab.cpp:1870 src/slic3r/GUI/Tab.cpp:2340 -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/slic3r/GUI/Tab.cpp:1790 +msgid "Nozzle" +msgstr "Buse" + +#: src/slic3r/GUI/ConfigWizard.cpp:1392 +msgid "Nozzle and Bed Temperatures" +msgstr "Températures de la buse et du plateau" + +#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "Nozzle diameter" msgstr "Diamètre de la buse" -#: src/slic3r/GUI/ConfigWizard.cpp:969 +#: src/slic3r/GUI/ConfigWizard.cpp:1335 msgid "Nozzle Diameter:" msgstr "Diamètre de la Buse :" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:2201 +msgid "Nozzle temperature" +msgstr "Température de la buse" + +#: src/libslic3r/PrintConfig.cpp:2198 +msgid "Nozzle temperature for layers after the first one. Set this to zero to disable temperature control commands in the output G-code." +msgstr "Température de la buse pour les couches après la première. Réglez ceci sur zéro pour désactiver les commandes de contrôle de température dans le G-code de sortie." + +#: src/libslic3r/PrintConfig.cpp:961 +msgid "Nozzle temperature for the first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output G-code." +msgstr "Température de la buse pour la première couche. Si vous souhaitez contrôler la température manuellement pendant l'impression, réglez ce paramètre sur zéro pour désactiver les commandes de contrôle de la température dans le G-code de sortie." + +#: src/libslic3r/PrintConfig.cpp:686 msgid "Number of cooling moves" msgstr "Nombres de mouvements de refroidissement" -#: src/slic3r/GUI/Tab.cpp:1839 +#: src/slic3r/GUI/Tab.cpp:2073 msgid "Number of extruders of the printer." msgstr "Nombre d'extrudeurs de l'imprimante." -#: src/libslic3r/PrintConfig.cpp:1975 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Number of interface layers to insert between the object(s) and support material." msgstr "Nombre de couches d'interface à insérer entre le(s) objet(s) et les supports." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1812 msgid "Number of loops for the skirt. If the Minimum Extrusion Length option is set, the number of loops might be greater than the one configured here. Set this to zero to disable skirt completely." msgstr "Nombre de boucles pour la jupe. Si la Longueur Minimale d'Extrusion est paramétrée, le nombre de boucles minimal sera plus grand que celui configuré ici. Mettez à zéro pour désactiver complètement la jupe." -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2508 msgid "Number of pixels in" msgstr "Nombre de pixels présents" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2510 msgid "Number of pixels in X" msgstr "Nombre de pixels présents dans X" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "Number of pixels in Y" msgstr "Nombre de pixels présents dans Y" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:210 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Nombre de couches solides à générer sur les surfaces inférieures." -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "Nombre de couches solides à générer sur les surfaces supérieures et inférieures." -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "Number of solid layers to generate on top surfaces." msgstr "Nombre de couches solides à générer sur les surfaces supérieures." -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" msgstr "Nombre de couches nécessaires pour que le temps d'exposition passe du temps d'exposition initial au temps d'exposition normal" -#: src/slic3r/GUI/Plater.cpp:241 +#: src/slic3r/GUI/Plater.cpp:247 msgid "Number of tool changes" msgstr "Nombre de changements d'outil" -#: src/libslic3r/PrintConfig.cpp:2753 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:2917 msgid "Object elevation" msgstr "Élévation de l'objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2466 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 msgid "Object manipulation" msgstr "Manipulation de l'Objet" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:623 msgid "Object name" msgstr "Nom de l'objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3417 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 msgid "Object or Instance" msgstr "Objet ou Instance" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Object reordered" msgstr "Objet réorganisé" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2479 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 msgid "Object Settings to modify" msgstr "Réglages de l'Objet à modifier" -#: src/slic3r/GUI/Plater.cpp:2529 +#: src/slic3r/GUI/Plater.cpp:2491 msgid "Object too large?" msgstr "Objet trop grand ?" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2405 msgid "Object will be used to purge the nozzle after a toolchange to save material that would otherwise end up in the wipe tower and decrease print time. Colours of the objects will be mixed as a result." msgstr "L'objet sera utilisé pour purger la buse après un changement d'outil pour économiser du matériau qui finirait normalement dans la tour de nettoyage et raccourcirait le temps d'impression. Par conséquent, les couleurs de l'objet seront mélangées." -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "object(s)" msgstr "objet(s)" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "objects" msgstr "objets" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 msgid "Octagram Spiral" msgstr "Spirale Octagramme" @@ -5023,64 +5784,97 @@ msgstr "Spirale Octagramme" msgid "OctoPrint version" msgstr "Version d'OctoPrint" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3425 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 msgid "of a current Object" msgstr "d'un Objet en cours" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 msgid "Offset" msgstr "Décalage" -#: src/slic3r/GUI/Tab.cpp:1755 +#: src/slic3r/GUI/Preferences.cpp:422 +msgid "Old regular layout with the tab bar" +msgstr "Ancienne disposition avec la barre d'onglets" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:608 +msgid "Old Value" +msgstr "Ancienne valeur" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1177 +msgid "Old value" +msgstr "Ancienne valeur" + +#: src/slic3r/GUI/Preferences.cpp:123 +msgid "On OSX there is always only one instance of app running by default. However it is allowed to run multiple instances of same app from the command line. In such case this settings will allow only one instance." +msgstr "Sur OSX, il n'y a toujours qu'une seule instance d'application en cours d'exécution par défaut. Cependant, il est permis d'exécuter plusieurs instances de la même application à partir de la ligne de commande. Dans ce cas, ces paramètres n'autoriseront qu'une seule instance." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 #, c-format msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "Dans ce système, %s utilise des certificats HTTPS issus du système Magasin de Certificats ou Trousseau." -#: src/slic3r/GUI/DoubleSlider.cpp:950 +#: src/slic3r/GUI/DoubleSlider.cpp:1064 msgid "One layer mode" msgstr "Mode couche unique" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1391 msgid "One or more object were assigned an extruder that the printer does not have." msgstr "Un ou plusieurs objets ont été affectés à un extrudeur que l'imprimante ne possède pas." -#: src/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2676 +#: src/libslic3r/PrintConfig.cpp:2045 src/libslic3r/PrintConfig.cpp:2840 msgid "Only create support if it lies on a build plate. Don't create support on a print." msgstr "Créer uniquement des supports reposant sur le plateau. Ne pas créer pas de supports sur une impression." -#: src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Only infill where needed" msgstr "Faire remplissage seulement où cela est nécessaire" -#: src/slic3r/GUI/Tab.cpp:2373 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Only lift Z" msgstr "Lever Z seulement" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1678 msgid "Only lift Z above" msgstr "Lever Z seulement au-dessus de" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Only lift Z below" msgstr "Lever Z seulement en-dessous de" -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Only retract when crossing perimeters" msgstr "Rétracter uniquement lors du franchissement de périmètres" -#: src/slic3r/GUI/Tab.cpp:1187 +#: src/slic3r/GUI/ConfigWizard.cpp:714 +msgid "Only the following installed printers are compatible with the selected filament:" +msgstr "Seules les imprimantes installées suivantes sont compatibles avec le filament sélectionné :" + +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Ooze prevention" msgstr "Prévention des coulures" -#: src/libslic3r/Print.cpp:1266 +#: src/libslic3r/Print.cpp:1292 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "La prévention des écoulements n'est actuellement pas supportée lorsque la tour de nettoyage est activée." -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open &PrusaSlicer" +msgstr "Ouvrir &PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "Open a G-code file" +msgstr "Ouvrir un fichier G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 +#: src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open a new PrusaSlicer instance" +msgstr "Ouvrir une nouvelle instance de PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "Open a project file" msgstr "Ouvrir un fichier de projet" -#: src/slic3r/GUI/Tab.cpp:1729 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 msgid "Open CA certificate file" msgstr "Ouvrir le fichier de certificat CA" @@ -5093,116 +5887,150 @@ msgstr "Ouvrir la page du journal des modifications" msgid "Open download page" msgstr "Ouvrir la page de téléchargement" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/NotificationManager.cpp:742 +msgid "Open Folder." +msgstr "Ouvrir un répertoire." + +#: src/slic3r/Utils/Process.cpp:151 +msgid "Open G-code file:" +msgstr "Ouvrir un fichier G-code :" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +msgid "Open G-code viewer" +msgstr "Ouvrir la visionneuse de G-code" + +#: src/slic3r/GUI/MainFrame.cpp:79 +msgid "Open new G-code viewer" +msgstr "Ouvrir une nouvelle visionneuse de G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open new instance" +msgstr "Ouvrir une nouvelle instance" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "Ouvrir un projet STL/OBJ/AMF/3MF avec configuration, libérer le plateau" -#: src/slic3r/GUI/MainFrame.cpp:693 +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open PrusaSlicer" +msgstr "Ouvrir PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 #, c-format msgid "Open the %s website in your browser" msgstr "Ouvrir le site web de %s dans votre navigateur" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Ouvrir la page de téléchargement des drivers Prusa3D dans votre navigateur" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Open the software releases page in your browser" msgstr "Ouvrir la page des publications du logiciel dans votre navigateur" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 msgid "Optimize orientation" msgstr "Optimiser l'orientation" -#: src/slic3r/GUI/Plater.cpp:2767 +#: src/slic3r/GUI/Plater.cpp:1555 msgid "Optimize Rotation" msgstr "Optimiser la Rotation" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Plater.cpp:3962 msgid "Optimize the rotation of the object for better print results." msgstr "Optimiser la rotation de l'objet pour un meilleur résultat d'impression." -#: src/libslic3r/PrintConfig.cpp:137 +#: src/libslic3r/PrintConfig.cpp:170 msgid "Optimize travel moves in order to minimize the crossing of perimeters. This is mostly useful with Bowden extruders which suffer from oozing. This feature slows down both the print and the G-code generation." msgstr "Optimiser les déplacements afin de minimiser le franchissement de périmètres. Ceci est surtout utile avec les extruder Bowden qui sont sujets aux coulures. Cette fonctionnalité ralentit l'impression et la génération du G-code." -#: src/slic3r/GUI/Tab.cpp:1131 +#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 +#: src/slic3r/GUI/GUI_Preview.cpp:333 +msgid "Options" +msgstr "Options" + +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Options for support material and raft" msgstr "Options pour le matériau de support et le radeau" -#: src/slic3r/GUI/DoubleSlider.cpp:989 +#: src/slic3r/GUI/Mouse3DController.cpp:315 +msgid "Options:" +msgstr "Options :" + +#: src/slic3r/GUI/DoubleSlider.cpp:1112 msgid "or press \"+\" key" msgstr "ou appuyez sur la touche \"+\"" -#: src/slic3r/GUI/Plater.cpp:2892 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:74 msgid "Orientation found." msgstr "Orientation trouvée." -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:73 msgid "Orientation search canceled." msgstr "Recherche de l'orientation annulée." -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "Origin" msgstr "Origine" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1557 msgid "Other" msgstr "Autre" -#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:2206 msgid "Other layers" msgstr "Autres couches" -#: src/slic3r/GUI/ConfigWizard.cpp:856 +#: src/slic3r/GUI/ConfigWizard.cpp:1222 msgid "Other Vendors" msgstr "Autres Fabriquants" -#: src/slic3r/GUI/Tab.cpp:1238 src/slic3r/GUI/Tab.cpp:3666 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 msgid "Output file" msgstr "Fichier de sortie" -#: src/libslic3r/PrintConfig.cpp:3493 +#: src/libslic3r/PrintConfig.cpp:3692 msgid "Output File" msgstr "Fichier de Sortie" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1471 msgid "Output filename format" msgstr "Format du nom de fichier de sortie" -#: src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3580 msgid "Output Model Info" msgstr "Information du Modèle de Sortie" -#: src/slic3r/GUI/Tab.cpp:1230 src/slic3r/GUI/Tab.cpp:3665 +#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 msgid "Output options" msgstr "Options de sortie" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/libslic3r/ExtrusionEntity.cpp:340 msgid "Overhang perimeter" msgstr "Périmètre en surplomb" -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Overhang threshold" msgstr "Seuil de surplomb" -#: src/slic3r/GUI/Tab.cpp:1215 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Overlap" msgstr "Chevauchement" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "P&rint Settings Tab" msgstr "Onglet des &Réglages d'Impression" -#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:625 -#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3636 -#: src/slic3r/GUI/Tab.cpp:3637 src/libslic3r/PrintConfig.cpp:2781 -#: src/libslic3r/PrintConfig.cpp:2788 src/libslic3r/PrintConfig.cpp:2802 -#: src/libslic3r/PrintConfig.cpp:2813 src/libslic3r/PrintConfig.cpp:2823 -#: src/libslic3r/PrintConfig.cpp:2845 src/libslic3r/PrintConfig.cpp:2856 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:2870 -#: src/libslic3r/PrintConfig.cpp:2881 src/libslic3r/PrintConfig.cpp:2890 -#: src/libslic3r/PrintConfig.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 +#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 +#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 msgid "Pad" msgstr "Socle" @@ -5210,150 +6038,186 @@ msgstr "Socle" msgid "Pad and Support" msgstr "Socle et Support" -#: src/libslic3r/PrintConfig.cpp:2855 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 msgid "Pad around object" msgstr "Socle autour de l'objet" -#: src/libslic3r/PrintConfig.cpp:2862 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "Pad around object everywhere" msgstr "Socle partout autour de l'objet" -#: src/libslic3r/PrintConfig.cpp:2811 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Pad brim size" msgstr "Taille du bord de socle" -#: src/libslic3r/SLA/Pad.cpp:691 +#: src/libslic3r/SLA/Pad.cpp:532 msgid "Pad brim size is too small for the current configuration." msgstr "La taille du bord de socle est trop petite pour la configuration actuelle." -#: src/libslic3r/PrintConfig.cpp:2898 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Pad object connector penetration" msgstr "Pénétration du connecteur de l'objet socle" -#: src/libslic3r/PrintConfig.cpp:2880 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector stride" msgstr "Pas du connecteur de l'objet socle" -#: src/libslic3r/PrintConfig.cpp:2889 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector width" msgstr "Largeur du connecteur de l'objet socle" -#: src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:3033 msgid "Pad object gap" msgstr "Espace entre l'objet et le socle" -#: src/libslic3r/PrintConfig.cpp:2797 +#: src/libslic3r/PrintConfig.cpp:2961 msgid "Pad wall height" msgstr "Hauteur de la paroi du socle" -#: src/libslic3r/PrintConfig.cpp:2844 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Pad wall slope" msgstr "Inclinaison de la paroi du socle" -#: src/libslic3r/PrintConfig.cpp:2787 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Pad wall thickness" msgstr "Épaisseur de la paroi du socle" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Page Down" msgstr "Page Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Page Up" msgstr "Page Up" -#: src/slic3r/GUI/Field.cpp:139 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 +msgid "Paint-on supports" +msgstr "Supports peints" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:178 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:159 +msgid "Paints all facets inside, regardless of their orientation." +msgstr "Peint toutes les facettes à l'intérieur, quelle que soit leur orientation." + +#: src/slic3r/GUI/Field.cpp:187 msgid "parameter name" msgstr "nom du paramètre" -#: src/slic3r/GUI/Field.cpp:243 +#: src/slic3r/GUI/Field.cpp:291 msgid "Parameter validation" msgstr "Validation du paramètre" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Part" msgstr "Pièce" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2494 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 msgid "Part manipulation" msgstr "Manipulation d'une pièce" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2483 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 msgid "Part Settings to modify" msgstr "Réglages de la pièce à modifier" -#: src/slic3r/GUI/GLCanvas3D.cpp:4514 +#: src/libslic3r/PrintConfig.cpp:138 +msgid "Password" +msgstr "Mot de passe" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4880 msgid "Paste" msgstr "Coller" -#: src/slic3r/GUI/MainFrame.cpp:592 +#: src/slic3r/GUI/MainFrame.cpp:1198 msgid "Paste clipboard" msgstr "Coller le presse-papier" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Paste from clipboard" msgstr "Coller depuis le presse-papier" -#: src/slic3r/GUI/Plater.cpp:5606 +#: src/slic3r/GUI/Plater.cpp:5803 msgid "Paste From Clipboard" msgstr "Coller Depuis le Presse-Papier" -#: src/libslic3r/PrintConfig.cpp:2002 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Pattern" msgstr "Motif" -#: src/libslic3r/PrintConfig.cpp:1891 +#: src/libslic3r/PrintConfig.cpp:2033 msgid "Pattern angle" msgstr "Angle du motif" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Pattern spacing" msgstr "Espacement du motif" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "Pattern used to generate support material." msgstr "Motif utilisé pour générer les supports." -#: src/slic3r/GUI/Plater.cpp:1261 +#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 +#: src/slic3r/GUI/Plater.cpp:1199 msgid "Pause" msgstr "Pause" -#: src/slic3r/GUI/DoubleSlider.cpp:1009 +#: src/slic3r/GUI/DoubleSlider.cpp:1133 msgid "Pause print (\"%1%\")" msgstr "Mettre en pause l'impression (\"%1%\")" -#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 -#: src/slic3r/GUI/GLCanvas3D.cpp:982 +#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +msgid "Pause Print G-code" +msgstr "G-code de pause de l'impression" + +#: src/slic3r/GUI/GLCanvas3D.cpp:940 src/slic3r/GUI/GLCanvas3D.cpp:949 +#: src/slic3r/GUI/GLCanvas3D.cpp:988 msgid "Pause print or custom G-code" msgstr "Pause d'impression ou G-code personnalisé" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 +#: src/libslic3r/PrintConfig.cpp:1147 +msgid "Percent of a flow rate relative to object's normal layer height." +msgstr "Pourcentage d'un débit par rapport à la hauteur de couche normale de l'objet." + +#: src/slic3r/GUI/GCodeViewer.cpp:2233 +msgid "Percentage" +msgstr "Pourcentage" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 msgid "Perform cut" msgstr "Effectuer la coupe" -#: src/libslic3r/PrintConfig.cpp:2927 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Performance vs accuracy of calculation. Lower values may produce unwanted artifacts." msgstr "Performance vs précision du calcul. Des valeurs plus faibles peuvent produire des artefacts indésirables." -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Perimeter" msgstr "Périmètre" -#: src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Perimeter extruder" msgstr "Extrudeur pour les périmètres" -#: src/slic3r/GUI/PresetHints.cpp:165 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "périmètres" -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 -#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 msgid "Perimeters" msgstr "Périmètres" -#: src/slic3r/GUI/ConfigWizard.cpp:860 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +msgid "Physical Printer" +msgstr "Imprimante physique" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:789 +#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +msgid "Physical printers" +msgstr "Imprimantes physiques" + +#: src/slic3r/GUI/ConfigWizard.cpp:1226 #, c-format msgid "Pick another vendor supported by %s" msgstr "Choisissez un autre fournisseur pris en charge par %s" @@ -5362,128 +6226,148 @@ msgstr "Choisissez un autre fournisseur pris en charge par %s" msgid "Picture sizes to be stored into a .gcode and .sl1 files" msgstr "Tailles d'image devant être stockées dans des fichiers .gcode et .sl1" -#: src/libslic3r/PrintConfig.cpp:2681 +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "Pillar connection mode" +msgstr "Mode de connexion par pilier" + +#: src/libslic3r/PrintConfig.cpp:2791 +msgid "Pillar diameter" +msgstr "Diamètre du pilier" + +#: src/libslic3r/PrintConfig.cpp:2845 msgid "Pillar widening factor" msgstr "Facteur d'élargissement du pilier" -#: src/slic3r/GUI/ConfigManipulation.cpp:330 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Le diamètre de la tête d'épingle doit être plus petit que le diamètre du pilier." -#: src/slic3r/GUI/DoubleSlider.cpp:79 +#: src/libslic3r/PrintConfig.cpp:2763 +msgid "Pinhead front diameter" +msgstr "Diamètre avant de la tête d'épingle" + +#: src/libslic3r/PrintConfig.cpp:2781 +msgid "Pinhead width" +msgstr "Largeur de la tête d'épingle" + +#: src/slic3r/GUI/DoubleSlider.cpp:110 msgid "Place bearings in slots and resume printing" msgstr "Placer les roulements dans les fentes et reprendre l'impression" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 msgid "Place on face" msgstr "Positionner sur la surface" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Plater" msgstr "Plateau" -#: src/slic3r/GUI/GUI_App.cpp:1085 +#: src/slic3r/GUI/GUI_App.cpp:1877 msgid "Please check and fix your object list." msgstr "Veuillez vérifier et réparer votre liste d'objet." -#: src/slic3r/GUI/Plater.cpp:2312 src/slic3r/GUI/Tab.cpp:2959 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2255 +#: src/slic3r/GUI/Tab.cpp:3188 msgid "Please check your object list before preset changing." msgstr "Veuillez vérifier votre liste d'objet avant le changement de préréglage." -#: src/slic3r/GUI/Plater.cpp:3286 +#: src/slic3r/GUI/Plater.cpp:3089 msgid "Please select the file to reload" msgstr "Veuillez sélectionner le fichier à recharger" -#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 +#: src/slic3r/GUI/AboutDialog.cpp:317 msgid "Portions copyright" msgstr "Copyright des sections" -#: src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2543 msgid "Portrait" msgstr "Portrait" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:223 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:505 msgid "Position" msgstr "Position" -#: src/slic3r/GUI/Tab.cpp:2367 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Position (for multi-extruder printers)" msgstr "Position (pour les imprimantes multi-extrudeurs)" -#: src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1731 msgid "Position of perimeters starting points." msgstr "Position des points de départ des périmètres." -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Position X" msgstr "Position X" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Position Y" msgstr "Position Y" -#: src/slic3r/GUI/Tab.cpp:1245 src/libslic3r/PrintConfig.cpp:1453 +#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 msgid "Post-processing scripts" msgstr "Scripts de post-traitement" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Pre&view" msgstr "Pré&visualisation" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Preferences.cpp:12 msgid "Preferences" msgstr "Préférences" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Preferred direction of the seam" msgstr "Direction préférée de la jointure" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam - jitter" msgstr "Direction préférée de la jointure - gigue" -#: src/libslic3r/PrintObject.cpp:255 +#: src/libslic3r/PrintObject.cpp:261 msgid "Preparing infill" msgstr "Préparation du remplissage" -#: src/slic3r/GUI/Tab.cpp:2920 -#, c-format -msgid "Preset (%s)" -msgstr "Préréglage (%s)" +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" +msgstr "Préparation des onglets de réglage" -#: src/slic3r/GUI/Tab.cpp:3082 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 +msgid "Preset \"%1%\" has the following unsaved changes:" +msgstr "Le préréglage \"%1%\" comporte les modifications non enregistrées suivantes :" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1014 +msgid "Preset \"%1%\" is not compatible with the new print profile and it has the following unsaved changes:" +msgstr "Le préréglage \"%1%\" n’est pas compatible avec le nouveau profil d’impression et comporte les modifications non enregistrées suivantes :" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1013 +msgid "Preset \"%1%\" is not compatible with the new printer profile and it has the following unsaved changes:" +msgstr "Le préréglage \"%1%\" n’est pas compatible avec le nouveau profil d’imprimante et comporte les modifications non enregistrées suivantes :" + +#: src/slic3r/GUI/SavePresetDialog.cpp:136 +msgid "Preset with name \"%1%\" already exists and is imcopatible with selected printer." +msgstr "Le préréglage avec le nom \"%1%\" existe déjà et est incompatible avec l'imprimante sélectionnée." + +#: src/slic3r/GUI/SavePresetDialog.cpp:148 msgid "Preset with name \"%1%\" already exists." msgstr "Un préréglage avec le nom \"%1%\" existe déjà." -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/SavePresetDialog.cpp:219 msgctxt "PresetName" msgid "Copy" msgstr "Copie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Appuyer pour activer le rectangle de déselection" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "" -"Appuyez pour activer le redimensionnement\n" -"dans une direction pour le Gizmo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Press to activate selection rectangle" msgstr "Appuyer pour activer le rectangle de sélection" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 -msgid "" -"Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\n" -"selected objects around their own center" -msgstr "" -"Appuyer pour redimensionner (à l'échelle du Gizmo) ou faire pivoter (rotation du Gizmo)\n" -"les objets sélectionnés autour de leur propre centre" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 msgid "" "Press to select multiple objects\n" "or move multiple objects with mouse" @@ -5491,164 +6375,189 @@ msgstr "" "Clicquez pour sélectionner plusieurs objets\n" "ou pour déplacer plusieurs objets avec la souris" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -#, no-c-format +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 msgid "" -"Press to snap by 5% in Gizmo scale\n" -"or to snap by 1mm in Gizmo move" +"Press to speed up 5 times while moving thumb\n" +"with arrow keys or mouse wheel" msgstr "" -"Appuyer pour modifier de 5% à l'échelle du Gizmo\n" -"ou pour modifier d'1 mm le mouvement du Gizmo" +"Appuyez pour accélérer 5 fois tout en déplaçant le pouce\n" +"avec les touches fléchées ou la molette de la souris" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4105 -#: src/slic3r/GUI/Tab.cpp:2390 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:2559 msgid "Preview" msgstr "Aperçu" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 msgid "Preview hollowed and drilled model" msgstr "Aperçu du modèle évidé et percé" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid "Previously sliced file (" msgstr "Fichier précédemment découpé (" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Prime all printing extruders" msgstr "Préparer tous les extrudeurs d'impression" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1521 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 msgid "print" msgstr "imprimer" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +msgid "Print" +msgstr "Imprimer" + +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Print &Host Upload Queue" msgstr "File d'Attente de Téléchargement de l'&Hôte d'Impression" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:507 msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." msgstr "Imprimer les périmètres de l'extérieur vers l'intérieur au lieu de l'ordre par défaut qui est inversé." -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Print Diameters" msgstr "Diamètres d'Impression" -#: src/slic3r/GUI/Tab.cpp:1944 src/slic3r/GUI/Tab.cpp:2123 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 msgid "Print Host upload" msgstr "Téléchargement de l'Hôte d'Impression" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "File d'Attente de téléchargement de l'hôte d'impression" -#: src/slic3r/GUI/DoubleSlider.cpp:970 +#: src/slic3r/GUI/DoubleSlider.cpp:1093 msgid "Print mode" msgstr "Mode d'impression" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 +#: src/slic3r/GUI/GCodeViewer.cpp:2579 src/slic3r/GUI/GUI_Preview.cpp:1476 +msgid "Print pauses" +msgstr "Pauses d'impression" + +#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 msgid "Print Settings" msgstr "Réglages d'Impression" -#: src/slic3r/GUI/Plater.cpp:815 +#: src/slic3r/GUI/Plater.cpp:690 msgid "Print settings" msgstr "Réglages d'impression" -#: src/slic3r/GUI/Tab.cpp:1478 +#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Print Settings Tab" +msgstr "Onglet Réglages d'impression" + +#: src/slic3r/GUI/Tab.cpp:1824 msgid "Print speed override" msgstr "Contournement de la vitesse d'impression" -#: src/libslic3r/GCode.cpp:638 +#: src/libslic3r/GCode.cpp:623 msgid "Print z" msgstr "Imprimer z" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Print&er Settings Tab" msgstr "Onglet des Réglages de l'Imprimant&e" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Printable" msgstr "Imprimable" -#: src/slic3r/GUI/Plater.cpp:819 +#: src/slic3r/GUI/Plater.cpp:694 msgid "Printer" msgstr "Imprimante" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1525 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 msgid "printer" msgstr "imprimer" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 msgid "Printer absolute correction" msgstr "Correction absolue de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 msgid "Printer gamma correction" msgstr "Correction gamma de l'imprimante" -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1294 msgid "printer model" msgstr "modèle de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Printer notes" msgstr "Notes de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 -#: src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:144 +msgid "Printer preset name" +msgstr "Nom du préréglage de l'imprimante" + +#: src/libslic3r/PrintConfig.cpp:2574 src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2576 msgid "Printer scaling correction" msgstr "Correction de redimensionnement de l'imprimante" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:453 msgid "Printer Settings" msgstr "Réglages de l'Imprimante" +#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +msgid "Printer Settings Tab" +msgstr "Onglet Réglages de l'imprimante" + #: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "Technologie de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "Printer type" msgstr "Type d'imprimante" -#: src/libslic3r/PrintConfig.cpp:1487 +#: src/libslic3r/PrintConfig.cpp:1595 msgid "Printer variant" msgstr "Variante d'imprimante" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "Printer vendor" msgstr "Fabriquant de l'imprimante" -#: src/libslic3r/Print.cpp:1388 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +msgid "Printer with name \"%1%\" already exists." +msgstr "L'imprimante avec le nom \"%1%\" existe déjà." + +#: src/slic3r/GUI/ConfigWizard.cpp:587 +msgid "Printer:" +msgstr "Imprimante :" + +#: src/libslic3r/Print.cpp:1414 msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." msgstr "Impression avec plusieurs extrudeurs de différents diamètres de buse. Si le support doit être imprimé avec l'extrudeur courant (support_material_extruder == 0 ou support_material_interface_extruder == 0), toutes les buses doivent avoir le même diamètre." #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:849 +#: src/slic3r/GUI/MainFrame.cpp:1550 #, c-format msgid "Processing %s" msgstr "Traitement %s" -#: src/slic3r/GUI/Plater.cpp:2283 -#, c-format -msgid "Processing input file %s" -msgstr "Traitement du fichier d'entrée %s" - -#: src/libslic3r/PrintObject.cpp:108 +#: src/libslic3r/PrintObject.cpp:114 msgid "Processing triangulated mesh" msgstr "Traitement de maillage triangulé" -#: src/slic3r/GUI/Tab.cpp:1259 src/slic3r/GUI/Tab.cpp:1549 -#: src/slic3r/GUI/Tab.cpp:2020 src/slic3r/GUI/Tab.cpp:2136 -#: src/slic3r/GUI/Tab.cpp:3544 src/slic3r/GUI/Tab.cpp:3672 +#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 +#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 msgid "Profile dependencies" msgstr "Dépendances du profil" -#: src/slic3r/GUI/ConfigWizard.cpp:566 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Profile:" msgstr "Profil :" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 msgid "Progress" msgstr "Progression" @@ -5656,23 +6565,35 @@ msgstr "Progression" msgid "Progress:" msgstr "Progression :" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Prusa 3D &Drivers" msgstr "&Drivers Prusa 3D" -#: src/slic3r/GUI/ConfigWizard.cpp:1995 +#: src/slic3r/GUI/ConfigWizard.cpp:2506 msgid "Prusa FFF Technology Printers" msgstr "Imprimantes à Technologie FFF Prusa" -#: src/slic3r/GUI/ConfigWizard.cpp:1998 +#: src/slic3r/GUI/ConfigWizard.cpp:2509 msgid "Prusa MSLA Technology Printers" msgstr "Imprimantes à Technologie MSLA Prusa" -#: src/slic3r/GUI/AboutDialog.cpp:260 +#: src/slic3r/Utils/Http.cpp:78 +msgid "PrusaSlicer detected system SSL certificate store in: %1%" +msgstr "PrusaSlicer a détecté un stockage de certificats SSL système dans : %1%" + +#: src/slic3r/GUI/GUI_Init.cpp:85 src/slic3r/GUI/GUI_Init.cpp:88 +msgid "PrusaSlicer GUI initialization failed" +msgstr "L'initialisation de la GUI de PrusaSlicer a échoué" + +#: src/slic3r/GUI/AboutDialog.cpp:285 msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "PrusaSlicer est basé sur Slic3r par Alessandro Ranellucci et la communauté RepRap." -#: src/slic3r/GUI/GLCanvas3DManager.cpp:284 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 +msgid "PrusaSlicer is closing: Unsaved Changes" +msgstr "PrusaSlicer se ferme : modifications non enregistrées" + +#: src/slic3r/GUI/OpenGLManager.cpp:259 #, c-format msgid "" "PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" @@ -5685,7 +6606,11 @@ msgstr "" msgid "PrusaSlicer version" msgstr "Version de PrusaSlicer" -#: src/slic3r/GUI/ConfigWizard.cpp:815 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:662 +msgid "PrusaSlicer will remember your action." +msgstr "PrusaSlicer se souviendra de votre action." + +#: src/slic3r/GUI/ConfigWizard.cpp:1174 msgid "" "PrusaSlicer's user interfaces comes in three variants:\n" "Simple, Advanced, and Expert.\n" @@ -5695,64 +6620,80 @@ msgstr "" "Simple, Avancé et Expert.\n" "Le mode Simple affiche uniquement les paramètres les plus fréquemment utilisés pertinents pour l'impression 3D régulière. Les deux autres offrent des réglages fins de plus en plus sophistiqués, ils conviennent respectivement aux utilisateurs avancés et experts." -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +msgid "PrusaSlicer: Don't ask me again" +msgstr "PrusaSlicer : Ne me demandez plus" + +#: src/libslic3r/PrintConfig.cpp:2397 msgid "Purging after toolchange will done inside this object's infills. This lowers the amount of waste but may result in longer print time due to additional travel moves." msgstr "La purge après le changement d'outil sera faite dans le remplissage de l'objet. Cela diminue le gaspillage mais peut rallonger le temps d'impression à cause des mouvements supplémentaires." -#: src/slic3r/GUI/Plater.cpp:544 +#: src/slic3r/GUI/Plater.cpp:410 msgid "Purging volumes" msgstr "Volumes de purge" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "Purging volumes - load/unload volumes" msgstr "Volumes de purge - volumes de chargement/déchargement" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "Purging volumes - matrix" msgstr "Volumes de purge - matrice" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:1201 +msgid "Purpose of Machine Limits" +msgstr "Objectif des limites de la machine" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 msgid "Quality" msgstr "Qualité" -#: src/slic3r/GUI/Tab.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:1402 msgid "Quality (slower slicing)" msgstr "Qualité (découpage plus lent)" -#: src/slic3r/GUI/GLCanvas3D.cpp:273 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Quality / Speed" msgstr "Qualité / Vitesse" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1182 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1530 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1536 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1849 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 +msgid "Quick" +msgstr "Rapide" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1306 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1661 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1667 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2008 #, c-format msgid "Quick Add Settings (%s)" msgstr "Ajout de Réglages Rapide (%s)" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Quick Slice" msgstr "Découpage Rapide" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Quick Slice and Save As" msgstr "Découpage Rapide et Enregistrer Sous" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 #, c-format msgid "Quit %s" msgstr "Quitter %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Quit, I will move my data now" +msgstr "Quitter, je vais déplacer mes données maintenant" + +#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" msgstr "Rayon" -#: src/slic3r/GUI/Tab.cpp:1127 +#: src/slic3r/GUI/Tab.cpp:1456 msgid "Raft" msgstr "Radeau" -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Raft layers" msgstr "Couches du radeau" @@ -5778,27 +6719,27 @@ msgstr "Espacement de la ligne de ramming" msgid "Ramming line width" msgstr "Largeur de la ligne d'expulsion" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:730 msgid "Ramming parameters" msgstr "Paramètres de l'expulsion" -#: src/slic3r/GUI/Tab.cpp:1505 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Ramming settings" msgstr "Réglages de l'expulsion" -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "Random" msgstr "Aléatoire" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 msgid "Range" msgstr "Zone" -#: src/libslic3r/SLAPrintSteps.cpp:65 +#: src/libslic3r/SLAPrintSteps.cpp:66 msgid "Rasterizing layers" msgstr "Tramage des couches" -#: src/slic3r/GUI/MainFrame.cpp:596 +#: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Re&load from disk" msgstr "Recharger à partir du dis&que" @@ -5810,210 +6751,243 @@ msgstr "Reconfigurer" msgid "Ready" msgstr "Prêt" -#: src/slic3r/GUI/Plater.cpp:3115 +#: src/slic3r/GUI/Plater.cpp:2915 msgid "Ready to slice" msgstr "Prêt à découper" -#: src/slic3r/GUI/MainFrame.cpp:669 src/libslic3r/PrintConfig.cpp:1632 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Rear" msgstr "Arrière" -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 msgid "Rear View" msgstr "Vue Arrière" -#: src/slic3r/GUI/MainFrame.cpp:413 +#: src/slic3r/GUI/MainFrame.cpp:994 msgid "Recent projects" msgstr "Proj&ets récents" -#: src/slic3r/GUI/PresetHints.cpp:263 +#: src/slic3r/GUI/PresetHints.cpp:262 #, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "Épaisseur des parois fines de l'objet recommandée pour la hauteur de couche %.2f et" -#: src/slic3r/GUI/PresetHints.cpp:274 +#: src/slic3r/GUI/PresetHints.cpp:273 msgid "Recommended object thin wall thickness: Not available due to excessively small extrusion width." msgstr "Épaisseur recommandée pour la paroi mince de l'objet : Non disponible en raison de la largeur d'extrusion excessivement petite." -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "Recommended object thin wall thickness: Not available due to invalid layer height." msgstr "Épaisseur des parois fines de l'objet recommandée : Non disponible car la hauteur de couche est invalide." -#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 msgid "Recreating" msgstr "Re-création" -#: src/slic3r/GUI/BedShapeDialog.cpp:73 +#: src/slic3r/GUI/BedShapeDialog.cpp:141 msgid "Rectangular" msgstr "Rectangle" -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Rectilinear" msgstr "Rectiligne" -#: src/libslic3r/PrintConfig.cpp:2010 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Rectilinear grid" msgstr "Grille rectiligne" -#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 -#: src/slic3r/GUI/MainFrame.cpp:584 +#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "Redo" msgstr "Recommencer" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "Répéter %1$d Action" msgstr[1] "Répéter %1$d Actions" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Redo History" msgstr "Répéter Historique" -#: src/slic3r/GUI/Tab.cpp:1098 +#: src/slic3r/GUI/Tab.cpp:1426 msgid "Reducing printing time" msgstr "Réduction du temps d'impression" -#: src/slic3r/GUI/Plater.cpp:3452 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 +msgid "Refresh Printers" +msgstr "Actualiser les imprimantes" + +#: src/libslic3r/PrintConfig.cpp:145 +msgid "Related printer preset name" +msgstr "Nom du préréglage d'imprimante associé" + +#: src/slic3r/GUI/Plater.cpp:3257 msgid "Reload all from disk" msgstr "Tout recharger à partir du disque" -#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3225 -#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 +#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 msgid "Reload from disk" msgstr "Recharger à partir du disque" -#: src/slic3r/GUI/Plater.cpp:3339 +#: src/slic3r/GUI/Plater.cpp:3142 msgid "Reload from:" msgstr "Recharger depuis :" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Reload plater from disk" msgstr "Recharger le plateau depuis le disque" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:1203 msgid "Reload the plater from disk" msgstr "Recharger le plateau à partir du disque" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:3881 msgid "Reload the selected object from disk" msgstr "Recharger l'objet sélectionné à partir du disque" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3934 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3852 msgid "Reload the selected volumes from disk" msgstr "Recharger les volumes sélectionnés à partir du disque" -#: src/slic3r/GUI/Preferences.cpp:39 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Remaining time" +msgstr "Temps restant" + +#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +msgid "Remember my choice" +msgstr "Se souvenir de mon choix" + +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Remember output directory" msgstr "Se souvenir du répertoire de sortie" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/MainFrame.cpp:166 +msgid "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" +msgstr "Pensez à vérifier les mises à jours sur https://github.com/prusa3d/PrusaSlicer/releases" + +#: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "retirer" -#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Remove" msgstr "Retirer" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 msgid "Remove all holes" msgstr "Supprimer tous les trous" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 msgid "Remove all points" msgstr "Retirer tous les points" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:35 +msgid "Remove all selection" +msgstr "Supprimer toute la sélection" + +#: src/slic3r/GUI/GLCanvas3D.cpp:239 msgid "Remove detail" msgstr "Supprimer les détails" -#: src/slic3r/GUI/Plater.cpp:879 -msgid "Remove device" -msgstr "Supprimer l'appareil" - #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182 msgid "Remove extruder from sequence" msgstr "Supprimer l'extrudeur de la séquence" -#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 src/slic3r/GUI/Plater.cpp:3860 msgid "Remove instance" msgstr "Supprimer l'instance" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 msgid "Remove Instance of the selected object" msgstr "Supprimer l'instance de l'objet sélectionné" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:161 msgid "Remove layer range" msgstr "Supprimer la zone de couche" -#: src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/Plater.cpp:3860 msgid "Remove one instance of the selected object" msgstr "Supprime une instance de l'objet sélectionné" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:98 msgid "Remove parameter" msgstr "Supprimer le paramètre" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Remove point" msgstr "Supprimer le point" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Remove point from selection" msgstr "Supprimer le point de la sélection" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 msgid "Remove selected holes" msgstr "Supprimer les trous sélectionnés" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1371 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1218 msgid "Remove selected points" msgstr "Retirer les points sélectionnés" -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:34 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:368 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:378 +msgid "Remove selection" +msgstr "Supprimer la sélection" + +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 msgid "Remove the selected object" msgstr "Retirer l'objet sélectionné" -#: src/slic3r/GUI/ConfigWizard.cpp:453 +#: src/slic3r/GUI/ConfigWizard.cpp:456 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "Supprimer les profils utilisateurs (un instantané sera pris au préalable)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1636 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 msgid "Rename" msgstr "Renommer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Object" msgstr "Renommer l'Objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Sub-object" msgstr "Renommer le Sous-objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Renaming" msgstr "Renommage" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:115 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 msgid "Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again." msgstr "La tentative pour renommer le G-code après l'avoir copié dans le dossier sélectionné a échoué. Le chemin actuel est %1%.tmp. Veuillez tenter à nouveau l'export." -#: src/libslic3r/PrintConfig.cpp:3515 +#: src/slic3r/GUI/Preferences.cpp:255 +msgid "Render" +msgstr "Rendre" + +#: src/libslic3r/PrintConfig.cpp:3720 msgid "Render with a software renderer" msgstr "Rendu avec avec un logiciel de rendu" -#: src/libslic3r/PrintConfig.cpp:3516 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." msgstr "Appliquer un rendu avec un logiciel de rendu. Le logiciel de rendu MESA qui est fourni est chargé à la place du pilote OpenGL présent par défaut." -#: src/slic3r/GUI/MainFrame.cpp:911 src/libslic3r/PrintConfig.cpp:3447 +#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 msgid "Repair" msgstr "Réparer" @@ -6037,38 +7011,38 @@ msgstr "Le fichier 3MF réparé ne contient aucun volume" msgid "Repairing model by the Netfabb service" msgstr "Réparation d'un modèle par le service Netfabb" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat last quick slice" msgstr "Répéter le dernier découpage rapide" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat Last Quick Slice" msgstr "Répéter le Dernier Découpage Rapide" -#: src/slic3r/GUI/Tab.cpp:3083 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 msgid "Replace?" msgstr "Remplacer ?" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 msgid "Report an I&ssue" msgstr "S&ignaler un Problème" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 #, c-format msgid "Report an issue on %s" msgstr "Signaler un problème sur %s" -#: src/slic3r/Utils/PresetUpdater.cpp:713 +#: src/slic3r/Utils/PresetUpdater.cpp:733 #, c-format msgid "requires max. %s" msgstr "nécessite max. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:710 +#: src/slic3r/Utils/PresetUpdater.cpp:730 #, c-format msgid "requires min. %s" msgstr "nécessite min. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:705 +#: src/slic3r/Utils/PresetUpdater.cpp:726 #, c-format msgid "requires min. %s and max. %s" msgstr "nécessite min. %s et max. %s" @@ -6077,270 +7051,300 @@ msgstr "nécessite min. %s et max. %s" msgid "Rescan" msgstr "Scanner à nouveau" -#: src/slic3r/GUI/Tab.cpp:1906 -msgid "Rescan serial ports" -msgstr "Rescanner les ports série" - -#: src/slic3r/GUI/GLCanvas3D.cpp:313 +#: src/slic3r/GUI/GLCanvas3D.cpp:299 msgid "Reset" msgstr "Réinitialiser" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1373 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 msgid "Reset clipping plane" msgstr "Réinitialiser le plan de coupe" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:59 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:26 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 msgid "Reset direction" msgstr "Réinitialiser la direction" -#: src/slic3r/GUI/Plater.cpp:2723 +#: src/slic3r/GUI/Plater.cpp:2684 msgid "Reset Project" msgstr "Réinitialiser le Projet" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:372 msgid "Reset rotation" msgstr "Réinitialiser la rotation" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:394 msgid "Reset Rotation" msgstr "Réinitialiser la Rotation" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:407 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409 msgid "Reset scale" msgstr "Réinitialiser l'échelle" -#: src/slic3r/GUI/GLCanvas3D.cpp:252 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 +msgid "Reset selection" +msgstr "Réinitialiser la sélection" + +#: src/slic3r/GUI/GLCanvas3D.cpp:243 msgid "Reset to base" msgstr "Réinitialiser à la base" -#: src/slic3r/GUI/Tab.cpp:2394 +#: src/slic3r/GUI/Tab.cpp:2564 msgid "Reset to Filament Color" msgstr "Réinitialiser la Couleur du Filament" -#: src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "Resolution" msgstr "Résolution" -#: src/libslic3r/PrintConfig.cpp:1529 +#: src/libslic3r/PrintConfig.cpp:1637 msgid "Retract amount before wipe" msgstr "Quantité de rétractation avant essuyage" -#: src/libslic3r/PrintConfig.cpp:1537 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Retract on layer change" msgstr "Rétracter lors des changements de couche" -#: src/slic3r/GUI/Tab.cpp:1324 src/slic3r/GUI/Tab.cpp:1383 -#: src/slic3r/GUI/Tab.cpp:2370 +#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 +#: src/slic3r/GUI/Tab.cpp:2539 msgid "Retraction" msgstr "Rétraction" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "Retraction is not triggered when travel moves are shorter than this length." msgstr "La rétraction n'est pas déclenchée lorsque les déplacements sont plus courts que cette distance." -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Retraction Length" msgstr "Longueur de Rétractation" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Retraction Length (Toolchange)" msgstr "Longueur de Rétractation (changement d'outil)" -#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 msgid "Retraction Speed" msgstr "Vitesse de Rétractation" -#: src/slic3r/GUI/Tab.cpp:2386 +#: src/slic3r/GUI/Tab.cpp:2555 msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" msgstr "Rétractation lorsque l'outil est désactivé (réglages avancés pour les configurations multi-extrudeurs)" -#: src/slic3r/GUI/GUI_Preview.cpp:254 +#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:1472 msgid "Retractions" msgstr "Rétractions" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/Preferences.cpp:198 +msgid "Reverse direction of zoom with mouse wheel" +msgstr "Inverser la direction du zoom avec la molette de la souris" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +msgid "Revert conversion from imperial units" +msgstr "Annuler la conversion des unités impériales" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right" msgstr "Droite" -#: src/slic3r/GUI/GUI_ObjectList.cpp:402 +#: src/slic3r/GUI/GUI_ObjectList.cpp:449 msgid "Right button click the icon to change the object printable property" msgstr "Clic droit sur l'icône pour changer les propriétés imprimables de l'objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:443 msgid "Right button click the icon to change the object settings" msgstr "Clic droit sur l'icône pour changer les réglages de l'objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:359 +#: src/slic3r/GUI/GUI_ObjectList.cpp:406 msgid "Right button click the icon to fix STL through Netfabb" msgstr "Clic droit sur l'icône pour réparer le STL avec Netfabb" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Right click" msgstr "Clic droit" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:31 +msgid "Right mouse button" +msgstr "Bouton droit de la souris" + +#: src/slic3r/GUI/GLCanvas3D.cpp:237 msgid "Right mouse button:" msgstr "Clic droit souris :" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right View" msgstr "Vue Droite" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 -#: src/libslic3r/PrintConfig.cpp:3451 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:527 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:546 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Rotate" msgstr "Pivoter" -#: src/libslic3r/PrintConfig.cpp:3456 +#: src/libslic3r/PrintConfig.cpp:3655 msgid "Rotate around X" msgstr "Pivoter autour de X" -#: src/libslic3r/PrintConfig.cpp:3461 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Rotate around Y" msgstr "Pivoter autour de Y" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 msgid "Rotate lower part upwards" msgstr "Pivoter la partie basse vers le haut" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Rotate selection 45 degrees CCW" msgstr "Faire pivoter la sélection de 45 degrés dans le sens inverse des aiguilles d'une montre" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Rotate selection 45 degrees CW" msgstr "Faire pivoter la sélection de 45 degrés dans le sens des aiguilles d'une montre" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 -#: src/slic3r/GUI/Mouse3DController.cpp:304 -#: src/slic3r/GUI/Mouse3DController.cpp:321 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:309 msgid "Rotation" msgstr "Rotation" -#: src/libslic3r/PrintConfig.cpp:3457 +#: src/libslic3r/PrintConfig.cpp:3656 msgid "Rotation angle around the X axis in degrees." msgstr "Angle de rotation autour de l'axe X en degrés." -#: src/libslic3r/PrintConfig.cpp:3462 +#: src/libslic3r/PrintConfig.cpp:3661 msgid "Rotation angle around the Y axis in degrees." msgstr "Angle de rotation autour de l'axe Y en degrés." -#: src/libslic3r/PrintConfig.cpp:3452 +#: src/libslic3r/PrintConfig.cpp:3651 msgid "Rotation angle around the Z axis in degrees." msgstr "Angle de rotation autour de l'axe Z en degrés." -#: src/slic3r/GUI/GUI_App.cpp:797 +#: src/slic3r/GUI/GUI_App.cpp:1474 #, c-format msgid "Run %s" msgstr "Run %s" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:128 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:478 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 msgid "Running post-processing scripts" msgstr "Exécuter des scripts de post-traitement" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 -#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 -#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 +#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 +#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 +#: src/libslic3r/PrintConfig.cpp:2709 msgid "s" msgstr "s" -#: src/slic3r/GUI/MainFrame.cpp:481 src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end G-code" msgstr "&Envoyer le G-code" -#: src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end to print" msgstr "Envoyer pour imprimer" -#. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3417 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:642 +msgid "Save" +msgstr "Enregistrer" + +#: src/slic3r/GUI/SavePresetDialog.cpp:72 #, c-format msgid "Save %s as:" msgstr "Enregistrer %s sous :" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 #, c-format msgid "Save %s file as:" msgstr "Enregistrer le fichier %s sous :" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1046 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Save changes?" msgstr "Enregistrer les modifications ?" -#: src/libslic3r/PrintConfig.cpp:3386 +#: src/libslic3r/PrintConfig.cpp:3585 msgid "Save config file" msgstr "Sauvegarder le fichier de configuration" -#: src/slic3r/GUI/MainFrame.cpp:925 +#: src/slic3r/GUI/MainFrame.cpp:1626 msgid "Save configuration as:" msgstr "Enregistrer la configuration sous :" -#: src/libslic3r/PrintConfig.cpp:3387 +#: src/libslic3r/PrintConfig.cpp:3586 msgid "Save configuration to the specified file." msgstr "Enregistrer la configuration dans le fichier spécifié." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:133 +#: src/slic3r/GUI/Tab.cpp:203 #, c-format msgid "Save current %s" msgstr "Enregistrer l'état actuel %s" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "Save current project file" msgstr "Sauvegarder le fichier du projet en cours" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save current project file as" msgstr "Sauvegarder le fichier du projet en cours sous" -#: src/slic3r/GUI/Plater.cpp:2604 +#: src/slic3r/GUI/Plater.cpp:2566 msgid "Save file as:" msgstr "Enregistrer le fichier sous :" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save G-code file as:" msgstr "Sauvegarder le fichier G-code en tant que :" -#: src/slic3r/GUI/MainFrame.cpp:899 +#: src/slic3r/GUI/MainFrame.cpp:1600 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Enregistrer le fichier OBJ (moins enclin aux erreurs de coordonnées que le STL) sous :" -#: src/slic3r/GUI/Tab.hpp:443 +#: src/slic3r/GUI/SavePresetDialog.cpp:190 +#: src/slic3r/GUI/SavePresetDialog.cpp:196 msgid "Save preset" msgstr "Enregistrer le préréglage" -#: src/slic3r/GUI/MainFrame.cpp:980 +#: src/slic3r/GUI/MainFrame.cpp:1681 msgid "Save presets bundle as:" msgstr "Enregistrer le lot de préréglages sous :" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save Project &as" msgstr "Sauveg&arder le Projet &sous" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Save project (3mf)" msgstr "Sauvegarder le projet (3mf)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 msgid "Save project as (3mf)" msgstr "Sauvegarder le projet en tant que (3mf)" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save SL1 file as:" msgstr "Sauvegarder le fichier SL1 sous :" -#: src/slic3r/GUI/MainFrame.cpp:838 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 +msgid "Save the selected options to preset \"%1%\"." +msgstr "Enregistrer les options sélectionnées dans le préréglage \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Save the selected options." +msgstr "Enregistrer les options sélectionnées." + +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "Save zip file as:" msgstr "Sauvegarder le fichier zip sous :" @@ -6350,159 +7354,184 @@ msgstr "Sauvegarder le fichier zip sous :" msgid "Saving mesh into the 3MF container failed." msgstr "Échec de la sauvegarde du maillage dans le contenant 3MF." -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 -#: src/libslic3r/PrintConfig.cpp:3466 +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:78 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:238 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:547 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "Scale" msgstr "Redimensionner" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "Échelle" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 -msgid "" -"Scale selection to fit print volume\n" -"in Gizmo scale" -msgstr "" -"Redimensionner la sélection pour l'adapter au volume d'impression\n" -"à l'échelle du Gizmo" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale the selected object to fit the print volume" msgstr "Redimensionner l'objet sélectionné pour qu'il s'ajuste au volume d'impression" -#: src/libslic3r/PrintConfig.cpp:3475 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Scale to Fit" msgstr "Redimensionner pour Ajuster" -#: src/slic3r/GUI/Selection.cpp:939 +#: src/slic3r/GUI/Selection.cpp:988 msgid "Scale To Fit" msgstr "Redimensionner pour Ajuster" -#: src/libslic3r/PrintConfig.cpp:3476 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Scale to fit the given volume." msgstr "Redimensionner pour ajuster à un volume donné." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale to print volume" msgstr "Redimensionner pour ajuster au volume d'impression" -#: src/libslic3r/PrintConfig.cpp:3467 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scaling factor or percentage." msgstr "Facteur ou pourcentage de redimensionnement." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:505 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Planification du téléchargement dans `%1%`. Voir : Imprimer la file d'attente de téléchargement de l'hôte" -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 +msgid "Seam painting" +msgstr "Peinture de jointure" + +#: src/libslic3r/PrintConfig.cpp:1729 msgid "Seam position" msgstr "Position de la jointure" -#: src/libslic3r/PrintConfig.cpp:1642 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Seam preferred direction" msgstr "Direction préférée de la jointure" -#: src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:1759 msgid "Seam preferred direction jitter" msgstr "Gigue de la direction préférée de la jointure" +#: src/slic3r/GUI/MainFrame.cpp:1207 +msgid "Searc&h" +msgstr "Recherc&her" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 +msgid "Search" +msgstr "Rechercher" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +msgid "Search in English" +msgstr "Rechercher en anglais" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "Search in settings" +msgstr "Rechercher dans les réglages" + +#: src/slic3r/GUI/Tab.cpp:222 +msgid "Search in settings [%1%]" +msgstr "Rechercher dans les réglages [%1%]" + #: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "Recherche des dispositifs" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:41 msgid "Searching for optimal orientation" msgstr "Recherche de l'orientation optimale" -#: src/slic3r/GUI/GUI_App.cpp:1103 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "See more." +msgstr "Voir plus." + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "See Releases page." +msgstr "Voir la page des versions." + +#: src/slic3r/GUI/GUI_App.cpp:1895 msgid "Select a gcode file:" msgstr "Sélectionnez un fichier gcode :" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Select all objects" msgstr "Sélectionner tous les objets" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1370 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1217 msgid "Select all points" msgstr "Sélectionner tous les points" -#: src/slic3r/GUI/ConfigWizard.cpp:1976 +#: src/slic3r/GUI/ConfigWizard.cpp:2487 msgid "Select all standard printers" msgstr "Sélectionner toutes les imprimantes standard" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Sélectionner par rectangle" -#: src/slic3r/GUI/MainFrame.cpp:944 src/slic3r/GUI/MainFrame.cpp:1006 +#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 msgid "Select configuration to load:" msgstr "Sélectionner la configuration à charger :" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:88 msgid "Select coordinate space, in which the transformation will be performed." msgstr "Sélectionnez un espace de coordonnées dans lequel la transformation sera effectuée." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3971 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 msgid "Select extruder number:" msgstr "Sélectionner le numéro de l'extrudeur :" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Select Filament Settings Tab" msgstr "Sélectionner l'Onglet des Réglages du Filament" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Select Plater Tab" msgstr "Sélectionner l'Onglet du Plateau" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Select Print Settings Tab" msgstr "Sélectionner l'Onglet des Réglages d'Impression" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Select Printer Settings Tab" msgstr "Sélectionner l'Onglet des Réglages de l'Imprimante" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1265 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 msgid "Select showing settings" msgstr "Sélectionner les réglages d'affichage" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Select the language" msgstr "Sélectionner la langue" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:108 msgid "Select the print profiles this profile is compatible with." msgstr "Sélectionner les profils d'impression avec lesquels ce profil est compatible." -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:102 msgid "Select the printers this profile is compatible with." msgstr "Sélectionner les imprimantes avec lesquelles ce profil est compatible." -#: src/slic3r/GUI/MainFrame.cpp:889 +#: src/slic3r/GUI/MainFrame.cpp:1590 msgid "Select the STL file to repair:" msgstr "Sélectionner le fichier STL à réparer :" -#: src/slic3r/GUI/Preferences.cpp:237 +#: src/slic3r/GUI/Preferences.cpp:391 msgid "Select toolbar icon size in respect to the default one." msgstr "Sélectionner la taille de l'icône de la barre d'outil par rapport à la taille par défaut." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Select type of part" msgstr "Sélectionner le type de pièce" -#: src/slic3r/GUI/Plater.cpp:638 +#: src/slic3r/GUI/Plater.cpp:504 msgid "Select what kind of pad do you need" msgstr "Choisissez le type de socle dont vous avez besoin" -#: src/slic3r/GUI/Plater.cpp:498 +#: src/slic3r/GUI/Plater.cpp:364 msgid "Select what kind of support do you need" msgstr "Choisissez le type de support dont vous avez besoin" -#: src/slic3r/GUI/DoubleSlider.cpp:1917 +#: src/slic3r/GUI/DoubleSlider.cpp:2135 msgid "" "Select YES if you want to delete all saved tool changes, \n" "NO if you want all tool changes switch to color changes, \n" @@ -6512,59 +7541,59 @@ msgstr "" "NON si vous souhaitez que tous les changements d'outil soient remplacés par des modifications de couleur, \n" "ou ANNULER pour ne pas les modifier." -#: src/slic3r/GUI/Selection.cpp:146 +#: src/slic3r/GUI/Selection.cpp:191 msgid "Selection-Add" msgstr "Sélection-Ajouter" -#: src/slic3r/GUI/Selection.cpp:376 +#: src/slic3r/GUI/Selection.cpp:421 msgid "Selection-Add All" msgstr "Sélection-Ajouter Tout" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3299 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 msgid "Selection-Add from list" msgstr "Sélection-Ajouter depuis la liste" -#: src/slic3r/GUI/GLCanvas3D.cpp:6598 +#: src/slic3r/GUI/GLCanvas3D.cpp:7193 msgid "Selection-Add from rectangle" msgstr "Sélection-Ajouter depuis le rectangle" -#: src/slic3r/GUI/Selection.cpp:256 +#: src/slic3r/GUI/Selection.cpp:301 msgid "Selection-Add Instance" msgstr "Sélection-Ajouter Instance" -#: src/slic3r/GUI/Selection.cpp:219 +#: src/slic3r/GUI/Selection.cpp:264 msgid "Selection-Add Object" msgstr "Sélection-Ajouter Objet" -#: src/slic3r/GUI/Selection.cpp:187 +#: src/slic3r/GUI/Selection.cpp:232 msgid "Selection-Remove" msgstr "Sélection-Retirer" -#: src/slic3r/GUI/Selection.cpp:402 +#: src/slic3r/GUI/Selection.cpp:447 msgid "Selection-Remove All" msgstr "Sélection-Retirer Tout" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3291 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 msgid "Selection-Remove from list" msgstr "Sélection-Retirer de la liste" -#: src/slic3r/GUI/GLCanvas3D.cpp:6617 +#: src/slic3r/GUI/GLCanvas3D.cpp:7212 msgid "Selection-Remove from rectangle" msgstr "Sélection-Retirer du rectangle" -#: src/slic3r/GUI/Selection.cpp:275 +#: src/slic3r/GUI/Selection.cpp:320 msgid "Selection-Remove Instance" msgstr "Sélection-Supprimer l'Instance" -#: src/slic3r/GUI/Selection.cpp:238 +#: src/slic3r/GUI/Selection.cpp:283 msgid "Selection-Remove Object" msgstr "Sélection-Supprimer l'Objet" -#: src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Selects all objects" msgstr "Sélectionner tous les objets" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 msgid "Send G-code" msgstr "Envoyer le G-code" @@ -6572,29 +7601,29 @@ msgstr "Envoyer le G-code" msgid "Send G-Code to printer host" msgstr "Envoyer le G-Code à l'hôte d'imprimante" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:1072 msgid "Send to print current plate as G-code" msgstr "Envoyer pour imprimer le plateau actuel en tant que G-code" -#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 msgid "Send to printer" msgstr "Envoyer à l'imprimante" -#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +#: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Seq." -#: src/slic3r/GUI/Tab.cpp:1231 +#: src/slic3r/GUI/Tab.cpp:1561 msgid "Sequential printing" msgstr "Impression séquentielle" -#: src/slic3r/GUI/Tab.cpp:1901 src/libslic3r/PrintConfig.cpp:1661 -msgid "Serial port" -msgstr "Port série" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +msgid "Sequential Slider" +msgstr "Curseur séquentiel" -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Vitesse du port série" +#: src/slic3r/GUI/Preferences.cpp:230 +msgid "Sequential slider applied only to top layer" +msgstr "Curseur séquentiel appliqué uniquement à la couche supérieur" #: src/slic3r/GUI/FirmwareDialog.cpp:807 msgid "Serial port:" @@ -6604,17 +7633,16 @@ msgstr "Port série :" msgid "Service name" msgstr "Nom du service" -#: src/slic3r/GUI/Tab.cpp:1802 src/slic3r/GUI/Tab.cpp:2046 -#: src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 msgid "Set" msgstr "Appliquer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Object" msgstr "Définir comme Objet Séparé" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Objects" msgstr "Définir comme Objets Séparés" @@ -6622,7 +7650,7 @@ msgstr "Définir comme Objets Séparés" msgid "Set extruder change for every" msgstr "Définir le changement d'extrudeur pour chaque" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Set extruder for selected items" msgstr "Définir l'extrudeur pour les items sélectionnés" @@ -6630,7 +7658,7 @@ msgstr "Définir l'extrudeur pour les items sélectionnés" msgid "Set extruder sequence" msgstr "Définir la séquence d'extrudeur" -#: src/slic3r/GUI/DoubleSlider.cpp:1532 +#: src/slic3r/GUI/DoubleSlider.cpp:1728 msgid "Set extruder sequence for the entire print" msgstr "Définir la séquence d'extrusion pour l'ensemble de l'impression" @@ -6638,84 +7666,84 @@ msgstr "Définir la séquence d'extrusion pour l'ensemble de l'impression" msgid "Set extruder(tool) sequence" msgstr "Définir la séquence d'extrudeur (outil)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Définir le curseur inférieur sur le curseur actuel" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 msgid "Set Mirror" msgstr "Appliquer la Symétrie" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Set number of instances" msgstr "Définir le nombre d'instances" -#: src/slic3r/GUI/Plater.cpp:4756 +#: src/slic3r/GUI/Plater.cpp:4860 #, c-format msgid "Set numbers of copies to %d" msgstr "Régler le nombre de copies sur %d" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:828 msgid "Set Orientation" msgstr "Définir l'Orientation" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:797 msgid "Set Position" msgstr "Définir la Position" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Printable" msgstr "Définir Imprimable" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Printable Instance" msgstr "Définir une Instance Imprimable" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:893 msgid "Set Scale" msgstr "Définir l'Échelle" -#: src/libslic3r/PrintConfig.cpp:2393 +#: src/libslic3r/PrintConfig.cpp:2536 msgid "Set the actual LCD display orientation inside the SLA printer. Portrait mode will flip the meaning of display width and height parameters and the output images will be rotated by 90 degrees." msgstr "Définit l'orientation de l'affichage LCD dans l'imprimante SLA. Le mode portrait échangera la signification des paramètres de hauteurs et de largeur et les images de sortie seront pivotées de 90 degrés." -#: src/slic3r/GUI/ConfigWizard.cpp:932 +#: src/slic3r/GUI/ConfigWizard.cpp:1298 msgid "Set the shape of your printer's bed." msgstr "Réglez la forme du plateau de votre imprimante." -#: src/libslic3r/PrintConfig.cpp:556 +#: src/libslic3r/PrintConfig.cpp:592 msgid "Set this to a non-zero value to allow a manual extrusion width. If left to zero, Slic3r derives extrusion widths from the nozzle diameter (see the tooltips for perimeter extrusion width, infill extrusion width etc). If expressed as percentage (for example: 230%), it will be computed over layer height." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion. Si la valeur reste sur zéro, Slic3r calcule la largeur d’extrusion en se basant sur le diamètre de la buse (voir l’info-bulle concernant la largeur d’extrusion du périmètre, la largeur d’extrusion du remplissage, etc…). Si la valeur est exprimée en pourcentage (par exemple : 230%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:448 +#: src/libslic3r/PrintConfig.cpp:484 msgid "Set this to a non-zero value to set a manual extrusion width for external perimeters. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%), it will be computed over layer height." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour les périmètres extérieurs. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par exemple : 200%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:878 +#: src/libslic3r/PrintConfig.cpp:920 msgid "Set this to a non-zero value to set a manual extrusion width for first layer. You can use this to force fatter extrudates for better adhesion. If expressed as percentage (for example 120%) it will be computed over first layer height. If set to zero, it will use the default extrusion width." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour la première couche. Vous pouvez procéder ainsi pour obtenir des extrudats plus épais afin d’avoir une meilleure adhérence. Si la valeur est exprimée en pourcentage (par exemple : 120%), elle sera calculée par rapport à la hauteur de la première couche. Si elle est réglée sur zéro, elle utilisera la largeur d’extrusion par défaut." -#: src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:1873 msgid "Set this to a non-zero value to set a manual extrusion width for infill for solid surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour le remplissage ou les surfaces solides. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2250 msgid "Set this to a non-zero value to set a manual extrusion width for infill for top surfaces. You may want to use thinner extrudates to fill all narrow regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour le remplissage ou les surfaces supérieures. Vous voudrez peut-être utiliser des extrudats plus fins pour remplir les zones les plus étroites et obtenir des finitions plus lisses. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon le diamètre de la buse sera utilisé. Si la valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:1011 +#: src/libslic3r/PrintConfig.cpp:1055 msgid "Set this to a non-zero value to set a manual extrusion width for infill. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. You may want to use fatter extrudates to speed up the infill and make your parts stronger. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour le remplissage. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Vous voudrez peut-être utiliser des extrudats plus épais pour accélérer le remplissage et rendre vos pièces plus solides. Si la valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:1419 +#: src/libslic3r/PrintConfig.cpp:1527 msgid "Set this to a non-zero value to set a manual extrusion width for perimeters. You may want to use thinner extrudates to get more accurate surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%) it will be computed over layer height." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement une largeur d’extrusion pour les périmètres. Vous voudrez peut-être utiliser des extrudats plus fin pour obtenir des surfaces plus nettes. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par exemple : 200%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:2090 msgid "Set this to a non-zero value to set a manual extrusion width for support material. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour les supports. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon le diamètre de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur de couche." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:548 msgid "Set this to the clearance radius around your extruder. If the extruder is not centered, choose the largest value for safety. This setting is used to check for collisions and to display the graphical preview in the plater." msgstr "Paramétrez ceci avec le rayon de dégagement autour de l'extrudeur. Si l'extrudeur n'est pas centré, choisissez la plus grande valeur par sécurité. Ce réglage est utilisé pour vérifier les collisions et afficher l'aperçu graphique sur le plateau." @@ -6723,23 +7751,23 @@ msgstr "Paramétrez ceci avec le rayon de dégagement autour de l'extrudeur. Si msgid "Set this to the maximum height that can be reached by your extruder while printing." msgstr "Réglez cette valeur sur la hauteur maximum que peut atteindre votre extrudeur au cours de l'impression." -#: src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:537 msgid "Set this to the vertical distance between your nozzle tip and (usually) the X carriage rods. In other words, this is the height of the clearance cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." msgstr "Paramétrez ceci avec la distance verticale entre la pointe de la buse et (habituellement) les tiges du chariot de l'axe X. En d'autres termes, il s'agit de la hauteur du cylindre de dégagement autour de l'extrudeur, et elle représente la profondeur maximum à laquelle peut descendre l'extrudeur avant d'entrer en collision avec d'autres objets imprimés." -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Unprintable" msgstr "Définir non-Imprimable" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Unprintable Instance" msgstr "Définir une Instance non-Imprimable" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Définir le curseur supérieur sur le curseur actuel" -#: src/libslic3r/PrintConfig.cpp:3509 +#: src/libslic3r/PrintConfig.cpp:3714 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" "For example. loglevel=2 logs fatal, error and warning level messages." @@ -6747,63 +7775,74 @@ msgstr "" "Définit la sensibilité de journalisation. 0 : fatal, 1: erreur, 2 : avertissement, 3 : info, 4 : débogage, 5 : trace\n" "Par exemple. loglevel = 2 enregistre les messages d'erreur et d'avertissement de niveau fatal." -#: src/slic3r/GUI/BedShapeDialog.cpp:155 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 msgid "Settings" msgstr "Réglages" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Settings for height range" msgstr "Réglages pour la zone de hauteur" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/Preferences.cpp:431 +msgid "Settings in non-modal window" +msgstr "Réglages dans une fenêtre non modale" + +#: src/slic3r/GUI/ConfigManipulation.cpp:161 msgid "Shall I adjust those settings for supports?" msgstr "Dois-je ajuster ces paramètres pour les supports ?" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:88 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "Dois-je ajuster ces réglages afin d'activer le Vase Spirale ?" -#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:118 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "Dois-je ajuster ces réglages afin d'activer la tour de Nettoyage ?" -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:209 msgid "Shall I switch to rectilinear fill pattern?" msgstr "Dois-je passer au motif de remplissage rectiligne?" -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:138 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "Dois-je synchroniser les couches de support afin d'activer la Tour de Nettoyage ?" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2059 +#: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 msgid "Shape" msgstr "Forme" -#: src/slic3r/GUI/GUI_Preview.cpp:256 +#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 msgid "Shells" msgstr "Coques" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:33 +msgid "Shift + Left mouse button" +msgstr "Maj + bouton gauche de la souris" + +#: src/slic3r/GUI/GLCanvas3D.cpp:241 msgid "Shift + Left mouse button:" msgstr "Maj + Clic gauche souris :" -#: src/slic3r/GUI/GLCanvas3D.cpp:255 +#: src/slic3r/GUI/GLCanvas3D.cpp:245 msgid "Shift + Right mouse button:" msgstr "Maj + Clic droit souris :" -#: src/slic3r/GUI/GUI_Preview.cpp:231 +#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 msgid "Show" msgstr "Afficher" -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show &Configuration Folder" msgstr "Afficher le Répertoire de &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show &labels" msgstr "Afficher les &labels" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "Show about dialog" msgstr "Afficher la boîte de dialogue à propos" @@ -6811,111 +7850,127 @@ msgstr "Afficher la boîte de dialogue à propos" msgid "Show advanced settings" msgstr "Afficher les réglages avancés" -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Afficher le message d'erreur" -#: src/slic3r/GUI/Preferences.cpp:95 +#: src/slic3r/GUI/Preferences.cpp:112 msgid "Show incompatible print and filament presets" msgstr "Afficher les préréglages d'impression et de filament incompatibles" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "Show keyboard shortcuts list" msgstr "Afficher la liste des raccourcis clavier" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 +msgid "Show normal mode" +msgstr "Afficher le mode normal" + +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show object/instance labels in 3D scene" msgstr "Afficher les labels de l'objet /instance dans la scène 3D" +#: src/slic3r/GUI/Preferences.cpp:213 +msgid "Show sidebar collapse/expand button" +msgstr "Afficher le bouton Réduire/Développer de la barre latérale" + #: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show simplified settings" msgstr "Afficher les réglages simplifiés" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +msgid "Show splash screen" +msgstr "Afficher l'écran de démarrage" + +#: src/slic3r/GUI/GCodeViewer.cpp:2586 +msgid "Show stealth mode" +msgstr "Afficher le mode furtif" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 msgid "Show supports" msgstr "Afficher les supports" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "Show system information" msgstr "Afficher les informations système" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Show the 3D editing view" msgstr "Afficher la vue d'édition 3D" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Show the 3D slices preview" msgstr "Afficher la prévisualisation des tranches 3D" -#: src/slic3r/GUI/MainFrame.cpp:617 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Show the filament settings" msgstr "Afficher les réglages de filament" -#: src/libslic3r/PrintConfig.cpp:3372 +#: src/libslic3r/PrintConfig.cpp:3571 msgid "Show the full list of print/G-code configuration options." msgstr "Afficher la liste complète des options de configuration d'impression/G-code." -#: src/libslic3r/PrintConfig.cpp:3377 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Show the full list of SLA print configuration options." msgstr "Afficher la liste complète des options de configuration d'impression SLA." -#: src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 msgid "Show the list of the keyboard shortcuts" msgstr "Afficher la liste des raccourcis clavier" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Show the plater" msgstr "Afficher le plateau" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Show the print settings" msgstr "Afficher les réglages d'impression" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Show the printer settings" msgstr "Afficher les réglages de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3565 msgid "Show this help." msgstr "Afficher cette aide." -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show user configuration folder (datadir)" msgstr "Afficher le répertoire de configuration utilisateur (datadir)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Afficher/Masquer le dialogue des paramètres des périphériques 3Dconnexion" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -msgid "Show/Hide Legend" -msgstr "Afficher/Cacher la Légende" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Show/Hide Legend & Estimated printing time" +msgstr "Afficher/Masquer la légende et le temps d'impression estimé" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Show/Hide object/instance labels" msgstr "Afficher/Masquer les labels de l'objet/instance" -#: src/slic3r/GUI/GUI_App.cpp:813 src/slic3r/GUI/wxExtensions.cpp:753 +#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "Simple" -#: src/slic3r/GUI/ConfigWizard.cpp:820 +#: src/slic3r/GUI/ConfigWizard.cpp:1179 msgid "Simple mode" msgstr "Mode simple" -#: src/slic3r/GUI/GUI_App.cpp:813 +#: src/slic3r/GUI/GUI_App.cpp:1504 msgid "Simple View Mode" msgstr "Mode de Vue Simple" -#: src/slic3r/GUI/Tab.cpp:2298 src/slic3r/GUI/Tab.cpp:2306 +#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 msgid "Single extruder MM setup" msgstr "Réglage MM pour extrudeur unique" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "Single Extruder Multi Material" msgstr "Multi Material à extrudeur unique" -#: src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2101 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -6926,435 +7981,463 @@ msgstr "" "Voulez-vous modifier le diamètre pour tous les extrudeurs\n" "en utilisant la valeur du diamètre de la buse du premier extrudeur ?" -#: src/slic3r/GUI/Tab.cpp:2307 +#: src/slic3r/GUI/Tab.cpp:2476 msgid "Single extruder multimaterial parameters" msgstr "Paramètres multimatériaux pour extrudeur unique" -#: src/slic3r/GUI/BedShapeDialog.cpp:77 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 -#: src/slic3r/GUI/Tab.cpp:2324 +#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3689 +msgid "Single instance mode" +msgstr "Mode d'instance unique" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:2493 msgid "Size" msgstr "Taille" -#: src/slic3r/GUI/Tab.cpp:1797 src/slic3r/GUI/Tab.cpp:2041 +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 msgid "Size and coordinates" msgstr "Taille et coordonnées" -#: src/slic3r/GUI/BedShapeDialog.cpp:78 +#: src/slic3r/GUI/BedShapeDialog.cpp:110 msgid "Size in X and Y of the rectangular plate." msgstr "Taille en X et Y du plateau rectangulaire." -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1111 -#: src/libslic3r/ExtrusionEntity.cpp:318 +#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 msgid "Skirt" msgstr "Jupe" -#: src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Skirt and brim" msgstr "Jupe et bordure" -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "Skirt height" msgstr "Hauteur de la jupe" -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Skirt Loops" msgstr "Boucles de la Jupe" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1334 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1181 msgid "SLA gizmo keyboard shortcuts" msgstr "Raccourcis clavier pour le gizmo SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1058 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:924 msgid "SLA gizmo turned off" msgstr "Gizmo SLA désactivé" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1017 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 msgid "SLA gizmo turned on" msgstr "Gizmo SLA activé" -#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1524 +#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 msgid "SLA material" msgstr "Matériau SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Material Profiles Selection" msgstr "Sélection des Profils Matériaux SLA" -#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2613 src/libslic3r/PrintConfig.cpp:2614 msgid "SLA material type" msgstr "Type de matériau SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Materials" msgstr "Matériaux SLA" -#: src/slic3r/GUI/Preset.cpp:1523 +#: src/libslic3r/Preset.cpp:1302 msgid "SLA print" msgstr "Impression SLA" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "SLA print material notes" msgstr "Notes concernant le matériau d'impression SLA" -#: src/slic3r/GUI/Plater.cpp:817 +#: src/slic3r/GUI/Plater.cpp:692 msgid "SLA print settings" msgstr "Réglages d'impression SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:996 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 msgid "SLA Support Points" msgstr "Points de Support SLA" -#: src/slic3r/GUI/GLCanvas3D.cpp:687 -msgid "SLA supports outside the print area were detected" -msgstr "SLA supports détectés en dehors de la zone d'impression" +#: src/slic3r/GUI/GLCanvas3D.cpp:635 +msgid "SLA supports outside the print area were detected." +msgstr "Des supports SLA en dehors de la zone d'impression ont été détectés." -#: src/slic3r/GUI/ConfigWizard.cpp:1530 +#: src/slic3r/GUI/ConfigWizard.cpp:1931 msgid "SLA Technology Printers" msgstr "Imprimantes Technologie SLA" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Slab" -msgstr "Slab" +msgstr "Pavé" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." msgstr "Slic3r peut envoyer des fichiers G-codes vers un hôte d'imprimante. Ce champ doit contenir le type d'hôte." -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:107 msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." msgstr "Slic3r peut envoyer des fichiers G-code à un hôte d'impression. Ce champ doit contenir la clé d'API ou le mot de passe requis pour l'authentification." -#: src/libslic3r/PrintConfig.cpp:98 +#: src/libslic3r/PrintConfig.cpp:100 msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance." msgstr "Slic3r peut télécharger des fichiers G-code vers un hôte d'impression. Ce champ doit contenir le nom d'hôte, l'adresse IP ou l'URL de l'instance hôte d'impression." -#: src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1407 msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r ne descendra pas en-dessous de cette vitesse." -#: src/libslic3r/PrintConfig.cpp:3359 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Slice" msgstr "Découper" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Slice a file into a G-code" msgstr "Découper un fichier en G-code" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Slice a file into a G-code, save as" msgstr "Découper un fichier en G-code, enregistrer sous" -#: src/libslic3r/PrintConfig.cpp:87 +#: src/libslic3r/PrintConfig.cpp:89 msgid "Slice gap closing radius" msgstr "Découper le rayon de fermeture de l'espacement" -#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5110 +#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5237 msgid "Slice now" msgstr "Découper maintenant" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Découper le modèle et exporter les couches d'impression SLA en tant que PNG." -#: src/libslic3r/PrintConfig.cpp:3354 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Slice the model and export toolpaths as G-code." msgstr "Découper le modèle et exporter les parcours en tant que G-code." -#: src/libslic3r/PrintConfig.cpp:3360 +#: src/libslic3r/PrintConfig.cpp:3559 msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." msgstr "Découper le modèle en tant que FFF ou SLA en fonction de la valeur de configuration de la printer_technology." -#: src/slic3r/GUI/Plater.cpp:216 +#: src/slic3r/GUI/Plater.cpp:222 msgid "Sliced Info" msgstr "Informations de découpage" -#: src/slic3r/GUI/MainFrame.cpp:847 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5107 src/slic3r/GUI/Tab.cpp:1221 -#: src/slic3r/GUI/Tab.cpp:3662 +#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 +#: src/slic3r/GUI/Tab.cpp:4081 msgid "Slicing" msgstr "Découpe" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:134 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:184 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 msgid "Slicing complete" -msgstr "Découpe annulée" +msgstr "Découpe terminée" -#: src/libslic3r/SLAPrint.cpp:760 +#: src/libslic3r/SLAPrint.cpp:780 msgid "Slicing done" msgstr "Découpe effectuée" -#: src/slic3r/GUI/MainFrame.cpp:874 +#: src/slic3r/GUI/MainFrame.cpp:1575 msgid "Slicing Done!" msgstr "Découpe Effectuée !" -#: src/libslic3r/SLAPrintSteps.cpp:245 +#: src/slic3r/GUI/NotificationManager.cpp:751 +msgid "Slicing finished." +msgstr "Découpage terminé." + +#: src/libslic3r/SLAPrintSteps.cpp:247 msgid "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "La découpe a du être interrompue du fait d'une erreur interne : index de découpage inconsistant." -#: src/libslic3r/SLAPrintSteps.cpp:45 +#: src/libslic3r/SLAPrintSteps.cpp:46 msgid "Slicing model" msgstr "Découpe du modèle" -#: src/libslic3r/SLAPrintSteps.cpp:49 +#: src/libslic3r/SLAPrintSteps.cpp:50 msgid "Slicing supports" msgstr "Découpe des supports" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Slow" msgstr "Lent" -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "Slow down if layer print time is below" msgstr "Ralentir si le temps d'impression de la couche est inférieur à" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "Slow tilt" msgstr "Inclinaison lente" -#: src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Small perimeters" msgstr "Périmètres courts" -#: src/slic3r/GUI/GLCanvas3D.cpp:288 +#: src/libslic3r/PrintConfig.cpp:2801 +msgid "Small pillar diameter percent" +msgstr "Pourcentage de pilier petit diamètre" + +#: src/slic3r/GUI/GLCanvas3D.cpp:274 msgid "Smooth" msgstr "Lisse" -#: src/slic3r/GUI/GLCanvas3D.cpp:258 +#: src/slic3r/GUI/GLCanvas3D.cpp:247 msgid "Smoothing" msgstr "Lissage" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Snapshot name" msgstr "Nom de l'instantané" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Software &Releases" msgstr "Softwa&re Publications" -#: src/slic3r/GUI/PresetHints.cpp:184 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "remplissage solide" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1882 msgid "Solid infill" msgstr "Remplissage solide" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1859 msgid "Solid infill every" msgstr "Remplissage solide toutes les" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Solid infill extruder" msgstr "Extrudeur pour le remplissage solide" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill threshold area" msgstr "Surface de seuil pour le remplissage solide" -#: src/slic3r/GUI/Tab.cpp:1065 src/libslic3r/PrintConfig.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 msgid "Solid layers" msgstr "Couches solides" -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:790 msgid "Soluble material" msgstr "Matériau soluble" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Soluble material is most likely used for a soluble support." msgstr "Il est probable qu'un matériau soluble soit utilisé pour un support soluble." -#: src/libslic3r/PrintConfig.cpp:937 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:735 +msgid "Some fields are too long to fit. Right mouse click reveals the full text." +msgstr "Certains champs sont trop longs pour s'afficher. Un clic droit de la souris révèle le texte intégral." + +#: src/libslic3r/PrintConfig.cpp:981 msgid "Some G/M-code commands, including temperature control and others, are not universal. Set this option to your printer's firmware to get a compatible output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any extrusion value at all." msgstr "Certaines commandes G/M-code, y compris le contrôle de la température ainsi que d'autres, ne sont pas universelles. Paramétrez cette option dans le firmware de votre imprimante pour obtenir une sortie compatible. L'option \"Pas d'extrusion\" empêche complètement PrusaSlicer d'exporter toute valeur d'extrusion." -#: src/slic3r/GUI/GLCanvas3D.cpp:688 -msgid "Some objects are not visible" -msgstr "Certains objets ne sont pas visibles" +#: src/slic3r/GUI/Plater.cpp:2309 +#, c-format +msgid "" +"Some object(s) in file %s looks like saved in inches.\n" +"Should I consider them as a saved in inches and convert them?" +msgstr "" +"Certains objets du fichier %s semblent être enregistrés en pouces.\n" +"Dois-je les considérer comme enregistrés en pouces et les convertir ?" -#: src/libslic3r/Print.cpp:1226 +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "Some objects are not visible." +msgstr "Certains objets ne sont pas visibles." + +#: src/libslic3r/Print.cpp:1252 msgid "Some objects are too close; your extruder will collide with them." msgstr "Certains objets sont trop proches ; votre extrudeur va entrer en collision avec eux." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1254 msgid "Some objects are too tall and cannot be printed without extruder collisions." msgstr "Certains objets sont trop grands et ne peuvent pas être imprimés sans collision avec l'extrudeur." -#: src/libslic3r/PrintConfig.cpp:2824 +#: src/libslic3r/PrintConfig.cpp:2988 msgid "Some objects can get along with a few smaller pads instead of a single big one. This parameter defines how far the center of two smaller pads should be. If theyare closer, they will get merged into one pad." msgstr "Certains objets peuvent s'accommoder de quelques petits socles au lieu d'un seul grand. Ce paramètre définit à quelle distance le centre de deux petits socles devrait se trouver. S'ils sont proches, ils seront fusionnés en un seul socle." -#: src/libslic3r/PrintConfig.cpp:2187 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." msgstr "Certaines imprimantes ou certains réglages d'imprimante peuvent rencontrer des difficultés pour imprimer avec une hauteur de couche variable. Activé par défaut." -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2126 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "Espacement entre les lignes d'interface. Mettez à zéro pour obtenir une interface solide." -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:1155 +msgid "Spacing between ironing passes" +msgstr "Espacement entre les passes de lissage" + +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Spacing between support material lines." msgstr "Espacement entre les lignes des supports." -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:616 -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 -#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 msgid "Speed" msgstr "Vitesse" -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Vitesse (baud) du port USB/série pour la connexion à l'imprimante." - -#: src/libslic3r/GCode/PreviewData.cpp:351 +#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 msgid "Speed (mm/s)" msgstr "Vitesse (mm/s)" -#: src/libslic3r/PrintConfig.cpp:920 +#: src/libslic3r/PrintConfig.cpp:964 msgid "Speed for filling small gaps using short zigzag moves. Keep this reasonably low to avoid too much shaking and resonance issues. Set zero to disable gaps filling." msgstr "Vitesse pour combler de petits interstices avec de courts mouvements en zigzag. Gardez un réglage relativement lent afin d'éviter les problèmes de vibration et de résonance. Réglez sur zéro pour désactiver le remplissage d'interstices." -#: src/slic3r/GUI/Tab.cpp:1158 +#: src/slic3r/GUI/Tab.cpp:1488 msgid "Speed for non-print moves" msgstr "Vitesse pour les déplacements sans impression" -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "Vitesse pour les périmètres (contours, parois verticales). Réglez sur zéro pour un ajustement automatique." -#: src/slic3r/GUI/Tab.cpp:1146 +#: src/slic3r/GUI/Tab.cpp:1475 msgid "Speed for print moves" msgstr "Vitesse pour les déplacements d'impression" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "Speed for printing bridges." msgstr "Vitesse d'impression des ponts." -#: src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:1884 msgid "Speed for printing solid regions (top/bottom/internal horizontal shells). This can be expressed as a percentage (for example: 80%) over the default infill speed above. Set to zero for auto." msgstr "Vitesse pour imprimer des zones solides (supérieures/inférieures/parois horizontales internes). Peut être exprimée en pourcentage (par exemple: 80%) de la vitesse de remplissage par défaut susmentionnée. Réglez sur zéro pour un ajustement automatique." -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." msgstr "Vitesse d'impression des couches d'interface des supports. Si exprimée en pourcentage (par exemple 50%), elle sera calculée à partir de la vitesse d'impression des supports." -#: src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Speed for printing support material." msgstr "Vitesse d'impression du support." -#: src/libslic3r/PrintConfig.cpp:1049 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "Vitesse pour imprimer le remplissage interne. Réglez sur zéro pour un ajustement automatique." -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2262 msgid "Speed for printing top solid layers (it only applies to the uppermost external layers and not to their internal solid layers). You may want to slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." msgstr "Vitesse pour imprimer les couches solides supérieures (ne s'applique qu'aux couches externes les plus hautes et pas aux couches internes solides). Vous voudrez peut-être abaisser cette vitesse afin d'avoir une finition de surface plus nette. Peut être exprimé en pourcentage (par exemple: 80%) de la vitesse de remplissage solide susmentionnée. Réglez sur zéro pour un ajustement automatique." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2296 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "Vitesse pour les déplacements (trajet entre deux points d'extrusion distants)." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Speed of the first cooling move" msgstr "Vitesse du premier mouvement de refroidissement" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:714 msgid "Speed of the last cooling move" msgstr "Vitesse du dernier mouvement de refroidissement" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:652 msgid "Speed used at the very beginning of loading phase." msgstr "Vitesse utilisée au tout début de la phase de chargement." -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Speed used for loading the filament on the wipe tower." msgstr "Vitesse utilisée pour charger le filament sur la tour de nettoyage." -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:660 msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." msgstr "Vitesse utilisée pour décharger le filament sur la tour de nettoyage (n'affecte pas l'étape initiale de déchargement juste après l'expulsion)." -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Speed used for unloading the tip of the filament immediately after ramming." msgstr "Vitesse utilisée pour décharger l'extrémité du filament juste après l'expulsion." -#: src/slic3r/GUI/Mouse3DController.cpp:296 +#: src/slic3r/GUI/Mouse3DController.cpp:279 msgid "Speed:" msgstr "Vitesse:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Sphere" msgstr "Sphère" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Spiral vase" msgstr "Mode de vase spirale" -#: src/slic3r/GUI/ConfigManipulation.cpp:90 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Spiral Vase" msgstr "Vase Spirale" -#: src/slic3r/GUI/Plater.cpp:4019 src/slic3r/GUI/Plater.cpp:4034 -#: src/slic3r/GUI/Plater.cpp:4048 src/libslic3r/PrintConfig.cpp:3471 +#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 msgid "Split" msgstr "Scinder" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:3939 msgid "Split the selected object" msgstr "Scinder l'objet sélectionné" -#: src/slic3r/GUI/Plater.cpp:4014 src/slic3r/GUI/Plater.cpp:4034 +#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 msgid "Split the selected object into individual objects" msgstr "Scinder l'objet sélectionné en objets individuels" -#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4048 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 msgid "Split the selected object into individual sub-parts" -msgstr "Scinder l'objet sélectionné en sous-parties individuelles" +msgstr "Scinder l'objet sélectionné en sous-pièces individuelles" -#: src/slic3r/GUI/GLCanvas3D.cpp:4550 +#: src/slic3r/GUI/GLCanvas3D.cpp:4916 msgid "Split to objects" msgstr "Diviser en objets individuels" -#: src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Split to Objects" msgstr "Diviser en Objets" -#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1487 +#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" -msgstr "Scinder en parties" +msgstr "Scinder en pièces" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2274 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Split to Parts" -msgstr "Scinder en Parties" +msgstr "Scinder en Pièces" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "Standard" msgstr "Standard" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:884 msgid "Stars" msgstr "Étoiles" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "Start a new project" msgstr "Démarrer un nouveau projet" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "Hauteur de début" -#: src/slic3r/GUI/Tab.cpp:1528 src/slic3r/GUI/Tab.cpp:1976 -#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 msgid "Start G-code" msgstr "G-code de début" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "Start new slicing process" msgstr "Démarrer un nouveau processus de découpe" @@ -7362,7 +8445,35 @@ msgstr "Démarrer un nouveau processus de découpe" msgid "Start printing after upload" msgstr "Lancer l'impression après le téléchargement" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Start the application" +msgstr "Démarrer l'application" + +#: src/slic3r/GUI/GUI_App.cpp:386 +msgid "" +"Starting with %1% 2.3, configuration directory on Linux has changed (according to XDG Base Directory Specification) to \n" +"%2%.\n" +"\n" +"This directory did not exist yet (maybe you run the new version for the first time).\n" +"However, an old %1% configuration directory was detected in \n" +"%3%.\n" +"\n" +"Consider moving the contents of the old directory to the new location in order to access your profiles, etc.\n" +"Note that if you decide to downgrade %1% in future, it will use the old location again.\n" +"\n" +"What do you want to do now?" +msgstr "" +"À partir de %1% 2.3, le répertoire de configuration sous Linux a été modifié (selon la XDG Base Directory Specification) en %2%.\n" +"\n" +"Ce répertoire n'existait pas encore (peut-être que vous exécutez la nouvelle version pour la première fois).\n" +"Cependant, un ancien répertoire de configuration %1% a été détecté dans %3%.\n" +"\n" +"Envisagez de déplacer le contenu de l'ancien répertoire vers le nouvel emplacement afin d'accéder à vos profils, etc.\n" +"Notez que si vous décidez de rétrograder %1% à l'avenir, il utilisera à nouveau l'ancien emplacement.\n" +"\n" +"Que voulez-vous faire maintenant ?" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 msgid "Status" msgstr "État" @@ -7370,166 +8481,160 @@ msgstr "État" msgid "Status:" msgstr "État :" -#: src/slic3r/GUI/Tab.cpp:2209 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 msgid "Stealth" msgstr "Mode silencieux" -#: src/slic3r/GUI/Plater.cpp:1291 +#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 msgid "stealth mode" msgstr "mode silencieux" -#: src/slic3r/GUI/Plater.cpp:4985 +#: src/slic3r/GUI/GCodeViewer.cpp:2557 +msgid "Stealth mode" +msgstr "Mode furtif" + +#: src/slic3r/GUI/Plater.cpp:5118 #, c-format msgid "STL file exported to %s" msgstr "Fichier STL exporté vers %s" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Stop at height" msgstr "Hauteur d'arrêt" -#: src/slic3r/GUI/Tab.cpp:1693 src/slic3r/GUI/Tab.cpp:1928 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "Réussi !" -#: src/slic3r/GUI/PresetHints.cpp:203 +#: src/slic3r/GUI/Plater.cpp:2047 +#, c-format +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Démonté avec succès. Le périphérique %s(% s) peut maintenant être retiré en toute sécurité de l'ordinateur." + +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "support" -#: src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "Support base diameter" msgstr "Diamètre de la base du support" -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base height" msgstr "Hauteur de la base du support" -#: src/libslic3r/PrintConfig.cpp:2711 +#: src/libslic3r/PrintConfig.cpp:2875 msgid "Support base safety distance" msgstr "Distance de sécurité de la base du support" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Blocker" msgstr "Bloqueur de Support" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/libslic3r/PrintConfig.cpp:895 +msgid "Support Cubic" +msgstr "Support Cubique" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Enforcer" msgstr "Générateur de Support" -#: src/slic3r/GUI/ConfigManipulation.cpp:163 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Support Generator" msgstr "Générateur de support" -#: src/slic3r/GUI/Tab.cpp:3608 +#: src/slic3r/GUI/Tab.cpp:4018 msgid "Support head" msgstr "Tête du support" -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Support head front diameter" -msgstr "Diamètre avant de la tête du support" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Support head penetration" -msgstr "Pénétration de la tête du support" - -#: src/libslic3r/PrintConfig.cpp:2638 -msgid "Support head width" -msgstr "Largeur de la tête du support" - -#: src/slic3r/GUI/PresetHints.cpp:213 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "interface du support" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/GUI_Preview.cpp:246 -#: src/slic3r/GUI/Tab.cpp:1120 src/slic3r/GUI/Tab.cpp:1121 -#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 -#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 -#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 -#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 -#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 -#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 +#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:95 +#: src/slic3r/GUI/GUI_ObjectList.cpp:654 src/slic3r/GUI/GUI_Preview.cpp:311 +#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 +#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 +#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "Support material" msgstr "Supports" -#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 -#: src/libslic3r/PrintConfig.cpp:1991 +#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 +#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 msgid "Support material interface" msgstr "Interface des supports" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." msgstr "Le support ne sera pas généré pour les surplombs dont l'inclinaison (90° = vertical) dépasse le seuil défini. Autrement dit, cette valeur représente l'inclinaison horizontale maximum (mesurée à partir du plan horizontal) que vous pouvez imprimer sans support. Réglez sur zéro pour une détection automatique (recommandé)." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Support material/raft interface extruder" msgstr "Extrudeur pour l'interface des supports/du radeau" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "Support material/raft/skirt extruder" msgstr "Extrudeur pour support/raft/jupe" -#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 -#: src/libslic3r/PrintConfig.cpp:2674 +#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2838 msgid "Support on build plate only" msgstr "Support sur le plateau uniquement" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:762 msgid "Support parameter change" msgstr "Changement des paramètres de support" -#: src/slic3r/GUI/Tab.cpp:3613 +#: src/slic3r/GUI/Tab.cpp:4023 msgid "Support pillar" msgstr "Pilier de support" -#: src/libslic3r/PrintConfig.cpp:2658 -msgid "Support pillar connection mode" -msgstr "Mode de connexion du pilier de support" - -#: src/libslic3r/PrintConfig.cpp:2648 -msgid "Support pillar diameter" -msgstr "Diamètre du pilier de support" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -#: src/libslic3r/PrintConfig.cpp:2764 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/libslic3r/PrintConfig.cpp:2928 msgid "Support points density" msgstr "Densité des points de support" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1196 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "Support points edit" msgstr "Éditer les points de support" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:624 -#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3604 -#: src/slic3r/GUI/Tab.cpp:3605 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 -#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2682 -#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2703 -#: src/libslic3r/PrintConfig.cpp:2712 src/libslic3r/PrintConfig.cpp:2725 -#: src/libslic3r/PrintConfig.cpp:2735 src/libslic3r/PrintConfig.cpp:2744 -#: src/libslic3r/PrintConfig.cpp:2754 src/libslic3r/PrintConfig.cpp:2765 -#: src/libslic3r/PrintConfig.cpp:2773 +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 +#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 +#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 +#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 +#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 msgid "Supports" msgstr "Supports" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "supports and pad" msgstr "supports et socle" -#: src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1185 msgid "Supports remaining times" msgstr "Temps de support restant" -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports stealth mode" msgstr "Supporte le mode silencieux" -#: src/slic3r/GUI/ConfigManipulation.cpp:159 +#: src/slic3r/GUI/ConfigManipulation.cpp:158 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters" @@ -7537,44 +8642,60 @@ msgstr "" "Les supports fonctionnent mieux, si la fonctionnalité suivante est activée :\n" "- Détecter les périmètres de pontage" -#: src/slic3r/GUI/Preferences.cpp:87 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Supprimer les préréglages \" - par défaut - \"" -#: src/slic3r/GUI/Preferences.cpp:89 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." msgstr "Supprimer les préréglages \" - par défaut - \" dans les choix Impression / Filament / Imprimante une fois qu'il y a d'autres préréglages valides disponibles." -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/Mouse3DController.cpp:318 +msgid "Swap Y/Z axes" +msgstr "Permuter les axes Y/Z" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Switch between Editor/Preview" +msgstr "Basculer entre l'éditeur/l'aperçu" + +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Switch code to Change extruder" msgstr "Code de changement pour Changer l'extrudeur" -#: src/slic3r/GUI/DoubleSlider.cpp:1179 +#: src/slic3r/GUI/DoubleSlider.cpp:1306 msgid "Switch code to Color change (%1%) for:" msgstr "Code de changement pour Changer de couleur (%1%) pour :" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Switch to 3D" msgstr "Basculer vers la 3D" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1376 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1223 msgid "Switch to editing mode" msgstr "Basculer vers le mode édition" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Switch to Preview" msgstr "Basculer vers la Prévisualisation" -#: src/slic3r/GUI/wxExtensions.cpp:703 +#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Switch to Settings" +msgstr "Basculer dans le Réglages" + +#: src/slic3r/GUI/wxExtensions.cpp:623 #, c-format msgid "Switch to the %s mode" msgstr "Basculer vers le mode %s" -#: src/slic3r/GUI/GUI_App.cpp:882 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 +msgid "Switching Presets: Unsaved Changes" +msgstr "Changement de préréglages : modifications non enregistrées" + +#: src/slic3r/GUI/GUI_App.cpp:1608 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." @@ -7590,65 +8711,72 @@ msgstr "" "\n" "Voulez-vous continuer ?" -#: src/slic3r/GUI/Tab.cpp:1014 +#: src/slic3r/GUI/Tab.cpp:1332 msgid "symbolic profile name" msgstr "nom de profil symbolique" -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." msgstr "Synchroniser les couches du support avec les couches d'impression de l'objet. Cela est utile pour les imprimantes multi-matériaux, pour lesquelles le changement d'extrudeur est onéreux." -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "Synchronize with object layers" msgstr "Synchroniser avec les couches de l'objet" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "System &Info" msgstr "&Informations sur le Système" -#: src/slic3r/GUI/SysInfoDialog.cpp:78 +#: src/slic3r/GUI/SysInfoDialog.cpp:90 src/slic3r/GUI/SysInfoDialog.cpp:92 msgid "System Information" msgstr "Informations sur le Système" -#: src/slic3r/GUI/Preset.cpp:1109 src/slic3r/GUI/Preset.cpp:1164 -#: src/slic3r/GUI/Preset.cpp:1242 src/slic3r/GUI/Preset.cpp:1284 -#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1672 +#: src/slic3r/GUI/PresetComboBoxes.cpp:188 +#: src/slic3r/GUI/PresetComboBoxes.cpp:226 +#: src/slic3r/GUI/PresetComboBoxes.cpp:724 +#: src/slic3r/GUI/PresetComboBoxes.cpp:774 +#: src/slic3r/GUI/PresetComboBoxes.cpp:886 +#: src/slic3r/GUI/PresetComboBoxes.cpp:930 msgid "System presets" msgstr "Préréglages système" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Take Configuration &Snapshot" msgstr "Capturer un in&stantané de la configuration" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Taking configuration snapshot" msgstr "Instantané de la configuration en cours" -#: src/slic3r/GUI/Tab.cpp:1433 src/libslic3r/PrintConfig.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:1779 msgid "Temperature" msgstr "Température" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1919 msgid "Temperature difference to be applied when an extruder is not active. Enables a full-height \"sacrificial\" skirt on which the nozzles are periodically wiped." msgstr "Différence de température devant être appliquée quand un extrudeur n'est pas actif. Permet la génération d'un contour complet \"sacrificiel\" sur lequel les buses sont nettoyées régulièrement." -#: src/libslic3r/PrintConfig.cpp:1803 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "Temperature variation" msgstr "Variation de température" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Temperatures" msgstr "Températures" -#: src/slic3r/GUI/Tab.cpp:1677 src/slic3r/GUI/Tab.cpp:1915 +#: src/slic3r/GUI/Tab.cpp:2215 +msgid "Template Custom G-code" +msgstr "G-code de modèle personnalisé" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 msgid "Test" msgstr "Test" -#: src/slic3r/GUI/BedShapeDialog.cpp:172 +#: src/slic3r/GUI/BedShapeDialog.cpp:315 msgid "Texture" msgstr "Texture" -#: src/slic3r/GUI/ConfigManipulation.cpp:208 +#: src/slic3r/GUI/ConfigManipulation.cpp:207 msgid "The %1% infill pattern is not supposed to work at 100%% density." msgstr "Le modèle de remplissage %1% n'est pas censé fonctionner avec une densité de 100%%." @@ -7666,131 +8794,148 @@ msgstr "" "L'équipement %s n'a pas été trouvé.\n" "Si l'équipement est connecté, veuillez appuyer sur le bouton Reset à côté du connecteur USB ..." -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1238 msgid "The current custom preset will be detached from the parent system preset." msgstr "Le préréglage personnalisé actuel sera détaché du préréglage système parent." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:925 msgid "" "The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" "Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" "once the rotation is embedded into the object coordinates." msgstr "L'objet actuel est incliné (les angles de rotation ne sont pas des multiples de 90 °). La mise à l'échelle non uniforme des objets inclinés est possible dans le système de coordonnées seulement quand la rotation est incorporée aux coordonnées de l'objet." -#: src/libslic3r/PrintConfig.cpp:2726 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "The default angle for connecting support sticks and junctions." msgstr "L'angle par défaut pour connecter les tiges de support et les jonctions." -#: src/libslic3r/SLAPrint.cpp:631 +#: src/libslic3r/SLAPrint.cpp:645 msgid "The endings of the support pillars will be deployed on the gap between the object and the pad. 'Support base safety distance' has to be greater than the 'Pad object gap' parameter to avoid this." msgstr "Les extrémités des piliers de support seront déployées dans l'espace entre l'objet et le socle. La 'Distance de sécurité de base du support' doit être plus grande que le paramètre 'Espace de l'objet socle' pour éviter cela." -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:525 msgid "The extruder to use (unless more specific extruder settings are specified). This value overrides perimeter and infill extruders, but not the support extruders." msgstr "L'extrudeur à utiliser (à moins que d'autres réglages d'extrudeur plus spécifiques soient spécifiés). Cette valeur se substitue aux extrudeurs de périmètre et de remplissage, mais pas aux extrudeurs de support." -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1047 msgid "The extruder to use when printing infill." msgstr "L'extrudeur à utiliser pour imprimer le remplissage." -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "L'extrudeur à utiliser pour imprimer les périmètres et la bordure. Le premier extrudeur a le numéro 1." -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "The extruder to use when printing solid infill." msgstr "L'extrudeur à utiliser pour imprimer les remplissages solides." -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:2108 msgid "The extruder to use when printing support material interface (1+, 0 to use the current extruder to minimize tool changes). This affects raft too." msgstr "L'extrudeur à utiliser pour imprimer les intercalaires du support (1+,0 pour utiliser l'extrudeur actuel et limiter les changements d'outil). Cela affecte également le raft." -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." msgstr "L'extrudeur à utiliser pour imprimer des supports, du raft ou des contours (1+,0 pour utiliser l'extrudeur actuel et limiter les changements d'outil)." -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:763 msgid "The filament material type for use in custom G-codes." msgstr "Le type de matériau de filament à utiliser dans les G-codes personnalisés." -#: src/libslic3r/PrintConfig.cpp:3494 +#: src/libslic3r/PrintConfig.cpp:3693 msgid "The file where the output will be written (if not specified, it will be based on the input file)." msgstr "Le fichier dans lequel la sortie sera écrite (si rien n'est spécifié, il sera basé sur le fichier d'entrée)" -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1195 msgid "The firmware supports stealth mode" msgstr "Le firmware est compatible avec le mode silencieux" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:122 msgid "The first layer will be shrunk in the XY plane by the configured value to compensate for the 1st layer squish aka an Elephant Foot effect." msgstr "La première couche sera réduite sur le plan XY selon la valeur configurée afin de compenser l'écrasement de la première couche également connu sous le nom d'effet Pied d'Éléphant." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3457 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/SavePresetDialog.cpp:117 msgid "the following characters are not allowed:" msgstr "les caractères suivant ne sont pas autorisés :" -#: src/slic3r/GUI/ConfigWizard.cpp:1830 +#: src/slic3r/GUI/ConfigWizard.cpp:2257 msgid "The following FFF printer models have no filament selected:" msgstr "Les modèles d'imprimantes FFF suivants n'ont aucun filament sélectionné :" -#: src/slic3r/GUI/ConfigWizard.cpp:1848 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1004 +msgid "The following presets were modified:" +msgstr "Les préréglages suivants ont été modifiés :" + +#: src/slic3r/GUI/ConfigWizard.cpp:2275 msgid "The following SLA printer models have no materials selected:" msgstr "Les modèles d'imprimantes SLA suivants n'ont aucun matériau sélectionné :" -#: src/slic3r/GUI/Tab.cpp:3461 +#: src/slic3r/GUI/SavePresetDialog.cpp:125 msgid "the following suffix is not allowed:" msgstr "le suffixe suivant n'est pas autorisé :" -#: src/libslic3r/PrintConfig.cpp:2871 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "The gap between the object bottom and the generated pad in zero elevation mode." msgstr "Espace entre le bas de l'objet et le socle généré en mode élévation zéro." -#: src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "The height of the pillar base cone" msgstr "La hauteur du cône de la base du pilier" -#: src/slic3r/GUI/DoubleSlider.cpp:1922 +#: src/slic3r/GUI/DoubleSlider.cpp:2140 msgid "The last color change data was saved for a multi extruder printing with tool changes for whole print." msgstr "Les dernières données de changement de couleur ont été enregistrées pour une impression multi-extrudeur avec des changements d'outils pour l'impression entière." -#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 msgid "The last color change data was saved for a multi extruder printing." msgstr "Les dernières données de changement de couleur ont été enregistrées pour une impression multi-extrudeur." -#: src/slic3r/GUI/DoubleSlider.cpp:1899 +#: src/slic3r/GUI/DoubleSlider.cpp:2118 msgid "The last color change data was saved for a single extruder printing." msgstr "Les dernières données de changement de couleur ont été sauvegardées une vue d'une impression avec extrudeur simple." -#: src/libslic3r/PrintConfig.cpp:2745 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." msgstr "La distance maximum entre deux piliers pour qu'ils soient reliés. Une valeur de zéro empêchera les piliers en cascade." -#: src/libslic3r/PrintConfig.cpp:2736 +#: src/libslic3r/PrintConfig.cpp:2900 msgid "The max length of a bridge" msgstr "La longueur maximum d'un pont" -#: src/libslic3r/PrintConfig.cpp:2714 +#: src/libslic3r/PrintConfig.cpp:2878 msgid "The minimum distance of the pillar base from the model in mm. Makes sense in zero elevation mode where a gap according to this parameter is inserted between the model and the pad." msgstr "Distance minimum entre la base du pilier et le modèle en mm. Utile en mode élévation zéro où un espace correspondant à ce paramètre est inséré entre le modèle et le socle." -#: src/libslic3r/PrintConfig.cpp:185 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "The name cannot be empty." +msgstr "Le nom ne peut pas être vide." + +#: src/libslic3r/PrintConfig.cpp:219 msgid "The number of bottom solid layers is increased above bottom_solid_layers if necessary to satisfy minimum thickness of bottom shell." msgstr "Le nombre de couches solides inférieures est augmenté au-dessus de bottom_solid_layers si nécessaire pour satisfaire l'épaisseur minimale de la coque inférieure." -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2286 msgid "The number of top solid layers is increased above top_solid_layers if necessary to satisfy minimum thickness of top shell. This is useful to prevent pillowing effect when printing with variable layer height." msgstr "Le nombre de couches solides supérieures est augmenté au-dessus de top_solid_layers si nécessaire pour satisfaire l'épaisseur minimale de la coque supérieure. Ceci est utile pour éviter l'effet de capitonnage lors de l'impression avec une hauteur de couche variable." -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/slic3r/GUI/Plater.cpp:2326 +msgid "The object appears to be saved in inches" +msgstr "L'objet semble être enregistré en pouces" + +#: src/libslic3r/PrintConfig.cpp:2420 msgid "The object will be grown/shrunk in the XY plane by the configured value (negative = inwards, positive = outwards). This might be useful for fine-tuning hole sizes." msgstr "L'objet sera agrandi/réduit sur les plans XY selon la valeur indiquée (négatif = réduit, positif = agrandi). Ce réglage peut être utile pour un réglage fin des tailles de trous." -#: src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1611 msgid "The object will be raised by this number of layers, and support material will be generated under it." msgstr "L'objet sera surélevé de ce nombre de couches, et du support sera généré en dessous." -#: src/libslic3r/PrintConfig.cpp:2424 +#: src/libslic3r/PrintConfig.cpp:2803 +msgid "The percentage of smaller pillars compared to the normal pillar diameter which are used in problematic areas where a normal pilla cannot fit." +msgstr "Le pourcentage de piliers plus petits par rapport au diamètre de pilier normal qui sont utilisés dans les zones problématiques où un pilier normal ne peut pas rentrer." + +#: src/libslic3r/PrintConfig.cpp:2567 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -7800,39 +8945,51 @@ msgstr "" "Si la zone d'impression excède la valeur spécifiée,\n" "alors une inclinaison lente sera appliquée, sinon - une inclinaison rapide" -#: src/slic3r/GUI/GUI_App.cpp:932 -msgid "The presets on the following tabs were modified" -msgstr "Les préréglages des onglets suivants ont été modifiés" +#: src/slic3r/GUI/Tab.cpp:3430 +msgid "The physical printer(s) below is based on the preset, you are going to delete." +msgstr "La/les imprimante(s) physique(s) ci-dessous sont basées sur le préréglage que vous allez supprimer." -#: src/libslic3r/PrintConfig.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:3438 +msgid "The physical printer(s) below is based only on the preset, you are going to delete." +msgstr "Les imprimantes physiques ci-dessous sont basées uniquement sur le préréglage que vous allez supprimer." + +#: src/slic3r/GUI/GUI_App.cpp:1676 +msgid "The preset(s) modifications are successfully saved" +msgstr "Les modifications des préréglages sont enregistrées avec succès" + +#: src/libslic3r/PrintConfig.cpp:1988 msgid "The printer multiplexes filaments into a single hot end." msgstr "L'imprimante multiplexe les filaments vers une seule tête d'extrusion." -#: src/libslic3r/Format/3mf.cpp:1630 +#: src/libslic3r/Format/3mf.cpp:1667 msgid "The selected 3mf file has been saved with a newer version of %1% and is not compatible." msgstr "Le fichier 3mf sélectionné a été enregistré avec une version plus récente de %1% et n'est pas compatible." -#: src/libslic3r/Format/AMF.cpp:934 +#: src/libslic3r/Format/AMF.cpp:955 msgid "The selected amf file has been saved with a newer version of %1% and is not compatible." msgstr "Le fichier amf sélectionné a été enregistré avec une version plus récente de %1% et n'est pas compatible." -#: src/slic3r/GUI/BedShapeDialog.cpp:513 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "The selected file" +msgstr "Le fichier sélectionné" + +#: src/slic3r/GUI/BedShapeDialog.cpp:589 msgid "The selected file contains no geometry." msgstr "Le fichier sélectionné ne contient aucune géométrie." -#: src/slic3r/GUI/BedShapeDialog.cpp:517 +#: src/slic3r/GUI/BedShapeDialog.cpp:593 msgid "The selected file contains several disjoint areas. This is not supported." msgstr "Le fichier sélectionné contient plusieurs zones disjointes. Cela n'est pas utilisable." -#: src/slic3r/GUI/Plater.cpp:2970 +#: src/slic3r/GUI/Plater.cpp:2763 msgid "The selected object can't be split because it contains more than one volume/material." msgstr "L'objet sélectionné ne peut être scindé car il contient plus d'un volume/matériau." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2270 src/slic3r/GUI/Plater.cpp:2978 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 msgid "The selected object couldn't be split because it contains only one part." msgstr "L'objet sélectionné n'a pu être scindé car il ne contient qu'une seule pièce." -#: src/slic3r/GUI/MainFrame.cpp:461 +#: src/slic3r/GUI/MainFrame.cpp:1003 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -7840,7 +8997,7 @@ msgstr "" "Le projet sélectionné n'est plus disponible.\n" "Voulez-vous le retirer de la liste des projets récents?" -#: src/slic3r/GUI/DoubleSlider.cpp:998 +#: src/slic3r/GUI/DoubleSlider.cpp:1121 msgid "" "The sequential print is on.\n" "It's impossible to apply any custom G-code for objects printing sequentually.\n" @@ -7850,20 +9007,24 @@ msgstr "" "Il est impossible d'appliquer un G-code personnalisé pour des objets en impression séquentielle.\n" "Ce code ne sera pas traité au cours de la génération du G-code." -#: src/libslic3r/PrintConfig.cpp:2846 +#: src/slic3r/GUI/ConfigWizard.cpp:1187 +msgid "The size of the object can be specified in inches" +msgstr "La taille de l'objet peut être spécifiée en pouces" + +#: src/libslic3r/PrintConfig.cpp:3010 msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." msgstr "La pente de la paroi du socle par rapport au plan du lit. 90 degrés donne des murs droits." -#: src/libslic3r/PrintConfig.cpp:1614 +#: src/libslic3r/PrintConfig.cpp:1722 msgid "The speed for loading of a filament into extruder after retraction (it only applies to the extruder motor). If left to zero, the retraction speed is used." msgstr "La vitesse de chargement d'un filament dans l'extrudeur après une rétractation (ne s'applique qu'au moteur de l'extrudeur). Si cette valeur reste sur zéro, la vitesse de rétraction est utilisée." -#: src/libslic3r/PrintConfig.cpp:1606 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "La vitesse des rétractations (ne s'applique qu'au moteur de l'extrudeur)." -#: src/slic3r/GUI/ConfigManipulation.cpp:81 -#, no-c-format +#: src/slic3r/GUI/ConfigManipulation.cpp:80 +#, c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -7881,41 +9042,42 @@ msgstr "" "-Vérifier que l'épaisseur de coque verticale est activée\n" "-La détection de parois fines doit être désactivée" -#: src/libslic3r/Print.cpp:1237 +#: src/libslic3r/Print.cpp:1263 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "L'option Vase Spirale ne peut être utilisé que lors de l'impression d'un seul objet." -#: src/libslic3r/Print.cpp:1244 +#: src/libslic3r/Print.cpp:1270 msgid "The Spiral Vase option can only be used when printing single material objects." msgstr "L'option Vase Spirale ne peut être utilisé que lors de l'impression d'objets mono-matériau." -#: src/slic3r/GUI/Tab.cpp:3068 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 msgid "The supplied name is empty. It can't be saved." msgstr "Le nom proposé est vide. Sauvegarde impossible." -#: src/slic3r/GUI/Tab.cpp:3465 +#: src/slic3r/GUI/SavePresetDialog.cpp:131 msgid "The supplied name is not available." msgstr "Le nom proposé n'est pas disponible." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3819 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3926 src/slic3r/GUI/Tab.cpp:3456 -#: src/slic3r/GUI/Tab.cpp:3460 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 +#: src/slic3r/GUI/SavePresetDialog.cpp:124 msgid "The supplied name is not valid;" msgstr "Le nom fourni n'est pas valide ;" -#: src/libslic3r/Print.cpp:1222 +#: src/libslic3r/Print.cpp:1248 msgid "The supplied settings will cause an empty print." msgstr "Les réglages fournis vont entraîner une impression vide." -#: src/libslic3r/PrintConfig.cpp:2789 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The thickness of the pad and its optional cavity walls." msgstr "L'épaisseur du socle et de ses parois de cavité optionnelles." -#: src/libslic3r/PrintConfig.cpp:1911 +#: src/libslic3r/PrintConfig.cpp:2053 msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." msgstr "Distance verticale entre l'objet et l'intercalaire du support. Régler cette valeur sur zéro empêchera Slic3r d'utiliser la vitesse et le débit des ponts pour la première couche de l'objet." -#: src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:2731 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -7925,11 +9087,11 @@ msgstr "" "\n" "Voulez-vous que je la désactive pour permettre la Rétractation du Firmware ?" -#: src/libslic3r/Print.cpp:1268 +#: src/libslic3r/Print.cpp:1294 msgid "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "À l'heure actuelle, la Tour de Nettoyage ne prend pas en charge l'E volumétrique (use_volumetric_e-0)." -#: src/slic3r/GUI/ConfigManipulation.cpp:115 +#: src/slic3r/GUI/ConfigManipulation.cpp:114 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool change.\n" @@ -7939,51 +9101,55 @@ msgstr "" "si ils sont imprimés avec l'extrudeur actuel sans déclencher un changement d'outil.\n" "(support_material_extruder et support_material_interface_extruder doivent être réglés sur 0)." -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1426 msgid "The Wipe Tower currently supports the non-soluble supports only if they are printed with the current extruder without triggering a tool change. (both support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "A l'heure actuelle la Tour de Nettoyage ne tolère les supports non-solubles que s'ils sont imprimés avec l'extrudeur en cours d'utilisation sans déclencher un changement d'outil. (support_material_extruder de même que support_material_interface_extruder doivent être réglés sur 0)." -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1296 msgid "The Wipe Tower is currently not supported for multimaterial sequential prints." msgstr "La tour de nettoyage n'est actuellement pas prise en charge pour les impressions séquentielles multimatériaux." -#: src/libslic3r/Print.cpp:1262 -msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." -msgstr "La tour de nettoyage est actuellement supportée uniquement pour les versions de G-Code de Marlin, RepRap/Sprinter et Repetier." +#: src/libslic3r/Print.cpp:1290 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "La tour de nettoyage n'est actuellement prise en charge que pour les versions du G-code Marlin, RepRap / Sprinter, RepRapFirmware et Repetier." -#: src/libslic3r/Print.cpp:1264 +#: src/libslic3r/Print.cpp:1290 msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." msgstr "La tour de nettoyage est actuellement supportée uniquement avec l'adressage relatif de l'extrudeur (use_relative_e_distances=1)." -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1319 msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" msgstr "La tour de nettoyage est uniquement supportées pour plusieurs objets s'ils sont imprimés avec un nombre égal de couche de radeau" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1321 msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" msgstr "La tour de nettoyage est uniquement supportée pour plusieurs objets s'ils sont imprimés avec la même support_material_contact_distance" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1323 msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." msgstr "La tour de nettoyage est uniquement supportée pour plusieurs objets s'ils découpés de la même façon." -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1317 msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heights" msgstr "La tour de nettoyage est uniquement supportée pour plusieurs objets s'ils ont une même hauteur de couche" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1283 msgid "The wipe tower is only supported if all extruders have the same nozzle diameter and use filaments of the same diameter." msgstr "La tour de nettoyage n'est supportée que si tous les extrudeurs ont le même diamètre de buse et utilisent un filament de même diamètre." -#: src/libslic3r/Print.cpp:1339 +#: src/libslic3r/Print.cpp:1365 msgid "The Wipe tower is only supported if all objects have the same variable layer height" msgstr "La tour de Nettoyage n'est prise en charge que si tous les objets ont la même hauteur de couche variable" -#: src/libslic3r/SLAPrintSteps.cpp:621 +#: src/slic3r/GUI/Plater.cpp:3563 +msgid "There are active warnings concerning sliced models:" +msgstr "Il existe des avertissements actifs concernant les modèles découpés :" + +#: src/libslic3r/SLAPrintSteps.cpp:619 msgid "There are unprintable objects. Try to adjust support settings to make the objects printable." msgstr "Il y a des objets non imprimables. Essayez d'ajuster les paramètres de support pour rendre les objets imprimables." -#: src/slic3r/GUI/DoubleSlider.cpp:1030 +#: src/slic3r/GUI/DoubleSlider.cpp:1155 msgid "" "There is a color change for extruder that has not been used before.\n" "Check your settings to avoid redundant color changes." @@ -7991,7 +9157,7 @@ msgstr "" "Il y a un changement de couleur pour un extrudeur qui n'a pas été utilisé auparavant.\n" "Vérifiez vos paramètres pour éviter les changements de couleur redondants." -#: src/slic3r/GUI/DoubleSlider.cpp:1024 +#: src/slic3r/GUI/DoubleSlider.cpp:1149 msgid "" "There is a color change for extruder that won't be used till the end of print job.\n" "This code won't be processed during G-code generation." @@ -7999,7 +9165,7 @@ msgstr "" "Il y a un changement de couleur pour un extrudeur qui ne sera pas utilisé avant la fin du travail d'impression.\n" "Ce code ne sera pas traité lors de la génération du G-code." -#: src/slic3r/GUI/DoubleSlider.cpp:1027 +#: src/slic3r/GUI/DoubleSlider.cpp:1152 msgid "" "There is an extruder change set to the same extruder.\n" "This code won't be processed during G-code generation." @@ -8007,12 +9173,16 @@ msgstr "" "Une modification d'extrudeur est défini sur le même extrudeur.\n" "Ce code ne sera pas traité lors de la génération du G-code." +#: src/libslic3r/GCode.cpp:604 +msgid "There is an object with no extrusions on the first layer." +msgstr "Il y a un objet sans extrusion sur la première couche." + #: src/slic3r/GUI/UpdateDialogs.cpp:225 #, c-format msgid "This %s version: %s" msgstr "Version de ce %s : %s" -#: src/slic3r/GUI/Tab.cpp:982 +#: src/slic3r/GUI/Tab.cpp:1244 msgid "" "This action is not revertable.\n" "Do you want to proceed?" @@ -8020,79 +9190,79 @@ msgstr "" "Cette action n'est pas réversible.\n" "Voulez-vous continuer ?" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:199 msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Ce code est inséré entre des objets lorsque vous utilisez l'impression séquentielle. Par défaut la température de l'extrudeur et du plateau est réinitialisée et utilise la commande sans-attente ; toutefois si des commandes M104, M109, M140 ou M190 sont détectées dans ce code personnalisé, Slic3r n'ajoutera pas de commandes de température. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r, donc vous pouvez entrer une commande \"M109S[first_layer_temperature]\" où vous le souhaitez." -#: src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1174 msgid "This custom code is inserted at every layer change, right after the Z move and before the extruder moves to the first layer point. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Ce code personnalisé est inséré à chaque changement de couche, juste après le mouvement Z et avant le déplacement de l'extrudeur au point de départ de la couche suivante. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r de même que [layer_num] et [layer_z]." -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:188 msgid "This custom code is inserted at every layer change, right before the Z move. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Ce code personnalisé est inséré à chaque changement de couche, juste avant le mouvement en Z. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r de même que [layer_num] et [layer_z]." -#: src/libslic3r/PrintConfig.cpp:2094 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings as well as {previous_extruder} and {next_extruder} can be used. When a tool-changing command which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. It is therefore possible to script custom behaviour both before and after the toolchange." msgstr "Ce code personnalisé est inséré avant chaque changement d'outil. Des variables génériques pour n'importe quels réglages PrusaSlicer ainsi que {previous_extruder} et {next_extruder} peuvent être utilisées. Lorsqu'une commande de changement d'outil qui occasionne un changement concernant le bon extrudeur est incluse (comme T{next_extruder}), PrusaSlicer n'émettra pas d'autres commandes de ce type. Il est donc possible de rédiger le script d'un comportement personnalisé à la fois avant et après le changement d'outil." -#: src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:430 msgid "This end procedure is inserted at the end of the output file, before the printer end gcode (and before any toolchange from this filament in case of multimaterial printers). Note that you can use placeholder variables for all PrusaSlicer settings. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Cette procédure de fin est insérée à la fin d'un fichier de sortie, avant le gcode de fin de l'imprimante (et avant tout changement d'outil de ce filament dans le cas des imprimantes multimatériaux). Notez que vous pouvez utiliser des variables génériques pour tous les réglages PrusaSlicer. Si vous avez des extrudeurs multiples, le gcode est traité dans l'ordre des extrudeurs." -#: src/libslic3r/PrintConfig.cpp:386 +#: src/libslic3r/PrintConfig.cpp:420 msgid "This end procedure is inserted at the end of the output file. Note that you can use placeholder variables for all PrusaSlicer settings." msgstr "Cette procédure de fin est insérée à la fin d'un fichier de sortie. Notez que vous pouvez utiliser des variables génériques pour tous les paramètres PrusaSlicer." -#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 msgid "This experimental setting is used to limit the speed of change in extrusion rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "Ce réglage expérimental sert à limiter la vitesse de changement dans le flux d'extrusion. Une valeur de 1.8 mm³/s² garantit qu'un changement de flux d'extrusion de 1.8 mm³/s (largeur d'extrusion 0.45mm, hauteur d'extrusion 0.2mm, vitesse d'avance de 20 mm/s) à 5.4 mm³/s (vitesse d'avance de 60 mm/s) prendra au moins 2 secondes." -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." msgstr "Ce réglage expérimental est utilisé pour paramétrer la vitesse volumétrique maximum tolérée par votre extrudeur." -#: src/libslic3r/PrintConfig.cpp:2162 +#: src/libslic3r/PrintConfig.cpp:2305 msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." msgstr "Ce réglage expérimental utilise les commandes G10 et G11 pour laisser le firmware gérer la rétractation. Utilisable seulement par les versions récentes de Marlin." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2319 msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." msgstr "Cette fonction expérimentale génère des valeurs de E en millimètres cubiques au lieu de millimètres linéaires. Si votre firmware ne connait pas déjà le diamètre du filament, vous pouvez saisir une commande comme 'M200 D[filament_diameter_0] T0' dans votre G-Code de début pour activer le mode volumétrique, et utiliser le diamètre de filament associé au filament choisi dans Slic3r. Cette fonction n'est utilisable que dans les versions récentes de Marlin." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" msgstr "Cet extrudeur sera défini pour les items sélectionnés" -#: src/libslic3r/PrintConfig.cpp:224 +#: src/libslic3r/PrintConfig.cpp:258 msgid "This factor affects the amount of plastic for bridging. You can decrease it slightly to pull the extrudates and prevent sagging, although default settings are usually good and you should experiment with cooling (use a fan) before tweaking this." msgstr "Ce facteur affecte la quantité de plastique utilisée pour les ponts. Vous pouvez le diminuer légèrement pour éviter l'affaissement. La valeur par défaut est généralement suffisante et vous devriez expérimenter le refroidissement (utiliser un ventilateur) avant de modifier ceci." -#: src/libslic3r/PrintConfig.cpp:546 +#: src/libslic3r/PrintConfig.cpp:582 msgid "This factor changes the amount of flow proportionally. You may need to tweak this setting to get nice surface finish and correct single wall widths. Usual values are between 0.9 and 1.1. If you think you need to change this more, check filament diameter and your firmware E steps." msgstr "Ce facteur modifie proportionnellement le flux d'extrusion. Vous pouvez avoir besoin de modifier ceci afin d'obtenir un rendu de surface net et une largeur correcte pour les murs uniques. Les valeurs habituelles vont de 0.9 à 1.1. Si vous pensez devoir changer davantage cette valeur, vérifiez le diamètre de votre filament et les E Steps dans le firmware." -#: src/libslic3r/PrintConfig.cpp:214 +#: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "Cette vitesse de ventilateur sera utilisée pour les ponts et les surplombs." -#: src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "Cette fonction permet de combiner le remplissage afin d'accélérer l'impression en extrudant des couches de remplissage plus épaisses tout en conservant des périmètres fins, avec plus de précision." -#: src/libslic3r/PrintConfig.cpp:1746 +#: src/libslic3r/PrintConfig.cpp:1861 msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." msgstr "Cette fonction permet de forcer l'impression d'une couche solide après le nombre de couches indiqué. Réglez sur zéro pour la désactiver. Vous pouvez indiquer n'importe quelle valeur (par exemple 9999); Slic3r choisira automatiquement le nombre maximum de couches a combiner en fonction du diamètre de la buse et de l'épaisseur des couches." -#: src/libslic3r/PrintConfig.cpp:1795 +#: src/libslic3r/PrintConfig.cpp:1910 msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." msgstr "Cette fonction élèvera le Z graduellement en cas d'impression d'un objet à paroi unique, afin de rendre invisibles les jointures. Cette option nécessite de n'avoir qu'un seul périmètre, de ne pas avoir de remplissage, ni de surface solide supérieure, ni de support. Vous pouvez toujours choisir le nombre de surface solides inférieures de même que les boucles des jupes et des bordures. Cela ne fonctionnera pas si vous imprimez plus d'un objet." -#: src/slic3r/GUI/Plater.cpp:2367 +#: src/slic3r/GUI/Plater.cpp:2329 msgid "This file cannot be loaded in a simple mode. Do you want to switch to an advanced mode?" msgstr "Ce fichier ne peut être chargé en mode simple. Voulez-vous basculer en mode avancé ?" -#: src/slic3r/GUI/Plater.cpp:2357 +#: src/slic3r/GUI/Plater.cpp:2319 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -8118,84 +9288,96 @@ msgstr "" "Voulez-vous continuer et flasher ce fichier hex quand même ?\n" "S'il vous plait, ne continuez que si vous êtes certain de faire le bon choix." -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:348 msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." msgstr "Cette option active la logique de refroidissement automatique, qui ajuste la vitesse d'impression et celle du ventilateur en fonction du temps d'impression de la couche." -#: src/slic3r/GUI/Plater.cpp:536 +#: src/slic3r/GUI/Plater.cpp:402 msgid "This flag enables the brim that will be printed around each object on the first layer." msgstr "Cette option permet l'impression de la bordure qui entoure chaque objet lors de la première couche." -#: src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Cette option active la rétractation lors d'un déplacement sur l'axe Z." -#: src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2337 msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." msgstr "Cette option déplace la buse lors des rétractations, limitant ainsi l'apparition d'amas sur les extrudeurs ayant tendance à couler." -#: src/slic3r/GUI/Tab.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1961 +msgid "This G-code will be used as a code for the color change" +msgstr "Ce G-code sera utilisé comme code pour le changement de couleur" + +#: src/libslic3r/PrintConfig.cpp:1970 +msgid "This G-code will be used as a code for the pause print" +msgstr "Ce G-code sera utilisé comme code pour la pause de l'impression" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "This G-code will be used as a custom code" +msgstr "Ce G-code sera utilisé comme code personnalisé" + +#: src/slic3r/GUI/Tab.cpp:1272 msgid "This is a default preset." msgstr "Ceci est un préréglage par défaut." -#: src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "This is a relative measure of support points density." msgstr "Ceci est une mesure relative de la densité des points de support." -#: src/slic3r/GUI/Tab.cpp:2338 +#: src/slic3r/GUI/Tab.cpp:2507 msgid "This is a single extruder multimaterial printer, diameters of all extruders will be set to the new value. Do you want to proceed?" msgstr "Ceci est une imprimante multimatériaux à extrudeur unique, les diamètres de tous les extrudeurs seront réglés sur la nouvelle valeur. Voulez-vous continuer ?" -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:1274 msgid "This is a system preset." msgstr "Ceci est un préréglage système." -#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Ceci est utilisé dans l'interface de Slic3r uniquement en tant que indication visuelle." -#: src/libslic3r/PrintConfig.cpp:336 +#: src/libslic3r/PrintConfig.cpp:370 msgid "This is the acceleration your printer will be reset to after the role-specific acceleration values are used (perimeter/infill). Set zero to prevent resetting acceleration at all." msgstr "Accélération à laquelle votre imprimante sera réinitialisée suite à une modification de l'accélération des fonctions spécifiques (périmètre/remplissage). Régler sur zéro pour ne pas réinitialiser l'accélération." -#: src/libslic3r/PrintConfig.cpp:194 +#: src/libslic3r/PrintConfig.cpp:228 msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." msgstr "L'accélération qui sera utilisée par votre imprimante pour les ponts. Régler sur zéro pour désactiver l'accélération pour les ponts." -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:900 msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." msgstr "L'accélération que l'imprimante utilisera pour la première couche. Régler sur zéro afin de désactiver le contrôle de l'accélération pour la première couche." -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:1026 msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." msgstr "Il s'agit de l'accélération que votre imprimante utilisera pour le remplissage. Régler sur zéro afin de désactiver le contrôle de l'accélération pour le remplissage." -#: src/libslic3r/PrintConfig.cpp:1400 +#: src/libslic3r/PrintConfig.cpp:1508 msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." msgstr "L'accélération que votre imprimante utilisera pour les périmètres. Une valeur élevée comme 9000 donne généralement de bons résultats si votre matériel le permet. Régler sur zéro afin de désactiver le contrôle de l'accélération pour les périmètres." -#: src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1435 msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "Il s'agit du diamètre de la buse de votre extrudeur (par exemple: 0.5, 0.35, etc.)" -#: src/libslic3r/PrintConfig.cpp:1227 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1335 +#, c-format msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "Ceci est la hauteur de couche imprimable maximum pour cet extrudeur, utilisée pour plafonner la hauteur de couche variable et la hauteur de couche des supports. La hauteur de couche maximum recommandée est 75% de la largeur d'extrusion afin d'obtenir une adhésion inter-couches correcte. Si réglée sur 0, la hauteur de couche est limitée à 75% du diamètre de la buse." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1398 msgid "This is the lowest printable layer height for this extruder and limits the resolution for variable layer height. Typical values are between 0.05 mm and 0.1 mm." msgstr "Cette valeur est la hauteur de couche imprimable minimum pour cet extrudeur et elle limite la résolution pour la hauteur de couche variable. Les valeurs type se situent entre 0.05 mm et 0.1 mm." -#: src/libslic3r/GCode.cpp:639 +#: src/libslic3r/GCode.cpp:624 msgid "This is usually caused by negligibly small extrusions or by a faulty model. Try to repair the model or change its orientation on the bed." msgstr "Ceci est généralement provoqué par de petites extrusions négligeables ou par un modèle défectueux. Essayez de réparer le modèle ou de changer son orientation sur le lit." -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2358 msgid "This matrix describes volumes (in cubic milimetres) required to purge the new filament on the wipe tower for any given pair of tools." msgstr "Cette matrice décrit les volumes (en millimètres cube) nécessaires pour purger le nouveau filament dans la tour de nettoyage pour une paire d'outils donnée." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:928 msgid "" "This operation is irreversible.\n" "Do you want to proceed?" @@ -8203,31 +9385,35 @@ msgstr "" "Cette opération est irréversible.\n" "Voulez-vous continuer?" -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1550 msgid "This option sets the number of perimeters to generate for each layer. Note that Slic3r may increase this number automatically when it detects sloping surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." msgstr "Cette option définit le nombre de périmètres à générer pour chaque couche. Notez que Slic3r peut augmenter cette valeur automatiquement si il détecte une surface inclinée qui nécessite un plus grand nombre de périmètres, si l'option \"Périmètres supplémentaires\" est sélectionnée." -#: src/libslic3r/PrintConfig.cpp:1356 +#: src/libslic3r/PrintConfig.cpp:1464 msgid "This option will drop the temperature of the inactive extruders to prevent oozing. It will enable a tall skirt automatically and move extruders outside such skirt when changing temperatures." msgstr "Cette option abaissera la température des extrudeurs inutilisés pour prévenir le oozing (suintement). Cela active automatiquement la génération d'une grande jupe et le déplacement des extrudeurs hors de cette jupe lors des changements de température." -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1073 msgid "This option will limit infill to the areas actually needed for supporting ceilings (it will act as internal support material). If enabled, slows down the G-code generation due to the multiple checks involved." msgstr "Cette option limitera le remplissage aux zones nécessaires pour soutenir les couches supérieures (cela agira comme un support interne). Si activé, la génération du G-Code prendra plus de temps à cause des calculs supplémentaires requis." -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1066 msgid "This option will switch the print order of perimeters and infill, making the latter first." msgstr "Cette option inverse l'ordre d'impression des périmètres et du remplissage, ce dernier étant alors imprimé en premier." -#: src/libslic3r/PrintConfig.cpp:459 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +msgid "This printer will be shown in the presets list as" +msgstr "Cette imprimante sera affichée dans la liste des préréglages comme" + +#: src/libslic3r/PrintConfig.cpp:495 msgid "This separate setting will affect the speed of external perimeters (the visible ones). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "Ce réglage distinct affectera la vitesse des périmètres extérieurs (ceux qui sont visibles). Si cette valeur est exprimée en pourcentage (par exemple: 80%) elle sera calculée d'après le réglage de la vitesse de périmètre susmentionnée. Réglez sur zéro pour un ajustement automatique." -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1832 msgid "This separate setting will affect the speed of perimeters having radius <= 6.5mm (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "Ce réglage distinct affectera la vitesse des périmètre ayant un rayon <= 6.5mm (les trous habituellement). Si cette valeur est exprimée en pourcentage (par exemple: 80%) elle sera calculée d'après le réglage de la vitesse de périmètre susmentionnée. Réglez sur zéro pour un ajustement automatique." -#: src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1082 msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." msgstr "Cette option applique un chevauchement supplémentaire entre les périmètres et le remplissage pour une meilleur fusion. En théorie, cela ne devrait pas être nécessaire, mais le jeu mécanique peut générer des espacements. Si exprimé en pourcentage (par exemple 15%), la valeur sera calculée en fonction de la largeur d'extrusion du périmètre." @@ -8235,31 +9421,31 @@ msgstr "Cette option applique un chevauchement supplémentaire entre les périm msgid "This setting controls the height (and thus the total number) of the slices/layers. Thinner layers give better accuracy but take more time to print." msgstr "Cette option contrôle l'épaisseur (et donc le nombre total) des couches. Des couches plus fines donneront une meilleure précision mais l'impression sera plus longue." -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "This setting represents the maximum speed of your fan." msgstr "Cette option représente la vitesse maximum du ventilateur." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1389 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "Cette option représente le PWM minimum dont votre ventilateur a besoin pour tourner." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1944 msgid "This start procedure is inserted at the beginning, after any printer start gcode (and after any toolchange to this filament in case of multi-material printers). This is used to override settings for a specific filament. If PrusaSlicer detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Cette procédure de départ est insérée au début, après n'importe quel gcode de départ de l'imprimante (et après n'importe quel changement d'outil pour ce filament dans le cas des imprimantes multi-matériaux). Ceci est utilisé pour supplanter les réglages d'un filament spécifique. Si PrusaSlicer détecte M104, M109, M140 ou M190 dans vos codes personnalisés, de telles commandes ne seront pas ajoutées automatiquement de sorte que vous restez libre de personnaliser l'ordre des commandes de chauffe et autres actions personnalisées. Notez que vous pouvez utiliser des variables génériques pour les tous les paramètres PrusaSlicer, donc vous pouvez utiliser une commande \"M109 S[first_layer_temperature]\" où vous voulez." -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Cette procédure de départ est insérée au début, après que le lit a atteint la température ciblée et que l'extrudeur vient de commencer à chauffer, et avant que l'extrudeur ait terminé de chauffer. Si PrusaSlicer détecte M104 ou M190 dans votre code personnalisé, de telles commandes ne seront pas ajoutées automatiquement de sorte que vous restez libre de personnaliser l'ordre des commandes de chauffe et autres actions personnalisées. Notez que vous pouvez utiliser des variables génériques pour les tous les paramètres PrusaSlicer, donc vous pouvez utiliser une commande \"M109 S[first_layer_temperature]\" où vous voulez." -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:731 msgid "This string is edited by RammingDialog and contains ramming specific parameters." msgstr "Cette chaine est éditée par RammingDialog et contient les paramètres spécifiques d'expulsion." -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2429 msgid "This value will be added (or subtracted) from all the Z coordinates in the output G-code. It is used to compensate for bad Z endstop position: for example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." msgstr "Cette valeur sera ajoutée (ou soustraite) de toutes les coordonnées Z dans le G-Code de sortie. Elle est utilisée pour compenser une mauvaise position de fin de course Z: par exemple si votre fin de course place votre buse à 0.3mm au dessus du plateau, réglez cette valeur sur -0.3 (ou corrigez votre fin de course)." -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2351 msgid "This vector saves required volumes to change from/to each tool used on the wipe tower. These values are used to simplify creation of the full purging volumes below." msgstr "Ce vecteur enregistre les volumes requis pour changer l'outil utilisé pour la tour de nettoyage. Ces valeurs sont utilisées pour simplifier la création des volumes de purge complets ci-dessous." @@ -8276,82 +9462,96 @@ msgstr "" "\n" "Vous pouvez soit quitter %s et essayer à nouveau avec une version plus récente, ou vous pouvez relancer la configuration initiale. Procéder ainsi permettra de créer une sauvegarde de la configuration existante avant d'installer les fichiers compatibles avec ce %s." -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2601 msgid "This will apply a gamma correction to the rasterized 2D polygons. A gamma value of zero means thresholding with the threshold in the middle. This behaviour eliminates antialiasing without losing holes in polygons." msgstr "Cela appliquera une correction gamma aux polygones 2D tramés. Une valeur gamma de zéro signifie un seuillage avec le seuil au milieu. Ce comportement élimine l'anti-alias sans perdre de trous dans le polygone." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Threads" msgstr "Threads" -#: src/libslic3r/PrintConfig.cpp:2082 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." msgstr "Les threads sont utilisés pour paralléliser les calculs longs. Le nombre optimal de threads est légèrement supérieur au nombre de coeurs/processeurs disponibles." -#: src/slic3r/GUI/Tab.cpp:2093 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "Threshold:" +msgstr "Seuil :" + +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Tilt" msgstr "Incliner" -#: src/slic3r/GUI/Tab.cpp:2094 +#: src/slic3r/GUI/Tab.cpp:2264 msgid "Tilt time" msgstr "Durée de l'inclinaison" +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "Durée" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:723 msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." msgstr "Temps nécessaire pour que le Firmware de l'imprimante (ou la Multi Material Unit 2.0) charge un filament au cours d'un changement d'outils (lorsqu'il exécute le T code). Ce temps est ajouté au temps total d'impression par l'estimateur de temps du G-code." -#: src/libslic3r/PrintConfig.cpp:702 +#: src/libslic3r/PrintConfig.cpp:738 msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." msgstr "Temps nécessaire pour que le Firmware de l'imprimante (ou la Multi Material Unit 2.0) décharge un filament au cours d'un changement d'outils (lorsqu'il exécute le T code). Ce temps est ajouté au temps total d'impression par l'estimateur de temps du G-code." -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the fast tilt" msgstr "Durée de l'inclinaison rapide" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Time of the slow tilt" msgstr "Durée de l'inclinaison lente" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:677 msgid "Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible materials that may need more time to shrink to original dimensions." msgstr "Temps d'attente nécessaire après que le filament ait été déchargé. Peut aider à obtenir des changements d'outils fiables avec des matériaux flexible qui ont besoin de plus de temps pour revenir à leurs dimensions originales." -#: src/slic3r/GUI/Tab.cpp:966 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "to" +msgstr "à" + +#: src/slic3r/GUI/Tab.cpp:1284 msgid "To do that please specify a new name for the preset." msgstr "Pour faire cela veuillez spécifier un nouveau nom pour le préréglage." -#: src/slic3r/GUI/Plater.cpp:4014 +#: src/slic3r/GUI/Plater.cpp:3934 msgid "To objects" msgstr "Vers les objets" -#: src/slic3r/GUI/Plater.cpp:4016 +#: src/slic3r/GUI/Plater.cpp:3936 msgid "To parts" msgstr "Vers les parties" -#: src/slic3r/GUI/Tab.cpp:1756 +#: src/slic3r/Utils/Http.cpp:82 +msgid "To specify the system certificate store manually, please set the %1% environment variable to the correct CA bundle and restart the application." +msgstr "Pour spécifier manuellement le stockage de certificats système, définissez la variable d'environnement %1% sur le bon groupe d'autorité de certification et redémarrez l'application." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." msgstr "Pour utiliser un fichier CA personnalisé, veuillez importer votre fichier CA dans le Magasin de Certificats / Trousseau." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 #, c-format msgid "Toggle %c axis mirroring" msgstr "Activer la symétrie sur l'axe %c" -#: src/libslic3r/Zipper.cpp:34 +#: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "trop de fichiers" -#: src/libslic3r/SLAPrintSteps.cpp:190 -msgid "Too much overlapping holes." +#: src/libslic3r/SLAPrintSteps.cpp:192 +msgid "Too many overlapping holes." msgstr "Trop de trous qui se chevauchent." -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 -#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 +#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 +#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 +#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 +#: src/libslic3r/GCode/PreviewData.cpp:362 msgid "Tool" msgstr "Outil" @@ -8359,51 +9559,64 @@ msgstr "Outil" msgid "Tool #" msgstr "Outil #" -#: src/slic3r/GUI/Tab.cpp:2000 src/libslic3r/PrintConfig.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 msgid "Tool change G-code" msgstr "G-code de changement d'outil" -#: src/slic3r/GUI/Tab.cpp:1491 +#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +msgid "Tool changes" +msgstr "Changements d'outils" + +#: src/slic3r/GUI/GUI_Preview.cpp:1479 +msgid "Tool marker" +msgstr "Marqueur d'outil" + +#: src/slic3r/GUI/GCodeViewer.cpp:223 +msgid "Tool position" +msgstr "Position de l'outil" + +#: src/slic3r/GUI/Tab.cpp:1837 msgid "Toolchange parameters with single extruder MM printers" msgstr "Paramètres de changement d'outil pour les imprimantes multi-matériaux mono-extrudeur" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:662 src/libslic3r/PrintConfig.cpp:2132 -#: src/libslic3r/PrintConfig.cpp:2141 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 msgid "Top" msgstr "Haut" -#: src/slic3r/GUI/PresetHints.cpp:304 +#: src/slic3r/GUI/PresetHints.cpp:302 msgid "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "Indice d'épaisseur de coque supérieure / inférieure : non disponible en raison de la hauteur de couche non valide." -#: src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:449 msgid "Top fill pattern" msgstr "Motif de remplissage du dessus" -#: src/slic3r/GUI/PresetHints.cpp:323 +#: src/slic3r/GUI/PresetHints.cpp:321 msgid "Top is open." msgstr "Le haut est ouvert." -#: src/slic3r/GUI/PresetHints.cpp:317 +#: src/slic3r/GUI/PresetHints.cpp:315 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "La coque supérieure a une épaisseur de %1% mm pour une hauteur de couche %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:192 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "remplissage solide supérieur" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 +#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 +#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Top solid infill" msgstr "Remplissage solide supérieur" -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2278 msgid "Top solid layers" msgstr "Couches supérieures solides" -#: src/slic3r/GUI/MainFrame.cpp:662 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 msgid "Top View" msgstr "Vue du Dessus" @@ -8419,90 +9632,128 @@ msgstr "Volume total expulsé" msgid "Total ramming time" msgstr "Durée totale de l'expulsion" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:640 +msgid "Transfer" +msgstr "Transférer" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:745 +msgid "Transfer the selected options to the newly selected preset \"%1%\"." +msgstr "Transférer les options sélectionnées vers le nouveau préréglage \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Transfer the selected settings to the newly selected preset." +msgstr "Transférez les réglages sélectionnés vers le nouveau préréglage sélectionné." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:561 msgid "Translate" msgstr "Traduire" -#: src/slic3r/GUI/Mouse3DController.cpp:300 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:282 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Translation" msgstr "Translation" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 +#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 msgid "Travel" msgstr "Déplacement" -#: src/libslic3r/PrintConfig.cpp:845 +#: src/libslic3r/PrintConfig.cpp:883 msgid "Triangles" msgstr "Triangles" -#: src/libslic3r/PrintConfig.cpp:3448 +#: src/libslic3r/PrintConfig.cpp:3647 msgid "Try to repair any non-manifold meshes (this option is implicitly added whenever we need to slice the model to perform the requested action)." msgstr "Essayer de réparer tout maillage non-multiple (cette option est ajoutée implicitement dès que nous devons découper le modèle pour accomplir l'action demandée)." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +msgid "Type here the name of your printer device" +msgstr "Tapez ici le nom de votre imprimante" + +#: src/libslic3r/PrintConfig.cpp:1575 msgid "Type of the printer." msgstr "Type d'imprimante." -#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "Type :" -#: src/slic3r/GUI/Plater.cpp:3428 +#: src/slic3r/GUI/OpenGLManager.cpp:275 +#, c-format +msgid "" +"Unable to load the following shaders:\n" +"%s" +msgstr "" +"Impossible de charger les shaders suivants :\n" +"%s" + +#: src/slic3r/GUI/Plater.cpp:3233 msgid "Unable to reload:" msgstr "Impossible de recharger :" -#: src/libslic3r/Zipper.cpp:32 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:137 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:146 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:845 +msgid "Undef" +msgstr "Undef" + +#: src/libslic3r/miniz_extension.cpp:91 msgid "undefined error" msgstr "erreur non définie" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/MainFrame.cpp:581 +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Undo" msgstr "Annuler" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "Annuler %1$d Action" msgstr[1] "Annuler %1$d Actions" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Undo History" msgstr "Annuler Historique" -#: src/libslic3r/Zipper.cpp:56 +#: src/libslic3r/miniz_extension.cpp:115 msgid "unexpected decompressed size" msgstr "volume de décompression inattendu" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:310 msgid "Unknown" msgstr "Inconnu" -#: src/slic3r/Utils/Duet.cpp:82 src/slic3r/Utils/Duet.cpp:137 -#: src/slic3r/Utils/FlashAir.cpp:119 src/slic3r/Utils/FlashAir.cpp:140 -#: src/slic3r/Utils/FlashAir.cpp:156 +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 +#: src/slic3r/Utils/FlashAir.cpp:159 msgid "Unknown error occured" msgstr "Une erreur inconnue s'est produite" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 +msgid "Unknown error occured during exporting G-code." +msgstr "Une erreur inconnue s'est produite lors de l'exportation du G-code." + #: src/slic3r/GUI/WipeTowerDialog.cpp:263 msgid "unloaded" msgstr "déchargé" -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Unloading speed" msgstr "Vitesse de déchargement" -#: src/libslic3r/PrintConfig.cpp:632 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Unloading speed at the start" msgstr "Vitesse de déchargement au démarrage" -#: src/slic3r/GUI/Tab.cpp:3256 +#: src/slic3r/GUI/Tab.cpp:3693 msgid "UNLOCKED LOCK" msgstr "CADENAS OUVERT" -#: src/slic3r/GUI/Tab.cpp:3282 +#: src/slic3r/GUI/Tab.cpp:3719 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click to reset all settings for current option group to the system (or default) values." @@ -8510,7 +9761,7 @@ msgstr "" "L'icône CADENAS OUVERT indique que certains paramètres ont été modifiés et ne sont pas égaux aux valeurs du système (ou par défaut) pour le groupe d'options actuel.\n" "Cliquez pour régler tous les paramètres pour le groupe d'options actuel sur les valeurs du système (ou par défaut)." -#: src/slic3r/GUI/Tab.cpp:3297 +#: src/slic3r/GUI/Tab.cpp:3734 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to the system (or default) value.\n" "Click to reset current value to the system (or default) value." @@ -8518,56 +9769,43 @@ msgstr "" "L'icône CADENAS OUVERT indique que la valeur a été changée et n'est pas égale à la valeur du système (ou par défaut).\n" "Cliquez pour réinitialiser la valeur actuelle sur les valeurs du système (ou par défaut)." -#: src/slic3r/GUI/Plater.cpp:5203 -#, c-format -msgid "Unmounting successful. The device %s(%s) can now be safely removed from the computer." -msgstr "Démontage réussi. Le matériel %s(%s) peut maintenant être déconnecté de l'ordinateur en toute sécurité." - -#: src/slic3r/GUI/GUI_Preview.cpp:255 -msgid "Unretractions" -msgstr "Dérétractation" - -#: src/slic3r/GUI/Tab.cpp:2947 -msgid "Unsaved Changes" -msgstr "Modifications Non Sauvegardés" - -#: src/slic3r/GUI/GUI_App.cpp:935 -msgid "Unsaved Presets" -msgstr "Préréglages Non Sauvegardés" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Unselect gizmo or clear selection" msgstr "Désélectionner le Gizmo ou supprimer la sélection" -#: src/libslic3r/Zipper.cpp:60 +#: src/libslic3r/miniz_extension.cpp:119 msgid "unsupported central directory size" msgstr "volume du répertoire central non supporté" -#: src/libslic3r/Zipper.cpp:40 +#: src/libslic3r/miniz_extension.cpp:99 msgid "unsupported encryption" msgstr "cryptage non supporté" -#: src/libslic3r/Zipper.cpp:42 +#: src/libslic3r/miniz_extension.cpp:101 msgid "unsupported feature" msgstr "fonction non supportée" -#: src/libslic3r/Zipper.cpp:38 +#: src/libslic3r/miniz_extension.cpp:97 msgid "unsupported method" msgstr "méthode non supportée" -#: src/libslic3r/Zipper.cpp:50 +#: src/libslic3r/miniz_extension.cpp:109 msgid "unsupported multidisk archive" msgstr "archive multidisque non supportée" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:292 +#: src/slic3r/GUI/OpenGLManager.cpp:267 msgid "Unsupported OpenGL version" msgstr "Version d'OpenGL non supportée" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3420 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 msgid "Unsupported selection" msgstr "Sélection non supportée" -#: src/slic3r/GUI/GLCanvas3D.cpp:955 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 +msgid "up to" +msgstr "jusqu'à" + +#: src/slic3r/GUI/GLCanvas3D.cpp:961 #, c-format msgid "up to %.2f mm" msgstr "jusqu'à %.2f mm" @@ -8576,15 +9814,15 @@ msgstr "jusqu'à %.2f mm" msgid "Update available" msgstr "Mise à jour disponible" -#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "Mettre à jour automatiquement les Préréglages intégrés" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Updates" msgstr "Mises à jour" -#: src/slic3r/GUI/ConfigWizard.cpp:786 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 msgid "Updates are never applied without user's consent and never overwrite user's customized settings." msgstr "Les mises à jour ne sont jamais appliquées sans l'accord de l'utilisateur et n'annulent jamais les réglages personnalisés de l'utilisateur." @@ -8592,7 +9830,7 @@ msgstr "Les mises à jour ne sont jamais appliquées sans l'accord de l'utilisat msgid "Upgrade" msgstr "Mise à jour" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "Charger un firmware dans une imprimante basée sur un Arduino" @@ -8608,101 +9846,118 @@ msgstr "Envoyer vers l'Hôte d'Imprimante avec le nom de fichier suivant :" msgid "Uploading" msgstr "Téléchargement" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper Layer" msgstr "Couche du Haut" -#: src/slic3r/GUI/Tab.cpp:1900 -msgid "USB/Serial connection" -msgstr "Connexion USB/Série" - -#: src/libslic3r/PrintConfig.cpp:1662 -msgid "USB/serial port for printer connection." -msgstr "Port USB/Série pour la connexion de l'imprimante." - -#: src/slic3r/GUI/DoubleSlider.cpp:1147 +#: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Utiliser un autre extrudeur" -#: src/slic3r/GUI/Preferences.cpp:143 +#: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Utiliser une taille personnalisée pour les icônes de la barre d'outils" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/slic3r/GUI/Preferences.cpp:268 +msgid "Use environment map" +msgstr "Utiliser la carte d'environnement" + +#: src/libslic3r/PrintConfig.cpp:2304 msgid "Use firmware retraction" msgstr "Utiliser la rétraction du firmware" +#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +msgid "Use for search" +msgstr "Utiliser pour la recherche" + +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" +msgstr "Utiliser pour l'estimation du temps" + #: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Utilisez des barres obliques (/) comme séparateur de répertoire si nécessaire." -#: src/slic3r/GUI/Preferences.cpp:126 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use free camera" msgstr "Utiliser la caméra libre" -#: src/libslic3r/PrintConfig.cpp:2780 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Use inches" +msgstr "Utiliser les pouces" + +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Use pad" msgstr "Utiliser un socle" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:184 msgid "Use perspective camera" msgstr "Utiliser l'appareil photo en perspective" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2311 msgid "Use relative E distances" msgstr "Utiliser des valeurs E relatives" -#: src/slic3r/GUI/Preferences.cpp:104 +#: src/slic3r/GUI/Preferences.cpp:135 msgid "Use Retina resolution for the 3D scene" msgstr "Utiliser la résolution Retina pour la scène 3D" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." msgstr "Utiliser cette option pour indiquer la lettre utilisée par l'extrudeur de votre imprimante (habituellement E, mais certaines imprimantes utilisent A)." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:2035 msgid "Use this setting to rotate the support material pattern on the horizontal plane." msgstr "Utiliser ce réglage pour orienter le motif du support sur le plan horizontal." -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2318 msgid "Use volumetric E" msgstr "E Volumétrique" -#: src/slic3r/GUI/DoubleSlider.cpp:1171 +#: src/slic3r/GUI/DoubleSlider.cpp:1298 msgid "used" msgstr "utilisé" -#: src/slic3r/GUI/Plater.cpp:237 +#: src/slic3r/GUI/Plater.cpp:243 msgid "Used Filament (g)" msgstr "Filament Utilisé (g)" -#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 +#: src/slic3r/GUI/Plater.cpp:1141 +msgid "Used Filament (in)" +msgstr "Filament utilisé (in)" + +#: src/slic3r/GUI/Plater.cpp:1153 +msgid "Used Filament (in³)" +msgstr "Filament utilisé (in³)" + +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 msgid "Used Filament (m)" msgstr "Filament Utilisé (m)" -#: src/slic3r/GUI/Plater.cpp:236 +#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 msgid "Used Filament (mm³)" msgstr "Filament Utilisé (mm³)" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1100 msgid "Used Material (ml)" msgstr "Matériau Utilisé (ml)" -#: src/slic3r/GUI/Plater.cpp:238 +#: src/slic3r/GUI/Plater.cpp:244 msgid "Used Material (unit)" msgstr "Matériau Utilisé (unité)" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 msgid "User" msgstr "Utilisateur" -#: src/slic3r/GUI/Preset.cpp:1168 src/slic3r/GUI/Preset.cpp:1288 -#: src/slic3r/GUI/PresetBundle.cpp:1677 +#: src/slic3r/GUI/PresetComboBoxes.cpp:230 +#: src/slic3r/GUI/PresetComboBoxes.cpp:778 +#: src/slic3r/GUI/PresetComboBoxes.cpp:934 msgid "User presets" msgstr "Préréglages utilisateur" -#: src/libslic3r/Zipper.cpp:90 +#: src/libslic3r/miniz_extension.cpp:149 msgid "validation failed" msgstr "échec de la validation" @@ -8714,31 +9969,31 @@ msgstr "La valeur est identique à la valeur du système" msgid "Value was changed and is not equal to the system value or the last saved preset" msgstr "La valeur a été changée et n'est pas égale à la valeur du système ou au dernier préréglage sauvegardé" -#: src/slic3r/GUI/Tab.cpp:2202 +#: src/slic3r/GUI/Tab.cpp:2371 msgid "Values in this column are for Normal mode" msgstr "Les valeurs de cette colonne sont pour le mode Normal" -#: src/slic3r/GUI/Tab.cpp:2208 +#: src/slic3r/GUI/Tab.cpp:2377 msgid "Values in this column are for Stealth mode" msgstr "Les valeurs de cette colonne sont pour le mode Silencieux" -#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 msgid "Variable layer height" msgstr "Hauteur de couche variable" -#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +#: src/slic3r/GUI/GLCanvas3D.cpp:1786 msgid "Variable layer height - Adaptive" msgstr "Hauteur de couche variable - Adaptatif" -#: src/slic3r/GUI/GLCanvas3D.cpp:599 +#: src/slic3r/GUI/GLCanvas3D.cpp:565 msgid "Variable layer height - Manual edit" msgstr "Hauteur de couche variable - Modification manuelle" -#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +#: src/slic3r/GUI/GLCanvas3D.cpp:1778 msgid "Variable layer height - Reset" msgstr "Hauteur de couche variable - Réinitialisation" -#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +#: src/slic3r/GUI/GLCanvas3D.cpp:1794 msgid "Variable layer height - Smooth all" msgstr "Hauteur de couche variable - Tout lisser" @@ -8746,19 +10001,20 @@ msgstr "Hauteur de couche variable - Tout lisser" msgid "variants" msgstr "variantes" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 msgid "vendor" msgstr "fabriquant" -#: src/slic3r/GUI/ConfigWizard.cpp:565 +#: src/slic3r/GUI/ConfigWizard.cpp:589 msgid "Vendor:" msgstr "Fournisseur :" -#: src/libslic3r/PrintConfig.cpp:928 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Verbose G-code" msgstr "G-code commenté" -#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "Version" @@ -8766,24 +10022,36 @@ msgstr "Version" msgid "version" msgstr "version" -#: src/slic3r/GUI/Tab.cpp:1053 +#: src/slic3r/GUI/Tab.cpp:1375 msgid "Vertical shells" msgstr "Parois verticales" -#: src/slic3r/GUI/GUI_Preview.cpp:218 +#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Vue" -#: src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:1172 msgid "View mode" msgstr "Mode de vue" -#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 -#: src/libslic3r/SLAPrintSteps.cpp:461 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +msgid "" +"Visit \"Preferences\" and check \"%1%\"\n" +"to be asked about unsaved changes again." +msgstr "" +"Accédez aux \"Préférences\" et cochez \"%1%\"\n" +"pour être à nouveau interrogé sur les modifications non enregistrées." + +#: src/libslic3r/PrintConfig.cpp:3553 +msgid "Visualize an already sliced and saved G-code" +msgstr "Visualisez un G-code déjà découpé et enregistré" + +#: src/libslic3r/SLAPrintSteps.cpp:411 src/libslic3r/SLAPrintSteps.cpp:420 +#: src/libslic3r/SLAPrintSteps.cpp:459 msgid "Visualizing supports" msgstr "Visualisation des supports" -#: src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/Plater.cpp:167 msgid "Volume" msgstr "Volume" @@ -8791,23 +10059,23 @@ msgstr "Volume" msgid "Volume to purge (mm³) when the filament is being" msgstr "Volume à purger (mm³) lorsque le filament est" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Volumes in Object reordered" msgstr "Volumes dans l'Objet réorganisés" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "Volumétrique" -#: src/slic3r/GUI/Tab.cpp:1591 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Volumetric flow hints not available" msgstr "Indications du débit volumétrique non disponible" -#: src/slic3r/GUI/GUI_Preview.cpp:226 +#: src/slic3r/GUI/GUI_Preview.cpp:280 msgid "Volumetric flow rate" msgstr "Débit volumétrique" -#: src/libslic3r/GCode/PreviewData.cpp:355 +#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 msgid "Volumetric flow rate (mm³/s)" msgstr "Débit volumétrique (mm³/s)" @@ -8815,151 +10083,166 @@ msgstr "Débit volumétrique (mm³/s)" msgid "Volumetric speed" msgstr "Vitesse volumétrique" -#: src/libslic3r/PrintConfig.cpp:2915 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Wall thickness" msgstr "Épaisseur de la paroi" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1270 src/slic3r/GUI/GUI.cpp:251 -#: src/slic3r/GUI/Tab.cpp:3084 src/slic3r/GUI/WipeTowerDialog.cpp:45 -#: src/slic3r/GUI/WipeTowerDialog.cpp:366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Alerte" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/NotificationManager.cpp:672 +#: src/slic3r/GUI/NotificationManager.cpp:687 +#: src/slic3r/GUI/NotificationManager.cpp:702 +msgid "WARNING:" +msgstr "ATTENTION :" + +#: src/slic3r/GUI/ConfigWizard.cpp:449 msgid "Welcome" msgstr "Bienvenue" -#: src/slic3r/GUI/ConfigWizard.cpp:427 +#: src/slic3r/GUI/ConfigWizard.cpp:445 #, c-format msgid "Welcome to the %s Configuration Assistant" msgstr "Bienvenue dans l'Assistant de Configuration de %s" -#: src/slic3r/GUI/ConfigWizard.cpp:429 +#: src/slic3r/GUI/ConfigWizard.cpp:447 #, c-format msgid "Welcome to the %s Configuration Wizard" msgstr "Bienvenue dans l'Assistant de Configuration de %s" -#: src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/SavePresetDialog.cpp:310 +msgid "What would you like to do with \"%1%\" preset after saving?" +msgstr "Que souhaitez-vous faire avec le préréglage de \"%1%\" après l'enregistrement ?" + +#: src/slic3r/GUI/Preferences.cpp:114 msgid "When checked, the print and filament presets are shown in the preset editor even if they are marked as incompatible with the active printer" msgstr "Lorsqu'ils sont sélectionnés, les préréglages de l'imprimante et du filament sont visibles dans l'éditeur de préréglage même s'ils sont désignés comme incompatibles avec l'imprimante en cours d'utilisation" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/Preferences.cpp:156 +msgid "When closing the application, always ask for unsaved changes" +msgstr "Lors de la fermeture de l'application, toujours demander pour les modifications non enregistrées" + +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "when printing" msgstr "pendant l'impression des" -#: src/libslic3r/PrintConfig.cpp:253 +#: src/libslic3r/PrintConfig.cpp:287 msgid "When printing multi-material objects, this settings will make Slic3r to clip the overlapping object parts one by the other (2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)." msgstr "Lorsque vous imprimez des objets multi-matériaux, ce réglage fera en sorte que Slic3r rattache ensemble les parties de l'objet qui se superposent (la 2e partie sera rattachée à la 1ere, la 3e partie sera rattachée à la 1ere et la 2e, etc...)." -#: src/libslic3r/PrintConfig.cpp:305 +#: src/libslic3r/PrintConfig.cpp:339 msgid "When printing multiple objects or copies, this feature will complete each object before moving onto next one (and starting it from its bottom layer). This feature is useful to avoid the risk of ruined prints. Slic3r should warn and prevent you from extruder collisions, but beware." msgstr "Lorsque vous imprimez plusieurs objets ou copies, ce réglage permet de terminer un objet avant de passer au suivant (en repartant de sa première couche). Cette fonction est utile pour éviter les risques d'impressions gâchées. Slic3r doit vous avertir et éviter les collisions entre les objets et l'extrudeur, mais soyez vigilant." -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:933 msgid "When printing with very low layer heights, you might still want to print a thicker bottom layer to improve adhesion and tolerance for non perfect build plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." msgstr "Lors d'une impression avec de très faibles épaisseurs de couche, vous pouvez choisir d'imprimer une première couche plus épaisse pour améliorer l'adhérence et la tolérance aux plateaux imparfaits. Ce réglage peut être exprimé comme une valeur absolue ou un pourcentage (par exemple 150%) par rapport à l'épaisseur de couche par défaut." -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1661 msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." msgstr "Lorsque la rétractation est déclenchée avant un changement d'outil, le filament est retiré de la longueur indiquée (la longueur est mesurée sur le filament brut, avant qu'il entre dans l'extrudeur)." -#: src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1653 msgid "When retraction is triggered, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." msgstr "Lorsque la rétractation est déclenchée, le filament est tiré en arrière de la longueur indiquée (la longueur est mesurée sur le filament brut, avant qu'il entre dans l'extrudeur)." -#: src/libslic3r/PrintConfig.cpp:1391 +#: src/libslic3r/PrintConfig.cpp:1499 msgid "When set to zero, the distance the filament is moved from parking position during load is exactly the same as it was moved back during unload. When positive, it is loaded further, if negative, the loading move is shorter than unloading." msgstr "Lorsqu'elle est réglée sur zéro, la distance de laquelle le filament est déplacé depuis la position d'attente pendant le chargement est exactement la même que lors de son déchargement. Lorsqu'elle est positive, il est chargé davantage, si elle est négative, le déplacement de chargement est plus court que le déchargement." -#: src/libslic3r/PrintConfig.cpp:1238 +#: src/libslic3r/PrintConfig.cpp:1346 msgid "When setting other speed settings to 0 Slic3r will autocalculate the optimal speed in order to keep constant extruder pressure. This experimental setting is used to set the highest print speed you want to allow." msgstr "Lorsque vous réglez les autres vitesses à 0, Slic3r calculera automatiquement la vitesse optimale de façon à garder une pression constante dans l'extrudeur. Cette fonction expérimentale est utilisée pour régler la plus haute vitesse que vous souhaitez autoriser." -#: src/libslic3r/PrintConfig.cpp:1597 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Lorsque la rétractation est compensée après un changement d'outil, l'extrudeur exprimera cette quantité de filament en plus." -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1697 msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Lorsque la rétractation est compensée après un déplacement, l'extruder exprimera cette quantité de filament en plus. Ce réglage est rarement nécessaire." -#: src/slic3r/GUI/Tab.cpp:3263 +#: src/slic3r/GUI/Tab.cpp:3700 msgid "WHITE BULLET" msgstr "PUCE BLANCHE" -#: src/slic3r/GUI/Tab.cpp:3285 +#: src/slic3r/GUI/Tab.cpp:3722 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "L'icône en forme de PUCE BLANCHE indique un préréglage non-système (ou non par défaut)." -#: src/slic3r/GUI/Tab.cpp:3288 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." msgstr "L'icône en forme de PUCE BLANCHE indique que les réglages sont identiques au dernier préréglage sauvegardé pour le groupe d'options actuel." -#: src/slic3r/GUI/Tab.cpp:3303 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." msgstr "L'icône PUCE BLANCHE indique que la valeur est la même que pour le dernier préréglage sauvegardé." -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 +#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 msgid "Width" msgstr "Largeur" -#: src/libslic3r/GCode/PreviewData.cpp:349 +#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 msgid "Width (mm)" msgstr "Largeur (mm)" -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Width from the back sphere center to the front sphere center" msgstr "Largeur depuis le centre arrière de la sphère jusqu'au centre avant de la sphère" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "Width of a wipe tower" msgstr "Largeur d'une tour de nettoyage" -#: src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3055 msgid "Width of the connector sticks which connect the object and the generated pad." msgstr "Largeur des bâtonnets de connexion qui connectent l'objet et le socle généré." -#: src/libslic3r/PrintConfig.cpp:2354 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Width of the display" msgstr "Largeur de l'affichage" -#: src/slic3r/GUI/PresetHints.cpp:48 +#: src/slic3r/GUI/PresetHints.cpp:47 msgid "will always run at %1%%%" msgstr "fonctionnera toujours à %1%%%" -#: src/slic3r/GUI/PresetHints.cpp:55 +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "sera désactivé." -#: src/libslic3r/PrintConfig.cpp:2441 +#: src/libslic3r/PrintConfig.cpp:2584 msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." msgstr "Va augmenter ou diminuer les polygones 2D découpés en fonction du signe de la correction." -#: src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "Wipe into this object" msgstr "Nettoyer dans cet objet" -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Wipe into this object's infill" msgstr "Nettoyer dans le remplissage de cet objet" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:619 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2260 +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:99 +#: src/slic3r/GUI/GUI_ObjectList.cpp:658 src/libslic3r/PrintConfig.cpp:2395 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Wipe options" msgstr "Options de nettoyage" -#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1191 -#: src/libslic3r/ExtrusionEntity.cpp:321 +#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 +#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Wipe tower" msgstr "Tour de nettoyage" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "wipe tower" msgstr "tour de nettoyage" -#: src/slic3r/GUI/ConfigManipulation.cpp:120 -#: src/slic3r/GUI/ConfigManipulation.cpp:140 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Wipe Tower" msgstr "Tour de Nettoyage" @@ -8967,36 +10250,36 @@ msgstr "Tour de Nettoyage" msgid "Wipe tower - Purging volume adjustment" msgstr "Tour de nettoyage - Ajustement du volume de purge" -#: src/slic3r/GUI/Tab.cpp:1488 +#: src/slic3r/GUI/Tab.cpp:1834 msgid "Wipe tower parameters" msgstr "Paramètres de la tour de nettoyage" -#: src/libslic3r/PrintConfig.cpp:2245 +#: src/libslic3r/PrintConfig.cpp:2388 msgid "Wipe tower rotation angle" msgstr "Angle de rotation de la tour de nettoyage" -#: src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Angle de rotation de la tour de nettoyage par rapport à l'axe X." -#: src/libslic3r/PrintConfig.cpp:2193 +#: src/libslic3r/PrintConfig.cpp:2336 msgid "Wipe while retracting" msgstr "Nettoyer lors des rétractions" -#: src/slic3r/GUI/PresetHints.cpp:225 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "with a volumetric rate" msgstr "avec un débit volumétrique" -#: src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1638 msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." msgstr "Avec les extrudeurs bowden, il est conseillé d'effectuer une rétractation rapide avant de réaliser le mouvement de nettoyage." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "With sheath around the support" msgstr "Avec une enveloppe autour du support" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:68 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:111 msgid "World coordinates" msgstr "Les coordonnées mondiales" @@ -9014,84 +10297,100 @@ msgstr "" "\n" "Ensembles de configuration mis à jour :" -#: src/libslic3r/Zipper.cpp:92 +#: src/libslic3r/miniz_extension.cpp:151 msgid "write calledback failed" msgstr "échec de l'écriture du rappel" -#: src/libslic3r/PrintConfig.cpp:3382 +#: src/libslic3r/PrintConfig.cpp:3581 msgid "Write information about the model to the console." msgstr "Rédiger des informations au sujet du modèle en direction de la console." -#: src/slic3r/Utils/Duet.cpp:131 +#: src/slic3r/Utils/Duet.cpp:133 msgid "Wrong password" msgstr "Mauvais mot de passe" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2368 msgid "X coordinate of the left front corner of a wipe tower" msgstr "Coordonnée X du coin avant gauche d'une tour de nettoyage" -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:2021 msgid "XY separation between an object and its support" msgstr "Séparation XY entre un objet et ses supports" -#: src/libslic3r/PrintConfig.cpp:1881 +#: src/libslic3r/PrintConfig.cpp:2023 msgid "XY separation between an object and its support. If expressed as percentage (for example 50%), it will be calculated over external perimeter width." msgstr "Séparation XY entre un objet et ses supports. Si la valeur est exprimée en pourcentage (par exemple 50%), elle sera calculée à partir de la largeur du périmètre extérieur." -#: src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "XY Size Compensation" msgstr "Compensation de Taille XY" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2375 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Coordonnée Y du coin avant gauche d'une tour de nettoyage" -#: src/slic3r/GUI/Plater.cpp:1170 +#: src/slic3r/GUI/Plater.cpp:1079 msgid "Yes" msgstr "Oui" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/slic3r/GUI/Plater.cpp:1405 +msgid "You can open only one .gcode file at a time." +msgstr "Vous ne pouvez ouvrir qu'un seul fichier .gcode à la fois." + +#: src/libslic3r/PrintConfig.cpp:1425 msgid "You can put here your personal notes. This text will be added to the G-code header comments." msgstr "Vous pouvez inscrire ici vos commentaires personnels. Ce texte sera ajouté au commentaire en entête du G-Code." -#: src/libslic3r/PrintConfig.cpp:589 +#: src/libslic3r/PrintConfig.cpp:625 msgid "You can put your notes regarding the filament here." msgstr "Vous pouvez saisir vos remarques concernant le filament ici." -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "You can put your notes regarding the printer here." msgstr "Vous pouvez saisir ici vos observations concernant l'imprimante." -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2722 msgid "You can put your notes regarding the SLA print material here." msgstr "Vous pouvez mettre ici vos annotations concernant le matériau d'impression SLA." -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:394 msgid "You can set this to a positive value to disable fan at all during the first layers, so that it does not make adhesion worse." msgstr "Vous pouvez régler ce paramètre sur une valeur positive pour désactiver complètement le ventilateur pendant les premières couches, afin de ne pas rendre l'adhérence plus difficile." -#: src/libslic3r/PrintConfig.cpp:1364 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." msgstr "Vous pouvez utiliser toutes les options de configuration comme variables dans ce modèle. Par exemple : [layer_height], [fill_density] etc. Vous pouvez aussi utiliser [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "You can't change a type of the last solid part of the object." msgstr "Vous ne pouvez pas changer un type de la dernière partie solide de l'objet." -#: src/slic3r/GUI/Plater.cpp:2390 +#: src/slic3r/GUI/Plater.cpp:2352 #, c-format msgid "You can't to add the object(s) from %s because of one or some of them is(are) multi-part" msgstr "Vous ne pouvez pas ajouter l'objet (les objets) depuis %s car l'un d'entre eux est en plusieurs parties" -#: src/slic3r/GUI/Plater.cpp:2311 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "Vous ne pouvez pas charger un projet SLA avec un objet en plusieurs parties sur le plateau" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:625 msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "Vous ne pouvez pas utiliser un mode de redimensionnement non-uniforme pour une sélection d'objets/de parties multiples" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:287 +#: src/slic3r/GUI/SavePresetDialog.cpp:277 +msgid "" +"You have selected physical printer \"%1%\" \n" +"with related printer preset \"%2%\"" +msgstr "" +"Vous avez sélectionné l'imprimante physique \"%1%\"\n" +"avec le préréglage d'imprimante associé \"%2%\"" + +#: src/slic3r/GUI/GUI_App.cpp:1078 +msgid "You have the following presets with saved options for \"Print Host upload\"" +msgstr "Vous disposez des préréglages suivants avec des options enregistrées pour le \"Téléchargement vers l'hôte d'impression\"" + +#: src/slic3r/GUI/OpenGLManager.cpp:262 msgid "You may need to update your graphics card driver." msgstr "Vous avez peut-être besoin de mettre à jour le pilote de votre carte graphique." @@ -9099,37 +10398,49 @@ msgstr "Vous avez peut-être besoin de mettre à jour le pilote de votre carte g msgid "You must install a configuration update." msgstr "Il est nécessaire d'installer une mise à niveau de configuration." -#: src/slic3r/GUI/Preferences.cpp:172 +#: src/slic3r/GUI/Preferences.cpp:299 #, c-format msgid "You need to restart %s to make the changes effective." msgstr "Vous devez redémarrer %s afin que les modifications soient appliquées." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +msgid "You should to change a name of your printer device. It can't be saved." +msgstr "Vous devez changer le nom de votre imprimante. Il ne peut pas être enregistré." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 #, c-format msgid "You started your selection with %s Item." msgstr "Vous avez commencé votre sélection avec l'item %s." -#: src/slic3r/GUI/DoubleSlider.cpp:1902 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:664 +msgid "You will not be asked about the unsaved changes the next time you close PrusaSlicer." +msgstr "Vous ne serez pas interrogé sur les modifications non enregistrées la prochaine fois que vous fermerez PrusaSlicer." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +msgid "You will not be asked about the unsaved changes the next time you switch a preset." +msgstr "Vous ne serez pas interrogé sur les modifications non enregistrées la prochaine fois que vous changerez de préréglage." + +#: src/slic3r/GUI/DoubleSlider.cpp:2121 msgid "Your current changes will delete all saved color changes." msgstr "Vos changements actuels supprimeront toutes les changements de couleur enregistrés." -#: src/slic3r/GUI/DoubleSlider.cpp:1923 +#: src/slic3r/GUI/DoubleSlider.cpp:2141 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "Vos changements actuels supprimeront toutes les changement enregistrés de l'extrudeur (outil)." -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Your file was repaired." msgstr "Votre fichier a été réparé." -#: src/slic3r/GUI/Plater.cpp:2528 +#: src/slic3r/GUI/Plater.cpp:2490 msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." msgstr "Votre objet semble être trop grand, il a donc été automatiquement réduit afin de l'adapter à votre plateau d'impression." -#: src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Décalage Z" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 +#: src/slic3r/GUI/ConfigManipulation.cpp:59 msgid "" "Zero first layer height is not valid.\n" "\n" @@ -9139,7 +10450,7 @@ msgstr "" "\n" "La hauteur de la première couche sera réinitialisée à 0,01." -#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/ConfigManipulation.cpp:47 msgid "" "Zero layer height is not valid.\n" "\n" @@ -9149,28 +10460,28 @@ msgstr "" "\n" "La hauteur de la couche sera réinitialisée à 0,01." -#: src/libslic3r/PrintConfig.cpp:2667 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/slic3r/GUI/Mouse3DController.cpp:308 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Zoom" msgstr "Zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 msgid "Zoom in" msgstr "Zoom avant" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 msgid "Zoom out" msgstr "Zoom arrière" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Zoom to Bed" msgstr "Zoomer sur le Lit" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "" "Zoom to selected object\n" "or all objects in scene, if none selected" @@ -9178,14 +10489,16 @@ msgstr "" "Zoomer sur l'objet sélectionné\n" "ou sur tous les objets sur la scène, si aucun n'est sélectionné" -#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 -#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 -#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2727 -#: src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:241 src/libslic3r/PrintConfig.cpp:816 +#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "°" msgstr "°" -#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 +#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 msgid "°C" msgstr "°C" diff --git a/resources/localization/it/PrusaSlicer.mo b/resources/localization/it/PrusaSlicer.mo index cb07f0949ba50e4851654e912d497736ce820b56..b8903a0f619e4a9876cd24df094e0b07bce4dfce 100644 GIT binary patch delta 79799 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 N=T_9)|HbgD{}0M2ERp~K delta 51801 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%0AGjl3~VMNU?=!L2H6*& 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 NS#byXbFlT${{hzrO``w+ diff --git a/resources/localization/it/PrusaSlicer_it.po b/resources/localization/it/PrusaSlicer_it.po index 9cb5960b9..bebc6ef5b 100644 --- a/resources/localization/it/PrusaSlicer_it.po +++ b/resources/localization/it/PrusaSlicer_it.po @@ -5,343 +5,425 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: PhraseApp (phraseapp.com)\n" +"X-Generator: Poedit 2.4.2\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" -#: src/slic3r/GUI/MainFrame.cpp:66 -msgid " - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/releases" -msgstr " - Ricordati di controllare gli aggiornamenti su http://github.com/prusa3d/PrusaSlicer/releases" +#: src/slic3r/GUI/Tab.cpp:4124 +msgid "" +"\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" +"To enable \"%1%\", please switch off \"%2%\"" +msgstr "" +"\"%1%\" è disattivato perchè \"%2%\" è nella categoria \"%3%\".\n" +"Per attivare \"%1%\", si prega di spegnere \"%2%\"" -#: src/slic3r/GUI/MainFrame.cpp:872 -msgid " was successfully sliced." -msgstr " generato con successo." - -#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 -#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 -#: src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 +#: src/libslic3r/PrintConfig.cpp:2931 msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:963 -#, possible-c-format +#: src/slic3r/GUI/GLCanvas3D.cpp:969 +#, c-format msgid "%.2f - %.2f mm" msgstr "%.2f - %.2f mm" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" msgstr "%1% Preset" -#: src/slic3r/GUI/Plater.cpp:4400 +#: src/slic3r/GUI/Plater.cpp:4423 msgid "%1% printer was active at the time the target Undo / Redo snapshot was taken. Switching to %1% printer requires reloading of %1% presets." msgstr "La stampante %1% era attiva nel momento in cui è stata creata l'istantanea di Annulla / Ripeti dell'oggetto. Passare alla stampante %1% richiede il ricaricamento dei preset %1%." -#: src/libslic3r/Print.cpp:1374 +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." +msgstr "%1% generato con successo." + +#: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "%1%=%2% mm è troppo basso per essere un altezza layer stampabile %3% mm" -#: src/slic3r/GUI/PresetHints.cpp:229 -#, possible-c-format +#: src/slic3r/GUI/PresetHints.cpp:228 +#, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm³/s alla velocità del filamento di %3.2f mm/s." -#: src/slic3r/GUI/Plater.cpp:1152 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:1061 +#, c-format msgid "%d (%d shells)" msgstr "%d (%d di perimetri)" -#: src/slic3r/GUI/Plater.cpp:1160 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:1069 +#, c-format msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" msgstr "%d facce degenerate, %d spigoli riparati, %d facce rimosse, %d faccee aggiunte, %d facce invertite, %d spigoli inversi" -#: src/slic3r/GUI/PresetHints.cpp:270 -#, possible-c-format +#: src/slic3r/GUI/PresetHints.cpp:269 +#, c-format msgid "%d lines: %.2f mm" msgstr "%d linee: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1027 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:1728 +#, c-format msgid "%d presets successfully imported." msgstr "%d preset importati correttamente." -#: src/slic3r/GUI/MainFrame.cpp:692 -#, possible-c-format +#: src/slic3r/GUI/GUI_App.cpp:718 +#, c-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"Vuoi continuare?" + +#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 +#, c-format msgid "%s &Website" -msgstr "%s Sito &Web" +msgstr "Sito &Web %s" + +#: src/slic3r/GUI/GUI_App.cpp:394 +#, c-format +msgid "%s - BREAKING CHANGE" +msgstr "%s - BREAKING CHANGE" #: src/slic3r/GUI/UpdateDialogs.cpp:211 -#, possible-c-format +#, c-format msgid "%s configuration is incompatible" msgstr "configurazione %s non compatibile" -#: src/slic3r/GUI/Field.cpp:175 -#, possible-c-format +#: src/slic3r/GUI/Field.cpp:223 +#, c-format msgid "%s doesn't support percentage" msgstr "%s non supporta la percentuale" #: src/slic3r/GUI/MsgDialog.cpp:73 -#, possible-c-format +#, c-format msgid "%s error" msgstr "errore %s" -#: src/slic3r/GUI/ConfigWizard.cpp:481 -#, possible-c-format +#: src/slic3r/GUI/ConfigWizard.cpp:499 +#, c-format msgid "%s Family" msgstr "Famiglia %s" #: src/slic3r/GUI/MsgDialog.cpp:74 -#, possible-c-format +#, c-format msgid "%s has encountered an error" msgstr "%s ha riscontrato un errore" -#: src/slic3r/GUI/GUI_App.cpp:138 -#, possible-c-format -msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n\nThe application will now terminate." -msgstr "%s ha riscontrato un errore. Probabilmente è stato causato dalla memoria piena. Se sei sicuro di avere abbastanza RAM nel sistema, questo potrebbe essere un bug e te ne saremmo grati se potessi informarci.\n\nL'applicazione verrà chiusa." +#: src/slic3r/GUI/GUI_App.cpp:528 +#, c-format +msgid "" +"%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n" +"\n" +"The application will now terminate." +msgstr "" +"%s ha riscontrato un errore. Probabilmente è stato causato dalla memoria piena. Se sei sicuro di avere abbastanza RAM nel sistema, questo potrebbe essere un bug e te ne saremmo grati se potessi informarci.\n" +"\n" +"L'applicazione verrà chiusa." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:222 -#, possible-c-format +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:62 +#, c-format msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it." msgstr "%s ha riscontrato un errore. Probabilmente è stato causato dalla memoria piena. Se sei sicuro di avere abbastanza RAM nel sistema, questo potrebbe essere un bug e te ne saremmo grati se potessi informarci." -#: src/slic3r/GUI/UpdateDialogs.cpp:308 -#, possible-c-format +#: src/slic3r/GUI/UpdateDialogs.cpp:309 +#, c-format msgid "%s has no configuration updates available." msgstr "Non sono disponibili aggiornamenti di configurazione per %s." #: src/slic3r/GUI/UpdateDialogs.cpp:148 src/slic3r/GUI/UpdateDialogs.cpp:210 -#, possible-c-format +#, c-format msgid "%s incompatibility" msgstr "incompatibilità %s" #: src/slic3r/GUI/UpdateDialogs.cpp:270 -#, possible-c-format -msgid "%s now uses an updated configuration structure.\n\nSo called 'System presets' have been introduced, which hold the built-in default settings for various printers. These System presets cannot be modified, instead, users now may create their own presets inheriting settings from one of the System presets.\nAn inheriting preset may either inherit a particular value from its parent or override it with a customized value.\n\nPlease proceed with the %s that follows to set up the new presets and to choose whether to enable automatic preset updates." -msgstr "%s adesso utilizza uno schema aggiornato di configurazioni.\n\nSono stati introdotti i così detti 'Preset di sistema', che contengono i settaggi integrati predefiniti per varie stampanti. Questi preset di sistema non possono essere modificati, però l'utente può creare i propri preset ereditando le impostazioni da quelli di sistema.\nUn preset ereditato può sia ereditare un valore particolare dal genitore, o sovrascriverlo con un valore personalizzato.\n\nSi prega di procedere con il %s che segue per impostare i nuovi preset e scegliere se abilitare gli aggiornamenti automatici del preset." +#, c-format +msgid "" +"%s now uses an updated configuration structure.\n" +"\n" +"So called 'System presets' have been introduced, which hold the built-in default settings for various printers. These System presets cannot be modified, instead, users now may create their own presets inheriting settings from one of the System presets.\n" +"An inheriting preset may either inherit a particular value from its parent or override it with a customized value.\n" +"\n" +"Please proceed with the %s that follows to set up the new presets and to choose whether to enable automatic preset updates." +msgstr "" +"%s adesso utilizza uno schema aggiornato di configurazioni.\n" +"\n" +"Sono stati introdotti i così detti 'Preset di sistema', che contengono i settaggi integrati predefiniti per varie stampanti. Questi preset di sistema non possono essere modificati, però l'utente può creare i propri preset ereditando le impostazioni da quelli di sistema.\n" +"Un preset ereditato può sia ereditare un valore particolare dal genitore, o sovrascriverlo con un valore personalizzato.\n" +"\n" +"Si prega di procedere con il %s che segue per impostare i nuovi preset e scegliere se abilitare gli aggiornamenti automatici del preset." -#: src/slic3r/GUI/GUI_App.cpp:820 -#, possible-c-format +#: src/slic3r/GUI/GUI_App.cpp:1512 +#, c-format msgid "%s View Mode" msgstr "%s Modalità Visualizzazione" #: src/slic3r/GUI/UpdateDialogs.cpp:151 -#, possible-c-format -msgid "%s will now start updates. Otherwise it won't be able to start.\n\nNote that a full configuration snapshot will be created first. It can then be restored at any time should there be a problem with the new version.\n\nUpdated configuration bundles:" -msgstr "%s avvierà gli aggiornamenti. In caso contrario non sarà in grado di avviarsi.\n\nSi fa noto che prima verrà creata un'istantanea della configurazione completa. Questa potrà essere ripristinata in qualunque momento se dovesse esserci un problema con la nuova versione.\n\nPacchetti di configurazione aggiornati:" +#, c-format +msgid "" +"%s will now start updates. Otherwise it won't be able to start.\n" +"\n" +"Note that a full configuration snapshot will be created first. It can then be restored at any time should there be a problem with the new version.\n" +"\n" +"Updated configuration bundles:" +msgstr "" +"%s avvierà gli aggiornamenti. In caso contrario non sarà in grado di avviarsi.\n" +"\n" +"Si fa noto che prima verrà creata un'istantanea della configurazione completa. Questa potrà essere ripristinata in qualunque momento se dovesse esserci un problema con la nuova versione.\n" +"\n" +"Pacchetti di configurazione aggiornati:" -#: src/slic3r/GUI/MainFrame.cpp:705 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 +#, c-format msgid "&About %s" msgstr "Inform&azioni su %s" -#: src/slic3r/GUI/GUI_App.cpp:908 +#: src/slic3r/GUI/MainFrame.cpp:1297 +msgid "&Collapse sidebar" +msgstr "Ridu&ci barra laterale" + +#: src/slic3r/GUI/GUI_App.cpp:1645 msgid "&Configuration" msgstr "&Configurazione" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "&Configuration Snapshots" msgstr "Istantanee di &Configurazione" -#: src/slic3r/GUI/MainFrame.cpp:588 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Copy" msgstr "&Copia" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "&Delete selected" msgstr "Eli&mina selezionati" -#: src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 msgid "&Edit" msgstr "&Modifiche" -#: src/slic3r/GUI/MainFrame.cpp:506 +#: src/slic3r/GUI/MainFrame.cpp:1103 msgid "&Export" msgstr "&Esporta" -#: src/slic3r/GUI/MainFrame.cpp:617 src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 msgid "&Filament Settings Tab" msgstr "Impostazioni &Filamento" -#: src/slic3r/GUI/MainFrame.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 +#: src/slic3r/GUI/MainFrame.cpp:1417 msgid "&File" msgstr "&File" -#: src/slic3r/GUI/ConfigWizard.cpp:1981 +#: src/slic3r/GUI/ConfigWizard.cpp:2492 msgid "&Finish" msgstr "&Completa" -#: src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:1141 +msgid "&G-code preview" +msgstr "Anteprima &G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 +#: src/slic3r/GUI/MainFrame.cpp:1423 msgid "&Help" msgstr "&Aiuto" -#: src/slic3r/GUI/MainFrame.cpp:474 +#: src/slic3r/GUI/MainFrame.cpp:1065 msgid "&Import" msgstr "&Importa" -#: src/slic3r/GUI/GUI_App.cpp:822 +#: src/slic3r/GUI/GUI_App.cpp:1517 msgid "&Language" msgstr "&Lingua" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "&New Project" msgstr "&Nuovo progetto" -#: src/slic3r/GUI/ConfigWizard.cpp:1980 +#: src/slic3r/GUI/ConfigWizard.cpp:2491 msgid "&Next >" msgstr "&Successivo>" -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "&Open G-code" +msgstr "Apri G-code" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "&Open Project" msgstr "Apri Pr&ogetto" -#: src/slic3r/GUI/MainFrame.cpp:591 +#: src/slic3r/GUI/MainFrame.cpp:1197 msgid "&Paste" msgstr "I&ncolla" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "&Plater Tab" msgstr "&Piano" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1487 msgid "&Preferences" msgstr "&Preferenze" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 msgid "&Quit" msgstr "Es&ci" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:1189 msgid "&Redo" msgstr "&Ripeti" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "&Repair STL file" msgstr "&Ripara file STL" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "&Save Project" msgstr "&Salva Progetto" -#: src/slic3r/GUI/MainFrame.cpp:565 +#: src/slic3r/GUI/MainFrame.cpp:1171 msgid "&Select all" msgstr "&Seleziona tutto" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:1186 msgid "&Undo" msgstr "Ann&ulla" -#: src/slic3r/GUI/MainFrame.cpp:724 +#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 +#: src/slic3r/GUI/MainFrame.cpp:1418 msgid "&View" msgstr "&Vista" -#: src/slic3r/GUI/MainFrame.cpp:723 +#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 msgid "&Window" msgstr "Fines&tra" -#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 +#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 msgid "(All)" msgstr "(Tutto)" -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1554 msgid "(minimum)" msgstr "(minimo)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "(Re)slice" msgstr "(Ri)processa" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "(Re)Slice No&w" msgstr "(Re)Sli&ce Ora" -#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 msgid "(Unknown)" msgstr "(Sconosciuto)" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") non trovato." -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "0 (soluble)" msgstr "0 (solubile)" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "0.2 (detachable)" msgstr "0.2 (rimovibile)" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/Plater.cpp:4097 +#: src/slic3r/GUI/Plater.cpp:4044 msgid "3D editor view" msgstr "Vista modifica 3D" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:889 msgid "3D Honeycomb" msgstr "Nido d'ape 3D" -#: src/slic3r/GUI/Mouse3DController.cpp:274 +#: src/slic3r/GUI/NotificationManager.hpp:318 +msgid "3D Mouse disconnected." +msgstr "Mouse 3D disconnesso." + +#: src/slic3r/GUI/Mouse3DController.cpp:263 msgid "3Dconnexion settings" msgstr "Impostazioni 3Dconnexion" -#: src/slic3r/GUI/Plater.cpp:5038 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:5167 +#, c-format msgid "3MF file exported to %s" msgstr "File 3MF esportato in %s" -#: src/slic3r/GUI/ConfigWizard.cpp:1979 +#: src/slic3r/GUI/ConfigWizard.cpp:2490 msgid "< &Back" msgstr "< &Precedente" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:321 msgid "A boolean expression using the configuration values of an active print profile. If this expression evaluates to true, this profile is considered compatible with the active print profile." msgstr "Un'espressione booleana che usa i valori di configurazione di un profilo di stampa attivo. Se questa espressione produce un risultato vero, questo profilo si considera compatibile con il profilo stampante attivo." -#: src/libslic3r/PrintConfig.cpp:272 +#: src/libslic3r/PrintConfig.cpp:306 msgid "A boolean expression using the configuration values of an active printer profile. If this expression evaluates to true, this profile is considered compatible with the active printer profile." msgstr "Un'espressione booleana che usa i valori di configurazione di un profilo stampante attivo. Se questa espressione produce un risultato vero, questo profilo si considera compatibile con il profilo stampante attivo." -#: src/slic3r/GUI/Tab.cpp:975 +#: src/slic3r/GUI/Tab.cpp:1237 msgid "A copy of the current system preset will be created, which will be detached from the system preset." msgstr "Verrà creata una copia del preset di sistema corrente, e verrà distaccata dal preset di sistema." -#: src/slic3r/GUI/ConfigWizard.cpp:1034 +#: src/slic3r/GUI/ConfigWizard.cpp:1400 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "Una regola generale è da 160 a 230°C per il PLA, e da 215 a 250°C per l'ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:1048 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." msgstr "Una regola generale è 60°C per il PLA e 110°C per l'ABS. Lascia a zero se non hai un piano riscaldato." -#: src/slic3r/GUI/GLCanvas3D.cpp:686 -msgid "A toolpath outside the print area was detected" -msgstr "È stato rilevato un percorso al di fuori dell'area di stampa" +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "A toolpath outside the print area was detected." +msgstr "È stato rilevato un percorso fuori dall'area di stampa." -#: src/slic3r/GUI/AboutDialog.cpp:199 -#, possible-c-format +#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 +#, c-format msgid "About %s" msgstr "Informazioni su %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:959 -#, possible-c-format +#: src/slic3r/GUI/GCodeViewer.cpp:2189 +msgid "above" +msgstr "sopra" + +#: src/slic3r/GUI/GLCanvas3D.cpp:965 +#, c-format msgid "above %.2f mm" msgstr "sopra %.2f mm" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Z Sopra" -#: src/slic3r/GUI/Tab.cpp:1164 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Acceleration control (advanced)" msgstr "Controllo Accelerazione (avanzato)" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Accuracy" msgstr "Precisione" +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 +msgid "Accurate" +msgstr "Precisa" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Attiva" @@ -350,67 +432,75 @@ msgstr "Attiva" msgid "Active" msgstr "Attivo" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1705 +#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "attivo" -#: src/slic3r/GUI/GLCanvas3D.cpp:267 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Adaptive" msgstr "Adattivo" -#: src/slic3r/GUI/Tab.cpp:241 -msgid "Add a new printer" -msgstr "Aggiungi una nuova stampante" +#: src/libslic3r/PrintConfig.cpp:894 +msgid "Adaptive Cubic" +msgstr "Adattivo Cubico" -#: src/libslic3r/PrintConfig.cpp:2782 +#: src/slic3r/GUI/SavePresetDialog.cpp:314 +msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" +msgstr "Aggiunge \"%1%\" come prossimo preset per la stampante fisica \"%2%\"" + +#: src/libslic3r/PrintConfig.cpp:2946 msgid "Add a pad underneath the supported model" msgstr "Aggiungi un pad sotto il modello supportato" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2200 msgid "Add a sheath (a single perimeter line) around the base support. This makes the support more reliable, but also more difficult to remove." msgstr "Aggiunge un contorno (una singola linea di perimetro) attorno alla base del supporto. Questo rende il supporto più affidabile, ma anche più difficile da rimuovere." -#: src/slic3r/GUI/DoubleSlider.cpp:991 +#: src/slic3r/GUI/DoubleSlider.cpp:1114 msgid "Add another code - Ctrl + Left click" msgstr "Aggiungi altro codice - Ctrl + Clic sinistro" -#: src/slic3r/GUI/DoubleSlider.cpp:992 +#: src/slic3r/GUI/DoubleSlider.cpp:1115 msgid "Add another code - Right click" msgstr "Aggiungi un altro codice - Clic destro" -#: src/slic3r/GUI/DoubleSlider.cpp:1477 +#: src/slic3r/GUI/DoubleSlider.cpp:1665 msgid "Add color change" msgstr "Aggiungi cambio colore" -#: src/slic3r/GUI/DoubleSlider.cpp:1180 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "Add color change (%1%) for:" msgstr "Aggiungi cambio colore (%1%) per:" -#: src/slic3r/GUI/DoubleSlider.cpp:988 +#: src/slic3r/GUI/DoubleSlider.cpp:1111 msgid "Add color change - Left click" msgstr "Aggiungi cambio colore - Clic sinistro" -#: src/slic3r/GUI/DoubleSlider.cpp:986 +#: src/slic3r/GUI/DoubleSlider.cpp:1109 msgid "Add color change - Left click for predefined color or Shift + Left click for custom color selection" msgstr "Aggiungi cambio colore - Clic sinistro per colore predefinito o Maiusc + Clic sinistro per selezione personalizzata del colore" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Add color change marker for current layer" msgstr "Aggiungi un segnale di cambio colore al layer corrente" -#: src/slic3r/GUI/DoubleSlider.cpp:1490 +#: src/slic3r/GUI/DoubleSlider.cpp:1682 msgid "Add custom G-code" msgstr "Aggiungi un G-code personalizzato" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/DoubleSlider.cpp:1679 +msgid "Add custom template" +msgstr "Aggiungi un modello personalizzato" + +#: src/slic3r/GUI/GLCanvas3D.cpp:235 msgid "Add detail" msgstr "Aggiungi dettagli" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:421 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:308 msgid "Add drainage hole" msgstr "Aggiungi foro di drenaggio" -#: src/slic3r/GUI/DoubleSlider.cpp:984 +#: src/slic3r/GUI/DoubleSlider.cpp:1107 msgid "Add extruder change - Left click" msgstr "Aggiungi cambio estrusore - Clic sinistro" @@ -418,30 +508,30 @@ msgstr "Aggiungi cambio estrusore - Clic sinistro" msgid "Add extruder to sequence" msgstr "Aggiungi estrusore alla sequenza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1993 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 msgid "Add Generic Subobject" msgstr "Aggiungi sotto-oggetto generico" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2896 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2925 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2943 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 msgid "Add Height Range" msgstr "Aggiungi Intervallo Altezza" -#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3788 -#: src/slic3r/GUI/Plater.cpp:3800 src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 +#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 msgid "Add instance" msgstr "Aggiungi istanza" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 msgid "Add Instance of the selected object" msgstr "Aggiungi istanza all'oggetto selezionato" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:165 msgid "Add layer range" msgstr "Aggiungi intervallo layer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2328 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 msgid "Add Layers" msgstr "Aggiungi layer" @@ -449,12 +539,12 @@ msgstr "Aggiungi layer" msgid "Add modifier" msgstr "Aggiungi modificatore" -#: src/libslic3r/PrintConfig.cpp:479 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:515 +#, c-format msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." msgstr "Aggiunge più perimetri quando necessario per evitare spazi tra i perimetri inclinati. Slic3r continua ad aggiungere perimetri fino a quando almeno il 70% del giro immediatamente sopra sarà supportato." -#: src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/Plater.cpp:3858 msgid "Add one more instance of the selected object" msgstr "Aggiungi un'altra istanza dell'oggetto selezionato" @@ -462,52 +552,61 @@ msgstr "Aggiungi un'altra istanza dell'oggetto selezionato" msgid "Add part" msgstr "Aggiungi parte" -#: src/slic3r/GUI/DoubleSlider.cpp:1487 +#: src/slic3r/GUI/DoubleSlider.cpp:1675 msgid "Add pause print" msgstr "Aggiungi pausa di stampa" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 +#: src/slic3r/GUI/PresetComboBoxes.cpp:627 +#: src/slic3r/GUI/PresetComboBoxes.cpp:674 +msgid "Add physical printer" +msgstr "Aggiungi stampante fisica" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "Add point" msgstr "Aggiungi punto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 msgid "Add point to selection" msgstr "Aggiungi punto alla selezione" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1509 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +msgid "Add preset for this printer device" +msgstr "Aggiungi preset per questa stampante" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 msgid "Add settings" msgstr "Aggiungi impostazioni" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1386 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 msgid "Add Settings Bundle for Height range" msgstr "Aggiungi Gruppo impostazioni per intervallo Altezza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 msgid "Add Settings Bundle for Object" msgstr "Aggiungi gruppo di impostazioni per l'oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 msgid "Add Settings Bundle for Sub-object" msgstr "Aggiungi Gruppi di Impostazioni per il sotto-progetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1314 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 msgid "Add Settings for Layers" msgstr "Aggiungi impostazioni per i layer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 msgid "Add Settings for Object" msgstr "Aggiungi impostazioni per l'oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 msgid "Add Settings for Sub-object" msgstr "Aggiungi impostazioni per il sotto-oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2051 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2210 msgid "Add Shape" msgstr "Aggiungi Forma" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:443 msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." msgstr "Aggiunge un riempimento solido vicino le superfici inclinate per garantire lo spessore verticale (layer solidi superiore + inferiore)" @@ -519,11 +618,19 @@ msgstr "Aggiungi blocco supporto" msgid "Add support enforcer" msgstr "Aggiungi rinforzo supporto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:494 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:374 msgid "Add support point" msgstr "Aggiungi punto di supporto" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 +msgid "Add supports" +msgstr "Aggiungi supporti" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +msgid "Add supports by angle" +msgstr "Aggiungi supporti all'angolo" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4833 msgid "Add..." msgstr "Aggiungi..." @@ -531,23 +638,29 @@ msgstr "Aggiungi..." msgid "Add/Remove filaments" msgstr "Aggiungi/Rimuovi filamenti" -#: src/slic3r/GUI/Preset.cpp:1201 +#: src/slic3r/GUI/PresetComboBoxes.cpp:813 msgid "Add/Remove materials" msgstr "Aggiungi/Rimuovi materiali" -#: src/slic3r/GUI/Preset.cpp:1203 +#: src/slic3r/GUI/PresetComboBoxes.cpp:622 +#: src/slic3r/GUI/PresetComboBoxes.cpp:669 +msgid "Add/Remove presets" +msgstr "Aggiungi/Rimuovi preset" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:815 +#: src/slic3r/GUI/PresetComboBoxes.cpp:972 msgid "Add/Remove printers" msgstr "Aggiungi/Rimuovi stampanti" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "Additional information:" msgstr "Informazioni aggiuntive:" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:62 msgid "Additional Settings" msgstr "Impostazioni Aggiuntive" -#: src/slic3r/GUI/ConfigWizard.cpp:791 +#: src/slic3r/GUI/ConfigWizard.cpp:1150 msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." msgstr "Inoltre viene generata una copia di backup dei preset prima di applicare un aggiornamento." @@ -555,23 +668,22 @@ msgstr "Inoltre viene generata una copia di backup dei preset prima di applicare msgid "Address" msgstr "Indirizzo" -#: src/slic3r/GUI/GUI_App.cpp:814 src/slic3r/GUI/GUI_ObjectList.cpp:104 -#: src/slic3r/GUI/GUI_ObjectList.cpp:622 src/slic3r/GUI/Tab.cpp:1087 -#: src/slic3r/GUI/Tab.cpp:1102 src/slic3r/GUI/Tab.cpp:1201 -#: src/slic3r/GUI/Tab.cpp:1204 src/slic3r/GUI/Tab.cpp:1470 -#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:3661 -#: src/slic3r/GUI/wxExtensions.cpp:754 src/libslic3r/PrintConfig.cpp:88 -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 -#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2448 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 +#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 +#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 +#: src/libslic3r/PrintConfig.cpp:2591 msgid "Advanced" msgstr "Avanzate" -#: src/slic3r/GUI/ConfigWizard.cpp:821 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "Advanced mode" msgstr "Modalità Avanzata" -#: src/slic3r/GUI/GUI_App.cpp:814 +#: src/slic3r/GUI/GUI_App.cpp:1506 msgid "Advanced View Mode" msgstr "Modalità Visualizzazione Avanzata" @@ -579,219 +691,271 @@ msgstr "Modalità Visualizzazione Avanzata" msgid "Advanced: Output log" msgstr "Avanzato: Log di output" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:704 msgid "After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, and the filament pressure is likely not yet stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." msgstr "Dopo un cambio di attrezzo, l'esatta posizione del filamento appena caricato dentro l'ugello potrebbe essere sconosciuta, e la pressione del filamento probabilmente non è ancora stabile. Prima di spurgare la testina di stampa nel riempimento o in un oggetto sacrificale, Slic3r posizionerà questo materiale in una torre di spurgo al fine di ottenere una successiva estrusione affidabile su oggetto sacrificale o riempimento." -#: src/slic3r/GUI/Tab.cpp:1994 src/libslic3r/PrintConfig.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 msgid "After layer change G-code" msgstr "G-code dopo il cambio layer" -#: src/libslic3r/PrintConfig.cpp:3398 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Align the model to the given point." msgstr "Allinea il modello al punto dato." -#: src/libslic3r/PrintConfig.cpp:3397 +#: src/libslic3r/PrintConfig.cpp:3596 msgid "Align XY" msgstr "Allinea XY" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1739 msgid "Aligned" msgstr "Allineato" -#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 -#: src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 +#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "Tutto" -#: src/libslic3r/Print.cpp:1219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" +msgstr "Tutti i gizmos: Ruota - tasto destro del mouse; Panoramica - tasto destro del mouse" + +#: src/slic3r/GUI/ConfigWizard.cpp:694 +msgid "All installed printers are compatible with the selected filament." +msgstr "Tutte le stampanti installate sono compatibili con il filamento selezionato." + +#: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Tutti gli oggetti sono fuori dal volume di stampa." -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "All objects will be removed, continue?" msgstr "Saranno rimossi tutti gli oggetti, continuare?" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All settings changes will be discarded." +msgstr "Tutte le modifiche alle impostazioni verranno eliminate." + +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Tutto standard" -#: src/libslic3r/Zipper.cpp:62 +#: src/libslic3r/miniz_extension.cpp:121 msgid "allocation failed" msgstr "allocazione fallita" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Lungo asse X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Along Y axis" msgstr "Lungo asse Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Along Z axis" msgstr "Lungo l'asse Z" -#: src/slic3r/GUI/ConfigWizard.cpp:222 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:160 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:141 +msgid "Alt + Mouse wheel" +msgstr "Alt + Rotella del mouse" + +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "Alternate nozzles:" msgstr "Ugelli alternativi:" -#: src/slic3r/GUI/Plater.cpp:5002 -#, possible-c-format +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "Always ask for unsaved changes when selecting new preset" +msgstr "Chiedere sempre riguardo le modifiche non salvate quando si seleziona un nuovo preset" + +#: src/slic3r/GUI/Plater.cpp:5135 +#, c-format msgid "AMF file exported to %s" msgstr "File AMF esportato in %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:690 -msgid "An object outside the print area was detected\nResolve the current problem to continue slicing" -msgstr "È stato rilevato un oggetto al di fuori dell'area di stampa\nRisolvere il problema per continuare lo slicing" +#: src/slic3r/GUI/GLCanvas3D.cpp:638 +msgid "" +"An object outside the print area was detected.\n" +"Resolve the current problem to continue slicing." +msgstr "" +"È stato rilevato un oggetto al di fuori dell'area di stampa.\n" +"Risolvere il problema per continuare lo slicing." -#: src/slic3r/GUI/GLCanvas3D.cpp:685 -msgid "An object outside the print area was detected" -msgstr "È stato rilevato un oggetto al di fuori dell'area di stampa" +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "An object outside the print area was detected." +msgstr "È stato rilevato un oggetto al di fuori dell'area di stampa." -#: src/slic3r/GUI/Tab.cpp:2943 -msgid "and it has the following unsaved changes:" -msgstr "e ha i seguenti cambiamenti non salvati:" - -#: src/slic3r/GUI/Plater.cpp:3170 +#: src/slic3r/GUI/Plater.cpp:2972 msgid "Another export job is currently running." msgstr "Un altro processo di esportazione è in corso." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Any arrow" msgstr "Qualunque freccia" -#: src/slic3r/GUI/Tab.cpp:965 +#: src/slic3r/GUI/Tab.cpp:1283 msgid "Any modifications should be saved as a new preset inherited from this one." msgstr "Qualunque modifica deve essere salvata come un nuovo preset ereditato da questo." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:106 msgid "API Key / Password" msgstr "Chiave API / Password" -#: src/slic3r/GUI/GUI_App.cpp:810 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Application preferences" msgstr "Preferenze applicazione" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1374 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1221 msgid "Apply changes" msgstr "Applica cambiamenti" -#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:611 src/libslic3r/PrintConfig.cpp:1823 msgid "approximate seconds" msgstr "secondi approssimativi" -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 +#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 msgid "Archimedean Chords" msgstr "Corde di Archimede" -#: src/libslic3r/Zipper.cpp:88 +#: src/libslic3r/miniz_extension.cpp:147 msgid "archive is too large" msgstr "l'archivio è troppo grande" -#. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3420 msgid "Are you sure you want to %1% the selected preset?" msgstr "Sei sicuro di voler %1% il preset selezionato?" #: src/slic3r/GUI/FirmwareDialog.cpp:902 -msgid "Are you sure you want to cancel firmware flashing?\nThis could leave your printer in an unusable state!" -msgstr "Sei sicuro di voler annullare il flash del firmware?\nQuesto potrebbe lasciare la tua stampante in una condizione inutilizzabile!" +msgid "" +"Are you sure you want to cancel firmware flashing?\n" +"This could leave your printer in an unusable state!" +msgstr "" +"Sei sicuro di voler annullare il flash del firmware?\n" +"Questo potrebbe lasciare la tua stampante in una condizione inutilizzabile!" -#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 msgid "Are you sure you want to continue?" msgstr "Sei sicuro di voler continuare?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1269 +#: src/slic3r/GUI/Tab.cpp:3392 +msgid "Are you sure you want to delete \"%1%\" preset from the physical printer \"%2%\"?" +msgstr "Sei sicuro di voler eliminare il preset \"%1%\" dalla stampante fisica \"%2%\"?" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +msgid "Are you sure you want to delete \"%1%\" printer?" +msgstr "Sicuro di voler eliminare la stampante \"%1%\"?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1128 msgid "Are you sure you want to do it?" msgstr "Sei sicuro di voler procedere?" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Area fill" msgstr "Riempimento area" -#: src/slic3r/GUI/Plater.cpp:641 +#: src/slic3r/GUI/Plater.cpp:507 msgid "Around object" msgstr "Intorno all'oggetto" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 -#: src/slic3r/GUI/Plater.cpp:2754 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1549 msgid "Arrange" msgstr "Disponi" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "Disponi selezione" -#: src/libslic3r/PrintConfig.cpp:3443 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." msgstr "Disponi i modelli su un piano e uniscili in un singolo modello al fine di effettuare le operazioni una singola volta." -#: src/slic3r/GUI/Plater.cpp:2813 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:149 msgid "Arranging" msgstr "Disponendo" -#: src/slic3r/GUI/Plater.cpp:2841 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 msgid "Arranging canceled." msgstr "Disposizione annullata." -#: src/slic3r/GUI/Plater.cpp:2842 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 msgid "Arranging done." msgstr "Disposizione completata." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Down" msgstr "Freccia giù" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 msgid "Arrow Left" msgstr "Freccia sinistra" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Arrow Right" msgstr "Freccia Destra" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Up" msgstr "Freccia Su" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:290 +#: src/slic3r/GUI/GUI_App.cpp:246 +msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" +msgstr "Modello grafico di Nora Al-Badri e Jan Nikolai Nelles" + +#: src/slic3r/GUI/OpenGLManager.cpp:265 msgid "As a workaround, you may run PrusaSlicer with a software rendered 3D graphics by running prusa-slicer.exe with the --sw_renderer parameter." msgstr "Come soluzione alternativa, è possibile eseguire PrusaSlicer con una grafica 3D di rendering software eseguendo prusa-slicer.exe con il parametro --sw_renderer." -#: src/slic3r/GUI/GUI_App.cpp:1086 src/slic3r/GUI/Plater.cpp:2313 -#: src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/Preferences.cpp:154 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +msgid "Ask for unsaved changes when closing application" +msgstr "Chiedere riguardo le modifiche non salvate alla chiusura del programma" + +#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 +msgid "Ask for unsaved changes when selecting new preset" +msgstr "Chiedere riguardo le modifiche non salvate quando si seleziona un nuovo preset" + +#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 msgid "Attention!" msgstr "Attenzione!" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:150 +msgid "Authorization Type" +msgstr "Tipo di autorizzazione" + +#: src/libslic3r/PrintConfig.cpp:2013 msgid "Auto generated supports" msgstr "Supporti generati automaticamente" -#: src/slic3r/GUI/Preferences.cpp:47 +#: src/slic3r/GUI/Preferences.cpp:64 msgid "Auto-center parts" msgstr "Centra automaticamente le parti" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1377 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1224 msgid "Auto-generate points" msgstr "Genera punti automaticamente" -#: src/slic3r/GUI/Plater.cpp:1157 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:1066 +#, c-format msgid "Auto-repaired (%d errors)" msgstr "Auto-riparati (%d errori)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:339 -#, possible-c-format +#: src/slic3r/GUI/GUI_ObjectList.cpp:386 +#, c-format msgid "Auto-repaired (%d errors):" msgstr "Auto-riparati (%d errori):" @@ -799,59 +963,79 @@ msgstr "Auto-riparati (%d errori):" msgid "Autodetected" msgstr "Autorilevato" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1273 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1134 msgid "Autogenerate support points" msgstr "Genera automaticamente punti di supporto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1268 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1127 msgid "Autogeneration will erase all manually edited points." msgstr "La generazione automatica cancellerà tutti i punti editati manualmente." -#: src/slic3r/GUI/Tab.cpp:3632 +#: src/slic3r/GUI/Tab.cpp:4051 msgid "Automatic generation" msgstr "Generazione automatica" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Automatic updates" msgstr "Aggiornamenti automatici" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Automatically repair an STL file" msgstr "Ripara automaticamente un file STL" -#: src/slic3r/GUI/Tab.cpp:1171 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "Autoset ad angolo" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 +msgid "Autoset custom supports" +msgstr "Autoset supporti personalizzati" + +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Autospeed (advanced)" msgstr "Autovelocità (avanzato)" -#: src/libslic3r/PrintConfig.cpp:136 +#: src/libslic3r/PrintConfig.cpp:169 msgid "Avoid crossing perimeters" msgstr "Evita incrocio perimetri" -#: src/slic3r/GUI/Tab.cpp:3268 +#: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "FRECCIA INDIETRO" -#: src/slic3r/GUI/Tab.cpp:3290 -msgid "BACK ARROW icon indicates that the settings were changed and are not equal to the last saved preset for the current option group.\nClick to reset all settings for the current option group to the last saved preset." -msgstr "L'icona FRECCIA INDIETRO indica che le impostazioni sono state cambiate e non corrispondono all'ultimo preset salvato per il seguente gruppo di opzioni.\nClicca per reimpostare all'ultimo preset salvato tutte le impostazioni per il seguente gruppo di opzioni." +#: src/slic3r/GUI/Tab.cpp:3727 +msgid "" +"BACK ARROW icon indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" +"Click to reset all settings for the current option group to the last saved preset." +msgstr "" +"L'icona FRECCIA INDIETRO indica che le impostazioni sono state cambiate e non corrispondono all'ultimo preset salvato per il seguente gruppo di opzioni.\n" +"Clicca per reimpostare all'ultimo preset salvato tutte le impostazioni per il seguente gruppo di opzioni." -#: src/slic3r/GUI/Tab.cpp:3304 -msgid "BACK ARROW icon indicates that the value was changed and is not equal to the last saved preset.\nClick to reset current value to the last saved preset." -msgstr "L'icona FRECCIA ALL'INDIETRO indica che il valore è stato cambiato e non corrisponde all'ultimo preset salvato.\nCliccare per reimpostare il valore corrente all'ultimo preset salvato." +#: src/slic3r/GUI/Tab.cpp:3741 +msgid "" +"BACK ARROW icon indicates that the value was changed and is not equal to the last saved preset.\n" +"Click to reset current value to the last saved preset." +msgstr "" +"L'icona FRECCIA ALL'INDIETRO indica che il valore è stato cambiato e non corrisponde all'ultimo preset salvato.\n" +"Cliccare per reimpostare il valore corrente all'ultimo preset salvato." -#: src/slic3r/GUI/Preferences.cpp:55 +#: src/slic3r/GUI/Preferences.cpp:72 msgid "Background processing" msgstr "Elaborazione in background" -#: src/slic3r/GUI/GUI_ObjectList.cpp:351 +#: src/slic3r/GUI/GUI_ObjectList.cpp:398 msgid "backwards edges" msgstr "spigoli invertiti" -#: src/slic3r/GUI/MainFrame.cpp:174 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:60 +msgid "Balanced" +msgstr "Bilanciato" + +#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 msgid "based on Slic3r" msgstr "basato su Slic3r" -#: src/slic3r/GUI/Tab.cpp:1439 +#: src/slic3r/GUI/Tab.cpp:1785 msgid "Bed" msgstr "Piano" @@ -863,7 +1047,7 @@ msgstr "Modello piano personalizzato" msgid "Bed custom texture" msgstr "Forma piano personalizzata" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape" msgstr "Forma Piano" @@ -871,23 +1055,23 @@ msgstr "Forma Piano" msgid "Bed shape" msgstr "Forma piano" -#: src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape and Size" msgstr "Forma e dimensioni del piano di stampa" -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:181 msgid "Bed temperature" msgstr "Temperatura piano" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." msgstr "Temperatura per i layer dopo il primo. Imposta a zero per disattivare i comandi di controllo della temperatura del piano di stampa in output." -#: src/slic3r/GUI/ConfigWizard.cpp:1051 +#: src/slic3r/GUI/ConfigWizard.cpp:1417 msgid "Bed Temperature:" msgstr "Temperatura piano di stampa:" -#: src/slic3r/GUI/Tab.cpp:1988 src/libslic3r/PrintConfig.cpp:153 +#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 msgid "Before layer change G-code" msgstr "G-code prima del cambio layer" @@ -895,143 +1079,191 @@ msgstr "G-code prima del cambio layer" msgid "Before roll back" msgstr "Prima di tornare indietro" -#: src/slic3r/GUI/Plater.cpp:640 +#: src/slic3r/GUI/Plater.cpp:506 msgid "Below object" msgstr "Sotto l'oggetto" -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "Below Z" msgstr "Z Sotto" -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Between objects G-code" msgstr "G-code tra gli oggetti" -#: src/slic3r/GUI/Tab.cpp:2006 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Between objects G-code (for sequential printing)" msgstr "G-code tra gli oggetti (per stampa sequenziale)" -#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +msgid "Block" +msgstr "Blocco" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:32 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:383 +msgid "Block seam" +msgstr "Blocca giunzione" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:373 +msgid "Block supports" +msgstr "Blocca supporti" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +msgid "Block supports by angle" +msgstr "Blocca supporti all'angolo" + +#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 msgid "Bottle volume" msgstr "Volume bottiglia" -#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 msgid "Bottle weight" msgstr "Peso bottiglia" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:665 src/libslic3r/PrintConfig.cpp:174 -#: src/libslic3r/PrintConfig.cpp:183 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 msgid "Bottom" msgstr "Inferiore" -#: src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Bottom fill pattern" msgstr "Trama riempimento inferiore" -#: src/slic3r/GUI/PresetHints.cpp:342 +#: src/slic3r/GUI/PresetHints.cpp:340 msgid "Bottom is open." msgstr "La parte inferiore è aperta." -#: src/slic3r/GUI/PresetHints.cpp:336 +#: src/slic3r/GUI/PresetHints.cpp:334 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "Il guscio inferiore è spesso %1% mm per l'altezza layer %2% mm." -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:211 msgid "Bottom solid layers" msgstr "Layer solidi sul fondo" -#: src/slic3r/GUI/MainFrame.cpp:665 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 msgid "Bottom View" msgstr "Vista inferiore" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1464 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1468 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "Box" msgstr "Cubo" -#: src/libslic3r/PrintConfig.cpp:193 +#: src/libslic3r/PrintConfig.cpp:227 msgid "Bridge" msgstr "Bridge" -#: src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:256 msgid "Bridge flow ratio" msgstr "Rapporto flusso Bridge" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:350 msgid "Bridge infill" msgstr "Riempimento Bridge" -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Bridges" msgstr "Bridge" -#: src/libslic3r/PrintConfig.cpp:213 +#: src/libslic3r/PrintConfig.cpp:247 msgid "Bridges fan speed" msgstr "Velocità ventola Bridge" -#: src/libslic3r/PrintConfig.cpp:202 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Bridging angle" msgstr "Angolo Bridge" -#: src/libslic3r/PrintConfig.cpp:204 +#: src/libslic3r/PrintConfig.cpp:238 msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for all bridges. Use 180° for zero angle." msgstr "Ignora angolo Bridging. Se lasciato a zero, l'angolo di bridging verrà calcolato automaticamente. Altrimenti l'angolo fornito sarà utilizzato per tutti i bridge. Usa 180° per l'angolo zero." -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" msgstr "Bridging volumetrico" -#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1117 +#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 msgid "Brim" msgstr "Brim" -#: src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Brim width" msgstr "Larghezza brim" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1658 -#: src/slic3r/GUI/Tab.cpp:1721 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 msgid "Browse" msgstr "Naviga" -#: src/libslic3r/Zipper.cpp:82 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 +msgid "Brush shape" +msgstr "Forma Pennello" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 +msgid "Brush size" +msgstr "Dimensione Pennello" + +#: src/libslic3r/miniz_extension.cpp:141 msgid "buffer too small" msgstr "buffer troppo piccolo" +#: src/slic3r/GUI/GUI_App.cpp:1152 +msgid "" +"But since this version of PrusaSlicer we don't show this information in Printer Settings anymore.\n" +"Settings will be available in physical printers settings." +msgstr "" +"Ma da questa versione di PrusaSlicer non mostriamo più queste informazioni nelle impostazioni della stampante.\n" +"Le impostazioni saranno disponibili nelle impostazioni delle stampanti fisiche." + #: src/slic3r/GUI/ButtonsDescription.cpp:16 msgid "Buttons And Text Colors Description" msgstr "Descrizione colori testo e pulsanti" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/GUI_App.cpp:1084 +msgid "" +"By default new Printer devices will be named as \"Printer N\" during its creation.\n" +"Note: This name can be changed later from the physical printers settings" +msgstr "" +"Per impostazione predefinita le nuove stampanti saranno denominate \"Printer N\" durante la loro creazione.\n" +"Nota: Questo nome può essere cambiato in seguito dalle impostazioni delle stampanti fisiche" + +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "by the print profile maximum" msgstr "secondo il massimo del profilo di stampa" -#: src/slic3r/GUI/Preferences.cpp:113 +#: src/slic3r/GUI/Preferences.cpp:178 msgid "Camera" msgstr "Camera" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Camera view" msgstr "Vista camera" -#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "Annulla" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:155 msgid "Cancel selected" msgstr "Cancella selezione" -#: src/slic3r/GUI/Plater.cpp:3669 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Annullato" -#: src/slic3r/GUI/Plater.cpp:3153 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Annullamento" @@ -1043,92 +1275,116 @@ msgstr "Annullo in corso..." msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "Non è possibile calcolare la larghezza di estrusione per %1%: Variabile \"%2%\" non accessibile." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3017 -msgid "Cannot insert a new layer range after the current layer range.\nCurrent layer range overlaps with the next layer range." -msgstr "Non è possibile inserire un nuovo intervallo layer dopo quello attuale.\nL'intervallo layer attuale si sovrappone alla quello successivo." +#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 +msgid "" +"Cannot insert a new layer range after the current layer range.\n" +"Current layer range overlaps with the next layer range." +msgstr "" +"Non è possibile inserire un nuovo intervallo layer dopo quello attuale.\n" +"L'intervallo layer attuale si sovrappone alla quello successivo." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3008 -msgid "Cannot insert a new layer range after the current layer range.\nThe next layer range is too thin to be split to two\nwithout violating the minimum layer height." -msgstr "Non è possibile inserire un nuovo intervallo layer dopo quello attuale.\nL'intervallo layer successivo è troppo sottile per essere diviso in due\nsenza violare l'altezza layer minima." +#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 +msgid "" +"Cannot insert a new layer range after the current layer range.\n" +"The next layer range is too thin to be split to two\n" +"without violating the minimum layer height." +msgstr "" +"Non è possibile inserire un nuovo intervallo layer dopo quello attuale.\n" +"L'intervallo layer successivo è troppo sottile per essere diviso in due\n" +"senza violare l'altezza layer minima." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3012 -msgid "Cannot insert a new layer range between the current and the next layer range.\nThe gap between the current layer range and the next layer range\nis thinner than the minimum layer height allowed." -msgstr "Non è possibile inserire un nuovo intervallo layer tra quello attuale e quello successivo.\nLo spazio tra l'intervallo layer corrente e quello successivo\nè più sottile dell'altezza layer minima consentita." +#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 +msgid "" +"Cannot insert a new layer range between the current and the next layer range.\n" +"The gap between the current layer range and the next layer range\n" +"is thinner than the minimum layer height allowed." +msgstr "" +"Non è possibile inserire un nuovo intervallo layer tra quello attuale e quello successivo.\n" +"Lo spazio tra l'intervallo layer corrente e quello successivo\n" +"è più sottile dell'altezza layer minima consentita." -#: src/slic3r/GUI/Tab.cpp:3073 +#: src/slic3r/GUI/SavePresetDialog.cpp:137 msgid "Cannot overwrite a system profile." msgstr "Impossibile sovrascrivere un profilo di sistema." -#: src/slic3r/GUI/Tab.cpp:3077 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 msgid "Cannot overwrite an external profile." msgstr "Impossibile sovrascrivere un profilo esterno." -#: src/libslic3r/SLAPrint.cpp:613 +#: src/libslic3r/SLAPrint.cpp:627 msgid "Cannot proceed without support points! Add support points or disable support generation." msgstr "Impossibile procedere senza punti di supporto! Aggiungi i punti di supporto o disattiva la generazione supporti." -#: src/slic3r/GUI/Tab.cpp:1834 +#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "Caratteristiche" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Capture a configuration snapshot" msgstr "Cattura un'istantanea della configurazione" -#: src/libslic3r/PrintConfig.cpp:3424 +#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +msgid "Category" +msgstr "Categoria" + +#: src/libslic3r/PrintConfig.cpp:3623 msgid "Center" msgstr "Centro" -#: src/libslic3r/PrintConfig.cpp:3425 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Center the print around the given center." msgstr "Centra la stampa sul centro dato." -#: src/slic3r/GUI/Tab.cpp:1728 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "File di certificato (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +#: src/slic3r/GUI/SavePresetDialog.cpp:313 +msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" +msgstr "Cambia \"%1%\" a \"%2%\" per questa stampante fisica \"%3%\"" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Change camera type (perspective, orthographic)" msgstr "Cambia tipo di visuale (prospettica, ortografica)" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:885 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:693 msgid "Change drainage hole diameter" msgstr "Modifica il diametro dei fori di drenaggio" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "Cambia estrusore" -#: src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/slic3r/GUI/GUI_ObjectList.cpp:574 msgid "Change Extruder" msgstr "Cambio estrusore" -#: src/slic3r/GUI/DoubleSlider.cpp:1145 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 msgid "Change extruder (N/A)" msgstr "Cambio estrusore (N/A)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3997 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 msgid "Change Extruders" msgstr "Cambio Estrusori" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 -#, possible-c-format +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:157 +#, c-format msgid "Change Option %s" msgstr "Modifica Opzione %s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3558 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 msgid "Change Part Type" msgstr "Modifica il tipo di Parte" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:820 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:694 msgid "Change point head diameter" msgstr "Modifica diametro punta della testa" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Change the number of instances of the selected object" msgstr "Cambia il numero di istanze dell'oggetto selezionato" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 msgid "Change type" msgstr "Cambia tipo" @@ -1136,125 +1392,172 @@ msgstr "Cambia tipo" msgid "Changelog && Download" msgstr "Changelog && Download" -#: src/slic3r/GUI/GUI_App.cpp:442 +#: src/slic3r/GUI/GUI_App.cpp:1245 msgid "Changing of an application language" msgstr "Cambio lingua applicazione" -#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "Verifica la presenza di aggiornamenti" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for configuration updates" msgstr "Controlla aggiornamenti di configurazione" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for updates" msgstr "Cerca aggiorna&menti" -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: src/slic3r/GUI/BedShapeDialog.cpp:608 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Seleziona un file da cui importare la forma del piano di stampa (PNG/SVG):" -#: src/slic3r/GUI/MainFrame.cpp:773 +#: src/slic3r/GUI/MainFrame.cpp:1474 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Scegli un file da processare (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/BedShapeDialog.cpp:555 +#: src/slic3r/GUI/BedShapeDialog.cpp:631 msgid "Choose an STL file to import bed model from:" msgstr "Scegli un file STL da cui importare il modello del piano:" -#: src/slic3r/GUI/BedShapeDialog.cpp:487 +#: src/slic3r/GUI/BedShapeDialog.cpp:563 msgid "Choose an STL file to import bed shape from:" msgstr "Scegli un file STL da cui importare la forma del piano:" -#: src/slic3r/GUI/GUI_App.cpp:555 +#: src/slic3r/GUI/GUI_App.cpp:1208 msgid "Choose one file (3MF/AMF):" msgstr "Seleziona un file (3MF/AMF):" -#: src/slic3r/GUI/GUI_App.cpp:567 +#: src/slic3r/GUI/GUI_App.cpp:1233 +msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" +msgstr "Scegliere un file (GCODE/.GCO/.G/.ngc/NGC):" + +#: src/slic3r/GUI/GUI_App.cpp:1220 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Seleziona uno o più file (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/ConfigWizard.cpp:895 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:35 +msgid "Choose SLA archive:" +msgstr "Scegliere l'archivio SLA:" + +#: src/slic3r/GUI/ConfigWizard.cpp:1261 msgid "Choose the type of firmware used by your printer." msgstr "Indica il firmware usato dalla tua stampante." -#: src/slic3r/GUI/BedShapeDialog.cpp:89 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:36 +msgid "Circle" +msgstr "Cerchio" + +#: src/slic3r/GUI/BedShapeDialog.cpp:142 msgid "Circular" msgstr "Circolare" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 -msgid "Click right mouse button to open History" -msgstr "Fai click destro per aprire la Storia" +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 +msgid "Click right mouse button to open/close History" +msgstr "Cliccare con il tasto destro del mouse per aprire/chiudere la Cronologia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:404 +#: src/slic3r/GUI/GUI_ObjectList.cpp:451 msgid "Click the icon to change the object printable property" msgstr "Clicca l'icona per cambiare le proprietà di stampa dell'oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:398 +#: src/slic3r/GUI/GUI_ObjectList.cpp:445 msgid "Click the icon to change the object settings" msgstr "Fare clic sull'icona per modificare le impostazioni dell'oggetto" -#: src/slic3r/GUI/Plater.cpp:343 +#: src/slic3r/GUI/PresetComboBoxes.cpp:566 msgid "Click to edit preset" msgstr "Clicca per modificare il preset" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to hide" +msgstr "Fare clic per nascondere" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to show" +msgstr "Clic per mostrare" + +#: src/libslic3r/PrintConfig.cpp:286 msgid "Clip multi-part objects" msgstr "Collega oggetti multi-part" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:25 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 msgid "Clipping of view" -msgstr "Ritaglio della vista" +msgstr "Vista in sezione" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:364 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +#: src/slic3r/GUI/Mouse3DController.cpp:353 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Close" msgstr "Chiudi" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 -#: src/libslic3r/PrintConfig.cpp:2934 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Closing distance" msgstr "Distanza di chiusura" -#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 +#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +msgid "Collapse sidebar" +msgstr "Riduci barra laterale" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Collapse/Expand the sidebar" +msgstr "Riduci/Espandi barra laterale" + +#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 msgid "Color" msgstr "Colore" -#: src/slic3r/GUI/DoubleSlider.cpp:1005 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +msgid "Color change" +msgstr "Cambio colore" + +#: src/slic3r/GUI/DoubleSlider.cpp:1130 msgid "Color change (\"%1%\")" msgstr "Cambio colore (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1006 +#: src/slic3r/GUI/DoubleSlider.cpp:1131 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Cambio colore (\"%1%\") per Estrusore %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:995 -#, possible-c-format +#: src/slic3r/GUI/GLCanvas3D.cpp:1001 +#, c-format msgid "Color change for Extruder %d at %.2f mm" msgstr "Cambio colore per Estrusore %d a %.2f mm" -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 -#: src/libslic3r/GCode/PreviewData.cpp:359 +#: src/slic3r/GUI/Tab.cpp:2203 +msgid "Color Change G-code" +msgstr "G-code cambio colore" + +#: src/libslic3r/PrintConfig.cpp:1960 +msgid "Color change G-code" +msgstr "G-code cambio colore" + +#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +msgid "Color changes" +msgstr "Cambi colore" + +#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 +#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 msgid "Color Print" msgstr "Color Print (Stampa a Colori)" -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:294 msgid "Colorprint height" msgstr "Altezza Colorprint" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:1034 msgid "Combine infill every" msgstr "Combina riempimento ogni" -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1039 msgid "Combine infill every n layers" msgstr "Combina riempimento ogni n layer" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Commands" msgstr "Comandi" @@ -1262,23 +1565,23 @@ msgstr "Comandi" msgid "Comment:" msgstr "Commento:" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 +#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 msgid "Compatible print profiles" msgstr "Profili di stampa compatibili" -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Compatible print profiles condition" msgstr "Condizioni profili di stampa compatibili" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 +#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 msgid "Compatible printers" msgstr "Stampanti compatibili" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:305 msgid "Compatible printers condition" msgstr "Condizioni di stampante compatibile" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:338 msgid "Complete individual objects" msgstr "Completa singoli oggetti" @@ -1286,27 +1589,27 @@ msgstr "Completa singoli oggetti" msgid "Completed" msgstr "Completato" -#: src/libslic3r/Zipper.cpp:54 +#: src/libslic3r/miniz_extension.cpp:113 msgid "compression failed" msgstr "compressione fallita" -#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 msgid "Concentric" msgstr "Concentrico" -#: src/slic3r/GUI/ConfigWizard.cpp:2110 +#: src/slic3r/GUI/ConfigWizard.cpp:2625 msgid "Configuration &Assistant" msgstr "&Assistente Configurazione" -#: src/slic3r/GUI/ConfigWizard.cpp:2113 +#: src/slic3r/GUI/ConfigWizard.cpp:2628 msgid "Configuration &Wizard" msgstr "Co&nfigurazione guidata" -#: src/slic3r/GUI/ConfigWizard.cpp:2109 +#: src/slic3r/GUI/ConfigWizard.cpp:2624 msgid "Configuration Assistant" msgstr "Assistente configurazione" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1424 msgid "Configuration notes" msgstr "Note di configurazione" @@ -1322,11 +1625,15 @@ msgstr "Aggiornamento di configurazione" msgid "Configuration update is available" msgstr "Aggiornamento di configurazione disponibile" -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "Configuration update is available." +msgstr "Aggiornamento di configurazione disponibile." + +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "Configuration updates" msgstr "Aggiornamenti di configurazione" -#: src/slic3r/GUI/ConfigWizard.cpp:2112 +#: src/slic3r/GUI/ConfigWizard.cpp:2627 msgid "Configuration Wizard" msgstr "Configurazione Guidata" @@ -1334,15 +1641,11 @@ msgstr "Configurazione Guidata" msgid "Confirmation" msgstr "Conferma" -#: src/slic3r/GUI/Tab.cpp:1931 -msgid "Connection failed." -msgstr "Connessione fallita." - -#: src/slic3r/GUI/Tab.cpp:3627 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Connection of the support sticks and junctions" msgstr "Connessione delle barre di supporto e giunzioni" -#: src/slic3r/Utils/AstroBox.cpp:83 +#: src/slic3r/Utils/AstroBox.cpp:84 msgid "Connection to AstroBox works correctly." msgstr "La connessione ad AstroBox funziona correttamente." @@ -1358,124 +1661,136 @@ msgstr "Connessione a FlashAir correttamente funzionante e caricamento abilitato msgid "Connection to OctoPrint works correctly." msgstr "Connessione con OctoPrint funzionante." -#: src/slic3r/GUI/Tab.cpp:1928 -msgid "Connection to printer works correctly." -msgstr "Connessione con la stampante funzionante." +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:260 +msgid "Connection to printers connected via the print host failed." +msgstr "Collegamento alle stampanti collegate tramite l'host di stampa fallito." -#: src/slic3r/Utils/OctoPrint.cpp:176 +#: src/slic3r/Utils/OctoPrint.cpp:185 msgid "Connection to Prusa SL1 works correctly." msgstr "La connessione a Prusa SL1 funziona correttamente." -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "Contact Z distance" msgstr "Distanza di contatto Z" -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:286 msgid "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others." msgstr "Con il contributo di Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik e molti altri." -#: src/libslic3r/PrintConfig.cpp:2659 +#: src/slic3r/GUI/GUI_App.cpp:245 +msgid "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." +msgstr "Contributi di Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik e molti altri." + +#: src/libslic3r/PrintConfig.cpp:2823 msgid "Controls the bridge type between two neighboring pillars. Can be zig-zag, cross (double zig-zag) or dynamic which will automatically switch between the first two depending on the distance of the two pillars." msgstr "Controlla il tipo di bridge tra due pilastri adiacenti. Può essere zig-zag, croce (doppio zig-zag) o dinamico, che passerà automaticamente tra i due a seconda della distanza tra i due pilastri." -#: src/slic3r/GUI/Tab.cpp:1444 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +msgid "Convert from imperial units" +msgstr "Convertire da unità imperiali" + +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Cooling" msgstr "Raffreddamento" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:696 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "I movimenti di raffreddamento accelerano gradualmente partendo da questa velocità." -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:715 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "I movimenti di raffreddamento accelerano gradualmente verso questa velocità." -#: src/slic3r/GUI/Tab.cpp:1465 +#: src/slic3r/GUI/Tab.cpp:1811 msgid "Cooling thresholds" msgstr "Soglie di raffreddamento" -#: src/libslic3r/PrintConfig.cpp:327 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Cooling tube length" msgstr "Lunghezza del tubo di raffreddamento" -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:353 msgid "Cooling tube position" msgstr "Posizione tubo di raffreddamento" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4856 msgid "Copies of the selected object" msgstr "Copie dell'oggetto selezionato" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4871 msgid "Copy" msgstr "Copia" -#: src/slic3r/GUI/MainFrame.cpp:589 +#: src/slic3r/GUI/MainFrame.cpp:1195 msgid "Copy selection to clipboard" msgstr "Copia selezione negli appunti" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Copy to clipboard" msgstr "Copia negli appunti" -#: src/slic3r/GUI/SysInfoDialog.cpp:154 +#: src/slic3r/GUI/SysInfoDialog.cpp:177 msgid "Copy to Clipboard" msgstr "Copia negli appunti" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:121 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 msgid "Copying of the temporary G-code has finished but the exported code couldn't be opened during copy check. The output G-code is at %1%.tmp." msgstr "Copia del G-code temporaneo completata ma non è stato possibile aprire il codice esportato durante il controllo copia. Il G-code di output è su %1%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:118 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 msgid "Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "Copia del G-code temporaneo completata ma non è stato possibile aprire il codice originale su %1% durante il controllo copia. Il G-code di output è su %2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:480 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "Copia del G-code temporaneo nel G-code di output non riuscita" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:109 -msgid "Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?" -msgstr "Copia del G-code temporaneo nel G-code di output non riuscita. Forse la scheda SD ha la sicura per la scrittura?" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +msgid "" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" +"Error message: %1%" +msgstr "" +"Copia del G-code temporaneo sul G-code di uscita non riuscita. Forse la scheda SD è bloccata in scrittura?\n" +"Messaggio di errore: %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:112 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Copia del G-code temporaneo nel G-code di output non riuscita. Potrebbe esserci un problema nel dispositivo di destinazione, prova una nuova esportazione con un dispositivo diverso. Il file G-code corrotto è su %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 msgid "Copyright" msgstr "Copyright" -#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 msgid "Correction for expansion" msgstr "Correzione dell'espansione" -#: src/slic3r/GUI/Tab.cpp:2100 src/slic3r/GUI/Tab.cpp:3519 +#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 msgid "Corrections" msgstr "Correzioni" -#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 msgid "Cost" msgstr "Costo" -#: src/slic3r/GUI/Plater.cpp:239 +#: src/slic3r/GUI/Plater.cpp:245 msgid "Cost (money)" msgstr "Costo (soldi)" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "Non è stato possibile disporre gli oggetti! Alcune geometrie potrebbero essere non valide." -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/Utils/AstroBox.cpp:90 msgid "Could not connect to AstroBox" msgstr "Impossibile connettere ad AstroBox" -#: src/slic3r/Utils/Duet.cpp:54 +#: src/slic3r/Utils/Duet.cpp:55 msgid "Could not connect to Duet" msgstr "Connessione a Duet fallita" -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:74 msgid "Could not connect to FlashAir" msgstr "Impossibile connettersi a FlashAir" @@ -1483,56 +1798,69 @@ msgstr "Impossibile connettersi a FlashAir" msgid "Could not connect to OctoPrint" msgstr "Impossibile connettersi ad OctoPrint" -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:191 msgid "Could not connect to Prusa SLA" msgstr "Connessione a Prusa SLA fallita" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/Utils/Http.cpp:73 +msgid "Could not detect system SSL certificate store. PrusaSlicer will be unable to establish secure network connections." +msgstr "Impossibile rilevare archivio di certificati SSL di sistema. PrusaSlicer non sarà in grado di stabilire connessioni di rete sicure." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 msgid "Could not get a valid Printer Host reference" msgstr "Impossibile ottenere un riferimento Host Stampante valido" -#: src/slic3r/Utils/Duet.cpp:134 +#: src/slic3r/Utils/Duet.cpp:136 msgid "Could not get resources to create a new connection" msgstr "Non sono state trovate le risorse per stabilire una nuova connessione" -#: src/libslic3r/PrintConfig.cpp:1959 +#: src/libslic3r/PrintConfig.cpp:2101 msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "Copre con anelli il layer superiore del supporto a contatto. Disattivato per impostazione predefinita." -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 msgid "Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low." msgstr "Le fratture più piccole di 2 volte il gap closing radius vengono riempite durante lo slicing del mesh triangolare. L'operazione potrebbe ridurre la risoluzione finale di stampa, dunque è preferibile settare il valore ragionevolmente basso." -#: src/libslic3r/Zipper.cpp:58 +#: src/libslic3r/miniz_extension.cpp:117 msgid "CRC-32 check failed" msgstr "verifica CRC-32 fallita" -#: src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Create pad around object and ignore the support elevation" msgstr "Genera Pad intorno all'oggetto ed ignora l'elevazione del supporto" -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "Critical angle" msgstr "Angolo critico" -#: src/libslic3r/PrintConfig.cpp:2668 +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Croce" -#: src/libslic3r/PrintConfig.cpp:847 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:225 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:203 +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl + Rotella del mouse" + +#: src/libslic3r/PrintConfig.cpp:885 msgid "Cubic" msgstr "Cubico" -#: src/slic3r/GUI/wxExtensions.cpp:704 -#, possible-c-format +#: src/slic3r/Utils/Http.cpp:91 +msgid "CURL init has failed. PrusaSlicer will be unable to establish network connections. See logs for additional details." +msgstr "CURL init non riuscito. PrusaSlicer non sarà in grado di stabilire connessioni di rete. Vedere i log per ulteriori dettagli." + +#: src/slic3r/GUI/wxExtensions.cpp:624 +#, c-format msgid "Current mode is %s" msgstr "La modalità corrente è %s" -#: src/slic3r/GUI/Tab.cpp:959 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "Current preset is inherited from" msgstr "Il preset corrente è ereditato da" -#: src/slic3r/GUI/Tab.cpp:957 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "Current preset is inherited from the default preset." msgstr "Il preset attuale è stato ereditato dal preset predefinito." @@ -1540,480 +1868,527 @@ msgstr "Il preset attuale è stato ereditato dal preset predefinito." msgid "Current version:" msgstr "Versione corrente:" -#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 -#: src/libslic3r/ExtrusionEntity.cpp:322 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 msgid "Custom" msgstr "Personalizzato" -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:114 msgid "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. If left blank, the default OS CA certificate repository is used." msgstr "Può essere specificato il file del certificato CA personalizzato per le connessioni OctoPrint HTTPS, in formato crt/pem. Se lasciato in bianco, verrà utilizzato lo OS CA certificate repository predefinito." -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1975 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Custom G-code" msgstr "G-code personalizzato" -#: src/slic3r/GUI/DoubleSlider.cpp:1619 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Custom G-code on current layer (%1% mm)." msgstr "G-code personalizzato al layer attuale (%1% mm)." -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/GCodeViewer.cpp:2580 src/slic3r/GUI/GUI_Preview.cpp:1477 +msgid "Custom G-codes" +msgstr "G-code personalizzati" + +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer" msgstr "Stampante Personalizzata" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer Setup" msgstr "Setup Stampante Personalizzata" -#: src/slic3r/GUI/ConfigWizard.cpp:736 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 msgid "Custom profile name:" msgstr "Nome profilo personalizzato:" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3402 +#: src/slic3r/GUI/DoubleSlider.cpp:1135 +msgid "Custom template (\"%1%\")" +msgstr "Modello personalizzato (\"%1%\")" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 msgid "Cut" msgstr "Taglia" -#: src/slic3r/GUI/Plater.cpp:4786 +#: src/slic3r/GUI/Plater.cpp:4921 msgid "Cut by Plane" msgstr "Taglia sul Piano" -#: src/libslic3r/PrintConfig.cpp:3403 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Cut model at the given Z." msgstr "Taglia il modello al dato Z." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Cylinder" msgstr "Cilindro" -#: src/slic3r/GUI/MainFrame.cpp:568 +#: src/slic3r/GUI/MainFrame.cpp:1174 msgid "D&eselect all" msgstr "D&eseleziona tutto" -#: src/libslic3r/PrintConfig.cpp:3504 +#: src/libslic3r/PrintConfig.cpp:3709 msgid "Data directory" msgstr "Directory dati" -#: src/slic3r/GUI/Mouse3DController.cpp:313 +#: src/slic3r/GUI/Mouse3DController.cpp:300 msgid "Deadzone:" msgstr "Zona morta:" -#: src/libslic3r/Zipper.cpp:52 +#: src/libslic3r/miniz_extension.cpp:111 msgid "decompression failed or archive is corrupted" msgstr "decompressione non riuscita o archivio corrotto" -#: src/slic3r/GUI/Plater.cpp:4720 +#: src/slic3r/GUI/Plater.cpp:4824 msgid "Decrease Instances" msgstr "Diminuisci Istanze" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1704 src/libslic3r/PrintConfig.cpp:335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 msgid "Default" msgstr "Predefinito" -#: src/slic3r/GUI/GUI_ObjectList.cpp:457 src/slic3r/GUI/GUI_ObjectList.cpp:469 -#: src/slic3r/GUI/GUI_ObjectList.cpp:917 src/slic3r/GUI/GUI_ObjectList.cpp:3967 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3977 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4012 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 +#: src/slic3r/GUI/ExtraRenderers.cpp:297 src/slic3r/GUI/GUI_ObjectList.cpp:496 +#: src/slic3r/GUI/GUI_ObjectList.cpp:508 src/slic3r/GUI/GUI_ObjectList.cpp:1015 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4454 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4464 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4499 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:202 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 msgid "default" msgstr "predefinito" -#: src/libslic3r/PrintConfig.cpp:777 +#: src/libslic3r/PrintConfig.cpp:813 msgid "Default base angle for infill orientation. Cross-hatching will be applied to this. Bridges will be infilled using the best direction Slic3r can detect, so this setting does not affect them." msgstr "Angolo base predefinito per l'orientamento del riempimento. Su questo verrà applicato il tratteggio. I bridge saranno riempiti utilizzando la migliore direzione che Slic3r riesce a determinare, quindi questa impostazione non influisce sui bridge." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 +msgid "Default color" +msgstr "Colore predefinito" + +#: src/slic3r/GUI/GCodeViewer.cpp:2313 +msgid "default color" +msgstr "colore predefinito" + +#: src/libslic3r/PrintConfig.cpp:590 msgid "Default extrusion width" msgstr "Larghezza estrusione predefinita" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1305 msgid "default filament profile" msgstr "profilo filamento predefinito" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Default filament profile" msgstr "Profilo filamento predefinito" -#: src/libslic3r/PrintConfig.cpp:346 +#: src/libslic3r/PrintConfig.cpp:380 msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." msgstr "Profilo filamento predefinito associato al profilo stampante corrente. Quando si seleziona il profilo stampante corrente, questo profilo filamento verrà attivato." -#: src/slic3r/GUI/Tab.cpp:2919 -#, possible-c-format -msgid "Default preset (%s)" -msgstr "Preset predefinito (%s)" - -#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 msgid "Default print color" msgstr "Colore di stampa predefinito" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "profilo di stampa predefinito" -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default print profile" msgstr "Profilo di stampa predefinito" -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." msgstr "Profilo di stampa predefinito associato al profilo stampante corrente. Alla selezione del profilo stampante corrente, questo profilo di stampa verrà attivato." -#: src/slic3r/GUI/Tab.cpp:1001 +#: src/slic3r/GUI/Tab.cpp:1319 msgid "default SLA material profile" msgstr "profilo materiale SLA predefinito" -#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 +#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 msgid "Default SLA material profile" msgstr "Profilo materiale SLA predefinito" -#: src/slic3r/GUI/Tab.cpp:1005 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA print profile" msgstr "profilo di stampa SLA predefinito" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:184 msgid "default value" msgstr "valore predefinito" -#: src/slic3r/GUI/ConfigWizard.cpp:734 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Define a custom printer profile" msgstr "Inserisci un profilo stampante personalizzato" -#: src/libslic3r/PrintConfig.cpp:2798 +#: src/libslic3r/PrintConfig.cpp:2962 msgid "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful when enabling this feature, as some resins may produce an extreme suction effect inside the cavity, which makes peeling the print off the vat foil difficult." msgstr "Definisce la profondità della cavità nel pad. Imposta a zero per disattivare la cavità. Fai attenzione ad attivare questa funzione in quanto alcune resine possono causare un effetto ventosa dentro la cavità il che renderà difficile il distacco della stampa dal foglio del vat." -#: src/slic3r/GUI/GUI_ObjectList.cpp:346 +#: src/slic3r/GUI/GUI_ObjectList.cpp:393 msgid "degenerate facets" msgstr "facce degenerate" -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:676 msgid "Delay after unloading" msgstr "Ritardo dopo lo scarico" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "delete" msgstr "elimina" -#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1718 -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Delete" msgstr "Elimina" -#: src/slic3r/GUI/MainFrame.cpp:575 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Delete &all" msgstr "Elimin&a tutto" -#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "Delete all" msgstr "Elimina tutto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2176 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 msgid "Delete All Instances from Object" msgstr "Elimina Tutte le Istanze dall'Oggetto" -#: src/slic3r/GUI/DoubleSlider.cpp:1516 +#: src/slic3r/GUI/DoubleSlider.cpp:1708 msgid "Delete color change" msgstr "Elimina il cambio colore" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 msgid "Delete color change marker for current layer" msgstr "Elimina il segnale di cambio colore per il layer corrente" -#: src/slic3r/GUI/DoubleSlider.cpp:1519 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Delete custom G-code" msgstr "Elimina G-code personalizzato" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:539 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:424 msgid "Delete drainage hole" msgstr "Elimina foro di drenaggio" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 msgid "Delete Height Range" msgstr "Elimina Intervallo Altezza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2246 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Delete Instance" msgstr "Elimina Istanza" -#: src/slic3r/GUI/Plater.cpp:2712 +#: src/slic3r/GUI/Plater.cpp:2673 msgid "Delete Object" msgstr "Elimina Oggetto" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 -#, possible-c-format +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:104 +#, c-format msgid "Delete Option %s" msgstr "Elimina Opzione %s" -#: src/slic3r/GUI/DoubleSlider.cpp:1518 +#: src/slic3r/GUI/DoubleSlider.cpp:1710 msgid "Delete pause print" msgstr "Elimina pausa stampa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/PresetComboBoxes.cpp:652 +msgid "Delete physical printer" +msgstr "Elimina stampante fisica" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +msgid "Delete Physical Printer" +msgstr "Elimina stampante fisica" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Delete selected" msgstr "Elimina selezionato" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2830 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 msgid "Delete Selected" msgstr "Elimina Selezionati" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2693 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 msgid "Delete Selected Item" msgstr "Elimina l'elemento selezionato" -#: src/slic3r/GUI/Plater.cpp:4677 +#: src/slic3r/GUI/Plater.cpp:4782 msgid "Delete Selected Objects" msgstr "Elimina Oggetti Selezionati" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 msgid "Delete Settings" msgstr "Elimina Impostazioni" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2227 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 msgid "Delete Subobject" msgstr "Elimina Sotto-oggetto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:514 msgid "Delete support point" msgstr "Elimina punto di supporto" -#: src/slic3r/GUI/Tab.cpp:134 +#: src/slic3r/GUI/Tab.cpp:204 msgid "Delete this preset" msgstr "Elimina questo preset" -#: src/slic3r/GUI/DoubleSlider.cpp:1035 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +msgid "Delete this preset from this printer device" +msgstr "Elimina questo preset da questa stampante" + +#: src/slic3r/GUI/DoubleSlider.cpp:1160 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "Elimina il segno di spunta - Clic sinistro o premi il tasto \"-\"" -#: src/slic3r/GUI/DoubleSlider.cpp:1517 +#: src/slic3r/GUI/DoubleSlider.cpp:1709 msgid "Delete tool change" msgstr "Elimina cambio attrezzo" -#: src/slic3r/GUI/MainFrame.cpp:576 +#: src/slic3r/GUI/MainFrame.cpp:1182 msgid "Deletes all objects" msgstr "Elimina tutti gli oggetti" -#: src/slic3r/GUI/MainFrame.cpp:573 +#: src/slic3r/GUI/MainFrame.cpp:1179 msgid "Deletes the current selection" msgstr "Elimina la selezione corrente" -#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/libslic3r/PrintConfig.cpp:753 src/libslic3r/PrintConfig.cpp:2646 +#: src/libslic3r/PrintConfig.cpp:2647 msgid "Density" msgstr "Densità" -#: src/libslic3r/PrintConfig.cpp:791 +#: src/libslic3r/PrintConfig.cpp:827 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Densità del riempimento interno, espresso nell'intervallo 0% - 100%." -#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 -#: src/slic3r/GUI/Tab.cpp:2019 src/slic3r/GUI/Tab.cpp:2135 -#: src/slic3r/GUI/Tab.cpp:3543 src/slic3r/GUI/Tab.cpp:3671 +#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 msgid "Dependencies" msgstr "Dipendenze" -#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 msgid "Deretraction Speed" msgstr "Velocità di deretrazione" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 +#: src/slic3r/GUI/GUI_Preview.cpp:1473 +msgid "Deretractions" +msgstr "De-retrazioni" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:172 +msgid "Descriptive name for the printer" +msgstr "Nome descrittivo della stampante" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Deselect all" msgstr "Deseleziona tutto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Deselect by rectangle" msgstr "Deseleziona con rettangolo" -#: src/slic3r/GUI/MainFrame.cpp:569 +#: src/slic3r/GUI/MainFrame.cpp:1175 msgid "Deselects all objects" msgstr "Deseleziona tutti gli oggetti" -#: src/slic3r/GUI/Tab.cpp:963 +#: src/slic3r/GUI/Tab.cpp:1224 msgid "Detach from system preset" msgstr "Distacco dal preset di sistema" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "Detach preset" msgstr "Preset distacco" -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/Tab.cpp:3323 msgid "Detached" msgstr "Distaccato" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Detect bridging perimeters" msgstr "Rileva perimetri ponte (bridge)" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2218 msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." msgstr "Rileva pareti a spessore singolo (parti in cui non entrano due estrusioni ed è necessario comprimerle in una singola traccia)." -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Detect thin walls" msgstr "Rileva perimetri sottili" -#: src/libslic3r/PrintConfig.cpp:3472 +#: src/libslic3r/PrintConfig.cpp:3671 msgid "Detect unconnected parts in the given model(s) and split them into separate objects." msgstr "Rileva parti non connesse nel modello(i) dato e le divide in oggetti separati." -#: src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:2330 msgid "Detected advanced data" msgstr "Rilevati dati avanzati" -#: src/slic3r/GUI/Mouse3DController.cpp:289 +#: src/slic3r/GUI/Mouse3DController.cpp:274 msgid "Device:" msgstr "Dispositivo:" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 msgid "Diameter" msgstr "Diametro" -#: src/libslic3r/PrintConfig.cpp:2694 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "Diameter in mm of the pillar base" msgstr "Diametro in mm della base del pilastro" -#: src/libslic3r/PrintConfig.cpp:2650 +#: src/libslic3r/PrintConfig.cpp:2793 msgid "Diameter in mm of the support pillars" msgstr "Diametro in mm dei pilastri di supporto" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "Diameter of the pointing side of the head" msgstr "Diametro del lato di puntamento della testa" -#: src/slic3r/GUI/BedShapeDialog.cpp:94 +#: src/slic3r/GUI/BedShapeDialog.cpp:131 msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "Diametro del piano di stampa. Si presume che l'origine (0,0) si trovi al centro." -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1747 msgid "Direction" msgstr "Direzione" -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Disable fan for the first" msgstr "Disattiva ventola per i primi" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1457 msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." msgstr "Disabilita la retrazione quando la traiettoria del movimento non oltrepassa i perimetri del layer superiore (pertanto qualunque scolatura sarà probabilmente invisibile)." -#: src/slic3r/GUI/DoubleSlider.cpp:952 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 +msgid "Discard" +msgstr "Annulla" + +#: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" msgstr "Elimina tutte le modifiche personalizzate" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1375 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 msgid "Discard changes" msgstr "Annulla modifiche" -#: src/slic3r/GUI/GUI_App.cpp:932 src/slic3r/GUI/Tab.cpp:2946 -msgid "Discard changes and continue anyway?" -msgstr "Eliminare le modifiche e continuare comunque?" - -#: src/slic3r/GUI/Tab.cpp:2078 +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Display" msgstr "Display" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "Display height" msgstr "Altezza display" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Display horizontal mirroring" msgstr "Mostra mirroring orizzontale" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2535 msgid "Display orientation" msgstr "Orientamento display" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Display the Print Host Upload Queue window" msgstr "Mostra la finestra della fila di caricamento all'host di stampa" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Display vertical mirroring" msgstr "Mostra mirroring verticale" -#: src/libslic3r/PrintConfig.cpp:2353 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Display width" msgstr "Larghezza display" -#: src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:411 msgid "Distance between copies" msgstr "Distanza tra le copie" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1157 +msgid "Distance between ironing lines" +msgstr "Distanza tra le linee di stiratura" + +#: src/libslic3r/PrintConfig.cpp:1788 msgid "Distance between skirt and object(s). Set this to zero to attach the skirt to the object(s) and get a brim for better adhesion." msgstr "La distanza tra skirt e oggetto(i). Imposta questo valore a zero per unire lo skirt all'oggetto(i) e ottenere un brim per una migliore adesione." -#: src/libslic3r/PrintConfig.cpp:2882 +#: src/libslic3r/PrintConfig.cpp:3046 msgid "Distance between two connector sticks which connect the object and the generated pad." msgstr "Distanza tra due barre di connessione che collegano l'oggetto e il pad generato." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "Distanza dall'oggetto" -#: src/slic3r/GUI/BedShapeDialog.cpp:85 +#: src/slic3r/GUI/BedShapeDialog.cpp:121 msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "Distanza della coordinata 0,0 del G-code dall'angolo frontale sinistro del rettangolo." -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "Distanza del centro del tubo di raffreddamento dalla punta dell'estrusore." -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1490 msgid "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware." msgstr "Distanza della punta dell'estrusore dalla posizione dove il filamento viene posto mentre viene scaricato. Dovrebbe essere uguale al valore nel firmware della stampante." -#: src/libslic3r/PrintConfig.cpp:378 +#: src/libslic3r/PrintConfig.cpp:412 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Distanza usata per la funzione disposizione automatica del piano." -#: src/libslic3r/PrintConfig.cpp:3486 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Non fallire se un file fornito a --load non esiste." -#: src/libslic3r/PrintConfig.cpp:3430 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "Do not rearrange the given models before merging and keep their original XY coordinates." msgstr "Non disporre i modelli prima dell’unione e mantieni le coordinate XY originali." -#: src/slic3r/GUI/Field.cpp:240 -#, possible-c-format -msgid "Do you mean %s%% instead of %s %s?\nSelect YES if you want to change this value to %s%%, \nor NO if you are sure that %s %s is a correct value." -msgstr "Intendevi %s invece di %s %s?\nSeleziona SI se vuoi cambiare il valore a %s %%,\no NO se sei sicuro che %s %s è il valore corretto." +#: src/slic3r/GUI/Field.cpp:288 +#, c-format +msgid "" +"Do you mean %s%% instead of %s %s?\n" +"Select YES if you want to change this value to %s%%, \n" +"or NO if you are sure that %s %s is a correct value." +msgstr "" +"Intendevi %s invece di %s %s?\n" +"Seleziona SI se vuoi cambiare il valore a %s %%,\n" +"o NO se sei sicuro che %s %s è il valore corretto." -#: src/slic3r/GUI/DoubleSlider.cpp:1920 +#: src/slic3r/GUI/DoubleSlider.cpp:2138 msgid "Do you want to delete all saved tool changes?" msgstr "Vuoi cancellare tutti i cambi attrezzo salvati?" -#: src/slic3r/GUI/GUI_App.cpp:884 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Do you want to proceed?" msgstr "Vuoi continuare?" -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "Do you want to retry" msgstr "Vuoi riprovare" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1045 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 msgid "Do you want to save your manually edited support points?" msgstr "Vuoi salvare i punti di supporto modificati manualmente?" -#: src/slic3r/GUI/ConfigWizard.cpp:1834 +#: src/slic3r/GUI/ConfigWizard.cpp:2261 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Vuoi selezionare i filamenti predefiniti per questi modelli di stampante FFF?" -#: src/slic3r/GUI/ConfigWizard.cpp:1852 +#: src/slic3r/GUI/ConfigWizard.cpp:2279 msgid "Do you want to select default SLA materials for these printer models?" msgstr "Vuoi selezionare i materiali SLA predefiniti per questi modelli di stampante?" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "does not contain valid gcode." +msgstr "non contiene un g-code valido." + +#: src/libslic3r/PrintConfig.cpp:3628 msgid "Don't arrange" msgstr "Non disporre" @@ -2021,7 +2396,7 @@ msgstr "Non disporre" msgid "Don't notify about new releases any more" msgstr "Non notificare più i nuovi rilasci" -#: src/libslic3r/PrintConfig.cpp:369 +#: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "Non supportare i bridge" @@ -2029,262 +2404,332 @@ msgstr "Non supportare i bridge" msgid "Downgrade" msgstr "Downgrade" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1803 msgid "Draft shield" msgstr "Scudo di protezione" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Drag" msgstr "Trascina" -#: src/libslic3r/SLAPrintSteps.cpp:44 -msgid "Drilling holes into model." -msgstr "Praticare fori nel modello." +#: src/slic3r/GUI/Plater.cpp:1406 +msgid "Drag and drop G-code file" +msgstr "Trascina e rilascia un file G-code" -#: src/libslic3r/SLAPrintSteps.cpp:199 +#: src/libslic3r/SLAPrintSteps.cpp:45 +msgid "Drilling holes into model." +msgstr "Eseguendo i fori nel modello." + +#: src/libslic3r/SLAPrintSteps.cpp:201 msgid "Drilling holes into the mesh failed. This is usually caused by broken model. Try to fix it first." msgstr "Applicazione dei fori nella mesh non riuscita. Questo solitamente è causato da un modello corrotto. Prova prima a sistemarlo." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" msgstr "Poggia sul piano" -#: src/libslic3r/PrintConfig.cpp:3433 +#: src/libslic3r/PrintConfig.cpp:3632 msgid "Duplicate" msgstr "Duplica" -#: src/libslic3r/PrintConfig.cpp:3438 +#: src/libslic3r/PrintConfig.cpp:3637 msgid "Duplicate by grid" msgstr "Duplica per griglia" -#: src/slic3r/GUI/PresetHints.cpp:40 +#: src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Duration" +msgstr "Durata" + +#: src/slic3r/GUI/PresetHints.cpp:39 msgid "During the other layers, fan" msgstr "Durante gli altri layer, la ventola" -#: src/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dinamico" -#: src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1448 msgid "E&xport" msgstr "Esporta" -#: src/slic3r/GUI/GUI_ObjectList.cpp:347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:394 msgid "edges fixed" msgstr "spigoli riparati" -#: src/slic3r/GUI/DoubleSlider.cpp:1508 +#: src/slic3r/GUI/DoubleSlider.cpp:1700 msgid "Edit color" msgstr "Modifica colore" -#: src/slic3r/GUI/DoubleSlider.cpp:960 +#: src/slic3r/GUI/DoubleSlider.cpp:1083 msgid "Edit current color - Right click the colored slider segment" msgstr "Modifica colore attuale - Clic destro sul segmento colorato della barra di scorrimento" -#: src/slic3r/GUI/DoubleSlider.cpp:1510 +#: src/slic3r/GUI/DoubleSlider.cpp:1702 msgid "Edit custom G-code" msgstr "Modifica G-code personalizzato" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3003 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 msgid "Edit Height Range" msgstr "Modifica Intervallo Altezza" -#: src/slic3r/GUI/DoubleSlider.cpp:1509 +#: src/slic3r/GUI/DoubleSlider.cpp:1701 msgid "Edit pause print message" msgstr "Modifica messaggio pausa di stampa" -#: src/slic3r/GUI/DoubleSlider.cpp:1037 +#: src/slic3r/GUI/PresetComboBoxes.cpp:645 +msgid "Edit physical printer" +msgstr "Modifica stampante fisica" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:641 +msgid "Edit preset" +msgstr "Modifica preset" + +#: src/slic3r/GUI/DoubleSlider.cpp:1162 msgid "Edit tick mark - Ctrl + Left click" msgstr "Modifica segno di spunta - Ctrl + Clic Sinistro" -#: src/slic3r/GUI/DoubleSlider.cpp:1038 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 msgid "Edit tick mark - Right click" msgstr "Modifica segno di spunta - Clic destro" -#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:394 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 msgid "Editing" msgstr "Modifica" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Ejec&t SD card / Flash drive" msgstr "Espelli Scheda SD / Memoria flash &t" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/NotificationManager.cpp:780 +msgid "Eject drive" +msgstr "Espelli dispositivo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Eject SD card / Flash drive" msgstr "Espelli scheda SD / Memoria flash" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "Espelli scheda SD / Memoria flash dopo l'esportazione del G-code in essa." -#: src/slic3r/GUI/Plater.cpp:2202 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:2034 +#, c-format msgid "Ejecting of device %s(%s) has failed." msgstr "Espulsione del dispositivo %s(%s) non riuscita." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:120 msgid "Elephant foot compensation" msgstr "Compensazione zampa d'elefante" -#: src/libslic3r/PrintConfig.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:2590 msgid "Elephant foot minimum width" msgstr "Larghezza minima zampa d'elefante" -#: src/libslic3r/SLAPrint.cpp:625 +#: src/libslic3r/SLAPrint.cpp:639 msgid "Elevation is too low for object. Use the \"Pad around object\" feature to print the object without elevation." msgstr "L'elevazione è troppo bassa per l'oggetto. Utilizza la funzione \"Pad intorno all'oggetto\" per stampare l'oggetto senza elevazione." -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1186 msgid "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute intervals into the G-code to let the firmware show accurate remaining time. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." msgstr "Inserisce M73 P[percent printed] R[remaining time in minutes] ad intervalli di un minuto nel G-code per permettere al firmware di mostrare un tempo residuo accurato. Al momento solo il firmware della Prusa i3 MK3 riconosce M73. Il firmware della i3 MK3 supporta il codice M73 Qxx Sxx anche per la modalità silenziosa." -#: src/libslic3r/GCode.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" +msgstr "Invia a G-code" + +#: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Rilevati layer vuoti, il file non sarà stampabile." -#: src/slic3r/GUI/Tab.cpp:1445 src/libslic3r/PrintConfig.cpp:1355 -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:2343 msgid "Enable" msgstr "Abilita" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:347 msgid "Enable auto cooling" msgstr "Abilita raffreddamento automatico" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Enable fan if layer print time is below" -msgstr "Attiva ventola se la stampa del layer impiega meno di" +msgstr "Attiva ventola se il tempo di stampa del layer è inferiore a" -#: src/libslic3r/PrintConfig.cpp:2908 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Enable hollowing" msgstr "Attiva svuotamento" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2523 msgid "Enable horizontal mirroring of output images" msgstr "Attiva il mirroring orizzontale per le immagini di output" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:1124 +msgid "Enable ironing" +msgstr "Attiva stiratura" + +#: src/libslic3r/PrintConfig.cpp:1125 +msgid "Enable ironing of the top layers with the hot print head for smooth surface" +msgstr "Abilitare la stiratura degli strati superiori con la testina di stampa a caldo per una superficie liscia" + +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." msgstr "Abilita la generazione di materiale di supporto." -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1010 msgid "Enable this to add comments into the G-Code labeling print moves with what object they belong to, which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." msgstr "Attivalo per aggiungere commenti nel G-Code etichettando i movimenti di stampa secondo l'appartenenza, utile per il plugin Octoprint CancelObject. Questa impostazione NON è compatibile con una configurazione Multi Material ad estrusore singolo e con Spurgo nell'oggetto / Spurgo nel riempimento." -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:973 msgid "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down." msgstr "Abilita per ottenere un file G-code commentato, con un testo descrittivo per ciascuna linea. Se stampi da memoria SD, il peso aggiuntivo del file potrebbe rallentare il firmware." -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "Enable variable layer height feature" msgstr "Abilita layer ad altezza variabile" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Enable vertical mirroring of output images" msgstr "Attiva mirroring verticale per le immagini di output" -#: src/slic3r/GUI/Tab.cpp:1534 src/slic3r/GUI/Tab.cpp:1982 -#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 +#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 msgid "End G-code" msgstr "G-code finale" -#: src/libslic3r/PrintConfig.cpp:1924 -msgid "Enforce support for the first" -msgstr "Applica il supporto per i primi" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +msgid "Enforce" +msgstr "Rinforzo" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:30 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:381 +msgid "Enforce seam" +msgstr "Rinforzo giunzione" + +#: src/libslic3r/PrintConfig.cpp:2066 +msgid "Enforce support for the first" +msgstr "Rinforza il supporto per i primi" + +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Enforce support for the first n layers" msgstr "Applica il supporto per i primi n layer" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:47 +msgid "Enforce supports" +msgstr "Rinforzi supporti" + #: src/slic3r/GUI/PrintHostDialogs.cpp:198 #: src/slic3r/GUI/PrintHostDialogs.cpp:229 msgid "Enqueued" msgstr "Messo in coda" -#: src/libslic3r/PrintConfig.cpp:407 +#: src/libslic3r/PrintConfig.cpp:441 msgid "Ensure vertical shell thickness" msgstr "Mantieni spessore guscio verticale" -#: src/slic3r/GUI/DoubleSlider.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4410 +#: src/slic3r/GUI/Search.cpp:433 +msgid "Enter a search term" +msgstr "Inserire un termine di ricerca" + +#: src/slic3r/GUI/DoubleSlider.cpp:1814 msgid "Enter custom G-code used on current layer" msgstr "Inserisci il G-code personalizzato da usare al layer corrente" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Enter new name" msgstr "Inserisci un nuovo nome" -#: src/slic3r/GUI/DoubleSlider.cpp:1634 +#: src/slic3r/GUI/DoubleSlider.cpp:1830 msgid "Enter short message shown on Printer display when a print is paused" msgstr "Inserisci un breve messaggio da mostrare sul display della stampante quando una stampa è in pausa" -#: src/slic3r/GUI/ConfigWizard.cpp:1047 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." msgstr "Inserisci la temperatura del piano necessaria per l'adesione del filamento al piano riscaldato." -#: src/slic3r/GUI/ConfigWizard.cpp:979 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Enter the diameter of your filament." msgstr "Inserisci il diametro del filamento." -#: src/slic3r/GUI/ConfigWizard.cpp:966 +#: src/slic3r/GUI/ConfigWizard.cpp:1332 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Inserisci il diametro dell'ugello dell'estrusore della stampante." -#: src/slic3r/GUI/DoubleSlider.cpp:1650 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 msgid "Enter the height you want to jump to" msgstr "Inserisci l'altezza a cui si vuole saltare" -#: src/slic3r/GUI/Plater.cpp:4751 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 +msgid "Enter the move you want to jump to" +msgstr "Inserisci lo spostamento a cui vuoi saltare" + +#: src/slic3r/GUI/Plater.cpp:4855 msgid "Enter the number of copies:" msgstr "Inserisci il numero di copie:" -#: src/slic3r/GUI/ConfigWizard.cpp:1033 +#: src/slic3r/GUI/ConfigWizard.cpp:1399 msgid "Enter the temperature needed for extruding your filament." msgstr "Inserisci la temperatura necessaria per estrudere il filamento." -#: src/libslic3r/PrintConfig.cpp:761 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Enter your filament cost per kg here. This is only for statistical information." msgstr "Inserisci qui il costo del filamento per kg. È solo un'informazione statistica." -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:754 msgid "Enter your filament density here. This is only for statistical information. A decent way is to weigh a known length of filament and compute the ratio of the length to volume. Better is to calculate the volume directly through displacement." msgstr "Inserisci qui la densità del filamento. È solo un'informazione statistica. Un metodo di calcolo approssimativo consiste nel pesare un pezzo di filamento di lunghezza nota, e calcolare il rapporto tra lunghezza e volume. È meglio calcolare il volume direttamente attraverso il dislocamento." -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:746 msgid "Enter your filament diameter here. Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "Inserisci qui il diametro del filamento. È richiesta una buona precisione, pertanto usa un calibro ed esegui misurazioni multiple lungo il filamento, per poi ricavare una media." -#: src/slic3r/GUI/MainFrame.cpp:422 src/slic3r/GUI/MainFrame.cpp:785 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 +msgid "Entering Paint-on supports" +msgstr "Inserimento supporti Paint-on" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 +msgid "Entering Seam painting" +msgstr "Inserimento pittura giunzione" + +#: src/slic3r/GUI/MainFrame.cpp:1003 src/slic3r/GUI/MainFrame.cpp:1486 #: src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Error" msgstr "Errore" #: src/slic3r/GUI/FirmwareDialog.cpp:645 -#, possible-c-format +#, c-format msgid "Error accessing port at %s: %s" msgstr "Errore nell'accedere alla porta a%s: %s" -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3238 msgid "Error during reload" msgstr "Errore durante il ri-caricamento" -#: src/slic3r/GUI/Plater.cpp:5043 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:5172 +#, c-format msgid "Error exporting 3MF file %s" msgstr "Errore nell'esportazione del file 3MF %s" -#: src/slic3r/GUI/Plater.cpp:5005 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:5138 +#, c-format msgid "Error exporting AMF file %s" msgstr "Errore nell'esportazione del file AMF %s" -#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +#: src/slic3r/GUI/OpenGLManager.cpp:276 +msgid "Error loading shaders" +msgstr "Errore caricamento shader" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 msgid "Error Message" msgstr "Messaggio d'errore" -#: src/slic3r/GUI/AppConfig.cpp:114 +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to manually delete the file to recover from the error." +msgstr "Errore nell'analisi del file di configurazione di PrusaGCodeViewer, probabilmente è corrotto. Provare a cancellare manualmente il file per risolvere l'errore." + +#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 msgid "Error parsing PrusaSlicer config file, it is probably corrupted. Try to manually delete the file to recover from the error. Your user profiles will not be affected." msgstr "Errore nell'analisi del file config di PrusaSlicer, probabilmente è corrotto. Per risolvere questo problema prova ad eliminare manualmente il file. Il tuoi profili utente non verranno toccati." @@ -2292,163 +2737,191 @@ msgstr "Errore nell'analisi del file config di PrusaSlicer, probabilmente è cor msgid "Error uploading to print host:" msgstr "Errore durante il caricamento dell'host di stampa:" -#: src/libslic3r/Zipper.cpp:102 +#: src/slic3r/GUI/Plater.cpp:4752 +msgid "Error while loading .gcode file" +msgstr "Errore durante il caricamento del file .gcode" + +#: src/libslic3r/Zipper.cpp:27 msgid "Error with zip archive" msgstr "Errore con archivio zip" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1918 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 msgid "Error!" msgstr "Errore!" -#: src/slic3r/GUI/BedShapeDialog.cpp:505 +#: src/slic3r/GUI/BedShapeDialog.cpp:581 msgid "Error! Invalid model" msgstr "Errore! Modello non valido" +#: src/slic3r/GUI/NotificationManager.cpp:667 +#: src/slic3r/GUI/NotificationManager.cpp:683 +#: src/slic3r/GUI/NotificationManager.cpp:694 +msgid "ERROR:" +msgstr "ERRORE:" + #: src/slic3r/GUI/FirmwareDialog.cpp:647 -#, possible-c-format +#, c-format msgid "Error: %s" msgstr "Errore: %s" -#: src/slic3r/GUI/Job.hpp:123 +#: src/slic3r/GUI/Jobs/Job.cpp:74 msgid "ERROR: not enough resources to execute a new job." msgstr "ERRORE: risorse non sufficienti per eseguire un nuovo lavoro." -#: src/slic3r/GUI/Plater.cpp:240 src/slic3r/GUI/Plater.cpp:1216 -#: src/slic3r/GUI/Plater.cpp:1258 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 src/slic3r/GUI/GCodeViewer.cpp:2557 +#: src/slic3r/GUI/Plater.cpp:246 src/slic3r/GUI/Plater.cpp:1125 +#: src/slic3r/GUI/Plater.cpp:1175 src/slic3r/GUI/Plater.cpp:1196 msgid "Estimated printing time" msgstr "Tempo di stampa stimato" -#: src/slic3r/GUI/Plater.cpp:502 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Event" +msgstr "Evento" + +#: src/slic3r/GUI/Plater.cpp:368 msgid "Everywhere" msgstr "Ovunque" -#: src/slic3r/GUI/PresetHints.cpp:51 +#: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first %1% layers." msgstr "ad eccezione dei primi %1% layer." -#: src/slic3r/GUI/PresetHints.cpp:53 +#: src/slic3r/GUI/PresetHints.cpp:52 msgid "except for the first layer." msgstr "ad eccezione del primo layer." -#: src/libslic3r/Print.cpp:1377 +#: src/libslic3r/Print.cpp:1403 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "%1% %2% mm eccessivi per essere stampabili con un diametro ugello di %3% mm" #: src/slic3r/GUI/UpdateDialogs.cpp:191 src/slic3r/GUI/UpdateDialogs.cpp:246 -#, possible-c-format +#, c-format msgid "Exit %s" msgstr "Chiudi %s" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/slic3r/GUI/Plater.cpp:2143 +msgid "Expand sidebar" +msgstr "Espandi barra laterale" + +#: src/libslic3r/PrintConfig.cpp:405 msgid "Experimental option for preventing support material from being generated under bridged areas." msgstr "Opzione sperimentale per prevenire la formazione di supporti sotto i bridge." -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." msgstr "Opzione sperimentale per regolare il flusso delle sporgenze (sarà utilizzato il flusso dei bridge), applicare la velocità del bridge e attivare la ventola." -#: src/slic3r/GUI/GUI_App.cpp:815 src/slic3r/GUI/wxExtensions.cpp:755 +#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "Esperto" -#: src/slic3r/GUI/ConfigWizard.cpp:822 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Expert mode" msgstr "Modalità Esperto" -#: src/slic3r/GUI/GUI_App.cpp:815 +#: src/slic3r/GUI/GUI_App.cpp:1507 msgid "Expert View Mode" msgstr "Modalità Visualizzazione Esperto" -#: src/slic3r/GUI/Plater.cpp:5521 +#: src/slic3r/GUI/Plater.cpp:5706 msgid "Export" msgstr "Esporta" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export &Config" msgstr "Esporta &Configurazione" -#: src/slic3r/GUI/MainFrame.cpp:477 src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 msgid "Export &G-code" msgstr "Esporta &G-code" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export &toolpaths as OBJ" msgstr "Esporta percorso a&ttrezzo come OBJ" -#: src/libslic3r/PrintConfig.cpp:3338 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Export 3MF" msgstr "Esporta 3MF" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export all presets including physical printers to file" +msgstr "Esportazione di tutti i preset, incluse le stampanti fisiche, su file" + +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export all presets to file" msgstr "Esporta tutti i preset su file" -#: src/libslic3r/PrintConfig.cpp:3343 +#: src/libslic3r/PrintConfig.cpp:3536 msgid "Export AMF" msgstr "Esporta AMF" -#: src/slic3r/GUI/Plater.cpp:2598 +#: src/slic3r/GUI/Plater.cpp:2560 msgid "Export AMF file:" msgstr "Esporta file AMF:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1657 src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 msgid "Export as STL" msgstr "Esporta come STL" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 msgid "Export config" msgstr "Esporta config" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export Config &Bundle" -msgstr "Esporta Configurazione da &Bundle" +msgstr "Esporta Configurazione in &Bundle" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export Config Bundle With Physical Printers" +msgstr "Esportazione Config Bundle con stampanti fisiche" + +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export current configuration to file" msgstr "Esporta la configurazione corrente su file" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export current plate as AMF" msgstr "Esporta il piano corrente come AMF" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:1068 msgid "Export current plate as G-code" msgstr "Esporta il piano corrente come G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Esporta il piano corrente come G-code su scheda SD / Memoria flash" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export current plate as STL" msgstr "Esporta il piano corrente come STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export current plate as STL including supports" msgstr "Esporta piano corrente come STL includendo i supporti" -#: src/slic3r/GUI/Plater.cpp:3664 -msgid "Export failed" -msgstr "Esportazione fallita" - -#: src/slic3r/GUI/ConfigWizard.cpp:801 +#: src/slic3r/GUI/ConfigWizard.cpp:1160 msgid "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "Esporta il percorso completo dei modelli e fonti delle parti nei file 3mf e amf" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 -#: src/slic3r/GUI/Plater.cpp:5521 src/libslic3r/PrintConfig.cpp:3353 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 +#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 msgid "Export G-code" msgstr "Esporta G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export G-code to SD card / Flash drive" msgstr "Esporta G-code su Scheda SD / Memoria flash" -#: src/libslic3r/PrintConfig.cpp:3320 +#: src/slic3r/GUI/NotificationManager.cpp:631 +#: src/slic3r/GUI/NotificationManager.cpp:748 +msgid "Export G-Code." +msgstr "Esporta G-code." + +#: src/libslic3r/PrintConfig.cpp:3513 msgid "Export OBJ" msgstr "Esporta OBJ" -#: src/slic3r/GUI/Plater.cpp:2610 +#: src/slic3r/GUI/Plater.cpp:2572 msgid "Export OBJ file:" msgstr "Esporta file OBJ:" @@ -2456,212 +2929,215 @@ msgstr "Esporta file OBJ:" msgid "Export of a temporary 3mf file failed" msgstr "L'esportazione di un file 3mf non è riuscita" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export plate as &AMF" msgstr "Esporta piano come &AMF" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export plate as &STL" msgstr "Esporta piano come &STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export plate as STL &including supports" msgstr "Esporta piano come STL &includendo i supporti" -#: src/libslic3r/PrintConfig.cpp:3332 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Export SLA" msgstr "Esporta SLA" -#: src/slic3r/GUI/Preferences.cpp:72 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "Export sources full pathnames to 3mf and amf" msgstr "Esporta il percorso completo delle fonti su 3mf e amf" -#: src/libslic3r/PrintConfig.cpp:3348 +#: src/libslic3r/PrintConfig.cpp:3541 msgid "Export STL" msgstr "Esporta STL" -#: src/slic3r/GUI/Plater.cpp:2591 +#: src/slic3r/GUI/Plater.cpp:2553 msgid "Export STL file:" msgstr "Esporta file STL:" -#: src/libslic3r/PrintConfig.cpp:3339 +#: src/libslic3r/PrintConfig.cpp:3532 msgid "Export the model(s) as 3MF." msgstr "Esporta modello/i come 3MF." -#: src/libslic3r/PrintConfig.cpp:3344 +#: src/libslic3r/PrintConfig.cpp:3537 msgid "Export the model(s) as AMF." msgstr "Esporta il modello(i) come AMF." -#: src/libslic3r/PrintConfig.cpp:3321 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Export the model(s) as OBJ." msgstr "Esporta il modello(i) come OBJ." -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3542 msgid "Export the model(s) as STL." msgstr "Esporta il modello(i) come STL." -#: src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/Plater.cpp:3884 msgid "Export the selected object as STL file" msgstr "Esporta l'oggetto selezionato come file STL" -#: src/slic3r/GUI/Plater.cpp:880 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 msgid "Export to SD card / Flash drive" msgstr "Esporta su scheda SD / memoria Flash" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export toolpaths as OBJ" msgstr "Esporta percorso attrezzo come OBJ" -#: src/libslic3r/Print.cpp:1638 +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Exporting finished." +msgstr "Esportazione completata." + +#: src/libslic3r/Print.cpp:1676 msgid "Exporting G-code" msgstr "Esportando il G-code" #: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." -msgstr "Esportazione modello..." +msgid "Exporting model" +msgstr "Esportazione modello" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 msgid "Exporting source model" msgstr "Esportazione modello sorgente" -#: src/libslic3r/SLAPrint.cpp:646 +#: src/libslic3r/SLAPrint.cpp:660 msgid "Exposition time is out of printer profile bounds." msgstr "Il tempo di esposizione è fuori dai limiti del profilo stampante." -#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:3515 +#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 msgid "Exposure" msgstr "Esposizione" -#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Exposure time" msgstr "Tempo di esposizione" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "External perimeter" msgstr "Perimetro esterno" -#: src/slic3r/GUI/PresetHints.cpp:156 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "perimetri esterni" -#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:482 src/libslic3r/PrintConfig.cpp:493 msgid "External perimeters" msgstr "Perimetri esterni" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:505 msgid "External perimeters first" msgstr "Perimetri esterni per primi" -#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1704 msgid "Extra length on restart" msgstr "Lunghezza extra in ripresa" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Extra loading distance" msgstr "Distanza di caricamento aggiuntiva" -#: src/libslic3r/PrintConfig.cpp:477 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extra perimeters if needed" msgstr "Perimetro aggiuntivo se necessario" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1434 -#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 +#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Extruder" msgstr "Estrusore" -#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 -#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1704 -#: src/slic3r/GUI/Tab.cpp:2320 src/libslic3r/GCode/PreviewData.cpp:445 -#, possible-c-format +#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 +#, c-format msgid "Extruder %d" msgstr "Estrusore %d" -#: src/slic3r/GUI/DoubleSlider.cpp:1011 +#: src/slic3r/GUI/DoubleSlider.cpp:1137 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "Estrusore (attrezzo) viene cambiato a Estrusore \"%1%\"" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 -msgid "Extruder and Bed Temperatures" -msgstr "Temperature dell'estrusore e del piano" - #: src/slic3r/GUI/WipeTowerDialog.cpp:255 msgid "Extruder changed to" msgstr "Cambia estrusore a" -#: src/slic3r/GUI/Tab.cpp:1233 +#: src/slic3r/GUI/Tab.cpp:1563 msgid "Extruder clearance (mm)" msgstr "Spazio libero per l'estrusore (mm)" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Colore estrusore" -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder offset" msgstr "Offset estrusore" -#: src/libslic3r/PrintConfig.cpp:911 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Temperatura estrusore per il primo layer. Se vuoi controllare manualmente la temperatura durante la stampa, imposta questo a zero per disattivare i comandi di controllo temperatura nel file di output." - -#: src/libslic3r/PrintConfig.cpp:2065 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Temperatura estrusore per i layer successivi al primo. Imposta questo a zero per disattivare i comandi di controllo temperatura nell'output." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:617 -#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:1838 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 +#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 msgid "Extruders" msgstr "Estrusori" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1061 +msgid "Extruders count" +msgstr "Conteggio estrusori" + +#: src/slic3r/GUI/GCodeViewer.cpp:2493 +msgid "Extrusion" +msgstr "Estrusione" + +#: src/libslic3r/PrintConfig.cpp:575 msgid "Extrusion axis" msgstr "Asse estrusore" -#: src/libslic3r/PrintConfig.cpp:545 +#: src/libslic3r/PrintConfig.cpp:581 msgid "Extrusion multiplier" msgstr "Moltiplicatore estrusione" -#: src/slic3r/GUI/ConfigWizard.cpp:1037 +#: src/slic3r/GUI/ConfigWizard.cpp:1403 msgid "Extrusion Temperature:" msgstr "Temperatura di estrusione:" -#: src/slic3r/GUI/Tab.cpp:1205 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Extrusion width" msgstr "Larghezza estrusione" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:618 -#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 -#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 msgid "Extrusion Width" msgstr "Larghezza Estrusione" -#: src/slic3r/GUI/Plater.cpp:162 +#: src/slic3r/GUI/Plater.cpp:168 msgid "Facets" msgstr "Facce" -#: src/slic3r/GUI/GUI_ObjectList.cpp:349 +#: src/slic3r/GUI/GUI_ObjectList.cpp:396 msgid "facets added" msgstr "aggiunte facce" -#: src/slic3r/GUI/GUI_ObjectList.cpp:348 +#: src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "facets removed" msgstr "rimosse facce" -#: src/slic3r/GUI/GUI_ObjectList.cpp:350 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "facets reversed" msgstr "facce invertite" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2660 msgid "Faded layers" msgstr "Layer sfumati" -#: src/libslic3r/Zipper.cpp:44 +#: src/libslic3r/miniz_extension.cpp:103 msgid "failed finding central directory" msgstr "directory centrale non trovata" @@ -2669,105 +3145,115 @@ msgstr "directory centrale non trovata" msgid "Failed loading the input model." msgstr "Caricamento modello input fallito." -#: src/libslic3r/PrintBase.cpp:71 +#: src/libslic3r/PrintBase.cpp:72 msgid "Failed processing of the output_filename_format template." msgstr "Elaborazione fallita del modello output_filename_format." -#: src/slic3r/GUI/PresetHints.cpp:42 +#: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Ventola" -#: src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Impostazioni ventola" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1457 +#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 msgid "Fan speed" msgstr "Velocità ventola" -#: src/libslic3r/GCode/PreviewData.cpp:353 +#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 msgid "Fan Speed (%)" msgstr "Velocità ventola (%)" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Veloce" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Fast tilt" msgstr "Tilt veloce" -#: src/slic3r/GUI/GUI_App.cpp:141 +#: src/slic3r/GUI/GUI_App.cpp:531 msgid "Fatal error" msgstr "Errore irreversibile" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 -#: src/libslic3r/GCode/PreviewData.cpp:345 +#: src/slic3r/GUI/GUI_Init.cpp:88 +msgid "Fatal error, exception catched: %1%" +msgstr "Fatal error, eccezione registrata: %1%" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 +#: src/libslic3r/GCode/PreviewData.cpp:350 msgid "Feature type" msgstr "Tipo di caratteristica" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 +#: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" msgstr "Tipi di caratteristica" -#: src/slic3r/GUI/ConfigWizard.cpp:1525 +#: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" msgstr "Stampanti con tecnologia FFF" -#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1425 -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1771 msgid "Filament" msgstr "Filamento" -#: src/slic3r/GUI/Preset.cpp:1522 +#: src/libslic3r/Preset.cpp:1301 msgid "filament" msgstr "filamento" -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Filament and Nozzle Diameters" msgstr "Diametro filamento e ugello" -#: src/slic3r/GUI/ConfigWizard.cpp:983 +#: src/slic3r/GUI/ConfigWizard.cpp:1349 msgid "Filament Diameter:" msgstr "Diametro del filamento:" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:687 msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." msgstr "Il filamento è raffreddato venendo spostato avanti e indietro nei tubi di raffreddamento. Specificare il numero desiderato di questi movimenti." -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Filament load time" msgstr "Durata caricamento filamento" -#: src/libslic3r/PrintConfig.cpp:588 +#: src/libslic3r/PrintConfig.cpp:624 msgid "Filament notes" msgstr "Note filamento" -#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1378 +#: src/slic3r/GUI/Tab.cpp:1669 msgid "Filament Overrides" msgstr "Sovrascrittura filamento" -#: src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "Filament parking position" msgstr "Posizione di parcheggio del filamento" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filament Profiles Selection" msgstr "Selezione Profili Filamento" -#: src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Tab.cpp:1817 msgid "Filament properties" msgstr "Proprietà filamento" -#: src/slic3r/GUI/Tab.hpp:355 +#: src/slic3r/GUI/Tab.hpp:409 msgid "Filament Settings" msgstr "Impostazioni Filamento" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Filament Settings Tab" +msgstr "Scheda Impostazioni Filamento" + +#: src/libslic3r/PrintConfig.cpp:762 msgid "Filament type" msgstr "Tipo filamento" -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Filament unload time" msgstr "Durata scaricamento filamento" @@ -2775,75 +3261,79 @@ msgstr "Durata scaricamento filamento" msgid "filaments" msgstr "filamenti" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filaments" msgstr "Filamenti" -#: src/libslic3r/Zipper.cpp:72 +#: src/slic3r/GUI/ConfigWizard.cpp:691 +msgid "Filaments marked with <b>*</b> are <b>not</b> compatible with some installed printers." +msgstr "I filamenti segnati con <b>*</b> non <b>sono</b> compatibili con alcune stampanti installate." + +#: src/libslic3r/miniz_extension.cpp:131 msgid "file close failed" msgstr "chiusura del file fallita" -#: src/libslic3r/Zipper.cpp:66 +#: src/libslic3r/miniz_extension.cpp:125 msgid "file create failed" msgstr "generazione del file non riuscita" -#: src/slic3r/GUI/MainFrame.cpp:791 +#: src/slic3r/GUI/MainFrame.cpp:1492 msgid "File Not Found" msgstr "file non trovato" -#: src/libslic3r/Zipper.cpp:86 +#: src/libslic3r/miniz_extension.cpp:145 msgid "file not found" msgstr "file non trovato" -#: src/libslic3r/Zipper.cpp:64 +#: src/libslic3r/miniz_extension.cpp:123 msgid "file open failed" msgstr "apertura file non riuscita" -#: src/libslic3r/Zipper.cpp:70 +#: src/libslic3r/miniz_extension.cpp:129 msgid "file read failed" msgstr "lettura del file non riuscita" -#: src/libslic3r/Zipper.cpp:74 +#: src/libslic3r/miniz_extension.cpp:133 msgid "file seek failed" msgstr "ricerca file fallita" -#: src/libslic3r/Zipper.cpp:76 +#: src/libslic3r/miniz_extension.cpp:135 msgid "file stat failed" msgstr "statistica file non riuscita" -#: src/libslic3r/Zipper.cpp:36 +#: src/libslic3r/miniz_extension.cpp:95 msgid "file too large" msgstr "file troppo grande" -#: src/libslic3r/Zipper.cpp:68 +#: src/libslic3r/miniz_extension.cpp:127 msgid "file write failed" msgstr "scrittura file fallita" -#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 msgid "Filename" msgstr "Nome file" -#: src/libslic3r/PrintConfig.cpp:775 +#: src/libslic3r/PrintConfig.cpp:811 msgid "Fill angle" msgstr "Angolo riempimento" -#: src/libslic3r/PrintConfig.cpp:789 +#: src/libslic3r/PrintConfig.cpp:825 msgid "Fill density" msgstr "Densità riempimento" -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:862 msgid "Fill pattern" msgstr "Trama riempimento" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:473 msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." msgstr "Trama per riempimento inferiore. Questo influenza solamente il layer inferiore esterno visibile, e non i gusci solidi adiacenti." -#: src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:864 msgid "Fill pattern for general low-density infill." msgstr "Trama riempimento generale a bassa densità." -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:451 msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." msgstr "Trama per riempimento superiore. Questo influenza solamente il layer superiore esterno visibile, e non i gusci solidi adiacenti." @@ -2851,7 +3341,7 @@ msgstr "Trama per riempimento superiore. Questo influenza solamente il layer sup msgid "Finished" msgstr "Finito" -#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1947 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 msgid "Firmware" msgstr "Firmware" @@ -2863,44 +3353,52 @@ msgstr "Firmware flasher" msgid "Firmware image:" msgstr "Immagine firmware:" -#: src/slic3r/GUI/Tab.cpp:2577 +#: src/slic3r/GUI/Tab.cpp:2733 msgid "Firmware Retraction" msgstr "Retrazione Firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:891 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 msgid "Firmware Type" msgstr "Tipo Firmware" -#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 -#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 msgid "First layer" msgstr "Primo layer" -#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:909 +msgid "First layer bed temperature" +msgstr "Temperatura del piano del primo layer" + +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 msgid "First layer height" msgstr "Altezza del primo layer" -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1448 msgid "First layer height can't be greater than nozzle diameter" msgstr "L'altezza del primo layer non può essere più grande del diametro dell'ugello" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:960 +msgid "First layer nozzle temperature" +msgstr "Temperatura dell'ugello del primo layer" + +#: src/libslic3r/PrintConfig.cpp:942 msgid "First layer speed" msgstr "Velocità del primo layer" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "Volumetrica primo layer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1647 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Ripara tramite Netfabb" -#: src/slic3r/GUI/Plater.cpp:3473 +#: src/slic3r/GUI/Plater.cpp:3278 msgid "Fix Throught NetFabb" msgstr "Ripara tramite NetFabb" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "Installa &firmware stampante" @@ -2928,44 +3426,58 @@ msgstr "Flash in corso. Non disconnettere la stampante!" msgid "Flashing succeeded!" msgstr "Flash completato con successo!" -#: src/slic3r/GUI/Tab.cpp:1218 +#: src/slic3r/GUI/Tab.cpp:1548 msgid "Flow" msgstr "Flusso" -#: src/slic3r/GUI/PresetHints.cpp:220 +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Flow rate" +msgstr "Flusso" + +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "flow rate is maximized" msgstr "il flusso viene massimizzato" -#: src/slic3r/GUI/UpdateDialogs.cpp:286 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:555 +msgid "Following printer preset(s) is duplicated:%1%The above preset for printer \"%2%\" will be used just once." +msgstr "Il seguente(i) preset della stampante è duplicato:%1% Il preset sopra per la stampante \"%2%\" verrà usato solo una volta." + +#: src/slic3r/GUI/UpdateDialogs.cpp:287 msgid "For more information please visit our wiki page:" msgstr "Per maggiori informazioni visita la nostra pagina wiki:" -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 +#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 msgid "For support enforcers only" msgstr "Solo per rinforzi supporto" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3267 -msgid "for the left button: indicates a non-system (or non-default) preset,\nfor the right button: indicates that the settings hasn't been modified." -msgstr "per il tasto sinistro: indica un preset non di sistema (o non-predefinito),\nper il tasto destro: indica che le impostazioni non sono state modificate." +#: src/slic3r/GUI/Tab.cpp:3702 +msgid "" +"for the left button: indicates a non-system (or non-default) preset,\n" +"for the right button: indicates that the settings hasn't been modified." +msgstr "" +"per il tasto sinistro: indica un preset non di sistema (o non-predefinito),\n" +"per il tasto destro: indica che le impostazioni non sono state modificate." -#: src/slic3r/GUI/ConfigManipulation.cpp:136 -msgid "For the Wipe Tower to work with the soluble supports, the support layers\nneed to be synchronized with the object layers." +#: src/slic3r/GUI/ConfigManipulation.cpp:135 +msgid "" +"For the Wipe Tower to work with the soluble supports, the support layers\n" +"need to be synchronized with the object layers." msgstr "Per far sì che la torre di spurgo funzioni con i supporti solubili, i layer dei supporti devono essere sincronizzati con quelli del modello." -#: src/libslic3r/Print.cpp:1396 +#: src/libslic3r/Print.cpp:1422 msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." msgstr "Per far sì che la torre di spurgo funzioni con i supporti solubili, i layer dei supporti devono essere sincronizzati con quelli del modello." -#: src/libslic3r/PrintConfig.cpp:2864 +#: src/libslic3r/PrintConfig.cpp:3028 msgid "Force pad around object everywhere" msgstr "Forza il Pad ovunque intorno all'oggetto" -#: src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Force solid infill for regions having a smaller area than the specified threshold." msgstr "Forza riempimento solido per le regioni con un'area inferiore al limite specificato." -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1116 msgid "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material." msgstr "Forza la generazione di perimetri solidi tra volumi o materiali adiacenti. Utile per stampe multi estrusore con materiali traslucidi o supporti solubili manuali." @@ -2973,244 +3485,305 @@ msgstr "Forza la generazione di perimetri solidi tra volumi o materiali adiacent msgid "From" msgstr "Da" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2223 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "from" +msgstr "da" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 msgid "From Object List You can't delete the last solid part from object." msgstr "Non è possibile eliminare l'ultima parte solida dall'oggetto nell'elenco Oggetti." -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front" msgstr "Frontale" -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front View" msgstr "Vista anteriore" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "nome completo profilo" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/DoubleSlider.cpp:1021 -msgid "G-code associated to this tick mark is in a conflict with print mode.\nEditing it will cause changes of Slider data." -msgstr "Il G-code associato a questo segno di spunta è in conflitto con la modalità di stampa.\nLa modifica causerà cambiamenti nei dati della barra di scorrimento." +#: src/slic3r/GUI/DoubleSlider.cpp:1146 +msgid "" +"G-code associated to this tick mark is in a conflict with print mode.\n" +"Editing it will cause changes of Slider data." +msgstr "" +"Il G-code associato a questo segno di spunta è in conflitto con la modalità di stampa.\n" +"La modifica causerà cambiamenti nei dati della barra di scorrimento." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:130 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "G-code file exported to %1%" msgstr "G-code esportato in %1%" -#: src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:980 msgid "G-code flavor" msgstr "Formato G-code" -#: src/libslic3r/PrintConfig.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:79 +msgid "G-code preview" +msgstr "Anteprima G-code" + +#: src/libslic3r/PrintConfig.cpp:3552 +msgid "G-code viewer" +msgstr "Visualizzatore G-code" + +#: src/libslic3r/PrintConfig.cpp:757 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "g/ml" msgstr "g/ml" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/PrintConfig.cpp:918 +#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 +#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 msgid "Gap fill" msgstr "Riempimento spazi" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1796 -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 +#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "Generale" -#: src/libslic3r/PrintConfig.cpp:1307 +#: src/libslic3r/PrintConfig.cpp:1415 msgid "Generate no less than the number of skirt loops required to consume the specified amount of filament on the bottom layer. For multi-extruder machines, this minimum applies to each extruder." msgstr "Genera almeno il numero di skirt necessari per consumare la quantità di filamento specificata per il primo layer. Per le macchine multi estrusore, questo minimo riguarda ciascun estrusore." -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" msgstr "Genera materiale di supporto" -#: src/libslic3r/PrintConfig.cpp:1926 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." msgstr "Genera materiale di supporto per il numero di layer specificati partendo dal basso, a prescindere che sia abilitato il materiale di supporto normale o meno, e indipendentemente dall'angolo limite. Questo è utile per ottenere più adesione negli oggetti con un appoggio sul piano molto sottile o fragile." -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Generate supports" msgstr "Genera supporti" -#: src/libslic3r/PrintConfig.cpp:2615 +#: src/libslic3r/PrintConfig.cpp:2758 msgid "Generate supports for the models" msgstr "Genera supporti per i modelli" -#: src/libslic3r/Print.cpp:1614 +#: src/slic3r/GUI/Plater.cpp:3554 +msgid "generated warnings" +msgstr "ha generato avvisi" + +#: src/libslic3r/Print.cpp:1645 msgid "Generating brim" msgstr "Generazione brim" -#: src/libslic3r/Print.cpp:1642 +#: src/libslic3r/Print.cpp:1680 msgid "Generating G-code" msgstr "Generazione G-code" -#: src/libslic3r/SLAPrintSteps.cpp:48 +#: src/slic3r/GUI/GCodeViewer.cpp:1392 +msgid "Generating index buffers" +msgstr "Generazione indici buffer" + +#: src/libslic3r/SLAPrintSteps.cpp:49 msgid "Generating pad" msgstr "Generazione pad" -#: src/libslic3r/PrintObject.cpp:152 +#: src/libslic3r/PrintObject.cpp:158 msgid "Generating perimeters" msgstr "Generazione perimetri" -#: src/libslic3r/Print.cpp:1606 +#: src/libslic3r/Print.cpp:1636 msgid "Generating skirt" msgstr "Generando skirt" -#: src/libslic3r/PrintObject.cpp:395 +#: src/libslic3r/PrintObject.cpp:422 msgid "Generating support material" msgstr "Generazione materiale di supporto" -#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +#: src/libslic3r/SLAPrintSteps.cpp:47 src/libslic3r/SLAPrintSteps.cpp:359 msgid "Generating support points" msgstr "Generazione punti di supporto" -#: src/libslic3r/SLAPrintSteps.cpp:47 +#: src/libslic3r/SLAPrintSteps.cpp:48 msgid "Generating support tree" msgstr "Generazione albero di supporto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2022 +#: src/slic3r/GUI/GCodeViewer.cpp:933 +msgid "Generating toolpaths" +msgstr "Generazione percorsi" + +#: src/slic3r/GUI/GCodeViewer.cpp:1318 +msgid "Generating vertex buffer" +msgstr "Generazione buffer vertici" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 msgid "Generic" msgstr "Generico" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Gizmo Taglia" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Gizmo move" msgstr "Gizmo Sposta" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Gizmo move: Press to snap by 1mm" +msgstr "Gizmo Sposta: Premere per scatti di 1mm" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "Gizmo Place face on bed" msgstr "Gizmo Posiziona faccia sul piano" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Gizmo rotate" msgstr "Gizmo Ruota" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 +msgid "Gizmo rotate: Press to rotate selected objects around their own center" +msgstr "Gizmo ruota: Premi per ruotare gli oggetti attorno al loro centro" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Gizmo scale" msgstr "Gizmo Ridimensiona" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmo scale: Press to activate one direction scaling" +msgstr "Gizmo ridimensiona: Premi per attivare il ridimensionamento su una direzione" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +msgid "Gizmo scale: Press to scale selected objects around their own center" +msgstr "Gizmo ridimensiona: Premi per ridimensionare gli oggetti attorno al loro centro" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +msgid "Gizmo scale: Press to snap by 5%" +msgstr "Gizmo Ridimensiona: Premere per salti del 5%" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Gizmo scale: Scale selection to fit print volume" +msgstr "Gizmo ridimensiona: Ridimensiona la selezione per riempire il volume di stampa" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo SLA hollow" msgstr "Gizmo SLA Svuota" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo SLA support points" msgstr "Gizmo Punti supporto SLA" -#: src/slic3r/GUI/GLCanvas3D.cpp:2921 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:562 +#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "Gizmo-Sposta" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:489 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 msgid "Gizmo-Place on Face" msgstr "Gizmo-Posiziona su faccia" -#: src/slic3r/GUI/GLCanvas3D.cpp:3001 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:564 +#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "Gizmo-Ruota" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:563 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:521 msgid "Gizmo-Scale" msgstr "Gizmo-Ridimensiona" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 msgid "Gizmos" msgstr "Gizmo" -#: src/slic3r/GUI/AboutDialog.cpp:259 +#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versione 3" -#: src/slic3r/GUI/ConfigWizard.cpp:980 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "È necessaria una buona precisione, quindi utilizza un calibro ed effettua diverse misurazioni lungo il filamento, quindi calcola la media." -#: src/libslic3r/PrintConfig.cpp:844 +#: src/libslic3r/PrintConfig.cpp:882 msgid "Grid" msgstr "Griglia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2454 +#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +msgid "Group" +msgstr "Gruppo" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Group manipulation" msgstr "Manipolazione gruppo" -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "GUI" msgstr "GUI" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Gyroid" msgstr "Giroide" -#: src/slic3r/GUI/Tab.cpp:2937 -msgid "has the following unsaved changes:" -msgstr "ha le seguenti modifiche non salvate:" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Diametro testa" -#: src/slic3r/GUI/ConfigManipulation.cpp:317 -msgid "Head penetration should not be greater than the head width." -msgstr "L'inserimento della capocchia non deve essere più grande della sua larghezza." +#: src/libslic3r/PrintConfig.cpp:2772 +msgid "Head penetration" +msgstr "Penetrazione testa" -#: src/libslic3r/PrintConfig.cpp:869 +#: src/slic3r/GUI/ConfigManipulation.cpp:322 +msgid "Head penetration should not be greater than the head width." +msgstr "L'inserimento della testa non deve essere più grande della sua larghezza." + +#: src/libslic3r/PrintConfig.cpp:910 msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." msgstr "Temperatura piano riscaldato per il primo layer. Imposta a zero per disattivare i comandi di controllo temperatura nell'output." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 +#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 msgid "Height" msgstr "Altezza" -#: src/libslic3r/GCode/PreviewData.cpp:347 +#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 msgid "Height (mm)" msgstr "Altezza (mm)" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." msgstr "Altezza dello skirt espresso in layer. Imposta un valore alto per utilizzare lo skirt come scudo contro le scolature." -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "Height of the display" msgstr "Altezza del display" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Height range Modifier" -msgstr "Modificatore intervallo Altezza" +msgstr "Modificatore intervallo altezza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Height ranges" msgstr "Intervalli Altezza" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:295 msgid "Heights at which a filament change is to occur." msgstr "Altezze alle quali i cambi di filamento devono avvenire." -#: src/slic3r/GUI/ConfigWizard.cpp:433 -#, possible-c-format +#: src/slic3r/GUI/ConfigWizard.cpp:451 +#, c-format msgid "Hello, welcome to %s! This %s helps you with the initial configuration; just a few settings and you will be ready to print." msgstr "Ciao, benvenuto su %s! La %s ti aiuterà con la configurazione iniziale; giusto qualche impostazione e sarai pronto a stampare." -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3564 msgid "Help" msgstr "Aiuto" -#: src/libslic3r/PrintConfig.cpp:3371 +#: src/libslic3r/PrintConfig.cpp:3570 msgid "Help (FFF options)" msgstr "Aiuto (opzioni FFF)" -#: src/libslic3r/PrintConfig.cpp:3376 +#: src/libslic3r/PrintConfig.cpp:3575 msgid "Help (SLA options)" msgstr "Aiuto (opzioni SLA)" @@ -3218,96 +3791,80 @@ msgstr "Aiuto (opzioni SLA)" msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." msgstr "Qui è possibile regolare il volume di spurgo necessario (mm³) per ogni coppia di attrezzi." -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1017 msgid "High extruder current on filament swap" msgstr "Alta corrente estrusore al cambio filamento" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 +#: src/slic3r/GUI/GLCanvas3D.cpp:263 msgid "Higher print quality versus higher print speed." msgstr "Qualità di stampa più alta contro velocità di stampa più alta." -#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 msgid "Hilbert Curve" msgstr "Curva di Hilbert" -#: src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:916 msgid "Hold Shift to Slice & Export G-code" msgstr "Tieni premuto Shift per fare lo Slice & Esportare il G-code" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 msgid "Hole depth" msgstr "Profondità foro" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 msgid "Hole diameter" msgstr "Diametro foro" -#: src/slic3r/GUI/Plater.cpp:2760 -msgid "Hollow" -msgstr "Svuota" - -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:977 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:785 msgid "Hollow and drill" msgstr "Svuota e perfora" -#: src/libslic3r/PrintConfig.cpp:2910 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Hollow out a model to have an empty interior" msgstr "Svuota un modello per avere l'interno vuoto" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:40 msgid "Hollow this object" msgstr "Svuota questo oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3654 -#: src/slic3r/GUI/Tab.cpp:3655 src/libslic3r/SLA/Hollowing.cpp:46 -#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 -#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2909 -#: src/libslic3r/PrintConfig.cpp:2916 src/libslic3r/PrintConfig.cpp:2926 -#: src/libslic3r/PrintConfig.cpp:2935 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 +#: src/slic3r/GUI/Tab.cpp:4074 src/libslic3r/SLA/Hollowing.cpp:45 +#: src/libslic3r/SLA/Hollowing.cpp:57 src/libslic3r/SLA/Hollowing.cpp:66 +#: src/libslic3r/SLA/Hollowing.cpp:75 src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Hollowing" msgstr "Svuotamento" -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Hollowing cancelled." -msgstr "Svuotamento annullato." - -#: src/slic3r/GUI/Plater.cpp:2927 -msgid "Hollowing done." -msgstr "Svuotamento completato." - -#: src/slic3r/GUI/Plater.cpp:2929 -msgid "Hollowing failed." -msgstr "Svuotamento non riuscito." - -#: src/libslic3r/PrintConfig.cpp:2937 +#: src/libslic3r/PrintConfig.cpp:3101 msgid "Hollowing is done in two steps: first, an imaginary interior is calculated deeper (offset plus the closing distance) in the object and then it's inflated back to the specified offset. A greater closing distance makes the interior more rounded. At zero, the interior will resemble the exterior the most." msgstr "Lo svuotamento avviene in due passaggi: prima, viene calcolato un interno immaginario (offset più la distanza di chiusura) nell'oggetto e viene quindi riportato all'offset specificato. Una distanza di chiusura più grande rende l'interno più arrotondato. A zero, l'interno sarà più somigliante all'esterno." -#: src/libslic3r/SLAPrintSteps.cpp:43 +#: src/libslic3r/SLAPrintSteps.cpp:44 msgid "Hollowing model" msgstr "Svuotamento modello" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:813 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:624 msgid "Hollowing parameter change" msgstr "Cambio parametro svuotamento" -#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 +#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 msgid "Honeycomb" msgstr "Nido d'ape" -#: src/slic3r/GUI/Tab.cpp:1064 +#: src/slic3r/GUI/Tab.cpp:1386 msgid "Horizontal shells" msgstr "Gusci orizzontali" -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." msgstr "Larghezza orizzontale del brim che sarà stampata attorno ad ogni oggetto nel primo layer." -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" msgstr "Host" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Host Type" msgstr "Tipo di Host" @@ -3315,189 +3872,249 @@ msgstr "Tipo di Host" msgid "Hostname" msgstr "Nome Host" -#: src/libslic3r/PrintConfig.cpp:97 +#: src/libslic3r/PrintConfig.cpp:99 msgid "Hostname, IP or URL" msgstr "Nome Host, IP o URL" -#: src/slic3r/GUI/Tab.cpp:139 -msgid "Hover the cursor over buttons to find more information \nor click this button." +#: src/slic3r/GUI/Tab.cpp:210 +msgid "" +"Hover the cursor over buttons to find more information \n" +"or click this button." msgstr "Scorri il cursore sui bottoni per ottenere maggiori informazioni o clicca su questo bottone." -#: src/libslic3r/PrintConfig.cpp:2812 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "How far should the pad extend around the contained geometry" msgstr "Quanto deve estendersi il Pad attorno la geometria contenuta" -#: src/libslic3r/PrintConfig.cpp:2901 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Quanto devono penetrare i piccoli connettori nel corpo del modello." -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "How much the pinhead has to penetrate the model surface" msgstr "Quanto deve penetrare l'apice nella superficie del modello" -#: src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "How much the supports should lift up the supported object. If \"Pad around object\" is enabled, this value is ignored." msgstr "Quanto deve sollevarsi il supporto fino all'oggetto supportato. Se \"Pad intorno all'oggetto\" è attivo, questo valore è ignorato." -#: src/libslic3r/PrintConfig.cpp:111 +#: src/libslic3r/PrintConfig.cpp:1209 +msgid "How to apply limits" +msgstr "Come applicare i limiti" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "How to apply the Machine Limits" +msgstr "Come applicare i Limiti Macchina" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 +#: src/libslic3r/PrintConfig.cpp:113 msgid "HTTPS CA File" msgstr "File HTTPS CA" -#: src/slic3r/GUI/Tab.cpp:1713 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." msgstr "File HTTPS CA opzionale. È necessario solo se si intende usare un HTTPS con certificato autofirmato." -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:376 msgid "Icon size in a respect to the default size" msgstr "Dimensioni icona rispetto alla dimensione predefinita" -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:147 msgid "ID" msgstr "ID" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:2015 msgid "If checked, supports will be generated automatically based on the overhang threshold value. If unchecked, supports will be generated inside the \"Support Enforcer\" volumes only." msgstr "Se attivo, verranno automaticamente generati i supporti in base al valore soglia di sporgenza. Se disattivato, i supporti verranno generati solamente all'interno dei volumi di \"Rinforzo Supporto\"." -#: src/slic3r/GUI/ConfigWizard.cpp:773 -#, possible-c-format +#: src/slic3r/GUI/ConfigWizard.cpp:1132 +#, c-format msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Se attivato, %s verifica la presenza di nuove versioni online. Quando è disponibile una nuova versione, viene mostrata una notifica al successivo avvio dell'applicazione (mai durante l'uso del programma). È solo un meccanismo di notifica, non viene effettuato nessun aggiornamento automatico." -#: src/slic3r/GUI/ConfigWizard.cpp:783 -#, possible-c-format +#: src/slic3r/GUI/ConfigWizard.cpp:1142 +#, c-format msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." msgstr "Se attivo, %s scarica in background gli aggiornamenti dei preset integrati nel sistema. Questi aggiornamenti vengono scaricati in una cartella temporanea separata. Quando è disponibile una nuova versione del preset, questa viene proposta all'avvio." -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." msgstr "Se attivata, tutti gli estrusori di stampa verranno preparati nel bordo frontale del piano di stampa all'inizio della stampa." -#: src/slic3r/GUI/ConfigWizard.cpp:805 -msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\nIf not enabled, the Reload from disk command will ask to select each file using an open file dialog." -msgstr "Se attivo, permette al comando di Ricarica da disco di trovare e caricare automaticamente i file quando richiesti.\nSe non attivo, il comando Ricarica da disco chiederà di selezionare ciascun file tramite finestra di apertura file." +#: src/slic3r/GUI/ConfigWizard.cpp:1164 +msgid "" +"If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n" +"If not enabled, the Reload from disk command will ask to select each file using an open file dialog." +msgstr "" +"Se attivo, permette al comando di Ricarica da disco di trovare e caricare automaticamente i file quando richiesti.\n" +"Se non attivo, il comando Ricarica da disco chiederà di selezionare ciascun file tramite finestra di apertura file." -#: src/slic3r/GUI/Preferences.cpp:74 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked." msgstr "Se attivo, permette il comando Ricarica da disco per trovare e caricare automaticamente i file quando richiesto." -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:238 +msgid "If enabled, changes made using the sequential slider, in preview, apply only to gcode top layer. If disabled, changes made using the sequential slider, in preview, apply to the whole gcode." +msgstr "Se abilitato, le modifiche effettuate utilizzando il cursore sequenziale, in anteprima, si applicano solo al livello superiore del gcode. Se disabilitato, le modifiche effettuate utilizzando il cursore sequenziale, in anteprima, si applicano all'intero gcode." + +#: src/slic3r/GUI/Preferences.cpp:83 msgid "If enabled, PrusaSlicer will check for the new versions of itself online. When a new version becomes available a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Se attivato, PrusaSlicer verifica la presenza di nuove versioni online. Quando una nuova versione è disponibile, viene mostrata una notifica al successivo avvio dell'applicazione (mai durante l'uso del programma). Questo è solo un meccanismo di notifica, non viene effettuato nessun aggiornamento automatico." -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:270 +msgid "If enabled, renders object using the environment map." +msgstr "Se abilitato, renderizza l'oggetto utilizzando la mappa ambientale." + +#: src/slic3r/GUI/Preferences.cpp:200 +msgid "If enabled, reverses the direction of zoom with mouse wheel" +msgstr "Se abilitato, inverte la direzione dello zoom con la rotella del mouse" + +#: src/slic3r/GUI/Preferences.cpp:99 msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." msgstr "Se abilitato, Slic3r scarica gli aggiornamenti dei preset inclusi in background. Questi aggiornamenti sono scaricati in una posizione temporanea. Quando una nuova versione dei preset diventa disponibile, viene offerta all'avvio." -#: src/slic3r/GUI/Preferences.cpp:106 +#: src/slic3r/GUI/Preferences.cpp:137 msgid "If enabled, the 3D scene will be rendered in Retina resolution. If you are experiencing 3D performance problems, disabling this option may help." msgstr "Se attivo, la scena 3D verrà renderizzata con la risoluzione Retina. Se si riscontrano problemi di prestazioni 3D, disattivare questa opzione potrebbe essere d'aiuto." -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/slic3r/GUI/Preferences.cpp:215 +msgid "If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene" +msgstr "Se abilitato, il pulsante per ridurre la barra di scorrimento laterale apparirà nell'angolo in alto a destra della scena 3D" + +#: src/libslic3r/PrintConfig.cpp:3698 +msgid "If enabled, the command line arguments are sent to an existing instance of GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides the \"single_instance\" configuration value from application preferences." +msgstr "Se abilitato, gli argomenti della riga di comando vengono inviati ad un'istanza GUI esistente di PrusaSlicer, oppure viene attivata una finestra PrusaSlicer esistente. Sovrascrive il valore di configurazione \"single_instance\" dalle preferenze dell'applicazione." + +#: src/libslic3r/PrintConfig.cpp:1804 msgid "If enabled, the skirt will be as tall as a highest printed object. This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft." msgstr "Se abilitata, lo skirt sarà alto quanto l'oggetto stampato più alto. Questo è utile per evitare che una stampa ABS o ASA si deformi e si stacchi dal piano di stampa a causa di correnti d'aria." -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:2000 msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." msgstr "Se attiva, la torre di spurgo non verrà stampata sui layer con cambio attrezzo. Sui layer con un cambio attrezzo, l'estrusore si sposterà verso il basso per stampare la torre di spurgo. L'utente è responsabile nell'accertarsi che non avvengano collisioni durante la stampa." -#: src/slic3r/GUI/Preferences.cpp:128 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Se attivo, usa la visuale libera. Se non attivo, usa la visuale vincolata." -#: src/slic3r/GUI/Preferences.cpp:121 +#: src/slic3r/GUI/Preferences.cpp:186 msgid "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "Se attivo, usa la visuale in prospettiva. Se non attivo, usa la visuale ortografica." -#: src/slic3r/GUI/Preferences.cpp:145 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "If enabled, you can change size of toolbar icons manually." msgstr "Se attivo, è possibile modificare manualmente la dimensione delle icone degli strumenti." -#: src/slic3r/GUI/PresetHints.cpp:29 +#: src/slic3r/GUI/PresetHints.cpp:28 msgid "If estimated layer time is below ~%1%s, fan will run at %2%%% and print speed will be reduced so that no less than %3%s are spent on that layer (however, speed will never be reduced below %4%mm/s)." msgstr "Se il tempo previsto per il layer è inferiore a ~%1%s, la ventola girerà al %2%%% e la velocità di stampa sarà ridotta così da impiegare non meno di %3%s su quel layer (in ogni caso, la velocità non sarà mai ridotta sotto %4%mm/s)." -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:35 msgid "If estimated layer time is greater, but still below ~%1%s, fan will run at a proportionally decreasing speed between %2%%% and %3%%%." msgstr "Se la durata di stampa prevista per il layer è più lunga, ma comunque inferiore a ~%1%s, la ventola girerà ad una velocità proporzionalmente decrescente compresa tra %2%%% e %3%%%." -#: src/libslic3r/PrintConfig.cpp:901 +#: src/libslic3r/PrintConfig.cpp:943 msgid "If expressed as absolute value in mm/s, this speed will be applied to all the print moves of the first layer, regardless of their type. If expressed as a percentage (for example: 40%) it will scale the default speeds." msgstr "Se espresso in valore assoluto in mm/s, questa velocità sarà applicata a tutti i movimenti di stampa del primo layer, a prescindere dal tipo di movimento. Se espresso in percentuale (per esempio: 40%) verranno scalate le velocità predefinite." -#: src/libslic3r/PrintConfig.cpp:573 +#: src/libslic3r/PrintConfig.cpp:609 msgid "If layer print time is estimated below this number of seconds, fan will be enabled and its speed will be calculated by interpolating the minimum and maximum speeds." msgstr "Se il tempo stimato di stampa del layer è al di sotto di questo numero di secondi, la ventola sarà attivata e la sua velocità sarà calcolata interpolando la velocità minima e massima." -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1821 msgid "If layer print time is estimated below this number of seconds, print moves speed will be scaled down to extend duration to this value." msgstr "Se il tempo stimato di stampa del layer è al di sotto di questo numero di secondi, la velocità dei movimenti di stampa sarà ridotta per estendere la durata di questo valore." -#: src/libslic3r/PrintConfig.cpp:567 +#: src/libslic3r/PrintConfig.cpp:603 msgid "If this is enabled, fan will never be disabled and will be kept running at least at its minimum speed. Useful for PLA, harmful for ABS." msgstr "Se questo è attivo, la ventola non verrà mai disattiva e verrà mantenuta attiva almeno alla velocità minima. Utile per il PLA, dannosa per l'ABS." -#: src/slic3r/GUI/Preferences.cpp:49 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." msgstr "Se attivo, Slic3r posizionerà automaticamente gli oggetti al centro del piano di stampa." -#: src/slic3r/GUI/Preferences.cpp:57 +#: src/slic3r/GUI/Preferences.cpp:74 msgid "If this is enabled, Slic3r will pre-process objects as soon as they're loaded in order to save time when exporting G-code." msgstr "Se attivo, Slic3r processerà in anticipo gli oggetti non appena saranno caricati, così da risparmiare tempo durante l'esportazione del G-code." -#: src/slic3r/GUI/Preferences.cpp:41 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." msgstr "Se attivo, Slic3r suggerirà l'ultima cartella di destinazione invece della cartella contenente il file di ricezione." -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/slic3r/GUI/Preferences.cpp:125 +msgid "If this is enabled, when starting PrusaSlicer and another instance of the same PrusaSlicer is already running, that instance will be reactivated instead." +msgstr "Se questo è abilitato, quando si avvia PrusaSlicer e un'altra istanza della stessa PrusaSlicer è già in esecuzione, quell'istanza verrà invece riattivata." + +#: src/libslic3r/PrintConfig.cpp:1670 msgid "If you set this to a positive value, Z is quickly raised every time a retraction is triggered. When using multiple extruders, only the setting for the first extruder will be considered." msgstr "Se inserisci un valore positivo, Z verrà alzato velocemente ogni volta che si innesca una retrazione. Quando si utilizzano diversi estrusori, verrà considerato solamente l'impostazione del primo estrusore." -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1679 msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z. You can tune this setting for skipping lift on the first layers." msgstr "Se inserisci un valore positivo, il sollevamento Z avverrà solamente sopra un certo specifico valore assoluto Z. Puoi regolare questa impostazione per evitare il sollevamento nei primi layer." -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1688 msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z. You can tune this setting for limiting lift to the first layers." msgstr "Se inserisci un valore positivo, il sollevamento Z avverrà solamente sotto un certo specifico valore assoluto Z. Puoi regolare questa impostazione per limitare il sollevamento ai primi layer." -#: src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1562 msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." msgstr "Se vuoi processare il G-code in uscita con script personalizzati, basta elencare qui il loro percorso assoluto. Separa i diversi script con un punto e virgola. Gli script passeranno il percorso assoluto nel G-code come primo argomento, e potranno accedere alle impostazioni di configurazione di Slic3r leggendo le variabili di ambiente." -#: src/libslic3r/PrintConfig.cpp:530 +#: src/libslic3r/PrintConfig.cpp:566 msgid "If your firmware doesn't handle the extruder displacement you need the G-code to take it into account. This option lets you specify the displacement of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." msgstr "Se il firmware non gestisce lo spostamento dell'estrusore, è necessario che il G-code ne tenga conto. Questa opzione permette di specificare lo spostamento di ciascun estrusore rispetto al primo. Si aspetta delle coordinate positive (che saranno sottratte dalle coordinate XY)." -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2312 msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." msgstr "Se il firmware richiede valori E relativi, selezionalo, altrimenti mantienilo deselezionato. Molti firmware utilizzano valori assoluti." -#: src/libslic3r/PrintConfig.cpp:3485 +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" +msgstr "Ignora" + +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignora file di configurazione non esistenti" -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:192 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:173 +msgid "Ignores facets facing away from the camera." +msgstr "Ignora le faccette rivolte verso l'esterno." + +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Import &Config" msgstr "Importa &Configurazione" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Import Config &Bundle" -msgstr "Importa Configurazione da &Bundle" +msgstr "Importa Configurazione in &Bundle" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Import Config from &project" msgstr "Importa Configurazione da &progetto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Import Config from ini/amf/3mf/gcode" msgstr "Importa Config da ini/amf/3mf/gcode" -#: src/slic3r/GUI/Plater.cpp:4603 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 +msgid "Import file" +msgstr "Importa file" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 +msgid "Import model and profile" +msgstr "Importa modello e profilo" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:48 +msgid "Import model only" +msgstr "Importa solo il modello" + +#: src/slic3r/GUI/Plater.cpp:4655 msgid "Import Object" msgstr "Importa Oggetto" -#: src/slic3r/GUI/Plater.cpp:4607 +#: src/slic3r/GUI/Plater.cpp:4659 msgid "Import Objects" msgstr "Importa Oggetti" @@ -3505,16 +4122,51 @@ msgstr "Importa Oggetti" msgid "Import of the repaired 3mf file failed" msgstr "Importazione del file 3mf riparato non riuscita" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:47 +msgid "Import profile only" +msgstr "Solo profilo di importazione" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Import SL1 archive" +msgstr "Importa archivio SL1" + +#: src/slic3r/GUI/Plater.cpp:1561 +msgid "Import SLA archive" +msgstr "Importa archivio SLA" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Import STL (imperial units)" +msgstr "Importa STL (unità imperiali)" + +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importa STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "Importa STL/OBJ/AMF/3MF senza configurazione, mantieni piano" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 -#, possible-c-format +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:159 +msgid "Importing canceled." +msgstr "Importazione annullata." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:160 +msgid "Importing done." +msgstr "Importazione completata." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:135 +msgid "Importing SLA archive" +msgstr "Importazione archivio SLA" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +msgid "in" +msgstr "in" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 +#, c-format msgid "In this mode you can select only other %s Items%s" msgstr "In questa modalità puoi selezionare solo altri %s oggetti %s" @@ -3522,451 +4174,515 @@ msgstr "In questa modalità puoi selezionare solo altri %s oggetti %s" msgid "Incompatible bundles:" msgstr "Gruppi incompatibili:" +#: src/slic3r/GUI/PresetComboBoxes.cpp:241 +msgid "Incompatible presets" +msgstr "Preset incompatibili" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 -#, possible-c-format +#, c-format msgid "Incompatible with this %s" msgstr "Incompatibile con questo %s" -#: src/slic3r/GUI/Plater.cpp:4685 +#: src/slic3r/GUI/Plater.cpp:4790 msgid "Increase Instances" msgstr "Aumenta Istanze" -#: src/slic3r/GUI/GLCanvas3D.cpp:264 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Increase/decrease edit area" msgstr "Aumenta/diminuisci l'area di modifica" -#: src/slic3r/GUI/Plater.cpp:2922 -msgid "Indexing hollowed object" -msgstr "Indicizzazione di un oggetto svuotato" - #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3258 -msgid "indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\nClick the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." -msgstr "indica che è stata modificata qualche impostazione e non è uguale ai valori di sistema (o predefiniti) del corrente gruppo di opzioni.\nClicca l'icona LUCCHETTO APERTO per reimpostare tutte le impostazioni del corrente gruppo di opzioni ai valori di sistema (o predefiniti)." +#: src/slic3r/GUI/Tab.cpp:3695 +msgid "" +"indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" +"Click the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." +msgstr "" +"indica che è stata modificata qualche impostazione e non è uguale ai valori di sistema (o predefiniti) del corrente gruppo di opzioni.\n" +"Clicca l'icona LUCCHETTO APERTO per reimpostare tutte le impostazioni del corrente gruppo di opzioni ai valori di sistema (o predefiniti)." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3254 +#: src/slic3r/GUI/Tab.cpp:3691 msgid "indicates that the settings are the same as the system (or default) values for the current option group" msgstr "indica che le impostazioni sono uguali ai valori di sistema (o predefiniti) per l'attuale gruppo di opzioni" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3270 -msgid "indicates that the settings were changed and are not equal to the last saved preset for the current option group.\nClick the BACK ARROW icon to reset all settings for the current option group to the last saved preset." -msgstr "indica che le impostazioni sono state modificate e non corrispondono all'ultimo preset salvato per l'attuale gruppo opzioni.\nClicca l'icona FRECCIA INDIETRO per reimpostare all'ultimo preset salvato tutte le impostazioni per il seguente gruppo di opzioni." +#: src/slic3r/GUI/Tab.cpp:3707 +msgid "" +"indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" +"Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." +msgstr "" +"indica che le impostazioni sono state modificate e non corrispondono all'ultimo preset salvato per l'attuale gruppo opzioni.\n" +"Clicca l'icona FRECCIA INDIETRO per reimpostare all'ultimo preset salvato tutte le impostazioni per il seguente gruppo di opzioni." -#: src/slic3r/GUI/ConfigManipulation.cpp:211 -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 -#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/slic3r/GUI/Plater.cpp:527 -#: src/slic3r/GUI/Tab.cpp:1091 src/slic3r/GUI/Tab.cpp:1092 -#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 -#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 -#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 -#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:93 +#: src/slic3r/GUI/GUI_ObjectList.cpp:652 src/slic3r/GUI/Plater.cpp:393 +#: src/slic3r/GUI/Tab.cpp:1413 src/slic3r/GUI/Tab.cpp:1414 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:450 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:826 src/libslic3r/PrintConfig.cpp:863 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1035 +#: src/libslic3r/PrintConfig.cpp:1053 src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1091 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1860 msgid "Infill" msgstr "Riempimento" -#: src/slic3r/GUI/PresetHints.cpp:174 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "riempimento" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1065 msgid "Infill before perimeters" msgstr "Riempimento prima dei perimetri" -#: src/libslic3r/PrintConfig.cpp:1001 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "Infill extruder" msgstr "Estrusore riempimento" -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Infill/perimeters overlap" msgstr "Sovrapposizione riempimento/perimetri" -#: src/libslic3r/Print.cpp:1584 +#: src/libslic3r/Print.cpp:1610 msgid "Infilling layers" msgstr "Layer di riempimento" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3430 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3505 src/slic3r/GUI/Plater.cpp:141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:147 msgid "Info" msgstr "Info" -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/slic3r/GUI/GUI_App.cpp:1087 src/slic3r/GUI/Tab.cpp:3435 +msgid "Information" +msgstr "Informazioni" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 +msgid "Infornation" +msgstr "Informazioni" + +#: src/libslic3r/PrintConfig.cpp:1101 msgid "Inherits profile" msgstr "Eredita profilo" -#: src/libslic3r/SLAPrint.cpp:653 +#: src/libslic3r/SLAPrint.cpp:667 msgid "Initial exposition time is out of printer profile bounds." msgstr "Il tempo di esposizione iniziale è fuori dai limiti del profilo stampante." -#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 msgid "Initial exposure time" msgstr "Tempo di esposizione iniziale" -#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 msgid "Initial layer height" msgstr "Altezza layer iniziale" -#: src/slic3r/GUI/Field.cpp:204 +#: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "Valore input fuori portata" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "Inspect / activate configuration snapshots" msgstr "Ispeziona / attiva istantanee di configurazione" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 -#, possible-c-format +#: src/slic3r/GUI/ObjectDataViewModel.cpp:62 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 +#, c-format msgid "Instance %d" msgstr "Istanza %d" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 msgid "Instance manipulation" msgstr "Manipolazione istanza" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "Istanze" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1091 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3781 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4244 msgid "Instances to Separated Objects" msgstr "Istanze in Oggetti Separati" -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface layers" msgstr "Layer interfaccia" -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Interface loops" msgstr "Giri interfaccia" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Interface pattern spacing" msgstr "Spaziatura trama interfaccia" -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1115 msgid "Interface shells" msgstr "Gusci interfaccia" -#: src/libslic3r/Zipper.cpp:84 +#: src/libslic3r/miniz_extension.cpp:143 msgid "internal error" msgstr "errore interno" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:342 msgid "Internal infill" msgstr "Riempimento interno" -#: src/slic3r/GUI/Plater.cpp:3106 +#: src/slic3r/GUI/BedShapeDialog.cpp:145 +msgid "Invalid" +msgstr "Non valido" + +#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 msgid "Invalid data" msgstr "Dati non validi" -#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 -#: src/slic3r/GUI/BedShapeDialog.cpp:566 +#: src/slic3r/GUI/BedShapeDialog.cpp:570 src/slic3r/GUI/BedShapeDialog.cpp:619 +#: src/slic3r/GUI/BedShapeDialog.cpp:642 msgid "Invalid file format." msgstr "Formato file non valido." -#: src/libslic3r/Zipper.cpp:80 +#: src/libslic3r/miniz_extension.cpp:139 msgid "invalid filename" msgstr "nome file non valido" -#: src/slic3r/GUI/ConfigManipulation.cpp:319 +#: src/slic3r/GUI/ConfigManipulation.cpp:324 msgid "Invalid Head penetration" -msgstr "Inserimento Capocchia non valido" +msgstr "Penetrazione della testa non valida" -#: src/libslic3r/Zipper.cpp:48 +#: src/libslic3r/miniz_extension.cpp:107 msgid "invalid header or archive is corrupted" msgstr "titolo non valido o archivio corrotto" -#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 +#: src/slic3r/GUI/Field.cpp:243 src/slic3r/GUI/Field.cpp:274 +#: src/slic3r/GUI/Field.cpp:1358 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." msgstr "Input numerico non valido." -#: src/libslic3r/Zipper.cpp:78 +#: src/libslic3r/miniz_extension.cpp:137 msgid "invalid parameter" msgstr "parametro non valido" -#: src/slic3r/GUI/ConfigManipulation.cpp:332 +#: src/slic3r/GUI/ConfigManipulation.cpp:337 msgid "Invalid pinhead diameter" msgstr "Diametro apice non valido" +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/slic3r/GUI/Tab.cpp:1420 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 +#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +msgid "Ironing" +msgstr "Stiratura" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Ironing Type" +msgstr "Tipo di stiratura" + +#: src/slic3r/GUI/GUI_App.cpp:243 +msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "è basato su Slic3r di Alessandro Ranellucci e la comunità RepRap." + #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 msgid "is licensed under the" msgstr "è concesso in licenza ai sensi" -#: src/slic3r/GUI/Tab.cpp:2941 -msgid "is not compatible with print profile" -msgstr "non è compatibile con il profilo di stampa" - -#: src/slic3r/GUI/Tab.cpp:2940 -msgid "is not compatible with printer" -msgstr "non è compatibile con la stampante" - -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso" msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso View" msgstr "Vista isometrica" -#: src/slic3r/GUI/Tab.cpp:964 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "It can't be deleted or modified." msgstr "Non può essere eliminato o modificato." -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "It is not allowed to change the file to reload" msgstr "Non è permesso modificare il file da ricaricare" -#: src/libslic3r/PrintConfig.cpp:974 +#: src/libslic3r/PrintConfig.cpp:1018 msgid "It may be beneficial to increase the extruder motor current during the filament exchange sequence to allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly shaped tip." msgstr "Potrebbe essere utile aumentare la corrente del motore estrusore durante la sequenza di cambio filamento per permettere un avanzamento rapido del ramming e per superare la resistenza durante il caricamento di un filamento con una punta deformata." -#: src/slic3r/GUI/GUI_App.cpp:1084 src/slic3r/GUI/Tab.cpp:2958 +#: src/slic3r/GUI/Tab.cpp:3413 +msgid "It's a last preset for this physical printer." +msgstr "È l'ultimo preset per questa stampante fisica." + +#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "Non è possibile stampare oggetti multi-parte con tecnologia SLA." -#: src/slic3r/GUI/Tab.cpp:2229 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:601 +msgid "It's not possible to delete the last related preset for the printer." +msgstr "Non è possibile cancellare l'ultimo preset relativo alla stampante." + +#: src/slic3r/GUI/Tab.cpp:2398 msgid "Jerk limits" msgstr "Limiti Jerk" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Jitter" msgstr "Jitter" -#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 -#: src/slic3r/GUI/DoubleSlider.cpp:1651 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 +#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 msgid "Jump to height" msgstr "Salta all'altezza" -#: src/slic3r/GUI/DoubleSlider.cpp:955 -#, possible-c-format +#: src/slic3r/GUI/DoubleSlider.cpp:1075 +#, c-format msgid "Jump to height %s or Set extruder sequence for the entire print" msgstr "Salta all'altezza %s o Imposta sequenza estrusore per l'intera stampa" -#: src/libslic3r/PrintConfig.cpp:566 +#: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 +msgid "Jump to move" +msgstr "Salta per spostare" + +#: src/slic3r/GUI/SavePresetDialog.cpp:315 +msgid "Just switch to \"%1%\" preset" +msgstr "Passa solo al preset \"%1%\"" + +#: src/libslic3r/PrintConfig.cpp:602 msgid "Keep fan always on" msgstr "Mantieni la ventola sempre accesa" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 msgid "Keep lower part" msgstr "Mantieni parte inferiore" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 +#: src/slic3r/GUI/GLCanvas3D.cpp:290 msgid "Keep min" msgstr "Mantieni min" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Keep upper part" msgstr "Mantieni parte superiore" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:37 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 +#: src/slic3r/GUI/MainFrame.cpp:1332 msgid "Keyboard Shortcuts" msgstr "Scorciatoie Tastiera" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 msgid "Keyboard shortcuts" msgstr "Scorciatoie tastiera" -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2641 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Label objects" msgstr "Etichetta oggetti" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Landscape" msgstr "Landscape" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Language" msgstr "Lingua" -#: src/slic3r/GUI/GUI_App.cpp:885 +#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 msgid "Language selection" msgstr "Selezione lingua" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2140 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2408 msgid "Last instance of an object cannot be deleted." msgstr "Non è possibile eliminare l'ultima istanza di un oggetto." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 msgid "Layer" msgstr "Layer" -#: src/slic3r/GUI/ConfigManipulation.cpp:49 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "Altezza layer" -#: src/libslic3r/Print.cpp:1427 +#: src/libslic3r/Print.cpp:1453 msgid "Layer height can't be greater than nozzle diameter" msgstr "L'altezza layer non può essere più grande del diametro dell'ugello" -#: src/slic3r/GUI/Tab.cpp:2362 +#: src/slic3r/GUI/Tab.cpp:2531 msgid "Layer height limits" msgstr "Limiti altezza layer" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 -msgid "Layer height:" -msgstr "Altezza layer:" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2488 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 msgid "Layer range Settings to modify" msgstr "Impostazioni da modificare in Intervallo Layer" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 -#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 -#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1976 +#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1798 +#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "layers" msgstr "layer" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3512 -#: src/slic3r/GUI/Tab.cpp:3600 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 +#: src/slic3r/GUI/Tab.cpp:4010 msgid "Layers" msgstr "Layer" -#: src/slic3r/GUI/Tab.cpp:1048 src/slic3r/GUI/Tab.cpp:3598 +#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 msgid "Layers and perimeters" msgstr "Layer e perimetri" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 -#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 -#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 -#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:2142 +#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:92 +#: src/slic3r/GUI/GUI_ObjectList.cpp:651 src/libslic3r/PrintConfig.cpp:72 +#: src/libslic3r/PrintConfig.cpp:209 src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Layers and Perimeters" msgstr "Layer e Perimetri" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Layers Slider" msgstr "Barra di scorrimento Layer" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" msgstr "Inferiore" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Top" msgstr "Superiore" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/Preferences.cpp:440 +msgid "Layout Options" +msgstr "Opzioni di layout" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 +msgid "Leaving Paint-on supports" +msgstr "Chiusura supporti Paint-on" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 +msgid "Leaving Seam painting" +msgstr "Lasciare pittura Giunzione" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left" msgstr "Sinistra" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Left click" msgstr "Click sinistro" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:29 +msgid "Left mouse button" +msgstr "Tasto sinistro mouse" + +#: src/slic3r/GUI/GLCanvas3D.cpp:233 msgid "Left mouse button:" msgstr "Tasto sinistro mouse:" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left View" msgstr "Vista sinistra" -#: src/slic3r/GUI/GUI_Preview.cpp:257 +#: src/slic3r/GUI/GUI_Preview.cpp:339 msgid "Legend" msgstr "Legenda" -#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 +#: src/slic3r/GUI/GUI_Preview.cpp:1480 +msgid "Legend/Estimated printing time" +msgstr "Legenda/Stima del tempo di stampa" + +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 msgid "Length" msgstr "Lunghezza" -#: src/libslic3r/PrintConfig.cpp:328 +#: src/libslic3r/PrintConfig.cpp:362 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "Lunghezza del tubo di raffreddamento per limitare lo spazio delle mosse di raffreddamento al suo interno." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:129 +#: src/slic3r/GUI/AboutDialog.cpp:141 msgid "License agreements of all following programs (libraries) are part of application license agreement" msgstr "Gli accordi di licenza di tutti i programmi seguenti (librerie) fanno parte del contratto di licenza dell'applicazione" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Lift Z" msgstr "Solleva Z" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:886 msgid "Line" msgstr "Linea" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1427 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 msgid "Load" msgstr "Carica" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Load a model" msgstr "Carica modello" -#: src/libslic3r/PrintConfig.cpp:3505 +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Load an model saved with imperial units" +msgstr "Carica un modello salvato con unità imperiali" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Load an SL1 archive" +msgstr "Carica un archivio SL1" + +#: src/libslic3r/PrintConfig.cpp:3710 msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." msgstr "Carica e archivia le impostazione in una data cartella. Questo è utile per mantenere diversi profili o aggiungere configurazioni da un archivio di rete." -#: src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3688 msgid "Load config file" msgstr "Carica file di configurazione" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Carica Config da ini/amf/3mf/gcode e unisci" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Load configuration from project file" msgstr "Carica configurazione dal file di progetto" -#: src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:3689 msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." msgstr "Carica configurazione dal file specificato. Può essere usato più di una volta per caricare opzioni da vari file." -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Load exported configuration file" msgstr "Carica un file di configurazione esportato" -#: src/slic3r/GUI/Plater.cpp:1395 -msgid "Load File" -msgstr "Carica file" - -#: src/slic3r/GUI/Plater.cpp:1399 -msgid "Load Files" -msgstr "Carica file" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Carica Parte" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Load presets from a bundle" msgstr "Carica i preset da un gruppo" -#: src/slic3r/GUI/Plater.cpp:4575 +#: src/slic3r/GUI/Plater.cpp:4627 msgid "Load Project" msgstr "Carica Progetto" -#: src/slic3r/GUI/BedShapeDialog.cpp:102 +#: src/slic3r/GUI/BedShapeDialog.cpp:243 msgid "Load shape from STL..." msgstr "Carica forma da STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 src/slic3r/GUI/BedShapeDialog.cpp:405 msgid "Load..." msgstr "Caricamento..." @@ -3974,19 +4690,27 @@ msgstr "Caricamento..." msgid "loaded" msgstr "caricato" -#: src/slic3r/GUI/Plater.cpp:2426 +#: src/slic3r/GUI/Plater.cpp:2388 msgid "Loaded" msgstr "Caricato" -#: src/slic3r/GUI/Plater.cpp:2273 +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Loading" msgstr "Caricamento" -#: src/slic3r/GUI/GUI_App.cpp:474 +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" +msgstr "Caricamento configurazione" + +#: src/slic3r/GUI/Plater.cpp:2226 +msgid "Loading file" +msgstr "Caricamento file" + +#: src/slic3r/GUI/GUI_App.cpp:1125 msgid "Loading of a mode view" msgstr "Caricamento di una modalità di vista" -#: src/slic3r/GUI/GUI_App.cpp:466 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "Loading of current presets" msgstr "Caricamento dei preset correnti" @@ -3995,101 +4719,117 @@ msgstr "Caricamento dei preset correnti" msgid "Loading repaired model" msgstr "Caricamento modello riparato" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:643 msgid "Loading speed" msgstr "Velocità di caricamento" -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Loading speed at the start" msgstr "Velocità iniziale di caricamento" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:69 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:112 msgid "Local coordinates" msgstr "Coordinate locali" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 msgid "Lock supports under new islands" msgstr "Fissa i supporti sotto le nuove isole" -#: src/slic3r/GUI/Tab.cpp:3252 +#: src/slic3r/GUI/Tab.cpp:3689 msgid "LOCKED LOCK" msgstr "LUCCHETTO CHIUSO" -#: src/slic3r/GUI/Tab.cpp:3280 +#: src/slic3r/GUI/Tab.cpp:3717 msgid "LOCKED LOCK icon indicates that the settings are the same as the system (or default) values for the current option group" msgstr "L'icona LUCCHETTO CHIUSO indica che le impostazioni corrispondono ai valori di sistema (o predefiniti) per il seguente gruppo di opzioni" -#: src/slic3r/GUI/Tab.cpp:3296 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "LOCKED LOCK icon indicates that the value is the same as the system (or default) value." msgstr "L'icona LUCCHETTO CHIUSO indica che il valore è uguale a quello di sistema (o predefinito)." -#: src/libslic3r/PrintConfig.cpp:3508 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Logging level" msgstr "Livello di logging" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Loops (minimum)" msgstr "Giri (minimo)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower Layer" msgstr "Layer Inferiore" -#: src/slic3r/GUI/Tab.cpp:2188 src/slic3r/GUI/Tab.cpp:2273 -#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 -#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 -#: src/libslic3r/PrintConfig.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 +#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 +#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 msgid "Machine limits" msgstr "Limiti macchina" -#: src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:3667 +msgid "Machine limits are not set, therefore the print time estimate may not be accurate." +msgstr "I limiti della macchina non sono impostati, quindi la stima del tempo di stampa potrebbe non essere accurata." + +#: src/slic3r/GUI/Tab.cpp:3660 +msgid "Machine limits will be emitted to G-code and used to estimate print time." +msgstr "I limiti della macchina verranno emessi in G-code e utilizzati per stimare il tempo di stampa." + +#: src/slic3r/GUI/Tab.cpp:3663 +msgid "Machine limits will NOT be emitted to G-code, however they will be used to estimate print time, which may therefore not be accurate as the printer may apply a different set of machine limits." +msgstr "I limiti della macchina NON saranno emessi nel G-code, tuttavia saranno utilizzati per stimare il tempo di stampa, che potrebbe quindi non essere accurato in quanto la stampante potrebbe applicare un diverso set di limiti della macchina." + +#: src/slic3r/GUI/Plater.cpp:172 msgid "Manifold" msgstr "Manifold" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 msgid "Manual editing" msgstr "Modifica manuale" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:180 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 msgid "Masked SLA file exported to %1%" msgstr "File SLA mascherato esportato su %1%" -#: src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1451 msgid "Mate&rial Settings Tab" msgstr "Scheda Impostazioni Mate&riale" -#: src/slic3r/GUI/Tab.cpp:3478 src/slic3r/GUI/Tab.cpp:3480 +#: src/slic3r/GUI/Tab.cpp:3894 src/slic3r/GUI/Tab.cpp:3896 msgid "Material" msgstr "Materiale" -#: src/slic3r/GUI/Tab.hpp:416 +#: src/slic3r/GUI/Tab.hpp:486 msgid "Material Settings" msgstr "Impostazioni Materiali" -#: src/slic3r/GUI/Plater.cpp:163 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Material Settings Tab" +msgstr "Scheda Impostazioni Materiali" + +#: src/slic3r/GUI/Plater.cpp:169 msgid "Materials" msgstr "Materiali" -#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 msgid "Max" msgstr "Massimo" -#: src/libslic3r/PrintConfig.cpp:2734 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max bridge length" msgstr "Lunghezza massima Bridge" -#: src/libslic3r/PrintConfig.cpp:2658 +#: src/libslic3r/PrintConfig.cpp:2812 msgid "Max bridges on a pillar" msgstr "Ponteggi massimi su un pilastro" -#: src/libslic3r/PrintConfig.cpp:2822 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Max merge distance" msgstr "Massima distanza di unione" -#: src/libslic3r/PrintConfig.cpp:2743 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Max pillar linking distance" msgstr "Distanza massima collegamento pilastri" @@ -4097,7 +4837,7 @@ msgstr "Distanza massima collegamento pilastri" msgid "Max print height" msgstr "Altezza massima di stampa" -#: src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1345 msgid "Max print speed" msgstr "Massima velocità di stampa" @@ -4105,171 +4845,189 @@ msgstr "Massima velocità di stampa" msgid "max PrusaSlicer version" msgstr "versione PrusaSlicer massima" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Max volumetric slope negative" msgstr "Massima pendenza volumetrica negativa" -#: src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "Max volumetric slope positive" msgstr "Massima pendenza volumetrica positiva" -#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 +#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 msgid "Max volumetric speed" msgstr "Massima velocità volumetrica" -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2411 msgid "Maximal bridging distance" msgstr "Distanza massima bridging" -#: src/libslic3r/PrintConfig.cpp:2269 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Maximal distance between supports on sparse infill sections." msgstr "Distanza massima tra supporti in sezioni a riempimento sparso." -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1253 msgid "Maximum acceleration E" msgstr "Accelerazione massima E" -#: src/libslic3r/PrintConfig.cpp:1151 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Maximum acceleration of the E axis" msgstr "Accelerazione massima dell'asse E" -#: src/libslic3r/PrintConfig.cpp:1148 +#: src/libslic3r/PrintConfig.cpp:1256 msgid "Maximum acceleration of the X axis" msgstr "Accelerazione massima dell'asse X" -#: src/libslic3r/PrintConfig.cpp:1149 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Maximum acceleration of the Y axis" msgstr "Accelerazione massima dell'asse Y" -#: src/libslic3r/PrintConfig.cpp:1150 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Maximum acceleration of the Z axis" msgstr "Accelerazione massima dell'asse Z" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Maximum acceleration when extruding" msgstr "Accelerazione massima durante l'estrusione" -#: src/libslic3r/PrintConfig.cpp:1200 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Accelerazione massima durante l'estrusione (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Maximum acceleration when retracting" msgstr "Accelerazione massima durante la retrazione" -#: src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1318 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Accelerazione massima durante la retrazione (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Maximum acceleration X" msgstr "Accelerazione massima X" -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Maximum acceleration Y" msgstr "Accelerazione massima Y" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "Maximum acceleration Z" msgstr "Accelerazione massima Z" -#: src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2391 msgid "Maximum accelerations" msgstr "Accelerazioni massime" -#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 +#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 msgid "Maximum exposure time" msgstr "Tempo massimo di esposizione" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1236 msgid "Maximum feedrate E" msgstr "Avanzamento massimo E" -#: src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "Maximum feedrate of the E axis" msgstr "Avanzamento massimo dell'asse E" -#: src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Maximum feedrate of the X axis" msgstr "Avanzamento massimo dell'asse X" -#: src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Maximum feedrate of the Y axis" msgstr "Avanzamento massimo dell'asse Y" -#: src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Maximum feedrate of the Z axis" msgstr "Avanzamento massimo dell'asse Z" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Maximum feedrate X" msgstr "Avanzamento massimo X" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Maximum feedrate Y" msgstr "Avanzamento massimo Y" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1235 msgid "Maximum feedrate Z" msgstr "Avanzamento massimo Z" -#: src/slic3r/GUI/Tab.cpp:2217 +#: src/slic3r/GUI/Tab.cpp:2386 msgid "Maximum feedrates" msgstr "Avanzamenti massimi" -#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 msgid "Maximum initial exposure time" msgstr "Tempo massimo di esposizione iniziale" -#: src/libslic3r/PrintConfig.cpp:1162 +#: src/libslic3r/PrintConfig.cpp:1270 msgid "Maximum jerk E" msgstr "Jerk massimo E" -#: src/libslic3r/PrintConfig.cpp:1168 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Maximum jerk of the E axis" msgstr "Jerk massimo dell'asse E" -#: src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1273 msgid "Maximum jerk of the X axis" msgstr "Jerk massimo dell'asse X" -#: src/libslic3r/PrintConfig.cpp:1166 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "Maximum jerk of the Y axis" msgstr "Jerk massimo dell'asse Y" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1275 msgid "Maximum jerk of the Z axis" msgstr "Jerk massimo dell'asse Z" -#: src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Maximum jerk X" msgstr "Jerk massimo X" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Maximum jerk Y" msgstr "Jerk massimo Y" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1269 msgid "Maximum jerk Z" msgstr "Jerk massimo Z" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2814 msgid "Maximum number of bridges that can be placed on a pillar. Bridges hold support point pinheads and connect to pillars as small branches." msgstr "Numero massimo di ponteggi che può essere posizionato su un pilastro. I ponteggi mantengono le capocchie dei punti di supporto e si collegano ai pilastri come piccoli rami." -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:634 msgid "Maximum volumetric speed allowed for this filament. Limits the maximum volumetric speed of a print to the minimum of print and filament volumetric speed. Set to zero for no limit." msgstr "Massima velocità volumetrica consentita per questo filamento. Limita la velocità volumetrica massima di una stampa alla velocità volumetrica minima del filamento e di stampa. Imposta a zero per non avere limite." -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2569 src/libslic3r/PrintConfig.cpp:3641 msgid "Merge" msgstr "Unisci" -#: src/libslic3r/PrintConfig.cpp:2683 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +msgid "Merge all parts to the one single object" +msgstr "Unisci tutte le parti in un unico oggetto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Merge objects to the one multipart object" +msgstr "Unisci oggetti in un unico oggetto multiparte" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +msgid "Merge objects to the one single object" +msgstr "Unisci oggetti in un singolo oggetto" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +msgid "Merged" +msgstr "Unito" + +#: src/libslic3r/PrintConfig.cpp:2847 msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." msgstr "L'unione di bridge o pilastri con altri pilastri può aumentarne il raggio. Zero significa nessun incremento, uno significa incremento pieno." -#: src/libslic3r/SLAPrintSteps.cpp:64 +#: src/libslic3r/SLAPrintSteps.cpp:65 msgid "Merging slices and calculating statistics" msgstr "Unendo gli slice e calcolando le statistiche" @@ -4277,15 +5035,15 @@ msgstr "Unendo gli slice e calcolando le statistiche" msgid "Mesh repair failed." msgstr "Riparazione mesh fallita." -#: src/slic3r/GUI/DoubleSlider.cpp:1635 +#: src/slic3r/GUI/DoubleSlider.cpp:1831 msgid "Message for pause print on current layer (%1% mm)." msgstr "Messaggio per pausa stampa al corrente layer (%1% mm)." -#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 msgid "Min" msgstr "Minimo" -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Min print speed" msgstr "Velocità minima di stampa" @@ -4293,232 +5051,237 @@ msgstr "Velocità minima di stampa" msgid "min PrusaSlicer version" msgstr "versione PrusaSlicer minima" -#: src/libslic3r/PrintConfig.cpp:2772 +#: src/libslic3r/PrintConfig.cpp:2936 msgid "Minimal distance of the support points" msgstr "Distanza minima dei punti di supporto" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1414 msgid "Minimal filament extrusion length" msgstr "Lunghezza di estrusione minima del filamento" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 msgid "Minimal points distance" msgstr "Distanza minima punti" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Minimal purge on wipe tower" msgstr "Spurgo minimo sulla torre di spurgo" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:221 msgid "Minimum bottom shell thickness" msgstr "Spessore minimo guscio inferiore" -#: src/slic3r/GUI/PresetHints.cpp:339 +#: src/slic3r/GUI/PresetHints.cpp:337 msgid "Minimum bottom shell thickness is %1% mm." msgstr "Spessore minimo guscio inferiore è %1% mm." -#: src/libslic3r/PrintConfig.cpp:1512 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." msgstr "Risoluzione minima dettaglio, utilizzato per semplificare il file input accelerando lo slicing e riducendo l'utilizzo di memoria. I file ad alta risoluzione spesso hanno più dettaglio di quanto la stampante possa generare. Impostate a zero per disabilitare la semplificazione e utilizzare la risoluzione completa." -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 +#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 msgid "Minimum exposure time" msgstr "Tempo minimo di esposizione" -#: src/libslic3r/PrintConfig.cpp:1178 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Minimum feedrate when extruding" msgstr "Avanzamento minimo durante estrusione" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1288 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Avanzamento minimo durante estrusione (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2234 +#: src/slic3r/GUI/Tab.cpp:2403 msgid "Minimum feedrates" msgstr "Avanzamento minimo" -#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 msgid "Minimum initial exposure time" msgstr "Tempo minimo di esposizione iniziale" -#: src/slic3r/GUI/Tab.cpp:1069 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Minimum shell thickness" msgstr "Spessore minimo guscio" -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 msgid "Minimum thickness of a top / bottom shell" msgstr "Spessore minimo guscio superiore / inferiore" -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2289 msgid "Minimum top shell thickness" msgstr "Spessore minimo guscio superiore" -#: src/slic3r/GUI/PresetHints.cpp:320 +#: src/slic3r/GUI/PresetHints.cpp:318 msgid "Minimum top shell thickness is %1% mm." msgstr "Spessore minimo guscio superiore è %1% mm." -#: src/libslic3r/PrintConfig.cpp:1522 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Minimum travel after retraction" msgstr "Spostamento minimo dopo una retrazione" -#: src/libslic3r/PrintConfig.cpp:1188 +#: src/libslic3r/PrintConfig.cpp:1296 msgid "Minimum travel feedrate" msgstr "Avanzamento minimo di spostamento" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Minimum travel feedrate (M205 T)" msgstr "Avanzamento minimo di spostamento (M205 T)" -#: src/libslic3r/PrintConfig.cpp:2917 +#: src/libslic3r/PrintConfig.cpp:3081 msgid "Minimum wall thickness of a hollowed model." msgstr "Spessore minimo parete di un modello svuotato." -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2592 msgid "Minimum width of features to maintain when doing elephant foot compensation." msgstr "Larghezza minima della funzione da mantenere durante la compensazione della zampa d'elefante." -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror" msgstr "Specchia" -#: src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Mirror horizontally" msgstr "Specchia orizzontalmente" -#: src/slic3r/GUI/GLCanvas3D.cpp:2053 +#: src/slic3r/GUI/GLCanvas3D.cpp:2226 msgid "Mirror Object" msgstr "Specchia Oggetto" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror the selected object" msgstr "Specchia l'oggetto selezionato" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Mirror the selected object along the X axis" msgstr "Specchia l'oggetto selezionato sull'asse X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Mirror the selected object along the Y axis" msgstr "Specchia l'oggetto selezionato sull'asse y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Mirror the selected object along the Z axis" msgstr "Specchia l'oggetto selezionato sull'asse Z" -#: src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2529 msgid "Mirror vertically" msgstr "Specchia verticalmente" -#: src/slic3r/Utils/AstroBox.cpp:68 src/slic3r/Utils/OctoPrint.cpp:68 -#, possible-c-format +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:68 +#, c-format msgid "Mismatched type of print host: %s" msgstr "Tipo di Host di stampa non corrispondente: %s" -#: src/libslic3r/ExtrusionEntity.cpp:323 +#: src/libslic3r/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 msgid "Mixed" msgstr "Mischiate" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "ml" msgstr "ml" -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 -#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 src/slic3r/GUI/GUI_ObjectLayers.cpp:145 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 #: src/slic3r/GUI/WipeTowerDialog.cpp:85 src/libslic3r/PrintConfig.cpp:75 -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:91 -#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 -#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 -#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 -#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 -#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 -#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 -#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 -#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 -#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 -#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 -#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 -#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 -#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 -#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 -#: src/libslic3r/PrintConfig.cpp:2695 src/libslic3r/PrintConfig.cpp:2705 -#: src/libslic3r/PrintConfig.cpp:2717 src/libslic3r/PrintConfig.cpp:2737 -#: src/libslic3r/PrintConfig.cpp:2747 src/libslic3r/PrintConfig.cpp:2757 -#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2790 -#: src/libslic3r/PrintConfig.cpp:2804 src/libslic3r/PrintConfig.cpp:2815 -#: src/libslic3r/PrintConfig.cpp:2828 src/libslic3r/PrintConfig.cpp:2873 -#: src/libslic3r/PrintConfig.cpp:2883 src/libslic3r/PrintConfig.cpp:2892 -#: src/libslic3r/PrintConfig.cpp:2902 src/libslic3r/PrintConfig.cpp:2918 -#: src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:124 src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 +#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 +#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 +#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 msgid "mm" msgstr "mm" -#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 +#: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" msgstr "mm (imposta a zero per disabilitare)" -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 -#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 +#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "mm or %" msgstr "mm o %" -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 -#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 -#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 +#: src/libslic3r/PrintConfig.cpp:271 src/libslic3r/PrintConfig.cpp:645 +#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:662 +#: src/libslic3r/PrintConfig.cpp:670 src/libslic3r/PrintConfig.cpp:697 +#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2297 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 msgid "mm/s or %" msgstr "mm/s o %" -#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 -#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 +#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:708 msgid "mm³" msgstr "mm³" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "mm³/s" msgstr "mm³/s" -#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 msgid "mm³/s²" msgstr "mm³/s²" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 msgid "Mode" msgstr "&Modalità" @@ -4526,7 +5289,7 @@ msgstr "&Modalità" msgid "model" msgstr "modello" -#: src/slic3r/GUI/BedShapeDialog.cpp:251 +#: src/slic3r/GUI/BedShapeDialog.cpp:395 msgid "Model" msgstr "Modello" @@ -4555,145 +5318,181 @@ msgstr "Riparazione modello terminata" msgid "Model repaired successfully" msgstr "Modello riparato con successo" -#: src/slic3r/GUI/Tab.cpp:979 +#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +msgctxt "Mode" +msgid "Advanced" +msgstr "Avanzata" + +#: src/slic3r/GUI/Tab.cpp:1241 msgid "Modifications to the current profile will be saved." msgstr "Verranno salvate le modifiche al profilo attuale." -#: src/slic3r/GUI/Preset.cpp:247 +#: src/slic3r/GUI/GUI_App.cpp:1425 msgid "modified" msgstr "modificato" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Modifier" msgstr "Modificatore" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1491 msgid "Modifiers" msgstr "Modificatori" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2655 msgid "money/bottle" msgstr "soldi/bottiglia" -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:798 msgid "money/kg" msgstr "soldi/kg" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:461 +msgid "Monotonic" +msgstr "Monotonico" + +#: src/slic3r/GUI/NotificationManager.cpp:305 +#: src/slic3r/GUI/NotificationManager.cpp:315 +msgid "More" +msgstr "Altro" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Mouse wheel" msgstr "Rotella del mouse" -#: src/slic3r/GUI/GLCanvas3D.cpp:261 +#: src/slic3r/GUI/GLCanvas3D.cpp:249 msgid "Mouse wheel:" msgstr "Rotella del mouse:" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:64 msgid "Move" msgstr "Sposta" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" -msgstr "Sposta piano di ritaglio" +msgstr "Sposta piano sezione" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Move current slider thumb Down" msgstr "Abbassa la barra di scorrimento attuale" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +msgid "Move current slider thumb Left" +msgstr "Sposta a sinistra la barra di scorrimento attuale" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 +msgid "Move current slider thumb Right" +msgstr "Sposta a destra la barra di scorrimento attuale" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Move current slider thumb Up" msgstr "Solleva la barra di scorrimento attuale" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1059 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:835 msgid "Move drainage hole" msgstr "Sposta foro di drenaggio" -#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Sposta oggetto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 msgid "Move point" msgstr "Sposta punto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 msgid "Move selection 10 mm in negative X direction" msgstr "Sposta selezione 10 mm in direzione X negativa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 msgid "Move selection 10 mm in negative Y direction" msgstr "Sposta selezione 10 mm in direzione Y negativa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 msgid "Move selection 10 mm in positive X direction" msgstr "Sposta selezione 10 mm in direzione X positiva" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Move selection 10 mm in positive Y direction" msgstr "Sposta selezione 10 mm in direzione Y positiva" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1097 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:955 msgid "Move support point" msgstr "Sposta punto di supporto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/GCodeViewer.cpp:2492 +msgid "Movement" +msgstr "Movimento" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Movement in camera space" msgstr "Movimento nello spazio della camera" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 msgid "Movement step set to 1 mm" msgstr "Passo del movimento impostato a 1 mm" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." msgstr "Le stampanti multi-material potrebbero necessitare di caricare o spurgare l'estrusore al cambio di attrezzo. Estrude il materiale in eccesso in una torre di spurgo." -#: src/slic3r/GUI/Plater.cpp:2360 src/slic3r/GUI/Plater.cpp:2413 +#: src/slic3r/GUI/Plater.cpp:2322 src/slic3r/GUI/Plater.cpp:2375 msgid "Multi-part object detected" msgstr "Rilevato oggetto in parti multiple" #: src/slic3r/GUI/FirmwareDialog.cpp:419 src/slic3r/GUI/FirmwareDialog.cpp:454 -#, possible-c-format +#, c-format msgid "Multiple %s devices found. Please only connect one at a time for flashing." msgstr "Trovati molteplici %s dispositivi. Per favore connettine uno alla volta per il flashing." -#: src/slic3r/GUI/Tab.cpp:1179 +#: src/slic3r/GUI/Tab.cpp:1509 msgid "Multiple Extruders" msgstr "Estrusori multipli" -#: src/slic3r/GUI/Plater.cpp:2410 -msgid "Multiple objects were loaded for a multi-material printer.\nInstead of considering them as multiple objects, should I consider\nthese files to represent a single object having multiple parts?" -msgstr "Sono stati caricati oggetti multipli per stampante multi-material.\nInvece di considerarli come oggetti multipli, devo considerarli come parte di un singolo oggetto avente parti multiple?" +#: src/slic3r/GUI/Plater.cpp:2372 +msgid "" +"Multiple objects were loaded for a multi-material printer.\n" +"Instead of considering them as multiple objects, should I consider\n" +"these files to represent a single object having multiple parts?" +msgstr "" +"Sono stati caricati oggetti multipli per stampante multi-material.\n" +"Invece di considerarli come oggetti multipli, devo considerarli come parte di un singolo oggetto avente parti multiple?" -#: src/libslic3r/PrintConfig.cpp:3439 +#: src/libslic3r/PrintConfig.cpp:3638 msgid "Multiply copies by creating a grid." msgstr "Moltiplica le copie creando una griglia." -#: src/libslic3r/PrintConfig.cpp:3434 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Multiply copies by this factor." msgstr "Moltiplica le copie per questo valore." -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:580 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "N/A" -#: src/slic3r/GUI/GUI_ObjectList.cpp:270 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "Nome" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:114 +msgid "Name of the printer" +msgstr "Nome della stampante" + +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." msgstr "Nome della variante di stampante. Per esempio le varianti di una stampante potrebbero differire per diametro dell'ugello." -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1590 msgid "Name of the printer vendor." msgstr "Nome del venditore della stampante." -#: src/libslic3r/PrintConfig.cpp:1058 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Name of the profile, from which this profile inherits." msgstr "Nome del profilo da cui questo profilo eredita." -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "Nearest" msgstr "Più vicino" @@ -4701,16 +5500,32 @@ msgstr "Più vicino" msgid "Network lookup" msgstr "Ricerca network" -#: src/slic3r/GUI/Plater.cpp:2151 +#: src/slic3r/GUI/Preferences.cpp:430 +msgid "New layout, access via settings button in the top menu" +msgstr "Nuovo layout, accesso tramite pulsante impostazioni dal menù superiore" + +#: src/slic3r/GUI/Plater.cpp:2056 msgid "New Project" msgstr "Nuovo progetto" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "New project, clear plater" msgstr "Nuovo progetto, pulisci piano" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 +msgid "New Value" +msgstr "Nuovo Valore" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 +msgid "New value" +msgstr "Nuovo valore" + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "New version is available." +msgstr "È disponibile una nuova versione." + #: src/slic3r/GUI/UpdateDialogs.cpp:38 -#, possible-c-format +#, c-format msgid "New version of %s is available" msgstr "È disponibile una nuova versione di %s" @@ -4718,23 +5533,23 @@ msgstr "È disponibile una nuova versione di %s" msgid "New version:" msgstr "Nuova versione:" -#: src/slic3r/GUI/GLCanvas3D.cpp:4673 +#: src/slic3r/GUI/GLCanvas3D.cpp:5089 msgid "Next Redo action: %1%" msgstr "Ripeti Prossima azione: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:4641 +#: src/slic3r/GUI/GLCanvas3D.cpp:5051 msgid "Next Undo action: %1%" msgstr "Annulla Prossima azione: %1%" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:1004 msgid "No extrusion" msgstr "No estrusione" -#: src/libslic3r/SLAPrintSteps.cpp:453 +#: src/libslic3r/SLAPrintSteps.cpp:451 msgid "No pad can be generated for this model with the current configuration" msgstr "Non può essere generato nessun Pad per questo modello con la configurazione corrente" -#: src/slic3r/GUI/MainFrame.cpp:784 +#: src/slic3r/GUI/MainFrame.cpp:1485 msgid "No previously sliced file." msgstr "File non processato precedentemente." @@ -4742,175 +5557,221 @@ msgstr "File non processato precedentemente." msgid "NO RAMMING AT ALL" msgstr "NESSUN RAMMING" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1999 msgid "No sparse layers (EXPERIMENTAL)" msgstr "Nessun layer sparso (SPERIMENTALE)" -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2938 msgid "No support points will be placed closer than this threshold." msgstr "Non verranno posizionati punti di supporto più vicini di questa soglia." -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "No updates available" msgstr "Nessun aggiornamento disponibile" -#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 -#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 -#: src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 +#: src/libslic3r/ExtrusionEntity.cpp:312 msgid "None" msgstr "Nessuno" -#: src/slic3r/GUI/Tab.cpp:2203 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 msgid "Normal" msgstr "Normale" -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 msgid "normal mode" msgstr "modalità normale" -#: src/libslic3r/Zipper.cpp:46 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 +msgid "Normal mode" +msgstr "Modalità normale" + +#: src/libslic3r/miniz_extension.cpp:105 msgid "not a ZIP archive" msgstr "non un archivio ZIP" -#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +#: src/slic3r/GUI/BedShapeDialog.cpp:366 src/slic3r/GUI/BedShapeDialog.cpp:446 msgid "Not found:" msgstr "Non trovato:" -#: src/slic3r/GUI/DoubleSlider.cpp:1019 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Note" msgstr "Nota" -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Note, that selected preset will be deleted from this/those printer(s) too." +msgstr "Nota: il preset selezionato verrà eliminato anche da questa/e stampante/i." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Note, that this/those printer(s) will be deleted after deleting of the selected preset." +msgstr "Nota: questa/e stampante/i saranno cancellate dopo aver cancellato il preset selezionato." + +#: src/slic3r/GUI/Tab.cpp:2039 +msgid "" +"Note: All parameters from this group are moved to the Physical Printer settings (see changelog).\n" +"\n" +"A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored into PrusaSlicer/physical_printer directory." +msgstr "" +"Nota: Tutti i parametri di questo gruppo vengono spostati nelle impostazioni della stampante fisica (vedi changelog).\n" +"\n" +"Un nuovo profilo di stampante fisica viene creato cliccando sull'icona \"ingranaggio\" a destra della casella combinata dei profili della stampante, selezionando la voce \"Aggiungi stampante fisica\" nella casella combinata della stampante. L'editor dei profili della stampante fisica si apre anche cliccando sull'icona \"ingranaggio\" nella scheda Impostazioni della stampante. I profili della stampante fisica vengono memorizzati nella directory PrusaSlicer/physical_printer." + +#: src/slic3r/Utils/AstroBox.cpp:92 msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "Nota: è richiesta una versione di AstroBox 1.1.0 o successiva." -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:76 msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "Nota: è necessaria FlashAir con firmware 2.00.02 o successivo e funzione di caricamento attiva." -#: src/slic3r/Utils/OctoPrint.cpp:89 +#: src/slic3r/Utils/OctoPrint.cpp:91 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Nota: è richiesta una versione di OctoPrint 1.1.0 o successiva." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1345 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1192 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Nota: alcune scorciatoie funzionano solo in modalità (non)modifica." -#: src/slic3r/GUI/Tab.cpp:1251 src/slic3r/GUI/Tab.cpp:1252 -#: src/slic3r/GUI/Tab.cpp:1540 src/slic3r/GUI/Tab.cpp:1541 -#: src/slic3r/GUI/Tab.cpp:2012 src/slic3r/GUI/Tab.cpp:2013 -#: src/slic3r/GUI/Tab.cpp:2128 src/slic3r/GUI/Tab.cpp:2129 -#: src/slic3r/GUI/Tab.cpp:3535 src/slic3r/GUI/Tab.cpp:3536 +#: src/slic3r/GUI/SavePresetDialog.cpp:151 +msgid "Note: This preset will be replaced after saving" +msgstr "Nota: Questo preset sarà sostituito dopo il salvataggio" + +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 +#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 msgid "Notes" msgstr "Note" -#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 -#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:245 +#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "Avvertenza" -#: src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:236 msgid "nozzle" msgstr "ugello" -#: src/slic3r/GUI/Tab.cpp:1870 src/slic3r/GUI/Tab.cpp:2340 -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/slic3r/GUI/Tab.cpp:1790 +msgid "Nozzle" +msgstr "Ugello" + +#: src/slic3r/GUI/ConfigWizard.cpp:1392 +msgid "Nozzle and Bed Temperatures" +msgstr "Temperatura ugello e piano" + +#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "Nozzle diameter" msgstr "Diametro ugello" -#: src/slic3r/GUI/ConfigWizard.cpp:969 +#: src/slic3r/GUI/ConfigWizard.cpp:1335 msgid "Nozzle Diameter:" msgstr "Diametro ugello:" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:2201 +msgid "Nozzle temperature" +msgstr "Temperatura ugello" + +#: src/libslic3r/PrintConfig.cpp:2198 +msgid "Nozzle temperature for layers after the first one. Set this to zero to disable temperature control commands in the output G-code." +msgstr "Temperatura dell'ugello per i layer dopo il primo. Impostarlo a zero per disabilitare i comandi di controllo della temperatura nel G-code di uscita." + +#: src/libslic3r/PrintConfig.cpp:961 +msgid "Nozzle temperature for the first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output G-code." +msgstr "Temperatura dell'ugello per il primo strato. Se si desidera controllare la temperatura manualmente durante la stampa, impostarla a zero per disabilitare i comandi di controllo della temperatura nel G-code di uscita." + +#: src/libslic3r/PrintConfig.cpp:686 msgid "Number of cooling moves" msgstr "Numero di movimenti di raffreddamento" -#: src/slic3r/GUI/Tab.cpp:1839 +#: src/slic3r/GUI/Tab.cpp:2073 msgid "Number of extruders of the printer." msgstr "Numero estrusori della stampante." -#: src/libslic3r/PrintConfig.cpp:1975 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Number of interface layers to insert between the object(s) and support material." msgstr "Numero di layer interfaccia da inserire tra l'oggetto(i) e il materiale di supporto." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1812 msgid "Number of loops for the skirt. If the Minimum Extrusion Length option is set, the number of loops might be greater than the one configured here. Set this to zero to disable skirt completely." msgstr "Numero di giri per lo skirt. Se è impostata l'opzione per la lunghezza minima di estrusione, il numero dei giri potrebbe essere più grande di quello configurato qui. Imposta questo valore a zero per disattivare completamente lo skirt." -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2508 msgid "Number of pixels in" msgstr "Numero di pixel su" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2510 msgid "Number of pixels in X" msgstr "Numero di pixel su X" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "Number of pixels in Y" msgstr "Numero di pixel su Y" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:210 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Numero di layer solidi da generare sulle superfici inferiori." -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "Numero di layer solidi da generare sulle superfici superiori e inferiori." -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "Number of solid layers to generate on top surfaces." msgstr "Numero di layer solidi da generare sulle superfici superiori." -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" msgstr "Numero di layer necessari per la sfumatura del tempo di esposizione dal tempo di esposizione iniziale al tempo di esposizione" -#: src/slic3r/GUI/Plater.cpp:241 +#: src/slic3r/GUI/Plater.cpp:247 msgid "Number of tool changes" msgstr "Numero di cambi attrezzo" -#: src/libslic3r/PrintConfig.cpp:2753 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:2917 msgid "Object elevation" msgstr "Elevazione oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2466 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 msgid "Object manipulation" msgstr "Manipolazione oggetto" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:623 msgid "Object name" msgstr "Nome oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3417 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 msgid "Object or Instance" msgstr "Oggetto o Istanza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Object reordered" msgstr "Oggetto riordinato" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2479 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 msgid "Object Settings to modify" msgstr "Impostazioni Oggetto da modificare" -#: src/slic3r/GUI/Plater.cpp:2529 +#: src/slic3r/GUI/Plater.cpp:2491 msgid "Object too large?" msgstr "Oggetto troppo grande?" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2405 msgid "Object will be used to purge the nozzle after a toolchange to save material that would otherwise end up in the wipe tower and decrease print time. Colours of the objects will be mixed as a result." msgstr "L'oggetto sarà utilizzato per spurgare l'ugello dopo un cambio di attrezzo per ridurre il tempo di stampa e risparmiare materiale che finirebbe altrimenti nella torre di spurgo. Come risultato, i colori dell'oggetto saranno mischiati." -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "object(s)" msgstr "oggetto(i)" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "objects" msgstr "oggetti" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 msgid "Octagram Spiral" msgstr "Spirale a Ottagramma" @@ -4918,64 +5779,97 @@ msgstr "Spirale a Ottagramma" msgid "OctoPrint version" msgstr "Versione OctoPrint" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3425 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 msgid "of a current Object" msgstr "di un Oggetto corrente" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 msgid "Offset" msgstr "Offset" -#: src/slic3r/GUI/Tab.cpp:1755 -#, possible-c-format +#: src/slic3r/GUI/Preferences.cpp:422 +msgid "Old regular layout with the tab bar" +msgstr "Precedente layout normale con la barra delle schede" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:608 +msgid "Old Value" +msgstr "Valore precedente" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1177 +msgid "Old value" +msgstr "Vecchio valore" + +#: src/slic3r/GUI/Preferences.cpp:123 +msgid "On OSX there is always only one instance of app running by default. However it is allowed to run multiple instances of same app from the command line. In such case this settings will allow only one instance." +msgstr "Su OSX per impostazione predefinita c'è sempre una sola istanza di applicazione in esecuzione. Tuttavia è possibile eseguire più istanze della stessa app dalla riga di comando. In tal caso questa impostazione consentirà una sola istanza." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 +#, c-format msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "Su questo sistema, %s utilizza certificati HTTPS provenienti dal sistema Certificate Store o da Keychain." -#: src/slic3r/GUI/DoubleSlider.cpp:950 +#: src/slic3r/GUI/DoubleSlider.cpp:1064 msgid "One layer mode" msgstr "Modalità Un Layer" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1391 msgid "One or more object were assigned an extruder that the printer does not have." msgstr "Uno o più oggetti sono assegnati ad un estrusore non presente sulla stampante." -#: src/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2676 +#: src/libslic3r/PrintConfig.cpp:2045 src/libslic3r/PrintConfig.cpp:2840 msgid "Only create support if it lies on a build plate. Don't create support on a print." msgstr "Genera supporti solo se questi poggiano sulla superficie di stampa. Non genera supporti sulla stampa." -#: src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Only infill where needed" msgstr "Riempimento solo quando necessario" -#: src/slic3r/GUI/Tab.cpp:2373 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Only lift Z" msgstr "Solleva Z solamente" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1678 msgid "Only lift Z above" msgstr "Solleva Z solo al di sopra" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Only lift Z below" msgstr "Solleva Z solo al di sotto" -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Only retract when crossing perimeters" msgstr "Retrai solo se si attraversa un perimetro" -#: src/slic3r/GUI/Tab.cpp:1187 +#: src/slic3r/GUI/ConfigWizard.cpp:714 +msgid "Only the following installed printers are compatible with the selected filament:" +msgstr "Il filamento selezionato è compatibile solo con le seguenti stampanti installate:" + +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Ooze prevention" msgstr "Prevenzione delle fuoriuscite" -#: src/libslic3r/Print.cpp:1266 +#: src/libslic3r/Print.cpp:1292 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "Prevenzione sgocciolamento non è al momento supportata con la torre di spurgo attiva." -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open &PrusaSlicer" +msgstr "Apri &PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "Open a G-code file" +msgstr "Apri un file G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 +#: src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open a new PrusaSlicer instance" +msgstr "Apri una nuova istanza PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "Open a project file" msgstr "Apri un file progetto" -#: src/slic3r/GUI/Tab.cpp:1729 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 msgid "Open CA certificate file" msgstr "Apri file di certificato CA" @@ -4988,116 +5882,150 @@ msgstr "Apri la pagina del registro delle modifiche" msgid "Open download page" msgstr "Apri la pagina di Download" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/NotificationManager.cpp:742 +msgid "Open Folder." +msgstr "Apri Cartella." + +#: src/slic3r/Utils/Process.cpp:151 +msgid "Open G-code file:" +msgstr "Apri un file G-code:" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +msgid "Open G-code viewer" +msgstr "Apri visualizzatore G-code" + +#: src/slic3r/GUI/MainFrame.cpp:79 +msgid "Open new G-code viewer" +msgstr "Apri nuovo visualizzatore G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open new instance" +msgstr "Apri una nuova istanza" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "Apri progetto STL/OBJ/AMF/3MF con configurazione, pulisci piano" -#: src/slic3r/GUI/MainFrame.cpp:693 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open PrusaSlicer" +msgstr "Apri PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 +#, c-format msgid "Open the %s website in your browser" msgstr "Apri il sito web di %s nel browser" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Apri la pagina di download dei driver Prusa3D sul browser" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Open the software releases page in your browser" msgstr "Apri la pagina delle versioni software sul browser" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 msgid "Optimize orientation" msgstr "Ottimizza orientamento" -#: src/slic3r/GUI/Plater.cpp:2767 +#: src/slic3r/GUI/Plater.cpp:1555 msgid "Optimize Rotation" msgstr "Ottimizza Rotazione" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Plater.cpp:3962 msgid "Optimize the rotation of the object for better print results." msgstr "Ottimizza la rotazione dell'oggetto per risultati di stampa migliori." -#: src/libslic3r/PrintConfig.cpp:137 +#: src/libslic3r/PrintConfig.cpp:170 msgid "Optimize travel moves in order to minimize the crossing of perimeters. This is mostly useful with Bowden extruders which suffer from oozing. This feature slows down both the print and the G-code generation." msgstr "Ottimizza il movimenti di spostamento per minimizzare l'incrocio di perimetri. È comunemente usato con estrusori Bowden che soffrono di oozing (trasudazione). Questa caratteristica rallenta sia la stampa che la generazione del G-code." -#: src/slic3r/GUI/Tab.cpp:1131 +#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 +#: src/slic3r/GUI/GUI_Preview.cpp:333 +msgid "Options" +msgstr "Opzioni" + +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Options for support material and raft" msgstr "Opzioni per materiale di supporto e raft" -#: src/slic3r/GUI/DoubleSlider.cpp:989 +#: src/slic3r/GUI/Mouse3DController.cpp:315 +msgid "Options:" +msgstr "Opzioni:" + +#: src/slic3r/GUI/DoubleSlider.cpp:1112 msgid "or press \"+\" key" msgstr "o premi il tasto \"+\"" -#: src/slic3r/GUI/Plater.cpp:2892 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:74 msgid "Orientation found." msgstr "Trovato orientamento." -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:73 msgid "Orientation search canceled." msgstr "Ricerca orientamento annullata." -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "Origin" msgstr "Origine" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1557 msgid "Other" msgstr "Altro" -#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:2206 msgid "Other layers" msgstr "Altri layer" -#: src/slic3r/GUI/ConfigWizard.cpp:856 +#: src/slic3r/GUI/ConfigWizard.cpp:1222 msgid "Other Vendors" msgstr "Altri Fornitori" -#: src/slic3r/GUI/Tab.cpp:1238 src/slic3r/GUI/Tab.cpp:3666 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 msgid "Output file" msgstr "File di output" -#: src/libslic3r/PrintConfig.cpp:3493 +#: src/libslic3r/PrintConfig.cpp:3692 msgid "Output File" msgstr "File di output" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1471 msgid "Output filename format" msgstr "Formato del file di output" -#: src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3580 msgid "Output Model Info" msgstr "Info Modello di output" -#: src/slic3r/GUI/Tab.cpp:1230 src/slic3r/GUI/Tab.cpp:3665 +#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 msgid "Output options" msgstr "Opzioni output" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/libslic3r/ExtrusionEntity.cpp:340 msgid "Overhang perimeter" msgstr "Perimetro sporgente" -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Overhang threshold" msgstr "Soglia sporgenza" -#: src/slic3r/GUI/Tab.cpp:1215 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Overlap" msgstr "Sovrapposizione" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "P&rint Settings Tab" msgstr "Impos&tazioni Stampa" -#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:625 -#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3636 -#: src/slic3r/GUI/Tab.cpp:3637 src/libslic3r/PrintConfig.cpp:2781 -#: src/libslic3r/PrintConfig.cpp:2788 src/libslic3r/PrintConfig.cpp:2802 -#: src/libslic3r/PrintConfig.cpp:2813 src/libslic3r/PrintConfig.cpp:2823 -#: src/libslic3r/PrintConfig.cpp:2845 src/libslic3r/PrintConfig.cpp:2856 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:2870 -#: src/libslic3r/PrintConfig.cpp:2881 src/libslic3r/PrintConfig.cpp:2890 -#: src/libslic3r/PrintConfig.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 +#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 +#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 msgid "Pad" msgstr "Pad" @@ -5105,151 +6033,187 @@ msgstr "Pad" msgid "Pad and Support" msgstr "Pad e Supporto" -#: src/libslic3r/PrintConfig.cpp:2855 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 msgid "Pad around object" msgstr "Pad Intorno all'oggetto" -#: src/libslic3r/PrintConfig.cpp:2862 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "Pad around object everywhere" msgstr "Pad ovunque intorno all'oggetto" -#: src/libslic3r/PrintConfig.cpp:2811 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Pad brim size" msgstr "Dimensioni brim del Pad" -#: src/libslic3r/SLA/Pad.cpp:691 +#: src/libslic3r/SLA/Pad.cpp:532 msgid "Pad brim size is too small for the current configuration." msgstr "La dimensione del brim del Pad è troppo piccola per la configurazione attuale." -#: src/libslic3r/PrintConfig.cpp:2898 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Pad object connector penetration" msgstr "Inserimento connettore Pad dell'oggetto" -#: src/libslic3r/PrintConfig.cpp:2880 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector stride" msgstr "Passo del connettore del pad dell'oggetto" -#: src/libslic3r/PrintConfig.cpp:2889 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector width" msgstr "Lunghezza connettore Pad dell'oggetto" -#: src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:3033 msgid "Pad object gap" msgstr "Spazio Pad oggetto" -#: src/libslic3r/PrintConfig.cpp:2797 +#: src/libslic3r/PrintConfig.cpp:2961 msgid "Pad wall height" msgstr "Altezza parete Pad" -#: src/libslic3r/PrintConfig.cpp:2844 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Pad wall slope" msgstr "Inclinazione della parete del pad" -#: src/libslic3r/PrintConfig.cpp:2787 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Pad wall thickness" msgstr "Spessore parete Pad" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Page Down" msgstr "Page Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Page Up" msgstr "Page Up" -#: src/slic3r/GUI/Field.cpp:139 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 +msgid "Paint-on supports" +msgstr "Supporti Paint-on" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:178 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:159 +msgid "Paints all facets inside, regardless of their orientation." +msgstr "Dipinge tutte le faccette all'interno, indipendentemente dal loro orientamento." + +#: src/slic3r/GUI/Field.cpp:187 msgid "parameter name" msgstr "nome parametro" -#: src/slic3r/GUI/Field.cpp:243 +#: src/slic3r/GUI/Field.cpp:291 msgid "Parameter validation" msgstr "Validazione parametri" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Part" msgstr "Parte" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2494 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 msgid "Part manipulation" msgstr "Manipolazione parti" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2483 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 msgid "Part Settings to modify" msgstr "Impostazioni parte da modificare" -#: src/slic3r/GUI/GLCanvas3D.cpp:4514 +#: src/libslic3r/PrintConfig.cpp:138 +msgid "Password" +msgstr "Password" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4880 msgid "Paste" msgstr "Incolla" -#: src/slic3r/GUI/MainFrame.cpp:592 +#: src/slic3r/GUI/MainFrame.cpp:1198 msgid "Paste clipboard" msgstr "Incolla appunti" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Paste from clipboard" msgstr "Incolla dagli appunti" -#: src/slic3r/GUI/Plater.cpp:5606 +#: src/slic3r/GUI/Plater.cpp:5803 msgid "Paste From Clipboard" msgstr "Incolla dagli appunti" -#: src/libslic3r/PrintConfig.cpp:2002 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Pattern" msgstr "Trama" -#: src/libslic3r/PrintConfig.cpp:1891 +#: src/libslic3r/PrintConfig.cpp:2033 msgid "Pattern angle" msgstr "Angolo trama" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Pattern spacing" msgstr "Spaziatura trama" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "Pattern used to generate support material." msgstr "Trama usata per generare il materiale di supporto." -#: src/slic3r/GUI/Plater.cpp:1261 +#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 +#: src/slic3r/GUI/Plater.cpp:1199 msgid "Pause" msgstr "Pausa" -#: src/slic3r/GUI/DoubleSlider.cpp:1009 +#: src/slic3r/GUI/DoubleSlider.cpp:1133 msgid "Pause print (\"%1%\")" msgstr "Metti in pausa (\"%1%\")" -#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 -#: src/slic3r/GUI/GLCanvas3D.cpp:982 +#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +msgid "Pause Print G-code" +msgstr "G-code Pausa Stampa" + +#: src/slic3r/GUI/GLCanvas3D.cpp:940 src/slic3r/GUI/GLCanvas3D.cpp:949 +#: src/slic3r/GUI/GLCanvas3D.cpp:988 msgid "Pause print or custom G-code" msgstr "Pausa stampa o G-code personalizzato" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 +#: src/libslic3r/PrintConfig.cpp:1147 +msgid "Percent of a flow rate relative to object's normal layer height." +msgstr "Percentuale di una portata rispetto all'altezza normale dello strato dell'oggetto." + +#: src/slic3r/GUI/GCodeViewer.cpp:2233 +msgid "Percentage" +msgstr "Percentuale" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 msgid "Perform cut" msgstr "Effettua taglio" -#: src/libslic3r/PrintConfig.cpp:2927 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Performance vs accuracy of calculation. Lower values may produce unwanted artifacts." msgstr "Prestazioni vs Precisione di calcolo. Valori più bassi possono produrre artefatti non voluti." -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Perimeter" msgstr "Perimetro" -#: src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Perimeter extruder" msgstr "Estrusore perimetro" -#: src/slic3r/GUI/PresetHints.cpp:165 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "perimetri" -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 -#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 msgid "Perimeters" msgstr "Perimetri" -#: src/slic3r/GUI/ConfigWizard.cpp:860 -#, possible-c-format +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +msgid "Physical Printer" +msgstr "Stampante Fisica" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:789 +#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +msgid "Physical printers" +msgstr "Stampanti fisiche" + +#: src/slic3r/GUI/ConfigWizard.cpp:1226 +#, c-format msgid "Pick another vendor supported by %s" msgstr "Scegli un altro distributore supportato da %s" @@ -5257,279 +6221,338 @@ msgstr "Scegli un altro distributore supportato da %s" msgid "Picture sizes to be stored into a .gcode and .sl1 files" msgstr "Dimensioni immagine per essere memorizzate nei file .gcode e .sl1" -#: src/libslic3r/PrintConfig.cpp:2681 +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "Pillar connection mode" +msgstr "Modo di collegamento al pilastro" + +#: src/libslic3r/PrintConfig.cpp:2791 +msgid "Pillar diameter" +msgstr "Diametro pilastro" + +#: src/libslic3r/PrintConfig.cpp:2845 msgid "Pillar widening factor" msgstr "Fattore di espansione pilastro" -#: src/slic3r/GUI/ConfigManipulation.cpp:330 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Il diametro dell'apice dovrebbe essere più piccolo rispetto al diametro del pilastro." -#: src/slic3r/GUI/DoubleSlider.cpp:79 +#: src/libslic3r/PrintConfig.cpp:2763 +msgid "Pinhead front diameter" +msgstr "Diametro anteriore apice" + +#: src/libslic3r/PrintConfig.cpp:2781 +msgid "Pinhead width" +msgstr "Larghezza apice" + +#: src/slic3r/GUI/DoubleSlider.cpp:110 msgid "Place bearings in slots and resume printing" msgstr "Posiziona i cuscinetti negli alloggi e riprendi a stampare" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 msgid "Place on face" msgstr "Posiziona su faccia" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Plater" msgstr "Piano" -#: src/slic3r/GUI/GUI_App.cpp:1085 +#: src/slic3r/GUI/GUI_App.cpp:1877 msgid "Please check and fix your object list." msgstr "Per favore controlla e correggi la tua lista oggetti." -#: src/slic3r/GUI/Plater.cpp:2312 src/slic3r/GUI/Tab.cpp:2959 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2255 +#: src/slic3r/GUI/Tab.cpp:3188 msgid "Please check your object list before preset changing." msgstr "Per favore verifica la tua lista di oggetti prima di cambiare i preset." -#: src/slic3r/GUI/Plater.cpp:3286 +#: src/slic3r/GUI/Plater.cpp:3089 msgid "Please select the file to reload" msgstr "Seleziona il file da ricaricare" -#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 +#: src/slic3r/GUI/AboutDialog.cpp:317 msgid "Portions copyright" -msgstr "Parti di copyright" +msgstr "Porzioni di copyright" -#: src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2543 msgid "Portrait" msgstr "Ritratto" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:223 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:505 msgid "Position" msgstr "Posizione" -#: src/slic3r/GUI/Tab.cpp:2367 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Position (for multi-extruder printers)" msgstr "Posizione (per stampanti multi-estrusore)" -#: src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1731 msgid "Position of perimeters starting points." msgstr "Posizione dei punti iniziali dei perimetri." -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Position X" msgstr "Posizione X" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Position Y" msgstr "Posizione Y" -#: src/slic3r/GUI/Tab.cpp:1245 src/libslic3r/PrintConfig.cpp:1453 +#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 msgid "Post-processing scripts" msgstr "Script di post produzione" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Pre&view" msgstr "&Visualizza anteprima" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Preferences.cpp:12 msgid "Preferences" msgstr "Preferenze" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Preferred direction of the seam" msgstr "Direzione preferita della giunzione" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam - jitter" msgstr "Direzione preferita della giunzione - jitter" -#: src/libslic3r/PrintObject.cpp:255 +#: src/libslic3r/PrintObject.cpp:261 msgid "Preparing infill" msgstr "Preparazione infill" -#: src/slic3r/GUI/Tab.cpp:2920 -#, possible-c-format -msgid "Preset (%s)" -msgstr "Preset (%s)" +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" +msgstr "Preparazione schede impostazioni" -#: src/slic3r/GUI/Tab.cpp:3082 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 +msgid "Preset \"%1%\" has the following unsaved changes:" +msgstr "Il preset \"%1%\" ha le seguenti modifiche non salvate:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1014 +msgid "Preset \"%1%\" is not compatible with the new print profile and it has the following unsaved changes:" +msgstr "Il preset \"%1%\" non è compatibile con il nuovo profilo di stampa e possiede le seguenti modifiche non salvate:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1013 +msgid "Preset \"%1%\" is not compatible with the new printer profile and it has the following unsaved changes:" +msgstr "Il preset \"%1%\" non è compatibile con il nuovo profilo stampante e possiede le seguenti modifiche non salvate:" + +#: src/slic3r/GUI/SavePresetDialog.cpp:136 +msgid "Preset with name \"%1%\" already exists and is imcopatible with selected printer." +msgstr "Il preset con il nome \"%1%\" esiste già e non è compatibile con la stampante selezionata." + +#: src/slic3r/GUI/SavePresetDialog.cpp:148 msgid "Preset with name \"%1%\" already exists." msgstr "Preset con il nome \"%1%\" già esistente." -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/SavePresetDialog.cpp:219 msgctxt "PresetName" msgid "Copy" msgstr "Copia" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" msgstr "Premi per attivare il rettangolo di deselezione" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "Premere per attivare una direzione di ridimensionamento nel Gizmo ridimensiona" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Press to activate selection rectangle" msgstr "Premi per attivare il rettangolo di selezione" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 -msgid "Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\nselected objects around their own center" -msgstr "Premi per ridimensionare (nel Gizmo ridimensiona) o ruotare (nel Gizmo ruota)\nl'oggetto selezionato attorno al proprio centro" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +msgid "" +"Press to select multiple objects\n" +"or move multiple objects with mouse" +msgstr "" +"Premi per selezionare o spostare\n" +"oggetti multipli con il mouse" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 -msgid "Press to select multiple objects\nor move multiple objects with mouse" -msgstr "Premi per selezionare o spostare\noggetti multipli con il mouse" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 +msgid "" +"Press to speed up 5 times while moving thumb\n" +"with arrow keys or mouse wheel" +msgstr "" +"Premere per accelerare di 5 volte durante il movimento del cursore\n" +"con i tasti freccia o la rotella del mouse" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -#, no-c-format -msgid "Press to snap by 5% in Gizmo scale\nor to snap by 1mm in Gizmo move" -msgstr "Premi per scatti del 5% nel Gizmo ridimensiona\no per scatti di 1mm nel Gizmo sposta" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4105 -#: src/slic3r/GUI/Tab.cpp:2390 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:2559 msgid "Preview" msgstr "Anteprima" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 msgid "Preview hollowed and drilled model" msgstr "Anteprima del modello svuotato e forato" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid "Previously sliced file (" msgstr "File precedentemente processato (" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Prime all printing extruders" msgstr "Prepara tutti gli estrusori di stampa" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1521 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 msgid "print" msgstr "stampa" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +msgid "Print" +msgstr "Stampa" + +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Print &Host Upload Queue" msgstr "Coda di caricamento &Host di stampa" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:507 msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." msgstr "Stampa i perimetri di contorno dal più esterno al più interno invece dell'ordine predefinito inverso." -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Print Diameters" msgstr "Diametro di stampa" -#: src/slic3r/GUI/Tab.cpp:1944 src/slic3r/GUI/Tab.cpp:2123 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 msgid "Print Host upload" msgstr "Caricamento Host di stampa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "Coda di caricamento Host di stampa" -#: src/slic3r/GUI/DoubleSlider.cpp:970 +#: src/slic3r/GUI/DoubleSlider.cpp:1093 msgid "Print mode" msgstr "Modalità di stampa" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 +#: src/slic3r/GUI/GCodeViewer.cpp:2579 src/slic3r/GUI/GUI_Preview.cpp:1476 +msgid "Print pauses" +msgstr "Pause di stampa" + +#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 msgid "Print Settings" msgstr "Impostazioni Stampa" -#: src/slic3r/GUI/Plater.cpp:815 +#: src/slic3r/GUI/Plater.cpp:690 msgid "Print settings" msgstr "Impostazioni di stampa" -#: src/slic3r/GUI/Tab.cpp:1478 +#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Print Settings Tab" +msgstr "Scheda Impostazioni Stampa" + +#: src/slic3r/GUI/Tab.cpp:1824 msgid "Print speed override" msgstr "Scavalca velocità di stampa" -#: src/libslic3r/GCode.cpp:638 +#: src/libslic3r/GCode.cpp:623 msgid "Print z" msgstr "Stampa z" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Print&er Settings Tab" msgstr "Impostazioni Stampant&e" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Printable" msgstr "Stampabile" -#: src/slic3r/GUI/Plater.cpp:819 +#: src/slic3r/GUI/Plater.cpp:694 msgid "Printer" msgstr "Stampante" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1525 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 msgid "printer" msgstr "stampante" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 msgid "Printer absolute correction" msgstr "Correzione assoluta stampante" -#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 msgid "Printer gamma correction" msgstr "Correzione gamma della stampante" -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1294 msgid "printer model" msgstr "modello stampante" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Printer notes" msgstr "Note stampante" -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 -#: src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:144 +msgid "Printer preset name" +msgstr "Nome del preset della stampante" + +#: src/libslic3r/PrintConfig.cpp:2574 src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2576 msgid "Printer scaling correction" msgstr "Correzione di scala stampante" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:453 msgid "Printer Settings" msgstr "Impostazioni stampante" +#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +msgid "Printer Settings Tab" +msgstr "Scheda Impostazioni Stampante" + #: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "Tecnologia stampante" -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "Printer type" msgstr "Tipo stampante" -#: src/libslic3r/PrintConfig.cpp:1487 +#: src/libslic3r/PrintConfig.cpp:1595 msgid "Printer variant" msgstr "Variante della stampante" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "Printer vendor" msgstr "Venditore della stampante" -#: src/libslic3r/Print.cpp:1388 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +msgid "Printer with name \"%1%\" already exists." +msgstr "Stampante con nome \"%1%\" già esistente." + +#: src/slic3r/GUI/ConfigWizard.cpp:587 +msgid "Printer:" +msgstr "Stampante:" + +#: src/libslic3r/Print.cpp:1414 msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." msgstr "Stampa con più estrusori con ugelli di di diametro diverso. Se il supporto deve essere stampato con l'estrusore corrente (support_material_extruder = = 0 o support_material_interface_extruder = = 0), tutti gli ugelli devono avere lo stesso diametro." #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:849 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:1550 +#, c-format msgid "Processing %s" msgstr "Elaborando %s" -#: src/slic3r/GUI/Plater.cpp:2283 -#, possible-c-format -msgid "Processing input file %s" -msgstr "Processando il file di input %s" - -#: src/libslic3r/PrintObject.cpp:108 +#: src/libslic3r/PrintObject.cpp:114 msgid "Processing triangulated mesh" msgstr "Elaborando la mesh triangolata" -#: src/slic3r/GUI/Tab.cpp:1259 src/slic3r/GUI/Tab.cpp:1549 -#: src/slic3r/GUI/Tab.cpp:2020 src/slic3r/GUI/Tab.cpp:2136 -#: src/slic3r/GUI/Tab.cpp:3544 src/slic3r/GUI/Tab.cpp:3672 +#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 +#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 msgid "Profile dependencies" msgstr "Dipendenze profilo" -#: src/slic3r/GUI/ConfigWizard.cpp:566 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Profile:" msgstr "Profilo:" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 msgid "Progress" msgstr "Progresso" @@ -5537,93 +6560,133 @@ msgstr "Progresso" msgid "Progress:" msgstr "Progresso:" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Prusa 3D &Drivers" msgstr "Prusa 3D &Drivers" -#: src/slic3r/GUI/ConfigWizard.cpp:1995 +#: src/slic3r/GUI/ConfigWizard.cpp:2506 msgid "Prusa FFF Technology Printers" msgstr "Stampanti Prusa con tecnologia FFF" -#: src/slic3r/GUI/ConfigWizard.cpp:1998 +#: src/slic3r/GUI/ConfigWizard.cpp:2509 msgid "Prusa MSLA Technology Printers" msgstr "Stampanti Prusa con tecnologia MSLA" -#: src/slic3r/GUI/AboutDialog.cpp:260 +#: src/slic3r/Utils/Http.cpp:78 +msgid "PrusaSlicer detected system SSL certificate store in: %1%" +msgstr "PrusaSlicer ha rilevato l'archivio dei certificati SSL di sistema: %1%" + +#: src/slic3r/GUI/GUI_Init.cpp:85 src/slic3r/GUI/GUI_Init.cpp:88 +msgid "PrusaSlicer GUI initialization failed" +msgstr "Inizializzazione GUI PrusaSlicer non riuscita" + +#: src/slic3r/GUI/AboutDialog.cpp:285 msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "PrusaSlicer è basato su Slic3r di Alessandro Ranellucci e la comunità RepRap." -#: src/slic3r/GUI/GLCanvas3DManager.cpp:284 -#, possible-c-format -msgid "PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \nwhile OpenGL version %s, render %s, vendor %s was detected." +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 +msgid "PrusaSlicer is closing: Unsaved Changes" +msgstr "Chiusura PrusaSlicer: Modifiche non salvate" + +#: src/slic3r/GUI/OpenGLManager.cpp:259 +#, c-format +msgid "" +"PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" +"while OpenGL version %s, render %s, vendor %s was detected." msgstr "PrusaSlicer richiede un driver video con supporto OpenGL 2.0 per funzionare correttamente, mentre è stata rilevata la versione %s OpenGL, render %s, distributore %s." #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 msgid "PrusaSlicer version" msgstr "versione PrusaSlicer" -#: src/slic3r/GUI/ConfigWizard.cpp:815 -msgid "PrusaSlicer's user interfaces comes in three variants:\nSimple, Advanced, and Expert.\nThe Simple mode shows only the most frequently used settings relevant for regular 3D printing. The other two offer progressively more sophisticated fine-tuning, they are suitable for advanced and expert users, respectively." -msgstr "L'interfaccia utente di PrusaSlicer è disponibile in tre varianti:\nSemplice, Avanzata ed Esperto.\nLa modalità Semplice mostra solo le impostazioni rilevanti utilizzate più spesso per una semplice stampa 3D. Le altre due offrono progressivamente ottimizzazioni più sofisticate, sono adatte ad utenti avanzati ed esperti, rispettivamente." +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:662 +msgid "PrusaSlicer will remember your action." +msgstr "PrusaSlicer ricorderà la tua azione." -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/slic3r/GUI/ConfigWizard.cpp:1174 +msgid "" +"PrusaSlicer's user interfaces comes in three variants:\n" +"Simple, Advanced, and Expert.\n" +"The Simple mode shows only the most frequently used settings relevant for regular 3D printing. The other two offer progressively more sophisticated fine-tuning, they are suitable for advanced and expert users, respectively." +msgstr "" +"L'interfaccia utente di PrusaSlicer è disponibile in tre varianti:\n" +"Semplice, Avanzata ed Esperto.\n" +"La modalità Semplice mostra solo le impostazioni rilevanti utilizzate più spesso per una semplice stampa 3D. Le altre due offrono progressivamente ottimizzazioni più sofisticate, sono adatte ad utenti avanzati ed esperti, rispettivamente." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +msgid "PrusaSlicer: Don't ask me again" +msgstr "PrusaSlicer: Non chiedermelo più" + +#: src/libslic3r/PrintConfig.cpp:2397 msgid "Purging after toolchange will done inside this object's infills. This lowers the amount of waste but may result in longer print time due to additional travel moves." msgstr "Lo spurgo dopo un cambio di attrezzo verrà effettuato dentro il riempimento di questo oggetto. Questo diminuisce la quantità di scarto ma potrebbe prolungare il tempo di stampa a causa di spostamenti aggiuntivi." -#: src/slic3r/GUI/Plater.cpp:544 +#: src/slic3r/GUI/Plater.cpp:410 msgid "Purging volumes" msgstr "Volumi di spurgo" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "Purging volumes - load/unload volumes" msgstr "Volumi di spurgo - volumi di carico/scarico" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "Purging volumes - matrix" msgstr "Volumi di spurgo - matrice" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:1201 +msgid "Purpose of Machine Limits" +msgstr "Scopo dei limiti della macchina" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 msgid "Quality" msgstr "Qualità" -#: src/slic3r/GUI/Tab.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:1402 msgid "Quality (slower slicing)" msgstr "Qualità (slicing più lento)" -#: src/slic3r/GUI/GLCanvas3D.cpp:273 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Quality / Speed" msgstr "Qualità / Velocità" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1182 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1530 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1536 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1849 -#, possible-c-format +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 +msgid "Quick" +msgstr "Veloce" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1306 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1661 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1667 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2008 +#, c-format msgid "Quick Add Settings (%s)" msgstr "Aggiungere Impostazioni Rapide (%s)" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Quick Slice" msgstr "Slice veloce" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Quick Slice and Save As" msgstr "Slice veloce e Salva Come" -#: src/slic3r/GUI/MainFrame.cpp:540 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 +#, c-format msgid "Quit %s" msgstr "Chiudi %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Quit, I will move my data now" +msgstr "Chiudi, sposterò i miei dati adesso" + +#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" msgstr "Raggio" -#: src/slic3r/GUI/Tab.cpp:1127 +#: src/slic3r/GUI/Tab.cpp:1456 msgid "Raft" msgstr "Raft" -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Raft layers" msgstr "Layer raft" @@ -5632,8 +6695,14 @@ msgid "Ramming customization" msgstr "Personalizzazione del ramming" #: src/slic3r/GUI/WipeTowerDialog.cpp:41 -msgid "Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to properly shape the end of the unloaded filament so it does not prevent insertion of the new filament and can itself be reinserted later. This phase is important and different materials can require different extrusion speeds to get the good shape. For this reason, the extrusion rates during ramming are adjustable.\n\nThis is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." -msgstr "Il ramming è la rapida estrusione appena prima di un cambio di attrezzo in una stampante MM ad estrusore singolo. Lo scopo è di dare la forma corretta al capo del filamento scaricato cosicché non prevenga l'inserzione del nuovo filamento e perché possa essere inserito più facilmente esso stesso. Questa fase è importante e materiali diversi possono richiedere velocità diverse per ottenere la forma corretta. Per questo motivo le velocità di estrusione del ramming possono essere modificate.\n\nQuesta è un'impostazione per esperti, valori scorretti produrranno facilmente dei blocchi, o porteranno l'ingranaggio di estrusione a macinare il filamento etc." +msgid "" +"Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to properly shape the end of the unloaded filament so it does not prevent insertion of the new filament and can itself be reinserted later. This phase is important and different materials can require different extrusion speeds to get the good shape. For this reason, the extrusion rates during ramming are adjustable.\n" +"\n" +"This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." +msgstr "" +"Il ramming è la rapida estrusione appena prima di un cambio di attrezzo in una stampante MM ad estrusore singolo. Lo scopo è di dare la forma corretta al capo del filamento scaricato cosicché non prevenga l'inserzione del nuovo filamento e perché possa essere inserito più facilmente esso stesso. Questa fase è importante e materiali diversi possono richiedere velocità diverse per ottenere la forma corretta. Per questo motivo le velocità di estrusione del ramming possono essere modificate.\n" +"\n" +"Questa è un'impostazione per esperti, valori scorretti produrranno facilmente dei blocchi, o porteranno l'ingranaggio di estrusione a macinare il filamento etc." #: src/slic3r/GUI/WipeTowerDialog.cpp:91 msgid "Ramming line spacing" @@ -5643,27 +6712,27 @@ msgstr "Spaziatura tra linee di ramming" msgid "Ramming line width" msgstr "Larghezza della linea di Ramming" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:730 msgid "Ramming parameters" msgstr "Parametri del ramming" -#: src/slic3r/GUI/Tab.cpp:1505 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Ramming settings" msgstr "Impostazioni del ramming" -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "Random" msgstr "Casuale" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 msgid "Range" msgstr "Intervallo" -#: src/libslic3r/SLAPrintSteps.cpp:65 +#: src/libslic3r/SLAPrintSteps.cpp:66 msgid "Rasterizing layers" msgstr "Rasterizzazione dei layer" -#: src/slic3r/GUI/MainFrame.cpp:596 +#: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Re&load from disk" msgstr "R&icarica da disco" @@ -5675,210 +6744,243 @@ msgstr "Ri-configura" msgid "Ready" msgstr "Pronto" -#: src/slic3r/GUI/Plater.cpp:3115 +#: src/slic3r/GUI/Plater.cpp:2915 msgid "Ready to slice" msgstr "Pronto a processare" -#: src/slic3r/GUI/MainFrame.cpp:669 src/libslic3r/PrintConfig.cpp:1632 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Rear" msgstr "Posteriore" -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 msgid "Rear View" msgstr "Vista posteriore" -#: src/slic3r/GUI/MainFrame.cpp:413 +#: src/slic3r/GUI/MainFrame.cpp:994 msgid "Recent projects" msgstr "Prog&etti recenti" -#: src/slic3r/GUI/PresetHints.cpp:263 -#, possible-c-format +#: src/slic3r/GUI/PresetHints.cpp:262 +#, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "Spessore raccomandato per oggetto con parete sottile per altezza layer %.2f e" -#: src/slic3r/GUI/PresetHints.cpp:274 +#: src/slic3r/GUI/PresetHints.cpp:273 msgid "Recommended object thin wall thickness: Not available due to excessively small extrusion width." msgstr "Spessore raccomandato per oggetto con parete sottile: Non disponibile a causa di una larghezza di estrusione eccessivamente piccola." -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "Recommended object thin wall thickness: Not available due to invalid layer height." msgstr "Spessore raccomandato per oggetto con parete sottile: Non disponibile a causa di un'altezza layer non valida." -#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 msgid "Recreating" msgstr "Rigenerando" -#: src/slic3r/GUI/BedShapeDialog.cpp:73 +#: src/slic3r/GUI/BedShapeDialog.cpp:141 msgid "Rectangular" msgstr "Rettangolare" -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Rectilinear" msgstr "Rettilineo" -#: src/libslic3r/PrintConfig.cpp:2010 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Rectilinear grid" msgstr "Griglia rettilinea" -#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 -#: src/slic3r/GUI/MainFrame.cpp:584 +#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "Redo" msgstr "Ripeti" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 -#, possible-c-format +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 +#, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" msgstr[0] "Ripeti %1$d Azione" msgstr[1] "Ripeti %1$d Azioni" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Redo History" -msgstr "Storia Ripeti" +msgstr "Cronologia Ripeti" -#: src/slic3r/GUI/Tab.cpp:1098 +#: src/slic3r/GUI/Tab.cpp:1426 msgid "Reducing printing time" msgstr "Riduzione tempo di stampa" -#: src/slic3r/GUI/Plater.cpp:3452 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 +msgid "Refresh Printers" +msgstr "Aggiorna Stampanti" + +#: src/libslic3r/PrintConfig.cpp:145 +msgid "Related printer preset name" +msgstr "Nome del preset della stampante correlato" + +#: src/slic3r/GUI/Plater.cpp:3257 msgid "Reload all from disk" msgstr "Ricarica tutto da disco" -#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3225 -#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 +#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 msgid "Reload from disk" msgstr "Ricarica da Disco" -#: src/slic3r/GUI/Plater.cpp:3339 +#: src/slic3r/GUI/Plater.cpp:3142 msgid "Reload from:" msgstr "Ricarica da:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Reload plater from disk" msgstr "Ricarica piano da disco" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:1203 msgid "Reload the plater from disk" msgstr "Ricarica piano da disco" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:3881 msgid "Reload the selected object from disk" msgstr "Ricarica l'oggetto selezionato dal disco" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3934 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3852 msgid "Reload the selected volumes from disk" msgstr "Ricarica i volumi selezionati dal disco" -#: src/slic3r/GUI/Preferences.cpp:39 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Remaining time" +msgstr "Tempo rimanente" + +#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +msgid "Remember my choice" +msgstr "Ricorda la mia scelta" + +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Remember output directory" msgstr "Ricorda la directory di output" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/MainFrame.cpp:166 +msgid "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" +msgstr "Ricorda di controllare la presenza di aggiornamenti su https://github.com/prusa3d/PrusaSlicer/releases" + +#: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "rimuovi" -#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Remove" msgstr "Rimuovi" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 msgid "Remove all holes" msgstr "Rimuovi tutti i fori" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 msgid "Remove all points" msgstr "Rimuovi tutti i punti" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:35 +msgid "Remove all selection" +msgstr "Elimina tutte le selezioni" + +#: src/slic3r/GUI/GLCanvas3D.cpp:239 msgid "Remove detail" msgstr "Rimuovi dettagli" -#: src/slic3r/GUI/Plater.cpp:879 -msgid "Remove device" -msgstr "Rimuovi dispositivo" - #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182 msgid "Remove extruder from sequence" msgstr "Rimuovi estrusore dalla sequenza" -#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 src/slic3r/GUI/Plater.cpp:3860 msgid "Remove instance" msgstr "Rimuovi istanza" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 msgid "Remove Instance of the selected object" msgstr "Rimuovi Istanza dell'oggetto selezionato" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:161 msgid "Remove layer range" msgstr "Rimuovi intervallo layer" -#: src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/Plater.cpp:3860 msgid "Remove one instance of the selected object" msgstr "Rimuovi una istanza dell'oggetto selezionato" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:98 msgid "Remove parameter" msgstr "Rimuovi parametro" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Remove point" msgstr "Rimuovi punto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Remove point from selection" msgstr "Rimuovi punto dalla selezione" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 msgid "Remove selected holes" msgstr "Rimuovi i fori selezionati" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1371 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1218 msgid "Remove selected points" msgstr "Rimuovi punti selezionati" -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:34 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:368 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:378 +msgid "Remove selection" +msgstr "Elimina selezione" + +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 msgid "Remove the selected object" msgstr "Rimuovi l'oggetto selezionato" -#: src/slic3r/GUI/ConfigWizard.cpp:453 +#: src/slic3r/GUI/ConfigWizard.cpp:456 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "Rimuovere i profili utente (verrà effettuata un'istantanea prima di procedere)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1636 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 msgid "Rename" msgstr "Rinomina" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Object" msgstr "Rinomina oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Sub-object" msgstr "Rinomina sotto-oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Renaming" msgstr "Rinomina" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:115 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 msgid "Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again." msgstr "Non è stato possibile rinominare il G-code dopo la copia nella cartella di destinazione selezionata. Il percorso corrente è %1%.tmp. Prova a esportare di nuovo." -#: src/libslic3r/PrintConfig.cpp:3515 +#: src/slic3r/GUI/Preferences.cpp:255 +msgid "Render" +msgstr "Render" + +#: src/libslic3r/PrintConfig.cpp:3720 msgid "Render with a software renderer" msgstr "Eseguire il rendering con un software redender" -#: src/libslic3r/PrintConfig.cpp:3516 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." msgstr "Eseguire il rendering con un software redender. Viene caricato il software di rendering MESA integrato al posto del driver OpenGL predefinito ." -#: src/slic3r/GUI/MainFrame.cpp:911 src/libslic3r/PrintConfig.cpp:3447 +#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 msgid "Repair" msgstr "Ripara" @@ -5902,39 +7004,39 @@ msgstr "Il file 3MF non contiene alcun volume" msgid "Repairing model by the Netfabb service" msgstr "Riparare modello tramite servizio Netfabb" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat last quick slice" msgstr "Ripeti l'ultimo slice veloce" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat Last Quick Slice" msgstr "Ripeti l'ultimo slice veloce" -#: src/slic3r/GUI/Tab.cpp:3083 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 msgid "Replace?" msgstr "Sostituire?" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 msgid "Report an I&ssue" msgstr "&Segnala un problema" -#: src/slic3r/GUI/MainFrame.cpp:703 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 +#, c-format msgid "Report an issue on %s" msgstr "Segnala un problema su %s" -#: src/slic3r/Utils/PresetUpdater.cpp:713 -#, possible-c-format +#: src/slic3r/Utils/PresetUpdater.cpp:733 +#, c-format msgid "requires max. %s" msgstr "richiede max. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:710 -#, possible-c-format +#: src/slic3r/Utils/PresetUpdater.cpp:730 +#, c-format msgid "requires min. %s" msgstr "richiede min. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:705 -#, possible-c-format +#: src/slic3r/Utils/PresetUpdater.cpp:726 +#, c-format msgid "requires min. %s and max. %s" msgstr "richiede min. %s e max. %s" @@ -5942,270 +7044,300 @@ msgstr "richiede min. %s e max. %s" msgid "Rescan" msgstr "Ri-scansiona" -#: src/slic3r/GUI/Tab.cpp:1906 -msgid "Rescan serial ports" -msgstr "Scansiona nuovamente porte seriali" - -#: src/slic3r/GUI/GLCanvas3D.cpp:313 +#: src/slic3r/GUI/GLCanvas3D.cpp:299 msgid "Reset" msgstr "Reimposta" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1373 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 msgid "Reset clipping plane" -msgstr "Ripristina piano di ritaglio" +msgstr "Ripristina piano sezione" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:59 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:26 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 msgid "Reset direction" msgstr "Reset direzione" -#: src/slic3r/GUI/Plater.cpp:2723 +#: src/slic3r/GUI/Plater.cpp:2684 msgid "Reset Project" msgstr "Reimposta Progetto" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:372 msgid "Reset rotation" msgstr "Reimposta rotazione" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:394 msgid "Reset Rotation" msgstr "Reimposta rotazione" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:407 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409 msgid "Reset scale" msgstr "Reimposta scala" -#: src/slic3r/GUI/GLCanvas3D.cpp:252 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 +msgid "Reset selection" +msgstr "Reset selezione" + +#: src/slic3r/GUI/GLCanvas3D.cpp:243 msgid "Reset to base" msgstr "Ripristina alla base" -#: src/slic3r/GUI/Tab.cpp:2394 +#: src/slic3r/GUI/Tab.cpp:2564 msgid "Reset to Filament Color" msgstr "Ripristina colore Filamento" -#: src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "Resolution" msgstr "Risoluzione" -#: src/libslic3r/PrintConfig.cpp:1529 +#: src/libslic3r/PrintConfig.cpp:1637 msgid "Retract amount before wipe" msgstr "Retrai la quantità prima di pulire" -#: src/libslic3r/PrintConfig.cpp:1537 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Retract on layer change" msgstr "Retrai al cambio layer" -#: src/slic3r/GUI/Tab.cpp:1324 src/slic3r/GUI/Tab.cpp:1383 -#: src/slic3r/GUI/Tab.cpp:2370 +#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 +#: src/slic3r/GUI/Tab.cpp:2539 msgid "Retraction" msgstr "Retrazione" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "Retraction is not triggered when travel moves are shorter than this length." msgstr "La retrazione non è attivata quando i movimenti di spostamento sono più brevi di questa lunghezza." -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Retraction Length" msgstr "Lunghezza Retrazione" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Retraction Length (Toolchange)" msgstr "Lunghezza Retrazione (cambio attrezzo)" -#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 msgid "Retraction Speed" msgstr "Velocità di retrazione" -#: src/slic3r/GUI/Tab.cpp:2386 +#: src/slic3r/GUI/Tab.cpp:2555 msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" msgstr "Retrazione quando l'attrezzo è disabilitato (impostazioni avanzate per setup multi-estrusore)" -#: src/slic3r/GUI/GUI_Preview.cpp:254 +#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:1472 msgid "Retractions" msgstr "Retrazioni" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/Preferences.cpp:198 +msgid "Reverse direction of zoom with mouse wheel" +msgstr "Inversione della direzione dello zoom con la rotella del mouse" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +msgid "Revert conversion from imperial units" +msgstr "Invertire la conversione dalle unità imperiali" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right" msgstr "Destra" -#: src/slic3r/GUI/GUI_ObjectList.cpp:402 +#: src/slic3r/GUI/GUI_ObjectList.cpp:449 msgid "Right button click the icon to change the object printable property" msgstr "Fare clic con il pulsante destro del mouse sull'icona per modificare le proprietà dell'oggetto stampabile" -#: src/slic3r/GUI/GUI_ObjectList.cpp:396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:443 msgid "Right button click the icon to change the object settings" msgstr "Click destro sull'icona per cambiare le impostazioni dell'oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:359 +#: src/slic3r/GUI/GUI_ObjectList.cpp:406 msgid "Right button click the icon to fix STL through Netfabb" msgstr "Click destro sull'icona per riparare il file STL tramite Netfabb" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Right click" msgstr "Click destro" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:31 +msgid "Right mouse button" +msgstr "Tasto destro mouse" + +#: src/slic3r/GUI/GLCanvas3D.cpp:237 msgid "Right mouse button:" msgstr "Tasto destro mouse:" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right View" msgstr "Vista destra" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 -#: src/libslic3r/PrintConfig.cpp:3451 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:527 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:546 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Rotate" msgstr "Ruota" -#: src/libslic3r/PrintConfig.cpp:3456 +#: src/libslic3r/PrintConfig.cpp:3655 msgid "Rotate around X" msgstr "Ruota attorno ad X" -#: src/libslic3r/PrintConfig.cpp:3461 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Rotate around Y" msgstr "Ruota attorno ad Y" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 msgid "Rotate lower part upwards" msgstr "Capovolgi la parte inferiore" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Rotate selection 45 degrees CCW" msgstr "Ruota la selezione di 45° in senso antiorario" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Rotate selection 45 degrees CW" msgstr "Ruota la selezione di 45° in senso orario" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 -#: src/slic3r/GUI/Mouse3DController.cpp:304 -#: src/slic3r/GUI/Mouse3DController.cpp:321 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:309 msgid "Rotation" msgstr "Rotazione" -#: src/libslic3r/PrintConfig.cpp:3457 +#: src/libslic3r/PrintConfig.cpp:3656 msgid "Rotation angle around the X axis in degrees." msgstr "Angolo di rotazione attorno all'asse X in gradi." -#: src/libslic3r/PrintConfig.cpp:3462 +#: src/libslic3r/PrintConfig.cpp:3661 msgid "Rotation angle around the Y axis in degrees." msgstr "Angolo di rotazione sull'asse Y in gradi." -#: src/libslic3r/PrintConfig.cpp:3452 +#: src/libslic3r/PrintConfig.cpp:3651 msgid "Rotation angle around the Z axis in degrees." msgstr "Angolo di rotazione attorno all'asse Z in gradi." -#: src/slic3r/GUI/GUI_App.cpp:797 -#, possible-c-format +#: src/slic3r/GUI/GUI_App.cpp:1474 +#, c-format msgid "Run %s" msgstr "Run %s" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:128 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:478 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 msgid "Running post-processing scripts" msgstr "Esecuzione script di post produzione" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 -#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 -#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 +#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 +#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 +#: src/libslic3r/PrintConfig.cpp:2709 msgid "s" msgstr "s" -#: src/slic3r/GUI/MainFrame.cpp:481 src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end G-code" msgstr "Invia G-cod&e" -#: src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end to print" msgstr "Manda in stampa" -#. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3417 -#, possible-c-format +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:642 +msgid "Save" +msgstr "Salva" + +#: src/slic3r/GUI/SavePresetDialog.cpp:72 +#, c-format msgid "Save %s as:" msgstr "Salva %s come:" -#: src/slic3r/GUI/MainFrame.cpp:826 -#, possible-c-format +#: src/slic3r/GUI/MainFrame.cpp:1527 +#, c-format msgid "Save %s file as:" msgstr "Salva file %s come:" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1046 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Save changes?" msgstr "Salvare modifiche?" -#: src/libslic3r/PrintConfig.cpp:3386 +#: src/libslic3r/PrintConfig.cpp:3585 msgid "Save config file" msgstr "Salva file config" -#: src/slic3r/GUI/MainFrame.cpp:925 +#: src/slic3r/GUI/MainFrame.cpp:1626 msgid "Save configuration as:" msgstr "Salva configurazione come:" -#: src/libslic3r/PrintConfig.cpp:3387 +#: src/libslic3r/PrintConfig.cpp:3586 msgid "Save configuration to the specified file." msgstr "Salva configurazione nel file specificato." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:133 -#, possible-c-format +#: src/slic3r/GUI/Tab.cpp:203 +#, c-format msgid "Save current %s" msgstr "Salva le %s attuali" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "Save current project file" msgstr "Salva progetto corrente" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save current project file as" msgstr "Salvare il file del progetto corrente come" -#: src/slic3r/GUI/Plater.cpp:2604 +#: src/slic3r/GUI/Plater.cpp:2566 msgid "Save file as:" msgstr "Salva come:" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save G-code file as:" msgstr "Salva il file G-code come:" -#: src/slic3r/GUI/MainFrame.cpp:899 +#: src/slic3r/GUI/MainFrame.cpp:1600 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Salva il file OBJ (meno soggetto a errori di coordinate dell'STL) come:" -#: src/slic3r/GUI/Tab.hpp:443 +#: src/slic3r/GUI/SavePresetDialog.cpp:190 +#: src/slic3r/GUI/SavePresetDialog.cpp:196 msgid "Save preset" msgstr "Salva preset" -#: src/slic3r/GUI/MainFrame.cpp:980 +#: src/slic3r/GUI/MainFrame.cpp:1681 msgid "Save presets bundle as:" msgstr "Salva il gruppo di preset come:" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save Project &as" msgstr "Salv&a Progetto come" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Save project (3mf)" msgstr "Salva progetto (3mf)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 msgid "Save project as (3mf)" msgstr "Salva progetto come (3mf)" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save SL1 file as:" msgstr "Salva file SL1 come:" -#: src/slic3r/GUI/MainFrame.cpp:838 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 +msgid "Save the selected options to preset \"%1%\"." +msgstr "Salva le opzioni selezionate nel preset \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Save the selected options." +msgstr "Salvare le opzioni selezionate." + +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "Save zip file as:" msgstr "Salva file zip come:" @@ -6215,211 +7347,246 @@ msgstr "Salva file zip come:" msgid "Saving mesh into the 3MF container failed." msgstr "Il salvataggio della rete nel contenitore 3MF non è riuscito." -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 -#: src/libslic3r/PrintConfig.cpp:3466 +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:78 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:238 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:547 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "Scale" msgstr "Ridimensiona" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "Fattore di scala" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 -msgid "Scale selection to fit print volume\nin Gizmo scale" -msgstr "Ridimensiona la selezione per riempire il volume di stampa\nnel Gizmo Ridimensiona" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale the selected object to fit the print volume" msgstr "Ridimensiona l'oggetto selezionato per entrare nel volume di stampa" -#: src/libslic3r/PrintConfig.cpp:3475 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Scale to Fit" msgstr "Ridimensiona per riempire" -#: src/slic3r/GUI/Selection.cpp:939 +#: src/slic3r/GUI/Selection.cpp:988 msgid "Scale To Fit" msgstr "Ridimensiona per adattare" -#: src/libslic3r/PrintConfig.cpp:3476 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Scale to fit the given volume." msgstr "Ridimensiona per adattare al volume dato." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale to print volume" msgstr "Ridimensiona a volume di stampa" -#: src/libslic3r/PrintConfig.cpp:3467 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scaling factor or percentage." msgstr "Fattore di scala o percentuale." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:505 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Programmazione del caricamento su `%1%`. Vedere finestra -> Coda di caricamento Host di Stampa" -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 +msgid "Seam painting" +msgstr "Pittura giunzione" + +#: src/libslic3r/PrintConfig.cpp:1729 msgid "Seam position" msgstr "Posizione giunzioni" -#: src/libslic3r/PrintConfig.cpp:1642 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Seam preferred direction" msgstr "Direzione preferita giunzione" -#: src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:1759 msgid "Seam preferred direction jitter" msgstr "Direzione preferita giunzione jitter" +#: src/slic3r/GUI/MainFrame.cpp:1207 +msgid "Searc&h" +msgstr "Cerca" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 +msgid "Search" +msgstr "Cerca" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +msgid "Search in English" +msgstr "Cerca in inglese" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "Search in settings" +msgstr "Cerca nelle impostazioni" + +#: src/slic3r/GUI/Tab.cpp:222 +msgid "Search in settings [%1%]" +msgstr "Cerca nelle impostazioni [%1%]" + #: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "Ricerca dispositivi" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:41 msgid "Searching for optimal orientation" msgstr "Ricerca orientamento ottimale" -#: src/slic3r/GUI/GUI_App.cpp:1103 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "See more." +msgstr "Vedi altro." + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "See Releases page." +msgstr "Vedi la pagina dei rilasci." + +#: src/slic3r/GUI/GUI_App.cpp:1895 msgid "Select a gcode file:" msgstr "Seleziona un file gcode:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Select all objects" msgstr "Seleziona tutti gli oggetti" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1370 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1217 msgid "Select all points" msgstr "Seleziona tutti i punti" -#: src/slic3r/GUI/ConfigWizard.cpp:1976 +#: src/slic3r/GUI/ConfigWizard.cpp:2487 msgid "Select all standard printers" msgstr "Seleziona tutte le stampanti standard" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Seleziona con rettangolo" -#: src/slic3r/GUI/MainFrame.cpp:944 src/slic3r/GUI/MainFrame.cpp:1006 +#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 msgid "Select configuration to load:" msgstr "Seleziona configurazione da caricare:" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:88 msgid "Select coordinate space, in which the transformation will be performed." msgstr "Seleziona le coordinate spaziali in cui verrà eseguita la trasformazione." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3971 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 msgid "Select extruder number:" msgstr "Seleziona l'estrusore numero:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Select Filament Settings Tab" msgstr "Attiva Scheda impostazioni di Filamento" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Select Plater Tab" msgstr "Seleziona scheda piano" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Select Print Settings Tab" msgstr "Attiva Scheda Impostazioni di Stampa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Select Printer Settings Tab" msgstr "Attiva Scheda Impostazioni Stampante" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1265 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 msgid "Select showing settings" msgstr "Seleziona le impostazioni mostrate" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Select the language" msgstr "Seleziona la lingua" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:108 msgid "Select the print profiles this profile is compatible with." msgstr "Seleziona i profili di stampa compatibili con questo profilo." -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:102 msgid "Select the printers this profile is compatible with." msgstr "Seleziona le stampanti compatibili con questo profilo." -#: src/slic3r/GUI/MainFrame.cpp:889 +#: src/slic3r/GUI/MainFrame.cpp:1590 msgid "Select the STL file to repair:" msgstr "Seleziona il file STL da riparare:" -#: src/slic3r/GUI/Preferences.cpp:237 +#: src/slic3r/GUI/Preferences.cpp:391 msgid "Select toolbar icon size in respect to the default one." msgstr "Seleziona la dimensione delle icone della barra degli strumenti rispetto a quella predefinita." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Select type of part" msgstr "Seleziona il tipo di parte" -#: src/slic3r/GUI/Plater.cpp:638 +#: src/slic3r/GUI/Plater.cpp:504 msgid "Select what kind of pad do you need" msgstr "Seleziona il tipo di Pad richiesto" -#: src/slic3r/GUI/Plater.cpp:498 +#: src/slic3r/GUI/Plater.cpp:364 msgid "Select what kind of support do you need" msgstr "Seleziona il tipo di supporto richiesto" -#: src/slic3r/GUI/DoubleSlider.cpp:1917 -msgid "Select YES if you want to delete all saved tool changes, \nNO if you want all tool changes switch to color changes, \nor CANCEL to leave it unchanged." -msgstr "Seleziona SI se vuoi cancellare tutti i cambi attrezzo salvati,\nNO se vuoi che tutti i cambi attrezzo passino a cambi colore,\no ANNULLA per lasciarlo invariato." +#: src/slic3r/GUI/DoubleSlider.cpp:2135 +msgid "" +"Select YES if you want to delete all saved tool changes, \n" +"NO if you want all tool changes switch to color changes, \n" +"or CANCEL to leave it unchanged." +msgstr "" +"Seleziona SI se vuoi cancellare tutti i cambi attrezzo salvati,\n" +"NO se vuoi che tutti i cambi attrezzo passino a cambi colore,\n" +"o ANNULLA per lasciarlo invariato." -#: src/slic3r/GUI/Selection.cpp:146 +#: src/slic3r/GUI/Selection.cpp:191 msgid "Selection-Add" msgstr "Selezione-Aggiungi" -#: src/slic3r/GUI/Selection.cpp:376 +#: src/slic3r/GUI/Selection.cpp:421 msgid "Selection-Add All" msgstr "Selezione-Aggiungi tutti" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3299 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 msgid "Selection-Add from list" msgstr "Aggiungi selezione da elenco" -#: src/slic3r/GUI/GLCanvas3D.cpp:6598 +#: src/slic3r/GUI/GLCanvas3D.cpp:7193 msgid "Selection-Add from rectangle" msgstr "Aggiungi Selezione da rettangolo" -#: src/slic3r/GUI/Selection.cpp:256 +#: src/slic3r/GUI/Selection.cpp:301 msgid "Selection-Add Instance" msgstr "Selezione-Aggiungi istanza" -#: src/slic3r/GUI/Selection.cpp:219 +#: src/slic3r/GUI/Selection.cpp:264 msgid "Selection-Add Object" msgstr "Selezione-Aggiungi Oggetto" -#: src/slic3r/GUI/Selection.cpp:187 +#: src/slic3r/GUI/Selection.cpp:232 msgid "Selection-Remove" msgstr "Selezione-Rimuovi" -#: src/slic3r/GUI/Selection.cpp:402 +#: src/slic3r/GUI/Selection.cpp:447 msgid "Selection-Remove All" msgstr "Selezione-Rimuovi tutti" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3291 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 msgid "Selection-Remove from list" msgstr "Rimozione Selezione dall'elenco" -#: src/slic3r/GUI/GLCanvas3D.cpp:6617 +#: src/slic3r/GUI/GLCanvas3D.cpp:7212 msgid "Selection-Remove from rectangle" msgstr "Rimuovi selezione da rettangolo" -#: src/slic3r/GUI/Selection.cpp:275 +#: src/slic3r/GUI/Selection.cpp:320 msgid "Selection-Remove Instance" msgstr "Selezione-Rimuovi istanza" -#: src/slic3r/GUI/Selection.cpp:238 +#: src/slic3r/GUI/Selection.cpp:283 msgid "Selection-Remove Object" msgstr "Selezione-Rimuovi oggetto" -#: src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Selects all objects" msgstr "Seleziona tutti gli oggetti" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 msgid "Send G-code" msgstr "Invia G-code" @@ -6427,29 +7594,29 @@ msgstr "Invia G-code" msgid "Send G-Code to printer host" msgstr "Invia G-code all’host stampante" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:1072 msgid "Send to print current plate as G-code" msgstr "Manda alla stampante il piano corrente come G-Code" -#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 msgid "Send to printer" msgstr "Manda alla stampante" -#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +#: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Seq." -#: src/slic3r/GUI/Tab.cpp:1231 +#: src/slic3r/GUI/Tab.cpp:1561 msgid "Sequential printing" msgstr "Stampa sequenziale" -#: src/slic3r/GUI/Tab.cpp:1901 src/libslic3r/PrintConfig.cpp:1661 -msgid "Serial port" -msgstr "Porta seriale" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +msgid "Sequential Slider" +msgstr "Slider Sequenziale" -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Velocità porta seriale" +#: src/slic3r/GUI/Preferences.cpp:230 +msgid "Sequential slider applied only to top layer" +msgstr "Cursore sequenziale applicato solo sullo strato superiore" #: src/slic3r/GUI/FirmwareDialog.cpp:807 msgid "Serial port:" @@ -6459,17 +7626,16 @@ msgstr "Porta seriale:" msgid "Service name" msgstr "Nome servizio" -#: src/slic3r/GUI/Tab.cpp:1802 src/slic3r/GUI/Tab.cpp:2046 -#: src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 msgid "Set" msgstr "Imposta" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Object" msgstr "Imposta come Oggetto Separato" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Objects" msgstr "Imposta come Oggetti Separati" @@ -6477,7 +7643,7 @@ msgstr "Imposta come Oggetti Separati" msgid "Set extruder change for every" msgstr "Imposta il cambio estrusore per ogni" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Set extruder for selected items" msgstr "Imposta estrusore per gli elementi selezionati" @@ -6485,7 +7651,7 @@ msgstr "Imposta estrusore per gli elementi selezionati" msgid "Set extruder sequence" msgstr "Imposta sequenza estrusore" -#: src/slic3r/GUI/DoubleSlider.cpp:1532 +#: src/slic3r/GUI/DoubleSlider.cpp:1728 msgid "Set extruder sequence for the entire print" msgstr "Imposta sequenza estrusore per l'intera stampa" @@ -6493,84 +7659,84 @@ msgstr "Imposta sequenza estrusore per l'intera stampa" msgid "Set extruder(tool) sequence" msgstr "Imposta sequenza estrusore(attrezzo)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Imposta il cursore inferiore alla barra di scorrimento attuale" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 msgid "Set Mirror" msgstr "Imposta specchio" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Set number of instances" msgstr "Imposta numero di istanze" -#: src/slic3r/GUI/Plater.cpp:4756 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:4860 +#, c-format msgid "Set numbers of copies to %d" msgstr "Imposta il numero di copie a %d" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:828 msgid "Set Orientation" msgstr "Imposta orientamento" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:797 msgid "Set Position" msgstr "Imposta posizione" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Printable" msgstr "Imposta stampabile" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Printable Instance" msgstr "Imposta Istanza Stampabile" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:893 msgid "Set Scale" msgstr "Imposta scala" -#: src/libslic3r/PrintConfig.cpp:2393 +#: src/libslic3r/PrintConfig.cpp:2536 msgid "Set the actual LCD display orientation inside the SLA printer. Portrait mode will flip the meaning of display width and height parameters and the output images will be rotated by 90 degrees." msgstr "Imposta l'orientamento effettivo del display LCD nella stampante SLA. La modalità Ritratto invertirà i valori di altezza e larghezza del display, e le immagini di output saranno ruotate di 90 gradi." -#: src/slic3r/GUI/ConfigWizard.cpp:932 +#: src/slic3r/GUI/ConfigWizard.cpp:1298 msgid "Set the shape of your printer's bed." msgstr "Imposta la dimensione del piano della stampante." -#: src/libslic3r/PrintConfig.cpp:556 +#: src/libslic3r/PrintConfig.cpp:592 msgid "Set this to a non-zero value to allow a manual extrusion width. If left to zero, Slic3r derives extrusion widths from the nozzle diameter (see the tooltips for perimeter extrusion width, infill extrusion width etc). If expressed as percentage (for example: 230%), it will be computed over layer height." msgstr "Imposta questo valore diverso da zero per permettere la larghezza estrusione manuale. Se lasciato a zero, Slic3r ricava la larghezza d'estrusione dal diametro dell'ugello (vedi il suggerimento per la larghezza di estrusione perimetro,larghezza estrusione riempimento ecc.). Se espresso in percentuale (ad esempio 230%), sarà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:448 +#: src/libslic3r/PrintConfig.cpp:484 msgid "Set this to a non-zero value to set a manual extrusion width for external perimeters. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%), it will be computed over layer height." msgstr "Imposta questo valore diverso da zero per impostare una larghezza d'estrusione manuale per i perimetri esterni. Se lasciato a zero, verrà utilizzata la larghezza predefinita se impostata; diversamente verrà utilizzato il valore 1.125 x il diametro dell'ugello. Se espresso in percentuale (per esempio 200%), sarà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:878 +#: src/libslic3r/PrintConfig.cpp:920 msgid "Set this to a non-zero value to set a manual extrusion width for first layer. You can use this to force fatter extrudates for better adhesion. If expressed as percentage (for example 120%) it will be computed over first layer height. If set to zero, it will use the default extrusion width." msgstr "Imposta questo valore diverso da zero per impostare la larghezza di estrusione manuale per il primo layer. Puoi usarlo per forzare un'estrusione più grossa per avere un'adesione migliore. Se espresso in percentuale (per esempio 120%) sarà calcolato sull'altezza del primo layer. Se impostato a zero, sarà utilizzata la larghezza di estrusione predefinita." -#: src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:1873 msgid "Set this to a non-zero value to set a manual extrusion width for infill for solid surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Imposta questo valore diverso da zero per impostare una larghezza d'estrusione manuale per il riempimento delle superfici solide. Se lasciato a zero, verrà usata la larghezza d'estrusione predefinita, altrimenti verrà utilizzato il valore 1.125 x il diametro dell'ugello. Se espresso in percentuale (per esempio 90%) verrà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2250 msgid "Set this to a non-zero value to set a manual extrusion width for infill for top surfaces. You may want to use thinner extrudates to fill all narrow regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Imposta questo valore diverso da zero per impostare una larghezza d'estrusione manuale per il riempimento delle superfici superiori. Dovresti scegliere un'estrusione più sottile per riempire gli spazi stretti ed ottenere una finitura più liscia. Se lasciato a zero, verrà usata la larghezza d'estrusione predefinita, altrimenti verrà utilizzato il valore 1.125 x il diametro dell'ugello. Se espresso in percentuale (per esempio 90%) verrà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:1011 +#: src/libslic3r/PrintConfig.cpp:1055 msgid "Set this to a non-zero value to set a manual extrusion width for infill. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. You may want to use fatter extrudates to speed up the infill and make your parts stronger. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Imposta questo valore diverso da zero per impostare una larghezza d'estrusione manuale per il riempimento. Se lasciato a zero, verrà usata la larghezza d'estrusione predefinita, altrimenti verrà utilizzato il valore 1.125 x il diametro dell'ugello. Dovresti usare un estrusione più grossa per velocizzare la stampa del riempimento e rendere le tue parti più robuste. Se espresso in percentuale (per esempio 90%) verrà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:1419 +#: src/libslic3r/PrintConfig.cpp:1527 msgid "Set this to a non-zero value to set a manual extrusion width for perimeters. You may want to use thinner extrudates to get more accurate surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%) it will be computed over layer height." msgstr "Imposta questo valore diverso da zero per impostare una larghezza d'estrusione manuale per i perimetri. Dovresti scegliere un'estrusione più sottile per ottenere superfici più precise. Se lasciato a zero, verrà usata la larghezza d'estrusione predefinita, altrimenti verrà utilizzato il valore 1.125 x il diametro dell'ugello. Se espresso in percentuale (per esempio 200%) verrà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:2090 msgid "Set this to a non-zero value to set a manual extrusion width for support material. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." msgstr "Imposta questo valore diverso da zero per impostare una larghezza d'estrusione manuale per il supporto. Se lasciato a zero, verrà usata la larghezza d'estrusione predefinita., altrimenti verrà utilizzato il valore del diametro dell'ugello. Se espresso in percentuale (per esempio 90%) verrà calcolato sull'altezza del layer." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:548 msgid "Set this to the clearance radius around your extruder. If the extruder is not centered, choose the largest value for safety. This setting is used to check for collisions and to display the graphical preview in the plater." msgstr "Imposta il raggio di spazio attorno all'estrusore. Se l'estrusore non è centrato, scegli il valore più grande per sicurezza. Questa impostazione è usata per controllare le collisioni e per mostrare l'anteprima grafica nel piano." @@ -6578,83 +7744,98 @@ msgstr "Imposta il raggio di spazio attorno all'estrusore. Se l'estrusore non è msgid "Set this to the maximum height that can be reached by your extruder while printing." msgstr "Impostate alla massima altezza che può essere raggiunta dal vostro estrusore durante la stampa." -#: src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:537 msgid "Set this to the vertical distance between your nozzle tip and (usually) the X carriage rods. In other words, this is the height of the clearance cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." msgstr "Imposta la distanza verticale tra la punta dell'ugello e (solitamente) le barre del carrello X. In altre parole, questa è l'altezza dello spazio cilindrico attorno l'estrusore, e indica la profondità massima che l'estrusore può affacciarsi prima di sbattere con altri oggetti stampati." -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Unprintable" msgstr "Imposta non stampabile" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Unprintable Instance" msgstr "Imposta Istanza non stampabile" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Imposta il cursore superiore alla barra di scorrimento attuale" -#: src/libslic3r/PrintConfig.cpp:3509 -msgid "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\nFor example. loglevel=2 logs fatal, error and warning level messages." -msgstr "Imposta la sensibilità di log. 0:fatale, 1:errore, 2:avviso, 3:informazioni, 4:debug, 5:traccia\nPer esempio. loglevel=2 registra messaggi fatali, di errore e di avviso." +#: src/libslic3r/PrintConfig.cpp:3714 +msgid "" +"Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" +"For example. loglevel=2 logs fatal, error and warning level messages." +msgstr "" +"Imposta la sensibilità di log. 0:fatale, 1:errore, 2:avviso, 3:informazioni, 4:debug, 5:traccia\n" +"Per esempio. loglevel=2 registra messaggi fatali, di errore e di avviso." -#: src/slic3r/GUI/BedShapeDialog.cpp:155 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 msgid "Settings" msgstr "Impostazioni" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Settings for height range" msgstr "Impostazioni per intervallo altezza" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/Preferences.cpp:431 +msgid "Settings in non-modal window" +msgstr "Impostazioni nella finestra non modale" + +#: src/slic3r/GUI/ConfigManipulation.cpp:161 msgid "Shall I adjust those settings for supports?" msgstr "Vuoi che regoli queste impostazioni per i supporti?" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:88 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "Vuoi che modifichi queste impostazioni per poter attivare il Vaso a Spirale?" -#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:118 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "Vuoi che modifichi queste impostazioni per poter attivare la Torre di Spurgo?" -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:209 msgid "Shall I switch to rectilinear fill pattern?" msgstr "Devo passare alla trama di riempimento rettilinea?" -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:138 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "Devo sincronizzare i supporti layer in modo da poter attivare la Torre di Spurgo?" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2059 +#: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 msgid "Shape" msgstr "Forma" -#: src/slic3r/GUI/GUI_Preview.cpp:256 +#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 msgid "Shells" msgstr "Gusci" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:33 +msgid "Shift + Left mouse button" +msgstr "Shift + Tasto sinistro mouse" + +#: src/slic3r/GUI/GLCanvas3D.cpp:241 msgid "Shift + Left mouse button:" msgstr "Shift + Tasto sinistro mouse:" -#: src/slic3r/GUI/GLCanvas3D.cpp:255 +#: src/slic3r/GUI/GLCanvas3D.cpp:245 msgid "Shift + Right mouse button:" msgstr "Shift + Tasto destro mouse:" -#: src/slic3r/GUI/GUI_Preview.cpp:231 +#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 msgid "Show" msgstr "Mostra" -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show &Configuration Folder" msgstr "Mostra Cartella &Configurazione" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show &labels" msgstr "Mostra &etichette" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "Show about dialog" msgstr "Mostra la finestra di informazioni" @@ -6662,543 +7843,593 @@ msgstr "Mostra la finestra di informazioni" msgid "Show advanced settings" msgstr "Mostra impostazioni avanzate" -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Mostra messaggio d'errore" -#: src/slic3r/GUI/Preferences.cpp:95 +#: src/slic3r/GUI/Preferences.cpp:112 msgid "Show incompatible print and filament presets" msgstr "Mostra preset di stampa e di filamento incompatibili" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "Show keyboard shortcuts list" msgstr "Mostra elenco scorciatoie di tastiera" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 +msgid "Show normal mode" +msgstr "Mostra modalità normale" + +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show object/instance labels in 3D scene" msgstr "Mostra nella scena 3D le etichette dell'oggetto/istanza" +#: src/slic3r/GUI/Preferences.cpp:213 +msgid "Show sidebar collapse/expand button" +msgstr "Mostra il pulsante di riduci/espandi barra laterale" + #: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show simplified settings" msgstr "Mostra impostazioni semplificate" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +msgid "Show splash screen" +msgstr "Mostra splash screen" + +#: src/slic3r/GUI/GCodeViewer.cpp:2586 +msgid "Show stealth mode" +msgstr "Mostra modalità silenziosa" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 msgid "Show supports" msgstr "Mostra supporti" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "Show system information" msgstr "Mostra informazioni di sistema" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Show the 3D editing view" msgstr "Mostra la Vista modifica 3D" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Show the 3D slices preview" msgstr "Mostra anteprima slice 3D" -#: src/slic3r/GUI/MainFrame.cpp:617 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Show the filament settings" msgstr "Mostra impostazioni filamento" -#: src/libslic3r/PrintConfig.cpp:3372 +#: src/libslic3r/PrintConfig.cpp:3571 msgid "Show the full list of print/G-code configuration options." msgstr "Mostra l'elenco completo delle opzioni di configurazione stampa/G-code." -#: src/libslic3r/PrintConfig.cpp:3377 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Show the full list of SLA print configuration options." msgstr "Mostra la lista completa delle opzioni di configurazione di stampa SLA." -#: src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 msgid "Show the list of the keyboard shortcuts" msgstr "Mostra l'elenco delle scorciatoie di tastiera" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Show the plater" msgstr "Mostra il piano" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Show the print settings" msgstr "Mostra impostazioni di stampa" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Show the printer settings" msgstr "Mostra impostazioni della stampante" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3565 msgid "Show this help." msgstr "Mostra questo aiuto." -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show user configuration folder (datadir)" msgstr "Mostra cartella configurazione utente (datadir)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Mostra/Nascondi finestra delle impostazioni dei dispositivi 3Dconnexion" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -msgid "Show/Hide Legend" -msgstr "Mostra/Nascondi Legenda" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Show/Hide Legend & Estimated printing time" +msgstr "Mostra/Nascondi Legenda & Stima del tempo di stampa" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Show/Hide object/instance labels" msgstr "Mostra/Nascondi etichette dell'oggetto/istanza" -#: src/slic3r/GUI/GUI_App.cpp:813 src/slic3r/GUI/wxExtensions.cpp:753 +#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "Semplice" -#: src/slic3r/GUI/ConfigWizard.cpp:820 +#: src/slic3r/GUI/ConfigWizard.cpp:1179 msgid "Simple mode" msgstr "Modalità Semplice" -#: src/slic3r/GUI/GUI_App.cpp:813 +#: src/slic3r/GUI/GUI_App.cpp:1504 msgid "Simple View Mode" msgstr "Modalità di visualizzazione semplice" -#: src/slic3r/GUI/Tab.cpp:2298 src/slic3r/GUI/Tab.cpp:2306 +#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 msgid "Single extruder MM setup" msgstr "Setup Estrusore singolo MM" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "Single Extruder Multi Material" msgstr "Estrusore singolo Multi Material" -#: src/slic3r/GUI/Tab.cpp:1867 -msgid "Single Extruder Multi Material is selected, \nand all extruders must have the same diameter.\nDo you want to change the diameter for all extruders to first extruder nozzle diameter value?" -msgstr "Materiale multiplo a singolo estrusore selezionato,\ntutti gli estrusori devono avere lo stesso diametro.\nVuoi modificare il diametro di tutti gli estrusori al valore del diametro dell'ugello del primo estrusore?" +#: src/slic3r/GUI/Tab.cpp:2101 +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder nozzle diameter value?" +msgstr "" +"Materiale multiplo a singolo estrusore selezionato,\n" +"tutti gli estrusori devono avere lo stesso diametro.\n" +"Vuoi modificare il diametro di tutti gli estrusori al valore del diametro dell'ugello del primo estrusore?" -#: src/slic3r/GUI/Tab.cpp:2307 +#: src/slic3r/GUI/Tab.cpp:2476 msgid "Single extruder multimaterial parameters" msgstr "Parametri estrusore singolo materiale multiplo" -#: src/slic3r/GUI/BedShapeDialog.cpp:77 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 -#: src/slic3r/GUI/Tab.cpp:2324 +#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3689 +msgid "Single instance mode" +msgstr "Modalità a istanza singola" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:2493 msgid "Size" msgstr "Dimensioni" -#: src/slic3r/GUI/Tab.cpp:1797 src/slic3r/GUI/Tab.cpp:2041 +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 msgid "Size and coordinates" msgstr "Dimensione e coordinate" -#: src/slic3r/GUI/BedShapeDialog.cpp:78 +#: src/slic3r/GUI/BedShapeDialog.cpp:110 msgid "Size in X and Y of the rectangular plate." msgstr "Dimensioni X e Y del piano rettangolare." -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1111 -#: src/libslic3r/ExtrusionEntity.cpp:318 +#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 msgid "Skirt" msgstr "Skirt" -#: src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Skirt and brim" msgstr "Skirt e brim" -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "Skirt height" msgstr "Altezza skirt" -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Skirt Loops" msgstr "Giri skirt" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1334 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1181 msgid "SLA gizmo keyboard shortcuts" msgstr "Scorciatoie di tastiera gizmo SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1058 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:924 msgid "SLA gizmo turned off" msgstr "Gizmo SLA disattivato" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1017 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 msgid "SLA gizmo turned on" msgstr "Gizmo SLA attivato" -#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1524 +#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 msgid "SLA material" msgstr "Materiale SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Material Profiles Selection" msgstr "Selezione Profili Materiale SLA" -#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2613 src/libslic3r/PrintConfig.cpp:2614 msgid "SLA material type" msgstr "Tipo materiale SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Materials" msgstr "Materiali SLA" -#: src/slic3r/GUI/Preset.cpp:1523 +#: src/libslic3r/Preset.cpp:1302 msgid "SLA print" msgstr "Stampa SLA" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "SLA print material notes" msgstr "Note sul materiale di stampa SLA" -#: src/slic3r/GUI/Plater.cpp:817 +#: src/slic3r/GUI/Plater.cpp:692 msgid "SLA print settings" msgstr "Impostazioni di stampa SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:996 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 msgid "SLA Support Points" msgstr "Punti di Supporto SLA" -#: src/slic3r/GUI/GLCanvas3D.cpp:687 -msgid "SLA supports outside the print area were detected" -msgstr "Sono stati rilevati supporti SLA al di fuori dell'area di stampa" +#: src/slic3r/GUI/GLCanvas3D.cpp:635 +msgid "SLA supports outside the print area were detected." +msgstr "Sono stati rilevati supporti SLA al di fuori dell'area di stampa ." -#: src/slic3r/GUI/ConfigWizard.cpp:1530 +#: src/slic3r/GUI/ConfigWizard.cpp:1931 msgid "SLA Technology Printers" msgstr "Stampanti con tecnologia SLA" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Slab" msgstr "Lastra" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." msgstr "Slic3r può caricare il file G-code ad un host stampante. Questo campo deve contenere il tipo di host." -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:107 msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." msgstr "Slic3r può caricare i file G-code su un host di stampa. Questo campo deve contenere la chiave API o la password richiesta per l'autenticazione." -#: src/libslic3r/PrintConfig.cpp:98 +#: src/libslic3r/PrintConfig.cpp:100 msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance." msgstr "Slic3r può caricare i file G-code su un host della stampante. Questo campo dovrebbe contenere il nome host, l'indirizzo IP o URL dell'istanza dell'host della stampante." -#: src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1407 msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r non rallenterà la velocità al di sotto di questa." -#: src/libslic3r/PrintConfig.cpp:3359 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Slice" msgstr "Processa" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Slice a file into a G-code" msgstr "Processa un file in G-code" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Slice a file into a G-code, save as" msgstr "Processa un file in G-code, salva come" -#: src/libslic3r/PrintConfig.cpp:87 +#: src/libslic3r/PrintConfig.cpp:89 msgid "Slice gap closing radius" msgstr "Gap closing radius per slicing" -#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5110 +#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5237 msgid "Slice now" msgstr "Processa ora" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Effettua lo slice del modello ed esporta i layer di stampa SLA come PNG." -#: src/libslic3r/PrintConfig.cpp:3354 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Slice the model and export toolpaths as G-code." msgstr "Effettua slice del modello ed esporta il percorso come G-code." -#: src/libslic3r/PrintConfig.cpp:3360 +#: src/libslic3r/PrintConfig.cpp:3559 msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." msgstr "Effettua lo slice del modello come FFF o SLA in base al valore di configurazione di printer_technology." -#: src/slic3r/GUI/Plater.cpp:216 +#: src/slic3r/GUI/Plater.cpp:222 msgid "Sliced Info" msgstr "Informazioni processo" -#: src/slic3r/GUI/MainFrame.cpp:847 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5107 src/slic3r/GUI/Tab.cpp:1221 -#: src/slic3r/GUI/Tab.cpp:3662 +#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 +#: src/slic3r/GUI/Tab.cpp:4081 msgid "Slicing" msgstr "Slicing" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:134 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:184 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 msgid "Slicing complete" msgstr "Slicing completato" -#: src/libslic3r/SLAPrint.cpp:760 +#: src/libslic3r/SLAPrint.cpp:780 msgid "Slicing done" msgstr "Slicing completato" -#: src/slic3r/GUI/MainFrame.cpp:874 +#: src/slic3r/GUI/MainFrame.cpp:1575 msgid "Slicing Done!" msgstr "Slicing Completato!" -#: src/libslic3r/SLAPrintSteps.cpp:245 +#: src/slic3r/GUI/NotificationManager.cpp:751 +msgid "Slicing finished." +msgstr "Slicing completato." + +#: src/libslic3r/SLAPrintSteps.cpp:247 msgid "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "Lo slicing è stato interrotto a causa di un errore interno: Indice di slice inconsistente." -#: src/libslic3r/SLAPrintSteps.cpp:45 +#: src/libslic3r/SLAPrintSteps.cpp:46 msgid "Slicing model" -msgstr "Slice modello" +msgstr "Slicing del modello" -#: src/libslic3r/SLAPrintSteps.cpp:49 +#: src/libslic3r/SLAPrintSteps.cpp:50 msgid "Slicing supports" msgstr "Supporti di Slicing" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Slow" msgstr "Lento" -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "Slow down if layer print time is below" -msgstr "Rallenta se il tempo di stampa del layer è inferiore" +msgstr "Rallenta se il tempo di stampa del layer è inferiore a" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "Slow tilt" msgstr "Inclinazione lenta" -#: src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Small perimeters" msgstr "Perimetri piccoli" -#: src/slic3r/GUI/GLCanvas3D.cpp:288 +#: src/libslic3r/PrintConfig.cpp:2801 +msgid "Small pillar diameter percent" +msgstr "Percentuale di diametro del pilastro piccolo" + +#: src/slic3r/GUI/GLCanvas3D.cpp:274 msgid "Smooth" msgstr "Leviga" -#: src/slic3r/GUI/GLCanvas3D.cpp:258 +#: src/slic3r/GUI/GLCanvas3D.cpp:247 msgid "Smoothing" msgstr "Levigatura" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Snapshot name" msgstr "Nome istantanea" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Software &Releases" msgstr "Ve&rsioni Software" -#: src/slic3r/GUI/PresetHints.cpp:184 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "riempimento solido" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1882 msgid "Solid infill" msgstr "Riempimento solido" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1859 msgid "Solid infill every" msgstr "Riempimento solido ogni" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Solid infill extruder" msgstr "Estrusore riempimento solido" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill threshold area" msgstr "Area soglia riempimento solido" -#: src/slic3r/GUI/Tab.cpp:1065 src/libslic3r/PrintConfig.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 msgid "Solid layers" msgstr "Layer solidi" -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:790 msgid "Soluble material" msgstr "Materiale solubile" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Soluble material is most likely used for a soluble support." msgstr "Il materiale solubile è comunemente usato per un supporto solubile." -#: src/libslic3r/PrintConfig.cpp:937 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:735 +msgid "Some fields are too long to fit. Right mouse click reveals the full text." +msgstr "Alcuni campi sono troppo lunghi per adattarsi. Cliccando con il tasto destro del mouse si visualizza il testo completo." + +#: src/libslic3r/PrintConfig.cpp:981 msgid "Some G/M-code commands, including temperature control and others, are not universal. Set this option to your printer's firmware to get a compatible output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any extrusion value at all." msgstr "Alcuni comandi G/M-code, incluso il controllo di temperatura e altri, non sono universali. Imposta questa opzione nel firmware della tua stampante per ottenere un output compatibile. La versione \"No extrusion\" evita che PrusaSlicer non esporti alcun valore." -#: src/slic3r/GUI/GLCanvas3D.cpp:688 -msgid "Some objects are not visible" -msgstr "Alcuni oggetti non sono visibili" +#: src/slic3r/GUI/Plater.cpp:2309 +#, c-format +msgid "" +"Some object(s) in file %s looks like saved in inches.\n" +"Should I consider them as a saved in inches and convert them?" +msgstr "" +"Alcuni oggetti nel file %s sembrano salvati in pollici.\n" +"Devo considerarli come salvati in pollici e convertirli?" -#: src/libslic3r/Print.cpp:1226 +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "Some objects are not visible." +msgstr "Alcuni oggetti non sono visibili." + +#: src/libslic3r/Print.cpp:1252 msgid "Some objects are too close; your extruder will collide with them." msgstr "Alcuni oggetti sono troppo vicini; l'estrusore li colpirà." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1254 msgid "Some objects are too tall and cannot be printed without extruder collisions." msgstr "Alcuni oggetti sono troppo alti e non possono essere stampati senza essere colpiti dall'estrusore." -#: src/libslic3r/PrintConfig.cpp:2824 +#: src/libslic3r/PrintConfig.cpp:2988 msgid "Some objects can get along with a few smaller pads instead of a single big one. This parameter defines how far the center of two smaller pads should be. If theyare closer, they will get merged into one pad." msgstr "Per alcuni oggetti possono bastare pochi piccoli pad invece che un singolo pad grande. Questo parametro definisce quanto può essere lontano il centro di due pad. Se questi sono più vicini, si fonderanno in un unico pad." -#: src/libslic3r/PrintConfig.cpp:2187 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." msgstr "Alcune stampanti o setup di stampanti possono riscontrare difficoltà a stampare con l'altezza layer variabile. Attivato come predefinito." -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2126 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "Spaziatura tra le linee di interfaccia. Imposta a zero per ottenere un'interfaccia solida." -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:1155 +msgid "Spacing between ironing passes" +msgstr "Spaziatura tra i passaggi di stiratura" + +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Spacing between support material lines." msgstr "Spaziatura tra le linee del materiale di supporto." -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:616 -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 -#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 msgid "Speed" msgstr "Velocità" -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Velocità (baud) USB/Seriale per la connessione stampante." - -#: src/libslic3r/GCode/PreviewData.cpp:351 +#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 msgid "Speed (mm/s)" msgstr "Velocità (mm/s)" -#: src/libslic3r/PrintConfig.cpp:920 +#: src/libslic3r/PrintConfig.cpp:964 msgid "Speed for filling small gaps using short zigzag moves. Keep this reasonably low to avoid too much shaking and resonance issues. Set zero to disable gaps filling." msgstr "Velocità per il riempimento degli spazi stretti utilizzando brevi movimenti a zig-zag. Mantieni questa velocità ragionevolmente bassa per evitare problemi di oscillazione e risonanza. Imposta a zero per disabilitare il riempimento degli spazi." -#: src/slic3r/GUI/Tab.cpp:1158 +#: src/slic3r/GUI/Tab.cpp:1488 msgid "Speed for non-print moves" msgstr "Velocità per i movimenti non di stampa" -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "Velocità per i perimetri (contorni, conosciuti anche come gusci verticali). Imposta a zero per automatizzare." -#: src/slic3r/GUI/Tab.cpp:1146 +#: src/slic3r/GUI/Tab.cpp:1475 msgid "Speed for print moves" msgstr "Velocità per i movimenti di stampa" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "Speed for printing bridges." msgstr "Velocità di stampa Bridge." -#: src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:1884 msgid "Speed for printing solid regions (top/bottom/internal horizontal shells). This can be expressed as a percentage (for example: 80%) over the default infill speed above. Set to zero for auto." msgstr "La velocità per le regioni di stampa solide (superiore/inferiore/gusci interni orizzontali). Questo valore può essere espresso in percentuale (per esempio: 80%) sulla velocità del riempimento predefinita qui sopra. Imposta a zero per automatizzare." -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." msgstr "Velocità per la stampa dei layer di interfaccia del materiale di supporto. Se espresso in percentuale (per esempio 50%) sarà calcolato sulla velocità del materiale di supporto." -#: src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Speed for printing support material." msgstr "Velocità per la stampa del materiale di supporto." -#: src/libslic3r/PrintConfig.cpp:1049 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "Velocità per la stampa del riempimento interno. Imposta a zero per auto." -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2262 msgid "Speed for printing top solid layers (it only applies to the uppermost external layers and not to their internal solid layers). You may want to slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." msgstr "Velocità di stampa dei layer solidi superiori (si applica solamente al layer solido esterno più in alto e non ai layer solidi interni). Rallenta questa impostazione per ottenere una superficie più rifinita. Questo valore può essere espresso in percentuale (per esempio: 80%) della velocità del riempimento solido qui sopra. Imposta a zero per auto." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2296 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "Velocità per movimenti di spostamento (salti tra punti di estrusione distanti)." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Speed of the first cooling move" msgstr "Velocità del primo movimento di raffreddamento" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:714 msgid "Speed of the last cooling move" msgstr "Velocità dell'ultimo movimento di raffreddamento" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:652 msgid "Speed used at the very beginning of loading phase." msgstr "Velocità utilizzata all'inizio della fase di caricamento." -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Speed used for loading the filament on the wipe tower." msgstr "Velocità utilizzata per caricare il filamento sulla torre di spurgo." -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:660 msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." msgstr "Velocità usata per scaricare il filamento sulla wipe tower (non influisce sulla parte iniziale dello scaricamento dopo il ramming)." -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Speed used for unloading the tip of the filament immediately after ramming." msgstr "Velocità utilizzata per scaricare la punta del filamento immediatamente dopo il ramming." -#: src/slic3r/GUI/Mouse3DController.cpp:296 +#: src/slic3r/GUI/Mouse3DController.cpp:279 msgid "Speed:" msgstr "Velocità:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Sphere" msgstr "Sfera" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Spiral vase" msgstr "Vaso a spirale" -#: src/slic3r/GUI/ConfigManipulation.cpp:90 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Spiral Vase" msgstr "Vaso a spirale" -#: src/slic3r/GUI/Plater.cpp:4019 src/slic3r/GUI/Plater.cpp:4034 -#: src/slic3r/GUI/Plater.cpp:4048 src/libslic3r/PrintConfig.cpp:3471 +#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 msgid "Split" msgstr "Dividi" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:3939 msgid "Split the selected object" msgstr "Dividi l'oggetto selezionato" -#: src/slic3r/GUI/Plater.cpp:4014 src/slic3r/GUI/Plater.cpp:4034 +#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 msgid "Split the selected object into individual objects" msgstr "Dividi l'oggetto selezionato in singoli oggetti" -#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4048 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 msgid "Split the selected object into individual sub-parts" msgstr "Dividi l'oggetto selezionato in singole sotto parti" -#: src/slic3r/GUI/GLCanvas3D.cpp:4550 +#: src/slic3r/GUI/GLCanvas3D.cpp:4916 msgid "Split to objects" -msgstr "Separa in oggetti" +msgstr "Dividi in oggetti" -#: src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Split to Objects" -msgstr "Separa in oggetti" +msgstr "Dividi in oggetti" -#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1487 +#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" msgstr "Dividi in parti" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2274 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Split to Parts" msgstr "Dividi in parti" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "Standard" msgstr "Standard" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:884 msgid "Stars" msgstr "Stelle" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "Start a new project" msgstr "Inizia un nuovo progetto" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "Inizia all'altezza" -#: src/slic3r/GUI/Tab.cpp:1528 src/slic3r/GUI/Tab.cpp:1976 -#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 msgid "Start G-code" msgstr "G-code iniziale" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "Start new slicing process" msgstr "Avvia un nuovo processo di slicing" @@ -7206,7 +8437,37 @@ msgstr "Avvia un nuovo processo di slicing" msgid "Start printing after upload" msgstr "Avvia la stampa dopo il caricamento" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Start the application" +msgstr "Avvia l'applicazione" + +#: src/slic3r/GUI/GUI_App.cpp:386 +msgid "" +"Starting with %1% 2.3, configuration directory on Linux has changed (according to XDG Base Directory Specification) to \n" +"%2%.\n" +"\n" +"This directory did not exist yet (maybe you run the new version for the first time).\n" +"However, an old %1% configuration directory was detected in \n" +"%3%.\n" +"\n" +"Consider moving the contents of the old directory to the new location in order to access your profiles, etc.\n" +"Note that if you decide to downgrade %1% in future, it will use the old location again.\n" +"\n" +"What do you want to do now?" +msgstr "" +"A partire da %1% 2.3, la directory di configurazione su Linux è cambiata (secondo la XDG Base Directory Specification) in \n" +"%2%.\n" +"\n" +"Questa directory non esiste ancora (forse stai usando la nuova versione per la prima volta).\n" +"Tuttavia, è stata rilevata una vecchia directory di configurazione %1% in \n" +"%3%.\n" +"\n" +"Prendere in considerazione la possibilità di spostare il contenuto della vecchia directory nella nuova posizione per accedere ai propri profili, ecc.\n" +"Notare che se si decide di fare un downgrade di %1% in futuro, si utilizzerà di nuovo la vecchia posizione.\n" +"\n" +"Cosa vuoi fare adesso?" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 msgid "Status" msgstr "Stato" @@ -7214,766 +8475,940 @@ msgstr "Stato" msgid "Status:" msgstr "Stato:" -#: src/slic3r/GUI/Tab.cpp:2209 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 msgid "Stealth" msgstr "Silenzioso" -#: src/slic3r/GUI/Plater.cpp:1291 +#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 msgid "stealth mode" msgstr "modalità silenziosa" -#: src/slic3r/GUI/Plater.cpp:4985 -#, possible-c-format +#: src/slic3r/GUI/GCodeViewer.cpp:2557 +msgid "Stealth mode" +msgstr "Modalità silenziosa" + +#: src/slic3r/GUI/Plater.cpp:5118 +#, c-format msgid "STL file exported to %s" msgstr "File STL esportato in %s" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Stop at height" msgstr "Ferma all'altezza" -#: src/slic3r/GUI/Tab.cpp:1693 src/slic3r/GUI/Tab.cpp:1928 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "Successo!" -#: src/slic3r/GUI/PresetHints.cpp:203 +#: src/slic3r/GUI/Plater.cpp:2047 +#, c-format +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Smontato correttamente. Il dispositivo %s(%s) può ora essere rimosso dal computer in sicurezza." + +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "supporto" -#: src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "Support base diameter" msgstr "Diametro della base del supporto" -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base height" msgstr "Altezza della base del supporto" -#: src/libslic3r/PrintConfig.cpp:2711 +#: src/libslic3r/PrintConfig.cpp:2875 msgid "Support base safety distance" msgstr "Distanza di sicurezza base supporto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Blocker" msgstr "Blocco Supporto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/libslic3r/PrintConfig.cpp:895 +msgid "Support Cubic" +msgstr "Supporto Cubico" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Enforcer" msgstr "Rinforzo Supporto" -#: src/slic3r/GUI/ConfigManipulation.cpp:163 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Support Generator" msgstr "Generatore Supporti" -#: src/slic3r/GUI/Tab.cpp:3608 +#: src/slic3r/GUI/Tab.cpp:4018 msgid "Support head" msgstr "Testa supporto" -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Support head front diameter" -msgstr "Diametro anteriore della testa del supporto" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Support head penetration" -msgstr "Inserimento testa del supporto" - -#: src/libslic3r/PrintConfig.cpp:2638 -msgid "Support head width" -msgstr "Larghezza testa del supporto" - -#: src/slic3r/GUI/PresetHints.cpp:213 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "interfaccia supporto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/GUI_Preview.cpp:246 -#: src/slic3r/GUI/Tab.cpp:1120 src/slic3r/GUI/Tab.cpp:1121 -#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 -#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 -#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 -#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 -#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 -#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 +#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:95 +#: src/slic3r/GUI/GUI_ObjectList.cpp:654 src/slic3r/GUI/GUI_Preview.cpp:311 +#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 +#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 +#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "Support material" msgstr "Materiale di supporto" -#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 -#: src/libslic3r/PrintConfig.cpp:1991 +#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 +#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 msgid "Support material interface" msgstr "Interfaccia materiale di supporto" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." msgstr "Il materiale di supporto non sarà generato per sporgenze con angolo di inclinazione (90°=verticale) superiore al limite impostato. In altre parole, questo valore rappresenta l'inclinazione orizzontale massima (misurata dal piano orizzontale) che puoi stampare senza materiale di supporto. Imposta a zero per un rilevamento automatico (raccomandato)." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Support material/raft interface extruder" msgstr "Estrusore materiale di supporto/intefaccia raft" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "Support material/raft/skirt extruder" msgstr "Estrusore materiale di supporto/raft/skirt" -#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 -#: src/libslic3r/PrintConfig.cpp:2674 +#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2838 msgid "Support on build plate only" msgstr "Supporti solo dal piano di stampa" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:762 msgid "Support parameter change" msgstr "Modifica parametro del Supporto" -#: src/slic3r/GUI/Tab.cpp:3613 +#: src/slic3r/GUI/Tab.cpp:4023 msgid "Support pillar" msgstr "Pilastro di supporto" -#: src/libslic3r/PrintConfig.cpp:2658 -msgid "Support pillar connection mode" -msgstr "Modalità di connessione dei pilastri di supporto" - -#: src/libslic3r/PrintConfig.cpp:2648 -msgid "Support pillar diameter" -msgstr "Diametro pilastro di supporto" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -#: src/libslic3r/PrintConfig.cpp:2764 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/libslic3r/PrintConfig.cpp:2928 msgid "Support points density" msgstr "Densità punti di supporto" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1196 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "Support points edit" msgstr "Edita punti di supporto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:624 -#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3604 -#: src/slic3r/GUI/Tab.cpp:3605 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 -#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2682 -#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2703 -#: src/libslic3r/PrintConfig.cpp:2712 src/libslic3r/PrintConfig.cpp:2725 -#: src/libslic3r/PrintConfig.cpp:2735 src/libslic3r/PrintConfig.cpp:2744 -#: src/libslic3r/PrintConfig.cpp:2754 src/libslic3r/PrintConfig.cpp:2765 -#: src/libslic3r/PrintConfig.cpp:2773 +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 +#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 +#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 +#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 +#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 msgid "Supports" msgstr "Supporti" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "supports and pad" msgstr "supporti e pad" -#: src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1185 msgid "Supports remaining times" msgstr "Supporto Tempo residuo" -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports stealth mode" msgstr "Supporto modalità silenziosa" -#: src/slic3r/GUI/ConfigManipulation.cpp:159 -msgid "Supports work better, if the following feature is enabled:\n- Detect bridging perimeters" -msgstr "I supporti funzionano meglio se le la seguente funzione è attivata:\n- Rileva perimetri ponte" +#: src/slic3r/GUI/ConfigManipulation.cpp:158 +msgid "" +"Supports work better, if the following feature is enabled:\n" +"- Detect bridging perimeters" +msgstr "" +"I supporti funzionano meglio se le la seguente funzione è attivata:\n" +"- Rileva perimetri ponte" -#: src/slic3r/GUI/Preferences.cpp:87 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Nascondi i preset \" - default - \"" -#: src/slic3r/GUI/Preferences.cpp:89 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." msgstr "Nascondi i preset \" - default - \" nelle selezioni Stampa / Filamento / Stampante non appena sono disponibili altri preset validi." -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/Mouse3DController.cpp:318 +msgid "Swap Y/Z axes" +msgstr "Inverti assi Y/Z" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Switch between Editor/Preview" +msgstr "Passare da Editor/Anteprima" + +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Switch code to Change extruder" msgstr "Passa il codice a Cambio estrusore" -#: src/slic3r/GUI/DoubleSlider.cpp:1179 +#: src/slic3r/GUI/DoubleSlider.cpp:1306 msgid "Switch code to Color change (%1%) for:" msgstr "Passa il codice a Cambio colore (%1%) per:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Switch to 3D" msgstr "Passa a 3D" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1376 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1223 msgid "Switch to editing mode" msgstr "Passa alla modalità modifica" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Switch to Preview" msgstr "Passa ad Anteprima" -#: src/slic3r/GUI/wxExtensions.cpp:703 -#, possible-c-format +#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Switch to Settings" +msgstr "Passa a Impostazioni" + +#: src/slic3r/GUI/wxExtensions.cpp:623 +#, c-format msgid "Switch to the %s mode" msgstr "Passa alla modalità %s" -#: src/slic3r/GUI/GUI_App.cpp:882 -msgid "Switching the language will trigger application restart.\nYou will lose content of the plater." -msgstr "Il cambio della lingua necessita il riavvio dell'applicazione.\nVerrà cancellato il contenuto del piano." +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 +msgid "Switching Presets: Unsaved Changes" +msgstr "Cambio di preset: Modifiche non salvate" + +#: src/slic3r/GUI/GUI_App.cpp:1608 +msgid "" +"Switching the language will trigger application restart.\n" +"You will lose content of the plater." +msgstr "" +"Il cambio della lingua necessita il riavvio dell'applicazione.\n" +"Verrà cancellato il contenuto del piano." #: src/slic3r/GUI/WipeTowerDialog.cpp:365 -msgid "Switching to simple settings will discard changes done in the advanced mode!\n\nDo you want to proceed?" -msgstr "Cambiare alle impostazioni semplici eliminerà tutte le modifiche fatte alle impostazioni complesse!\n\nProcedere?" +msgid "" +"Switching to simple settings will discard changes done in the advanced mode!\n" +"\n" +"Do you want to proceed?" +msgstr "" +"Cambiare alle impostazioni semplici eliminerà tutte le modifiche fatte alle impostazioni complesse!\n" +"\n" +"Procedere?" -#: src/slic3r/GUI/Tab.cpp:1014 +#: src/slic3r/GUI/Tab.cpp:1332 msgid "symbolic profile name" msgstr "nome simbolico profilo" -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." msgstr "Sincronizza i layer di supporto con i layer dell'oggetto stampato. È utile con le stampanti multi-material, dove il cambio estrusore è costoso." -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "Synchronize with object layers" msgstr "Sincronizza con i layer dell'oggetto" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "System &Info" msgstr "&Info di Sistema" -#: src/slic3r/GUI/SysInfoDialog.cpp:78 +#: src/slic3r/GUI/SysInfoDialog.cpp:90 src/slic3r/GUI/SysInfoDialog.cpp:92 msgid "System Information" msgstr "Informazioni di sistema" -#: src/slic3r/GUI/Preset.cpp:1109 src/slic3r/GUI/Preset.cpp:1164 -#: src/slic3r/GUI/Preset.cpp:1242 src/slic3r/GUI/Preset.cpp:1284 -#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1672 +#: src/slic3r/GUI/PresetComboBoxes.cpp:188 +#: src/slic3r/GUI/PresetComboBoxes.cpp:226 +#: src/slic3r/GUI/PresetComboBoxes.cpp:724 +#: src/slic3r/GUI/PresetComboBoxes.cpp:774 +#: src/slic3r/GUI/PresetComboBoxes.cpp:886 +#: src/slic3r/GUI/PresetComboBoxes.cpp:930 msgid "System presets" msgstr "Preset di sistema" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Take Configuration &Snapshot" msgstr "Cattura I&stantanea di Configurazione" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Taking configuration snapshot" msgstr "Cattura istantanea della configurazione" -#: src/slic3r/GUI/Tab.cpp:1433 src/libslic3r/PrintConfig.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:1779 msgid "Temperature" msgstr "Temperatura" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1919 msgid "Temperature difference to be applied when an extruder is not active. Enables a full-height \"sacrificial\" skirt on which the nozzles are periodically wiped." msgstr "La differenza di temperatura da applicare quando un estrusore non è attivo. Abilita uno skirt \"sacrificale\" a piena altezza su cui l'ugello verrà pulito periodicamente." -#: src/libslic3r/PrintConfig.cpp:1803 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "Temperature variation" msgstr "Variazione di temperatura" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Temperatures" msgstr "Temperature" -#: src/slic3r/GUI/Tab.cpp:1677 src/slic3r/GUI/Tab.cpp:1915 +#: src/slic3r/GUI/Tab.cpp:2215 +msgid "Template Custom G-code" +msgstr "Template G-code personalizzato" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 msgid "Test" msgstr "Test" -#: src/slic3r/GUI/BedShapeDialog.cpp:172 +#: src/slic3r/GUI/BedShapeDialog.cpp:315 msgid "Texture" msgstr "Texture" -#: src/slic3r/GUI/ConfigManipulation.cpp:208 +#: src/slic3r/GUI/ConfigManipulation.cpp:207 msgid "The %1% infill pattern is not supposed to work at 100%% density." msgstr "La trama di riempimento %1% non è fatta per lavorare con densità al 100%%." #: src/slic3r/GUI/FirmwareDialog.cpp:548 -#, possible-c-format +#, c-format msgid "The %s device could not have been found" msgstr "Il dispositivo %s non è stato trovato" #: src/slic3r/GUI/FirmwareDialog.cpp:436 -#, possible-c-format -msgid "The %s device was not found.\nIf the device is connected, please press the Reset button next to the USB connector ..." -msgstr "Il dispositivo %s non è stato trovato.\nSe il dispositivo è connesso, premi il pulsante Reset vicino al connettore USB ..." +#, c-format +msgid "" +"The %s device was not found.\n" +"If the device is connected, please press the Reset button next to the USB connector ..." +msgstr "" +"Il dispositivo %s non è stato trovato.\n" +"Se il dispositivo è connesso, premi il pulsante Reset vicino al connettore USB ..." -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1238 msgid "The current custom preset will be detached from the parent system preset." msgstr "Il preset personalizzato corrente sarà staccato dal preset del sistema padre." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 -msgid "The currently manipulated object is tilted (rotation angles are not multiples of 90°).\nNon-uniform scaling of tilted objects is only possible in the World coordinate system,\nonce the rotation is embedded into the object coordinates." -msgstr "L'oggetto modificato corrente è inclinato (angoli di rotazione non multipli di 90°).\nUn ridimensionamento non uniforme di un oggetto inclinato è possibile solamente su un sistema di coordinate reali, non appena la rotazione è inclusa nelle coordinate dell'oggetto." +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:925 +msgid "" +"The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" +"Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" +"once the rotation is embedded into the object coordinates." +msgstr "" +"L'oggetto modificato corrente è inclinato (angoli di rotazione non multipli di 90°).\n" +"Un ridimensionamento non uniforme di un oggetto inclinato è possibile solamente su un sistema di coordinate reali, non appena la rotazione è inclusa nelle coordinate dell'oggetto." -#: src/libslic3r/PrintConfig.cpp:2726 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "The default angle for connecting support sticks and junctions." msgstr "Angolo predefinito per la connessione delle barre di supporto e le giunzioni." -#: src/libslic3r/SLAPrint.cpp:631 +#: src/libslic3r/SLAPrint.cpp:645 msgid "The endings of the support pillars will be deployed on the gap between the object and the pad. 'Support base safety distance' has to be greater than the 'Pad object gap' parameter to avoid this." msgstr "La fine del pilastro di supporto si svilupperà nello spazio tra l'oggetto e il pad. La 'Distanza di sicurezza base di supporto' deve essere più grande del parametro 'Distanza Pad oggetto' per evitare questo." -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:525 msgid "The extruder to use (unless more specific extruder settings are specified). This value overrides perimeter and infill extruders, but not the support extruders." msgstr "Estrusore da utilizzare (a meno che non siano specificate impostazioni d'estrusore più specifiche). Questo valore scavalca l'estrusore dei perimetri e di riempimento, ma non l'estrusore dei supporti." -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1047 msgid "The extruder to use when printing infill." msgstr "L'estrusore da utilizzare per la stampa del riempimento." -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "L'estrusore da utilizzare per la stampa dei perimetri e del brim. Il primo estrusore è 1." -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "The extruder to use when printing solid infill." msgstr "L'estrusore da utilizzare per la stampa del riempimento solido." -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:2108 msgid "The extruder to use when printing support material interface (1+, 0 to use the current extruder to minimize tool changes). This affects raft too." msgstr "L'estrusore da utilizzare per la stampa dell'interfaccia del materiale di supporto (1+, 0 per usare l'estrusore attuale per minimizzare il cambio di attrezzo). Questo influenza anche il raft." -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." msgstr "L'estrusore da utilizzare per la stampa del materiale di supporto, raft e skirt (1+, 0 per utilizzare l'estrusore attuale per minimizzare i cambi di attrezzo)." -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:763 msgid "The filament material type for use in custom G-codes." msgstr "Tipo di materiale da usare nei G-code personalizzati." -#: src/libslic3r/PrintConfig.cpp:3494 +#: src/libslic3r/PrintConfig.cpp:3693 msgid "The file where the output will be written (if not specified, it will be based on the input file)." msgstr "Il file dove verrà scritto l'output (se non specificato, sarà basato sul file di input)." -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1195 msgid "The firmware supports stealth mode" msgstr "Il firmware supporta la modalità silenziosa" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:122 msgid "The first layer will be shrunk in the XY plane by the configured value to compensate for the 1st layer squish aka an Elephant Foot effect." msgstr "Il primo layer verrà ristretto sul piano XY dal valore configurato, così da compensare per lo schiacciamento del 1° layer, anche noto come effetto Zampa d'elefante." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3457 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/SavePresetDialog.cpp:117 msgid "the following characters are not allowed:" msgstr "non sono permessi i seguenti caratteri:" -#: src/slic3r/GUI/ConfigWizard.cpp:1830 +#: src/slic3r/GUI/ConfigWizard.cpp:2257 msgid "The following FFF printer models have no filament selected:" msgstr "I seguenti modelli di stampante FFF non hanno nessun filamento selezionato:" -#: src/slic3r/GUI/ConfigWizard.cpp:1848 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1004 +msgid "The following presets were modified:" +msgstr "I preset seguenti sono stati modificati:" + +#: src/slic3r/GUI/ConfigWizard.cpp:2275 msgid "The following SLA printer models have no materials selected:" msgstr "I seguenti modelli di stampante SLA non hanno nessun filamento selezionato:" -#: src/slic3r/GUI/Tab.cpp:3461 +#: src/slic3r/GUI/SavePresetDialog.cpp:125 msgid "the following suffix is not allowed:" msgstr "il seguente suffisso non è permesso:" -#: src/libslic3r/PrintConfig.cpp:2871 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "The gap between the object bottom and the generated pad in zero elevation mode." msgstr "Lo spazio tra la parte inferiore dell'oggetto e il pad generato nella modalità ad elevazione zero." -#: src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "The height of the pillar base cone" msgstr "Altezza del cono alla base del pilastro" -#: src/slic3r/GUI/DoubleSlider.cpp:1922 +#: src/slic3r/GUI/DoubleSlider.cpp:2140 msgid "The last color change data was saved for a multi extruder printing with tool changes for whole print." msgstr "Gli ultimi dati del cambio colore sono stati salvati per una stampa a estrusore multiplo con cambi di attrezzo per l'intera stampa." -#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 msgid "The last color change data was saved for a multi extruder printing." msgstr "Gli ultimi dati del cambio colore sono stati salvati per una stampa a estrusore multiplo." -#: src/slic3r/GUI/DoubleSlider.cpp:1899 +#: src/slic3r/GUI/DoubleSlider.cpp:2118 msgid "The last color change data was saved for a single extruder printing." msgstr "I dati dell'ultimo cambio colore sono stati salvati per la stampa ad estrusore singolo." -#: src/libslic3r/PrintConfig.cpp:2745 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." msgstr "La distanza massima tra due pilastri per collegarsi gli uni agli altri. Un valore di zero impedisce i pilastri a cascata." -#: src/libslic3r/PrintConfig.cpp:2736 +#: src/libslic3r/PrintConfig.cpp:2900 msgid "The max length of a bridge" msgstr "La lunghezza massima di un bridge" -#: src/libslic3r/PrintConfig.cpp:2714 +#: src/libslic3r/PrintConfig.cpp:2878 msgid "The minimum distance of the pillar base from the model in mm. Makes sense in zero elevation mode where a gap according to this parameter is inserted between the model and the pad." msgstr "Distanza minima della base del pilastro dal modello in mm. Ha senso con modalità ad elevazione zero in cui viene inserito uno spazio tra modello e pad a seconda di questo parametro." -#: src/libslic3r/PrintConfig.cpp:185 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "The name cannot be empty." +msgstr "Il nome non può essere vuoto." + +#: src/libslic3r/PrintConfig.cpp:219 msgid "The number of bottom solid layers is increased above bottom_solid_layers if necessary to satisfy minimum thickness of bottom shell." msgstr "Il numero di layer solidi inferiori è aumentato al di sopra di bottom_solid_layers se necessario per soddisfare lo spessore minimo del guscio inferiore." -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2286 msgid "The number of top solid layers is increased above top_solid_layers if necessary to satisfy minimum thickness of top shell. This is useful to prevent pillowing effect when printing with variable layer height." msgstr "Il numero di layer solidi superiori è aumentato al di sopra di top_solid_layers se necessario per soddisfare lo spessore minimo del guscio superiore. Questo è utile a prevenire l'effetto cuscinetto con la stampa ad altezza layer variabile." -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/slic3r/GUI/Plater.cpp:2326 +msgid "The object appears to be saved in inches" +msgstr "L'oggetto sembra essere stato salvato in pollici" + +#: src/libslic3r/PrintConfig.cpp:2420 msgid "The object will be grown/shrunk in the XY plane by the configured value (negative = inwards, positive = outwards). This might be useful for fine-tuning hole sizes." msgstr "L'oggetto verrà allargato/ristretto sul piano XY dal valore configurato (negativo = verso l'interno, positivo = verso l'esterno). Questo può essere utile per regolare la grandezza dei fori." -#: src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1611 msgid "The object will be raised by this number of layers, and support material will be generated under it." msgstr "L'oggetto verrà sollevato per questo numero di layer e verrà generato il materiale di supporto al di sotto di esso." -#: src/libslic3r/PrintConfig.cpp:2424 -msgid "The percentage of the bed area. \nIf the print area exceeds the specified value, \nthen a slow tilt will be used, otherwise - a fast tilt" -msgstr "La percentuale dell'area del piano.\nSe l'area di stampa supera un determinato valore,\nverrà utilizzata l'inclinazione lenta, in caso contrario - l'inclinazione veloce" +#: src/libslic3r/PrintConfig.cpp:2803 +msgid "The percentage of smaller pillars compared to the normal pillar diameter which are used in problematic areas where a normal pilla cannot fit." +msgstr "La percentuale di pilastri più piccoli rispetto al diametro normale dei pilastri che vengono utilizzati in aree problematiche in cui un normale pilastro non può adattarsi." -#: src/slic3r/GUI/GUI_App.cpp:932 -msgid "The presets on the following tabs were modified" -msgstr "Sono stati modificati i preset nelle seguenti schede" +#: src/libslic3r/PrintConfig.cpp:2567 +msgid "" +"The percentage of the bed area. \n" +"If the print area exceeds the specified value, \n" +"then a slow tilt will be used, otherwise - a fast tilt" +msgstr "" +"La percentuale dell'area del piano.\n" +"Se l'area di stampa supera un determinato valore,\n" +"verrà utilizzata l'inclinazione lenta, in caso contrario - l'inclinazione veloce" -#: src/libslic3r/PrintConfig.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:3430 +msgid "The physical printer(s) below is based on the preset, you are going to delete." +msgstr "La(e) stampante(e) fisica(e) sottostante(i) si basa(no) solo sul preset che si intende cancellare." + +#: src/slic3r/GUI/Tab.cpp:3438 +msgid "The physical printer(s) below is based only on the preset, you are going to delete." +msgstr "La(e) stampante(e) fisica(e) sottostante(i) si basa(no) solo sul preset che si intende cancellare." + +#: src/slic3r/GUI/GUI_App.cpp:1676 +msgid "The preset(s) modifications are successfully saved" +msgstr "Le modifiche dei preset sono state salvate correttamente" + +#: src/libslic3r/PrintConfig.cpp:1988 msgid "The printer multiplexes filaments into a single hot end." msgstr "La stampante processa diversi filamenti in un singolo hotend." -#: src/libslic3r/Format/3mf.cpp:1630 +#: src/libslic3r/Format/3mf.cpp:1667 msgid "The selected 3mf file has been saved with a newer version of %1% and is not compatible." msgstr "Il file 3mf selezionato è stato salvato con una versione più recente di %1% e non è compatibile." -#: src/libslic3r/Format/AMF.cpp:934 +#: src/libslic3r/Format/AMF.cpp:955 msgid "The selected amf file has been saved with a newer version of %1% and is not compatible." msgstr "Il file amf selezionato è stato salvato con una versione più recente di %1% e non è compatibile." -#: src/slic3r/GUI/BedShapeDialog.cpp:513 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "The selected file" +msgstr "Il file selezionato" + +#: src/slic3r/GUI/BedShapeDialog.cpp:589 msgid "The selected file contains no geometry." msgstr "Il file selezionato non contiene geometrie." -#: src/slic3r/GUI/BedShapeDialog.cpp:517 +#: src/slic3r/GUI/BedShapeDialog.cpp:593 msgid "The selected file contains several disjoint areas. This is not supported." msgstr "Il file selezionato contiene molteplici aree disgiunte. Non è supportato." -#: src/slic3r/GUI/Plater.cpp:2970 +#: src/slic3r/GUI/Plater.cpp:2763 msgid "The selected object can't be split because it contains more than one volume/material." msgstr "L'oggetto selezionato non può essere diviso perché contiene più di un volume/materiale." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2270 src/slic3r/GUI/Plater.cpp:2978 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 msgid "The selected object couldn't be split because it contains only one part." msgstr "L'oggetto selezionato non può essere diviso perché contiene solo una parte." -#: src/slic3r/GUI/MainFrame.cpp:461 -msgid "The selected project is no longer available.\nDo you want to remove it from the recent projects list?" -msgstr "Il progetto selezionato non è più disponibile.\nVuoi rimuoverlo dall'elenco dei progetti recenti?" +#: src/slic3r/GUI/MainFrame.cpp:1003 +msgid "" +"The selected project is no longer available.\n" +"Do you want to remove it from the recent projects list?" +msgstr "" +"Il progetto selezionato non è più disponibile.\n" +"Vuoi rimuoverlo dall'elenco dei progetti recenti?" -#: src/slic3r/GUI/DoubleSlider.cpp:998 -msgid "The sequential print is on.\nIt's impossible to apply any custom G-code for objects printing sequentually.\nThis code won't be processed during G-code generation." -msgstr "La stampa sequenziale è attiva.\nNon è possibile applicare alcun G-code personalizzato per oggetti con stampa sequenziale.\nQuesto codice non sarà processato durante la generazione del G-code." +#: src/slic3r/GUI/DoubleSlider.cpp:1121 +msgid "" +"The sequential print is on.\n" +"It's impossible to apply any custom G-code for objects printing sequentually.\n" +"This code won't be processed during G-code generation." +msgstr "" +"La stampa sequenziale è attiva.\n" +"Non è possibile applicare alcun G-code personalizzato per oggetti con stampa sequenziale.\n" +"Questo codice non sarà processato durante la generazione del G-code." -#: src/libslic3r/PrintConfig.cpp:2846 +#: src/slic3r/GUI/ConfigWizard.cpp:1187 +msgid "The size of the object can be specified in inches" +msgstr "La dimensione dell'oggetto può essere specificata in pollici" + +#: src/libslic3r/PrintConfig.cpp:3010 msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." msgstr "Inclinazione della parete del pad relativa al piano. 90 gradi equivale a pareti dritte." -#: src/libslic3r/PrintConfig.cpp:1614 +#: src/libslic3r/PrintConfig.cpp:1722 msgid "The speed for loading of a filament into extruder after retraction (it only applies to the extruder motor). If left to zero, the retraction speed is used." msgstr "La velocità di caricamento di un filamento nell'estrusore dopo la retrazione (si applica solamente al motore dell'estrusore). Se lasciato a zero, verrà utilizzata la velocità di retrazione." -#: src/libslic3r/PrintConfig.cpp:1606 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "Velocità delle retrazioni (si applica solamente al motore dell'estrusore)." -#: src/slic3r/GUI/ConfigManipulation.cpp:81 -#, no-c-format -msgid "The Spiral Vase mode requires:\n- one perimeter\n- no top solid layers\n- 0% fill density\n- no support material\n- Ensure vertical shell thickness enabled\n- Detect thin walls disabled" -msgstr "La modalità Vaso a spirale necessita:\n-un solo perimetro\n-nessun layer solido superiore\n-densità riempimento 0%\n-nessun materiale di supporto\n-Mantieni spessore guscio verticale attivo\n-Rileva perimetri sottili disattivo" +#: src/slic3r/GUI/ConfigManipulation.cpp:80 +#, c-format +msgid "" +"The Spiral Vase mode requires:\n" +"- one perimeter\n" +"- no top solid layers\n" +"- 0% fill density\n" +"- no support material\n" +"- Ensure vertical shell thickness enabled\n" +"- Detect thin walls disabled" +msgstr "" +"La modalità Vaso a spirale necessita:\n" +"-un solo perimetro\n" +"-nessun layer solido superiore\n" +"-densità riempimento 0%\n" +"-nessun materiale di supporto\n" +"-Mantieni spessore guscio verticale attivo\n" +"-Rileva perimetri sottili disattivo" -#: src/libslic3r/Print.cpp:1237 +#: src/libslic3r/Print.cpp:1263 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "L'opzione Vaso a Spirale può essere utilizzata soltanto durante la stampa di un oggetto singolo." -#: src/libslic3r/Print.cpp:1244 +#: src/libslic3r/Print.cpp:1270 msgid "The Spiral Vase option can only be used when printing single material objects." msgstr "L'opzione Vaso a Spirale può essere usata solo durante la stampa di oggetti in materiale singolo." -#: src/slic3r/GUI/Tab.cpp:3068 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 msgid "The supplied name is empty. It can't be saved." msgstr "Il nome fornito è vuoto. Non può essere salvato." -#: src/slic3r/GUI/Tab.cpp:3465 +#: src/slic3r/GUI/SavePresetDialog.cpp:131 msgid "The supplied name is not available." msgstr "Il nome fornito non è disponibile." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3819 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3926 src/slic3r/GUI/Tab.cpp:3456 -#: src/slic3r/GUI/Tab.cpp:3460 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 +#: src/slic3r/GUI/SavePresetDialog.cpp:124 msgid "The supplied name is not valid;" msgstr "Il nome fornito non è valido;" -#: src/libslic3r/Print.cpp:1222 +#: src/libslic3r/Print.cpp:1248 msgid "The supplied settings will cause an empty print." msgstr "Le configurazioni fornite causeranno una stampa vuota." -#: src/libslic3r/PrintConfig.cpp:2789 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The thickness of the pad and its optional cavity walls." msgstr "Lo spessore del pad e delle intercapedini opzionali." -#: src/libslic3r/PrintConfig.cpp:1911 +#: src/libslic3r/PrintConfig.cpp:2053 msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." msgstr "Distanza verticale tra oggetto e interfaccia del materiale di supporto. Impostando questo valore a 0 eviterà che Slic3r utilizzi il flusso e velocità bridge per il primo layer dell'oggetto." -#: src/slic3r/GUI/Tab.cpp:2575 -msgid "The Wipe option is not available when using the Firmware Retraction mode.\n\nShall I disable it in order to enable Firmware Retraction?" -msgstr "La funzione Wipe non è disponibile quando si usa la modalità Retrazione Firmware.\n\nDevo disattivarla per poter abilitare la Retrazione Firmware?" +#: src/slic3r/GUI/Tab.cpp:2731 +msgid "" +"The Wipe option is not available when using the Firmware Retraction mode.\n" +"\n" +"Shall I disable it in order to enable Firmware Retraction?" +msgstr "" +"La funzione Wipe non è disponibile quando si usa la modalità Retrazione Firmware.\n" +"\n" +"Devo disattivarla per poter abilitare la Retrazione Firmware?" -#: src/libslic3r/Print.cpp:1268 +#: src/libslic3r/Print.cpp:1294 msgid "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "La Torre di Spurgo attualmente non supporta la volumetrica E (use_volumetric_e=0)." -#: src/slic3r/GUI/ConfigManipulation.cpp:115 -msgid "The Wipe Tower currently supports the non-soluble supports only\nif they are printed with the current extruder without triggering a tool change.\n(both support_material_extruder and support_material_interface_extruder need to be set to 0)." +#: src/slic3r/GUI/ConfigManipulation.cpp:114 +msgid "" +"The Wipe Tower currently supports the non-soluble supports only\n" +"if they are printed with the current extruder without triggering a tool change.\n" +"(both support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "La Torre di Spurgo attualmente è compatibile con i supporti non solubili solamente se questi sono stampati con l'attuale estrusore senza l'innesco di un cambio attrezzo. (entrambi support_material_extruder e support_material_interface_extruder devono essere impostati a 0)." -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1426 msgid "The Wipe Tower currently supports the non-soluble supports only if they are printed with the current extruder without triggering a tool change. (both support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "La Torre di Spurgo attualmente è compatibile con i supporti non solubili solamente se questi sono stampati con l'attuale estrusore senza l'innesco di un cambio attrezzo. (entrambi support_material_extruder e support_material_interface_extruder devono essere impostati a 0)." -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1296 msgid "The Wipe Tower is currently not supported for multimaterial sequential prints." msgstr "La Torre di spurgo non è al momento supportata per stampe multi-material sequenziali." -#: src/libslic3r/Print.cpp:1262 -msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." -msgstr "La torre di spurgo al momento è supportata solo nelle versioni G-code per Marlin, RepRap/Sprinter e Repetier." +#: src/libslic3r/Print.cpp:1290 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "La Torre di spurgo è al momento supportata solo da varianti G-code Marlin, RepRap/Sprinter, RepRapFirmware e Repetier." -#: src/libslic3r/Print.cpp:1264 +#: src/libslic3r/Print.cpp:1290 msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." msgstr "Attualmente la Torre di spurgo è supportata solo con l'indirizzamento relativo dell'estrusore (use_relative_e_distances = 1)." -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1319 msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" msgstr "La Torre di spurgo è supportata con oggetti multipli solo se questi vengono stampati sullo stesso numero di layer di raft" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1321 msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" msgstr "La Torre di spurgo è supportata con oggetti multipli solo se questi vengono stampati sullo stesso support_material_contact_distance" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1323 msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." msgstr "La Torre di spurgo è supportata con oggetti multipli solo se questi sono processati allo stesso modo." -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1317 msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heights" msgstr "La Torre di spurgo è supportata con oggetti multipli solo se questi hanno la stessa altezza layer" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1283 msgid "The wipe tower is only supported if all extruders have the same nozzle diameter and use filaments of the same diameter." msgstr "La torre di spurgo è supportata solo se tutti gli estrusori hanno l'ugello con lo stesso diametro ed utilizzano filamenti con lo stesso diametro." -#: src/libslic3r/Print.cpp:1339 +#: src/libslic3r/Print.cpp:1365 msgid "The Wipe tower is only supported if all objects have the same variable layer height" msgstr "La Torre di spurgo è supportata solo se tutti gli oggetti hanno la stessa altezza layer variabile" -#: src/libslic3r/SLAPrintSteps.cpp:621 +#: src/slic3r/GUI/Plater.cpp:3563 +msgid "There are active warnings concerning sliced models:" +msgstr "Sono presenti avvisi attivi relativi ai modelli processati:" + +#: src/libslic3r/SLAPrintSteps.cpp:619 msgid "There are unprintable objects. Try to adjust support settings to make the objects printable." msgstr "Sono presenti oggetti non stampabili. Prova a regolare le impostazioni dei supporti per rendere gli oggetti stampabili." -#: src/slic3r/GUI/DoubleSlider.cpp:1030 -msgid "There is a color change for extruder that has not been used before.\nCheck your settings to avoid redundant color changes." -msgstr "È presente un cambio colore per l'estrusore che non è stato usato prima.\nControlla le impostazioni per evitare cambi colore ridondanti." +#: src/slic3r/GUI/DoubleSlider.cpp:1155 +msgid "" +"There is a color change for extruder that has not been used before.\n" +"Check your settings to avoid redundant color changes." +msgstr "" +"È presente un cambio colore per l'estrusore che non è stato usato prima.\n" +"Controlla le impostazioni per evitare cambi colore ridondanti." -#: src/slic3r/GUI/DoubleSlider.cpp:1024 -msgid "There is a color change for extruder that won't be used till the end of print job.\nThis code won't be processed during G-code generation." -msgstr "È presente un cambio colore per l'estrusore che non sarà utilizzato fino alla fine del lavoro di stampa.\nQuesto codice non sarà processato durante la generazione del G-code." +#: src/slic3r/GUI/DoubleSlider.cpp:1149 +msgid "" +"There is a color change for extruder that won't be used till the end of print job.\n" +"This code won't be processed during G-code generation." +msgstr "" +"È presente un cambio colore per l'estrusore che non sarà utilizzato fino alla fine del lavoro di stampa.\n" +"Questo codice non sarà processato durante la generazione del G-code." -#: src/slic3r/GUI/DoubleSlider.cpp:1027 -msgid "There is an extruder change set to the same extruder.\nThis code won't be processed during G-code generation." -msgstr "È presente un cambio estrusore impostato nello stesso estrusore.\nQuesto codice non verrà processato durante la generazione del G-code." +#: src/slic3r/GUI/DoubleSlider.cpp:1152 +msgid "" +"There is an extruder change set to the same extruder.\n" +"This code won't be processed during G-code generation." +msgstr "" +"È presente un cambio estrusore impostato nello stesso estrusore.\n" +"Questo codice non verrà processato durante la generazione del G-code." + +#: src/libslic3r/GCode.cpp:604 +msgid "There is an object with no extrusions on the first layer." +msgstr "C'è un oggetto senza estrusioni sul primo layer." #: src/slic3r/GUI/UpdateDialogs.cpp:225 -#, possible-c-format +#, c-format msgid "This %s version: %s" msgstr "%s versione: %s" -#: src/slic3r/GUI/Tab.cpp:982 -msgid "This action is not revertable.\nDo you want to proceed?" -msgstr "Questa azione non è reversibile.\nVuoi continuare?" +#: src/slic3r/GUI/Tab.cpp:1244 +msgid "" +"This action is not revertable.\n" +"Do you want to proceed?" +msgstr "" +"Questa azione non è reversibile.\n" +"Vuoi continuare?" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:199 msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Questo codice è inserito tra gli oggetti quando si utilizza una stampa sequenziale. Come predefinito, la temperatura di estrusione e del piano sono resettate con il comando non-attesa; in ogni caso se nel codice personalizzato vengono rilevati i comandi M104,M109,M140 o M190, Slic3r non aggiungerà i comandi di temperatura. Si fa presente che puoi usare variabili sostitutive per tutte le impostazioni di Slic3r, quindi puoi inserire un comando \"M109 S[first_layer_temperature]\" quando preferisci." -#: src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1174 msgid "This custom code is inserted at every layer change, right after the Z move and before the extruder moves to the first layer point. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Questo codice personalizzato è inserito ad ogni cambio layer, subito dopo il movimento Z e prima che l'estrusore si sposti al punto del primo layer. Si fa presente che puoi usare variabili sostitutive per tutte le impostazioni di Slic3r sia per [layer_num] che per [layer_z]." -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:188 msgid "This custom code is inserted at every layer change, right before the Z move. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Questo codice personalizzato è inserito ad ogni cambio layer, subito prima del movimento Z. Si fa presente che puoi usare variabili sostitutive per tutte le impostazioni di Slic3r sia per [layer_num] che per [layer_z]." -#: src/libslic3r/PrintConfig.cpp:2094 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings as well as {previous_extruder} and {next_extruder} can be used. When a tool-changing command which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. It is therefore possible to script custom behaviour both before and after the toolchange." msgstr "Questo codice personalizzato è inserito prima di ogni cambio attrezzo. Possono essere usate delle variabili segnaposto per tutte le impostazioni di PrusaSlicer come {previous_extruder} e {next_extruder}. Quando viene incluso un comando di cambio attrezzo che cambia all'estrusore corretto (come T{next_extruder}), PrusaSlicer non emetterà altri comandi simili. È per tanto possibile elaborare un comportamento personalizzato sia prima che dopo il cambio attrezzo." -#: src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:430 msgid "This end procedure is inserted at the end of the output file, before the printer end gcode (and before any toolchange from this filament in case of multimaterial printers). Note that you can use placeholder variables for all PrusaSlicer settings. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Questa procedura finale è inserita alla fine del file di output, prima che la stampante completi il gcode (e prima di qualunque cambio attrezzo da questo filamento in caso di stampanti multi-material). Da notare che è possibile inserire variabili segnaposto per tutte le impostazioni di PrusaSlicer. Se hai estrusori multipli, il gcode è processato nell'ordine degli estrusori." -#: src/libslic3r/PrintConfig.cpp:386 +#: src/libslic3r/PrintConfig.cpp:420 msgid "This end procedure is inserted at the end of the output file. Note that you can use placeholder variables for all PrusaSlicer settings." msgstr "Questa procedura finale è inserita alla fine del file di output. Da notare che è possibile usare variabili segnaposto per tutte le impostazioni di PrusaSlicer." -#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 msgid "This experimental setting is used to limit the speed of change in extrusion rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "Questa impostazione sperimentale è utilizzata per limitare la velocità del cambio nel fattore di estrusione. Un valore di 1.8 mm³/s² assicura che un cambio dal fattore di estrusione di 1.8 mm³/s (larghezza estrusione 0.45mm, altezza estrusione di 0.2mm, avanzamento 20 mm/s) a 5.4 mm³/s (avanzamento a 60 mm/s) impiegherà almeno 2 secondi." -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." msgstr "Questa impostazione sperimentale è utilizzata per impostare la massima velocità volumetrica supportata dal tuo estrusore." -#: src/libslic3r/PrintConfig.cpp:2162 +#: src/libslic3r/PrintConfig.cpp:2305 msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." msgstr "Questa funziona sperimentale utilizza i comandi G10 e G11 per permettere al firmware la gestione della retrazione. È supportata solo nel Marlin recente." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2319 msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." msgstr "Questa impostazione sperimentale produce un valore in uscita di E in millimetri cubici anziché in millimetri lineari. Se il tuo firmware non sa ancora qual'è il diametro del filamento, puoi inserire un comando tipo 'M200 D[filament_diameter_0] T0' nel tuo G-code iniziale in modo da attivare la funzione volumetrica e usare il diametro associato al filamento selezionato su Slic3r. Questa funziona è supportata solo nel Marlin più recente." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" msgstr "L'estrusore sarà impostato per gli elementi selezionati" -#: src/libslic3r/PrintConfig.cpp:224 +#: src/libslic3r/PrintConfig.cpp:258 msgid "This factor affects the amount of plastic for bridging. You can decrease it slightly to pull the extrudates and prevent sagging, although default settings are usually good and you should experiment with cooling (use a fan) before tweaking this." msgstr "Questo valore influenza la quantità di plastica per il bridging. Puoi diminuirlo leggermente per tendere il materiale estruso ed evitare che si afflosci, sebbene le impostazioni predefinite sono generalmente buone ed è consigliabile sperimentare con il raffreddamento (usare la ventola) prima di modificare questo valore." -#: src/libslic3r/PrintConfig.cpp:546 +#: src/libslic3r/PrintConfig.cpp:582 msgid "This factor changes the amount of flow proportionally. You may need to tweak this setting to get nice surface finish and correct single wall widths. Usual values are between 0.9 and 1.1. If you think you need to change this more, check filament diameter and your firmware E steps." msgstr "Questo valore modifica proporzionalmente il valore del flusso. Dovrai modificare questa impostazione per ottenere una buona finitura superficiale e correggere la larghezza delle pareti singole. Normalmente i valori sono tra 0.9 e 1.1. Se ritieni di dover modificare questo valore ulteriormente, controlla il diametro del filamento e i passi E del tuo firmware." -#: src/libslic3r/PrintConfig.cpp:214 +#: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "Questa velocità della ventola verrà forzata durante tutti i bridge e overhang." -#: src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "Questa funzione permette di combinare il riempimento e velocizza il tempo di stampa estrudendo layer di infill più spessi conservando tuttavia i perimetri sottili, e quindi l'accuratezza." -#: src/libslic3r/PrintConfig.cpp:1746 +#: src/libslic3r/PrintConfig.cpp:1861 msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." msgstr "Questa funzione permette di forzare un layer solido ogni tot layer. Zero per disabilitare. È possibile impostare qualunque valore (per esempio 9999); Slic3r sceglierà automaticamente il maggior numero possibile di layer da combinare secondo il diametro dell'ugello e l'altezza layer." -#: src/libslic3r/PrintConfig.cpp:1795 +#: src/libslic3r/PrintConfig.cpp:1910 msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." msgstr "Questa funzione solleverà Z gradualmente durante la stampa di un oggetto a parete singola allo scopo di rimuovere qualunque giunzione. Questa opzione richiede un singolo perimetro, nessun riempimento, nessun layer solido superiore e nessun materiale di supporto. È possibile comunque impostare qualunque numero di layer solidi inferiori così come per i giri di skirt/brim. Non funzionerà stampando più di un oggetto." -#: src/slic3r/GUI/Plater.cpp:2367 +#: src/slic3r/GUI/Plater.cpp:2329 msgid "This file cannot be loaded in a simple mode. Do you want to switch to an advanced mode?" msgstr "Non è possibile caricare questo file in modalità semplice. Si desidera passare alla modalità avanzata?" -#: src/slic3r/GUI/Plater.cpp:2357 -msgid "This file contains several objects positioned at multiple heights.\nInstead of considering them as multiple objects, should I consider\nthis file as a single object having multiple parts?" -msgstr "Questo file contiene numerosi oggetti posizionati ad altezze multiple. Invece di considerarli come oggetti multipli, devo considerare \nquesto file come un oggetto singolo con parti multiple?" +#: src/slic3r/GUI/Plater.cpp:2319 +msgid "" +"This file contains several objects positioned at multiple heights.\n" +"Instead of considering them as multiple objects, should I consider\n" +"this file as a single object having multiple parts?" +msgstr "" +"Questo file contiene numerosi oggetti posizionati ad altezze multiple. Invece di considerarli come oggetti multipli, devo considerare \n" +"questo file come un oggetto singolo con parti multiple?" #: src/slic3r/GUI/FirmwareDialog.cpp:332 -#, possible-c-format -msgid "This firmware hex file does not match the printer model.\nThe hex file is intended for: %s\nPrinter reported: %s\n\nDo you want to continue and flash this hex file anyway?\nPlease only continue if you are sure this is the right thing to do." -msgstr "Questo file hex di firmware non è corretto per il modello della stampante. \nIl file hex è per: %s\nLa stampante è: %s\n\nVuoi continuare ed installare il firmware comunque?\nContinua solo se sei certo che sia la cosa giusta da fare." +#, c-format +msgid "" +"This firmware hex file does not match the printer model.\n" +"The hex file is intended for: %s\n" +"Printer reported: %s\n" +"\n" +"Do you want to continue and flash this hex file anyway?\n" +"Please only continue if you are sure this is the right thing to do." +msgstr "" +"Questo file hex di firmware non è corretto per il modello della stampante. \n" +"Il file hex è per: %s\n" +"La stampante è: %s\n" +"\n" +"Vuoi continuare ed installare il firmware comunque?\n" +"Continua solo se sei certo che sia la cosa giusta da fare." -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:348 msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." msgstr "Questa funzione abilita il raffreddamento automatico che regola la velocità di stampa e la velocità della ventola in base al tempo di stampa del layer." -#: src/slic3r/GUI/Plater.cpp:536 +#: src/slic3r/GUI/Plater.cpp:402 msgid "This flag enables the brim that will be printed around each object on the first layer." msgstr "La spunta su questa opzione abilita il brim che verrà stampato attorno ad ogni oggetto nel primo layer." -#: src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Questo contrassegno forza una retrazione ogni volta che viene effettuato un movimento di Z." -#: src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2337 msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." msgstr "Questo contrassegno farà spostare l'ugello durante la retrazione in modo da minimizzare il possibile grumo con estrusori che trasudano." -#: src/slic3r/GUI/Tab.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1961 +msgid "This G-code will be used as a code for the color change" +msgstr "Questo G-code verrà utilizzato come codice per il cambio colore" + +#: src/libslic3r/PrintConfig.cpp:1970 +msgid "This G-code will be used as a code for the pause print" +msgstr "Questo G-code sarà usato come codice per la pausa di stampa" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "This G-code will be used as a custom code" +msgstr "Questo G-code verrà utilizzato come codice personalizzato" + +#: src/slic3r/GUI/Tab.cpp:1272 msgid "This is a default preset." msgstr "Questo è un preset predefinito." -#: src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "This is a relative measure of support points density." msgstr "Questa è una misura relativa della densità dei punti di supporto." -#: src/slic3r/GUI/Tab.cpp:2338 +#: src/slic3r/GUI/Tab.cpp:2507 msgid "This is a single extruder multimaterial printer, diameters of all extruders will be set to the new value. Do you want to proceed?" msgstr "Questa è una stampante multi-material ad estrusore singolo, i diametri di tutti gli estrusori verranno impostati al nuovo valore. Vuoi continuare?" -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:1274 msgid "This is a system preset." msgstr "Questo è un preset di sistema." -#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Utilizzato solo nell'interfaccia di Slic3r come aiuto visivo." -#: src/libslic3r/PrintConfig.cpp:336 +#: src/libslic3r/PrintConfig.cpp:370 msgid "This is the acceleration your printer will be reset to after the role-specific acceleration values are used (perimeter/infill). Set zero to prevent resetting acceleration at all." msgstr "Questa è l'accelerazione a cui la stampante sarà reimpostata dopo aver utilizzato un valore di accelerazione per un ruolo specifico (perimetro/riempimento). Imposta a zero per evitare del tutto la reimpostazione dell'accelerazione." -#: src/libslic3r/PrintConfig.cpp:194 +#: src/libslic3r/PrintConfig.cpp:228 msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." msgstr "Questa è l'accelerazione che la tua stampante utilizzerà per i bridge. Impostala a zero per disattivare il controllo dell'accelerazione per i bridge." -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:900 msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." msgstr "Questa è l'accelerazione che la stampante utilizzerà per il primo layer. Imposta a zero per disattivare il controllo dell'accelerazione per il primo layer." -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:1026 msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." msgstr "Questa è l'accelerazione che la stampante utilizzerà per il riempimento. Imposta a zero per disattivare il controllo dell'accelerazione per il riempimento." -#: src/libslic3r/PrintConfig.cpp:1400 +#: src/libslic3r/PrintConfig.cpp:1508 msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." msgstr "Questa è l'accelerazione che la stampante utilizzerà per i perimetri. Un valore alto come 9000 solitamente produce dei buoni risultati se l'hardware è all'altezza. Imposta a zero per disattivare il controllo dell'accelerazione per i perimetri." -#: src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1435 msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "Questo è il diametro dell'ugello dell'estrusore (per esempio: 0.5, 0.35 ecc.)" -#: src/libslic3r/PrintConfig.cpp:1227 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1335 +#, c-format msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "Questa è la massima altezza layer stampabile per questo estrusore, usata come limite per l'altezza variabile dei layer e l'altezza dei layer di supporto. L'altezza layer massima raccomandata è il 75% della larghezza di estrusione, in modo da ottenere una buona adesione tra i layer. Se impostato a 0, l'altezza layer è limitata al 75% del diametro dell'ugello." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1398 msgid "This is the lowest printable layer height for this extruder and limits the resolution for variable layer height. Typical values are between 0.05 mm and 0.1 mm." msgstr "Questa è l'altezza minima stampabile per questo estrusore e limita la risoluzione per l'altezza variabile dei layer. Valori tipici sono compresi tra 0.05 mm e 0.1 mm." -#: src/libslic3r/GCode.cpp:639 +#: src/libslic3r/GCode.cpp:624 msgid "This is usually caused by negligibly small extrusions or by a faulty model. Try to repair the model or change its orientation on the bed." msgstr "Questo solitamente è causato da estrusioni molto piccole o da un modello difettoso. Provare a riparare il modello o cambiare il suo orientamento sul piano." -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2358 msgid "This matrix describes volumes (in cubic milimetres) required to purge the new filament on the wipe tower for any given pair of tools." msgstr "Questa matrice descrive il volume (in millimetri cubici) necessario per spurgare il filamento nella torre di spurgo per una qualunque coppia di attrezzi." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 -msgid "This operation is irreversible.\nDo you want to proceed?" -msgstr "Questa operazione è irreversibile.\nVuoi continuare?" +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:928 +msgid "" +"This operation is irreversible.\n" +"Do you want to proceed?" +msgstr "" +"Questa operazione è irreversibile.\n" +"Vuoi continuare?" -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1550 msgid "This option sets the number of perimeters to generate for each layer. Note that Slic3r may increase this number automatically when it detects sloping surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." msgstr "Questa opzione imposta il numero di perimetri da generare per ogni layer. Da notare che Slic3r aumenta questo numero automaticamente quando rileva superfici inclinate che potrebbero beneficiare di un aumento del numero dei perimetri se l'opzione Perimetri aggiuntivi è attiva." -#: src/libslic3r/PrintConfig.cpp:1356 +#: src/libslic3r/PrintConfig.cpp:1464 msgid "This option will drop the temperature of the inactive extruders to prevent oozing. It will enable a tall skirt automatically and move extruders outside such skirt when changing temperatures." msgstr "Questa opzione abbasserà la temperatura degli estrusori inattivi per prevenire oozing (trasudazione). Attiverà automaticamente uno skirt alto e muoverà l'estrusore al di fuori di questo skirt al cambiamento di temperature." -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1073 msgid "This option will limit infill to the areas actually needed for supporting ceilings (it will act as internal support material). If enabled, slows down the G-code generation due to the multiple checks involved." msgstr "Questa opzione limiterà il riempimento alle aree che effettivamente hanno bisogno di un supporto per i soffitti (si comporterà come un materiale di supporto interno). Se attivato, rallenterà la generazione del G-code a causa dei molteplici controlli necessari." -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1066 msgid "This option will switch the print order of perimeters and infill, making the latter first." msgstr "Questa opzione sostituirà l'ordine di stampa dei perimetri e del riempimento, realizzando per primo il secondo." -#: src/libslic3r/PrintConfig.cpp:459 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +msgid "This printer will be shown in the presets list as" +msgstr "La stampante verrà mostrata nell'elenco dei preset come" + +#: src/libslic3r/PrintConfig.cpp:495 msgid "This separate setting will affect the speed of external perimeters (the visible ones). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "Questa impostazione separata avrà effetto sulla velocità dei perimetri esterni (quelli visibili). Se espresso in percentuale (per esempio: 80%) verrà calcolato sull'impostazione della velocità dei perimetri qui sopra. Imposta a zero per automatico." -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1832 msgid "This separate setting will affect the speed of perimeters having radius <= 6.5mm (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "Questa impostazione separata influenzerà la velocità dei perimetri con raggio <=6.5mm (solitamente i buchi). Se espresso in percentuale (per esempio: 80%) sarà calcolato sulla velocità dei perimetri qui sopra. Imposta a zero per automatico." -#: src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1082 msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." msgstr "Questa impostazione applica una sovrapposizione aggiuntiva tra perimetri e riempimento per una migliore unione. Teoricamente non sarebbe necessario, ma i contraccolpi possono causare spazi vuoi. Se espresso in percentuale (per esempio: 15%) viene calcolato sulla larghezza d'estrusione del perimetro." @@ -7981,167 +9416,202 @@ msgstr "Questa impostazione applica una sovrapposizione aggiuntiva tra perimetri msgid "This setting controls the height (and thus the total number) of the slices/layers. Thinner layers give better accuracy but take more time to print." msgstr "Questa impostazione controlla l'altezza (e quindi il numero totale) degli strati/layer. Un layer più sottile sarà più preciso ma sarà necessario più tempo per stampare." -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "This setting represents the maximum speed of your fan." msgstr "Questa impostazione rappresenta la velocità massima della ventola." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1389 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "Questa impostazione rappresenta la PWM minima (modulazione di larghezza di impulso) che la ventola necessita per lavorare." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1944 msgid "This start procedure is inserted at the beginning, after any printer start gcode (and after any toolchange to this filament in case of multi-material printers). This is used to override settings for a specific filament. If PrusaSlicer detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Questa procedura di inizio è inserita all'inizio, dopo un qualsiasi gcode iniziale (e dopo un qualunque cambio attrezzo per questo filamento nel caso di stampanti multi-material). Viene utilizzato per scavalcare le impostazioni per un filamento specifico. Se PrusaSlicer rileva M104, M109, M140 o M190 nei codici personalizzati, questi comandi non vengono anteposti automaticamente così si è liberi di personalizzare liberamente l'ordine dei comandi di riscaldamento e altre azioni personalizzate. Da notare che è possibile utilizzare delle variabili segnaposto per tutte le impostazioni di PrusaSlicer, così è possibile inserire un comando \"M109 S[first_layer_temperature]\" ovunque lo si desideri. Se hai estrusori multipli, il gcode è processato nell'ordine degli estrusori." -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Questa procedura di inizio è inserita all'inizio, dopo che il piano ha raggiunto la temperatura impostata e appena l'estrusore inizia il riscaldamento, e prima che l'estrusore completi il riscaldamento. Se PrusaSlicer rileva M104 o M190 nel tuo codice personalizzato, questi comandi non vengono anteposti automaticamente così si è liberi di personalizzare l'ordine dei comandi di riscaldamento e altre azioni personalizzate. Da notare che è possibile utilizzare delle variabili segnaposto per tutte le impostazioni di PrusaSlicer, così è possibile inserire un comando \"M109 S[first_layer_temperature]\" ovunque si desideri." -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:731 msgid "This string is edited by RammingDialog and contains ramming specific parameters." msgstr "Questa stringa viene controllata da RammingDialog e contiene parametri specifici del ramming." -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2429 msgid "This value will be added (or subtracted) from all the Z coordinates in the output G-code. It is used to compensate for bad Z endstop position: for example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." msgstr "Questo valore sarà aggiunto (o sottratto) da tutte le coordinate Z nel G-code di output. Viene utilizzato per compensare una posizione di finecorsa Z errata: per esempio, se la posizione minima del finecorsa rimane in realtà 0.3mm lontano dal piano, imposta questo valore a -0.3 (o sistema il finecorsa)." -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2351 msgid "This vector saves required volumes to change from/to each tool used on the wipe tower. These values are used to simplify creation of the full purging volumes below." msgstr "Questo vettore salva il volume necessario per cambiare da/a ogni attrezzo usato per la torre di spurgo. Questi valori vengono usati per semplificare la creazione dei volumi di spurgo completi." #: src/slic3r/GUI/UpdateDialogs.cpp:216 -#, possible-c-format -msgid "This version of %s is not compatible with currently installed configuration bundles.\nThis probably happened as a result of running an older %s after using a newer one.\n\nYou may either exit %s and try again with a newer version, or you may re-run the initial configuration. Doing so will create a backup snapshot of the existing configuration before installing files compatible with this %s." -msgstr "Questa versione di %s non è compatibile con gli attuali gruppi di configurazioni installati.\nProbabilmente è causato dall'esecuzione di una vecchia versione di %s dopo averne utilizzata una più recente.\n\nProva a chiudere %s e riprovare con una versione più recente, o prova ad effettuare nuovamente la configurazione iniziale. Così facendo creerai un'istantanea di backup della configurazione esistente prima di istallare i file compatibili con questo %s." +#, c-format +msgid "" +"This version of %s is not compatible with currently installed configuration bundles.\n" +"This probably happened as a result of running an older %s after using a newer one.\n" +"\n" +"You may either exit %s and try again with a newer version, or you may re-run the initial configuration. Doing so will create a backup snapshot of the existing configuration before installing files compatible with this %s." +msgstr "" +"Questa versione di %s non è compatibile con gli attuali gruppi di configurazioni installati.\n" +"Probabilmente è causato dall'esecuzione di una vecchia versione di %s dopo averne utilizzata una più recente.\n" +"\n" +"Prova a chiudere %s e riprovare con una versione più recente, o prova ad effettuare nuovamente la configurazione iniziale. Così facendo creerai un'istantanea di backup della configurazione esistente prima di istallare i file compatibili con questo %s." -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2601 msgid "This will apply a gamma correction to the rasterized 2D polygons. A gamma value of zero means thresholding with the threshold in the middle. This behaviour eliminates antialiasing without losing holes in polygons." msgstr "Questo applicherà una correzione gamma ai poligoni 2D rasterizzati. Un valore gamma di zero comporta una calcolo della soglia nel mezzo. Questo comportamento elimina l'antialiasing senza perdere i fori nei poligoni." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Threads" msgstr "Thread" -#: src/libslic3r/PrintConfig.cpp:2082 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." msgstr "I thread sono utilizzati per parallelizzare operazioni di lunga durata. Il numero di thread ottimali è leggermente superiore al numero di core / processori disponibili." -#: src/slic3r/GUI/Tab.cpp:2093 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "Threshold:" +msgstr "Soglia:" + +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Tilt" msgstr "Inclina" -#: src/slic3r/GUI/Tab.cpp:2094 +#: src/slic3r/GUI/Tab.cpp:2264 msgid "Tilt time" msgstr "Tempo di tilt" +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "Tempo" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:723 msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." msgstr "Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per il caricamento del nuovo filamento durante il cambio attrezzo (quando viene eseguito il T code). Questa durata viene aggiunta alla stima del tempo totale di stampa del G-code." -#: src/libslic3r/PrintConfig.cpp:702 +#: src/libslic3r/PrintConfig.cpp:738 msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." msgstr "Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per lo scaricamento del nuovo filamento durante il cambio attrezzo (quando viene eseguito il T code). Questa durata viene aggiunta alla stima del tempo totale di stampa del G-code." -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the fast tilt" msgstr "Tempo di inclinazione veloce" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Time of the slow tilt" msgstr "Tempo di inclinazione lenta" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:677 msgid "Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible materials that may need more time to shrink to original dimensions." msgstr "Tempo di attesa dopo lo scarico del filamento. Può aiutare ad ottenere cambi affidabili con materiali flessibili che potrebbero richiedere più tempo per tornare alle dimensioni originali." -#: src/slic3r/GUI/Tab.cpp:966 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "to" +msgstr "a" + +#: src/slic3r/GUI/Tab.cpp:1284 msgid "To do that please specify a new name for the preset." msgstr "Per favore specifica un nuovo nome per il preset per effettuare l'operazione." -#: src/slic3r/GUI/Plater.cpp:4014 +#: src/slic3r/GUI/Plater.cpp:3934 msgid "To objects" msgstr "In oggetti" -#: src/slic3r/GUI/Plater.cpp:4016 +#: src/slic3r/GUI/Plater.cpp:3936 msgid "To parts" msgstr "In parti" -#: src/slic3r/GUI/Tab.cpp:1756 +#: src/slic3r/Utils/Http.cpp:82 +msgid "To specify the system certificate store manually, please set the %1% environment variable to the correct CA bundle and restart the application." +msgstr "Per specificare manualmente l'archivio dei certificati di sistema, impostare la variabile di ambiente %1% sul pacchetto CA corretto e riavviare l'applicazione." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." msgstr "Per utilizzare un file CA personalizzato, importa il tuo file CA sul Certificate Store / Keychain." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 -#, possible-c-format +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 +#, c-format msgid "Toggle %c axis mirroring" msgstr "Attiva / disattiva il mirroring dell'asse %c" -#: src/libslic3r/Zipper.cpp:34 +#: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "troppi file" -#: src/libslic3r/SLAPrintSteps.cpp:190 -msgid "Too much overlapping holes." +#: src/libslic3r/SLAPrintSteps.cpp:192 +msgid "Too many overlapping holes." msgstr "Troppi fori sovrapposti." -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 -#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 +#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 +#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 +#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 +#: src/libslic3r/GCode/PreviewData.cpp:362 msgid "Tool" msgstr "Attrezzo" #: src/slic3r/GUI/WipeTowerDialog.cpp:276 msgid "Tool #" -msgstr "Utensile #" +msgstr "Attrezzo #" -#: src/slic3r/GUI/Tab.cpp:2000 src/libslic3r/PrintConfig.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 msgid "Tool change G-code" msgstr "G-code cambio attrezzo" -#: src/slic3r/GUI/Tab.cpp:1491 +#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +msgid "Tool changes" +msgstr "Cambi attrezzo" + +#: src/slic3r/GUI/GUI_Preview.cpp:1479 +msgid "Tool marker" +msgstr "Indicatore attrezzo" + +#: src/slic3r/GUI/GCodeViewer.cpp:223 +msgid "Tool position" +msgstr "Posizione attrezzo" + +#: src/slic3r/GUI/Tab.cpp:1837 msgid "Toolchange parameters with single extruder MM printers" msgstr "Parametri di cambio attrezzo per stampanti MM con estrusore singolo" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:662 src/libslic3r/PrintConfig.cpp:2132 -#: src/libslic3r/PrintConfig.cpp:2141 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 msgid "Top" msgstr "Superiore" -#: src/slic3r/GUI/PresetHints.cpp:304 +#: src/slic3r/GUI/PresetHints.cpp:302 msgid "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "Suggerimento per lo spessore del guscio Superiore / Inferiore: non disponibile a causa di un'altezza dello strato non valida." -#: src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:449 msgid "Top fill pattern" msgstr "Trama riempimento superiore" -#: src/slic3r/GUI/PresetHints.cpp:323 +#: src/slic3r/GUI/PresetHints.cpp:321 msgid "Top is open." msgstr "La parte superiore è aperta." -#: src/slic3r/GUI/PresetHints.cpp:317 +#: src/slic3r/GUI/PresetHints.cpp:315 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "Il guscio superiore è spesso %1% mm per l'altezza layer %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:192 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "riempimento solido superiore" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 +#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 +#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Top solid infill" msgstr "Riempimento solido superiore" -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2278 msgid "Top solid layers" msgstr "Layer solidi superiori" -#: src/slic3r/GUI/MainFrame.cpp:662 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 msgid "Top View" msgstr "Vista superiore" @@ -8157,148 +9627,179 @@ msgstr "Volume totale di ramming" msgid "Total ramming time" msgstr "Durata totale di ramming" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:640 +msgid "Transfer" +msgstr "Trasferisci" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:745 +msgid "Transfer the selected options to the newly selected preset \"%1%\"." +msgstr "Trasferire le opzioni selezionate nel nuovo preset selezionato \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Transfer the selected settings to the newly selected preset." +msgstr "Trasferisci le impostazioni selezionate nel nuovo preset selezionato." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:561 msgid "Translate" msgstr "Traduci" -#: src/slic3r/GUI/Mouse3DController.cpp:300 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:282 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Translation" msgstr "Traduzione" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 +#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 msgid "Travel" msgstr "Spostamento" -#: src/libslic3r/PrintConfig.cpp:845 +#: src/libslic3r/PrintConfig.cpp:883 msgid "Triangles" msgstr "Triangoli" -#: src/libslic3r/PrintConfig.cpp:3448 +#: src/libslic3r/PrintConfig.cpp:3647 msgid "Try to repair any non-manifold meshes (this option is implicitly added whenever we need to slice the model to perform the requested action)." msgstr "Prova a riparare mesh non-manifold (questa opzione viene aggiunta implicitamente ogni volta che effettuiamo uno slice sul modello per effettuare l'azione richiesta)." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +msgid "Type here the name of your printer device" +msgstr "Inserisci qui il nome della tua stampante" + +#: src/libslic3r/PrintConfig.cpp:1575 msgid "Type of the printer." msgstr "Tipologia stampante." -#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "Tipo:" -#: src/slic3r/GUI/Plater.cpp:3428 +#: src/slic3r/GUI/OpenGLManager.cpp:275 +#, c-format +msgid "" +"Unable to load the following shaders:\n" +"%s" +msgstr "" +"Impossibile caricare i seguenti shader:\n" +"%s" + +#: src/slic3r/GUI/Plater.cpp:3233 msgid "Unable to reload:" msgstr "Impossibile ricaricare:" -#: src/libslic3r/Zipper.cpp:32 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:137 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:146 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:845 +msgid "Undef" +msgstr "Undef" + +#: src/libslic3r/miniz_extension.cpp:91 msgid "undefined error" msgstr "errore non definito" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/MainFrame.cpp:581 +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Undo" msgstr "Annulla" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 -#, possible-c-format +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 +#, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" msgstr[0] "Annulla %1$d Azione" msgstr[1] "Annulla %1$d Azioni" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Undo History" -msgstr "Storia Annulla" +msgstr "Cronologia Annulla" -#: src/libslic3r/Zipper.cpp:56 +#: src/libslic3r/miniz_extension.cpp:115 msgid "unexpected decompressed size" msgstr "dimensione decompressa imprevista" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:310 msgid "Unknown" msgstr "Sconosciuto" -#: src/slic3r/Utils/Duet.cpp:82 src/slic3r/Utils/Duet.cpp:137 -#: src/slic3r/Utils/FlashAir.cpp:119 src/slic3r/Utils/FlashAir.cpp:140 -#: src/slic3r/Utils/FlashAir.cpp:156 +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 +#: src/slic3r/Utils/FlashAir.cpp:159 msgid "Unknown error occured" msgstr "Si è verificato un errore sconosciuto" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 +msgid "Unknown error occured during exporting G-code." +msgstr "Si è verificato un errore sconosciuto durante l'esportazione del G-code." + #: src/slic3r/GUI/WipeTowerDialog.cpp:263 msgid "unloaded" msgstr "scaricato" -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Unloading speed" msgstr "Velocità di scaricamento" -#: src/libslic3r/PrintConfig.cpp:632 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Unloading speed at the start" msgstr "Velocità iniziale di scaricamento" -#: src/slic3r/GUI/Tab.cpp:3256 +#: src/slic3r/GUI/Tab.cpp:3693 msgid "UNLOCKED LOCK" msgstr "LUCCHETTO APERTO" -#: src/slic3r/GUI/Tab.cpp:3282 -msgid "UNLOCKED LOCK icon indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\nClick to reset all settings for current option group to the system (or default) values." -msgstr "L'icona del LUCCHETTO APERTO indica che alcune impostazioni sono state modificate e non sono uguali ai valori di sistema (o predefinite) per il gruppo di opzioni corrente.\nClicca qui per reimpostare tutte le impostazioni del gruppo corrente ai valori di sistema (o predefiniti)." +#: src/slic3r/GUI/Tab.cpp:3719 +msgid "" +"UNLOCKED LOCK icon indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" +"Click to reset all settings for current option group to the system (or default) values." +msgstr "" +"L'icona del LUCCHETTO APERTO indica che alcune impostazioni sono state modificate e non sono uguali ai valori di sistema (o predefinite) per il gruppo di opzioni corrente.\n" +"Clicca qui per reimpostare tutte le impostazioni del gruppo corrente ai valori di sistema (o predefiniti)." -#: src/slic3r/GUI/Tab.cpp:3297 -msgid "UNLOCKED LOCK icon indicates that the value was changed and is not equal to the system (or default) value.\nClick to reset current value to the system (or default) value." +#: src/slic3r/GUI/Tab.cpp:3734 +msgid "" +"UNLOCKED LOCK icon indicates that the value was changed and is not equal to the system (or default) value.\n" +"Click to reset current value to the system (or default) value." msgstr "L'icona del LUCCHETTO APERTO indica che il valore è stato cambiato e non è uguale al valore di sistema (o predefinito). Clicca per reimpostare il valore corrente al valore di sistema (o predefinito)." -#: src/slic3r/GUI/Plater.cpp:5203 -#, possible-c-format -msgid "Unmounting successful. The device %s(%s) can now be safely removed from the computer." -msgstr "Espulsione riuscita. Il dispositivo %s(%s) adesso può essere rimosso in sicurezza dal computer." - -#: src/slic3r/GUI/GUI_Preview.cpp:255 -msgid "Unretractions" -msgstr "De-retrazioni" - -#: src/slic3r/GUI/Tab.cpp:2947 -msgid "Unsaved Changes" -msgstr "Modifiche non salvate" - -#: src/slic3r/GUI/GUI_App.cpp:935 -msgid "Unsaved Presets" -msgstr "Preset non salvati" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Unselect gizmo or clear selection" msgstr "Deseleziona gizmo o pulisci selezione" -#: src/libslic3r/Zipper.cpp:60 +#: src/libslic3r/miniz_extension.cpp:119 msgid "unsupported central directory size" msgstr "dimensione della directory centrale non supportata" -#: src/libslic3r/Zipper.cpp:40 +#: src/libslic3r/miniz_extension.cpp:99 msgid "unsupported encryption" msgstr "criptaggio non supportato" -#: src/libslic3r/Zipper.cpp:42 +#: src/libslic3r/miniz_extension.cpp:101 msgid "unsupported feature" msgstr "caratteristica non supportata" -#: src/libslic3r/Zipper.cpp:38 +#: src/libslic3r/miniz_extension.cpp:97 msgid "unsupported method" msgstr "metodo non supportato" -#: src/libslic3r/Zipper.cpp:50 +#: src/libslic3r/miniz_extension.cpp:109 msgid "unsupported multidisk archive" msgstr "archivio multidisk non supportato" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:292 +#: src/slic3r/GUI/OpenGLManager.cpp:267 msgid "Unsupported OpenGL version" msgstr "Versione OpenGL non supportata" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3420 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 msgid "Unsupported selection" msgstr "Selezione non supportata" -#: src/slic3r/GUI/GLCanvas3D.cpp:955 -#, possible-c-format +#: src/slic3r/GUI/GCodeViewer.cpp:2183 +msgid "up to" +msgstr "fino a" + +#: src/slic3r/GUI/GLCanvas3D.cpp:961 +#, c-format msgid "up to %.2f mm" msgstr "fino a %.2f mm" @@ -8306,15 +9807,15 @@ msgstr "fino a %.2f mm" msgid "Update available" msgstr "Aggiornamento disponibile" -#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "Aggiorna automaticamente i Preset integrati" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Updates" msgstr "Aggiornamenti" -#: src/slic3r/GUI/ConfigWizard.cpp:786 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 msgid "Updates are never applied without user's consent and never overwrite user's customized settings." msgstr "Gli aggiornamenti non vengono mai applicati senza il consenso dell'utente e non sovrascrivono mai i settaggi personalizzati dell'utente." @@ -8322,7 +9823,7 @@ msgstr "Gli aggiornamenti non vengono mai applicati senza il consenso dell'utent msgid "Upgrade" msgstr "Aggiorna" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "Carica un'immagine del firmware su una stampante basata su Arduino" @@ -8338,101 +9839,118 @@ msgstr "Carica all'Host di stampa con il seguente nome file:" msgid "Uploading" msgstr "Caricamento" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper Layer" msgstr "Layer superiore" -#: src/slic3r/GUI/Tab.cpp:1900 -msgid "USB/Serial connection" -msgstr "Connessione USB/Seriale" - -#: src/libslic3r/PrintConfig.cpp:1662 -msgid "USB/serial port for printer connection." -msgstr "Porta USB/Seriale per connessione stampante." - -#: src/slic3r/GUI/DoubleSlider.cpp:1147 +#: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Usa un altro estrusore" -#: src/slic3r/GUI/Preferences.cpp:143 +#: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Utilizza dimensione personalizzata per le icone degli strumenti" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/slic3r/GUI/Preferences.cpp:268 +msgid "Use environment map" +msgstr "Utilizza mappa ambientale" + +#: src/libslic3r/PrintConfig.cpp:2304 msgid "Use firmware retraction" msgstr "Usa retrazione firmware" +#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +msgid "Use for search" +msgstr "Usa per cercare" + +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" +msgstr "Utilizza per la stima del tempo" + #: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Usa la barra ( / ) come separatore di cartella se necessario." -#: src/slic3r/GUI/Preferences.cpp:126 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use free camera" msgstr "Usa l'inquadratura libera" -#: src/libslic3r/PrintConfig.cpp:2780 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Use inches" +msgstr "Usa pollici" + +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Use pad" msgstr "Utilizza pad" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:184 msgid "Use perspective camera" msgstr "Usa la visuale prospettica" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2311 msgid "Use relative E distances" msgstr "Usa distanze E relative" -#: src/slic3r/GUI/Preferences.cpp:104 +#: src/slic3r/GUI/Preferences.cpp:135 msgid "Use Retina resolution for the 3D scene" msgstr "Usa risoluzione Retina per la scena 3D" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." msgstr "Usa questa opzione per impostare la lettera dell'asse associato all'estrusore della tua stampante (solitamente E, ma alcune stampanti utilizzano A)." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:2035 msgid "Use this setting to rotate the support material pattern on the horizontal plane." msgstr "Usa questa impostazione per ruotare la trama del materiale di supporto sul piano orizzontale." -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2318 msgid "Use volumetric E" msgstr "Utilizza E volumetrico" -#: src/slic3r/GUI/DoubleSlider.cpp:1171 +#: src/slic3r/GUI/DoubleSlider.cpp:1298 msgid "used" msgstr "usato" -#: src/slic3r/GUI/Plater.cpp:237 +#: src/slic3r/GUI/Plater.cpp:243 msgid "Used Filament (g)" msgstr "Filamento usato (g)" -#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 +#: src/slic3r/GUI/Plater.cpp:1141 +msgid "Used Filament (in)" +msgstr "Filamento usato (in)" + +#: src/slic3r/GUI/Plater.cpp:1153 +msgid "Used Filament (in³)" +msgstr "Filamento usato (in³)" + +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 msgid "Used Filament (m)" msgstr "Filamento usato (m)" -#: src/slic3r/GUI/Plater.cpp:236 +#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 msgid "Used Filament (mm³)" msgstr "Filamento usato (mm³)" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1100 msgid "Used Material (ml)" msgstr "Materiale Usato (ml)" -#: src/slic3r/GUI/Plater.cpp:238 +#: src/slic3r/GUI/Plater.cpp:244 msgid "Used Material (unit)" msgstr "Materiale usato (unità)" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 msgid "User" msgstr "Utente" -#: src/slic3r/GUI/Preset.cpp:1168 src/slic3r/GUI/Preset.cpp:1288 -#: src/slic3r/GUI/PresetBundle.cpp:1677 +#: src/slic3r/GUI/PresetComboBoxes.cpp:230 +#: src/slic3r/GUI/PresetComboBoxes.cpp:778 +#: src/slic3r/GUI/PresetComboBoxes.cpp:934 msgid "User presets" msgstr "Preset utente" -#: src/libslic3r/Zipper.cpp:90 +#: src/libslic3r/miniz_extension.cpp:149 msgid "validation failed" msgstr "convalida non riuscita" @@ -8444,31 +9962,31 @@ msgstr "Valore uguale a quello di sistema" msgid "Value was changed and is not equal to the system value or the last saved preset" msgstr "Il valore è stato modificato e non è uguale al valore di sistema o all'ultimo preset salvato" -#: src/slic3r/GUI/Tab.cpp:2202 +#: src/slic3r/GUI/Tab.cpp:2371 msgid "Values in this column are for Normal mode" msgstr "I valori in questa colonna sono per la modalità Normale" -#: src/slic3r/GUI/Tab.cpp:2208 +#: src/slic3r/GUI/Tab.cpp:2377 msgid "Values in this column are for Stealth mode" msgstr "I valori in questa colonna sono per la modalità Silenziosa" -#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 msgid "Variable layer height" msgstr "Altezza layer variabile" -#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +#: src/slic3r/GUI/GLCanvas3D.cpp:1786 msgid "Variable layer height - Adaptive" msgstr "Altezza layer variabile - Adattivo" -#: src/slic3r/GUI/GLCanvas3D.cpp:599 +#: src/slic3r/GUI/GLCanvas3D.cpp:565 msgid "Variable layer height - Manual edit" msgstr "Altezza layer variabile - Modifica manuale" -#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +#: src/slic3r/GUI/GLCanvas3D.cpp:1778 msgid "Variable layer height - Reset" msgstr "Altezza layer variabile - Ripristina" -#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +#: src/slic3r/GUI/GLCanvas3D.cpp:1794 msgid "Variable layer height - Smooth all" msgstr "Altezza layer variabile - Leviga tutto" @@ -8476,19 +9994,20 @@ msgstr "Altezza layer variabile - Leviga tutto" msgid "variants" msgstr "varianti" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 msgid "vendor" msgstr "produttore" -#: src/slic3r/GUI/ConfigWizard.cpp:565 +#: src/slic3r/GUI/ConfigWizard.cpp:589 msgid "Vendor:" msgstr "Fornitore:" -#: src/libslic3r/PrintConfig.cpp:928 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Verbose G-code" msgstr "G-code verboso" -#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "Versione" @@ -8496,24 +10015,36 @@ msgstr "Versione" msgid "version" msgstr "versione" -#: src/slic3r/GUI/Tab.cpp:1053 +#: src/slic3r/GUI/Tab.cpp:1375 msgid "Vertical shells" msgstr "Gusci verticali" -#: src/slic3r/GUI/GUI_Preview.cpp:218 +#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Vista" -#: src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:1172 msgid "View mode" msgstr "Modalità Visualizzazione" -#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 -#: src/libslic3r/SLAPrintSteps.cpp:461 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +msgid "" +"Visit \"Preferences\" and check \"%1%\"\n" +"to be asked about unsaved changes again." +msgstr "" +"Visita \"Prefereze\" e controlla \"%1%\"\n" +"per ricevere nuovamente informazioni sui cambiamenti non salvati." + +#: src/libslic3r/PrintConfig.cpp:3553 +msgid "Visualize an already sliced and saved G-code" +msgstr "Visualizza un G-code già processato e salvato" + +#: src/libslic3r/SLAPrintSteps.cpp:411 src/libslic3r/SLAPrintSteps.cpp:420 +#: src/libslic3r/SLAPrintSteps.cpp:459 msgid "Visualizing supports" msgstr "Visualizzazione supporti" -#: src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/Plater.cpp:167 msgid "Volume" msgstr "Volume" @@ -8521,23 +10052,23 @@ msgstr "Volume" msgid "Volume to purge (mm³) when the filament is being" msgstr "Il volume di spurgo (mm³) quando il filamento viene" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Volumes in Object reordered" msgstr "Volumi in Oggetto riordinati" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "Volumetrico" -#: src/slic3r/GUI/Tab.cpp:1591 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Volumetric flow hints not available" msgstr "Suggerimenti sul flusso volumetrico non disponibili" -#: src/slic3r/GUI/GUI_Preview.cpp:226 +#: src/slic3r/GUI/GUI_Preview.cpp:280 msgid "Volumetric flow rate" msgstr "Flusso volumetrico" -#: src/libslic3r/GCode/PreviewData.cpp:355 +#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 msgid "Volumetric flow rate (mm³/s)" msgstr "Flusso volumetrico (mm³/s)" @@ -8545,151 +10076,166 @@ msgstr "Flusso volumetrico (mm³/s)" msgid "Volumetric speed" msgstr "Velocità volumetrica" -#: src/libslic3r/PrintConfig.cpp:2915 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Wall thickness" msgstr "Spessore parete" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1270 src/slic3r/GUI/GUI.cpp:251 -#: src/slic3r/GUI/Tab.cpp:3084 src/slic3r/GUI/WipeTowerDialog.cpp:45 -#: src/slic3r/GUI/WipeTowerDialog.cpp:366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Attenzione" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/NotificationManager.cpp:672 +#: src/slic3r/GUI/NotificationManager.cpp:687 +#: src/slic3r/GUI/NotificationManager.cpp:702 +msgid "WARNING:" +msgstr "ATTENZIONE:" + +#: src/slic3r/GUI/ConfigWizard.cpp:449 msgid "Welcome" msgstr "Benvenuto" -#: src/slic3r/GUI/ConfigWizard.cpp:427 -#, possible-c-format +#: src/slic3r/GUI/ConfigWizard.cpp:445 +#, c-format msgid "Welcome to the %s Configuration Assistant" msgstr "Benvenuto nell'Assistente di Configurazione di %s" -#: src/slic3r/GUI/ConfigWizard.cpp:429 -#, possible-c-format +#: src/slic3r/GUI/ConfigWizard.cpp:447 +#, c-format msgid "Welcome to the %s Configuration Wizard" msgstr "Benvenuto nella Configurazione Guidata di %s" -#: src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/SavePresetDialog.cpp:310 +msgid "What would you like to do with \"%1%\" preset after saving?" +msgstr "Cosa desideri fare con il preset \"%1%\" dopo il salvataggio?" + +#: src/slic3r/GUI/Preferences.cpp:114 msgid "When checked, the print and filament presets are shown in the preset editor even if they are marked as incompatible with the active printer" msgstr "Quando attivato, i preset di stampa e di filamento vengono mostrati nell'editor dei preset anche se sono segnati come incompatibili con la stampante attiva" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/Preferences.cpp:156 +msgid "When closing the application, always ask for unsaved changes" +msgstr "Alla chiusura dell'applicazione, chiedere sempre riguardo le modifiche non salvate" + +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "when printing" msgstr "durante la stampa" -#: src/libslic3r/PrintConfig.cpp:253 +#: src/libslic3r/PrintConfig.cpp:287 msgid "When printing multi-material objects, this settings will make Slic3r to clip the overlapping object parts one by the other (2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)." msgstr "Durante la stampa di oggetti multi-materiali, questa impostazione farà si che Slic3r unisca le parti sovrapposte dell'oggetto (la seconda sarà collegata con la prima, la terza parte sarà collegata con la prima e la seconda ecc..)." -#: src/libslic3r/PrintConfig.cpp:305 +#: src/libslic3r/PrintConfig.cpp:339 msgid "When printing multiple objects or copies, this feature will complete each object before moving onto next one (and starting it from its bottom layer). This feature is useful to avoid the risk of ruined prints. Slic3r should warn and prevent you from extruder collisions, but beware." msgstr "Durante la stampa di oggetti multipli o copie, questa funzione completerà ciascun oggetto prima di spostarsi al prossimo (e iniziando la stampa dal primo layer). Questa funzione è utile per evitare il rischio di stampe rovinate. Slic3r dovrebbe avvisarti e prevenire collisioni con l'estrusore, ma fai attenzione." -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:933 msgid "When printing with very low layer heights, you might still want to print a thicker bottom layer to improve adhesion and tolerance for non perfect build plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." msgstr "Durante la stampa di layer molto bassi, potresti comunque aver bisogno di stampare layer inferiori più spessi per migliorare l'adesione e la tolleranza per piani di stampa non perfetti. Questo può essere espresso in valore assoluto o in percentuale (per esempio: 150%) sull'altezza layer predefinita." -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1661 msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." msgstr "Quando viene attivata la retrazione prima del cambio attrezzo, il filamento è ritirato per la quantità specificata (la lunghezza è misurata sul filamento grezzo, prima che questo entri dentro l'estrusore)." -#: src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1653 msgid "When retraction is triggered, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." msgstr "Quando viene attivata la retrazione, il filamento viene ritirato per la quantità specificata (la lunghezza è misurata sul filamento grezzo, prima che questo entri dentro l'estrusore)." -#: src/libslic3r/PrintConfig.cpp:1391 +#: src/libslic3r/PrintConfig.cpp:1499 msgid "When set to zero, the distance the filament is moved from parking position during load is exactly the same as it was moved back during unload. When positive, it is loaded further, if negative, the loading move is shorter than unloading." msgstr "Quando impostato a zero, la distanza percorsa dal filamento in posizione di parcheggio durante il caricamento è esattamente uguale a quella contraria durante lo scaricamento. Quando il valore è positivo, viene caricato maggiormente, se il valore è negativo il movimento di caricamento è più corto dello scaricamento." -#: src/libslic3r/PrintConfig.cpp:1238 +#: src/libslic3r/PrintConfig.cpp:1346 msgid "When setting other speed settings to 0 Slic3r will autocalculate the optimal speed in order to keep constant extruder pressure. This experimental setting is used to set the highest print speed you want to allow." msgstr "Quando le altre velocità sono impostate a 0, Slic3r calcolerà automaticamente la velocità ottimale in modo da mantenere costante la pressione dell'estrusore. Questa impostazione sperimentale è utilizzata per impostare la velocità massima di stampa che vuoi permettere." -#: src/libslic3r/PrintConfig.cpp:1597 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Quando la retrazione è compensata dopo un cambio di attrezzo, l'estrusore spingerà questa quantità addizionale di filamento." -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1697 msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Quando la retrazione è compensata dopo un movimento di spostamento, l'estrusore spingerà questa quantità addizionale di filamento. Questa impostazione è raramente necessaria." -#: src/slic3r/GUI/Tab.cpp:3263 +#: src/slic3r/GUI/Tab.cpp:3700 msgid "WHITE BULLET" msgstr "PALLINO BIANCO" -#: src/slic3r/GUI/Tab.cpp:3285 +#: src/slic3r/GUI/Tab.cpp:3722 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "L'icona a forma di PALLINO BIANCO indica un preset non di sistema (o non predefinito)." -#: src/slic3r/GUI/Tab.cpp:3288 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." msgstr "L'icona a forma di PALLINO BIANCO indica che le impostazioni corrispondono agli ultimi preset salvati per il gruppo di opzioni corrente." -#: src/slic3r/GUI/Tab.cpp:3303 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." msgstr "L'icona a forma di PALLINO BIANCO indica che il valore è lo stesso dell'ultimo preset salvato." -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 +#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 msgid "Width" msgstr "Larghezza" -#: src/libslic3r/GCode/PreviewData.cpp:349 +#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 msgid "Width (mm)" msgstr "Larghezza (mm)" -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Width from the back sphere center to the front sphere center" msgstr "Spessore dal centro della sfera posteriore al centro della sfera anteriore" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "Width of a wipe tower" msgstr "Larghezza della torre di spurgo" -#: src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3055 msgid "Width of the connector sticks which connect the object and the generated pad." msgstr "Larghezza delle barre di connessione che collegano l'oggetto e il pad generato." -#: src/libslic3r/PrintConfig.cpp:2354 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Width of the display" msgstr "Larghezza del display" -#: src/slic3r/GUI/PresetHints.cpp:48 +#: src/slic3r/GUI/PresetHints.cpp:47 msgid "will always run at %1%%%" msgstr "lavorerà sempre a %1%%%" -#: src/slic3r/GUI/PresetHints.cpp:55 +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "rimarrà spenta." -#: src/libslic3r/PrintConfig.cpp:2441 +#: src/libslic3r/PrintConfig.cpp:2584 msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." msgstr "Gonfierà o sgonfierà i poligoni 2D processati in base al segno della correzione." -#: src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "Wipe into this object" msgstr "Spurgo in questo oggetto" -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Wipe into this object's infill" msgstr "Spurgo nel riempimento di questo oggetto" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:619 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2260 +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:99 +#: src/slic3r/GUI/GUI_ObjectList.cpp:658 src/libslic3r/PrintConfig.cpp:2395 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Wipe options" msgstr "Opzioni pulizia" -#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1191 -#: src/libslic3r/ExtrusionEntity.cpp:321 +#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 +#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Wipe tower" msgstr "Torre di spurgo" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "wipe tower" msgstr "torre di spurgo" -#: src/slic3r/GUI/ConfigManipulation.cpp:120 -#: src/slic3r/GUI/ConfigManipulation.cpp:140 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Wipe Tower" msgstr "Torre di spurgo" @@ -8697,121 +10243,147 @@ msgstr "Torre di spurgo" msgid "Wipe tower - Purging volume adjustment" msgstr "Torre di spurgo - Regolazione volume di spurgo" -#: src/slic3r/GUI/Tab.cpp:1488 +#: src/slic3r/GUI/Tab.cpp:1834 msgid "Wipe tower parameters" msgstr "Parametri torre di spurgo" -#: src/libslic3r/PrintConfig.cpp:2245 +#: src/libslic3r/PrintConfig.cpp:2388 msgid "Wipe tower rotation angle" msgstr "Angolo di rotazione della torre di spurgo" -#: src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Angolo di rotazione della torre di spurgo rispetto all'asse X." -#: src/libslic3r/PrintConfig.cpp:2193 +#: src/libslic3r/PrintConfig.cpp:2336 msgid "Wipe while retracting" msgstr "Pulisci durante la retrazione" -#: src/slic3r/GUI/PresetHints.cpp:225 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "with a volumetric rate" msgstr "con una portata volumetrica" -#: src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1638 msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." msgstr "Con estrusori bowden, potrebbe essere conveniente effettuare una certa retrazione veloce prima di effettuare un movimento di pulizia." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "With sheath around the support" msgstr "Con guaina attorno al supporto" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:68 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:111 msgid "World coordinates" msgstr "Coordinate reali" #: src/slic3r/GUI/UpdateDialogs.cpp:92 -msgid "Would you like to install it?\n\nNote that a full configuration snapshot will be created first. It can then be restored at any time should there be a problem with the new version.\n\nUpdated configuration bundles:" -msgstr "Vuoi installarlo?\n\nNota: verrà prima creata un'istantanea della configurazione completa. Potrà essere ripristinata in qualunque momento se dovessero presentarsi problemi con la nuova versione.\n\nGruppo di configurazioni aggiornate:" +msgid "" +"Would you like to install it?\n" +"\n" +"Note that a full configuration snapshot will be created first. It can then be restored at any time should there be a problem with the new version.\n" +"\n" +"Updated configuration bundles:" +msgstr "" +"Vuoi installarlo?\n" +"\n" +"Nota: verrà prima creata un'istantanea della configurazione completa. Potrà essere ripristinata in qualunque momento se dovessero presentarsi problemi con la nuova versione.\n" +"\n" +"Gruppo di configurazioni aggiornate:" -#: src/libslic3r/Zipper.cpp:92 +#: src/libslic3r/miniz_extension.cpp:151 msgid "write calledback failed" msgstr "scrittura richiamo non riuscita" -#: src/libslic3r/PrintConfig.cpp:3382 +#: src/libslic3r/PrintConfig.cpp:3581 msgid "Write information about the model to the console." msgstr "Scrivi informazioni sul modello alla console." -#: src/slic3r/Utils/Duet.cpp:131 +#: src/slic3r/Utils/Duet.cpp:133 msgid "Wrong password" msgstr "Password errata" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2368 msgid "X coordinate of the left front corner of a wipe tower" msgstr "Coordinata X dell'angolo frontale sinistro di una torre di spurgo" -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:2021 msgid "XY separation between an object and its support" msgstr "Separazione XY tra un oggetto e il suo supporto" -#: src/libslic3r/PrintConfig.cpp:1881 +#: src/libslic3r/PrintConfig.cpp:2023 msgid "XY separation between an object and its support. If expressed as percentage (for example 50%), it will be calculated over external perimeter width." msgstr "La separazione XY tra l'oggetto e il suo supporto. Se espresso in percentuale (ad esempio 50%), verrà calcolato sulla larghezza del perimetro esterno." -#: src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "XY Size Compensation" msgstr "Compensazione dimensione XY" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2375 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Coordinata Y dell'angolo frontale sinistro di una torre di spurgo" -#: src/slic3r/GUI/Plater.cpp:1170 +#: src/slic3r/GUI/Plater.cpp:1079 msgid "Yes" msgstr "Si" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/slic3r/GUI/Plater.cpp:1405 +msgid "You can open only one .gcode file at a time." +msgstr "È possibile aprire un solo file .gcode alla volta." + +#: src/libslic3r/PrintConfig.cpp:1425 msgid "You can put here your personal notes. This text will be added to the G-code header comments." msgstr "È possibile inserire qui le note personali. Questo testo verrà aggiunto nei commenti iniziali del G-code." -#: src/libslic3r/PrintConfig.cpp:589 +#: src/libslic3r/PrintConfig.cpp:625 msgid "You can put your notes regarding the filament here." msgstr "È possibile inserire qui le note riguardanti il filamento." -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "You can put your notes regarding the printer here." msgstr "È possibile inserire qui le note riguardanti la stampante." -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2722 msgid "You can put your notes regarding the SLA print material here." msgstr "È possibile inserire qui le proprie note riguardo il materiale di stampa SLA." -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:394 msgid "You can set this to a positive value to disable fan at all during the first layers, so that it does not make adhesion worse." msgstr "È possibile impostare un valore positivo per disattivare completamente la ventola durante i primi layer, così da non peggiorare l'adesione." -#: src/libslic3r/PrintConfig.cpp:1364 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." msgstr "È possibile utilizzare tutte le opzioni di configurazione come variabili all'interno di questo modello. Ad esempio: [layer_height], [fill_density] ecc. Puoi anche usare [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename ], [nome_filename_input]." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "You can't change a type of the last solid part of the object." msgstr "Non è possibile modificare il tipo dell'ultima parte solida dell'oggetto." -#: src/slic3r/GUI/Plater.cpp:2390 -#, possible-c-format +#: src/slic3r/GUI/Plater.cpp:2352 +#, c-format msgid "You can't to add the object(s) from %s because of one or some of them is(are) multi-part" msgstr "Non è possibile aggiungere oggetti da %s perché uno o più sono multi-parte" -#: src/slic3r/GUI/Plater.cpp:2311 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "Non è possibile caricare un progetto SLA con un oggetto multi-parte sul piano" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:625 msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "Non è possibile utilizzare la modalità di ridimensionamento non uniforme per una selezione di più oggetti/parti" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:287 +#: src/slic3r/GUI/SavePresetDialog.cpp:277 +msgid "" +"You have selected physical printer \"%1%\" \n" +"with related printer preset \"%2%\"" +msgstr "" +"Hai selezionato la stampante fisica \"%1%\" \n" +"con il relativo preset stampante \"%2%\"" + +#: src/slic3r/GUI/GUI_App.cpp:1078 +msgid "You have the following presets with saved options for \"Print Host upload\"" +msgstr "Sono disponibili i seguenti preset con le opzioni salvate per \"Caricamento Host di stampa\"" + +#: src/slic3r/GUI/OpenGLManager.cpp:262 msgid "You may need to update your graphics card driver." msgstr "Dovresti aggiornare i driver della scheda video." @@ -8819,77 +10391,107 @@ msgstr "Dovresti aggiornare i driver della scheda video." msgid "You must install a configuration update." msgstr "È necessario installare un aggiornamento della configurazione." -#: src/slic3r/GUI/Preferences.cpp:172 -#, possible-c-format +#: src/slic3r/GUI/Preferences.cpp:299 +#, c-format msgid "You need to restart %s to make the changes effective." msgstr "È necessario riavviare %s per rendere effettive le modifiche." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 -#, possible-c-format +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +msgid "You should to change a name of your printer device. It can't be saved." +msgstr "Devi cambiare il nome del dispositivo di stampa. Non può essere salvato." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 +#, c-format msgid "You started your selection with %s Item." msgstr "Hai iniziato la selezione con %s elementi." -#: src/slic3r/GUI/DoubleSlider.cpp:1902 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:664 +msgid "You will not be asked about the unsaved changes the next time you close PrusaSlicer." +msgstr "La prossima volta che chiuderai PrusaSlicer non ti verrà chiesto nulla sulle modifiche non salvate." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +msgid "You will not be asked about the unsaved changes the next time you switch a preset." +msgstr "La prossima volta che si passa ad un preset non verrà chiesto nulla sulle modifiche non salvate." + +#: src/slic3r/GUI/DoubleSlider.cpp:2121 msgid "Your current changes will delete all saved color changes." msgstr "Le modifiche attuali cancelleranno tutti i cambi colore salvati." -#: src/slic3r/GUI/DoubleSlider.cpp:1923 +#: src/slic3r/GUI/DoubleSlider.cpp:2141 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "Le modifiche attuali cancelleranno tutti i cambi estrusore (attrezzo) salvati." -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Your file was repaired." msgstr "Il file è stato riparato." -#: src/slic3r/GUI/Plater.cpp:2528 +#: src/slic3r/GUI/Plater.cpp:2490 msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." msgstr "L'oggetto sembra essere troppo grande, è stato quindi ridimensionato automaticamente per entrare nel piano di stampa." -#: src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Offset Z" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 -msgid "Zero first layer height is not valid.\n\nThe first layer height will be reset to 0.01." -msgstr "Altezza primo layer a zero non è valida.\n\nL'altezza del primo layer verrà reimpostata a 0.01." +#: src/slic3r/GUI/ConfigManipulation.cpp:59 +msgid "" +"Zero first layer height is not valid.\n" +"\n" +"The first layer height will be reset to 0.01." +msgstr "" +"Altezza primo layer a zero non è valida.\n" +"\n" +"L'altezza del primo layer verrà reimpostata a 0.01." -#: src/slic3r/GUI/ConfigManipulation.cpp:48 -msgid "Zero layer height is not valid.\n\nThe layer height will be reset to 0.01." -msgstr "Altezza layer zero non valida.\n\nL'altezza layer verrà reimpostata a 0.01." +#: src/slic3r/GUI/ConfigManipulation.cpp:47 +msgid "" +"Zero layer height is not valid.\n" +"\n" +"The layer height will be reset to 0.01." +msgstr "" +"Altezza layer zero non valida.\n" +"\n" +"L'altezza layer verrà reimpostata a 0.01." -#: src/libslic3r/PrintConfig.cpp:2667 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/slic3r/GUI/Mouse3DController.cpp:308 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Zoom" msgstr "Zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 msgid "Zoom in" msgstr "Zoom in" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 msgid "Zoom out" msgstr "Zoom out" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Zoom to Bed" msgstr "Zoom sul piano" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 -msgid "Zoom to selected object\nor all objects in scene, if none selected" -msgstr "Zoom sull'oggetto selezionato\no tutti gli oggetti in scena, se nessuno è selezionato" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +msgid "" +"Zoom to selected object\n" +"or all objects in scene, if none selected" +msgstr "" +"Zoom sull'oggetto selezionato\n" +"o tutti gli oggetti in scena, se nessuno è selezionato" -#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 -#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 -#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2727 -#: src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:241 src/libslic3r/PrintConfig.cpp:816 +#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "°" msgstr "°" -#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 +#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 msgid "°C" msgstr "°C" diff --git a/resources/localization/pl/PrusaSlicer.mo b/resources/localization/pl/PrusaSlicer.mo index b81f880a1b7f27a87a27b309589e72d7f65a65ab..ec53d51df05fbb66a7c093dd7ca22b61029c9090 100644 GIT binary patch delta 80605 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�RK- z;W_I1zfn{41#|G-t7MB!WJ)Y${VUY9Igo8pbJiEt&{$Llrr7f{QOUCkH8nf!`D3W5 zIgNVo4OEElq6YF5Bk>cq#1hNQmuB;pvHrEpUQ(f+eze9|ZaR_#)nFD>mghh{xGHKt zXo%`?cT{q@s5zf!>o=gTKZuIpS=4n8F&KR-Tr(#*R+tggKt-Y%>Z4Z=tc~MQ5xI_< z>wBmN$6je7k_PqQ+^8gsL`_LeR0O)A+8vC!a4PElT`mXe;VD$luA=7Z9cqMeSD6bl zqgF>j)H|RCszc*Y51fjcngytAUytK(2kN>qt4&f?#@>`Wq3Ye69OUQVzBSnz^F?Ag z>vyOTFG7XznDsX5LI0pe@(tDT#6O#cv!ik+FRFuKs2nMSid1bRGOp9!p6G+hfl=m! zGY$2?#i#~$pmOCHDiY`I`RBGiaIJ|zBGjkj%&3k<Vl}LTHE{vzInObd*8jg8XkBLg z#q_ue>Or-z95zAi0}HV*UPU#KXq}nUbf~vtK2%7{qUOAcwJ|D}I-~Z5k*E$X!`NE? zhd9WCr>y^4v;Arsj6&Vm7?mpnP@x=S>t~@Nv=x<Phf$Hcf_hEAM1?%wdehM$R6F75 zDrw4ap!Hf8wE;CpHPjai;&@bpdr+T%E}@p?Ra7Kyp+fxx^`K9v*L0!{roKArIn7ZW z?P2SOY+(H>%coEgf-6v=JBJF{9n=UuqHavN(L691)u95Yj#fq`UsKfb`VN&N^HC4p zZtG8?lJXrY0-rXr{?%}-P3C*QDNrXWq2{O_s^Q+K^*kQS;40L8PpltMk&Cg}OjSnI z)?5me6BSV%se$TnOVstfTn_YriI^Fe*b5G$rsN7L0(Vgjd_hGf(H65`gy2ld6;PqS zj(Wf=)b+lt=KkcUBn?Fkqykn#w=D+><yz}u)W~n3Zuo@Sa1w4aU&B?wB9w=s&Tm6~ zbo&i+;7jzTYP;z`FlvemqdHgv^}II7z+7h_2TGnf_JY-@5$;7@_y=k(U!hh(+#Tk@ zxllW1DO3_RK`rABs2rMvO49kLNGw5hcr)h4;}~D-|E+gG%}$fu2~g`l396y=sGP`y z8d)*ah$^9`s0He}PN+HUj~c)asE)5ih5Q(50DqyTJa8Au%JZGH9B3pJP$6uM8u@rz zzXbPD-ivx`4c={j8ny&e@`2;`J-i+9(Ow>iarg7nbj)^u?*-$GgS>9>pF?yQs~j;u zOR9U6^<S3;Lywt;Mx#0~|G4>{?-A4<-{gcDQCn0p4nc)*E=J%njKsi`roIAJp!^+b zxot<Sg1xB796?3q_DR;iM*fis%~guu%!#z9kQYMDU0GDf>!Gr{E9SwWs1B_~<<JS# z0Is2uGT@Y%l5D8^N}<}TgPO{=r&#|A^>_Bd@u;3HweH2jl&@kjOmx~jpbBcvzeC+W z95u3^Z2e};N%=75#pkGvDeW2a1xN){L^`+}sOQnBEFOwleiLvfu0bVL+q0&@!Kh`l z0u`}cw!9y;gI+>~{41)xz;otZkr)-xOsM<vU`upEIT*#k4>%rE{%-dC#i)iZq9Sq) z71DR84y8VCvOg3Rp%R!MdtnqVMRnjk#=?LLCggEY15Sl>$aQjZpgAdoHLwzDZf2n_ zT!!lL7R-)2QOoYGJ^vK7y#7OlG|feGJ_yxLF4Wu?MMa>REjPjxTK`=+P!bNe7c4+M z_-8DEyYW4Kz$*CSlKBW#<g$72S}a5TNvw|Xu9$CNG{T;gbNpdGNBoGI+MB2({SRYk z{b#*udKQ99C>KU0(^ag7Z%`XXscWXA^>8oco;VBhT{ru}5mbktU_RD)wi{+y*1Kso zo>{04Y{i0j30=)ytXt;CWTj9K+>Q#R|F$tMYA%ylGoW%K1l7^}7>ZRe3<seixE}RE z<$x`pv*o*}edX0{*1sD1mkQ0zSJWOI?~Yksnb3OxYKp3$BGDc{Fv3Boj`qH1l5C)L z1ggCWs1D3QJ#Zy9!1bu*8}m=sBuUCYO^<`oOGea#Dxo^m9JSGWhiZ5VYJ~GptK%0e zPKS=8*1hj9GbOoE9j}dAHQi7h8jUG&rptjIuol(B{iq91pgM358{!8H!defQGwg}V z?$@a7|B9O1^bgG{DS_%}8`OY$pjN?f^d5|A-(AarzO*`s&G9d6k7Xa3-{)P8YPj%Y z(_np6Lv2ta>4S>QC{#z5pmJqD&cjov2X%a6?jM5czyxGjyUr30v_Y)INc<JGJYM1V znChwd8PFuGNICME`5ZqMt5d#$FEHzKW0Du<{5R}Jea)BV2bIS#nsT96=4V99u#RGx z;k8MM9ypo{j$vJ_{<m50i}4BNr&tOvy$Ns*VY0UY&LX^mA=vkwSv`wUJK=Nu0n@(^ zaE9TpSP1j~V}4<|J!a8d9_L^JK1HqHKBRU@+=#*W5^G_yf6Y|2MNQEdEQimrJQnz9 zeqXo`Dk<;bX8ep=MH@Z^I3w{lJcl*^BbSt|89xVje@V0wwxj$ECu8j|=Erciu_omX zUrl7TqBf8?-^_2hl|&_JAL|)Z(q(ge-c%Mr?VK&KKCZ#a_|5UT-UBNK_?*R5tiw>O z=`$A&!?~2NU|Iam@AH1aU<>MHbRRQetU#alt5rF$2<1lj3r<7jKtv3mw=r$SW|W`c z0IV3(^?7f-12KJ0H!7;e@_Fz1?Wkq>H>$xHv3=fKE&?^z-`ny+oX)zxjL)g>6xZi$ z!}{^)IQ8-4`<zHzmB8oyHqGONJ|`#To{4<kYWvAe?DM`(|A3P@F)WGC`(%?ana_Dg zLnSaZ^#zjqyqu_#!sjK`7>rMS>XbgG4rWW`^QNF*YM=MH;T%5W{_$yi-rt(*lh)_$ ze9y5s_2ts}oYv?L<v_`C7nPl#a5xr7&x3IjDk)FlCXB`3q5lqdp+cA^qtE+&p_O== za>`6T?`K5!F%KQf7v%F+Nz=?G(*L1W+2|}@WL+m-R-f~UigLIQO9lI!-|-7J!L!*+ zPK0FlIe$=Yihp8Q4xjTCQ|9zJGcZMnnW8mVn(|#7@8dh7xqJ?3;QXA&=Y1<@eLkO) zgpN7+ef(-S>n~{mpEHJv?Rc5`QU!h9hLk*vddlfhUk@z9K>QWs;AUIii|X(pJc~2J zecq1OrjW5eE~9=5hGW6ProE2nef{5ygQ=VtgbgrW5fl10sF%ke)Pv`s-gfg*TktZB zkK0gN?qSqB;T#smTj<B+MSb2UtJJ7>Ob67<s|UJjU>FBl&y($m1J?7XE%Q&*YN%bz zJh&aIp?+8fhoLsCL#W7nLv<)lans=xsQUCc3A3YC(dOc;e|?(0MMVsJgBroV_z+{3 z@UdC&kqfm^%_+&;;Q`e37f_M8idpa$YCukenZg8^f?^8Hhq*BkHbK3#x<s)4GjlMO zinO=}b;A)<h^}Kce1>{SB`M`|T45Sgc_3=ljKE;rfnj(HHR2?tO(fD`cFH+W1FngB zZd;cFg?2Qi!k<vD)s3i*9KZ;?g6etlNRvFls1D>uy-tgumTOJa^6ZGU@fvC%xyqQx zl|bcA4OB<mR`x_6TQSyNFyEHfqe6TH721=ih+M&1_!%{q)yw+4uW<UJI=%#ha64+N zzKZ&M@EJ8#Y0G&7aGeMaG~x=T!l{QEX*1M=yP-n)9ahIdm<LawM(`fBD&m$m`$Q7d zswszBwk=T|=z_X_3aTT^FtOJEK@OD77f>U-fy(N~_&w&T;PXBYEJAhkEh_ZBipIF8 z2qZ<#aY-zOZE+$lK&_6DN<QZTcEB_Nd>^4Q9dJ3QTgB(B<wU!xKJRa<C$8r6KGCeg zi`37m?(_b#S?3yNr@M*D{+>0>2>YTQFdP;7eOLo8p+=mgmU%Z6K}BRL>bkk;>a*Pj z4m9#}_JW(Jkvu|On6S2aM+Bo@&!tfHJ+TvxLACP=wLBBn@j2%)2zC7%ROEuA%xVck zb*ys~>pwpSL#dd7zuF7R)-^j<f7DzL#%8z%wHjj9Gs~<zYUApUgK;f>!<_ZabvYaO zykAJ@fO;qF$LjbEt6}wquK8s0V?)!^KT#V^@<yho5m=FOZ&dv*tcUk83X3*2b3GBu zQ9g=V#&MeXyf3daqjGCF>b?nB8SkKSD5u-hWO)HpMIqD;5vVP+A}Sf9P;)*LwL{KD zW&LVY$k(Ixk%OqvUPi5=r`AuXeIRZ#v-71x?E`L64iw^Qs1EeE7YsvvE?9ti;C9po za}+iAw{879R0n*`O^1@BmRCB|0E%G{RzNMw4ycZfKyuD?W^<tAScdBHCJe$us7TyL zt^en!2mOQUdF&SEzI5pAaMlvm>el9{_Pe9*AA;I3r{W~7|CJnQqX}ziE+~o$ZB<l# z9n=FGAfF?g&iE9&VMlD(%I93g{iyqXY;7L62-UG)F}u#AI`9xH;J=uH=R2j^n1<`2 z8fa*3fl8+K)*+}4%(DK7n(KL}soQ|+@D5bO_M+N5ZtKrlFWUO6=qki_I8bsuMwMS8 zbK`ul<-oRPE)$?ekOtLoZq$PcqB>9#HMiwaBX5KXeP`6h(;xMmk*Mp(w`Kh+xqhHR z4K706xYD{E(^Ecy>d*u08&m_|P#ucZ&fJ#<m7KXyTXG}@V;5B9rlLAD9rc_g?OdC5 zROms6(2EG_E%g|cEb-c#k!3;ULSa;vS3!-aBWfVgs3{nP>ew(;d(%+^oQLZ8Qq=W7 zyBug)?LdX@JStQVP!E2M%7IuN%m^}}pK=!bg?C4GjHZ0CqtBt}l<8zfSPqpNQ8*4e zVi3N@_L!uz**V>Q94Hh&;}YDB>Ur}n=1Zy`sPl_aq1%XR_yDS-mr*0Si$VAp75X?` zO>Tst1{Q(4unu0w_}#qrUFQ)88e!^a9>gRSKz)f+riTe_m!2j<Jy9VWkLti2)PsLP zb$E*{A47%wEGifNKuysLRI<KB4d@GcfB!$>cc!5fsD?729+cnKN1!&Q3aA_Fqvo=M zEk~o0b13Qo6RopQxv~hojSbcQAymgNVN9+6n;fWz_fa8zg1Ye?>V{aoOnn;E1A<ZY z`K*!FC{%8=Lv^$hDgpyg1DcA;sRgLy-Gbiwzrev6DsJE*T+`d<G{tV;o43^o>_Rz7 zAM;imjA~#Ls-wT7vi?450FN;TzC}GaU0>7j5NjAJ0ug;#|9VMOph7uN2P<M{)biV4 z>n~zv%Fj>@Cg^8A&!<COR~7SPH0mX@z`7H2Qof8z-mjP)6ZGe+Z4B?v`VZ&e5Ec3G z11h<)4=~?YD1ikiH^qrK$(B<OG}l!@g}4RkZTUTFAX8B7u0-uCH&9dZFKRW!8Dw+K z<=`Y0`7sxMMD;Xyut};gRKt;|NHsxyq0#|0lHsU^SL1BliJIfuL(Hn_h<e~KRODu& z&M!r+5_cyD8o?oZ;woxxU!fwAV5l(*>bfG>3~Qj0_GeV~Z$Rb3UQ}}ajvD!&s1Lc{ zP+PG(%v`@5gY^F2$bpjP0;)&1umV2B%9v-k`4&tcEJ%4BYO3y{I+$pLjhHpeS{60( zI@b1BiShu<h6gc9@Bc>}C|iq<G$U+-Eh+c6<*TUm`x4dQSImn^NBO+J0TGEx&h=Oe z&!f&~9&K`{7OJB?P*Xb!HQ*WOz5f?-(2<HQ_C)$IrXx8}$rOPKX?@gOceLgHsE|*< zLbw2D;ze8TG}h-tQeKGKu<oF)e~3Z&5#3B2q#bAGsyHeV4N=R+Ma}tY)ZFdE@^~Nh z(#kpBBxf1a=l`atIUk5>cMgW*cGR+bjv7Gh2_z#qk!Awx|27plCYsR3oMe(CEvm;k zP@&I<`WmhjY6{w*LfRJ<p^2#LmZ3(t83*7o)PN!<o9yp|3VmPHY8pP7^<S8S$y8Lq zBd7-_oMJ9Wfts_-s0S55b)YgT>zkogL1)x;Jy5wY6m{KV)Yk=DP#yjkwS^~`YIe+2 zE(co2=}|o|hib3^D&);<{czOQJQLMW!)d00Zm5uchZ@lcTb_c7$ReDH>rp#p`5(;p znmVFZf%}1jAsl3wZXP@jHL@kBNc@T#*;Z7~kDx+$7PX;V!v^>Wn`5aN=KFo~aW>_W zGtK9Li<q187i@(gv%KfH&IAs$!_7fGU?ZyMyHQzv3d>@^Y_tB$qek2hwJOHh@?6x; zwid(j5Nd=UP}gOcW6tMCC22*>ruE;J1C4MzYL0(IW%mYD7N0~V-xJgW68vaZMKCI7 zieo_>g=KI%YR*5RcG8HS%vV@Vu{h;%*2C!i{O>CV8hPMcb7Mj*O*slfaXKoCkD!w3 zIcixt^Gvd(M2)a0#=@$$9EG~B9jYS(QMvUaYJdyT)f{f;KpsWia1pispP(*GI^Rr1 zZq#+HQOVQ;6_M$vNUcG2;3O(X&ZAydH&IFc0o8uS1tz(}7qI@-P-7~Ty@OE?7>8<j zwsjrq#v`Z*T({+y_I%(%lSAoH9WR6-*uvJ2L$$jUm4q8m&%L>j^{<`l8x@+%jEl@% zcf!1sCt*e0g-XhR#b!Ar!5NfS;wLP=#57oFsToKkjHJFDYARQtrsx4`Dn6hhlfqqQ zMp^*1+$y0uR1<YWG-_Yab^CBSp2j-MO|oTN;d4e%ZiR{2QtzWW`fjC(Sl}x2R!xhV z`>d$;La-XTB{|UCj6;QFJ!%KLfJ(Y|*7U1=-rtfbkNK!SjQQ~mMq-vVtY<pV7AsKh z`LkJ7+fd1U6t!`kLrwKx$N*jEH3ym#-&)g9KJ>OyR5A_4ojAtUNB&}#Q!UhWgHijz zMAW*Tk4oB|sO5YCW8+iQ$ls!pHRd|iyL{H;K%vf$YOsv8HfoMqqOy4)>c-JH7gwM{ z9r>$yyVXWr-whYxSX9#HSZ}5{0_Rb#hl=oP%&3n>NjI3J2;FGrs1~Z>`lu1LM~!3z zYNT^fAzX{PZaZoRJ#Nq6LxuVc>b_W;%zc?qtEvEMpq0@3`#%jhC_qJ5)Q$5|H*Q3| z3r?aQa0S(Y*QjL}u-RrYYPl6at(GRJDOiGf;4V~z&!ZxFA9dZ!&8&YtpwJc*fwHIz zTcK|3g?iw4RD*L-9odWu;Tc<gg^Ea=t>%+W3Y<W>FltH;ViUZHy1&RaGq5__T$7zG zsL<SY!XO-n+DO)56kb3jQMT=7f5?ZcDMz7_^gj$j{|*z{VAR0EP#up%4X80H345Ym z?;~A%Vm0c*{iq&ZMJ>lS*bh_e<mY@i85N;BSQG!o>KM7pB;{n(%O~e<^BvG`r~&+p zYw!zd*{<4Sp6C9-fkyrs3uEHFW^O8>*6|e7NG_p5eh+oMf1ep?R@C`|*3zhsS4ZVU z4;+j?p*o&&zlmf{BoeL@%7GdvkJ+#eYA*YsLOv1|;z?K#XQCo?9ChDa)Q8d+sO47h zfC+77)Z9m-l6f5J{>7*WT*SCq|Neuf#|cp*3`I3q7qv`&M6Hfhs86w1QJ)9iVP8yr zi1Pt_d5w(7IdIr)trt-p&veA(Mh=XiTp4xU7!2k4&QG@D6gHrI8?_@AI!cdexHayj zJoA_tQPgqsxgZ*~{uiO%9qUn%+lG3{971jFcToe0b;7&_Q=-}rMpwyJn}b5w1(l_X zQ61Ti9WmiaGv|F#BcF|-xC^yPo}>1S6u+78hUdaEl-uDdT!~taHBXrVTtiLCyHl)x z^*sJ*Gk3{QJr6-8StZnzbVTih<55Yq5`V<saVvH{V>*`UthuioszYs2Q_vrE|1i`B zw7{NUebzM<d#Q-Si4)ioFQ7tM@SN#sDXdDl0dB`7sD>N=ZXVPc^#P+Vs(utI87HBp zXelbWH=)|SYW>UQK*{hLHDdpHvkbGMZft^@yDpdq2cQ~QiMnr-Eg!X>xAnKMI_F=b zvOVI0*-4{Okr|5WkUN6|&FM~5vfM&tf8a$^Uj@S{M`JBqiuz>q2DO6)T{2d{e3ZLj z4*Utdt=D?f`T@0klV0|o=Q_DLP*0*z4faR%aDjD`^*Cw{Z(<Srhzfb=6%&cls0}8{ zmfNA0Yd=&@%|JzXBPyrPqxbLszvVz1$rscJ;{IVmRSdNns-i~H8uiv2j7p+uwmc7& zJL^$dy%RO}=TRMegc|XCTc7Z%d0wz|IT6Z%MqCON+PYW|hoc^J1vQd;s1AKWJt+A# zlWciV_lKk2mQ^qpHbLdiXjCrEMD3`{QP;0SR}CKGKs~%>PrR|lx^5nv9(!}XC~Cj> z1=YYYRA_IY?*E7yanc)Rs)A6FiNH2k33cDks3hKhgY~aDJ4J;?bPJW$?{NXfzG+s& zN?fS(s2d00G9wv>YVZft6s|-?U^8mOM{M~LYNL99%Atg}&G&+G-)8+QTYFQXk<3HQ z-A+`)=TIa53pK*8s0}OC9WxafQRfR`DXfKsaEd*D1QmfB)(1F_@+&Ni{oT8!N9$3! zaN1h^p2_mlSdsd`KYiZsa#ceg<!@LLefLd=N~0oB(U$At2+B=R*?tQ(HQ!K?N${5$ zpqqgM^|&DVu@h<vx}kP57f<3?R1(&Cz<v<Get=pHOCOpqShk_=yKKvkQTs})M<!Ca zQ4uYRx~?JeIl*<haG*Jvj9O+tqt@wBRL>uv<~-J8)6rz8kXJ!vd0W)=Q&3a+D;C2m zsQVK?F`s}6A`f&%V>Mij^%e7X9B3}8J~bbmhND7s6xG0G)H3>j3SrD=CNjx!6y@}& zoLGV}a5ZX#zoM4!K~#rNqgK&FR3w@_C#N*$Jvh)DkHhJB4s~Oj7p5c8IFj-ZR1yZf zG$BumT0O;3$yW_^-2_xe623C$lUuW6Tk4CVrhGoS+VL)Mpb-bWHc6KR)x#>N<<tVT zPxQdtI0iMsO{k6@#UbRx@2C#dd}CHqD^$dWqS~2+&2Rw*;-@#Pe}(oN6`JFOZ_PfC z7MoBmh~YRH8{;9Yh3Vg!A69ikbu{676OpW_)ln8humb*tJup8VtoM)kRjpAU=pg0# z|GGZ!FOT;AXui5__sRT5!+pHSjn)72dH>8-&}Z{;JI)sq>P9$|^K-Bj=K1P#j^kuJ zhV{RZY&;-6YpNaP(gA*NK+CZb<!|^2E4e<u_r+vczu!sE4Y%+xCq4z5`h79{-j8A$ z$Mk#2wiPFHzIZIZvjb0{=6rZ;zjF{{#PNIoLc(#>_Y3;R^?M^P63_2sqWzBX{oc+x zHi6$P?`#SE-kjz|^{g=}q)RX(ZbL1v%c$k{9yO;yiTqy9<U{QPrL0kynQ{lzmOc(E z;9}GU_0ZP8MegJ0KZ*U`C!0*D2UkZem)58T2HElqRMxITt>gQs2gOX{_x6pP)^ey0 zw?I8`C~D)HXwR=g-G2zZzyJS$17+i9R5k}BHO5C}b1E!{A*hH%qc*Hbs1B~dym%1x zdVPf&z`v;blP2?f%QhIbY9de_s*Rbo{=0FY5Kcj@@1>|!u^aQ_Z}$8r)PoZy_j{j| za-&{awNV}Kj(Xq#)W|2I9{3|>$F-;kUce_9JB6R$|KQ*a2lX&_O27AAuwkeMenahS zf1uX?ZPfC6k7~F=D$|ihsE!Rm4PY+n{>`XJ96()v-TDGGU?;WT^}hL>Jhk8ZJ)P;O z<a&nMkUpY15GRd^NMbBVITOahC{)8uP{|vOnv$)U1J9tYdym=?zgYcgO$Xzo<=;Qm z&Xkf0nFG~<qNtu%M2)-^Do6UELOmFD-B{E}W}%XI4eEjWP|0}=b^T+kiEptZmQ80m z^s{RZHlUJc8;0S2R0Q5y{prmElc64z8AGu!PQy;9r22@O>l7LM-pi&W=Ayg-H8nR- z1AB++n42)8d2kw3MHbYBc~Qw!5ta3gP!097<)x^|97HXrtEgr7A7;gLnM_1WTWg~t z*4mbPU}vrWVI1t`#8YgDtAosqPG&RbNl>5Nf=~~vf^o1Frob-NVW<JjMn5h=MPvmA z;X%}D`4g2JP8O9}e>pi&_EtoVpe^cxk*H9wMUDIbR>o(jhQqVkb!_cs9fx^1zZ})x zdF$WSB*A9K4aK57-)U|uW@9+zL#R3Wfa-CQY$nU|qask&mK$5UVG-(GR7ba4|FkB^ zZrUk|dMh?SP3<uB{{HWDTd~}_4V6SEP$7P0jgiB2EFDgwz7U?rL#WWt%<1>Olv{-A z$WaW&*QiyIBE;|g7JLTOl&%P2{cD70snE{!95r`Ya+%O(NA<WYDha!x8k~q)UK>!! zb^-N4<{zvSz_;mgn<<UXWA2}T+BdeKruq@81A%#6Q;|2XnUkuh2lPd4z4K5HIE9+i zSE!Dr&*%5PClrM>D33%X<#|+SZ=m**7pT?o6%~=p`Hj`B{ag-o;ZoFtH)CwPirTU6 zp|;XTw)_qikx!_dFSvl2k|L-`)<J!W?tx0u2^fkiQJ=7`qT2h*>i*4v=H@GEeZ~wm z%Pu*pBUx=Z4=N{0ppvi+DmMn$@>JB;yAsubeW;h%HOz*OtqBX7a=4NI|341Y;4lot zIjHQPkBZ1P+>bX<%V}Pi-}@HLZd3%)g_}=C`A}1~8TBFcJ}Q?I6*4<%GE_vfqB<6W zm9_qha-bb=I2ORUs8F3kUHAtoWDjlmEtaP2D{PXoEb6+}sF3%x^^;KdtwjxF2PzkC zp{{p|u;KB1ClLoqvW}P+Ct_vXiJDViQ4^UU)RbgHO;tYBJEA0NWYsYmqp&X?z~nxj zQ_SyuMO3|n-}^fsW3UA0AEO(=L2yaG_npZ$s9ac#YH+pnS5%U2L3QXT>cRI>+5Q%L zV~hy%;d21$x?H7<m9YZl4!8$@K}Dc*Y1Y5yzJF<x15;6Ryb`rsj$sh~jSVnqq)D>Q zsQTfk*Y8qPGHyeK{4}bA*HG<0L3PwA<99woQq<O-sH|&77F^bR&?tmDQ4-aWI=1{B zKBPPb+hKG$^WY2EjPgS)gXPMb{bV#MhnAw+`_+0Fm84g(62^8bm>X(ieJY|+HylPK z(^b?+-r4%ViYBCKP}dbfMW8w=$y%WzF&Z_1d8p;M8<k^MP|5xY)nPYTC6kr)Q7@7H zSPVCyme*6%y8eP%9VsePAHdrZl_QO-n4PgD#-uz6b^Qzs!nNp42?kQWhDzSsrrvd) zbD$A^MD;jMRZ|W@?E}S7$yXN@(stIK*1@Q`9fx`e%|%6K1?v7?sK{JG?foCIET*ic zeZpk~9B5>ty$X^Db>W|=m(Dj-=rUF}p)ZTt>sz5#OBYlJdSOKzg_?p>sO5SOweFvy zk}*LI6RBYIe*T}E1C1~g)#I|Z+)Nixjz*2FH!5^PQOjqNJwFeXD@#ywyBCA-3f9IC zsQW9|G##po%_%oSR}a|5fqHfTHHUwoMs(Zy8bc}jYWclyG=!r%+8cG<WK@I}VNE=Y zTK`FFn|2GJUcZ%4$v6;|TeE8WU9YFBsZjErM1?${ju}x9DmO}^LR}s6Vm;IpjId6^ zAj-2*9ocT{Z=iDK0V+a&qoyK3l$qiJQLKMe)SyCJVo&UhzhE~^S=W5sJ`(d$zKx1l zf_i2|$*dJob3Xu^-~rT>rmJrvkq0&Ms+a@YqgKOY*IqCkHKGlup6)_5aK-uvwbA^G zO0N11Ok}#Ea$yka`U$Ayorjvr9jMi?AC-)kthZ46hWpSSd_sjjVMDWi^P=Xc0tR6t zRKo*Mb3Pk2HLFn%-eK!cVs^?mPy_Nc^7DV?#gBMU*TraTKDwnua?a(iP?))`Wo?M+ zX-ibkJ7EwG!OXZ2bK?Olh0n1K=5As>8BM`yly{&8P^GEqP%|tSz(+OIK6AX8pI>@q z{XgPBJJ#0brol6)oQU7TET{aa4pl~Fbsf}d>46II7*ymYqayMPDpGq;%k>&+1A2sN zCw@y)p8~yq|1&EGT22LVgO4mnt>Z7PO+zW$m`H@7=Dsp&HMBr=po6WCMzu2%6}biW z{3d&TCo1XAp*nU6y?_7fPYy~`@gCb@p|-}ksO9qwwTH)RXF{49m87{*BdUb8u{P?# zOHc#YhMIzNsAc;nY6=s#H|GnsXZ>qusz!y@Z3F8-R1z)3TzC`}+SjP5aypohr^dz< zi=dX}52#SjK~2#f>qXRkPf-!_bu<G=-_bQ$S(FMbhbpM#YK~e~<53a#5q0BoR73l$ zS5T|rCF*|uPvpEW;gX|5Tm==8hNzKuLq&25&cJyt2b#nDolOIUu?6L-s5xGP;kXeC z;X}-i>ARTk6I90#%EM3(_}O|I71@`locW0ANTRMLlEJ8mx#6~=IBLXIQQ6$smit@B zT4$q1yaJWw+ffm@gqot~sGagNs-4{3%sx;R)q#4L6FVavbDilND0x<67yO9YINC*< zt+G4jp*$Pa<HM*aIf+qt8OvkN?&kXk(WrqOMLqBmDgsYX5&dS%v3jVU^`C(Q?a5)7 z4V$8pZ#ZgdR@?G=>lN!4REUFn`khG3kBUG~RD_11Hk#?E4sAlMhJ&aaxP)1FzH^TQ zWozJfrl;vp$rEbJrBTbQKI$dX0yVM$sAQdj+L(5sAFrZ1eiPN9`>5;RqLyXsUViU~ z*_qM%{hw|eC`7|id-NRCgH~G)qvq^3D$8T_wjD)X7m6BjbyP02K+Sz$)PrZCR?p8^ z0FR)a_r5plUn7tAy;<j3P(81Ks;`H-u`5R6Xj^{_HS$}ijVMkZGiBMZF6HW|kS|7s zdOfP0J*X+Zg35)@eOUi`U|?S}vUsSTWkNMv2sNTQsCPnVR3s*$Lc0~U3XY;Sus=~D zj@i%Lp9wcnE`f^NOVoK^e`7kA1NA7}Ry091)Egsl4yxx@Q5|`MdSKiEW`sFVTX$j9 z7TXsK;&RmWf1uiXg&IJzfo7@-qo&TS%z+wgi@ISL>VZF^vUd||ZZDv2_zN|HZ>Z~2 z4>EII0CjyW)crkdc|2+=)?j|zfr`XqWI4OeXAblL-(VBk<QPsl0u|z3sMRn6xxtxc z%d=7UEk`|I8*1u~qB?j3HTUl@I|d9f^*K=;FXNS2e~mfNOQRQRZs(wu(*X>{+o&xz z@leyT;;0eyKwUQy_uvxLbuGxLXg+9+!=m`lFuzkB^N%neKn9N_Cnz5n<#$%<_y2m2 z@jDYS?KpG6%JF_@7UicC%y&A5O=7)LzKex;K<+7iXAZVTZ9pGU9SNLjrZNlWqg)zG zVt1^BYcT@fqE<=hG}ga1meCx@DX6TUgUX4`sD^(>t&*3v{2sMWB>TaHJ{Yy$!%(4* zLUpt&DzZyZ`@k_&4&1;nj5nS2uLqQ#Zsx8zs)639Ih};+$UM}3umhEZ=TIGeifSn4 z48Qjy+~TMQeuqlJ*{HeRfV%Gls-yQ&9rVp)jufh*GtEn;BWjt<M2&bms^|MqFP)31 z<#Y$nqJNfo;04skKA@5?$858~M4;}kfa+KiR1&+W>qhH9Svn6D($)5Yo!Ei$ejJ0@ z=lH#UmSY`Opq&3l^MF36WE_G)_ya0}o9y{hsD0rg7Q=v_%#V6XpgQJG<3L;C3R|%b z)!-rP6<hxl8&dxbH8l<An&sI6HKM+#2MtEO<$gvDY%gZU-)#B0^`nvB|C(p!HW}){ zxoo)<YAWiZUeEne4_=I#)Ad*lk7EF<BiVfOO{f$L{N67djz>K>=0bB_POL@wd(>}A zAHi;V|6g8YzG^MI*lZL(U^Xt?ftvH%s1ZHI?f3<iv|E>$A6i|+Aj)}`njNqPo}(O% z>oH=P*%w}5J<6$;(?L4W4Xf~c=gA85_6u8SY=PyeACHysEGh?5tuj9gUWf|qCk(_` ztIa2-_|}xDDGfs9LQc$%Wl$06gxWbLpsSG2=Rg;3K$TCT_Jdp2hnR@+D^%#ep+2Ie zT4R=BW@`j0QjM{=j}f9exN5D*kzY_9+k_gxuC=UxHFTT`h59@;!&|5a7XQVp<Ep5J z+o5{i57m+JsE#i|P1!Dc{w``DZ&1rF<~qOg7IR}!%=D{?bfaHc|JqnaQlSlEF6zNs zQ5(!r)PwG!dj1g=!hrQ=`D8_XXf2A``<LMeJcC-!wKtg1w?=hj94eXDq0V1+Ina*u z5H*q*8%-oKqBe+J7><#s$n?S9cmZc&#Z4yZZlVVA8FgQ>&8CAPsDYG1oo|AQ^mn)) z-60$(v=Lj(iQ1Tnax>K24Myd{aIA<EP}zST`{64*gB`b;jj7N!^E2c@*p&LCsL*HL zZcMSme90DPr(b_X%XQjv@I4pYLNyq*%Z%(d>`uAWZWH2jIEQlaJ*NHwwxwKVuiyKZ zl2%{@<+=O(&YyS{_u%gRW@`E$FrRvtVnOO(;Bl@0po4zzcR3!T-uFWe`Mn=XuSbnE z?_t09k4aTSZN2}ZB2nsy`KHxq>`Zwt>fMmzs5dgF8rGnE6l-F#V}9@7nrefZlIOTX z>p%8!Q*jU{Qoe=ys}!A2m<IcvG#k%cti}1L-%LYGaUSJ7r%Z%SU{A_nr_J|vm!mrT z5F6{dGsZEf<#!j|JRH2>pgyKOYkof06YEg^7dv3pbAD$FZbV(*;dk?cgc&%2@_Q_e z!_J#`zyVYay+m!{2``wpV<_q+)EZCYybG-V*&KAb$cBO6kfd;mUos7E!JjCXzU=q@ zUvaNt80C6b%xA)Jn2+*o>rv}FEJc0RKl~2=44l&jTVm~N>=U@*y5CujS8lNWTX8Vx zmf!m)m~P(oJ3T0OyJNnIbn~tWar8aEvxfROf0_|&zR$))`2}{sSP#rxcYnyLp}Yt6 ztJ?=3@h-r3kIi>fjyyHLz7z6{j?uyGE(eo1Sn=F^7pve4)AL!lkNQifq?+;4>;v0T z5qplRANk7U#41#_f54%*<+b1YU9zyh{oXGe9>X`(*Lq`;w(MIrDmvy4<X{&kzP$50 zzv7PferG9m{KtHFjQfGF*|@M0{ziTOfBnu!Ecemx{o5}QpUf93EAch;k1!+GU;U2` z;)l<E@Ba}c-B*(%cd<R!1%2~78}&PnV>rm|V+-{KdK*T&z(DVxQaphBx$wUjfzBKn z+8r~{`)9W5#t!s8ngz!R^nTSUH^$_;Hy9s3qTUfP;|6*gSZX{$IRl=;hp6SZDPAC- z5m|p{Ie0?FV=ROh;s<&!rPv7qy{$4SDx?{)IW9nL)&HUP{NxD(y^rCgP#vg(s&9bW z<A<TP<R4Hw?JA7KUFiM&|Nl79OT?Eb(ECa!8ntW&VKQ8Z<#7}0CG`Q-VA8~a-fzL@ z#LScrqR!t(ZP{P3EXGO_=>4pxD#oEa3Dwcr=>7kHEaM<96>D)jZbOBrdr~uk38;6$ zJX>Cj37L|Oc!>G~$pXENW@Pd}??dHDj6wZv)YSZimGK!W0^uo42P>rrH2?o!wW-j1 zxhtl@<(LikVNU!DwG}5wX&#Up)xk(ChRx6$5k^y9X3I%Z1$z5MM$Aop6zck+sOxv6 zav2E+N9~DAn2K`3)PdgT`Ru3;H9&>7Co1$4ZT%9|$aZ6L3`}DpnFclY!I%*Xp>m=g zj=-T<7X#e1fld$y^-*)(7xkW=fJ(9@wtknbKa1+%160FbQ1A2f=}ZT5Vs^?A*c;oS zcF3!kA7iCA11W-vtQ*CFLNf@JbgNJo{)WnlPpCPIk-^MmYShRwq2{=NwJ<iMToTpZ zOjJY;pgMRN3*$Wu!qgeP$h%H44m9_bQFA^V_3~JSio|hDfVZvBu_onDH~_0;3UpfG zVN^$hgUs9(L3OY^YNxDf?T*DMPsd$a|7SSR2ZwQ)1D#8F3>%T%^RfgwrSM%=vvGuF z3-sQC-%xx1mh7wwJewoXd+lD#8R%{0<wMMf&!ZxB3#;Nw)WC}63Utb0WAy(2KNfIM zpNj3M5hTcMk}e1}CB;!YT65I-9;hrHfm#)NPz_&4h5i#NS+nN}^xperP&qRXgK#sx z#Y^Za<R|i)tbU1+lmqjbxvPNTl$+pMoQf5(ME*d>k0Y=Qj=_3(!j>}>Fmv4!3sFBC zr{QVjA4ztahX#7zm<S7F{kP{t&oHx$u3$CFnZlU@?23xa5iE^q3z>$SpgyYofSSw0 zm>$1k158)g*b6m)lh|12QLCm=5wlP9E5iDZO~nH$df`iKfvt-MdY|_Xpmx3!s3bgt z+Cpz&a(sYI@e?Z98Wb~g-VF8iLNqFg`=F+95^7m5MC~KnT@Ex?XHawW7=zI%ZpztE zBZxpP$6lzp9)h}W0qP5u9kzS|^}ze6{p1rWG6_qV4(7(pltWP+aO-lQ2X@9FoPug# zJ*t6YwtOAc!M{=0$0=zdmk$+@BB*36V{M6w&=6F}r=zy)ji?TtL2}P^o^qfI6GxbA z&xT6M%D57{BRS)wC}plog?g#vK}}5<YKtyv%Tbt;8yaF)>bsZbKFZfod;Y6Pvx+`r za;^VFWdgnLN(ZAxSRa){(Wr)xpbu}O=JX!M!zZXny|>0MYp%;`&5oL)5LAwpM|HRc zYAU19d;d4LC)!y%>jW2cN8Q*5m0UwnNjM5MHPdZ*rF9ExP7k53zlys5Hmbcxs9br8 z8rWBKRgt=!xgaO1hxt)AhNIq&5vT^MqdE{}>sz6+xd*C4<4_@<kBZb9RIY49P4N{} zgr8w{^p|J-=j0$)c@w(2s2#2WD$6^gIyfGc6F;FIupjf_X;e~uL^YhEf|-)MsO!t4 zrmhPr<k6^s^+!cucm=!u=h+j>QK4Fg8tE1c!b7ML+(&irU)0FrRWuJSfO=46)XrE9 zm9!lQ+XeJ%iSXwq8b3%6Qgd+?LiD5e{a16&IjY$6Cp{-Ja?xQfN<=G7xhahLiqs$A z_!{T#a$Jh@&p2L*ce$=H=LYlNH;%JV_y7Kx%k_LW#_OEEkkOw~-0Oa$hx^rK{+#2u zEnes1_?&#m@nnw6^Pm1?WE7)lcsSQ@wD<hMJ<sX*TK<d2J!x&@m$~jg&W+|i{^f1& z?+m4*oeNx}FU2;{(b2KA{`hmk-lXG;YK)r`ap5k^j<fl%75}BOVT{f3X#V@(pY3$! z2-jZX-ro4XKgT&3NGD=*zRUkAaTV9;&mr&M-{s&u9oWx*ExEZM4PWA>P}`|Vl$+W{ z*Kxd=QT)n(J*nd|hkqd5Ny%s`+lZ*)<a9I^bv?KsF~@vw!~1iCatZ4BduUEtj(;%Y zXH%g^KhtOh8XLihgIrXB8yn(X&ZXgo->5H1LsxCb_H#X7w>rGFow{5%iq7TbTr2M5 z3tp!h*Eiv@r?|H(|Gnb)6Zi0A1?Mu?2XLSF{QR8U$&ER=U^d5nIMzmT6t(>HXCybB zr9oxC{w$*b{tlW`40rQi6piW6dajwn@mB6_Oh@!bKkcZ-HUIll(H@u3zhxiH#WCsC zZ#0&chty*f`ZI^)|NTkD4X^lbDgU+P{73Go&-nq|SJYmg&URooH?`)$sVN80nJ4!A z7q0#GzXma_qQw5=#OI=JoZLzW{M<C3<H{I{`csPsEu{R6^Z)-JzQ}caoJ()d&8CA{ zsGH1)JJ|cjb9|dl6r#R459P0sc|RY@#Q6*^6@heMFc<KblDrQeV`(ryC)3&n^w4>n zFGAz`(pula(4SMB=Q}Lk*LYL8r-1E5E$U0#YqHrk_HplAuF;<@953R0cAo9c|20l@ z=H~vKc+Z12a#I2tp2NkfZ9^aEWF&PjxaPiXRE@o|$NU|2XDa_C<$nE{f}uP>e-d+V zb^hCG&rP!(<rIJapZ^_7Bb{vJapd2h_x@bxrY*Lf?@Kt}Q9qDt%kbX@%7f|nUCd3V zl2F%*|Mcf8<^TPuZ$~|Y3cjv&ex^<R+2pm$_%GOp)uSQ4o#WJ{*E=|Ql8c6Ot~8B) zron!;@u6JPnED!&)7lYv4bt#i>bhf2Tfcz&CehY?E?7(570#EZJkEA%mVW<EUu5WQ zF_ZtMa#0Q*puY?Dz&?;~lQ@yoC#Ny}HM`y16GA7ea=sz;_i3yr>Q6`h>&N*4l>hm^ z-rfT~j^YaZzuk3jVBGuK#ufQo0NV%~Biy^OYz(IPq&rEcawlK0kO&;TcL9S#2_@9f zov=U*0c=wedI-I@Py&I37V7`|W@k?)S&;nxZ9bpX%)EK?roVab&CJQ<*9rWYWN;3I zUf^;^fh;ae;wlP0k@#uE2OFeQfnP$w7`U_(c|dgk-o*dpgF;79ffB+enpWLu;NpF5 zDp5tanS9&G*AsfzKzBa&$4~;m7`}^16!#Aj#ic<A+<FL4qhhy`X7jzsH_;HriW<UF z8;TKsf(-XV=St#78G1tF3ut{wp40inZGo1EaC-jN5c#c15YPZxeh>w203NtkiSI>x zKLEEvJjHh~L$C$E%H)lk0*lChAoy6|LPIDR<4EW+e3!hpK;wPFhXS(&U)J9h)chnO z!^qH`Zx`a@ApRbRWrTMHHl6exWZs{+xEFzm`wfKNChavUF`YbtI|le&;2#E!bpa4x zl$8eZo<^Qt;N)&5<C75m9RGA`{xJSSB(8(l-w8hkkqrI-{AKvOEe&BL)rO<LK|mbF z($Mcs#Uy?V@!h~bgThCHvjtcsVR0RyQQ!uLVjzmUlLQRdp@<>$WAn(<`s7wqm7BqM z4ga))B8Gr1%JmS^P69qn(|{KOzk}~9;3D<^j_}>2b%3(CiTE5Ggg&Pk{~?|CpP|FR z5qA)I*6~$P)e2xWGCcz~-5|Yc2wi64{EwXwdUU9t=?lSM!1o8@O%RvoDB_MIEN&F= z>G)q1;13{N3EkH<1_MfiJn)a#>H)x)iTp^ddQm%Z(wBWrht4ywgCH;gyrrg~DWrEY zX;bmHQxR;l+VI{NznkgJIW*)OD&XSx$9KTRq7gb3oQ#O47;Ho5k+~a$cYyRQ{)2p9 zKwu#0t4tvW5I+IDJBW`qu#u*c^Nqh7v+8OpABE0Q(A|Xp8u?ZOFN5Z8<o}Suuaj2d zauYxb+?fy+tH9BQSO9MZXF0GXeB({QheN0%UndIq4{+Y)hI;XJBi=;DCSVirFD1SU z-#>`=q#`#G{tO!T`NW$WF7BCI1pH#Ydx2k2P@fF+0yl}YE6CfGhKM_xv}t@#5w52} zZx~!rEXN3fac@yaamSMW1>rpiZ>26}l=C{UT}4FRpM*_B(iHLmiF;C+xqOx>>|+Y( zXet)h<orKJ7F1RsouM-y8hZdgz~ucS^o9fDmld>=izrXgkdff@B#kkEDFEb&cF5)X z4Fxac6Za$t3xMswUk?#+^T^zR3Y`Z027wt|NxNPXln`^8a1y+~8Q5<Li#v#ly#bBD z-Gz!48V;bG?=vd0mG~-<I57!*LgqhGP~ggl?@Rn(aIYdfn@<{g6TZ0q26wdSnS+Sm zM)=PrU2ygx!}@}FZYc$RNGmd?h0DnFZwlZrDOAtb9r(Fa>_jr(16<rW#-9P9D@?uz zf$t8TwWbmpkv|r=^MO5Q;P-*E6?(?yLj6p_DOBVvpyw0cj*q=iTM|Eoz%0IJ$=FGn zYus1hE$6$1_-^<cz<-EO+)-5Q2=Z*gM_CO`FKBTZ_{&t_2mE6?GyWeycnx1ST6;X1 zPbEQI2Z(ke^DV?n4D3czfTS-m;Szj|4f@){pTHCQ%xKbYfM(zxA^k+s#E8_B9y^Y- zGRY?_`Vt}s6A`z@bj_Yr=0GxhWD3rL^8q*!;78#9+u%!{o8*sie}(w|&^!;kz&$`* z+(pnx@YRxbi0Ki%2b>B}+;OHb3GYq#JOkg8Zoh^CA2Wqs1p&?gL)Vi2G<cP!(voik zxYJC04h6qW`n%v=L-;NV-J1$l6F$tZU@kNcpl1q}pDmEvWZwXr3v8OHz)XnN5k7$m zT;XR7-Dc7Tf?o;2$MCN-73>E78ernqLuUeo9>VtkbT{FP(~m=B{XYUg>?bu4a0wqt zW^tbqUO|R?A<ze6iwOT7_+N>4r4rkzz+Qwm@bxu?4aa{DI&Xt}9`L~Zi@@^+=S|@J zen_YaoZra!ry;b6On-yuCB&~IuJC{2n@lBElKBw61IaMgR89zs{jJblPQE&Npfh=P z;S-0=IiyTj;xTBhgw6$~a(etF;YTVU?pFN8ROBs)O(M>3K!n}{`5EFDLF@t2Uj|-f zh^_^G3^*TxvmfDI!KvYUlJ9lmJIrvMjXxNi9yDOG6ok9HBmF-BBynev;Wh}ZCw?`^ zUlG5Ic;Fhz+y&UXhTvH67LtA~a7B0@Ds-=*C3)T=Z4~iEz+VApBo+UOmWz7>|5W^4 z0~utADd>C(IG0RIC`7vE*@6npB7P_E2TaTFAdUfAyKBf3CT&ksfDff-h-2Q@?os~k z0X;dhA3`r|1pf@-|Kd7;xSCq-fgj^LoW%Pm=myf4Li`#0b!2=D9FOz^$@3vN*8$s$ z^na4x6}UJ~!9%z3y##LHIznq4g^xE4D#2e0PHr{?0(T4<mV<aS1h2yPNO%RpJwOy! zjDNE!Bu2gqz`2|BbMVE@qg4w@k3i=t;LG@i0_z3rHPXw-^BdB-L;rokkIPTge@&#& zZJ}n1_>L#j`4pHji7Ux)CYgs)*uVMigZPW&t>OC&IClm@M-aC0-y!{J^6duP1Mdmo zTL^!N-;ubunYt$!<i`O1hp(KBW5_rSgbOJAE(-jP@WH?z=X;MdagXEo0DdOnRp5x@ z=q0o}1m7jT9>0R`QiDH@g7*REKlmRS*!7gBolLTb0q#lWc@#7VVukJ;Q^;>f6Svi5 z{tEa^zN?Av0Dd6pZ{e2~<o_M<2sj_|iTj#L$U~uW-Fn9VVOsi608f*70bhjp2#^vW zTxKe^o-x$N8o=%|8E*vdCsUy;_+LWfKE8v27rGQ_djsD9kl&lp_q_N8F75s$^51<B zIg%C>@$F4P;)*DE0PxSrc!?=Q;J5Q#Ybx~-@Y_k}$8ADGgF;EW6!@d~pFwX4^fm@* zLIC#w>HAZuS>PPjmHxkkz^xG3ivK>}HGG9G1)&E3^fQ$k4uPwH%`x$dNt+Bz-188= zneP9B@LXUw^Zk`dJ_`IO%6Qte{0?wRfZt|yY2J8oADIQiAvue$zacB+_)ou~=lR4v zPS!sXUSUZ5$`m=8JaVC`JMa~z>VE)V4#p26?R0}DGy*q@>h$9~h3|2yvX9(B3EcN& z61SO*#UN}W&i$Ft=@38JOs&xr_AofdHJ4o0r}?;xJLGEV=D9!*1$!#F){)}{s2;|5 zA+T=b{3kenBi^x~i8t!9U|6OG{903J9}`y4(GFT?8Q5je`PP8Ndz$z|!mNLwdLv9i ze=-Da1PDh$=u`-cOAxmVG5%Mic6(8=lgNKA`Njjgz92t8juf(p_cE24Z06Gva>}tx z3VM38m_jSNo0b)Ud?N9o_`^&_K}(Q%A^sXNMe&d0n?tymLM_tXGz0iK{yV^a4{QYA z@2Nm%D)L)sHUa+}n7C$xzfJa$h-u+kfQ=+x3+zh+d!0(WN@j603C{o?HEEYYEK1s4 zesX9g`5J(6S{pit?{NwoW^ms$1wRNp2c5|@csk|fjyE;A7UUhKpxZ%OO~y$eu7&tW z;#_ppuhfqK|9(U4PlR^^9yRfM!0Sl(c@zJa(1wl!?Zt#YF%_L{{J8$9V<L+w=rB|G z(;!}F2<%7rRKEZ4y<=e8@dtrBlYC<#{4r^#6CMV<n8Lo{dl6XRZlHn=_%jUsVp=W_ z7k&*wsl^KZj0~Hp`703kgUQH`nuVsA@N6o#fbeh0a5CW$q%DWQ1j2zEXTlE`6#Ol) z--0L3Glic)`Yq%a_YknBbNo3Kq`j!sB))y9?fJy7qe9|-<9ngs0ZZ|{LVDm<n;wz) zYT$n+&kw+Ai9c)d2e=*u-zSyF{|4Yx@b;&?+(iC7N#?o&V%LK>#}rgy2!$zpA@JVd z^?^ut;E$VDbtN9SGH}HGgYSug%5E^>JIKF)?<>CZMUJ>0#NGM+MaEuKrkR8(6jla| z8<Qb^T`jbcg6`pK1THJ)LQ~)urm$7O{t7<V21BnJ*c8GJd1pZLe!`>h#cej-e=d0c zuo?ez032Zwk0*SBL6||NZB*ta3hhJ2=lG(8X99l$xHSGYzWq#If}uDS+lBmFA-<hT zodd48iwVDJ=stx15Aar!Zx1<YxfNpK_BDi#A{-{e_k6FKw7n_qQz;R5jqimX6d38Z zfhTS(g<gRF9sYeL-`Duh=v34<@G59Pq07ythKG@G2?^hUJPLm!1j1Biq$zMY>GuME z$;9u6LNl<x@FfkkBxyI0e-<!tM-bjfOC9_y-xO$0A*~<bgZRYNiyUzxku!*V%(t0t zd6o(t46!l5ds66JVD}LIf$-_Tug70R<$ecT+<Sbph<~7CC@1*SO}DQAe;uE=&Cn?3 z6Za|KMc^DOdPEh0Td7$&iGv_s2jNbHk1#}Z4*oRLf-T^E1CF={Abd4(Zs+LhcAo?5 z3hW*5rqlBCfQ#GRR8+#Jm^pA5{`Uf>{7{a9CYqYv1%WGpl@fm*UtBH7M;l_>Abz32 z-5&xm;w}|>rl61p@I7E_NfY<EX-Lw<d*eR>>|OHYN=)Ki03Rd#f}cnK)7j;8YZhWX zfL&@@JsG^Hsm#-+A}dJyI~8v-1<WTb&Vk;mq+P*R&9@uy+0eVrlzER_wVgpi50jy< zpD)zK5R&K_q)p(PLv8mpcz-elOZq|N7k4y-_u<=M;>VaC=>aTi!WR;LiozEe`foY( z|42W7{_jMP%PHt;3aP~J2f;lIfzGsi6PR;JI~)Hx2z_fRvlhJhq+bF2QPV^3QeY`G z`kIO_0OuL-UjW_{oc*;F`LXGbMxd7feG$L6sgE+$<KXN{`0u1Y1(kuO3C9w5NgIm) z1Yd%Dy&1O!d|WmPEd}>IzBdSq`yIHmh=<94Bei-+c<_rRQ4ltPa0=g^rT~ErC;e6Y zYpGa<Oz)C*ziCp)<UNG=o~E0=CjUI(j-hc4@ugH~CFv<>JO}&`VB(g_b%#5sk+?eF z3k@ND8VKjn;(ZO#w8>ylLSrE$?s9M*;d?l!kPi+u6W>l=mx}CVa4&%FlcrK<llE6= z_LnvIF9@tQ8O8gCgd&hXCG(LWo&_<B?-WzfHMHhk(&7;N4S8P&elU1<<6i*Y*}xAb zyf<lQ5IzffR{}qj_!WG2QK93BKM2l*ax#7c(l-FMn^q=4IuWGJROT{1xwbw`pFSN< z%AsK0PU?87@C-ReK|$Ow;zgwQg3=A9%}M+<;M~ObE$QO+Go_5jpGH%P!RIDuXcD-4 z;GY7G+o3tk(ES_fzv9D{hB{D{m-tR5aT$nD@hvonqbWq(v3zd>8w|0_O`!rG50MWj zv^NDEM*6;lf1TH*s-U_Y3Wpmi-HktzDlVp!B-l3L4}iY_r6I(Bf_hhj_iLz@^6g7W zZ}16t1T@8Up|lH4O<p5>FX1lG`U^-~NzdI)U?Sgp5V)N05`dRdNPm#U{gcAZrV{(| zZG-4lLfyFE0t?(<$+L;{-638|-q-oYnMwpWe<1Idz)vIJ(S(nZo$x0DH=4o(aTf}F zl8m1K%bJ=$kAE|j6Za_Tf$Iw1v)~P+(7>%BunL+J!M_MUaC;NzNF@XJX9BB468g0v zxZe0rlCc`Z;RbUI#9ySwZ=3jL)2g^3Hk%6cB<(=_-vL`pcy|i^H+WC;T?XAZNc)eW ze<uE)O<3=QLU&d{S4zBI{uuXrGXI6|LWsu5_yytf_$EO7P}A}!!M%xI8VOvk;hjj@ zv4sCZ_#@yeOivy_{zl-ne1D~(xnDzc6orq6&<sK5n-6Rieio#UY0;q&JAiPLAwrUN zADJGg1b-RfItW&Q(*-|puaYltPY^Dlth2zs0pL5b6MkzD#**=TLvTKcj~OD5P`FK| zrNGt!YasJieByp=Q=zfYx)-<&osY>UZXGz65&nqpa6|t`;8znLAezvgrl2s1Z?_@1 zk~Ei|d4#ksWO$weJ~oB_ovv&$<Crn|I)M8L;WwoK@~#B;dvKzBuK;@m*jjL&0_V5D zjvEg_*VO7jNidc9JqZ6KZ5&^B3a)KF{`x+-ex|q@$c`~ZLN)Zd34aZyxKqfr3$WMd zw-w~s8>*$iw*g;FxGUdlq<6$WADFm5L$jXnh2Y;wS~v3M_+q4;<~Lck47dZC#EmeO zd5Y@qYbuZ;L*V)oK8TE$8@$fo#SPvxU_Vk=jCeKS$yEF}@PCcpXz+#35tMZ?@iF*+ z5V7TIGM!;6AP7ej|BQ??@V_K}S3%|zO!(iV58_)z1@0$rC50A&TTSJDAUqEE&BVXM z7k4JO^ZcOxdtMNh_V*!C+-8uk!v75g9}Da@YTgHeFX~hX5Kj}%;1{}Q!RbUL?xk|l zj!Dotx}efCp|>}c`hm17!L20ThxGS><^Bb+ABgk?cpTyHDY%@3G~ovPzXSh{j05ra zfbg#hdkXkRzysHry!Q~_2fR1<&LVsQurmo?0IfndlrnFU#d-w<zar&k3hcvo9hr7B z$ZwJPGZWs0sVwd$GM?fGLw|(uA>_ZDe1VG)_yE{%O~p=!#^Hol(DFeBX|bV2`w<4o zJkb!SFbEgnFCo+IWPS*Lt7-Lzz^4+v6@L$trzi1IK|Wx84Dr7MPgD6Tq46-`tN1!l z332-X`xSI&$^;Vk39S;hmV|Ttp#D3BzXy}?6NC3sL7D_tP}ubls^;s)ce9pk9;VpS z1VVMTfwch&iwXZ7>fZoA&XiV0_>bV05}%6yF6qk%XZf~(znW6_B77(C1o0kJzlah~ z23Ah|O1>q)Hi1`6IY$tGS?<-mK|qe?|AW^E;TIs#o5JdW|G_k6Hh!3jm6-l&0Czp< zN8)#q{J25n*`NIPlK*bPQ^5V4_~GOmEiglC9^uYZ>K5V;%Fph-2a>p3$@FVJadUhx zlrV#E28CQi#skSTmdp$Jc7^Z+U|Db%8XC(9Hv=z*&I-aGk!}%x9RDKx8el&`V=nle zso+Us7u*Q&2K;OBpP-;wAfCy$JK^v6>Ph>Dsr`Y(19v7wwv#ph;(@yq*g%6Tuq60B zDd-ggYao6A_!00nQpwyi6eO;XLHGdRg+3_sfhp`H;_vdkMPcFwL9n`@Pz@vvn%W&t zU<h>Yht_Ct&&9t5*dr#tAoV5wRdBCr8A#%Ghv+%@Cm6((!0760`9_+GzHie0Wa1kk z)Q`&7koQIds|6Og*@Ta#Az$NnF^!yU%KJhju=C0Icd+j+Xweu7nGW*X6#PEEO$(+H z{wp|J_*}ljO(Fj#?{lP$C(j^LxsyoS#P=ZZKj9xh1zyI#6x=(ZcO~@14HP>>$P|1J z!4eYw0`f>h=mJ`l5ggnc@D@_@M}Zv)vCn*Ps2AxE5U<1k+Q7tn0vgLr-bX1k1?}s} zdpfwahJNl#BF~Yyp8?!$GAx6@HB@9V>AxaeVc?zc2NJg-bTI_aCjGaBZzKO+!23h% zP}91%@H-Gchi@`?;{IY9E8(!5X$S6hkOo2gWQeT-X$_gXlBqY9xZh+hGL<-nOeX^u zcLMpuoq|7!^nZc-DEY?%JDl%WgC{tvq4^Tuhm;}i1+hi-15iipCjxjG|5`Hto=hh} zY#gvE2>%V79Iz|NxRL@6;X8q}tAIUcTJ&dAk$*^mqsB}fGs=yp-Do@=DXWb|-LhDD zB%6-8qsC10Q<4ccp4f-@p2W)|nOJ2q)fn!!Ch5i!l7$p#6uI@au?YFn4e?BQm7A=n z@JTfP;r5%FFS~unmc#EDVL9FAC7XZq$N+at+8w(tR+f%uVj;ql+yhq6FIl>H#X@)P zqLLL0=WjXr&SN|Fs;!OG3(0siRu)M$|Kw$QEu2)IjK<vhRBTf`*3i81?!7wspyn&? z{<zQbq*R@@lqVC3Sa~KE4R1O5o-gf=;ZVu)1u8Pz>eGDw)&o10XHzt!`HihZmqh9_ z@l7#zZni959x91O{pPrlv>R~~v7<6lR63S%E0QTUQx(%+eN|&RULL6>EuP54QhrOf ze6w}1wPpAF->`a>XVaNvotuf()z?NcTYmUc%G#w(p62+2V~4k*%_s!)qO`6&)_lf; zcaLz>+4}lqDwEcg3nFe=qZ>(7*2bFmduUDvso<8xLwDM_%6L;<GF|MhPG)Ez{aPEV z$hdX7TgtMTOfs>ryDE|(Ar-HzYMl})sjX$G)0s%EOaxOG`XLo_%ae8WkxX2MoAIsE zy^xO8>MnLG;<b^wSRxY+H4oi!$f#H*6Hip8-SR4G7)z4@x@G>bL{d@4q&c}`=6ZJz z*B`Eis#vU+!s*C_R63DtYO0N;ivcx68Yw?rqkBJ_NJlnNu{_<XSi<!yL3s>TgBh#l zyLN=Fu=%^&!&9vAmIEF>$C^fcA@5K5pyyLEObl!LL)tv?ks*Dft@G&-mxSi09{FLf zRHh-Bs-cI$l0jLKOhw$1+DQjQqNzAT6m^%--7DfX$=XQVT@j;e)6IW=^qkx;HLAQe znU*F+>g#KnXPJ015i0qm4DIzos3enNP{=znRFch9B~$SxP0C%<SRdOGd2FOLnt2^e zB*96_L^pFcm}y&n_2>Jo&XL+kqC6JeGV}2UYkF<6ye4#j{H6ONbwMzgrzXWj^95|V z<%wslTq>Kca?@3j`dH`yKOAo&n9Z=tDS@$I8ElHB($pI!;;sTIQc5qd${LtM$;3EN ztC9^qW<0^Vtn-@{Pk`;O$I@U9MiPy6$y6-d%|NELOvlKk2=i8EG#T3tf0~y0(>UCG z%u{1>2Q<3TSVbgTo6++uD92x?Ei@CXgQ)P1Q31w^QEoI#tt#Dkh9!}T>AHrytw?5K z#qJtutz?3+CS;BHb35w7HE3`}FgpkTeEpiQda8eJ?doN;BA#)pD7%7ovB+9?omqof zpJiuY-mLSo+Bl<;i1~Ba@Ju>B9d=7&F}F6!Di*#MiALixk>GgISO)UxaA+>IPDOlg z%R^61b2?LH*&3Sv^=u~WFEWbpw-KLt3WICI1xaUH*>c2RueExVE-Qi8lvlxyi<`fD z?!BS#m6$tz;oOz;=1&ge@n>>4QCU8D#lpGG&;G5(hW*WaeqztbvR-2DqBu-9)qLgi zW1G)?{@{VkPRg%h?+DFh{^*!YoaT3)pLbZRjU_ZU>F+d?=O0xsOI8?y*>of=nezX- zb2UeE{SC*!^gx@iKYGo3zpyyil<HpycL^BQmP=lE-0CHpZGP&7n^(RxdCU1P^|ROn z^Lv)NDIW2el1yi}Dw$^c(SzE2*UR_i;xKX<Bw1MpC95+rw%Y@;Wr=uAkvl(;ikBzd zHQ7`uUgWN<jn$-S5G-ji>#iJzS(7Ys*F@@=Cd*^#rbsH8E^?P;Yb4J2B_c(6l1o#O z+9G#eWK%rqE=`ulYcw}YWSftC<*h*pmME2y`5CXPkEP;FjVu!|y=C^RuiJgP%}=G6 zH+8XeI#S6zM?z@My*_Kpx;JjMs+dCT8*aKW&Hm_?mM(Ky+?jZVa60;(F^v81lQ$h> zFK5qaXAW=q_RSZq-kDTw>z!uH({EQ=o&7OPH&1?dR=>i%nhB@p?u0E>@2<Bxm+R4= zr=B^(>fij#dk<{6_Wd>XuB(DsY*u;m=O6rY*S1r;`Na=QM$7tcz13)d&!x;Rzw1Y@ z6{TXCRHR%FYiM39U7m{jVu|Jrf#^~1bGK_g`p9X1`;*Dd(?5Nvdpwm)2zRNCC$_x% z>9-vQMA$Z%!qHT+-b_^4pJUCh{QJg^n)fsx_r+e#w|sHm(6$v0&1aPdTWIvlM>|1; zwYX*MS1(yTNMSV@QS1A!x0RZLL-T!(64V2ht)(PNuZ=Xq$6Mrus-#fYGddQDYQ~bT zOD2&f(%Do+q&&98`(~Bh6N)sLtw8pc=AXV@)YC-$4W)VRcT;;tBoS7Dgq5n>Qup1F zR)@MIRlVi=h4vJY$fQeFMJQ_$+eomLLD?jgLfWmDbP${W_2VhMYLk(uWMXTI#!}7o zKlSUna4wtrK_X?I{!_Gh<4=zdtP+M4V1_HTBr2VI(cab}b|Q1p8P@vl()osW{NYXO zIBU<j$wWoGk`<bWl6##<Pi^N<It1fE#-o3w%&<Dxw$2*Oeps8;m1;XuX&DPC*n8Tx zMq8fM!Ft*nRKX6Au7dL$YSJ7nmv}FAv=&%uc4uqfAyQN(m8FfsaI%SvAD8XcyQYgZ z&Kea#{&Qopev91LQROivB7Ml(gndNyQdW<4wN6lrkG6VxCEctZRw-LSg59kylB!|* z(*okGvi&B`nq0P@mL7>Dk{KOsD@dl3Y<@cnondcrck3Q&mon&y6wOwXVV$cldsv6; z<_n00aId5%{gA6gED*syv;c;lY>*BxYsO6L@#zU#*~$8H743mDt%2J|%9uU|Nzcq6 zpTB<vA}rcP)U8IicasP!VakEY!LMimlhoVT%Ua<KZl$4w{3QcRk2S=+t-Y;l?4I#N zG<K9*maV8@6jW(n>x}WNOe&j6CTkJ1tJ0x`v4k{PfWm3>=<0>OR>cCD>&5KvuveK0 z=|rSnHiM~kb)ki#0JteF{<n%0;QOhrdT@g^VUV98jW!cA_&Qwds_`4Fal=}}T8b2W zpF+5RLO~%xrS=}vnuOZYXpL4Y`&kdE?)|N6z2Ee=_IK3#gRCRHUk$cuoIMwbY?sus zZzF82j!h-h3MTwzc?3Bj5p$R6bnpFPR<ctrPz>r=!fsYe(0V72ZOn=w%(PC|A`URG zMdI@{$RblvGEv(o#rlgn6R@waySO5+8y5vTIWxVT5_12g2&hYS8mf|Xoh~OFg1WCo zM~mE4jCsMbOqNy4{@BuhSYnf~S6O6~T;DdANXw{MnK2NL##7{#1q&l?O0qrc)#xjL zTG3LAcDJt1`MRK<=~5@QxmFTUUS~rCfzdMQ=`raPUu!H+rkI{mgk;`xo?BYZd~MYj zpK4v5utWAHR#>Vs>$3^y<>22mMus^7lR<EknXcJ@C;<>&xOQ=&09)jW7+QeaN-tnR zF=<4wqV1bt07$<p>6R3uO~+8jQ8F89V@H}I_Kac5(0o}80n%NYBDL9=FVGZdT{25p zq%kU$_FmlG%5_%nPPBUG=t;JfOa!rodKcD3+8cq{Rnb3%?U72PMbIxqmKxWh5=0x_ zR5l^|coDUYWLk0tj0dEkX(V<;a*9ONt&^+?-qA(YwH?%;sn+O;l?hmp$p7UrxG|no zE`ko-qDYi$sXeTUr&?$2vutW0Z-*Aw>HVib1kZ!kEOW=VmhmR2`=(l@lVt-6uzdYj z8egAE?wla2OLduMO<3laW02sYwT*^^)OF|L1&V4^jtb7c=GRhS=z(mLlc!k+b!Ldr z)zYeAnzc;5I?dY94_54}grUX4mN6>G?zYdKR;{Hj-^;4&<I7B;#YT1#ec0==w>85W z7eQ))yZbcF@(_tF5ctftpk_|D=FeT68He^JQcW_Q*0vEQw6PY*cxzIrnCNoSFRjc- z0imO(ThVb#vUT;c7=*8fmdN&EtZ2Xr%oW~i(=EqVpU$*0vm=d3bmo<Mb54hr#Sqi! zmYqeOAf=VWqc-eg6{)6utYJedVLFrNv;OEYT}xjkaskBDh5J}vsw;}Ev3oHzEt6## zvXU%Df6#rSjAk>fr-`?<*t*pk+-jYLB(Ky|=7@^SvfhMi3w!Vxy_OcFM;TFB3M@Sa z&=}pc=qU9P-Bs5YZrG>?0L?j4?i=;Op<r(?B=r(nv2u;5*D-bzX(s*Z@5@DQ4wWzl zuaMFj^L$Tl^kC&n(&MFjr3ellNA#4kTWTnkE~tgr0AvaTVuT<IU*Ru2S~h;+f3(s) z3}#nnb~C@m?YE%4+A|1I_6fg1?Nl|a_M2^`)p4_}{@xw4t%p12=qHSE^)N0iIY<>* zNn(3}JDQy*v^<uo3?i-2>ac&rCG&s9Y=>YJx?Xm!^<c-Y9ZI5`v^_~pU2MJHgT6zF zDGx1Ys8x?8)=?dnVYO6CmRLhNt`;+;4yu!uSf6<{ORd9fHGGBDUp=<mdV1DD!nZ>! zu>GNKuq4>e%VE~okkFw68xFFTm_Fg0dQfB|V=Kz43s+d~@H_$8M`bGzt{m8g!rrYb ztc94Z>X05}zK2#Y&=m;I(P9bec+7C^yg}5g^?-T%ECG$jH|NCDld;BOurQNDgi<8G zu%>57i5aW_D~H}9Xl*G*DoF5Ijw~v(A-AcAPq-MXq#k*805Y*Z1hsK1Q^{<-UV6fS z^y-j_QJ|&d;0hF!@6YjR%tOAog^_4NxLdap-!2yL$yL6pN)z>NAbqNBUr<L-Ef;%? zuCPBKqso(&oI=1UjDTSplBbgM$%x8QSC(|kl1CK@offmF)OVCv@7r=}$cmN0jC?>a zPbQ2Bu2oC@h6dG+p%Ei^By;sK>@AVnbdtr-*8d9)Xj4+Y%docna$(Si)0M@fU$hZK zgf3W+2n?f*33PJMyd%xrF#?~Q$S8Z2^~eNmQEW5+QZY^;u->}<bb(=0hI(j~wRj+N zPK@pDytqFtWKs)24exCApI{QBCNV%RP{<6Z`R2zLt3(%TVlTs2WzIoIebOIc|KiTp z@y6g1_Qo7&jp1og)b&^HN<yhvWwthwGAr1ZSY<%zGM96okl<+fEVMG=t}H#+XS;fx z`X>Zhco#laC~?7V1F1^piZS1YU37_9P8dEW4K0A7Df*Kh8O-%r96b_{LLRU1B{w0M zx5zSs^0F;Tf*2Xt6UyZTOq;Ot<F1!1Ocw#QrJ7yjltna1Z_!$-(ORjM4_aK2*IRY* z|2NNJiq)SEvX1C6wm{TW1J+q1a;U{<7~#-Lrn4C+y%86;f@oEhUKgYS5<VbOm@fdy z(MthlzVCu`mXoM7YR)=q+9*LTREkYW0ycf_Rj;#tvQ*>{YkX&4z$x}lJ;WMqFJVEn zGU#Y|M;2ynAoW55p<k4#O3s=%Y|-P#Y>KmtQ*m}(Ee(d%^@m!EI;J_iiK>qewXW!{ zS%Y6Ob^Kx0^o6K2>~j@t*cE|Y0jdada$Lx|^wl&i0qWgBo4Z^JV#5lDR>d%3QCOwA z^DyhIVQu(gD9>AE9jlp#TU8_AesW|fJCNRJR$;PdQ3Q)mU2?c}5H_JIZ97A9&E%6p zs|>gy9?evF|2W)w&KkuwtvN|>62f9ihgSJQs4r8hkwfg!C9OcL2N7i28fj!P%J^ue zljrFoe6WTznYsVRWLSU!mn|fu9y`(+Gf@jRR3=_mo@{mQSg^HeP90W{9%-f2#tqhR z^~DBjeo1|dwajj|x0cngK5CmC`<iq{rYc)k)=i755e!@nZcU8yMQy`DiW1fyt5q8# zR;7A2Vjb9{H0ZlEkuo*3%(|#ky&R3F)lFqqqIK#n<<_$9hV6>YR;@0#HrTP0dg@4P zbSGWaV(;d1tGlJ1j#^igih3&tHW(#>Q#s$l&k(g7c=?uc8uUxHa_IP0xk$`9a)@lS z{^?<{yVe|-`o|V&wIya<Kg5?IQn9*NT^VD5%!FdCr(M`vQGpILyrlxg?mT_oCMU3n z-H}Qxrs~8>>#ISlvMH1vt*Hm%wr`42M^#xf)Qwfv{9y-X<A`I6{Q^a@aO+^hm=~F2 z4c;eJ)>$3KS1=*5hx*b&I<z{kEa@&|hG?ZJ5mA{s>+azcuZIyG094Zgh?Z9+IUrQy z6V~wNmA8+w(#;!h-$Tt!SO*Ug)?ma04pGS@_3#g|)NKjtm0jB=HXrz0KXpaY`qn$Y z-ulo|=cKHPu6ZQyla#gIS|JJpt^e=V7D@zFR+OBWXz_CALlZSGW4-SU$XaL1MTOEe z%k)JB^~VOQoA*G2^=oT?S%CSepY(a6@F3GadOeeq<8j#=cR~%THH}tGUA@TadvTNX zKxg_<3>WI2CTsb^u~i|ILyYOhV?J?=R4GS;1(0ArYX{^WiV^kji;uSU9UOBRLAeHk z%FMwJRYFeG2e97Eqpc@8EZ`)U9SCsVB&T@_l_`YzW;*})o7u1TO<J3`%6WSnXPvdn zkYIUI;Y2bq39gBdj@1`qkb3J}YlQdQxz-p<y>XuPS$9k$fe5c2JKvfzR9`7!T+GQ| z%s=__6$SPA`6vbmO>$O^+!{-SN>LLL%VLpQ?DxW-y>1s+k6OFCW8I(8o^_VVi)gQU z@_cK6_wQ!w0Bbj`X9co_PiWdj)=5s+y!Bq)a*5^Xd0XFl2XL{1%bwyzHd`-Sxr%tK zHtGwFXb&7q2!oSjflS!dS`*ZTt7%!4oof?y_m$F$EQ<o0GTT(CnBV=KOxwm2S{{(= zIkm}T4S(Y`Vz&~lfL`WAqAHf=Fuf|7U58M%Smw3tw_1Cy^DoV`!PczYpZ*y9s$z9> z3Jdk?FMH0WxHh4Lz15dmyW72j^Q8JnS~za(a%;Nx*UPP$opY=vnd1dkx=?9giPNl| z+2~FS?}@dxm4(k=tVqhtC+x<F>{0r(+}C2F?s)V@gaOT8lJ3Ft7P<#8j}eT;penga z>tp2{Qs(^o7^1Sd-MAx#?xSVy7V=RJOr=HIuIV<S<Bv!EM}LRcibSfbFWYIJBd`NW zlPcmVOh01bK%){d6$JEIY`OHcv`QM3i&q9V%a$S=FgN5k3kIqir|MK}ZZJCe{ZCB2 zsB&^zV{|N`-9kuK88wmGalgYijY5x(kuk<xTb|R}wca+&{>=$;EK}}ZX&|?lFDrCg zqjVT{a<Z`^6O}13noBbvSdo?E91QUpe|wOLDg{ez@&)VthGwi2n$e`D*)T1F<fBQ- zHo{~=pv$I>SB$ThXyEG=riNc@4e6`R0y6a*IjLr8&<#=5<$J4SSgC)q=<16r!ktW9 z-w9I-uC<QydR=FIYk6~Su+~}=IBYp&@_ILNRE%Poamf8;96!S)Tsc8arY0i{i4d*M zztO7i5=as1s~fGE14)9Fazm@l=Io8W$-2?*tM7}+Z8Uu*?Tg9YV>eshbl9~B-devp zQokUcs%wa(V%~#ySWCL9C-1eo4e<8?q#f)^(q!f-XIr7>+n?#{4f&&Wjy({WL=34i zFSRA9KGPTut*MHsSua{6)WZ9%KHf|BSre^ctSfc{ZT11N&0_YxzTX;Z<<hXyS|)_g zptM$wxCxI4rjO5T+ww2pZU&-nvtk-BgSdbr#@cexewoF{V5EzPp!u~X5ma1Qo33+* z2dp!4fk>@45Z^pf786Mw5vYu%EBl6?Q-0?Z>FFbdS0>FO_w6#8<W6=2;f6brW9sB- zu9R{7Z$$NA3n_n0`~~InJoH6bN&bYSo7G(pSU-4IJ!lQHi?|Y%U!MM9khva|_IXet zH}>w{#sS&{eLR2&8%c?XBtwFFsl#&UCCa~STD9q7?~{kEXSn%AN6=BiT>KI=>r7zr zl;dF$RMKk0E7oB3;G<UGoYB_;^AoF8-*Spj3~L$_t?p=jS;Clw7$?a8Z~3%T&0Ih# zX+K-vmh$|CA;o%6J!+jltjG+%&qid%vQg(PeZjgwn8~m^dF$V|mh|jeB|;~hrr5js z-_|pBiQlW*nj1*kJKadZMw`eo>l<4xy299nWx>%@{bZ}(^kDY0jmVzi&Mm?2s1N-` z!J$mqrF52py(_GeUs;<R?y0E{zOrU;Eal&t46WfTm_j*GPx)cwZG8#L8~n9(CELHi zQ;|fPfF|0Wd}w$%^ERLAcZq+jz|?P-LLlq~En+)pOTvj|!s_?mSoiL(7pyKwcnrIW z*&BQb-oNAGRsF}>YK_ZZK9f5Xy3#EM5C7sty13gICf;{ee>+y8Qr}qzsXM>3`V0y# z(IKXBPeRtOKefVY$9LA0>l?qf>|NR%ld8;*mOG4wYuR=!8;qW(h35zAtRJmXv@?-v zyqABp!q$LzVnPVqsJp;iYUS`N@z56U>z}Odc8=|en|=8s!BM_&Qx)TOnU=x3!2p?q z=u5Id%H)Wq?X6XRQwtpwPcxllp|b>oLqM}qWxDu`*KcGVS#`GU=R23IUcp7_V(%5( zKGT}P*4U8DvTcfVp~W?SbJXj(;P8m~uZ_hJru*io@(%U|GlGkzGJFM-5~1T4uikq9 z>|l@Rv3pW1M0ulD!F?E)N^ygYt`2)0d)qfSxhhdjTIOII-fa%Ke9gS&z^s)Hs4rrK z4xy2nmejaq@&xN#H`?#IKueNAAGO;mVJ?{dU<2I!VD^ntH}tjD{s^*k9X;kRJK1=C zeimcrLz9ch4b)(3R5Sb8;hfKW%-&i!_)^QZ6F@H&xmd1`vSif!>x%`7e^|FubKC!g z=<YFJuGiPq^Hj|dV#FwkUZkJBtF3AV*b~(K1MD9<YHqFW9B8i_7EMAyN)q7^<xs4x z2(kVh1+U8>`+I99rv)LcI0RN3>8McU<np?Qw&2y(hB!);J1flmU>6F-6Cri&f2<R| zM~2uvY_&0F%~ekiv-^7!hugDl6?N@bynRO69c*W>@HDmGXnRA>pR(0(OShqM#|hg{ zE^kUE8aZN3AW=njY-O&<!-S?pq&k|dW>UqsZ+5ZdP%yVo<8jitQ5x=6g3Y(V&)>NH zRDXtXbZ1EVRKlS#p)uiU6<mkc9`|R|gx&3{)VHJU5#FP_+viw&jY)S~O0P5~vdM<X z_ESaR#P}BB`NFz&=t=FqUhtx0?aMk2EFFtsq9Ia^E}V|lFtbuk+c!s>;_9b8>_e>z zb!d@2q*t`EcKgXucdWnERl3M7F_%ZZn~Ll)R=<_epcj&I)k5Ey4|`8evPU^qSba9d zKC0`yWX+BfB2mmFl~e5zlS`XoJ1#B9)=9rbqC9Yjls8r<8bk9?kgNTkaH}IVNta9M zvFe0+bC%tANG*2GcvE9}QzBN)#XqiurfQ@!>1=iKR6EtLK2qLPLtnE4M;hX>9VfZb z+K7rQw)v?upK`kxzTA=hA5a+MsP3TzBWdtWVF?cNC`~3-I@8cLZK9v31)QLuHW~di zw_ZIu%^vCfG|gUW5A-X|9EqgqC@#a6p+kq(HLBS^*#lK{Z~Mb;Eo)M(o^Ibi*pzHK zYWvASM{VD%hR?9W>g`$fZoN>U3c66upJ6ZIwEf%}_VpvAiELoOP?(t8Q0dleKRFXo zQ)b$8dpC)s(14Z_bhN6NX^*s`>a>~m*;dT!zmGl3Dy-VNV*Aq^#}5sSnZ{z|xzx5T z%y@bG0hRg`gBnkBH<(Z?on_o65tIUgq|mx_6PIyo;xV_0)ladA(GiYQ^3xzqQ)~1S zkjAojEh$Z`q%vfO#yT+=zzH1GDOJC(-A^sw*DfF1R2L_)r3u_cf@}gZGR9f>491~# z>ik`tKI-0mVWB+#;F@mDwk<nOU}DxaQlrpf4B}j66I$rsQDDWP^^t}&n`V7uhN+x% zVG2!=dfqNco%}MTRZ_bo%@q}q$>jQ7nr*2M!(5YUgzxK#!MvC<%kIZ=a%b6Nx`(^1 zPBt~fx1YRYt6DnC9%Y5Sx>@$kRxX>)(gga}r`JNxEUKoTT|#q0bEy?<qdwMvkX>Gd z?B7IwL(g<Ht4p)L_OUbG;Qj1<ti9!-hP2V2)5UJ<Cnvl=X=>-qiCR6!zBsq)7rHGO zEpI{rYl_r0)<k5%!RXQ1>$0I=%Jn~W_Sy!do{^!|y_3-<hAkouXl#m<SI50i=h!D$ zv)0N~*Kl+};XzErU{UCYDF!T>qvk$>AggEFmXwz)v2BYLw($V_OWzx-&YEk_@3Fp2 zo~@*1E=SbUbM2Q%y=t@FM{S*Ff44u{eoeMI<a;dtSVIsF7O6>UyGlc=IL)d{c=ye> zhuT(By}ZyKJ#J~bDHGXo0(XIg#n(ncOd*-K`S?o2j99fQxz_HR^J`xdX<`Gzd|jPo zTN9pPUbE0I>}a}AVB&EuhvZjcxLXU@Eu$#mK`gE9o9kHt4K3XxnRe#qa`YEZD{GNG zA~!Et*SO=-TB(byl6(;X*+itNQFDR9w=DF9o+a{Pq)F;Vg=BDxnT<QPGQU|;w3`%G z38S;)Ug%f1SFv3g<;KF6sS%6pak&-oSbegAc>)PJgpHS1>mw5Bles)|Y5g)laHJQS z@WnjKyrng4Puov!VzXw7_<N_+RP(<k<b~MwQ+eOgRNfS;6m|o%z~od(hryA&g^TQd zPS>SInuw@Fm)hs=;mahn&X+x8C)&AhNks7Q-d$?nW%bnWSQ@fCZ&+4R?47^do?;E< z&T-ApJ!et3udo|CE~UCjHGZXC++#B9u*PRLRVuoYMN*{RUunA&mO>>FuSP^iz{$eI zwx1em1*=aov1q*NxXNC+dVND2j^9QA32EqLSZlkfOZB4%qr1aIHDlE~08e4E>X23T zP*u6g-hbfFqFlGip3!r?&yNu@$mPAd%Kpq!*Q~b3!)E`o+MZzVI9~m8mD5kTrS`w) zw;uOa<JJ^RO{&2B3#1`E^U*0%7`+exkXW*6?=|-IxzdJhTbOcMBtnC(-hOg%{!z>S z5AS3;)nG1-G<i>~vAbELkR7RCCR@#xSsjZeSgVMF!9_V)0p9a#?XHeG>=1kGB-5eT zI%TqC*~Y3xlJhq)KQZhs#f%VfOXsQm4zY*!nd2g#a;t`J*&NO4lR)p#L+mnJmJ+M7 zQp97~>{t$UtkfnXS^eOqu_BJpylqQ^Ji+-tTUKSUruukHL`C-2He<#5DrfnHL*9Ld zBJ=l|>p#FL+}XWH4!5tgx-=RcUTrwiUNm4`YdI`<hT~m-q<y5-xlv@*WJ>+8!G7EO zDPngQhTpB+e$Nr9_lt7-hCb~HWfw*5`BqlF618s|j9M?kPkU$=#O#Hmv5N1!uQ#=l z<-BKOc4uqcs$>IK=()2ik9KO{Oq#2*&A@t^_-l4^?}ZBcXh$unwx_Dgs_h5iPq1mX z4uvJk_RXzm?$yLa7Smf)Jfhau*b}WH@1z>LXGgehlkUk%R=XQVZO!huR9KpD5q~PE z^Xl#Ad(4$xJClM{Lm{@&o~y3hXuq{bJMH9wPotiRTEGnUiXA7Z#+3a-H~J=#+;J(- z$h?hdd$5hp+!U)3jf?5%7wDalWv9*MYa9zPYNDaFGy?M~d$Q*2zOatDH3f>SRs=Zl z;GS9JO<%~U6vYL}6D5fU8?jVVc~v5wC#zLT*}r8f!;^Vuw&MhK<tA8cgF3juzFa-H z$sX9zP0Fs;`zX7=RjtMyWxvt``L2%s(%ZWF?kIafF9R@}x!S+co;@Ir4AwxcvNdta zpl%f`-0hparbhd8t9J^Kx=0#d!z$rENz(hc$$s9NwlX6X<pB{^a8oy-3Qnk<q;yk5 zRz2`5`|45BQjH%G(Ji~<1X+8crp2@HsB&0=`t&rrzp6jR9@_HwNS$|#eMCOt@qrEH zO^Eq=v<;K+4KHf1W9`GbHbzl0W$RSu9BVfW&~og~{NL-4qapigeJ#$)k_Sp0Dv6fJ zK;-$Y%uX|n8tdYr`88?tNJ-4EVfD;$_PJdGR;7+S-gbvJi13-0g2@!D1xR`8j<+i; z^_LUvA>Kbvz@&f@j}p4$B(31{XvrrZjJ8;-v)*?n*-1;Caf-cQ9O?eUrN+>*czIJ< z#N~0L51}I^JCUYp_2en`KyUVG*v2LvAhR>-ili?>CAM1_DvA~yxPk8G!?fUEo_OSR z`@|jvvQ>pwa)!N^RTh{5vHW9lkgCSq{M#mZ*Tl?3JJN5P+Gt25>6s(lK(7>NRxNT* ztS0Pb&a`LQs(zk5KyA9!?yVj_+a4x=7WZD0fB6Jc5tT@7yw&dCi8~^&5cSO2G<4cI z_9UynEY*5MnTF7ch~_eSMrp-<e4xr}lS)%mo<7w`C;JU|yTQ#GcWg~JY3w2vXI|?w zmKLqK(M+UN`q9la)}o;?&|!7NxwZ?xI`&*U>kM0!G^PxnS5Qd=EU|51NQkJ9FR(9x zWuMq=ud!0z3(a;P;ou)#X#afx522E%taAM;%8=$4!}g2pOVvyJ+db5sC)s^Q`ER1k z^w4>*2lyNVv5EbqK^<|i{q#OkZaVAp3|}dZ)fK~;%j3e_jNnwSwc_n3SBjL#gW0KW zU7ebw?9qyQl-(BnY(A}Av%j6n1QPuhgLjz>GeTriZ*kmWt#Wr<no34>jaDjqceP5{ z-TSsjQuY4S9+GR&f&rQ|Y>?yOnrx`FCeK;g%cey?_@{86_G;2Zw{MQht=Gc3{2bNX zFLn&ix7w|Z6pv67^a5-EX;Ks(8OUUrJT2z1J6V<#F*_MrtF050{IS__Qa;YesdE%- zyh#0|?1MWjOl9lU+Dq(LRC10pSWVq**E7LT+IDqz^F`izo+57-9UL7=J#?8pU+s3e zUFJP_xxLADKv5gcwTFA_uCy<+W-f{F3kCeDf!|O1c70>0Js_-{)g@|BXz{$zYGw6y z#(N{Kw(sneTY@dEma+n|lS6AQ4`VU%DKiITx-oclNTW3kJQfmb8!xX!TGcB+)RVjc zgzY+?k#5u5rKm{Sv=zui;clkfTwt+;@%+DBayfgc2yjNO47JnJWLeIi-A2{)pQy<i zl-uhFG4;v1WI3jYNPVL}>)FK9u$NeMxIKFQ42S*t;vgHLa5d96bW$?fzyuPm%neHJ zS~ENT_&d9+dh-VRl=emfl}!3i3__->vtlF7tAr@Hu!sy+fEH_)i_%lA4IDB#eG!)S z)MneOaPVpkag96hSeN1PyqIYjO~eQGb-IJ0<d6}bFMGM}*48iB+}doJ8-Y_a=pvIf z)V;;Lm<qcqB2lCmF==y_jzuk#D%hFPekZhf!^RUfk-N-c6bKRF?AoXjz0v-l6H98@ z?RHV2p|Irl&Omk1?e=M`sbP26Su0mKt+OKVB(?J1>X}-RTgd~pAXRMNdMiN(;XxZb zn0sy2t=dxLA}FB4OItY9mo`%^^bp_1A!<58vrG{0>^to-9o0>q9bO=>*L3S!<Um%I z%ou;Z$@No_h#N#uW3NvpM6=2BI_|z=&k3vNJ^R`N3e@kZ!4tItSV;imuAMvHsAX8Y z^J-a4KXDtR&br%PFvEX!<_lXvMq^JF>0KT;WCOUrIqFpP^xgL44JNY>Z;dR?V$Qcy zuOKCn^$oGX%QpjW5u1?0e!SaWulByj9;w#dW3N-s++&~EPd|I(QBgJQOkTk0pjUdY zeWztLs;~cOUpr(~pmlJQ(znXxrF!qzTkW{D%Mv+)!JH%8Kl56>HOubPuU*TBvhKIn zja@-om=0nGs*N|GNtC0sVBkdEDaZN}klFVDdvKRP#83y_Zyz&5?+P_6Mp;BM2{Ab` z)JC;nzO`>|^`5=oKG0S(9<*!rTUk$IF^7nZoyABjHq7<}^qo_*e16q~_S8AZm4ya# zpEnf)ls9sbz@N<4RxSg<wNuf&q$zq_yjLH@gsggOv&Sx2CqlYdI_2j~d^6D0Pyp1k z19?!Jt;PBjOhB>O<)@%n2BvPaAGRjyd|Kj<wc-dqL6e~E1>RTN?FrTteG^xhvf0zb zO73$kv3B_uRK1;`ipi;&>V2EtKPLkx92j{<OGOwJWW8Yol;2g6;S3{q^MJ09@`}at z1AC#YPApGSAI%N@ZKX)Jj(s@4|7kH&V{rEeL0;SD%A0bLbhf24`5h8pcGmNWYWX%T z|Fn<hu-0X$MWk;z88oxXpM$hG*l0yq;3%P;>gOv}pW0W~zE#~t>lT@J=gPLOYgi3` z*j{VZsm#N+J0P#8X0bRJV>MM$7d>o$jp;yZZ_Mc$woh#_z$ie+2L?(l#b>?WKVpyU zI8LNX_@>|cVx#3LtHIX$uP^gw)#s1f69)cl>dYtX+FYspTp33v=A5S-HCL}tJ^QeH z=t&vUSUM>7ROV%nB9b=u@=Pu?hF?If$2=ZwOfYjaQZkVY?eMOB!v4-?+qv>-`w6GV z`UuaGean2Ks(sG>vF~!w^eaHrw9q=?85qmsf3r^>!YNi#^8;<Z(V~`!R-9lZ)vJHA zzw(}V-oDUoVJYihvj4PH9~DZ!VI5sTbq#9}-4;fK83tiZCamnB{`pvoIRxsy4Fd)u zuLS$OY`YU7Qb=>2PbJt3ksO1KFzoI1vVD!!X-%rJ%uT4LUa^M{UN2G&vk);6b6k<j zcpJ%CZC>dNJye8dCN-uO!!TK6tu0UPco84aVuPcASj~hmX55|W=2@;^ggWle&cIy3 ze%!Vw3=pksTz*OZQqqMO`+m#Z3B;42j+MylMurpqBHc=3<O-QyIPjaCIWRWH1f<<y z18~Qu3k>meXDwQqR7uO&@~}{kp1*Mh#)!iF`XB-!(ybBUM`SM-^)?{~)uS*joWSO> zeRHl%^SM#1pL_w@_>CN>4IVyyv3CRw*Ww!5jaYg#)lvR&aXV%;O;$u3dEZ|h6cFYz zC<l!Cl?!*ZYqRauo~1(9_*|`J64YaIqBZ``nUzZK+@zpI4PrzQR#?sh$O3*7bnqy# z?5^=2VFtFGf=MK{3q4|TQ^9B5`Yr{!Wo5QdKHcf%VOag+75hyGtEu|+N@vJG;kMgP zu4mLmD+so?cvfwH)n1;P#}GwAJATb2QI2$sHKRDxV&L%4cd@dF1xfas6S8g53$P7= zogoFc1gM1=HW-omxO(7Jdl!33%kiH(DA0OZs$hs}8;kn>6nob>OeEw?qh`0fdSq^4 zfI)X)o}zcO76aJ1^bYG5mX?40IQ2Dq2!;=D+3WT~iyh;_H|%E-)GOY!U(Kyb%F>~K z3K>lv*uud$%+bmwH#9P6N$q4>5z)^iqb(<VP5!aD7TjA)^4QPW9oeXI2<4F$B_iz3 z<9LY1vx;>#ky6;lgWR&l^{$Zhvx`Wt8Hv9N^2!K|Of21j<`ix@*VH$|TR79SXtF-5 zxq(pj1!gIe0W|L=C;$PG!#)&OQQ*Q}$y=!T3)g6i6x(#6jSb!tSib)I?FB9`)D^2& z-?o3%`qkvhckD4au9^9-CNmr?rPwi8n?`Bo;bZ`0=mKjO^TXJ{g46;<&uz)lLMIPn zBVj=X?S;^)RM-4_Fje!8y?!qrMMnMS%WF%<+xm{ZTnuhq-@~ACfNFZrt|a!>d-j-% z-?zh^wD?@?O?n^mz7_Q*|J{DwI(T{B2*o7V=4~LNp%rWeg}Pb;R~s;{rkZ%0&Bkg} zGoOFKasu5yta^NC?_rgznIBT}q6qqPQpG;B8wUHGrk5~Rg0Tz82x{3{z5JoQUpOhR zU-V|~&jHQ2e1VBQTdXQ#J(D>ix5w40JDh=ie8DD*IU!}TCsn_X?6XGC^Jho?BsUT= zki5-1rmp<RPVJ#La$gtGQX2Km){AkkfIs=Li0b{Zof)<&SjCtD4ZHKRbF>mst3I#? zcqe^qcece+*;t9x(}2lybHK-2U9k$SZ*x@R-w#pmZga-YZ9mOltSq4dYqadtObKjK z{zixJBVC(y)jQjqaSQ$*6Vg}3G%a=2C-$UC2+o>i>|6`qUdR-e^2x?Qp}O)DdyZQ5 zDTm76eu530(8MmmiMIOiQ+sx<5wrGAR?0L-kjS%$RlZEP_oNz5<tVaSz>~EqDW-xZ z7zX-aTyN^W=}D}0{w<?bf!!LrqG+nHRAb1Fa&W~4lIRhSOcqNs(~l#zH~wkQ>mYMQ zjrz<UuU3C%hYJr5qUz|+?9+O!Vgl>6(kLxe_UHBi+~Au3d0XU~&+XNie&pED*K!Lk zDFvMrS6e@~D?4aA`W>IxBf3iI5-awG|H~d^sYCy5U-pYPCkpuwPfuA4d8UFO%K6BS z6U@zbSzhLtc;{1Mw?QA4w8~zlZ?PchcK^bjq-K0!kDA~s*}}yO%E1J`(_Jlf@E7*A zh0oMQY+#&FdALc!EJ26h$%;tvVek7dILjT;mZG@{h7!oN|9H&X|0{d3HE=FJ#;eV} zVvP>;V1#FN+Sm5HK9NvqQ)3zY2v!l*Hkhn>@oRhW?o`~rTOr&v5l^OBmK-{YMACp# z!{gON%yYl7@0Bh5<^R}SJGk7=6ceMIlKO)ZXRgX<%5f&QP(=P7)Y&Adw|}tTT8IuP z#t@N}MRdSg5wyA5t<zT*8q4G`u@KHly@+HCmbnnn7*bb_w!`MB>)SuthYaw~x3yK5 ze$=N`vPrArpX?#3`X~Fv?gh|4?CVUoylTtgq5VmYv$6MT{nEAtBjSDGICooXR%(+h zt1RH(X!6Ortg+y>ETa}Yed8gmS(>Pj?Ol2JT}Nk(HKLJ;RCo_Du(+)BZ!oIQJ30Nl z&pJ7Ao29e9tFtFJN6zl*Oz>{&>U?O;3C<pp+V+DWta&A)s^u?zLsehgK~EA}OK@co zrCKtC)p^~WRcwN9c6X+FNA_^~T0L8KJgh=$V^3%0n$o81So8{J3`;KXM8M^@tx<{7 za$2L4*nv#BFbR1~+aA<^Dy#m~)0wsZ`eYgBiFr$=R8J<Ou&ME*f@id&M9cFLnNFe< zb4f{SB~5C>1gF0m)ypXw(^9a{*8`M-8o5#L)Lzb09eS6_Sw-PNg<9LknYh<ZV7;Hp z<{O;&v8}c_tMG2>;}kn|;jTlS8EVJ?XH0>y*_%JW=`11#iTkSC1~^^RxdR=!pr-+U z8suEijUT(=y@XtcQ2PzyxF<c>ITVBkhB*sWzah@=Bs@e95_vFMt4oGDFSY=|JG_I? zP$gig`r*!45-%R^9MgiM3w!D;r>nYtgfkBKlOvob+a!-0=@jMZ%v9%$bXNKple})D zoPUYg;``m5`PR_2E%qD^xzfopIp#^SFc3Su{l_|KYhP?0RdIfDeUH|+Z-c2FB(^v4 z)pO&Vw|Zu@-9W#7<4w>l<DHp2aWW=~;N-%;xz+9=hI(zhGj?38hO<dV5Dfu_&W`5a z<G^|=<g=vcSCZa$<DJhf%T>E#0QCMb(Yes-r^TJNa<|GAIVTnjuKH|}vzNMjk~7F# z!=J+2$X+V!+-r5upX{^HMon=Z4;%SQPKmToB-@OC{$zwFCat~<(j*+&`*Mmi-Y#a@ za?Zv^&{WpQ6Hp{C7M*_%$jv6<p!)hh#sYogoo&K3l7o7xqcbQM+=b)Sh9GnBpXLeS z3Ue^8pGxvxUCc?y;#qeL?++V&sT!Rh(<LjVDY#zDT@9|2a!at=Ttrj3`9t5z`70ZP zzD>UqrrSr(2e2#pcfd6E9F^PC>EE3u%7KNPKdEE)bcU)Gdpf1ev#a)WzO%-zjJCci zq)j3_wrUY3Z>Eo^OZRs6RKun_S!U}6)14yn-#^`XymM}?f0C0|=C*H!1<GFPn=-KM z=HE!ST>hXLsDk=oG(0rFMfqEyG3ShLs!XDwlFZQzZxQt!GLCjmZuMX~=f9Yq!1fxv zkj9P}Y+*=-V)D^OX>(%6k1p#2Baz9p6}n8sI^?^QzU<vf<z$~nBh-gZaqL4&m`sdP zeV_(QF*&_e7PKs`+iRNS3p{dSZ(d2uB^kNqly9l*nv6RqvcBcDg}R*UnRXaGLn^~X z;^2;|o||L1<HaRYn(q%IoD=y$4�Cn}eoIG_0oF<Mhu}`^U>oyp?V&e9t0lKHY?B zq^-0CiY;_yUF)k<x)+d97){QGMdUyNrW1X$w(Nxdm5o-tBb_5}!<oe8Rq~n}OQSql z&{uajvFCDwepQ_am2yzm@}gQZ2E#a*PBlDeq=oR7;I{5aR<M8G13eCg&Fx||eqME) zY;N?9Nsk|+-^2R1h1Ha6oI(4_Xfr8AW64TI!ulpQPgfx0Yo3KqS_BrD<r>vP`#I-& zcg}JCYI)mA93I3W#Ob}C=aMmbsEv@3KT8Vk-eI4{G#9Iz3@yFhV|8lzT<2JQk*4L` zDcD!lqjQ}xd$rKfGUHC-dV3PC_m8>G2X;}Z|F}fvJcGw+Qi_{kEobl8vC=$!74DQx zsb|i#`*~k3aGvO(s+J-=Hi)K^im11jI(znO`wHB@YdT<=bA{bMe;*Ns#%~GeSK{t? zWv%3q#p^4aKJbUnS2(|t{jBalXD+_lxW-xT{ZQ&WCp+~sYn?Ag6kZ^bbxwW7d@i1J zt19`kGr-$^kkiQ-><hZGSPECIpn8uU;#_473z(@e7Q-FoyvygKUfH2eS1Y$RugmAv z`#MNgquQ}x^2#>Z+A8>wTK}4%tSbK%xxVB@F8}@syjqT~<?@C9njA}(PcN>S57Q*w z)Ri+0j+2qCRQxdKiX5i1o#n{<VN{!U8yGr#?MKd_<PKGfH6c(3BECI6uzUw#SXan5 zTS?cn2(CHP&Hvw&xI7s(96K1<tY1C91}ICzC$tQ8Fl1unG>h3g;Bcpl<;_0AX|jvp zoBD-=J}=4^&Vh!;6bw}?!NFjwyEZs~X5Jkaajv$D7Y7$5f(sFHIxMTyKL?9)xmJdy zoS!TZT~H>1E+k&;jf^@&?4gE$*}%2ANfwXX|BI`Qzk;vwv`_yW0#_5zS<@`8{4bvE z#2sO^{&@p4#lNloU(v-r1vVl(s$F(x^kF0#=Bs6cRtvvTbvwlw;zcW*$Ggt_xnny{ zMre;=Wi6+G6U@wrsde?v5%lOE>e>I*`D2~_-kg+EBAV%OX$Lc2k#~H?*(!^Cc7wB^ zKzQ>`Yj95NNP72UoaZfm_$+S=P#+xYTt|j;a!w82@y9vS)#T%x)qePVydQGTG&S#d z=K+)K6`$bDkg_(O=*;Le78ANLP55HHbWvOc1{gdO-5l<y{m0sUJ8GdxU3a?kFxhL* za7J7GeaTMx4g5UI@qT-z)2nBPZCfgfz1uE<ol>^C)G5j3jqpCI?2P(<O8l%1BQVX2 z^y7<c^lw7$ljs|JXzX%#iD<oC=gMH&cAMDdM2zOHTVT@OzM20fRo3XL7cX_DcFW(X zAFpowiXX?ApvGM0oEl#5KYqx+`3$YhE9CTqc?c@DCfHnc#Jln`XO%rEc#W^OEP9O# z%&nDNZQ5+$VicDT^~v58qv6Wl)H;LdJ`_rJX|evb<Qjk;{m(0$cZRIfYH=njR~6*y zI-*2i#Zb@u#(A8M=26vH)%2J%Pj$Y^ITgS;S2_D`Skda0PT`g0gd78Ht`9D8%DQdu zrn5Zr7dc#W4Q7TWfiPVhTFWKS3N`*}=d_uK6Z%LA;}mV9|6nNc&Vehv?A!X-g;g(i zlC_aI_-Vqhy6tMG#Jl1e=P0{RJ2%tRF4sAuCeSG@SHH3Pt!376E-An3S8ywVgMKyf zIw#hFJuB{=cAaySCBc}oZgBc^lF&n2B;42IPraRMG581fvUtRVsEnN>y5nBodRx>@ zp6-~NS6a|b>Ko;}jiZ^mspf77d{3W)qVva_^v?xwr$>Y$%@##|V1gR`L|^3VAUCsB z{Y}nOhyNU3!93O89Rhx%h=<&h(-VFsJ+!iP&Fb~@cl>caS3daRjNdueTg7wpFBzMB z!4V<U-%1cd^Xu1dHMI`v8qdyAi*9kY&i)@BbDD8(%D+ksR$<(8ZgtKUvE{tmoLL3z zO+9m)!%IK!rrVu9-RCS9eF71eg)Ty7MuhsnqJfsnuAq-|%#RoFp9j$BIl<zu%&)lG zWvesVd+m?Ti5+s-UC^r8u6^rWdwacJjoq{)uAiWZeW0BV2^JYW!}Dr>u$l@ME}UR@ zE|9z2rpZC~!Jou}g*S>7g6WoNqZfIrw@{<hkq<aG?X!X@%FLE|1cT6QxYau6-eJos ztVWsf=hOC6Rp$qt5u8c->x^xYm*O(x7zuMS-RjPtmZ(JGkvU9r<bkeKtGy?>a<{V; zSxWWUrQcUACh$qTNuhfGBVBLz2c7e6ClQINJGWuf>$V*mXJ@^mhoWjo#2%~;+~KTr zp@?=TGBu(j0qhFCG+wFybw}8{Vu!QMwy>~0>WmtJ5Gy}yAS?#cVS$_ylI0&#-L7;l z^!9zsxk%<B>@uPD`-^j|TDl#B*03)yy^2j-ZT$<;5szynKlQjX(zc^X?}8_t0hYS% IDd(O43nzr)kpKVy delta 52861 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 UW}VHkTn_4L#_ieJ&3xg107-Tbg8%>k diff --git a/resources/localization/pl/PrusaSlicer_pl.po b/resources/localization/pl/PrusaSlicer_pl.po index d360128fc..0daecee82 100644 --- a/resources/localization/pl/PrusaSlicer_pl.po +++ b/resources/localization/pl/PrusaSlicer_pl.po @@ -5,82 +5,101 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || n%10 == 1 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 12 && n%100 <= 14)) ? 2 : 3);\n" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 2.4.2\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" -#: src/slic3r/GUI/MainFrame.cpp:66 -msgid " - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/releases" -msgstr " - Pamiętaj, aby sprawdzać aktualizacje na http://github.com/prusa3d/PrusaSlicer/releases" +#: src/slic3r/GUI/Tab.cpp:4124 +msgid "" +"\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" +"To enable \"%1%\", please switch off \"%2%\"" +msgstr "" +"\"%1%\" jest wyłączony ponieważ \"%2%\" znajduje się w kategorii \"%3%\".\n" +"Aby włączyć \"%1%\", wyłącz \"%2%\"." -#: src/slic3r/GUI/MainFrame.cpp:872 -msgid " was successfully sliced." -msgstr " został pomyślnie pocięty." - -#: src/libslic3r/PrintConfig.cpp:215 src/libslic3r/PrintConfig.cpp:792 -#: src/libslic3r/PrintConfig.cpp:1219 src/libslic3r/PrintConfig.cpp:1282 -#: src/libslic3r/PrintConfig.cpp:1532 src/libslic3r/PrintConfig.cpp:2425 -#: src/libslic3r/PrintConfig.cpp:2767 +#: src/libslic3r/PrintConfig.cpp:249 src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1390 src/libslic3r/PrintConfig.cpp:1640 +#: src/libslic3r/PrintConfig.cpp:2568 src/libslic3r/PrintConfig.cpp:2805 +#: src/libslic3r/PrintConfig.cpp:2931 msgid "%" msgstr "%" -#: src/slic3r/GUI/GLCanvas3D.cpp:963 +#: src/slic3r/GUI/GLCanvas3D.cpp:969 #, c-format msgid "%.2f - %.2f mm" msgstr "%.2f - %.2f mm" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3126 +#: src/slic3r/GUI/Tab.cpp:3425 msgid "%1% Preset" msgstr "%1% Zestaw ustawień" -#: src/slic3r/GUI/Plater.cpp:4400 +#: src/slic3r/GUI/Plater.cpp:4423 msgid "%1% printer was active at the time the target Undo / Redo snapshot was taken. Switching to %1% printer requires reloading of %1% presets." msgstr "Drukarka %1% była aktywna podczas Cofnięcia / Powtórzenia zrzutu. Zmiana drukarki na %1% wymaga załadowania zestawów ustawień %1%." -#: src/libslic3r/Print.cpp:1374 +#: src/slic3r/GUI/MainFrame.cpp:1585 +msgid "%1% was successfully sliced." +msgstr "%1% został pomyślnie pocięty." + +#: src/libslic3r/Print.cpp:1400 msgid "%1%=%2% mm is too low to be printable at a layer height %3% mm" msgstr "%1%=%2% mm to zbyt mała wartość, żeby była możliwa do wydrukowania na wysokości warstwy %3% mm" -#: src/slic3r/GUI/PresetHints.cpp:229 +#: src/slic3r/GUI/PresetHints.cpp:228 #, c-format msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "%3.2f mm³/s z prędkością filamentu %3.2f mm/s." -#: src/slic3r/GUI/Plater.cpp:1152 +#: src/slic3r/GUI/Plater.cpp:1061 #, c-format msgid "%d (%d shells)" msgstr "%d (%d obrysów)" -#: src/slic3r/GUI/Plater.cpp:1160 +#: src/slic3r/GUI/Plater.cpp:1069 #, c-format msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" msgstr "%d nieprawidłowych powierzchni, %d naprawionych krawędzi, %d powierzchni usunięto, %d powierzchni dodano, %d powierzchni odwrócono, %d odwróconych krawędzi" -#: src/slic3r/GUI/PresetHints.cpp:270 +#: src/slic3r/GUI/PresetHints.cpp:269 #, c-format msgid "%d lines: %.2f mm" msgstr "%d linii: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1027 +#: src/slic3r/GUI/MainFrame.cpp:1728 #, c-format msgid "%d presets successfully imported." msgstr "pomyślnie zaimportowano %d zestawów ustawień." -#: src/slic3r/GUI/MainFrame.cpp:692 +#: src/slic3r/GUI/GUI_App.cpp:718 +#, c-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "" +"%s\n" +"Kontynuować?" + +#: src/slic3r/GUI/MainFrame.cpp:917 src/slic3r/GUI/MainFrame.cpp:1316 #, c-format msgid "%s &Website" msgstr "Strona &WWW %s" +#: src/slic3r/GUI/GUI_App.cpp:394 +#, c-format +msgid "%s - BREAKING CHANGE" +msgstr "%s - BREAKING CHANGE" + #: src/slic3r/GUI/UpdateDialogs.cpp:211 #, c-format msgid "%s configuration is incompatible" msgstr "Konfiguracja niekompatybilna: %s" -#: src/slic3r/GUI/Field.cpp:175 +#: src/slic3r/GUI/Field.cpp:223 #, c-format msgid "%s doesn't support percentage" msgstr "%s nie może być wartością procentową" @@ -90,7 +109,7 @@ msgstr "%s nie może być wartością procentową" msgid "%s error" msgstr "błąd %s" -#: src/slic3r/GUI/ConfigWizard.cpp:481 +#: src/slic3r/GUI/ConfigWizard.cpp:499 #, c-format msgid "%s Family" msgstr "Rodzina %s" @@ -100,7 +119,7 @@ msgstr "Rodzina %s" msgid "%s has encountered an error" msgstr "%s napotkał błąd" -#: src/slic3r/GUI/GUI_App.cpp:138 +#: src/slic3r/GUI/GUI_App.cpp:528 #, c-format msgid "" "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it.\n" @@ -111,12 +130,12 @@ msgstr "" "\n" "Aplikacja zostanie zamknięta." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:222 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:62 #, c-format msgid "%s has encountered an error. It was likely caused by running out of memory. If you are sure you have enough RAM on your system, this may also be a bug and we would be glad if you reported it." msgstr "Błąd %s . Prawdopodobnie wystąpił przez brak pamięci. Jeśli masz pewność, że ilość RAMu jest wystarczająca, to może to być bug, a którego zgłoszenie będziemy wdzięczni." -#: src/slic3r/GUI/UpdateDialogs.cpp:308 +#: src/slic3r/GUI/UpdateDialogs.cpp:309 #, c-format msgid "%s has no configuration updates available." msgstr "%s nie ma dostępnych aktualizacji konfiguracji." @@ -143,7 +162,7 @@ msgstr "" "\n" "Kontynuuj do %s , które pozwoli ustawić nowe Zestawy i wybrać automatyczną aktualizację wbudowanych Zestawów." -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 #, c-format msgid "%s View Mode" msgstr "Tryb %s" @@ -163,218 +182,248 @@ msgstr "" "\n" "Zaktualizowane zestawy ustawień:" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 #, c-format msgid "&About %s" msgstr "&O %s" -#: src/slic3r/GUI/GUI_App.cpp:908 +#: src/slic3r/GUI/MainFrame.cpp:1297 +msgid "&Collapse sidebar" +msgstr "S&chowaj pasek narzędzi" + +#: src/slic3r/GUI/GUI_App.cpp:1645 msgid "&Configuration" msgstr "&Konfiguracja" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "&Configuration Snapshots" msgstr "Zrzuty Konfigura&cji" -#: src/slic3r/GUI/MainFrame.cpp:588 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Copy" msgstr "&Kopiuj" -#: src/slic3r/GUI/MainFrame.cpp:572 +#: src/slic3r/GUI/MainFrame.cpp:1178 msgid "&Delete selected" msgstr "Usuń &zaznaczone" -#: src/slic3r/GUI/MainFrame.cpp:722 +#: src/slic3r/GUI/MainFrame.cpp:1348 src/slic3r/GUI/MainFrame.cpp:1358 msgid "&Edit" msgstr "&Edytuj" -#: src/slic3r/GUI/MainFrame.cpp:506 +#: src/slic3r/GUI/MainFrame.cpp:1103 msgid "&Export" msgstr "&Eksport" -#: src/slic3r/GUI/MainFrame.cpp:617 src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1224 src/slic3r/GUI/MainFrame.cpp:1451 msgid "&Filament Settings Tab" -msgstr "Ustawienia &Filamentu" +msgstr "Ustawienia &filamentu" -#: src/slic3r/GUI/MainFrame.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:1347 src/slic3r/GUI/MainFrame.cpp:1357 +#: src/slic3r/GUI/MainFrame.cpp:1417 msgid "&File" msgstr "&Plik" -#: src/slic3r/GUI/ConfigWizard.cpp:1981 +#: src/slic3r/GUI/ConfigWizard.cpp:2492 msgid "&Finish" msgstr "&Zakończ" -#: src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:1141 +msgid "&G-code preview" +msgstr "Podgląd &G-code" + +#: src/slic3r/GUI/MainFrame.cpp:1353 src/slic3r/GUI/MainFrame.cpp:1363 +#: src/slic3r/GUI/MainFrame.cpp:1423 msgid "&Help" msgstr "Pomo&c" -#: src/slic3r/GUI/MainFrame.cpp:474 +#: src/slic3r/GUI/MainFrame.cpp:1065 msgid "&Import" msgstr "&Import" -#: src/slic3r/GUI/GUI_App.cpp:822 +#: src/slic3r/GUI/GUI_App.cpp:1517 msgid "&Language" msgstr "Język ap&likacji" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "&New Project" msgstr "&Nowy Projekt" -#: src/slic3r/GUI/ConfigWizard.cpp:1980 +#: src/slic3r/GUI/ConfigWizard.cpp:2491 msgid "&Next >" msgstr "&Dalej>" -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "&Open G-code" +msgstr "&Otwórz G-code" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "&Open Project" msgstr "&Otwórz Projekt" -#: src/slic3r/GUI/MainFrame.cpp:591 +#: src/slic3r/GUI/MainFrame.cpp:1197 msgid "&Paste" msgstr "Wkle&j" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "&Plater Tab" msgstr "&Podgląd Stołu" -#: src/slic3r/GUI/GUI_App.cpp:804 +#: src/slic3r/GUI/GUI_App.cpp:1487 msgid "&Preferences" msgstr "&Preferencje" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 msgid "&Quit" msgstr "Wyjś&cie" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:1189 msgid "&Redo" msgstr "Powtó&rz" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "&Repair STL file" msgstr "Nap&rawa pliku STL" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "&Save Project" msgstr "Zapi&sz Projekt" -#: src/slic3r/GUI/MainFrame.cpp:565 +#: src/slic3r/GUI/MainFrame.cpp:1171 msgid "&Select all" msgstr "Zaznacz w&szystko" -#: src/slic3r/GUI/MainFrame.cpp:580 +#: src/slic3r/GUI/MainFrame.cpp:1186 msgid "&Undo" msgstr "Co&fnij" -#: src/slic3r/GUI/MainFrame.cpp:724 +#: src/slic3r/GUI/MainFrame.cpp:1350 src/slic3r/GUI/MainFrame.cpp:1360 +#: src/slic3r/GUI/MainFrame.cpp:1418 msgid "&View" msgstr "&Widok" -#: src/slic3r/GUI/MainFrame.cpp:723 +#: src/slic3r/GUI/MainFrame.cpp:1349 src/slic3r/GUI/MainFrame.cpp:1359 msgid "&Window" msgstr "&Okno" -#: src/slic3r/GUI/ConfigWizard.cpp:603 src/slic3r/GUI/ConfigWizard.cpp:631 +#: src/slic3r/GUI/ConfigWizard.cpp:662 src/slic3r/GUI/ConfigWizard.cpp:812 +#: src/slic3r/GUI/ConfigWizard.cpp:873 src/slic3r/GUI/ConfigWizard.cpp:1007 msgid "(All)" msgstr "(Wszystko)" -#: src/libslic3r/PrintConfig.cpp:1446 +#: src/libslic3r/PrintConfig.cpp:1554 msgid "(minimum)" msgstr "(minimum)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "(Re)slice" msgstr "(Ponowne) Cięcie" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "(Re)Slice No&w" msgstr "(Pono&wne) Cięcie" -#: src/libslic3r/PrintConfig.cpp:771 src/libslic3r/PrintConfig.cpp:2587 +#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2730 msgid "(Unknown)" msgstr "(Nieznane)" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid ") not found." msgstr ") nie znaleziono." -#: src/libslic3r/PrintConfig.cpp:1918 +#: src/libslic3r/PrintConfig.cpp:2060 msgid "0 (soluble)" msgstr "0 (rozpuszczalne)" -#: src/libslic3r/PrintConfig.cpp:1919 +#: src/libslic3r/PrintConfig.cpp:2061 msgid "0.2 (detachable)" msgstr "0.2 (odłączane)" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/Plater.cpp:4097 +#: src/slic3r/GUI/Plater.cpp:4044 msgid "3D editor view" msgstr "Edytowanie 3D" -#: src/libslic3r/PrintConfig.cpp:851 +#: src/libslic3r/PrintConfig.cpp:889 msgid "3D Honeycomb" msgstr "Plaster miodu 3D" -#: src/slic3r/GUI/Mouse3DController.cpp:274 +#: src/slic3r/GUI/NotificationManager.hpp:318 +msgid "3D Mouse disconnected." +msgstr "Odłączono 3D Mouse." + +#: src/slic3r/GUI/Mouse3DController.cpp:263 msgid "3Dconnexion settings" msgstr "Ustawienia 3Dconnexion" -#: src/slic3r/GUI/Plater.cpp:5038 +#: src/slic3r/GUI/Plater.cpp:5167 #, c-format msgid "3MF file exported to %s" msgstr "Plik 3MF wyeksportowany do %s" -#: src/slic3r/GUI/ConfigWizard.cpp:1979 +#: src/slic3r/GUI/ConfigWizard.cpp:2490 msgid "< &Back" msgstr "<&Wstecz" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:321 msgid "A boolean expression using the configuration values of an active print profile. If this expression evaluates to true, this profile is considered compatible with the active print profile." msgstr "Wyrażenie logiczne (Boole'owskie) używające wartości konfiguracji aktywnego profilu druku. Jeśli to wyrażenie jest prawdziwe to znaczy, że aktywny profil jest kompatybilny z aktywnym profilem druku." -#: src/libslic3r/PrintConfig.cpp:272 +#: src/libslic3r/PrintConfig.cpp:306 msgid "A boolean expression using the configuration values of an active printer profile. If this expression evaluates to true, this profile is considered compatible with the active printer profile." msgstr "Wyrażenie logiczne (Boole'owskie) używające wartości konfiguracji aktywnego profilu drukarki. Jeśli to wyrażenie jest prawdziwe to znaczy, że aktywny profil jest kompatybilny z drukarką." -#: src/slic3r/GUI/Tab.cpp:975 +#: src/slic3r/GUI/Tab.cpp:1237 msgid "A copy of the current system preset will be created, which will be detached from the system preset." msgstr "Zostanie utworzona kopia obecnego zestawu ustawień i odłączona od ustawień systemowych." -#: src/slic3r/GUI/ConfigWizard.cpp:1034 +#: src/slic3r/GUI/ConfigWizard.cpp:1400 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "Generalną zasadą jest 160 do 230 °C dla PLA i 215 do 250 °C dla ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:1048 +#: src/slic3r/GUI/ConfigWizard.cpp:1414 msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." msgstr "Generalną zasadą jest 60 °C dla PLA i 110 °C dla ABS. Ustaw zero jeśli nie masz podgrzewanego stołu." -#: src/slic3r/GUI/GLCanvas3D.cpp:686 -msgid "A toolpath outside the print area was detected" -msgstr "Wykryto ścieżkę narzędzia poza obszarem roboczym" +#: src/slic3r/GUI/GLCanvas3D.cpp:634 +msgid "A toolpath outside the print area was detected." +msgstr "Wykryto ścieżkę narzędzia poza obszarem roboczym." -#: src/slic3r/GUI/AboutDialog.cpp:199 +#: src/slic3r/GUI/AboutDialog.cpp:212 src/slic3r/GUI/AboutDialog.cpp:215 #, c-format msgid "About %s" msgstr "O %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:959 +#: src/slic3r/GUI/GCodeViewer.cpp:2189 +msgid "above" +msgstr "ponad" + +#: src/slic3r/GUI/GLCanvas3D.cpp:965 #, c-format msgid "above %.2f mm" msgstr "powyżej %.2f mm" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1677 msgid "Above Z" msgstr "Powyżej Z" -#: src/slic3r/GUI/Tab.cpp:1164 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Acceleration control (advanced)" msgstr "Ustawienia przyspieszeń (zaawansowane)" -#: src/libslic3r/PrintConfig.cpp:2925 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3089 msgid "Accuracy" msgstr "Dokładność" +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:59 +msgid "Accurate" +msgstr "Dokładna" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:78 msgid "Activate" msgstr "Aktywacja" @@ -383,67 +432,75 @@ msgstr "Aktywacja" msgid "Active" msgstr "Aktywny" -#: src/slic3r/GUI/DoubleSlider.cpp:1135 src/slic3r/GUI/GUI_ObjectList.cpp:1705 +#: src/slic3r/GUI/DoubleSlider.cpp:1264 src/slic3r/GUI/GUI_ObjectList.cpp:1833 msgid "active" msgstr "aktywny" -#: src/slic3r/GUI/GLCanvas3D.cpp:267 +#: src/slic3r/GUI/GLCanvas3D.cpp:254 msgid "Adaptive" msgstr "Adaptacyjny" -#: src/slic3r/GUI/Tab.cpp:241 -msgid "Add a new printer" -msgstr "Dodaj nową drukarkę" +#: src/libslic3r/PrintConfig.cpp:894 +msgid "Adaptive Cubic" +msgstr "Sześcienny adaptacyjny" -#: src/libslic3r/PrintConfig.cpp:2782 +#: src/slic3r/GUI/SavePresetDialog.cpp:314 +msgid "Add \"%1%\" as a next preset for the the physical printer \"%2%\"" +msgstr "Dodaj \"%1%\" jako kolejny zestaw ustawień dla fizycznej drukarki \"%2%\"" + +#: src/libslic3r/PrintConfig.cpp:2946 msgid "Add a pad underneath the supported model" msgstr "Dodaj podkładkę pod podporami modelu" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:2200 msgid "Add a sheath (a single perimeter line) around the base support. This makes the support more reliable, but also more difficult to remove." msgstr "Dodaj osłonę (pojedynczą linię) wokół podpory bazowej. Sprawi to, że podpory będą stabilniejsze, ale też trudniejsze do usunięcia." -#: src/slic3r/GUI/DoubleSlider.cpp:991 +#: src/slic3r/GUI/DoubleSlider.cpp:1114 msgid "Add another code - Ctrl + Left click" msgstr "Dodaj kolejny kod - Ctrl + kliknij lewym przyciskiem" -#: src/slic3r/GUI/DoubleSlider.cpp:992 +#: src/slic3r/GUI/DoubleSlider.cpp:1115 msgid "Add another code - Right click" msgstr "Dodaj kolejny kod - kliknij prawym przyciskiem" -#: src/slic3r/GUI/DoubleSlider.cpp:1477 +#: src/slic3r/GUI/DoubleSlider.cpp:1665 msgid "Add color change" msgstr "Dodaj zmianę koloru" -#: src/slic3r/GUI/DoubleSlider.cpp:1180 +#: src/slic3r/GUI/DoubleSlider.cpp:1307 msgid "Add color change (%1%) for:" msgstr "Dodaj zmianę koloru (%1%) dla:" -#: src/slic3r/GUI/DoubleSlider.cpp:988 +#: src/slic3r/GUI/DoubleSlider.cpp:1111 msgid "Add color change - Left click" msgstr "Dodaj zmianę koloru - kliknij lewym przyciskiem" -#: src/slic3r/GUI/DoubleSlider.cpp:986 +#: src/slic3r/GUI/DoubleSlider.cpp:1109 msgid "Add color change - Left click for predefined color or Shift + Left click for custom color selection" msgstr "Dodaj zmianę koloru - kliknij lewym przyciskiem dla predefiniowanego koloru lub wciśnij Shift + lewy przycisk dla wyboru własnego koloru" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 msgid "Add color change marker for current layer" msgstr "Dodaj punkt zmiany filamentu na obecnej warstwie" -#: src/slic3r/GUI/DoubleSlider.cpp:1490 +#: src/slic3r/GUI/DoubleSlider.cpp:1682 msgid "Add custom G-code" msgstr "Dodaj własny G-code" -#: src/slic3r/GUI/GLCanvas3D.cpp:240 +#: src/slic3r/GUI/DoubleSlider.cpp:1679 +msgid "Add custom template" +msgstr "Dodaj własny szablon" + +#: src/slic3r/GUI/GLCanvas3D.cpp:235 msgid "Add detail" msgstr "Wyższa szczegółowość" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:421 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:308 msgid "Add drainage hole" msgstr "Dodaj otwór odpływowy" -#: src/slic3r/GUI/DoubleSlider.cpp:984 +#: src/slic3r/GUI/DoubleSlider.cpp:1107 msgid "Add extruder change - Left click" msgstr "Dodaj zmianę ekstrudera - kliknij lewym przyciskiem" @@ -451,30 +508,30 @@ msgstr "Dodaj zmianę ekstrudera - kliknij lewym przyciskiem" msgid "Add extruder to sequence" msgstr "Dodaj ekstruder do sekwencji" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1993 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 msgid "Add Generic Subobject" msgstr "Dodaj Standardowy Model Podrzędny" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2896 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2925 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2943 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3297 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3325 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3345 msgid "Add Height Range" msgstr "Dodaj zakres wysokości" -#: src/slic3r/GUI/GLCanvas3D.cpp:4526 src/slic3r/GUI/Plater.cpp:3788 -#: src/slic3r/GUI/Plater.cpp:3800 src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/GLCanvas3D.cpp:4892 src/slic3r/GUI/Plater.cpp:3708 +#: src/slic3r/GUI/Plater.cpp:3720 src/slic3r/GUI/Plater.cpp:3858 msgid "Add instance" msgstr "Dodaj instancję" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 msgid "Add Instance of the selected object" msgstr "Dodaj instancję wybranego modelu" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:162 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:165 msgid "Add layer range" msgstr "Dodaj zakres warstw" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2328 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2692 msgid "Add Layers" msgstr "Dodaj Warstwy" @@ -482,12 +539,12 @@ msgstr "Dodaj Warstwy" msgid "Add modifier" msgstr "Dodaj modyfikator" -#: src/libslic3r/PrintConfig.cpp:479 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:515 +#, c-format msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." -msgstr "Dodaj więcej obrysów, aby uniknąć przerw przy pochyłych ścianach. Slic3r będzie dodawał tyle obrysów, ile jest potrzebne aby podeprzeć co najmniej 70% grubości ściany kolejnej warstwy." +msgstr "Dodaj więcej obrysów, aby uniknąć przerw przy pochyłych ścianach. PrusaSlicer będzie dodawał tyle obrysów, ile jest potrzebne aby podeprzeć co najmniej 70% grubości ściany kolejnej warstwy." -#: src/slic3r/GUI/Plater.cpp:3940 +#: src/slic3r/GUI/Plater.cpp:3858 msgid "Add one more instance of the selected object" msgstr "Dodaj kolejną instancję wybranego modelu" @@ -495,54 +552,63 @@ msgstr "Dodaj kolejną instancję wybranego modelu" msgid "Add part" msgstr "Dodaj część" -#: src/slic3r/GUI/DoubleSlider.cpp:1487 +#: src/slic3r/GUI/DoubleSlider.cpp:1675 msgid "Add pause print" -msgstr "Dodaj pauzę podczas druku" +msgstr "Dodaj pauzę" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 +#: src/slic3r/GUI/PresetComboBoxes.cpp:627 +#: src/slic3r/GUI/PresetComboBoxes.cpp:674 +msgid "Add physical printer" +msgstr "Dodaj fizyczną drukarkę" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 msgid "Add point" msgstr "Dodaj punkt" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 msgid "Add point to selection" msgstr "Dodaj punkt do zaznaczenia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1509 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:180 +msgid "Add preset for this printer device" +msgstr "Dodaj zestaw ustawień do tej drukarki" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1640 msgid "Add settings" msgstr "Dodaj ustawienia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1386 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1517 msgid "Add Settings Bundle for Height range" -msgstr "Dodaj Paczkę Ustawień dla Zakresu Wysokości" +msgstr "Dodaj paczkę ustawień dla zakresu wysokości" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1388 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1519 msgid "Add Settings Bundle for Object" -msgstr "Dodaj Paczkę Ustawień dla Modelu" +msgstr "Dodaj paczkę ustawień dla modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1387 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1518 msgid "Add Settings Bundle for Sub-object" -msgstr "Dodaj Paczkę Ustawień dla Modelu Podrzędnego" +msgstr "Dodaj paczkę ustawień dla modelu podrzędnego" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1314 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1445 msgid "Add Settings for Layers" -msgstr "Dodaj Ustawienia dla Warstw" +msgstr "Dodaj ustawienia dla warstw" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1316 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1447 msgid "Add Settings for Object" -msgstr "Dodaj Ustawienia dla Modelu" +msgstr "Dodaj ustawienia dla modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1315 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1446 msgid "Add Settings for Sub-object" -msgstr "Dodaj Ustawienia dla Modelu Podrzędnego" +msgstr "Dodaj ustawienia dla modelu podrzędnego" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2051 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1953 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2210 msgid "Add Shape" msgstr "Dodaj kształt" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:443 msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." -msgstr "Dodaj zwarte wypełnienie przy pochyłych powierzchniach aby zagwarantować odpowiednią grubość warstwy (suma górnych i dolnych zwartych warstw)." +msgstr "Dodaj zwarte wypełnienie przy pochyłych powierzchniach, aby zagwarantować odpowiednią grubość warstwy (suma górnych i dolnych zwartych warstw)." #: src/slic3r/GUI/GUI_ObjectList.cpp:54 msgid "Add support blocker" @@ -552,11 +618,19 @@ msgstr "Dodaj blokadę podpór" msgid "Add support enforcer" msgstr "Dodaj wymuszenie podpór" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:494 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:374 msgid "Add support point" msgstr "Dodaj punkt podpory" -#: src/slic3r/GUI/GLCanvas3D.cpp:4467 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:371 +msgid "Add supports" +msgstr "Dodaj podpory" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:293 +msgid "Add supports by angle" +msgstr "Dodaj podpory wg kąta" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4833 msgid "Add..." msgstr "Dodaj..." @@ -564,23 +638,29 @@ msgstr "Dodaj..." msgid "Add/Remove filaments" msgstr "Dodaj/usuń filamenty" -#: src/slic3r/GUI/Preset.cpp:1201 +#: src/slic3r/GUI/PresetComboBoxes.cpp:813 msgid "Add/Remove materials" msgstr "Dodaj/usuń materiały" -#: src/slic3r/GUI/Preset.cpp:1203 +#: src/slic3r/GUI/PresetComboBoxes.cpp:622 +#: src/slic3r/GUI/PresetComboBoxes.cpp:669 +msgid "Add/Remove presets" +msgstr "Dodaj/usuń zestawy ustawień" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:815 +#: src/slic3r/GUI/PresetComboBoxes.cpp:972 msgid "Add/Remove printers" msgstr "Dodaj/usuń drukarki" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1288 msgid "Additional information:" msgstr "Dodatkowe informacje:" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:59 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:62 msgid "Additional Settings" -msgstr "Ustawienia Dodatkowe" +msgstr "Ustawienia dodatkowe" -#: src/slic3r/GUI/ConfigWizard.cpp:791 +#: src/slic3r/GUI/ConfigWizard.cpp:1150 msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." msgstr "Dodatkowa kopia zrzutu całej konfiguracji jest tworzona przed zainstalowaniem aktualizacji." @@ -588,23 +668,22 @@ msgstr "Dodatkowa kopia zrzutu całej konfiguracji jest tworzona przed zainstalo msgid "Address" msgstr "Adres" -#: src/slic3r/GUI/GUI_App.cpp:814 src/slic3r/GUI/GUI_ObjectList.cpp:104 -#: src/slic3r/GUI/GUI_ObjectList.cpp:622 src/slic3r/GUI/Tab.cpp:1087 -#: src/slic3r/GUI/Tab.cpp:1102 src/slic3r/GUI/Tab.cpp:1201 -#: src/slic3r/GUI/Tab.cpp:1204 src/slic3r/GUI/Tab.cpp:1470 -#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:3661 -#: src/slic3r/GUI/wxExtensions.cpp:754 src/libslic3r/PrintConfig.cpp:88 -#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:223 -#: src/libslic3r/PrintConfig.cpp:1037 src/libslic3r/PrintConfig.cpp:2276 -#: src/libslic3r/PrintConfig.cpp:2448 +#: src/slic3r/GUI/GUI_ObjectList.cpp:102 src/slic3r/GUI/GUI_ObjectList.cpp:661 +#: src/slic3r/GUI/Tab.cpp:1409 src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1531 src/slic3r/GUI/Tab.cpp:1534 +#: src/slic3r/GUI/Tab.cpp:1816 src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:4080 src/libslic3r/PrintConfig.cpp:90 +#: src/libslic3r/PrintConfig.cpp:121 src/libslic3r/PrintConfig.cpp:257 +#: src/libslic3r/PrintConfig.cpp:1081 src/libslic3r/PrintConfig.cpp:2419 +#: src/libslic3r/PrintConfig.cpp:2591 msgid "Advanced" -msgstr "Zaawansowany" +msgstr "Zaawansowane" -#: src/slic3r/GUI/ConfigWizard.cpp:821 +#: src/slic3r/GUI/ConfigWizard.cpp:1180 msgid "Advanced mode" msgstr "Tryb Zaawansowany" -#: src/slic3r/GUI/GUI_App.cpp:814 +#: src/slic3r/GUI/GUI_App.cpp:1506 msgid "Advanced View Mode" msgstr "Widok Zaawansowany" @@ -612,124 +691,140 @@ msgstr "Widok Zaawansowany" msgid "Advanced: Output log" msgstr "Zaawansowane: log wyjściowy" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:704 msgid "After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, and the filament pressure is likely not yet stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." -msgstr "Po zmianie narzędzia (filamentu), dokładna pozycja końcówki nowo załadowanego filamentu nie jest znana i najprawdopodobniej ciśnienie w ekstruderze nie jest jeszcze ustabilizowane. Przed czyszczeniem dyszy na wypełnieniu lub zbędnym modelu, Slic3r spowoduje wytłoczenie tej ilości filamentu na wieży czyszczącej, aby wydrukować dobre wypełnienie lub zbędny model." +msgstr "Po zmianie narzędzia (filamentu), dokładna pozycja końcówki nowo załadowanego filamentu nie jest znana i najprawdopodobniej ciśnienie w ekstruderze nie jest jeszcze ustabilizowane. Przed czyszczeniem dyszy na wypełnieniu lub zbędnym modelu, PrusaSlicer spowoduje wytłoczenie tej ilości filamentu na wieży czyszczącej, aby wydrukować dobre wypełnienie lub zbędny model." -#: src/slic3r/GUI/Tab.cpp:1994 src/libslic3r/PrintConfig.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/PrintConfig.cpp:1173 msgid "After layer change G-code" msgstr "G-code wykonywany po zmianie warstwy" -#: src/libslic3r/PrintConfig.cpp:3398 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Align the model to the given point." msgstr "Wyrównaj model z danym punktem." -#: src/libslic3r/PrintConfig.cpp:3397 +#: src/libslic3r/PrintConfig.cpp:3596 msgid "Align XY" msgstr "Wyrównaj XY" -#: src/libslic3r/PrintConfig.cpp:1631 +#: src/libslic3r/PrintConfig.cpp:1739 msgid "Aligned" msgstr "Wyrównany" -#: src/slic3r/GUI/ConfigWizard.cpp:290 src/slic3r/GUI/ConfigWizard.cpp:573 -#: src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/ConfigWizard.cpp:308 src/slic3r/GUI/ConfigWizard.cpp:598 +#: src/slic3r/GUI/Tab.cpp:3507 src/slic3r/GUI/UnsavedChangesDialog.cpp:921 msgid "All" msgstr "Wszystko" -#: src/libslic3r/Print.cpp:1219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 +msgid "All gizmos: Rotate - left mouse button; Pan - right mouse button" +msgstr "Wszystkie uchwyty: obróć - lewy przycisk, przesuń - prawy przycisk" + +#: src/slic3r/GUI/ConfigWizard.cpp:694 +msgid "All installed printers are compatible with the selected filament." +msgstr "Wszystkie zainstalowane drukarki są kompatybilne z wybranym filamentem." + +#: src/libslic3r/Print.cpp:1245 msgid "All objects are outside of the print volume." msgstr "Wszystkie modele znajdują się poza obszarem roboczym." -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "All objects will be removed, continue?" msgstr "Wszystkie modele zostaną usunięte. Kontynuować?" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:737 +msgid "All settings changes will be discarded." +msgstr "Wszystkie zmiany ustawień zostaną odrzucone." + +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "All standard" msgstr "Wszystkie podstawowe" -#: src/libslic3r/Zipper.cpp:62 +#: src/libslic3r/miniz_extension.cpp:121 msgid "allocation failed" msgstr "niepowodzenie alokacji" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Along X axis" msgstr "Wzdłuż osi X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Along Y axis" msgstr "Wzdłuż osi Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Along Z axis" msgstr "Wzdłuż osi Z" -#: src/slic3r/GUI/ConfigWizard.cpp:222 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:160 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:141 +msgid "Alt + Mouse wheel" +msgstr "Alt + kółko myszy" + +#: src/slic3r/GUI/ConfigWizard.cpp:240 msgid "Alternate nozzles:" msgstr "Inne rozmiary dysz:" -#: src/slic3r/GUI/Plater.cpp:5002 +#: src/slic3r/GUI/Preferences.cpp:163 +msgid "Always ask for unsaved changes when selecting new preset" +msgstr "Zawsze pytaj o niezapisane zmiany przy wyborze nowego zestawu ustawień" + +#: src/slic3r/GUI/Plater.cpp:5135 #, c-format msgid "AMF file exported to %s" msgstr "Plik AMF wyeksportowany do %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:690 +#: src/slic3r/GUI/GLCanvas3D.cpp:638 msgid "" -"An object outside the print area was detected\n" -"Resolve the current problem to continue slicing" +"An object outside the print area was detected.\n" +"Resolve the current problem to continue slicing." msgstr "" -"Wykryto model poza obszarem roboczym\n" -"Usuń problem, aby kontynuować cięcie" +"Wykryto model poza obszarem roboczym.\n" +"Rozwiąż problem, aby kontynuować cięcie." -#: src/slic3r/GUI/GLCanvas3D.cpp:685 -msgid "An object outside the print area was detected" -msgstr "Wykryto model poza obszarem roboczym" +#: src/slic3r/GUI/GLCanvas3D.cpp:633 +msgid "An object outside the print area was detected." +msgstr "Wykryto model poza obszarem roboczym." -#: src/slic3r/GUI/Tab.cpp:2943 -msgid "and it has the following unsaved changes:" -msgstr "i ma następujące niezapisane zmiany:" - -#: src/slic3r/GUI/Plater.cpp:3170 +#: src/slic3r/GUI/Plater.cpp:2972 msgid "Another export job is currently running." msgstr "W tej chwili trwa inny proces eksportu." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Any arrow" msgstr "Jakakolwiek strzałka" -#: src/slic3r/GUI/Tab.cpp:965 +#: src/slic3r/GUI/Tab.cpp:1283 msgid "Any modifications should be saved as a new preset inherited from this one." msgstr "Każda modyfikacja powinna zostać zapisana jako nowy zestaw ustawień dziedziczony z obecnego." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:106 msgid "API Key / Password" msgstr "Klucz API / hasło" -#: src/slic3r/GUI/GUI_App.cpp:810 +#: src/slic3r/GUI/GUI_App.cpp:1493 msgid "Application preferences" msgstr "Preferencje aplikacji" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1374 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1221 msgid "Apply changes" msgstr "Zastosuj zmiany" -#: src/libslic3r/PrintConfig.cpp:575 src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:611 src/libslic3r/PrintConfig.cpp:1823 msgid "approximate seconds" msgstr "szacowane sekundy" -#: src/libslic3r/PrintConfig.cpp:428 src/libslic3r/PrintConfig.cpp:854 +#: src/libslic3r/PrintConfig.cpp:464 src/libslic3r/PrintConfig.cpp:892 msgid "Archimedean Chords" msgstr "Spirala Archimedesa" -#: src/libslic3r/Zipper.cpp:88 +#: src/libslic3r/miniz_extension.cpp:147 msgid "archive is too large" msgstr "archiwum jest zbyt duże" -#. TRN remove/delete -#: src/slic3r/GUI/Tab.cpp:3123 +#: src/slic3r/GUI/Tab.cpp:3420 msgid "Are you sure you want to %1% the selected preset?" msgstr "Czy na pewno chcesz %1% ten zestaw ustawień?" @@ -741,97 +836,125 @@ msgstr "" "Czy na pewno chcesz przerwać flashowanie firmware?\n" "Może to spowodować nieprzewidziane problemy z drukarką!" -#: src/slic3r/GUI/DoubleSlider.cpp:1903 src/slic3r/GUI/DoubleSlider.cpp:1924 +#: src/slic3r/GUI/DoubleSlider.cpp:2122 src/slic3r/GUI/DoubleSlider.cpp:2142 msgid "Are you sure you want to continue?" msgstr "Czy na pewno chcesz kontynuować?" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1269 +#: src/slic3r/GUI/Tab.cpp:3392 +msgid "Are you sure you want to delete \"%1%\" preset from the physical printer \"%2%\"?" +msgstr "Czy na pewno chcesz usunąć zestaw ustawień \"%1%\" z fizycznej drukarki \"%2%\"?" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:658 +msgid "Are you sure you want to delete \"%1%\" printer?" +msgstr "Czy na pewno chcesz usunąć drukarkę \"%1%\"?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1128 msgid "Are you sure you want to do it?" msgstr "Czy na pewno chcesz to zrobić?" -#: src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2566 msgid "Area fill" msgstr "Wypełnienie obszaru" -#: src/slic3r/GUI/Plater.cpp:641 +#: src/slic3r/GUI/Plater.cpp:507 msgid "Around object" msgstr "Wokół modelu" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:157 -#: src/slic3r/GUI/Plater.cpp:2754 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/Plater.cpp:1549 msgid "Arrange" msgstr "Rozmieść" -#: src/slic3r/GUI/GLCanvas3D.cpp:4493 src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/GLCanvas3D.cpp:4859 src/slic3r/GUI/KBShortcutsDialog.cpp:152 msgid "Arrange selection" msgstr "Rozmieść zaznaczone" -#: src/libslic3r/PrintConfig.cpp:3443 +#: src/libslic3r/PrintConfig.cpp:3642 msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." msgstr "Ułóż modele na stole i połącz je w jedną grupę, aby zastosować ustawienia do wszystkich na raz." -#: src/slic3r/GUI/Plater.cpp:2813 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:149 msgid "Arranging" msgstr "Układanie" -#: src/slic3r/GUI/Plater.cpp:2841 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:182 msgid "Arranging canceled." msgstr "Układanie anulowane." -#: src/slic3r/GUI/Plater.cpp:2842 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:183 msgid "Arranging done." msgstr "Układanie zakończone." -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Arrow Down" msgstr "Strzałka w dół" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 msgid "Arrow Left" msgstr "Strzałka w lewo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 msgid "Arrow Right" msgstr "Strzałka w prawo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Arrow Up" msgstr "Strzałka w górę" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:290 +#: src/slic3r/GUI/GUI_App.cpp:246 +msgid "Artwork model by Nora Al-Badri and Jan Nikolai Nelles" +msgstr "Autorzy modelu: Nora Al-Badri oraz Jan Nikolai Nelles" + +#: src/slic3r/GUI/OpenGLManager.cpp:265 msgid "As a workaround, you may run PrusaSlicer with a software rendered 3D graphics by running prusa-slicer.exe with the --sw_renderer parameter." msgstr "Jako obejście, możesz uruchomić PrusaSlicer z grafiką 3D renderowaną przez oprogramowanie, dodając parametr --sw_renderer do prusa-slicer.exe." -#: src/slic3r/GUI/GUI_App.cpp:1086 src/slic3r/GUI/Plater.cpp:2313 -#: src/slic3r/GUI/Tab.cpp:2960 +#: src/slic3r/GUI/Preferences.cpp:154 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:659 +msgid "Ask for unsaved changes when closing application" +msgstr "Pytaj o niezapisane zmiany podczas zamykania programu" + +#: src/slic3r/GUI/Preferences.cpp:161 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:660 +msgid "Ask for unsaved changes when selecting new preset" +msgstr "Pytaj o niezapisane zmiany przy wyborze nowego zestawu ustawień" + +#: src/slic3r/GUI/GUI_App.cpp:1878 src/slic3r/GUI/Jobs/SLAImportJob.cpp:210 +#: src/slic3r/GUI/Plater.cpp:2256 src/slic3r/GUI/Tab.cpp:3189 msgid "Attention!" msgstr "Uwaga!" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:150 +msgid "Authorization Type" +msgstr "Rodzaj autoryzacji" + +#: src/libslic3r/PrintConfig.cpp:2013 msgid "Auto generated supports" msgstr "Automatyczne generowanie podpór" -#: src/slic3r/GUI/Preferences.cpp:47 +#: src/slic3r/GUI/Preferences.cpp:64 msgid "Auto-center parts" msgstr "Rozmieść modele automatycznie" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1377 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1224 msgid "Auto-generate points" msgstr "Generuj punkty automatycznie" -#: src/slic3r/GUI/Plater.cpp:1157 +#: src/slic3r/GUI/Plater.cpp:1066 #, c-format msgid "Auto-repaired (%d errors)" msgstr "Naprawiono automatycznie (%d błędów)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:339 +#: src/slic3r/GUI/GUI_ObjectList.cpp:386 #, c-format msgid "Auto-repaired (%d errors):" msgstr "Naprawiono automatycznie (%d błędów):" @@ -840,67 +963,79 @@ msgstr "Naprawiono automatycznie (%d błędów):" msgid "Autodetected" msgstr "Wykryto automatycznie" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1273 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1134 msgid "Autogenerate support points" msgstr "Automatycznie generuj punkty podpór" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1268 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1127 msgid "Autogeneration will erase all manually edited points." msgstr "Generowanie automatyczne usunie wszystkie ręcznie ustawione punkty." -#: src/slic3r/GUI/Tab.cpp:3632 +#: src/slic3r/GUI/Tab.cpp:4051 msgid "Automatic generation" msgstr "Generowanie automatyczne" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Automatic updates" msgstr "Automatyczne aktualizacje" -#: src/slic3r/GUI/MainFrame.cpp:536 +#: src/slic3r/GUI/MainFrame.cpp:1137 msgid "Automatically repair an STL file" msgstr "Automatyczna naprawa pliku STL" -#: src/slic3r/GUI/Tab.cpp:1171 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:129 +msgid "Autoset by angle" +msgstr "Ustaw automatycznie wg kąta" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:233 +msgid "Autoset custom supports" +msgstr "Automatyczne ustawienie podpór" + +#: src/slic3r/GUI/Tab.cpp:1501 msgid "Autospeed (advanced)" msgstr "Automatyczne dostosowanie prędkości (zaawansowane)" -#: src/libslic3r/PrintConfig.cpp:136 +#: src/libslic3r/PrintConfig.cpp:169 msgid "Avoid crossing perimeters" msgstr "Unikaj ruchów nad obrysami" -#: src/slic3r/GUI/Tab.cpp:3268 +#: src/slic3r/GUI/Tab.cpp:3705 msgid "BACK ARROW" msgstr "STRZAŁKA W TYŁ" -#: src/slic3r/GUI/Tab.cpp:3290 +#: src/slic3r/GUI/Tab.cpp:3727 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click to reset all settings for the current option group to the last saved preset." msgstr "" "STRZAŁKA W TYŁ oznacza, że ustawienia zostały zmodyfikowane i nie odpowiadają tym z ostatnio zapisanego zestawu ustawień dla obecnej grupy opcji.\n" -"Kliknij aby zresetować wszystkie ustawienia w obecnej grupie opcji do tych z ostatnio zapisanego zestawu ustawień." +"Kliknij, aby zresetować wszystkie ustawienia w obecnej grupie opcji do tych z ostatnio zapisanego zestawu ustawień." -#: src/slic3r/GUI/Tab.cpp:3304 +#: src/slic3r/GUI/Tab.cpp:3741 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the last saved preset.\n" "Click to reset current value to the last saved preset." msgstr "" "STRZAŁKA W TYŁ oznacza, że ustawienia zostały zmodyfikowane i nie odpowiadają tym z ostatnio zapisanego zestawu ustawień.\n" -"Kliknij aby zresetować wszystkie ustawienia do tych z ostatnio zapisanego zestawu ustawień." +"Kliknij, aby zresetować wszystkie ustawienia do tych z ostatnio zapisanego zestawu ustawień." -#: src/slic3r/GUI/Preferences.cpp:55 +#: src/slic3r/GUI/Preferences.cpp:72 msgid "Background processing" msgstr "Przetwarzanie w tle" -#: src/slic3r/GUI/GUI_ObjectList.cpp:351 +#: src/slic3r/GUI/GUI_ObjectList.cpp:398 msgid "backwards edges" msgstr "odwrócone krawędzie" -#: src/slic3r/GUI/MainFrame.cpp:174 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:60 +msgid "Balanced" +msgstr "Zbalansowana" + +#: src/slic3r/GUI/MainFrame.cpp:535 src/slic3r/GUI/MainFrame.cpp:537 msgid "based on Slic3r" msgstr "bazuje na projekcie Slic3r" -#: src/slic3r/GUI/Tab.cpp:1439 +#: src/slic3r/GUI/Tab.cpp:1785 msgid "Bed" msgstr "Stół" @@ -912,7 +1047,7 @@ msgstr "Własny model stołu" msgid "Bed custom texture" msgstr "Własna tekstura stołu" -#: src/slic3r/GUI/BedShapeDialog.hpp:59 src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/BedShapeDialog.hpp:98 src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape" msgstr "Kształt stołu" @@ -920,23 +1055,23 @@ msgstr "Kształt stołu" msgid "Bed shape" msgstr "Kształt stołu" -#: src/slic3r/GUI/ConfigWizard.cpp:929 +#: src/slic3r/GUI/ConfigWizard.cpp:1295 msgid "Bed Shape and Size" msgstr "Kształt i rozmiar stołu roboczego" -#: src/libslic3r/PrintConfig.cpp:147 +#: src/libslic3r/PrintConfig.cpp:181 msgid "Bed temperature" msgstr "Temperatura stołu" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." -msgstr "Temperatura stołu dla warstw powyżej pierwszej. Ustaw 0 aby wyłączyć kontrolowanie temperatury w pliku wyjściowym." +msgstr "Temperatura stołu dla warstw powyżej pierwszej. Ustaw 0, aby wyłączyć kontrolowanie temperatury w pliku wyjściowym." -#: src/slic3r/GUI/ConfigWizard.cpp:1051 +#: src/slic3r/GUI/ConfigWizard.cpp:1417 msgid "Bed Temperature:" msgstr "Temperatura stołu:" -#: src/slic3r/GUI/Tab.cpp:1988 src/libslic3r/PrintConfig.cpp:153 +#: src/slic3r/GUI/Tab.cpp:2175 src/libslic3r/PrintConfig.cpp:187 msgid "Before layer change G-code" msgstr "G-code wykonywany przed zmianą warstwy" @@ -944,143 +1079,191 @@ msgstr "G-code wykonywany przed zmianą warstwy" msgid "Before roll back" msgstr "Przez zmianą" -#: src/slic3r/GUI/Plater.cpp:640 +#: src/slic3r/GUI/Plater.cpp:506 msgid "Below object" msgstr "Pod modelem" -#: src/libslic3r/PrintConfig.cpp:1578 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "Below Z" msgstr "Poniżej Z" -#: src/libslic3r/PrintConfig.cpp:164 +#: src/libslic3r/PrintConfig.cpp:198 msgid "Between objects G-code" msgstr "G-code wykonywany przy przejściach pomiędzy modelami" -#: src/slic3r/GUI/Tab.cpp:2006 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Between objects G-code (for sequential printing)" msgstr "G-code wykonywany przy przejściach pomiędzy modelami (druk sekwencyjny)" -#: src/libslic3r/PrintConfig.cpp:2489 src/libslic3r/PrintConfig.cpp:2490 -msgid "Bottle volume" -msgstr "Objętość butelki" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:242 +msgid "Block" +msgstr "Blokuj" -#: src/libslic3r/PrintConfig.cpp:2496 src/libslic3r/PrintConfig.cpp:2497 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:32 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:383 +msgid "Block seam" +msgstr "Blokuj szew" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:373 +msgid "Block supports" +msgstr "Blokuj podpory" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:292 +msgid "Block supports by angle" +msgstr "Blokuj podpory wg kąta" + +#: src/libslic3r/PrintConfig.cpp:2632 src/libslic3r/PrintConfig.cpp:2633 +msgid "Bottle volume" +msgstr "Pojemność butelki" + +#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2640 msgid "Bottle weight" msgstr "Waga butelki" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:665 src/libslic3r/PrintConfig.cpp:174 -#: src/libslic3r/PrintConfig.cpp:183 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:208 src/libslic3r/PrintConfig.cpp:217 msgid "Bottom" msgstr "Dolne" -#: src/libslic3r/PrintConfig.cpp:435 +#: src/libslic3r/PrintConfig.cpp:471 msgid "Bottom fill pattern" msgstr "Wzór wypełnienia dolnej warstwy" -#: src/slic3r/GUI/PresetHints.cpp:342 +#: src/slic3r/GUI/PresetHints.cpp:340 msgid "Bottom is open." msgstr "Dół jest otwarty." -#: src/slic3r/GUI/PresetHints.cpp:336 +#: src/slic3r/GUI/PresetHints.cpp:334 msgid "Bottom shell is %1% mm thick for layer height %2% mm." msgstr "Dolna powłoka ma %1% mm grubości dla warstwy o wysokości %2% mm." -#: src/libslic3r/PrintConfig.cpp:177 +#: src/libslic3r/PrintConfig.cpp:211 msgid "Bottom solid layers" msgstr "Zwarte warstwy dolne" -#: src/slic3r/GUI/MainFrame.cpp:665 +#: src/slic3r/GUI/MainFrame.cpp:962 src/slic3r/GUI/MainFrame.cpp:1282 msgid "Bottom View" msgstr "Widok od dołu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1464 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1468 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1595 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 msgid "Box" msgstr "Sześcian" -#: src/libslic3r/PrintConfig.cpp:193 +#: src/libslic3r/PrintConfig.cpp:227 msgid "Bridge" msgstr "Most" -#: src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:256 msgid "Bridge flow ratio" msgstr "Współczynnik przepływu przy mostach" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/slic3r/GUI/GUI_Preview.cpp:308 src/libslic3r/ExtrusionEntity.cpp:321 +#: src/libslic3r/ExtrusionEntity.cpp:350 msgid "Bridge infill" msgstr "Wypełnienie mostu" -#: src/libslic3r/PrintConfig.cpp:234 +#: src/libslic3r/PrintConfig.cpp:268 msgid "Bridges" msgstr "Mosty" -#: src/libslic3r/PrintConfig.cpp:213 +#: src/libslic3r/PrintConfig.cpp:247 msgid "Bridges fan speed" msgstr "Prędkość wentylatora przy mostach" -#: src/libslic3r/PrintConfig.cpp:202 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Bridging angle" msgstr "Kąt linii mostów" -#: src/libslic3r/PrintConfig.cpp:204 +#: src/libslic3r/PrintConfig.cpp:238 msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for all bridges. Use 180° for zero angle." msgstr "Nadpisanie kąta linii mostów. Jeśli zostanie 0 to kąt zostanie obliczony automatycznie. W innym przypadku ustawiony kąt będzie dotyczył wszystkich mostów. Ustaw 180° dla kąta zerowego." -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" -msgstr "Mosty objętościowe" +msgstr "Mosty objętościowo" -#: src/slic3r/GUI/Plater.cpp:534 src/slic3r/GUI/Tab.cpp:1117 +#: src/slic3r/GUI/Plater.cpp:400 src/slic3r/GUI/Tab.cpp:1446 msgid "Brim" msgstr "Brim" -#: src/libslic3r/PrintConfig.cpp:244 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Brim width" msgstr "Szerokość brim" -#: src/slic3r/GUI/FirmwareDialog.cpp:805 src/slic3r/GUI/Tab.cpp:1658 -#: src/slic3r/GUI/Tab.cpp:1721 +#: src/slic3r/GUI/FirmwareDialog.cpp:805 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:271 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 msgid "Browse" msgstr "Przeglądaj" -#: src/libslic3r/Zipper.cpp:82 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:28 +msgid "Brush shape" +msgstr "Kształt pędzla" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:44 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:27 +msgid "Brush size" +msgstr "Rozmiar pędzla" + +#: src/libslic3r/miniz_extension.cpp:141 msgid "buffer too small" msgstr "niewystarczający bufor" +#: src/slic3r/GUI/GUI_App.cpp:1152 +msgid "" +"But since this version of PrusaSlicer we don't show this information in Printer Settings anymore.\n" +"Settings will be available in physical printers settings." +msgstr "" +"Od tej wersji PrusaSlicer nie pokazujemy już tej informacji w Ustawieniach drukarki.\n" +"Ustawienia będą dostępne w ustawieniach fizycznej drukarki." + #: src/slic3r/GUI/ButtonsDescription.cpp:16 msgid "Buttons And Text Colors Description" msgstr "Opis Przycisków i Kolorów Tekstu" -#: src/slic3r/GUI/PresetHints.cpp:223 +#: src/slic3r/GUI/GUI_App.cpp:1084 +msgid "" +"By default new Printer devices will be named as \"Printer N\" during its creation.\n" +"Note: This name can be changed later from the physical printers settings" +msgstr "" +"Domyślnie nowe drukarki będą nazywane \"Printer N\" podczas tworzenia.\n" +"Uwaga: można to zmienić później w ustawieniach fizycznych drukarki." + +#: src/slic3r/GUI/PresetHints.cpp:222 msgid "by the print profile maximum" msgstr "maksimum zależny od profilu wydruku" -#: src/slic3r/GUI/Preferences.cpp:113 +#: src/slic3r/GUI/Preferences.cpp:178 msgid "Camera" msgstr "Widok" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 msgid "Camera view" msgstr "Widok kamery" -#: src/slic3r/GUI/ConfigWizard.cpp:1982 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/ConfigWizard.cpp:2493 src/slic3r/GUI/FirmwareDialog.cpp:151 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:245 #: src/slic3r/GUI/ProgressStatusBar.cpp:26 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:644 msgid "Cancel" msgstr "Anuluj" -#: src/slic3r/GUI/PrintHostDialogs.cpp:157 +#: src/slic3r/GUI/PrintHostDialogs.cpp:155 msgid "Cancel selected" msgstr "Anuluj wybrane" -#: src/slic3r/GUI/Plater.cpp:3669 src/slic3r/GUI/PrintHostDialogs.cpp:233 +#: src/slic3r/GUI/Plater.cpp:3589 src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Cancelled" msgstr "Anulowano" -#: src/slic3r/GUI/Plater.cpp:3153 src/slic3r/GUI/PrintHostDialogs.cpp:232 +#: src/slic3r/GUI/Plater.cpp:2953 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelling" msgstr "Anulowanie" @@ -1092,7 +1275,7 @@ msgstr "Anulowanie..." msgid "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "Nie można przeliczyć szerokości ekstruzji dla %1%: zmienna \"%2%\" jest niedostępna." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3400 msgid "" "Cannot insert a new layer range after the current layer range.\n" "Current layer range overlaps with the next layer range." @@ -1100,7 +1283,7 @@ msgstr "" "Nie można wstawić nowego zakresu wysokości po obecnym.\n" "Zakres pokrywałby się z kolejnym." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3008 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3391 msgid "" "Cannot insert a new layer range after the current layer range.\n" "The next layer range is too thin to be split to two\n" @@ -1110,7 +1293,7 @@ msgstr "" "Kolejny zakres jest zbyt niski, aby można było go podzielić\n" "z powodu minimalnej grubości warstwy." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3012 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3395 msgid "" "Cannot insert a new layer range between the current and the next layer range.\n" "The gap between the current layer range and the next layer range\n" @@ -1120,80 +1303,88 @@ msgstr "" "Odstęp pomiędzy zakresami jest niższy \n" "niż dozwolona minimalna wysokość warstwy." -#: src/slic3r/GUI/Tab.cpp:3073 +#: src/slic3r/GUI/SavePresetDialog.cpp:137 msgid "Cannot overwrite a system profile." msgstr "Nie można nadpisać profilu systemowego." -#: src/slic3r/GUI/Tab.cpp:3077 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 msgid "Cannot overwrite an external profile." msgstr "Nie można nadpisać profilu zewnętrznego." -#: src/libslic3r/SLAPrint.cpp:613 +#: src/libslic3r/SLAPrint.cpp:627 msgid "Cannot proceed without support points! Add support points or disable support generation." msgstr "Nie można kontynuować bez punktów podpór! Dodaj punkty podpór lub wyłącz ich generowanie." -#: src/slic3r/GUI/Tab.cpp:1834 +#: src/slic3r/GUI/Tab.cpp:2068 src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "Capabilities" msgstr "Możliwości" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Capture a configuration snapshot" msgstr "Zapisz zrzut konfiguracji" -#: src/libslic3r/PrintConfig.cpp:3424 +#: src/slic3r/GUI/ImGuiWrapper.cpp:801 src/slic3r/GUI/Search.cpp:458 +msgid "Category" +msgstr "Kategoria" + +#: src/libslic3r/PrintConfig.cpp:3623 msgid "Center" msgstr "Punkt centralny" -#: src/libslic3r/PrintConfig.cpp:3425 +#: src/libslic3r/PrintConfig.cpp:3624 msgid "Center the print around the given center." msgstr "Wyśrodkuj model wokół podanego punktu centralnego." -#: src/slic3r/GUI/Tab.cpp:1728 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:329 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Pliki certyfikatów (*.crt, *.pem)|*.crt;*.pem|Wszystkie pliki|*.*" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +#: src/slic3r/GUI/SavePresetDialog.cpp:313 +msgid "Change \"%1%\" to \"%2%\" for this physical printer \"%3%\"" +msgstr "Zmień \"%1%\" na \"%2%\" dla fizycznej drukarki \"%3%\"" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Change camera type (perspective, orthographic)" msgstr "Zmień rodzaj widoku (perspektywiczny/ortograficzny)" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:885 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:693 msgid "Change drainage hole diameter" msgstr "Zmień średnicę otworu odpływowego" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/DoubleSlider.cpp:1273 src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Change extruder" msgstr "Zmiana ekstrudera" -#: src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/slic3r/GUI/GUI_ObjectList.cpp:574 msgid "Change Extruder" msgstr "Zmień Ekstruder" -#: src/slic3r/GUI/DoubleSlider.cpp:1145 +#: src/slic3r/GUI/DoubleSlider.cpp:1274 msgid "Change extruder (N/A)" msgstr "Zmień ekstruder (N/A)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3997 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4484 msgid "Change Extruders" msgstr "Zmień Ekstrudery" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:152 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:157 #, c-format msgid "Change Option %s" msgstr "Zmień Opcję %s" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3558 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4021 msgid "Change Part Type" msgstr "Zmień Rodzaj Elementu" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:820 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:694 msgid "Change point head diameter" msgstr "Zmień średnicę łącznika" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Change the number of instances of the selected object" msgstr "Zmień liczbę kopii wybranego modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1589 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1718 msgid "Change type" msgstr "Zmiana rodzaju" @@ -1201,125 +1392,172 @@ msgstr "Zmiana rodzaju" msgid "Changelog && Download" msgstr "Pobierz && Listę Zmian" -#: src/slic3r/GUI/GUI_App.cpp:442 +#: src/slic3r/GUI/GUI_App.cpp:1245 msgid "Changing of an application language" msgstr "Zmiana języka aplikacji" -#: src/slic3r/GUI/ConfigWizard.cpp:769 src/slic3r/GUI/Preferences.cpp:64 +#: src/slic3r/GUI/ConfigWizard.cpp:1128 src/slic3r/GUI/Preferences.cpp:81 msgid "Check for application updates" msgstr "Sprawdź aktualizacje aplikacji" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for configuration updates" msgstr "Sprawdzaj aktualizacje konfiguracji" -#: src/slic3r/GUI/GUI_App.cpp:802 +#: src/slic3r/GUI/GUI_App.cpp:1482 msgid "Check for updates" msgstr "Sprawdź akt&ualizacje" -#: src/slic3r/GUI/BedShapeDialog.cpp:532 +#: src/slic3r/GUI/BedShapeDialog.cpp:608 msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Wybierz plik, z którego ma być zaimportowana tekstura stołu (PNG/SVG):" -#: src/slic3r/GUI/MainFrame.cpp:773 +#: src/slic3r/GUI/MainFrame.cpp:1474 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Wybierz plik do pocięcia (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/BedShapeDialog.cpp:555 +#: src/slic3r/GUI/BedShapeDialog.cpp:631 msgid "Choose an STL file to import bed model from:" msgstr "Wybierz plik STL, z którego ma być zaimportowany model stołu:" -#: src/slic3r/GUI/BedShapeDialog.cpp:487 +#: src/slic3r/GUI/BedShapeDialog.cpp:563 msgid "Choose an STL file to import bed shape from:" msgstr "Wybierz plik STL, z którego ma być zaimportowany kształt stołu:" -#: src/slic3r/GUI/GUI_App.cpp:555 +#: src/slic3r/GUI/GUI_App.cpp:1208 msgid "Choose one file (3MF/AMF):" msgstr "Wybierz jeden plik (3MF/AMF):" -#: src/slic3r/GUI/GUI_App.cpp:567 +#: src/slic3r/GUI/GUI_App.cpp:1233 +msgid "Choose one file (GCODE/.GCO/.G/.ngc/NGC):" +msgstr "Wybierz jeden plik (GCODE/.GCO/.G/.ngc/NGC):" + +#: src/slic3r/GUI/GUI_App.cpp:1220 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Wybierz jeden lub więcej plików (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/ConfigWizard.cpp:895 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:35 +msgid "Choose SLA archive:" +msgstr "Wybierz archiwum SLA:" + +#: src/slic3r/GUI/ConfigWizard.cpp:1261 msgid "Choose the type of firmware used by your printer." msgstr "Wybierz rodzaj firmware używanego przez Twoją drukarkę." -#: src/slic3r/GUI/BedShapeDialog.cpp:89 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:53 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:36 +msgid "Circle" +msgstr "Koło" + +#: src/slic3r/GUI/BedShapeDialog.cpp:142 msgid "Circular" msgstr "Okrągły" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/GLCanvas3D.cpp:4657 -msgid "Click right mouse button to open History" -msgstr "Kliknij prawym przyciskiem myszy, aby otworzyć Historię" +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/GLCanvas3D.cpp:5067 +msgid "Click right mouse button to open/close History" +msgstr "Kliknij prawym przyciskiem myszy, aby otworzyć/zamknąć historię" -#: src/slic3r/GUI/GUI_ObjectList.cpp:404 +#: src/slic3r/GUI/GUI_ObjectList.cpp:451 msgid "Click the icon to change the object printable property" msgstr "Kliknij na ikonę, aby włączyć/wyłączyć drukowanie modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:398 +#: src/slic3r/GUI/GUI_ObjectList.cpp:445 msgid "Click the icon to change the object settings" msgstr "Kliknij na ikonę, aby zmienić ustawienia modelu" -#: src/slic3r/GUI/Plater.cpp:343 +#: src/slic3r/GUI/PresetComboBoxes.cpp:566 msgid "Click to edit preset" -msgstr "Kliknij aby edytować zestaw ustawień" +msgstr "Kliknij, aby edytować zestaw ustawień" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to hide" +msgstr "Kliknij, aby ukryć" + +#: src/slic3r/GUI/GCodeViewer.cpp:2071 +msgid "Click to show" +msgstr "Kliknij, aby pokazać" + +#: src/libslic3r/PrintConfig.cpp:286 msgid "Clip multi-part objects" msgstr "Przycinaj modele kilkuczęściowe" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:25 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 msgid "Clipping of view" msgstr "Widok przecinania" #: src/slic3r/GUI/FirmwareDialog.cpp:852 -#: src/slic3r/GUI/Mouse3DController.cpp:364 -#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +#: src/slic3r/GUI/Mouse3DController.cpp:353 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Close" msgstr "Zamknij" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 -#: src/libslic3r/PrintConfig.cpp:2934 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Closing distance" msgstr "Dystans domykania" -#: src/slic3r/GUI/Plater.cpp:1260 src/libslic3r/PrintConfig.cpp:582 +#: src/slic3r/GUI/MainFrame.cpp:1297 src/slic3r/GUI/Plater.cpp:2144 +msgid "Collapse sidebar" +msgstr "Zwiń pasek narzędzi" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Collapse/Expand the sidebar" +msgstr "Zwiń/rozwiń pasek narzędzi" + +#: src/slic3r/GUI/Plater.cpp:1198 src/libslic3r/PrintConfig.cpp:618 msgid "Color" msgstr "Kolor" -#: src/slic3r/GUI/DoubleSlider.cpp:1005 +#: src/slic3r/GUI/GCodeViewer.cpp:2410 src/slic3r/GUI/GCodeViewer.cpp:2438 +msgid "Color change" +msgstr "Zmiana koloru" + +#: src/slic3r/GUI/DoubleSlider.cpp:1130 msgid "Color change (\"%1%\")" msgstr "Zmiana koloru (\"%1%\")" -#: src/slic3r/GUI/DoubleSlider.cpp:1006 +#: src/slic3r/GUI/DoubleSlider.cpp:1131 msgid "Color change (\"%1%\") for Extruder %2%" msgstr "Zmiana koloru (\"%1%\") dla ekstrudera %2%" -#: src/slic3r/GUI/GLCanvas3D.cpp:995 +#: src/slic3r/GUI/GLCanvas3D.cpp:1001 #, c-format msgid "Color change for Extruder %d at %.2f mm" msgstr "Zmiana koloru dla ekstrudera %d na wysokości %.2f mm" -#: src/slic3r/GUI/GUI_Preview.cpp:228 src/slic3r/GUI/GUI_Preview.cpp:572 -#: src/libslic3r/GCode/PreviewData.cpp:359 +#: src/slic3r/GUI/Tab.cpp:2203 +msgid "Color Change G-code" +msgstr "G-code ze zmianą koloru" + +#: src/libslic3r/PrintConfig.cpp:1960 +msgid "Color change G-code" +msgstr "G-code ze zmianą koloru" + +#: src/slic3r/GUI/GCodeViewer.cpp:2531 src/slic3r/GUI/GUI_Preview.cpp:1475 +msgid "Color changes" +msgstr "Zmiany koloru" + +#: src/slic3r/GUI/GCodeViewer.cpp:2242 src/slic3r/GUI/GUI_Preview.cpp:282 +#: src/slic3r/GUI/GUI_Preview.cpp:784 src/libslic3r/GCode/PreviewData.cpp:364 msgid "Color Print" msgstr "Zmiana Koloru" -#: src/libslic3r/PrintConfig.cpp:260 +#: src/libslic3r/PrintConfig.cpp:294 msgid "Colorprint height" msgstr "Wysokość (warstwa) zmiany koloru" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:1034 msgid "Combine infill every" msgstr "Scalaj wypełnienie co" -#: src/libslic3r/PrintConfig.cpp:995 +#: src/libslic3r/PrintConfig.cpp:1039 msgid "Combine infill every n layers" msgstr "Scalaj wypełnienie co n warstw" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 msgid "Commands" msgstr "Komendy" @@ -1327,23 +1565,23 @@ msgstr "Komendy" msgid "Comment:" msgstr "Komentarz:" -#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:280 +#: src/slic3r/GUI/Tab.cpp:107 src/libslic3r/PrintConfig.cpp:314 msgid "Compatible print profiles" msgstr "Kompatybilne profile druku" -#: src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:320 msgid "Compatible print profiles condition" msgstr "Warunki kompatybilności profili druku" -#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:265 +#: src/slic3r/GUI/Tab.cpp:101 src/libslic3r/PrintConfig.cpp:299 msgid "Compatible printers" msgstr "Kompatybilne drukarki" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:305 msgid "Compatible printers condition" msgstr "Warunki kompatybilności z drukarką" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:338 msgid "Complete individual objects" msgstr "Druk sekwencyjny (model po modelu)" @@ -1351,27 +1589,27 @@ msgstr "Druk sekwencyjny (model po modelu)" msgid "Completed" msgstr "Zakończono" -#: src/libslic3r/Zipper.cpp:54 +#: src/libslic3r/miniz_extension.cpp:113 msgid "compression failed" msgstr "niepowodzenie kompresji" -#: src/libslic3r/PrintConfig.cpp:426 src/libslic3r/PrintConfig.cpp:849 +#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:887 msgid "Concentric" msgstr "Koncentryczny" -#: src/slic3r/GUI/ConfigWizard.cpp:2110 +#: src/slic3r/GUI/ConfigWizard.cpp:2625 msgid "Configuration &Assistant" msgstr "&Asystent Konfiguracji" -#: src/slic3r/GUI/ConfigWizard.cpp:2113 +#: src/slic3r/GUI/ConfigWizard.cpp:2628 msgid "Configuration &Wizard" msgstr "Asystent Ko&nfiguracji" -#: src/slic3r/GUI/ConfigWizard.cpp:2109 +#: src/slic3r/GUI/ConfigWizard.cpp:2624 msgid "Configuration Assistant" msgstr "Asystent konfiguracji" -#: src/libslic3r/PrintConfig.cpp:1316 +#: src/libslic3r/PrintConfig.cpp:1424 msgid "Configuration notes" msgstr "Notatki konfiguracyjne" @@ -1387,11 +1625,15 @@ msgstr "Aktualizacja konfiguracji" msgid "Configuration update is available" msgstr "Dostępna jest aktualizacja konfiguracji" -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "Configuration update is available." +msgstr "Dostępna jest aktualizacja konfiguracji." + +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "Configuration updates" msgstr "Aktualizacje konfiguracji" -#: src/slic3r/GUI/ConfigWizard.cpp:2112 +#: src/slic3r/GUI/ConfigWizard.cpp:2627 msgid "Configuration Wizard" msgstr "Asystent Konfiguracji" @@ -1399,15 +1641,11 @@ msgstr "Asystent Konfiguracji" msgid "Confirmation" msgstr "Potwierdzenie" -#: src/slic3r/GUI/Tab.cpp:1931 -msgid "Connection failed." -msgstr "Błąd połączenia." - -#: src/slic3r/GUI/Tab.cpp:3627 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Connection of the support sticks and junctions" msgstr "Łączenia słupków i skrzyżowań podpór" -#: src/slic3r/Utils/AstroBox.cpp:83 +#: src/slic3r/Utils/AstroBox.cpp:84 msgid "Connection to AstroBox works correctly." msgstr "Połączenie z AstroBox pomyślne." @@ -1423,124 +1661,136 @@ msgstr "Połączenie z FlashAir działa poprawnie a przesyłanie jest włączone msgid "Connection to OctoPrint works correctly." msgstr "Połączenie z OctoPrint pomyślne." -#: src/slic3r/GUI/Tab.cpp:1928 -msgid "Connection to printer works correctly." -msgstr "Połączenie z drukarką pomyślne." +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:260 +msgid "Connection to printers connected via the print host failed." +msgstr "Niepowodzenie połączenia z drukarką podłączoną do serwera druku." -#: src/slic3r/Utils/OctoPrint.cpp:176 +#: src/slic3r/Utils/OctoPrint.cpp:185 msgid "Connection to Prusa SL1 works correctly." msgstr "Połączenie z Prusa SL1 działa prawidłowo." -#: src/libslic3r/PrintConfig.cpp:1909 +#: src/libslic3r/PrintConfig.cpp:2051 msgid "Contact Z distance" msgstr "Odstęp w osi Z" -#: src/slic3r/GUI/AboutDialog.cpp:261 +#: src/slic3r/GUI/AboutDialog.cpp:286 msgid "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others." msgstr "Wkład: Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik i wielu innych." -#: src/libslic3r/PrintConfig.cpp:2659 +#: src/slic3r/GUI/GUI_App.cpp:245 +msgid "Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others." +msgstr "Swój wkład mają: Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik oraz wielu innych." + +#: src/libslic3r/PrintConfig.cpp:2823 msgid "Controls the bridge type between two neighboring pillars. Can be zig-zag, cross (double zig-zag) or dynamic which will automatically switch between the first two depending on the distance of the two pillars." msgstr "Kontroluje typ mostu pomiędzy sąsiadującymi słupkami. Może być zyg-zagowy, krzyżowy (podwójny zyg-zag) lub dynamiczny, który oznacza automatyczne przełączanie się pomiędzy pierwszymi dwoma, w zależności od odstępu pomiędzy słupkami." -#: src/slic3r/GUI/Tab.cpp:1444 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 src/slic3r/GUI/Plater.cpp:4886 +msgid "Convert from imperial units" +msgstr "Konwertuj z jednostek imperialnych" + +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Cooling" msgstr "Chłodzenie" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:696 msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "Ruchy chłodzące przyspieszają zaczynając od tej prędkości." -#: src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:715 msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Ruchy chłodzące przyspieszają kończąc z tą prędkością." -#: src/slic3r/GUI/Tab.cpp:1465 +#: src/slic3r/GUI/Tab.cpp:1811 msgid "Cooling thresholds" msgstr "Progi chłodzenia" -#: src/libslic3r/PrintConfig.cpp:327 +#: src/libslic3r/PrintConfig.cpp:361 msgid "Cooling tube length" msgstr "Długość rurki chłodzącej" -#: src/libslic3r/PrintConfig.cpp:319 +#: src/libslic3r/PrintConfig.cpp:353 msgid "Cooling tube position" msgstr "Pozycja rurki chłodzącej" -#: src/slic3r/GUI/Plater.cpp:4752 +#: src/slic3r/GUI/Plater.cpp:4856 msgid "Copies of the selected object" msgstr "Kopie wybranego modelu" -#: src/slic3r/GUI/GLCanvas3D.cpp:4505 +#: src/slic3r/GUI/GLCanvas3D.cpp:4871 msgid "Copy" msgstr "Kopiuj" -#: src/slic3r/GUI/MainFrame.cpp:589 +#: src/slic3r/GUI/MainFrame.cpp:1195 msgid "Copy selection to clipboard" msgstr "Skopiuj zaznaczenie do schowka" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 msgid "Copy to clipboard" msgstr "Skopiuj do schowka" -#: src/slic3r/GUI/SysInfoDialog.cpp:154 +#: src/slic3r/GUI/SysInfoDialog.cpp:177 msgid "Copy to Clipboard" msgstr "Kopiuj do Schowka" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:121 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:156 msgid "Copying of the temporary G-code has finished but the exported code couldn't be opened during copy check. The output G-code is at %1%.tmp." msgstr "Kopiowanie tymczasowego pliku G-code zostało zakończone, ale nie można otworzyć wyeksportowanego pliku w celu weryfikacji kopiowania. Wynikowy G-code znajduje się w lokalizacji %2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:118 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:153 msgid "Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "Kopiowanie tymczasowego pliku G-code zostało zakończone, ale nie można otworzyć oryginalnego pliku w lokalizacji %1% w celu weryfikacji kopiowania. Wynikowy G-code znajduje się w lokalizacji %2%.tmp." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:480 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:522 msgid "Copying of the temporary G-code to the output G-code failed" msgstr "Kopiowanie tymczasowego G-code do wyjściowego nie powiodło się" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:109 -msgid "Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?" -msgstr "Kopiowanie tymczasowego G-code do wyjściowego nie powiodło się. Sprawdź, czy karta nie jest zabezpieczona przed zapisem." +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +msgid "" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" +"Error message: %1%" +msgstr "" +"Niepowodzenie kopiowania tymczasowego G-code do pliku wyjściowego G-code. Karta SD zabezpieczona przed zapisem? \n" +"Kod błędu: %1%" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:112 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:147 msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Niepowodzenie kopiowania tymczasowego pliku G-code do pliku docelowego. Może być to spowodowane problemem z urządzeniem docelowym. Spróbuj wyeksportować G-code ponownie lub użyj innego urządzenia. Uszkodzony plik wynikowy G-code znajduje się w lokalizacji %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:127 src/slic3r/GUI/AboutDialog.cpp:256 +#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:281 msgid "Copyright" msgstr "Prawa autorskie" -#: src/libslic3r/PrintConfig.cpp:2571 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2714 src/libslic3r/PrintConfig.cpp:2715 msgid "Correction for expansion" msgstr "Korekcja rozszerzania" -#: src/slic3r/GUI/Tab.cpp:2100 src/slic3r/GUI/Tab.cpp:3519 +#: src/slic3r/GUI/Tab.cpp:2270 src/slic3r/GUI/Tab.cpp:3935 msgid "Corrections" msgstr "Korekcje" -#: src/slic3r/GUI/Plater.cpp:1243 src/libslic3r/PrintConfig.cpp:760 -#: src/libslic3r/PrintConfig.cpp:2510 src/libslic3r/PrintConfig.cpp:2511 +#: src/slic3r/GUI/Plater.cpp:1158 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:2653 src/libslic3r/PrintConfig.cpp:2654 msgid "Cost" msgstr "Koszt" -#: src/slic3r/GUI/Plater.cpp:239 +#: src/slic3r/GUI/Plater.cpp:245 msgid "Cost (money)" msgstr "Koszt (pieniędzy)" -#: src/slic3r/GUI/Plater.cpp:2835 +#: src/slic3r/GUI/Jobs/ArrangeJob.cpp:176 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "Nie można ułożyć modeli! Niektóre geometrie mogą być nieprawidłowe." -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/Utils/AstroBox.cpp:90 msgid "Could not connect to AstroBox" msgstr "Nie można połączyć się z AstroBox" -#: src/slic3r/Utils/Duet.cpp:54 +#: src/slic3r/Utils/Duet.cpp:55 msgid "Could not connect to Duet" msgstr "Nie można połączyć się z Duet" -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:74 msgid "Could not connect to FlashAir" msgstr "Nie można połączyć z FlashAir" @@ -1548,56 +1798,69 @@ msgstr "Nie można połączyć z FlashAir" msgid "Could not connect to OctoPrint" msgstr "Nie można połączyć się z OctoPrint" -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:191 msgid "Could not connect to Prusa SLA" msgstr "Nie można połączyć się z Prusa SLA" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/Utils/Http.cpp:73 +msgid "Could not detect system SSL certificate store. PrusaSlicer will be unable to establish secure network connections." +msgstr "Nie mogę wykryć magazynu certyfikatów SSL. PrusaSlicer nie będzie w stanie nawiązać bezpiecznego połączenia z siecią." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:289 msgid "Could not get a valid Printer Host reference" msgstr "Brak prawidłowego odwołania do serwera druku" -#: src/slic3r/Utils/Duet.cpp:134 +#: src/slic3r/Utils/Duet.cpp:136 msgid "Could not get resources to create a new connection" msgstr "Brak zasobów do utworzenia nowego połączenia" -#: src/libslic3r/PrintConfig.cpp:1959 +#: src/libslic3r/PrintConfig.cpp:2101 msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "Pokryj pętlą górną warstwę podpór. Domyślnie wyłączone." -#: src/libslic3r/PrintConfig.cpp:89 +#: src/libslic3r/PrintConfig.cpp:91 msgid "Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low." msgstr "Szpary mniejsze niż dwukrotność wartości parametru \"promień zamykania szpar\" zostaną zamknięte przy cięciu. Operacja zamykania szpar może zmniejszyć finalną rozdzielczość wydruku, więc zalecane jest ustawienie tej wartości na rozsądnie niskim poziomie." -#: src/libslic3r/Zipper.cpp:58 +#: src/libslic3r/miniz_extension.cpp:117 msgid "CRC-32 check failed" msgstr "Weryfikacja CRC-32 nie powiodła się" -#: src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:3021 msgid "Create pad around object and ignore the support elevation" msgstr "Dodaj podkładkę wokół modelu i zignoruj podniesienie na podporach" -#: src/libslic3r/PrintConfig.cpp:2724 +#: src/libslic3r/PrintConfig.cpp:2888 msgid "Critical angle" msgstr "Kąt krytyczny" -#: src/libslic3r/PrintConfig.cpp:2668 +#: src/libslic3r/PrintConfig.cpp:2832 msgid "Cross" msgstr "Krzyżowy" -#: src/libslic3r/PrintConfig.cpp:847 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:225 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:203 +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl + kółko myszy" + +#: src/libslic3r/PrintConfig.cpp:885 msgid "Cubic" msgstr "Sześcienny" -#: src/slic3r/GUI/wxExtensions.cpp:704 +#: src/slic3r/Utils/Http.cpp:91 +msgid "CURL init has failed. PrusaSlicer will be unable to establish network connections. See logs for additional details." +msgstr "Niepowodzenie inicjalizacji CURL. PrusaSlicer nie będzie w stanie nawiązać połączenia przez sieć. Szczegóły w logach." + +#: src/slic3r/GUI/wxExtensions.cpp:624 #, c-format msgid "Current mode is %s" msgstr "Obecny tryb to %s" -#: src/slic3r/GUI/Tab.cpp:959 +#: src/slic3r/GUI/Tab.cpp:1278 msgid "Current preset is inherited from" msgstr "Obecny zestaw ustawień jest dziedziczony z" -#: src/slic3r/GUI/Tab.cpp:957 +#: src/slic3r/GUI/Tab.cpp:1276 msgid "Current preset is inherited from the default preset." msgstr "Obecny zestaw ustawień jest dziedziczony z zestawu domyślnego." @@ -1605,451 +1868,488 @@ msgstr "Obecny zestaw ustawień jest dziedziczony z zestawu domyślnego." msgid "Current version:" msgstr "Obecna wersja:" -#: src/slic3r/GUI/BedShapeDialog.cpp:98 src/slic3r/GUI/GUI_Preview.cpp:249 -#: src/libslic3r/ExtrusionEntity.cpp:322 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 src/slic3r/GUI/GUI_Preview.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:327 src/libslic3r/ExtrusionEntity.cpp:362 msgid "Custom" msgstr "Własny" -#: src/libslic3r/PrintConfig.cpp:112 +#: src/libslic3r/PrintConfig.cpp:114 msgid "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. If left blank, the default OS CA certificate repository is used." msgstr "Dla połączeń HTTPS z OctoPrint może zostać użyty własny plik certyfikatu CA w formacie crt/pem. Jeśli pole zostanie puste, to zostanie użyty plik z systemowego repozytorium CA." -#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1975 +#: src/slic3r/GUI/Tab.cpp:1872 src/slic3r/GUI/Tab.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:1978 msgid "Custom G-code" msgstr "Własny G-code" -#: src/slic3r/GUI/DoubleSlider.cpp:1619 +#: src/slic3r/GUI/DoubleSlider.cpp:1815 msgid "Custom G-code on current layer (%1% mm)." msgstr "Własny G-code na obecnej warstwie (%1% mm)." -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/GCodeViewer.cpp:2580 src/slic3r/GUI/GUI_Preview.cpp:1477 +msgid "Custom G-codes" +msgstr "Własny G-code" + +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer" msgstr "Własna Drukarka" -#: src/slic3r/GUI/ConfigWizard.cpp:732 +#: src/slic3r/GUI/ConfigWizard.cpp:1091 msgid "Custom Printer Setup" msgstr "Ustawienie Własnej Drukarki" -#: src/slic3r/GUI/ConfigWizard.cpp:736 +#: src/slic3r/GUI/ConfigWizard.cpp:1095 msgid "Custom profile name:" msgstr "Nazwa własnego profilu:" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:42 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:144 src/libslic3r/PrintConfig.cpp:3402 +#: src/slic3r/GUI/DoubleSlider.cpp:1135 +msgid "Custom template (\"%1%\")" +msgstr "Własny szablon (\"%1%\")" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:146 src/libslic3r/PrintConfig.cpp:3601 msgid "Cut" msgstr "Przetnij" -#: src/slic3r/GUI/Plater.cpp:4786 +#: src/slic3r/GUI/Plater.cpp:4921 msgid "Cut by Plane" msgstr "Tnij Płaszczyzną" -#: src/libslic3r/PrintConfig.cpp:3403 +#: src/libslic3r/PrintConfig.cpp:3602 msgid "Cut model at the given Z." msgstr "Przetnij model na wysokości Z." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Cylinder" msgstr "Cylinder" -#: src/slic3r/GUI/MainFrame.cpp:568 +#: src/slic3r/GUI/MainFrame.cpp:1174 msgid "D&eselect all" msgstr "&Odznacz wszystko" -#: src/libslic3r/PrintConfig.cpp:3504 +#: src/libslic3r/PrintConfig.cpp:3709 msgid "Data directory" msgstr "Katalog danych" -#: src/slic3r/GUI/Mouse3DController.cpp:313 +#: src/slic3r/GUI/Mouse3DController.cpp:300 msgid "Deadzone:" msgstr "Martwa strefa:" -#: src/libslic3r/Zipper.cpp:52 +#: src/libslic3r/miniz_extension.cpp:111 msgid "decompression failed or archive is corrupted" msgstr "niepowodzenie rozpakowywania lub uszkodzone archiwum" -#: src/slic3r/GUI/Plater.cpp:4720 +#: src/slic3r/GUI/Plater.cpp:4824 msgid "Decrease Instances" msgstr "Zmniejsz ilość instancji" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1704 src/libslic3r/PrintConfig.cpp:335 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1832 src/libslic3r/PrintConfig.cpp:369 msgid "Default" msgstr "Domyślnie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:457 src/slic3r/GUI/GUI_ObjectList.cpp:469 -#: src/slic3r/GUI/GUI_ObjectList.cpp:917 src/slic3r/GUI/GUI_ObjectList.cpp:3967 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3977 -#: src/slic3r/GUI/GUI_ObjectList.cpp:4012 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:200 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:257 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:282 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:490 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:1753 +#: src/slic3r/GUI/ExtraRenderers.cpp:297 src/slic3r/GUI/GUI_ObjectList.cpp:496 +#: src/slic3r/GUI/GUI_ObjectList.cpp:508 src/slic3r/GUI/GUI_ObjectList.cpp:1015 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4454 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4464 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4499 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:202 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:259 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:284 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:492 msgid "default" msgstr "domyślnie" -#: src/libslic3r/PrintConfig.cpp:777 +#: src/libslic3r/PrintConfig.cpp:813 msgid "Default base angle for infill orientation. Cross-hatching will be applied to this. Bridges will be infilled using the best direction Slic3r can detect, so this setting does not affect them." msgstr "Domyślny kąt linii wypełnienia. Mosty będą wypełniane z użyciem najlepszego kierunku obliczonego przez Slic3r, więc to ustawienie ich nie dotyczy." -#: src/libslic3r/PrintConfig.cpp:554 +#: src/slic3r/GUI/GCodeViewer.cpp:2289 +msgid "Default color" +msgstr "Domyślny kolor" + +#: src/slic3r/GUI/GCodeViewer.cpp:2313 +msgid "default color" +msgstr "domyślny kolor" + +#: src/libslic3r/PrintConfig.cpp:590 msgid "Default extrusion width" msgstr "Domyślna szerokość linii" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1305 msgid "default filament profile" msgstr "domyślny profil filamentu" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Default filament profile" msgstr "Domyślny profil filamentu" -#: src/libslic3r/PrintConfig.cpp:346 +#: src/libslic3r/PrintConfig.cpp:380 msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." msgstr "Domyślny profil filamentu powiązany z obecnym profilem drukarki. Przy wybraniu obecnego profilu drukarki automatycznie zostanie wybrany ten profil filamentu." -#: src/slic3r/GUI/Tab.cpp:2919 -#, c-format -msgid "Default preset (%s)" -msgstr "Domyślny zestaw ustawień (%s)" - -#: src/slic3r/GUI/GLCanvas3D.cpp:904 src/slic3r/GUI/GLCanvas3D.cpp:933 +#: src/slic3r/GUI/GLCanvas3D.cpp:910 src/slic3r/GUI/GLCanvas3D.cpp:939 msgid "Default print color" msgstr "Domyślny kolor druku" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1302 msgid "default print profile" msgstr "domyślny profil druku" -#: src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:386 msgid "Default print profile" msgstr "Domyślny profil druku" -#: src/libslic3r/PrintConfig.cpp:353 src/libslic3r/PrintConfig.cpp:2592 -#: src/libslic3r/PrintConfig.cpp:2603 +#: src/libslic3r/PrintConfig.cpp:387 src/libslic3r/PrintConfig.cpp:2735 +#: src/libslic3r/PrintConfig.cpp:2746 msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." msgstr "Domyślny profil druku powiązany z obecnym profilem drukarki. Przy wybraniu obecnego profilu drukarki automatycznie zostanie wybrany ten profil filamentu." -#: src/slic3r/GUI/Tab.cpp:1001 +#: src/slic3r/GUI/Tab.cpp:1319 msgid "default SLA material profile" msgstr "domyślny profil materiału SLA" -#: src/libslic3r/PrintConfig.cpp:2591 src/libslic3r/PrintConfig.cpp:2602 +#: src/libslic3r/PrintConfig.cpp:2734 src/libslic3r/PrintConfig.cpp:2745 msgid "Default SLA material profile" msgstr "Domyślny profil materiału SLA" -#: src/slic3r/GUI/Tab.cpp:1005 +#: src/slic3r/GUI/Tab.cpp:1323 msgid "default SLA print profile" msgstr "domyślny profil druku SLA" -#: src/slic3r/GUI/Field.cpp:136 +#: src/slic3r/GUI/Field.cpp:184 msgid "default value" msgstr "wartość domyślna" -#: src/slic3r/GUI/ConfigWizard.cpp:734 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 msgid "Define a custom printer profile" msgstr "Zdefiniuj własny profil drukarki" -#: src/libslic3r/PrintConfig.cpp:2798 +#: src/libslic3r/PrintConfig.cpp:2962 msgid "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful when enabling this feature, as some resins may produce an extreme suction effect inside the cavity, which makes peeling the print off the vat foil difficult." -msgstr "Definiuje wgłębienie podkładki. Ustaw 0 aby je wyłączyć. Zachowaj ostrożność przy ustawianiu wgłębienia, ponieważ niektóre żywice mogą powodować bardzo silny efekt zasysania wewnątrz wgłębienia, co może powodować trudności z oddzieleniem wydruku od folii zbiornika." +msgstr "Definiuje wgłębienie podkładki. Ustaw 0, aby je wyłączyć. Zachowaj ostrożność przy ustawianiu wgłębienia, ponieważ niektóre żywice mogą powodować bardzo silny efekt zasysania wewnątrz wgłębienia, co może powodować trudności z oddzieleniem wydruku od dna zbiornika." -#: src/slic3r/GUI/GUI_ObjectList.cpp:346 +#: src/slic3r/GUI/GUI_ObjectList.cpp:393 msgid "degenerate facets" msgstr "ponowne generowanie ścianek" -#: src/libslic3r/PrintConfig.cpp:640 +#: src/libslic3r/PrintConfig.cpp:676 msgid "Delay after unloading" msgstr "Opóźnienie po rozładowaniu" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/Tab.cpp:3386 msgid "delete" msgstr "usuń" -#: src/slic3r/GUI/GLCanvas3D.cpp:4475 src/slic3r/GUI/GUI_ObjectList.cpp:1718 -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/GLCanvas3D.cpp:4841 src/slic3r/GUI/GUI_ObjectList.cpp:1846 +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Delete" msgstr "Usuń" -#: src/slic3r/GUI/MainFrame.cpp:575 +#: src/slic3r/GUI/MainFrame.cpp:1181 msgid "Delete &all" msgstr "Usuń &wszystko" -#: src/slic3r/GUI/GLCanvas3D.cpp:4484 src/slic3r/GUI/KBShortcutsDialog.cpp:129 -#: src/slic3r/GUI/Plater.cpp:4669 +#: src/slic3r/GUI/GLCanvas3D.cpp:4850 src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/Plater.cpp:4774 msgid "Delete all" msgstr "Usuń wszystko" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2176 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2341 msgid "Delete All Instances from Object" msgstr "Usuń wszystkie kopie modelu" -#: src/slic3r/GUI/DoubleSlider.cpp:1516 +#: src/slic3r/GUI/DoubleSlider.cpp:1708 msgid "Delete color change" msgstr "Usuń zmianę koloru" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:219 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:220 msgid "Delete color change marker for current layer" msgstr "Usuń punkt zmiany filamentu na obecnej warstwie" -#: src/slic3r/GUI/DoubleSlider.cpp:1519 +#: src/slic3r/GUI/DoubleSlider.cpp:1711 msgid "Delete custom G-code" msgstr "Usuń własny G-code" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:539 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:424 msgid "Delete drainage hole" msgstr "Usuń otwór odpływowy" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2357 msgid "Delete Height Range" msgstr "Usuń zakres wysokości" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2246 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 msgid "Delete Instance" msgstr "Usuń instancję" -#: src/slic3r/GUI/Plater.cpp:2712 +#: src/slic3r/GUI/Plater.cpp:2673 msgid "Delete Object" msgstr "Usuń Model" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:101 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:104 #, c-format msgid "Delete Option %s" msgstr "Usuń Opcję %s" -#: src/slic3r/GUI/DoubleSlider.cpp:1518 +#: src/slic3r/GUI/DoubleSlider.cpp:1710 msgid "Delete pause print" -msgstr "Usuń pauzę wydruku" +msgstr "Usuń pauzę" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 +#: src/slic3r/GUI/PresetComboBoxes.cpp:652 +msgid "Delete physical printer" +msgstr "Usuń fizyczną drukarkę" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:659 +msgid "Delete Physical Printer" +msgstr "Usuń fizyczną drukarkę" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 msgid "Delete selected" msgstr "Usuń zaznaczone" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2830 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3221 msgid "Delete Selected" msgstr "Usuń Zaznaczone" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2693 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3083 msgid "Delete Selected Item" msgstr "Usuń Wybrany Obiekt" -#: src/slic3r/GUI/Plater.cpp:4677 +#: src/slic3r/GUI/Plater.cpp:4782 msgid "Delete Selected Objects" msgstr "Usuń Zaznaczone Modele" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2152 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2319 msgid "Delete Settings" -msgstr "Usuń Ustawienia" +msgstr "Usuń ustawienia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2227 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2393 msgid "Delete Subobject" msgstr "Usuń Model Podrzędny" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:514 msgid "Delete support point" msgstr "Usuń punkt podpory" -#: src/slic3r/GUI/Tab.cpp:134 +#: src/slic3r/GUI/Tab.cpp:204 msgid "Delete this preset" msgstr "Usuń ten zestaw ustawień" -#: src/slic3r/GUI/DoubleSlider.cpp:1035 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:55 +msgid "Delete this preset from this printer device" +msgstr "Usuń ten zestaw ustawień z tej drukarki" + +#: src/slic3r/GUI/DoubleSlider.cpp:1160 msgid "Delete tick mark - Left click or press \"-\" key" msgstr "Usuń zaznaczenie - kliknij lewym przyciskiem lub wciśnij klawisz \"-\"" -#: src/slic3r/GUI/DoubleSlider.cpp:1517 +#: src/slic3r/GUI/DoubleSlider.cpp:1709 msgid "Delete tool change" msgstr "Usuń zmianę narzędzia" -#: src/slic3r/GUI/MainFrame.cpp:576 +#: src/slic3r/GUI/MainFrame.cpp:1182 msgid "Deletes all objects" msgstr "Usuwa wszystkie modele" -#: src/slic3r/GUI/MainFrame.cpp:573 +#: src/slic3r/GUI/MainFrame.cpp:1179 msgid "Deletes the current selection" msgstr "Usuwa zaznaczenie" -#: src/libslic3r/PrintConfig.cpp:717 src/libslic3r/PrintConfig.cpp:2503 -#: src/libslic3r/PrintConfig.cpp:2504 +#: src/libslic3r/PrintConfig.cpp:753 src/libslic3r/PrintConfig.cpp:2646 +#: src/libslic3r/PrintConfig.cpp:2647 msgid "Density" msgstr "Gęstość" -#: src/libslic3r/PrintConfig.cpp:791 +#: src/libslic3r/PrintConfig.cpp:827 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Gęstość wypełnienia wewnętrznego, wyrażana w zakresie 0% - 100%." -#: src/slic3r/GUI/Tab.cpp:1258 src/slic3r/GUI/Tab.cpp:1548 -#: src/slic3r/GUI/Tab.cpp:2019 src/slic3r/GUI/Tab.cpp:2135 -#: src/slic3r/GUI/Tab.cpp:3543 src/slic3r/GUI/Tab.cpp:3671 +#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1895 +#: src/slic3r/GUI/Tab.cpp:2228 src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:3959 src/slic3r/GUI/Tab.cpp:4090 msgid "Dependencies" msgstr "Zależności" -#: src/libslic3r/PrintConfig.cpp:1612 src/libslic3r/PrintConfig.cpp:1613 +#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1721 msgid "Deretraction Speed" msgstr "Prędkość powrotu retrakcji" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +#: src/slic3r/GUI/GCodeViewer.cpp:2529 src/slic3r/GUI/GUI_Preview.cpp:337 +#: src/slic3r/GUI/GUI_Preview.cpp:1473 +msgid "Deretractions" +msgstr "Powroty retrakcji" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:172 +msgid "Descriptive name for the printer" +msgstr "Opisowa nazwa drukarki" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Deselect all" msgstr "Odznacz wszystko" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Deselect by rectangle" msgstr "Odznaczenie prostokątem" -#: src/slic3r/GUI/MainFrame.cpp:569 +#: src/slic3r/GUI/MainFrame.cpp:1175 msgid "Deselects all objects" msgstr "Odznacza wszystkie modele" -#: src/slic3r/GUI/Tab.cpp:963 +#: src/slic3r/GUI/Tab.cpp:1224 msgid "Detach from system preset" msgstr "Odłącz od ustawień systemowych" -#: src/slic3r/GUI/Tab.cpp:984 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "Detach preset" msgstr "Odłącz zestaw ustawień" -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/Tab.cpp:3323 msgid "Detached" msgstr "Odłączono" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Detect bridging perimeters" msgstr "Wykrywanie mostów przy obrysach" -#: src/libslic3r/PrintConfig.cpp:2075 +#: src/libslic3r/PrintConfig.cpp:2218 msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." msgstr "Wykrywaj ściany o grubości jednego obrysu (obszary, gdzie 2 obrysy nie zmieszczą się i trzeba będzie połączyć je w jedną linię)." -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:2216 msgid "Detect thin walls" msgstr "Wykrywanie cienkich ścian" -#: src/libslic3r/PrintConfig.cpp:3472 +#: src/libslic3r/PrintConfig.cpp:3671 msgid "Detect unconnected parts in the given model(s) and split them into separate objects." msgstr "Wykryj niepołączone elementy załadowanych modelu i odłącz je, tworząc osobne modele." -#: src/slic3r/GUI/Plater.cpp:2368 +#: src/slic3r/GUI/Plater.cpp:2330 msgid "Detected advanced data" msgstr "Wykryto zaawansowane dane" -#: src/slic3r/GUI/Mouse3DController.cpp:289 +#: src/slic3r/GUI/Mouse3DController.cpp:274 msgid "Device:" msgstr "Urządzenie:" -#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/libslic3r/PrintConfig.cpp:709 +#: src/slic3r/GUI/BedShapeDialog.cpp:95 src/libslic3r/PrintConfig.cpp:745 msgid "Diameter" msgstr "Średnica" -#: src/libslic3r/PrintConfig.cpp:2694 +#: src/libslic3r/PrintConfig.cpp:2858 msgid "Diameter in mm of the pillar base" msgstr "Średnica podstawy słupka w mm" -#: src/libslic3r/PrintConfig.cpp:2650 +#: src/libslic3r/PrintConfig.cpp:2793 msgid "Diameter in mm of the support pillars" msgstr "Średnica słupków podpór w mm" -#: src/libslic3r/PrintConfig.cpp:2622 +#: src/libslic3r/PrintConfig.cpp:2765 msgid "Diameter of the pointing side of the head" msgstr "Średnica spiczastej części łącznika" -#: src/slic3r/GUI/BedShapeDialog.cpp:94 +#: src/slic3r/GUI/BedShapeDialog.cpp:131 msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "Średnica stołu. Z założenia punkt bazowy (0, 0) jest zlokalizowany na środku." -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1747 msgid "Direction" msgstr "Kierunek" -#: src/libslic3r/PrintConfig.cpp:359 +#: src/libslic3r/PrintConfig.cpp:393 msgid "Disable fan for the first" msgstr "Wyłącz wentylator przy pierwszych" -#: src/libslic3r/PrintConfig.cpp:1349 +#: src/libslic3r/PrintConfig.cpp:1457 msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." msgstr "Wyłącza retrakcję gdy ruch jałowy nie wykracza poza zewnętrzny obrys górnej warstwy (więc jakiekolwiek wycieki z dyszy prawdopodobnie i tak nie będą widoczne)." -#: src/slic3r/GUI/DoubleSlider.cpp:952 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:641 +msgid "Discard" +msgstr "Odrzuć" + +#: src/slic3r/GUI/DoubleSlider.cpp:1066 msgid "Discard all custom changes" msgstr "Odrzuć wszystkie własne zmiany" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1375 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 msgid "Discard changes" msgstr "Odrzuć zmiany" -#: src/slic3r/GUI/GUI_App.cpp:932 src/slic3r/GUI/Tab.cpp:2946 -msgid "Discard changes and continue anyway?" -msgstr "Odrzucić zmiany i kontynuować?" - -#: src/slic3r/GUI/Tab.cpp:2078 +#: src/slic3r/GUI/Tab.cpp:2248 msgid "Display" msgstr "Wyświetlacz" -#: src/libslic3r/PrintConfig.cpp:2359 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "Display height" msgstr "Wysokość wyświetlacza" -#: src/libslic3r/PrintConfig.cpp:2378 +#: src/libslic3r/PrintConfig.cpp:2521 msgid "Display horizontal mirroring" msgstr "Pokaż odbicie poziome" -#: src/libslic3r/PrintConfig.cpp:2392 +#: src/libslic3r/PrintConfig.cpp:2535 msgid "Display orientation" msgstr "Pokaż orientację" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Display the Print Host Upload Queue window" msgstr "Wyświetl okno kolejki serwera druku" -#: src/libslic3r/PrintConfig.cpp:2385 +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Display vertical mirroring" msgstr "Pokaż odbicie pionowe" -#: src/libslic3r/PrintConfig.cpp:2353 +#: src/libslic3r/PrintConfig.cpp:2496 msgid "Display width" msgstr "Orientacja wyświetlacza" -#: src/libslic3r/PrintConfig.cpp:377 +#: src/libslic3r/PrintConfig.cpp:411 msgid "Distance between copies" msgstr "Odstęp pomiędzy kopiami" -#: src/libslic3r/PrintConfig.cpp:1680 -msgid "Distance between skirt and object(s). Set this to zero to attach the skirt to the object(s) and get a brim for better adhesion." -msgstr "Odległość skirtu od modelu. Ustaw zero aby dołączyć do modelu i uzyskać obramowanie dla lepszej przyczepności." +#: src/libslic3r/PrintConfig.cpp:1157 +msgid "Distance between ironing lines" +msgstr "Odstęp między liniami prasowania" -#: src/libslic3r/PrintConfig.cpp:2882 +#: src/libslic3r/PrintConfig.cpp:1788 +msgid "Distance between skirt and object(s). Set this to zero to attach the skirt to the object(s) and get a brim for better adhesion." +msgstr "Odległość skirtu od modelu. Ustaw zero, aby dołączyć do modelu i uzyskać obramowanie dla lepszej przyczepności." + +#: src/libslic3r/PrintConfig.cpp:3046 msgid "Distance between two connector sticks which connect the object and the generated pad." msgstr "Odstęp pomiędzy dwoma słupkami łączącymi model z wygenerowaną podkładką." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1787 msgid "Distance from object" msgstr "Odstęp od modelu" -#: src/slic3r/GUI/BedShapeDialog.cpp:85 +#: src/slic3r/GUI/BedShapeDialog.cpp:121 msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "Odległość koordynaty punktu zerowego od przedniego lewego rogu prostokąta." -#: src/libslic3r/PrintConfig.cpp:320 +#: src/libslic3r/PrintConfig.cpp:354 msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "Odległość punktu centralnego rurki chłodzącej od końcówki ekstrudera." -#: src/libslic3r/PrintConfig.cpp:1382 +#: src/libslic3r/PrintConfig.cpp:1490 msgid "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware." msgstr "Odległość końcówki ekstrudera do miejsca zatrzymania filamentu po rozładowaniu. Ta wartość powinna odpowiadać tej ustawionej w firmware drukarki." -#: src/libslic3r/PrintConfig.cpp:378 +#: src/libslic3r/PrintConfig.cpp:412 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Odstęp używany przy automatycznym rozmieszczaniu modeli na stole." -#: src/libslic3r/PrintConfig.cpp:3486 +#: src/libslic3r/PrintConfig.cpp:3685 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Nie przerywaj jeśli plik dołączony do --load nie istnieje." -#: src/libslic3r/PrintConfig.cpp:3430 +#: src/libslic3r/PrintConfig.cpp:3629 msgid "Do not rearrange the given models before merging and keep their original XY coordinates." msgstr "Nie przestawiaj modeli przed łączeniem i zachowaj ich początkowe koordynaty XY." -#: src/slic3r/GUI/Field.cpp:240 +#: src/slic3r/GUI/Field.cpp:288 #, c-format msgid "" "Do you mean %s%% instead of %s %s?\n" @@ -2060,31 +2360,35 @@ msgstr "" "Kliknij TAK, jeśli chcesz zmienić wartość na %s %%,\n" "lub NIE, jeśli masz pewność, że %s %s jest prawidłową wartością." -#: src/slic3r/GUI/DoubleSlider.cpp:1920 +#: src/slic3r/GUI/DoubleSlider.cpp:2138 msgid "Do you want to delete all saved tool changes?" msgstr "Czy chcesz usunąć wszystkie zmiany narzędzi?" -#: src/slic3r/GUI/GUI_App.cpp:884 +#: src/slic3r/GUI/GUI_App.cpp:1610 msgid "Do you want to proceed?" msgstr "Czy chcesz kontynuować?" -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "Do you want to retry" msgstr "Czy chcesz spróbować ponownie" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1045 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911 msgid "Do you want to save your manually edited support points?" msgstr "Czy chcesz zapisać ręcznie edytowane punkty podpór?" -#: src/slic3r/GUI/ConfigWizard.cpp:1834 +#: src/slic3r/GUI/ConfigWizard.cpp:2261 msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Czy chcesz ustawić domyślne filamenty dla tych modeli drukarek FFF?" -#: src/slic3r/GUI/ConfigWizard.cpp:1852 +#: src/slic3r/GUI/ConfigWizard.cpp:2279 msgid "Do you want to select default SLA materials for these printer models?" msgstr "Czy chcesz ustawić domyślne materiały SLA dla tych modeli drukarek?" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "does not contain valid gcode." +msgstr "nie zawiera prawidłowego g-code." + +#: src/libslic3r/PrintConfig.cpp:3628 msgid "Don't arrange" msgstr "Nie układaj" @@ -2092,7 +2396,7 @@ msgstr "Nie układaj" msgid "Don't notify about new releases any more" msgstr "Nie powiadamiaj o nowych wersjach" -#: src/libslic3r/PrintConfig.cpp:369 +#: src/libslic3r/PrintConfig.cpp:403 msgid "Don't support bridges" msgstr "Nie używaj podpór pod mostami" @@ -2100,234 +2404,296 @@ msgstr "Nie używaj podpór pod mostami" msgid "Downgrade" msgstr "Deaktualizacja" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1803 msgid "Draft shield" msgstr "Draft shield" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1369 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1216 msgid "Drag" msgstr "Przeciągnij" -#: src/libslic3r/SLAPrintSteps.cpp:44 +#: src/slic3r/GUI/Plater.cpp:1406 +msgid "Drag and drop G-code file" +msgstr "Przeciągnij i upuść plik G-code" + +#: src/libslic3r/SLAPrintSteps.cpp:45 msgid "Drilling holes into model." msgstr "Wiercenie otworów odpływowych w modelu." -#: src/libslic3r/SLAPrintSteps.cpp:199 +#: src/libslic3r/SLAPrintSteps.cpp:201 msgid "Drilling holes into the mesh failed. This is usually caused by broken model. Try to fix it first." msgstr "Niepowodzenie wiercenia otworów w siatce. Zazwyczaj dzieje się tak przez błędy w modelu. Spróbuj najpierw go naprawić." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:337 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:349 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:345 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:357 msgid "Drop to bed" msgstr "Upuść na stół" -#: src/libslic3r/PrintConfig.cpp:3433 +#: src/libslic3r/PrintConfig.cpp:3632 msgid "Duplicate" msgstr "Duplikuj" -#: src/libslic3r/PrintConfig.cpp:3438 +#: src/libslic3r/PrintConfig.cpp:3637 msgid "Duplicate by grid" msgstr "Duplikuj wg siatki" -#: src/slic3r/GUI/PresetHints.cpp:40 +#: src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Duration" +msgstr "Czas trwania" + +#: src/slic3r/GUI/PresetHints.cpp:39 msgid "During the other layers, fan" msgstr "Na pozostałych warstwach, wentylator" -#: src/libslic3r/PrintConfig.cpp:2669 +#: src/libslic3r/PrintConfig.cpp:2833 msgid "Dynamic" msgstr "Dynamicznie" -#: src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1448 msgid "E&xport" msgstr "&Eksport" -#: src/slic3r/GUI/GUI_ObjectList.cpp:347 +#: src/slic3r/GUI/GUI_ObjectList.cpp:394 msgid "edges fixed" msgstr "naprawiono krawędzie" -#: src/slic3r/GUI/DoubleSlider.cpp:1508 +#: src/slic3r/GUI/DoubleSlider.cpp:1700 msgid "Edit color" msgstr "Edytuj kolor" -#: src/slic3r/GUI/DoubleSlider.cpp:960 +#: src/slic3r/GUI/DoubleSlider.cpp:1083 msgid "Edit current color - Right click the colored slider segment" msgstr "Edytuj kolor - kliknij prawym przyciskiem na kolorowy segment suwaka" -#: src/slic3r/GUI/DoubleSlider.cpp:1510 +#: src/slic3r/GUI/DoubleSlider.cpp:1702 msgid "Edit custom G-code" msgstr "Edytuj własny G-code" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3003 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3459 msgid "Edit Height Range" msgstr "Edytuj Zakres Wysokości" -#: src/slic3r/GUI/DoubleSlider.cpp:1509 +#: src/slic3r/GUI/DoubleSlider.cpp:1701 msgid "Edit pause print message" msgstr "Edytuj komunikat wstrzymania wydruku" -#: src/slic3r/GUI/DoubleSlider.cpp:1037 +#: src/slic3r/GUI/PresetComboBoxes.cpp:645 +msgid "Edit physical printer" +msgstr "Edytuj fizyczną drukarkę" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:641 +msgid "Edit preset" +msgstr "Edytuj zestaw ustawień" + +#: src/slic3r/GUI/DoubleSlider.cpp:1162 msgid "Edit tick mark - Ctrl + Left click" msgstr "Edytuj zaznaczenie - Ctrl + Klik lewym przyciskiem" -#: src/slic3r/GUI/DoubleSlider.cpp:1038 +#: src/slic3r/GUI/DoubleSlider.cpp:1163 msgid "Edit tick mark - Right click" msgstr "Edytuj zaznaczenie - kliknij prawym przyciskiem" -#: src/slic3r/GUI/GUI_ObjectList.cpp:282 src/slic3r/GUI/GUI_ObjectList.cpp:394 +#: src/slic3r/GUI/GUI_ObjectList.cpp:300 src/slic3r/GUI/GUI_ObjectList.cpp:441 msgid "Editing" msgstr "Edytowanie" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Ejec&t SD card / Flash drive" msgstr "Wysuń kar&tę SD / pamięć flash" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/NotificationManager.cpp:780 +msgid "Eject drive" +msgstr "Wysuń nośnik" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Eject SD card / Flash drive" msgstr "Wysuń kartę SD / pamięć flash" -#: src/slic3r/GUI/MainFrame.cpp:547 +#: src/slic3r/GUI/MainFrame.cpp:1105 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "Wysuń kartę SD / pamięć flash po wyeksportowaniu na nią G-code." -#: src/slic3r/GUI/Plater.cpp:2202 +#: src/slic3r/GUI/Plater.cpp:2034 #, c-format msgid "Ejecting of device %s(%s) has failed." msgstr "Wysuwanie urządzenia %s(%s) nie powiodło się." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:120 msgid "Elephant foot compensation" msgstr "Kompensacja \"stopy słonia\"" -#: src/libslic3r/PrintConfig.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:2590 msgid "Elephant foot minimum width" msgstr "Minimalna szerokość stopy słonia" -#: src/libslic3r/SLAPrint.cpp:625 +#: src/libslic3r/SLAPrint.cpp:639 msgid "Elevation is too low for object. Use the \"Pad around object\" feature to print the object without elevation." msgstr "Podniesienie zbyt małe dla modelu. Użyj funkcji \"Podkładka wokół modelu\", aby wydrukować model bez podniesienia." -#: src/libslic3r/PrintConfig.cpp:1093 +#: src/libslic3r/PrintConfig.cpp:1186 msgid "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute intervals into the G-code to let the firmware show accurate remaining time. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." msgstr "Umieść M73 P[postęp w procentach] R[pozostały czas w minutach] co 1 minutę w G-code, aby pozwolić firmware na wyświetlanie dokładnego pozostałego czasu. Na ten moment jedynie firmware drukarki Prusa i3 MK3 rozpoznaje komendę M73. Firmware i3 MK3 wspiera również M73 Qxx Sxx dla trybu Stealth." -#: src/libslic3r/GCode.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1217 +msgid "Emit to G-code" +msgstr "Przekaż do G-code" + +#: src/libslic3r/GCode.cpp:622 msgid "Empty layers detected, the output would not be printable." msgstr "Wykryto puste warstwy - plik wynikowy nie będzie możliwy do wydrukowania." -#: src/slic3r/GUI/Tab.cpp:1445 src/libslic3r/PrintConfig.cpp:1355 -#: src/libslic3r/PrintConfig.cpp:2200 +#: src/slic3r/GUI/Tab.cpp:1791 src/libslic3r/PrintConfig.cpp:1463 +#: src/libslic3r/PrintConfig.cpp:2343 msgid "Enable" msgstr "Włącz" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:347 msgid "Enable auto cooling" msgstr "Włącz automatyczne chłodzenie" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:608 msgid "Enable fan if layer print time is below" msgstr "Włącz chłodzenie jeśli czas druku warstwy wynosi poniżej" -#: src/libslic3r/PrintConfig.cpp:2908 +#: src/libslic3r/PrintConfig.cpp:3072 msgid "Enable hollowing" msgstr "Włącz drążenie" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2523 msgid "Enable horizontal mirroring of output images" msgstr "Włącz odbicie poziome dla obrazów wyjściowych" -#: src/libslic3r/PrintConfig.cpp:1867 +#: src/libslic3r/PrintConfig.cpp:1124 +msgid "Enable ironing" +msgstr "Włącz prasowanie" + +#: src/libslic3r/PrintConfig.cpp:1125 +msgid "Enable ironing of the top layers with the hot print head for smooth surface" +msgstr "Włącz prasowanie górnych warstw gorącą dyszą dla uzyskania gładkiej powierzchni" + +#: src/libslic3r/PrintConfig.cpp:2009 msgid "Enable support material generation." msgstr "Włącz generowanie materiału podporowego." -#: src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1010 msgid "Enable this to add comments into the G-Code labeling print moves with what object they belong to, which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." -msgstr "Włącz tę opcję, aby dodawać komentarze do pliku G-code, przypisujące ruchy drukujące do konkretnych modeli, co pozwala współpracować z wtyczką CancelObject do OctoPrint. To ustawienie NIE jest kompatybilne z trybem Pojedynczym Multi Material i z ustawieniami Czyszczenia na wypełnieniu / modelu." +msgstr "Włącz tę opcję, aby dodawać komentarze do pliku G-code, przypisujące ruchy drukujące do konkretnych modeli, co pozwala współpracować z wtyczką CancelObject w OctoPrint. To ustawienie NIE jest kompatybilne z trybem Pojedynczym Multi Material i z ustawieniami Czyszczenia na wypełnieniu / modelu." -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:973 msgid "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down." -msgstr "Włącz tą opcję aby dodawać komentarz opsiujący do każdej liniki pliku G-code. Przy druku z karty SD dodatkowy rozmiar pliku może sprawiać, że firmware będzie reagować wolniej." +msgstr "Włącz tą opcję, aby dodawać komentarz opisujący do każdej linijki pliku G-code. Przy druku z karty SD dodatkowy rozmiar pliku może sprawiać, że firmware będzie reagować wolniej." -#: src/libslic3r/PrintConfig.cpp:2186 +#: src/libslic3r/PrintConfig.cpp:2329 msgid "Enable variable layer height feature" msgstr "Zmienna wysokość warstwy" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2530 msgid "Enable vertical mirroring of output images" msgstr "Włącz odbicie pionowe dla obrazów wyjściowych" -#: src/slic3r/GUI/Tab.cpp:1534 src/slic3r/GUI/Tab.cpp:1982 -#: src/libslic3r/PrintConfig.cpp:385 src/libslic3r/PrintConfig.cpp:395 +#: src/slic3r/GUI/Tab.cpp:1880 src/slic3r/GUI/Tab.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:429 msgid "End G-code" msgstr "G-code końcowy" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:239 +msgid "Enforce" +msgstr "Wymuś" + +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:30 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:381 +msgid "Enforce seam" +msgstr "Wymuś szew" + +#: src/libslic3r/PrintConfig.cpp:2066 msgid "Enforce support for the first" msgstr "Wymuś podpory dla pierwszych" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "Enforce support for the first n layers" msgstr "Wymuś podpory dla pierwszych n warstw" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:47 +msgid "Enforce supports" +msgstr "Wymuś podpory" + #: src/slic3r/GUI/PrintHostDialogs.cpp:198 #: src/slic3r/GUI/PrintHostDialogs.cpp:229 msgid "Enqueued" msgstr "Zakolejkowano" -#: src/libslic3r/PrintConfig.cpp:407 +#: src/libslic3r/PrintConfig.cpp:441 msgid "Ensure vertical shell thickness" msgstr "Zagwarantuj odpowiednią grubość ścianki" -#: src/slic3r/GUI/DoubleSlider.cpp:1618 +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4410 +#: src/slic3r/GUI/Search.cpp:433 +msgid "Enter a search term" +msgstr "Wpisz wyszukiwaną frazę" + +#: src/slic3r/GUI/DoubleSlider.cpp:1814 msgid "Enter custom G-code used on current layer" msgstr "Wprowadź własny G-code do wykonania na tej warstwie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Enter new name" msgstr "Wprowadź nową nazwę" -#: src/slic3r/GUI/DoubleSlider.cpp:1634 +#: src/slic3r/GUI/DoubleSlider.cpp:1830 msgid "Enter short message shown on Printer display when a print is paused" msgstr "Wpisz krótką wiadomość wyświetlaną na ekranie drukarki, gdy druk jest wstrzymany" -#: src/slic3r/GUI/ConfigWizard.cpp:1047 +#: src/slic3r/GUI/ConfigWizard.cpp:1413 msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." msgstr "Wprowadź temperaturę potrzebną do dobrego przylegania filamentu do powierzchni podgrzewanego stołu." -#: src/slic3r/GUI/ConfigWizard.cpp:979 +#: src/slic3r/GUI/ConfigWizard.cpp:1345 msgid "Enter the diameter of your filament." msgstr "Wprowadź średnicę filamentu." -#: src/slic3r/GUI/ConfigWizard.cpp:966 +#: src/slic3r/GUI/ConfigWizard.cpp:1332 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Wprowadź średnicę dyszy hotendu." -#: src/slic3r/GUI/DoubleSlider.cpp:1650 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 src/slic3r/GUI/DoubleSlider.cpp:1855 msgid "Enter the height you want to jump to" msgstr "Wprowadź wysokość, do której chcesz przejść" -#: src/slic3r/GUI/Plater.cpp:4751 +#: src/slic3r/GUI/DoubleSlider.cpp:1851 +msgid "Enter the move you want to jump to" +msgstr "Wpisz ruch, do którego chcesz przejść" + +#: src/slic3r/GUI/Plater.cpp:4855 msgid "Enter the number of copies:" msgstr "Wpisz liczbę kopii:" -#: src/slic3r/GUI/ConfigWizard.cpp:1033 +#: src/slic3r/GUI/ConfigWizard.cpp:1399 msgid "Enter the temperature needed for extruding your filament." msgstr "Wprowadź temperaturę potrzebną do ekstruzji filamentu." -#: src/libslic3r/PrintConfig.cpp:761 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Enter your filament cost per kg here. This is only for statistical information." msgstr "Wprowadź koszt filamentu za kilogram. Służy tylko statystykom." -#: src/libslic3r/PrintConfig.cpp:718 +#: src/libslic3r/PrintConfig.cpp:754 msgid "Enter your filament density here. This is only for statistical information. A decent way is to weigh a known length of filament and compute the ratio of the length to volume. Better is to calculate the volume directly through displacement." msgstr "Wprowadź gęstość filamentu. Służy tylko statystykom. Dobrą metodą jest zważenie filamentu o zmierzonej długości i przeliczenie stosunku wagi do objętości." -#: src/libslic3r/PrintConfig.cpp:710 +#: src/libslic3r/PrintConfig.cpp:746 msgid "Enter your filament diameter here. Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." msgstr "Wprowadź średnicę filamentu. Wymagana jest precyzja, więc użyj suwmiarki i zmierz filament w kilku miejscach, potem oblicz średnią." -#: src/slic3r/GUI/MainFrame.cpp:422 src/slic3r/GUI/MainFrame.cpp:785 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:39 +msgid "Entering Paint-on supports" +msgstr "Otwieram malowanie podpór" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:40 +msgid "Entering Seam painting" +msgstr "Otwieram malowanie szwu" + +#: src/slic3r/GUI/MainFrame.cpp:1003 src/slic3r/GUI/MainFrame.cpp:1486 #: src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Error" msgstr "Błąd" @@ -2337,25 +2703,33 @@ msgstr "Błąd" msgid "Error accessing port at %s: %s" msgstr "Brak dostępu do portu %s: %s" -#: src/slic3r/GUI/Plater.cpp:3433 +#: src/slic3r/GUI/Plater.cpp:3238 msgid "Error during reload" msgstr "Błąd podczas przeładowywania" -#: src/slic3r/GUI/Plater.cpp:5043 +#: src/slic3r/GUI/Plater.cpp:5172 #, c-format msgid "Error exporting 3MF file %s" msgstr "Błąd eksportowania pliku 3MF %s" -#: src/slic3r/GUI/Plater.cpp:5005 +#: src/slic3r/GUI/Plater.cpp:5138 #, c-format msgid "Error exporting AMF file %s" msgstr "Błąd eksportu pliku AMF %s" -#: src/slic3r/GUI/PrintHostDialogs.cpp:154 +#: src/slic3r/GUI/OpenGLManager.cpp:276 +msgid "Error loading shaders" +msgstr "Błąd ładowania modułów cieniujących" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:152 msgid "Error Message" msgstr "Komunikat o błędzie" -#: src/slic3r/GUI/AppConfig.cpp:114 +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Error parsing PrusaGCodeViewer config file, it is probably corrupted. Try to manually delete the file to recover from the error." +msgstr "Błąd przetwarzania pliku konfiguracyjnego PrusaGCodeViewer. Prawdopodobnie jest uszkodzony. Spróbuj ręcznie usunąć plik, aby pozbyć się błędu." + +#: src/slic3r/GUI/GUI_App.cpp:655 src/slic3r/GUI/GUI_App.cpp:670 msgid "Error parsing PrusaSlicer config file, it is probably corrupted. Try to manually delete the file to recover from the error. Your user profiles will not be affected." msgstr "Błąd przetwarzania pliku konfiguracyjnego PrusaSlicer. Prawdopodobnie jest uszkodzony. Spróbuj ręcznie usunąć plik, aby pozbyć się błędu. Nie wpłynie to na Twoje profile." @@ -2363,45 +2737,60 @@ msgstr "Błąd przetwarzania pliku konfiguracyjnego PrusaSlicer. Prawdopodobnie msgid "Error uploading to print host:" msgstr "Błąd wysyłania do serwera druku:" -#: src/libslic3r/Zipper.cpp:102 +#: src/slic3r/GUI/Plater.cpp:4752 +msgid "Error while loading .gcode file" +msgstr "Błąd wczytywania pliku .gcode" + +#: src/libslic3r/Zipper.cpp:27 msgid "Error with zip archive" msgstr "Błąd archiwum .zip" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1918 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2077 msgid "Error!" msgstr "Błąd!" -#: src/slic3r/GUI/BedShapeDialog.cpp:505 +#: src/slic3r/GUI/BedShapeDialog.cpp:581 msgid "Error! Invalid model" msgstr "Błąd! Nieprawidłowy model" +#: src/slic3r/GUI/NotificationManager.cpp:667 +#: src/slic3r/GUI/NotificationManager.cpp:683 +#: src/slic3r/GUI/NotificationManager.cpp:694 +msgid "ERROR:" +msgstr "BŁĄD:" + #: src/slic3r/GUI/FirmwareDialog.cpp:647 #, c-format msgid "Error: %s" msgstr "Błąd: %s" -#: src/slic3r/GUI/Job.hpp:123 +#: src/slic3r/GUI/Jobs/Job.cpp:74 msgid "ERROR: not enough resources to execute a new job." msgstr "BŁĄD: brak zasobów do wykonania nowego zadania." -#: src/slic3r/GUI/Plater.cpp:240 src/slic3r/GUI/Plater.cpp:1216 -#: src/slic3r/GUI/Plater.cpp:1258 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 src/slic3r/GUI/GCodeViewer.cpp:2557 +#: src/slic3r/GUI/Plater.cpp:246 src/slic3r/GUI/Plater.cpp:1125 +#: src/slic3r/GUI/Plater.cpp:1175 src/slic3r/GUI/Plater.cpp:1196 msgid "Estimated printing time" msgstr "Szacowany czas druku" -#: src/slic3r/GUI/Plater.cpp:502 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Event" +msgstr "Wydarzenie" + +#: src/slic3r/GUI/Plater.cpp:368 msgid "Everywhere" msgstr "Wszędzie" -#: src/slic3r/GUI/PresetHints.cpp:51 +#: src/slic3r/GUI/PresetHints.cpp:50 msgid "except for the first %1% layers." msgstr "za wyjątkiem pierwszych %1% warstw." -#: src/slic3r/GUI/PresetHints.cpp:53 +#: src/slic3r/GUI/PresetHints.cpp:52 msgid "except for the first layer." msgstr "za wyjątkiem pierwszej warstwy." -#: src/libslic3r/Print.cpp:1377 +#: src/libslic3r/Print.cpp:1403 msgid "Excessive %1%=%2% mm to be printable with a nozzle diameter %3% mm" msgstr "Wartość %1%=%2% mm jest zbyt duża, żeby mogła być wydrukowana z dyszą o średnicy %3% mm" @@ -2410,116 +2799,129 @@ msgstr "Wartość %1%=%2% mm jest zbyt duża, żeby mogła być wydrukowana z dy msgid "Exit %s" msgstr "Wyjście %s" -#: src/libslic3r/PrintConfig.cpp:371 +#: src/slic3r/GUI/Plater.cpp:2143 +msgid "Expand sidebar" +msgstr "Rozwiń pasek narzędzi" + +#: src/libslic3r/PrintConfig.cpp:405 msgid "Experimental option for preventing support material from being generated under bridged areas." msgstr "Funkcja eksperymentalna mająca zapobiegać tworzeniu podpór pod mostami." -#: src/libslic3r/PrintConfig.cpp:1375 +#: src/libslic3r/PrintConfig.cpp:1483 msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." msgstr "Opcja eksperymentalna dostosowująca przepływ przy zwisach (zostanie zastosowany przepływ taki jak dla mostów), zastosuje również prędkość i chłodzenie takie jak dla mostów." -#: src/slic3r/GUI/GUI_App.cpp:815 src/slic3r/GUI/wxExtensions.cpp:755 +#: src/slic3r/GUI/GUI_App.cpp:1507 src/slic3r/GUI/wxExtensions.cpp:676 msgid "Expert" msgstr "Ekspert" -#: src/slic3r/GUI/ConfigWizard.cpp:822 +#: src/slic3r/GUI/ConfigWizard.cpp:1181 msgid "Expert mode" msgstr "Tryb Eksperta" -#: src/slic3r/GUI/GUI_App.cpp:815 +#: src/slic3r/GUI/GUI_App.cpp:1507 msgid "Expert View Mode" msgstr "Tryb Widoku Eksperta" -#: src/slic3r/GUI/Plater.cpp:5521 +#: src/slic3r/GUI/Plater.cpp:5706 msgid "Export" msgstr "Eksport" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export &Config" msgstr "Eksport Konfigura&cji" -#: src/slic3r/GUI/MainFrame.cpp:477 src/slic3r/GUI/MainFrame.cpp:749 +#: src/slic3r/GUI/MainFrame.cpp:1068 src/slic3r/GUI/MainFrame.cpp:1448 msgid "Export &G-code" msgstr "Eksport &G-code" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export &toolpaths as OBJ" msgstr "Ekspor&t ścieżek narzędzi jako OBJ" -#: src/libslic3r/PrintConfig.cpp:3338 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Export 3MF" msgstr "Eksport 3MF" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export all presets including physical printers to file" +msgstr "Eksport do pliku wszystkich zestawów ustawień wraz z fizycznymi drukarkami" + +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export all presets to file" msgstr "Eksport wszystkich zestawów ustawień do pliku" -#: src/libslic3r/PrintConfig.cpp:3343 +#: src/libslic3r/PrintConfig.cpp:3536 msgid "Export AMF" msgstr "Eksport AMF" -#: src/slic3r/GUI/Plater.cpp:2598 +#: src/slic3r/GUI/Plater.cpp:2560 msgid "Export AMF file:" msgstr "Eksport pliku AMF:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1657 src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1786 src/slic3r/GUI/Plater.cpp:3884 msgid "Export as STL" msgstr "Eksport jako STL" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 msgid "Export config" msgstr "Eksport konfiguracji" -#: src/slic3r/GUI/MainFrame.cpp:503 +#: src/slic3r/GUI/MainFrame.cpp:1097 msgid "Export Config &Bundle" msgstr "Eks&port Paczki Konfiguracyjnej" -#: src/slic3r/GUI/MainFrame.cpp:500 +#: src/slic3r/GUI/MainFrame.cpp:1100 +msgid "Export Config Bundle With Physical Printers" +msgstr "Eksport paczki konfiguracyjnej z drukarkami fizycznymi" + +#: src/slic3r/GUI/MainFrame.cpp:1094 msgid "Export current configuration to file" msgstr "Eksport obecnej konfiguracji do pliku" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export current plate as AMF" msgstr "Eksport zawartości stołu jako AMF" -#: src/slic3r/GUI/MainFrame.cpp:477 +#: src/slic3r/GUI/MainFrame.cpp:1068 msgid "Export current plate as G-code" msgstr "Eksport zawartości stołu jako G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Eksport zawartości stołu jako G-gode na kartę SD / pamięć flash" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export current plate as STL" msgstr "Eksport zawartości stołu jako STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export current plate as STL including supports" msgstr "Eksport zawartości stołu jako STL wraz z podporami" -#: src/slic3r/GUI/Plater.cpp:3664 -msgid "Export failed" -msgstr "Niepowodzenie eksportu" - -#: src/slic3r/GUI/ConfigWizard.cpp:801 +#: src/slic3r/GUI/ConfigWizard.cpp:1160 msgid "Export full pathnames of models and parts sources into 3mf and amf files" msgstr "Eksport pełnych ścieżek źródłowych modeli i części do plików 3MF i AMF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 src/slic3r/GUI/Plater.cpp:891 -#: src/slic3r/GUI/Plater.cpp:5521 src/libslic3r/PrintConfig.cpp:3353 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 src/slic3r/GUI/Plater.cpp:766 +#: src/slic3r/GUI/Plater.cpp:5706 src/libslic3r/PrintConfig.cpp:3546 msgid "Export G-code" msgstr "Eksport G-code" -#: src/slic3r/GUI/MainFrame.cpp:521 +#: src/slic3r/GUI/MainFrame.cpp:1076 msgid "Export G-code to SD card / Flash drive" msgstr "Eksport G-gode na kartę SD / pamięć flash" -#: src/libslic3r/PrintConfig.cpp:3320 +#: src/slic3r/GUI/NotificationManager.cpp:631 +#: src/slic3r/GUI/NotificationManager.cpp:748 +msgid "Export G-Code." +msgstr "Eksport G-code." + +#: src/libslic3r/PrintConfig.cpp:3513 msgid "Export OBJ" msgstr "Eksport OBJ" -#: src/slic3r/GUI/Plater.cpp:2610 +#: src/slic3r/GUI/Plater.cpp:2572 msgid "Export OBJ file:" msgstr "Eksport pliku OBJ:" @@ -2527,212 +2929,215 @@ msgstr "Eksport pliku OBJ:" msgid "Export of a temporary 3mf file failed" msgstr "Niepowodzenie eksportu tymczasowego pliku 3MF" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:1086 msgid "Export plate as &AMF" msgstr "Eksport zawartości stołu jako &AMF" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:1080 msgid "Export plate as &STL" msgstr "Eksport zawartości stołu jako &STL" -#: src/slic3r/GUI/MainFrame.cpp:489 +#: src/slic3r/GUI/MainFrame.cpp:1083 msgid "Export plate as STL &including supports" msgstr "Eksport zawartośc&i stołu z podporami do STL" -#: src/libslic3r/PrintConfig.cpp:3332 +#: src/libslic3r/PrintConfig.cpp:3525 msgid "Export SLA" msgstr "Eksport SLA" -#: src/slic3r/GUI/Preferences.cpp:72 +#: src/slic3r/GUI/Preferences.cpp:89 msgid "Export sources full pathnames to 3mf and amf" msgstr "Eksport pełnych ścieżek do 3MF i AMF" -#: src/libslic3r/PrintConfig.cpp:3348 +#: src/libslic3r/PrintConfig.cpp:3541 msgid "Export STL" msgstr "Eksport STL" -#: src/slic3r/GUI/Plater.cpp:2591 +#: src/slic3r/GUI/Plater.cpp:2553 msgid "Export STL file:" msgstr "Eksport pliku STL:" -#: src/libslic3r/PrintConfig.cpp:3339 +#: src/libslic3r/PrintConfig.cpp:3532 msgid "Export the model(s) as 3MF." msgstr "Eksport model(i) jako 3MF." -#: src/libslic3r/PrintConfig.cpp:3344 +#: src/libslic3r/PrintConfig.cpp:3537 msgid "Export the model(s) as AMF." msgstr "Eksport model(i) jako AMF." -#: src/libslic3r/PrintConfig.cpp:3321 +#: src/libslic3r/PrintConfig.cpp:3514 msgid "Export the model(s) as OBJ." msgstr "Eksport model(i) jako OBJ." -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3542 msgid "Export the model(s) as STL." msgstr "Eksport modeli jako STL." -#: src/slic3r/GUI/Plater.cpp:3966 +#: src/slic3r/GUI/Plater.cpp:3884 msgid "Export the selected object as STL file" msgstr "Eksport wybranego modelu jako plik STL" -#: src/slic3r/GUI/Plater.cpp:880 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 src/slic3r/GUI/Plater.cpp:755 msgid "Export to SD card / Flash drive" msgstr "Eksport na kartę SD / pamięć flash" -#: src/slic3r/GUI/MainFrame.cpp:496 +#: src/slic3r/GUI/MainFrame.cpp:1090 src/slic3r/GUI/MainFrame.cpp:1395 msgid "Export toolpaths as OBJ" msgstr "Eksport ścieżek narzędzi jako OBJ" -#: src/libslic3r/Print.cpp:1638 +#: src/slic3r/GUI/NotificationManager.hpp:317 +msgid "Exporting finished." +msgstr "Eksport zakończony." + +#: src/libslic3r/Print.cpp:1676 msgid "Exporting G-code" msgstr "Eksportowanie G-code" #: src/slic3r/Utils/FixModelByWin10.cpp:341 -msgid "Exporting model..." -msgstr "Eksportowanie modelu..." +msgid "Exporting model" +msgstr "Eksportowanie modelu" #: src/slic3r/Utils/FixModelByWin10.cpp:219 #: src/slic3r/Utils/FixModelByWin10.cpp:359 msgid "Exporting source model" msgstr "Eksport modelu źródłowego" -#: src/libslic3r/SLAPrint.cpp:646 +#: src/libslic3r/SLAPrint.cpp:660 msgid "Exposition time is out of printer profile bounds." msgstr "Czas naświetlania jest poza zakresem profilu drukarki." -#: src/slic3r/GUI/Tab.cpp:2117 src/slic3r/GUI/Tab.cpp:3515 +#: src/slic3r/GUI/Tab.cpp:2287 src/slic3r/GUI/Tab.cpp:3931 msgid "Exposure" msgstr "Naświetlanie" -#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2684 src/libslic3r/PrintConfig.cpp:2685 msgid "Exposure time" msgstr "Czas naświetlania" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/libslic3r/ExtrusionEntity.cpp:311 +#: src/slic3r/GUI/GUI_Preview.cpp:302 src/libslic3r/ExtrusionEntity.cpp:315 +#: src/libslic3r/ExtrusionEntity.cpp:338 msgid "External perimeter" msgstr "Obrys zewnętrzny" -#: src/slic3r/GUI/PresetHints.cpp:156 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "obrysów zewnętrznych" -#: src/libslic3r/PrintConfig.cpp:446 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:482 src/libslic3r/PrintConfig.cpp:493 msgid "External perimeters" msgstr "Obrysy zewnętrzne" -#: src/libslic3r/PrintConfig.cpp:469 +#: src/libslic3r/PrintConfig.cpp:505 msgid "External perimeters first" msgstr "Najpierw obrysy zewnętrzne" -#: src/libslic3r/PrintConfig.cpp:1588 src/libslic3r/PrintConfig.cpp:1596 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/PrintConfig.cpp:1704 msgid "Extra length on restart" msgstr "Dodatkowa ilość dla powrotu" -#: src/libslic3r/PrintConfig.cpp:1390 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Extra loading distance" msgstr "Dodatkowa długość ładowania" -#: src/libslic3r/PrintConfig.cpp:477 +#: src/libslic3r/PrintConfig.cpp:513 msgid "Extra perimeters if needed" msgstr "Dodatkowe obrysy jeśli potrzebne" -#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1434 -#: src/slic3r/GUI/wxExtensions.cpp:598 src/libslic3r/PrintConfig.cpp:487 +#: src/slic3r/GUI/GCodeViewer.cpp:2277 src/slic3r/GUI/GCodeViewer.cpp:2313 +#: src/slic3r/GUI/GCodeViewer.cpp:2318 src/slic3r/GUI/GUI_ObjectList.cpp:296 +#: src/slic3r/GUI/Tab.cpp:1780 src/slic3r/GUI/wxExtensions.cpp:515 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Extruder" msgstr "Ekstruder" -#: src/slic3r/GUI/DoubleSlider.cpp:1134 src/slic3r/GUI/DoubleSlider.cpp:1170 -#: src/slic3r/GUI/GLCanvas3D.cpp:977 src/slic3r/GUI/GUI_ObjectList.cpp:1704 -#: src/slic3r/GUI/Tab.cpp:2320 src/libslic3r/GCode/PreviewData.cpp:445 +#: src/slic3r/GUI/DoubleSlider.cpp:1263 src/slic3r/GUI/DoubleSlider.cpp:1297 +#: src/slic3r/GUI/GLCanvas3D.cpp:983 src/slic3r/GUI/GUI_ObjectList.cpp:1832 +#: src/slic3r/GUI/Tab.cpp:2489 src/libslic3r/GCode/PreviewData.cpp:450 #, c-format msgid "Extruder %d" msgstr "Ekstruder %d" -#: src/slic3r/GUI/DoubleSlider.cpp:1011 +#: src/slic3r/GUI/DoubleSlider.cpp:1137 msgid "Extruder (tool) is changed to Extruder \"%1%\"" msgstr "Ekstruder został zmieniony na ekstruder \"%1%\"" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 -msgid "Extruder and Bed Temperatures" -msgstr "Temperatury ekstrudera i stołu" - #: src/slic3r/GUI/WipeTowerDialog.cpp:255 msgid "Extruder changed to" msgstr "Ekstruder zmieniony na" -#: src/slic3r/GUI/Tab.cpp:1233 +#: src/slic3r/GUI/Tab.cpp:1563 msgid "Extruder clearance (mm)" msgstr "Odstęp od ekstrudera (mm)" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:558 msgid "Extruder Color" msgstr "Kolor ekstrudera" -#: src/libslic3r/PrintConfig.cpp:529 +#: src/libslic3r/PrintConfig.cpp:565 msgid "Extruder offset" msgstr "Margines ekstrudera" -#: src/libslic3r/PrintConfig.cpp:911 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Temperatura ekstrudera dla pierwszej warstwy. Jeśli chcesz ręcznie kontrolować temperaturę podczas druku to ustaw zero aby wyłączyć komendy kontrolujące temperaturę w pliku wyjściowym." - -#: src/libslic3r/PrintConfig.cpp:2065 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Temperatura ekstrudera dla warstw powyżej pierwszej. Ustaw zero aby wyłączyć komendy kontrolujące temperaturę w pliku wyjściowym." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:99 src/slic3r/GUI/GUI_ObjectList.cpp:617 -#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:1838 -#: src/libslic3r/PrintConfig.cpp:488 src/libslic3r/PrintConfig.cpp:1002 -#: src/libslic3r/PrintConfig.cpp:1409 src/libslic3r/PrintConfig.cpp:1737 -#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1965 +#: src/slic3r/GUI/GUI_ObjectList.cpp:97 src/slic3r/GUI/GUI_ObjectList.cpp:656 +#: src/slic3r/GUI/Tab.cpp:1510 src/slic3r/GUI/Tab.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:524 src/libslic3r/PrintConfig.cpp:1046 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:2080 src/libslic3r/PrintConfig.cpp:2107 msgid "Extruders" msgstr "Ekstrudery" -#: src/libslic3r/PrintConfig.cpp:539 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1061 +msgid "Extruders count" +msgstr "Liczba ekstruderów" + +#: src/slic3r/GUI/GCodeViewer.cpp:2493 +msgid "Extrusion" +msgstr "Ekstruzja" + +#: src/libslic3r/PrintConfig.cpp:575 msgid "Extrusion axis" msgstr "Oś ekstruzji" -#: src/libslic3r/PrintConfig.cpp:545 +#: src/libslic3r/PrintConfig.cpp:581 msgid "Extrusion multiplier" msgstr "Współczynnik ekstruzji" -#: src/slic3r/GUI/ConfigWizard.cpp:1037 +#: src/slic3r/GUI/ConfigWizard.cpp:1403 msgid "Extrusion Temperature:" msgstr "Temperatura ekstrudera:" -#: src/slic3r/GUI/Tab.cpp:1205 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Extrusion width" msgstr "Szerokość ekstruzji" -#: src/slic3r/GUI/GUI_ObjectList.cpp:100 src/slic3r/GUI/GUI_ObjectList.cpp:618 -#: src/libslic3r/PrintConfig.cpp:447 src/libslic3r/PrintConfig.cpp:555 -#: src/libslic3r/PrintConfig.cpp:877 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1418 src/libslic3r/PrintConfig.cpp:1757 -#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:2106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:657 +#: src/libslic3r/PrintConfig.cpp:483 src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1526 src/libslic3r/PrintConfig.cpp:1872 +#: src/libslic3r/PrintConfig.cpp:2089 src/libslic3r/PrintConfig.cpp:2249 msgid "Extrusion Width" msgstr "Szerokość Ekstruzji" -#: src/slic3r/GUI/Plater.cpp:162 +#: src/slic3r/GUI/Plater.cpp:168 msgid "Facets" msgstr "Powierzchnie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:349 +#: src/slic3r/GUI/GUI_ObjectList.cpp:396 msgid "facets added" msgstr "dodano powierzchnie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:348 +#: src/slic3r/GUI/GUI_ObjectList.cpp:395 msgid "facets removed" msgstr "usunięto powierzchnie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:350 +#: src/slic3r/GUI/GUI_ObjectList.cpp:397 msgid "facets reversed" msgstr "odwrócono powierzchnie" -#: src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2660 msgid "Faded layers" msgstr "Warstwy przejściowe" -#: src/libslic3r/Zipper.cpp:44 +#: src/libslic3r/miniz_extension.cpp:103 msgid "failed finding central directory" msgstr "nie odnaleziono katalogu centralnego" @@ -2740,105 +3145,115 @@ msgstr "nie odnaleziono katalogu centralnego" msgid "Failed loading the input model." msgstr "Niepowodzenie ładowania modelu wejściowego." -#: src/libslic3r/PrintBase.cpp:71 +#: src/libslic3r/PrintBase.cpp:72 msgid "Failed processing of the output_filename_format template." msgstr "Błąd przetwarzania wzoru output_filename_format (format nazwy pliku wyjściowego)." -#: src/slic3r/GUI/PresetHints.cpp:42 +#: src/slic3r/GUI/PresetHints.cpp:41 msgid "Fan" msgstr "Wentylator" -#: src/slic3r/GUI/Tab.cpp:1456 +#: src/slic3r/GUI/Tab.cpp:1802 msgid "Fan settings" msgstr "Ustawienia wentylatora" -#: src/slic3r/GUI/GUI_Preview.cpp:225 src/slic3r/GUI/Tab.cpp:1457 +#: src/slic3r/GUI/GUI_Preview.cpp:279 src/slic3r/GUI/Tab.cpp:1803 msgid "Fan speed" msgstr "Prędkość wentylatora" -#: src/libslic3r/GCode/PreviewData.cpp:353 +#: src/slic3r/GUI/GCodeViewer.cpp:2239 src/libslic3r/GCode/PreviewData.cpp:358 msgid "Fan Speed (%)" msgstr "Prędkość wentylatora (%)" -#: src/libslic3r/PrintConfig.cpp:2405 +#: src/libslic3r/PrintConfig.cpp:2548 msgid "Fast" msgstr "Szybkie" -#: src/libslic3r/PrintConfig.cpp:2406 +#: src/libslic3r/PrintConfig.cpp:2549 msgid "Fast tilt" msgstr "Szybkie przechylanie" -#: src/slic3r/GUI/GUI_App.cpp:141 +#: src/slic3r/GUI/GUI_App.cpp:531 msgid "Fatal error" msgstr "Błąd krytyczny" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/GUI_Preview.cpp:575 -#: src/libslic3r/GCode/PreviewData.cpp:345 +#: src/slic3r/GUI/GUI_Init.cpp:88 +msgid "Fatal error, exception catched: %1%" +msgstr "Błąd krytyczny, wyjątek wychwycony: %1%" + +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 +#: src/slic3r/GUI/GUI_Preview.cpp:275 src/slic3r/GUI/GUI_Preview.cpp:787 +#: src/libslic3r/GCode/PreviewData.cpp:350 msgid "Feature type" msgstr "Rodzaj funkcji" -#: src/slic3r/GUI/GUI_Preview.cpp:234 src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_Preview.cpp:293 src/slic3r/GUI/GUI_Preview.cpp:295 +#: src/slic3r/GUI/GUI_Preview.cpp:316 msgid "Feature types" msgstr "Rodzaje funkcji" -#: src/slic3r/GUI/ConfigWizard.cpp:1525 +#: src/slic3r/GUI/ConfigWizard.cpp:1926 msgid "FFF Technology Printers" msgstr "Drukarki FFF" -#: src/slic3r/GUI/Plater.cpp:816 src/slic3r/GUI/Tab.cpp:1425 -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1771 msgid "Filament" msgstr "Filament" -#: src/slic3r/GUI/Preset.cpp:1522 +#: src/libslic3r/Preset.cpp:1301 msgid "filament" msgstr "filament" -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Filament and Nozzle Diameters" msgstr "Średnice filamentu i dyszy" -#: src/slic3r/GUI/ConfigWizard.cpp:983 +#: src/slic3r/GUI/ConfigWizard.cpp:1349 msgid "Filament Diameter:" msgstr "Średnica Filamentu:" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:687 msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." msgstr "Filament jest chłodzony przez ruch w tę i z powrotem wewnątrz rurek chłodzących. Określ ilość tych ruchów." -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:722 msgid "Filament load time" msgstr "Czas ładowania filamentu" -#: src/libslic3r/PrintConfig.cpp:588 +#: src/libslic3r/PrintConfig.cpp:624 msgid "Filament notes" msgstr "Notatki do filamentu" -#: src/slic3r/GUI/Tab.cpp:1323 src/slic3r/GUI/Tab.cpp:1378 +#: src/slic3r/GUI/Tab.cpp:1669 msgid "Filament Overrides" msgstr "Nadpisywane Ustawienia" -#: src/libslic3r/PrintConfig.cpp:1381 +#: src/libslic3r/PrintConfig.cpp:1489 msgid "Filament parking position" msgstr "Pozycja zatrzymania filamentu" -#: src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filament Profiles Selection" msgstr "Wybór profili filamentu" -#: src/slic3r/GUI/Tab.cpp:1471 +#: src/slic3r/GUI/Tab.cpp:1817 msgid "Filament properties" msgstr "Właściwości filamentu" -#: src/slic3r/GUI/Tab.hpp:355 +#: src/slic3r/GUI/Tab.hpp:409 msgid "Filament Settings" msgstr "Ustawienia Filamentu" -#: src/libslic3r/PrintConfig.cpp:726 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Filament Settings Tab" +msgstr "Ustawienia filamentu" + +#: src/libslic3r/PrintConfig.cpp:762 msgid "Filament type" msgstr "Typ filamentu" -#: src/libslic3r/PrintConfig.cpp:701 +#: src/libslic3r/PrintConfig.cpp:737 msgid "Filament unload time" msgstr "Czas rozładowania filamentu" @@ -2846,75 +3261,79 @@ msgstr "Czas rozładowania filamentu" msgid "filaments" msgstr "filamenty" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2013 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2524 msgid "Filaments" msgstr "Filamenty" -#: src/libslic3r/Zipper.cpp:72 +#: src/slic3r/GUI/ConfigWizard.cpp:691 +msgid "Filaments marked with <b>*</b> are <b>not</b> compatible with some installed printers." +msgstr "Filamenty oznaczone <b>*</b> <b>nie są</b> kompatybilne z niektórymi z zainstalowanych drukarek." + +#: src/libslic3r/miniz_extension.cpp:131 msgid "file close failed" msgstr "niepowodzenia zamykania pliku" -#: src/libslic3r/Zipper.cpp:66 +#: src/libslic3r/miniz_extension.cpp:125 msgid "file create failed" msgstr "niepowodzenie tworzenia pliku" -#: src/slic3r/GUI/MainFrame.cpp:791 +#: src/slic3r/GUI/MainFrame.cpp:1492 msgid "File Not Found" msgstr "Nie znaleziono pliku" -#: src/libslic3r/Zipper.cpp:86 +#: src/libslic3r/miniz_extension.cpp:145 msgid "file not found" msgstr "nie znaleziono pliku" -#: src/libslic3r/Zipper.cpp:64 +#: src/libslic3r/miniz_extension.cpp:123 msgid "file open failed" msgstr "niepowodzenie otwierania pliku" -#: src/libslic3r/Zipper.cpp:70 +#: src/libslic3r/miniz_extension.cpp:129 msgid "file read failed" msgstr "niepowodzenie odczytu pliku" -#: src/libslic3r/Zipper.cpp:74 +#: src/libslic3r/miniz_extension.cpp:133 msgid "file seek failed" msgstr "niepowodzenie szukania pliku" -#: src/libslic3r/Zipper.cpp:76 +#: src/libslic3r/miniz_extension.cpp:135 msgid "file stat failed" msgstr "niepowodzenie odczytu statystyk pliku" -#: src/libslic3r/Zipper.cpp:36 +#: src/libslic3r/miniz_extension.cpp:95 msgid "file too large" msgstr "plik jest zbyt duży" -#: src/libslic3r/Zipper.cpp:68 +#: src/libslic3r/miniz_extension.cpp:127 msgid "file write failed" msgstr "niepowodzenie zapisywania do pliku" -#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 msgid "Filename" msgstr "Nazwa pliku" -#: src/libslic3r/PrintConfig.cpp:775 +#: src/libslic3r/PrintConfig.cpp:811 msgid "Fill angle" msgstr "Kąt wypełnienia" -#: src/libslic3r/PrintConfig.cpp:789 +#: src/libslic3r/PrintConfig.cpp:825 msgid "Fill density" msgstr "Gęstość wypełnienia" -#: src/libslic3r/PrintConfig.cpp:826 +#: src/libslic3r/PrintConfig.cpp:862 msgid "Fill pattern" msgstr "Wzór wypełnienia" -#: src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:473 msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." msgstr "Wzór wypełnienia dolnej warstwy. Ma wpływ jedynie na zewnętrzną widoczną warstwę, nie ma wpływu na przylegające do nich wewnętrzne, zwarte warstwy." -#: src/libslic3r/PrintConfig.cpp:828 +#: src/libslic3r/PrintConfig.cpp:864 msgid "Fill pattern for general low-density infill." msgstr "Wzór dla ogólnego wypełnienia o niskiej gęstości." -#: src/libslic3r/PrintConfig.cpp:417 +#: src/libslic3r/PrintConfig.cpp:451 msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." msgstr "Wzór wypełnienia górnej warstwy. Ma wpływ jedynie na zewnętrzne widoczne warstwy, nie ma wpływu na przylegające do nich powłoki zwartego wypełnienia." @@ -2922,7 +3341,7 @@ msgstr "Wzór wypełnienia górnej warstwy. Ma wpływ jedynie na zewnętrzne wid msgid "Finished" msgstr "Zakończono" -#: src/slic3r/GUI/ConfigWizard.cpp:891 src/slic3r/GUI/Tab.cpp:1947 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 src/slic3r/GUI/Tab.cpp:2132 msgid "Firmware" msgstr "Firmware" @@ -2934,44 +3353,52 @@ msgstr "Flasher firmware" msgid "Firmware image:" msgstr "Obraz firmware:" -#: src/slic3r/GUI/Tab.cpp:2577 +#: src/slic3r/GUI/Tab.cpp:2733 msgid "Firmware Retraction" msgstr "Retrakcja z firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:891 +#: src/slic3r/GUI/ConfigWizard.cpp:1257 msgid "Firmware Type" msgstr "Typ firmware" -#: src/libslic3r/PrintConfig.cpp:859 src/libslic3r/PrintConfig.cpp:868 -#: src/libslic3r/PrintConfig.cpp:876 src/libslic3r/PrintConfig.cpp:910 +#: src/libslic3r/PrintConfig.cpp:899 src/libslic3r/PrintConfig.cpp:908 +#: src/libslic3r/PrintConfig.cpp:918 src/libslic3r/PrintConfig.cpp:952 msgid "First layer" msgstr "Pierwsza warstwa" -#: src/slic3r/GUI/ConfigManipulation.cpp:61 src/libslic3r/PrintConfig.cpp:889 +#: src/libslic3r/PrintConfig.cpp:909 +msgid "First layer bed temperature" +msgstr "Temperatura stołu dla pierwszej warstwy" + +#: src/slic3r/GUI/ConfigManipulation.cpp:60 src/libslic3r/PrintConfig.cpp:931 msgid "First layer height" msgstr "Wysokość pierwszej warstwy" -#: src/libslic3r/Print.cpp:1422 +#: src/libslic3r/Print.cpp:1448 msgid "First layer height can't be greater than nozzle diameter" msgstr "Wysokość pierwszej warstwy nie może być większa od średnicy dyszy" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:960 +msgid "First layer nozzle temperature" +msgstr "Temperatura dyszy dla pierwszej warstwy" + +#: src/libslic3r/PrintConfig.cpp:942 msgid "First layer speed" msgstr "Prędkość pierwszej warstwy" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "Na pierwszej warstwie" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1647 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1776 msgid "Fix through the Netfabb" msgstr "Napraw używając Netfabb" -#: src/slic3r/GUI/Plater.cpp:3473 +#: src/slic3r/GUI/Plater.cpp:3278 msgid "Fix Throught NetFabb" msgstr "Napraw przez NetFabb" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Flash printer &firmware" msgstr "Flash &firmware drukarki" @@ -2999,24 +3426,34 @@ msgstr "Flashowanie w toku. Proszę nie odłączać drukarki!" msgid "Flashing succeeded!" msgstr "Flashowanie pomyślne!" -#: src/slic3r/GUI/Tab.cpp:1218 +#: src/slic3r/GUI/Tab.cpp:1548 msgid "Flow" msgstr "Przepływ" -#: src/slic3r/GUI/PresetHints.cpp:220 +#: src/libslic3r/PrintConfig.cpp:1145 +msgid "Flow rate" +msgstr "Przepływ" + +#: src/slic3r/GUI/PresetHints.cpp:219 msgid "flow rate is maximized" msgstr "przepływ osiąga wartości szczytowe" -#: src/slic3r/GUI/UpdateDialogs.cpp:286 -msgid "For more information please visit our wiki page:" -msgstr "Aby uzyskać więcej informacji odwiedź naszą wiki:" +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:555 +msgid "Following printer preset(s) is duplicated:%1%The above preset for printer \"%2%\" will be used just once." +msgstr "" +"Następujący zestaw ustawień drukarki jest zduplikowany: %1% \n" +"Powyższy zestaw ustawień dla drukarki \"%2%\" zostanie użyty tylko raz." -#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Plater.cpp:624 +#: src/slic3r/GUI/UpdateDialogs.cpp:287 +msgid "For more information please visit our wiki page:" +msgstr "Aby uzyskać więcej informacji, odwiedź naszą wiki:" + +#: src/slic3r/GUI/Plater.cpp:367 src/slic3r/GUI/Plater.cpp:490 msgid "For support enforcers only" msgstr "Tylko dla wymuszania podpór" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:3267 +#: src/slic3r/GUI/Tab.cpp:3702 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -3024,25 +3461,25 @@ msgstr "" "dla lewego przycisku: wskazuje na niesystemowy (lub inny niż domyślny) zestaw ustawień,\n" "dla prawego przycisku: wskazuje, że ustawienia nie zostały zmodyfikowane." -#: src/slic3r/GUI/ConfigManipulation.cpp:136 +#: src/slic3r/GUI/ConfigManipulation.cpp:135 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers." msgstr "Do działania wieży czyszczącej z podporami rozpuszczalnymi konieczna jest synchronizacja wysokości warstw modelu i podpór." -#: src/libslic3r/Print.cpp:1396 +#: src/libslic3r/Print.cpp:1422 msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." msgstr "Do działania wieży czyszczącej z podporami rozpuszczalnymi konieczna jest synchronizacja wysokości warstw modelu i podpór." -#: src/libslic3r/PrintConfig.cpp:2864 +#: src/libslic3r/PrintConfig.cpp:3028 msgid "Force pad around object everywhere" msgstr "Wymuś podkładkę wokół wszystkich modeli, wszędzie" -#: src/libslic3r/PrintConfig.cpp:1729 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Force solid infill for regions having a smaller area than the specified threshold." msgstr "Wymuś zwarte wypełnienie dla obszarów mniejszych niż zadany próg." -#: src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1116 msgid "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material." msgstr "Wymuś generowanie zwartych powłok pomiędzy przylegającymi do siebie materiałami. Przydatne przy druku materiałami przejrzystymi lub przy ręcznych podporach rozpuszczalnych." @@ -3050,27 +3487,31 @@ msgstr "Wymuś generowanie zwartych powłok pomiędzy przylegającymi do siebie msgid "From" msgstr "Od" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2223 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "from" +msgstr "z" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2389 msgid "From Object List You can't delete the last solid part from object." msgstr "Nie możesz usunąć ostatniej bryły modelu z Listy Modeli." -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front" msgstr "Przód" -#: src/slic3r/GUI/MainFrame.cpp:667 +#: src/slic3r/GUI/MainFrame.cpp:964 src/slic3r/GUI/MainFrame.cpp:1284 msgid "Front View" msgstr "Widok przodu" -#: src/slic3r/GUI/Tab.cpp:1013 +#: src/slic3r/GUI/Tab.cpp:1331 msgid "full profile name" msgstr "pełna nazwa profilu" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/DoubleSlider.cpp:1021 +#: src/slic3r/GUI/DoubleSlider.cpp:1146 msgid "" "G-code associated to this tick mark is in a conflict with print mode.\n" "Editing it will cause changes of Slider data." @@ -3078,220 +3519,273 @@ msgstr "" "G-code powiązany z tym zaznaczeniem powoduje konflikt z obecnym trybem drukowania.\n" "Edytowanie go spowoduje zmianę danych suwaka." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:130 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:165 msgid "G-code file exported to %1%" msgstr "Plik G-code wyeksportowany do %1%" -#: src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:980 msgid "G-code flavor" msgstr "Rodzaj G-code" -#: src/libslic3r/PrintConfig.cpp:721 +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:79 +msgid "G-code preview" +msgstr "Podgląd G-code" + +#: src/libslic3r/PrintConfig.cpp:3552 +msgid "G-code viewer" +msgstr "Przeglądarka G-code" + +#: src/libslic3r/PrintConfig.cpp:757 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2648 msgid "g/ml" msgstr "g/ml" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/libslic3r/ExtrusionEntity.cpp:317 -#: src/libslic3r/PrintConfig.cpp:918 +#: src/slic3r/GUI/GUI_Preview.cpp:309 src/libslic3r/ExtrusionEntity.cpp:322 +#: src/libslic3r/ExtrusionEntity.cpp:352 src/libslic3r/PrintConfig.cpp:962 msgid "Gap fill" msgstr "Wypełnienie szpar" -#: src/slic3r/GUI/Preferences.cpp:22 src/slic3r/GUI/Tab.cpp:1796 -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Preferences.cpp:24 src/slic3r/GUI/Tab.cpp:2058 +#: src/slic3r/GUI/Tab.cpp:2240 src/slic3r/GUI/Tab.cpp:2348 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1066 msgid "General" msgstr "Ogólne" -#: src/libslic3r/PrintConfig.cpp:1307 +#: src/libslic3r/PrintConfig.cpp:1415 msgid "Generate no less than the number of skirt loops required to consume the specified amount of filament on the bottom layer. For multi-extruder machines, this minimum applies to each extruder." -msgstr "Generuj ilość pętli skirtu nie mniejszą niż określona aby zużyć taką ilość filamentu na dolnej warstwie. Dla drukarek z kilkoma ekstuderami ta wartość jest stosowana dla każdego z nich." +msgstr "Generuj ilość pętli skirtu nie mniejszą niż określona, aby zużyć taką ilość filamentu na dolnej warstwie. Dla drukarek z kilkoma ekstruderami ta wartość jest stosowana dla każdego z nich." -#: src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2007 msgid "Generate support material" msgstr "Generuj materiał podporowy" -#: src/libslic3r/PrintConfig.cpp:1926 +#: src/libslic3r/PrintConfig.cpp:2068 msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." -msgstr "Generuj materiał podporowy dla określonej liczby warstw licząc od dołu, niezależnie od tego czy normalny materiał podporowy jest włączony i niezależnie od progu kąta. Przydaje się aby uzyskać lepszą przyczepność modelu, które mają bardzo małą powierzchnię kontaktu z powierzchnią druku." +msgstr "Generuj materiał podporowy dla określonej liczby warstw licząc od dołu, niezależnie od tego czy normalny materiał podporowy jest włączony i niezależnie od progu kąta. Przydaje się, aby uzyskać lepszą przyczepność modelu, które mają bardzo małą powierzchnię kontaktu z powierzchnią druku." -#: src/libslic3r/PrintConfig.cpp:2613 +#: src/libslic3r/PrintConfig.cpp:2756 msgid "Generate supports" msgstr "Generowanie podpór" -#: src/libslic3r/PrintConfig.cpp:2615 +#: src/libslic3r/PrintConfig.cpp:2758 msgid "Generate supports for the models" msgstr "Generowanie podpór dla modeli" -#: src/libslic3r/Print.cpp:1614 +#: src/slic3r/GUI/Plater.cpp:3554 +msgid "generated warnings" +msgstr "wygenerowane ostrzeżenia" + +#: src/libslic3r/Print.cpp:1645 msgid "Generating brim" msgstr "Generowanie obramowania (brim)" -#: src/libslic3r/Print.cpp:1642 +#: src/libslic3r/Print.cpp:1680 msgid "Generating G-code" msgstr "Generowanie G-code" -#: src/libslic3r/SLAPrintSteps.cpp:48 +#: src/slic3r/GUI/GCodeViewer.cpp:1392 +msgid "Generating index buffers" +msgstr "Generowanie buforów indeksujących" + +#: src/libslic3r/SLAPrintSteps.cpp:49 msgid "Generating pad" msgstr "Generowanie podkładki" -#: src/libslic3r/PrintObject.cpp:152 +#: src/libslic3r/PrintObject.cpp:158 msgid "Generating perimeters" msgstr "Generowanie obrysów" -#: src/libslic3r/Print.cpp:1606 +#: src/libslic3r/Print.cpp:1636 msgid "Generating skirt" msgstr "Generowanie skirtu" -#: src/libslic3r/PrintObject.cpp:395 +#: src/libslic3r/PrintObject.cpp:422 msgid "Generating support material" msgstr "Generowanie materiału podporowego" -#: src/libslic3r/SLAPrintSteps.cpp:46 src/libslic3r/SLAPrintSteps.cpp:356 +#: src/libslic3r/SLAPrintSteps.cpp:47 src/libslic3r/SLAPrintSteps.cpp:359 msgid "Generating support points" msgstr "Generowanie punktów podpór" -#: src/libslic3r/SLAPrintSteps.cpp:47 +#: src/libslic3r/SLAPrintSteps.cpp:48 msgid "Generating support tree" msgstr "Generowanie drzewa podpór" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2022 +#: src/slic3r/GUI/GCodeViewer.cpp:933 +msgid "Generating toolpaths" +msgstr "Generowanie ścieżek narzędzi" + +#: src/slic3r/GUI/GCodeViewer.cpp:1318 +msgid "Generating vertex buffer" +msgstr "Generowanie bufora wierzchołków" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2181 msgid "Generic" msgstr "Źródłowy" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Gizmo cut" msgstr "Cięcie przy pomocy \"uchwytów\"" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Gizmo move" msgstr "Przemieszczanie przy pomocy \"uchwytów\"" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 +msgid "Gizmo move: Press to snap by 1mm" +msgstr "Przesuwanie uchwytem: naciśnij, aby przyciągać co 1 mm" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 msgid "Gizmo Place face on bed" msgstr "Położenie na płaszczyźnie przy pomocy \"uchwytów\"" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 msgid "Gizmo rotate" msgstr "Obracanie przy pomocy \"uchwytów\"" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:203 +msgid "Gizmo rotate: Press to rotate selected objects around their own center" +msgstr "Obracanie uchwytem: naciśnij, aby obrócić wybrane obiekty wokół ich środków" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Gizmo scale" msgstr "Skalowanie przy pomocy \"uchwytów\"" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +msgid "Gizmo scale: Press to activate one direction scaling" +msgstr "Skalowanie uchwytem: naciśnij, aby aktywować skalowanie w jednym kierunku" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:202 +msgid "Gizmo scale: Press to scale selected objects around their own center" +msgstr "Skalowanie uchwytem: naciśnij, aby skalować wybrane obiekty względem ich środków" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 +msgid "Gizmo scale: Press to snap by 5%" +msgstr "Skalowanie uchwytem: naciśnij, aby przyciągać co 5%" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:200 +msgid "Gizmo scale: Scale selection to fit print volume" +msgstr "Skalowanie uchwytem: skaluj wybrane do rozmiarów obszaru roboczego" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 msgid "Gizmo SLA hollow" msgstr "Drążenie SLA z uchwytem" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 msgid "Gizmo SLA support points" msgstr "Punkty podpór SLA przy pomocy \"uchwytów\"" -#: src/slic3r/GUI/GLCanvas3D.cpp:2921 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:562 +#: src/slic3r/GUI/GLCanvas3D.cpp:3165 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:520 msgid "Gizmo-Move" msgstr "Uchwyt-Przesuń" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:489 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:639 msgid "Gizmo-Place on Face" msgstr "Uchwyt-Połóż na Płaszczyźnie" -#: src/slic3r/GUI/GLCanvas3D.cpp:3001 -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:564 +#: src/slic3r/GUI/GLCanvas3D.cpp:3249 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:522 msgid "Gizmo-Rotate" msgstr "Uchwyt-Obróć" -#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:563 +#: src/slic3r/GUI/Gizmos/GLGizmosManager.cpp:521 msgid "Gizmo-Scale" msgstr "Uchwyt-Skaluj" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:201 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:199 msgid "Gizmos" msgstr "Uchwyty" -#: src/slic3r/GUI/AboutDialog.cpp:259 +#: src/slic3r/GUI/AboutDialog.cpp:284 src/slic3r/GUI/GUI_App.cpp:244 msgid "GNU Affero General Public License, version 3" msgstr "Ogólna Licencja Publiczna (GPL) GNU Affero, wersja 3" -#: src/slic3r/GUI/ConfigWizard.cpp:980 +#: src/slic3r/GUI/ConfigWizard.cpp:1346 msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." -msgstr "Wymagana jest spora precyzja, użyj więc suwmiarki i przeprowadź kilka pomiarów w sporych odstępach od siebie i oblicz średnią." +msgstr "Wymagana jest spora precyzja, użyj więc suwmiarki, przeprowadź kilka pomiarów w sporych odstępach od siebie i oblicz średnią." -#: src/libslic3r/PrintConfig.cpp:844 +#: src/libslic3r/PrintConfig.cpp:882 msgid "Grid" msgstr "Kratka" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2454 +#: src/slic3r/GUI/PrintHostDialogs.cpp:57 +msgid "Group" +msgstr "Grupa" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2846 msgid "Group manipulation" msgstr "Manipulacja grupą" -#: src/slic3r/GUI/Preferences.cpp:133 +#: src/slic3r/GUI/Preferences.cpp:200 msgid "GUI" msgstr "GUI" -#: src/libslic3r/PrintConfig.cpp:852 +#: src/libslic3r/PrintConfig.cpp:890 msgid "Gyroid" msgstr "Gyroidalny" -#: src/slic3r/GUI/Tab.cpp:2937 -msgid "has the following unsaved changes:" -msgstr "ma następujące niezapisane zmiany:" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:47 msgid "Head diameter" msgstr "Średnica łącznika" -#: src/slic3r/GUI/ConfigManipulation.cpp:317 +#: src/libslic3r/PrintConfig.cpp:2772 +msgid "Head penetration" +msgstr "Przenikanie łączników" + +#: src/slic3r/GUI/ConfigManipulation.cpp:322 msgid "Head penetration should not be greater than the head width." msgstr "Przenikanie łączników nie powinno być większe niż ich średnica." -#: src/libslic3r/PrintConfig.cpp:869 +#: src/libslic3r/PrintConfig.cpp:910 msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." -msgstr "Temperatura podgrzewanego stołu dla pierwszej warstwy. Ustaw zero aby wyłączyć komendy kontrolujące temperaturę stołu w pliku wyjściowym." +msgstr "Temperatura podgrzewanego stołu dla pierwszej warstwy. Ustaw zero, aby wyłączyć komendy kontrolujące temperaturę stołu w pliku wyjściowym." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/libslic3r/PrintConfig.cpp:500 +#: src/slic3r/GUI/GUI_Preview.cpp:276 src/libslic3r/PrintConfig.cpp:536 msgid "Height" msgstr "Wysokość" -#: src/libslic3r/GCode/PreviewData.cpp:347 +#: src/slic3r/GUI/GCodeViewer.cpp:2236 src/libslic3r/GCode/PreviewData.cpp:352 msgid "Height (mm)" msgstr "Wysokość (mm)" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." msgstr "Wysokość skirtu wyrażona w warstwach. Ustawienie wysokiej wartości spowoduje stworzenie osłony chroniącej przed przeciągami." -#: src/libslic3r/PrintConfig.cpp:2360 +#: src/libslic3r/PrintConfig.cpp:2503 msgid "Height of the display" msgstr "Wysokość wyświetlacza" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1631 msgid "Height range Modifier" msgstr "Modyfikator zakresu wysokości" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Height ranges" msgstr "Zakres wysokości" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:295 msgid "Heights at which a filament change is to occur." msgstr "Wysokość w osi Z, na której ma nastąpić zmiana filamentu." -#: src/slic3r/GUI/ConfigWizard.cpp:433 +#: src/slic3r/GUI/ConfigWizard.cpp:451 #, c-format msgid "Hello, welcome to %s! This %s helps you with the initial configuration; just a few settings and you will be ready to print." msgstr "Witaj w %s! Ten %s pomoże Ci z konfiguracją początkową - wszystko będzie gotowe do drukowania po zaledwie kilku kliknięciach." -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3564 msgid "Help" msgstr "Pomoc" -#: src/libslic3r/PrintConfig.cpp:3371 +#: src/libslic3r/PrintConfig.cpp:3570 msgid "Help (FFF options)" msgstr "Pomoc (opcje FFF)" -#: src/libslic3r/PrintConfig.cpp:3376 +#: src/libslic3r/PrintConfig.cpp:3575 msgid "Help (SLA options)" msgstr "Pomoc (opcje SLA)" @@ -3299,96 +3793,80 @@ msgstr "Pomoc (opcje SLA)" msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." msgstr "To ustawienie odpowiada za objętość czyszczonego filamentu w (mm³) dla danej pary ekstruderów." -#: src/libslic3r/PrintConfig.cpp:973 +#: src/libslic3r/PrintConfig.cpp:1017 msgid "High extruder current on filament swap" msgstr "Zwiększenie prądu ekstrudera przy zmianie filamentu" -#: src/slic3r/GUI/GLCanvas3D.cpp:277 +#: src/slic3r/GUI/GLCanvas3D.cpp:263 msgid "Higher print quality versus higher print speed." msgstr "Wyższa jakość druku vs wyższa prędkość." -#: src/libslic3r/PrintConfig.cpp:427 src/libslic3r/PrintConfig.cpp:853 +#: src/libslic3r/PrintConfig.cpp:463 src/libslic3r/PrintConfig.cpp:891 msgid "Hilbert Curve" msgstr "Krzywa Hilberta" -#: src/slic3r/GUI/Plater.cpp:1042 +#: src/slic3r/GUI/Plater.cpp:916 msgid "Hold Shift to Slice & Export G-code" -msgstr "Przytrzymaj Shift aby Pociąć i Wyeksportować G-code" +msgstr "Przytrzymaj Shift, aby pociąć i wyeksportować G-code" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 msgid "Hole depth" msgstr "Głębokość otworu" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:45 msgid "Hole diameter" msgstr "Średnica otworu" -#: src/slic3r/GUI/Plater.cpp:2760 -msgid "Hollow" -msgstr "Drążenie" - -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:977 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:785 msgid "Hollow and drill" msgstr "Drążenie i wiercenie" -#: src/libslic3r/PrintConfig.cpp:2910 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Hollow out a model to have an empty interior" msgstr "Wydrąż model, aby uzyskać puste wnętrze" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:40 msgid "Hollow this object" msgstr "Wydrąż ten model" -#: src/slic3r/GUI/GUI_ObjectList.cpp:108 src/slic3r/GUI/Tab.cpp:3654 -#: src/slic3r/GUI/Tab.cpp:3655 src/libslic3r/SLA/Hollowing.cpp:46 -#: src/libslic3r/SLA/Hollowing.cpp:58 src/libslic3r/SLA/Hollowing.cpp:67 -#: src/libslic3r/SLA/Hollowing.cpp:76 src/libslic3r/PrintConfig.cpp:2909 -#: src/libslic3r/PrintConfig.cpp:2916 src/libslic3r/PrintConfig.cpp:2926 -#: src/libslic3r/PrintConfig.cpp:2935 +#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/Tab.cpp:4073 +#: src/slic3r/GUI/Tab.cpp:4074 src/libslic3r/SLA/Hollowing.cpp:45 +#: src/libslic3r/SLA/Hollowing.cpp:57 src/libslic3r/SLA/Hollowing.cpp:66 +#: src/libslic3r/SLA/Hollowing.cpp:75 src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 +#: src/libslic3r/PrintConfig.cpp:3099 msgid "Hollowing" msgstr "Drążenie" -#: src/slic3r/GUI/Plater.cpp:2926 -msgid "Hollowing cancelled." -msgstr "Drążenie anulowane." - -#: src/slic3r/GUI/Plater.cpp:2927 -msgid "Hollowing done." -msgstr "Drążenie zakończone." - -#: src/slic3r/GUI/Plater.cpp:2929 -msgid "Hollowing failed." -msgstr "Drążenie nie powiodło się." - -#: src/libslic3r/PrintConfig.cpp:2937 +#: src/libslic3r/PrintConfig.cpp:3101 msgid "Hollowing is done in two steps: first, an imaginary interior is calculated deeper (offset plus the closing distance) in the object and then it's inflated back to the specified offset. A greater closing distance makes the interior more rounded. At zero, the interior will resemble the exterior the most." msgstr "Drążenie wnętrza odbywa się w dwóch etapach: w pierwszym obliczana jest wewnątrz pusta przestrzeń o rozmiarach równych sumie grubości powłoki i dystansu domykania, a w kolejnym jest \"nadmuchiwane\" z powrotem do zadanej grubości. Większy dystans zamykania tworzy większe promienie we wnętrzu. Wartość \"0\" odda wnętrze najbardziej zbliżone do zewnętrznej powłoki." -#: src/libslic3r/SLAPrintSteps.cpp:43 +#: src/libslic3r/SLAPrintSteps.cpp:44 msgid "Hollowing model" msgstr "Drążenie modelu" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:813 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:624 msgid "Hollowing parameter change" msgstr "Zmiana parametrów drążenia" -#: src/libslic3r/PrintConfig.cpp:850 src/libslic3r/PrintConfig.cpp:2011 +#: src/libslic3r/PrintConfig.cpp:888 src/libslic3r/PrintConfig.cpp:2153 msgid "Honeycomb" msgstr "Plaster miodu" -#: src/slic3r/GUI/Tab.cpp:1064 +#: src/slic3r/GUI/Tab.cpp:1386 msgid "Horizontal shells" msgstr "Powłoka pozioma" -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:279 msgid "Horizontal width of the brim that will be printed around each object on the first layer." msgstr "Szerokość brim (obramowania), drukowanego wokół każdego z modeli na pierwszej warstwie." -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 msgid "Host" msgstr "Host" -#: src/libslic3r/PrintConfig.cpp:1332 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Host Type" msgstr "Rodzaj serwera" @@ -3396,69 +3874,78 @@ msgstr "Rodzaj serwera" msgid "Hostname" msgstr "Nazwa hosta" -#: src/libslic3r/PrintConfig.cpp:97 +#: src/libslic3r/PrintConfig.cpp:99 msgid "Hostname, IP or URL" msgstr "Nazwa hosta, IP lub URL" -#: src/slic3r/GUI/Tab.cpp:139 +#: src/slic3r/GUI/Tab.cpp:210 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." msgstr "" -"Umieść kursor nad przyciskiem aby uzyskać więcej informacji\n" +"Umieść kursor nad przyciskiem, aby uzyskać więcej informacji\n" "lub kliknij ten przycisk." -#: src/libslic3r/PrintConfig.cpp:2812 +#: src/libslic3r/PrintConfig.cpp:2976 msgid "How far should the pad extend around the contained geometry" msgstr "Jak daleko poza kształt powinna sięgać podkładka" -#: src/libslic3r/PrintConfig.cpp:2901 +#: src/libslic3r/PrintConfig.cpp:3065 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Głębokość, na którą malutkie łączniki podpór powinny wnikać w powłokę modelu." -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2774 msgid "How much the pinhead has to penetrate the model surface" msgstr "Głębokość, na którą łącznik podpory powinien wnikać w powłokę modelu" -#: src/libslic3r/PrintConfig.cpp:2755 +#: src/libslic3r/PrintConfig.cpp:2919 msgid "How much the supports should lift up the supported object. If \"Pad around object\" is enabled, this value is ignored." msgstr "Odległość, na którą model zostanie podniesiony na podporach. Jeśli opcja \"Podkładka wokół modelu\" jest włączona, to ten parametr zostanie zignorowany." -#: src/libslic3r/PrintConfig.cpp:111 +#: src/libslic3r/PrintConfig.cpp:1209 +msgid "How to apply limits" +msgstr "Jak stosować limity" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "How to apply the Machine Limits" +msgstr "Jak stosować limity maszynowe" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:358 +#: src/libslic3r/PrintConfig.cpp:113 msgid "HTTPS CA File" msgstr "Plik certyfikatu HTTPS CA" -#: src/slic3r/GUI/Tab.cpp:1713 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:319 msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." msgstr "Plik HTTPS CA jest opcjonalny. Jest potrzebny jedynie w sytuacji, gdy używasz HTTPS z certyfikatem samopodpisanym." -#: src/slic3r/GUI/Preferences.cpp:222 +#: src/slic3r/GUI/Preferences.cpp:376 msgid "Icon size in a respect to the default size" msgstr "Rozmiar ikon w odniesieniu do domyślnego" -#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +#: src/slic3r/GUI/PrintHostDialogs.cpp:147 msgid "ID" msgstr "ID" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:2015 msgid "If checked, supports will be generated automatically based on the overhang threshold value. If unchecked, supports will be generated inside the \"Support Enforcer\" volumes only." msgstr "Jeśli ta opcja będzie zaznaczona, to podpory zostaną wygenerowane automatycznie, na podstawie ustawionego progu zwisu. Jeśli ją odznaczysz, to podpory będą generowane jedynie w środku modyfikatora wymuszającego podpory." -#: src/slic3r/GUI/ConfigWizard.cpp:773 +#: src/slic3r/GUI/ConfigWizard.cpp:1132 #, c-format msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "To ustawienie spowoduje wyszukiwanie nowych wersji aplikacji %s online. Po pojawieniu się nowej wersji, przy kolejnym uruchomieniu zostanie wyświetlone powiadomienie (nie pojawi się, gdy aplikacja będzie uruchomiona). Jest to tylko mechanizm powiadamiania - nie instaluje aktualizacji automatycznie." -#: src/slic3r/GUI/ConfigWizard.cpp:783 +#: src/slic3r/GUI/ConfigWizard.cpp:1142 #, c-format msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." msgstr "Jeśli aktywna, to %s będzie pobierać aktualizacje wbudowanych zestawów ustawień w tle. Będą one pobierane do folderu tymczasowego. Opcja aktualizacji ustawień będzie oferowana przy starcie aplikacji." -#: src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." msgstr "Jeśli ta opcja będzie aktywna, to wszystkie ekstrudery będą czyszczone na przedniej krawędzi stołu na początku wydruku." -#: src/slic3r/GUI/ConfigWizard.cpp:805 +#: src/slic3r/GUI/ConfigWizard.cpp:1164 msgid "" "If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n" "If not enabled, the Reload from disk command will ask to select each file using an open file dialog." @@ -3466,127 +3953,174 @@ msgstr "" "Jeśli włączone, pozwala poleceniu \"Wczytaj ponownie z dysku\" automatycznie odnaleźć i wczytać pliki.\n" "Jeśli wyłączone, to polecenie będzie otwierać okno dialogowe, w którym wskażesz plik źródłowy." -#: src/slic3r/GUI/Preferences.cpp:74 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "If enabled, allows the Reload from disk command to automatically find and load the files when invoked." msgstr "Jeśli włączone, pozwala poleceniu Wczytaj ponownie z dysku automatycznie odnaleźć i wczytać pliki." -#: src/slic3r/GUI/Preferences.cpp:66 +#: src/slic3r/GUI/Preferences.cpp:238 +msgid "If enabled, changes made using the sequential slider, in preview, apply only to gcode top layer. If disabled, changes made using the sequential slider, in preview, apply to the whole gcode." +msgstr "" +"Jeśli włączone, zmiany stosowane suwakiem sekwencyjnym w podglądzie zostaną zastosowane do górnej warstwy G-code.\n" +"Jeśli wyłączone, zmiany stosowane suwakiem sekwencyjnym w podglądzie zostaną zastosowane do całego G-code." + +#: src/slic3r/GUI/Preferences.cpp:83 msgid "If enabled, PrusaSlicer will check for the new versions of itself online. When a new version becomes available a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." msgstr "Włączenie automatycznego sprawdzania dostępności nowych wersji PrusaSlicer online. Pojawienie się nowej wersji spowoduje wyświetlenie powiadomienia przy starcie aplikacji (nigdy podczas jej pracy). Ta funkcja służy tylko powiadamianiu, nie instaluje aktualizacji automatycznie." -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:270 +msgid "If enabled, renders object using the environment map." +msgstr "Jeśli włączone, obiekty będą renderowane przy pomocy mapy środowiskowej." + +#: src/slic3r/GUI/Preferences.cpp:200 +msgid "If enabled, reverses the direction of zoom with mouse wheel" +msgstr "Jeśli włączone, kierunek kółka myszy zostanie odwrócony." + +#: src/slic3r/GUI/Preferences.cpp:99 msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." msgstr "Włączenie powoduje pobieranie wbudowanych systemowych zestawów ustawień w tle. Te ustawienia są pobierane do oddzielnej lokalizacji tymczasowej. Jeśli pojawi się nowa wersja to opcja jej instalacji pojawi się przy starcie aplikacji." -#: src/slic3r/GUI/Preferences.cpp:106 +#: src/slic3r/GUI/Preferences.cpp:137 msgid "If enabled, the 3D scene will be rendered in Retina resolution. If you are experiencing 3D performance problems, disabling this option may help." msgstr "Po włączeniu podgląd 3D będzie renderowany w rozdzielczości Retina. Wyłącz tę opcję w przypadku wystąpienia problemów z wydajnością 3D." -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/slic3r/GUI/Preferences.cpp:215 +msgid "If enabled, the button for the collapse sidebar will be appeared in top right corner of the 3D Scene" +msgstr "Jeśli włączone, na górze podglądu 3D będzie wyświetlany przycisk zwijania bocznego panelu" + +#: src/libslic3r/PrintConfig.cpp:3698 +msgid "If enabled, the command line arguments are sent to an existing instance of GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides the \"single_instance\" configuration value from application preferences." +msgstr "Jeśli włączone, argumenty linii komend zostaną wysłane do istniejącego GUI PrusaSlicer lub aktywnego okna PrusaSlicer. Nadpisuje parametr konfiguracji \"single_instance\" z preferencji aplikacji." + +#: src/libslic3r/PrintConfig.cpp:1804 msgid "If enabled, the skirt will be as tall as a highest printed object. This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft." msgstr "Po włączeniu, wysokość skirt będzie taka sama, jak najwyższego modelu. Przydaje się podczas druku z ABS lub ASA - chroni wydruk przed podwijaniem się i odklejaniem od stołu przez przeciąg." -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:2000 msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." msgstr "Po włączeniu wieża czyszcząca nie będzie drukowana na warstwach, na których nie ma zmian koloru. Na kolejnych warstwach ze zmianami koloru ekstruder zjedzie w dół, aby kontynuować czyszczenie na wieży. Użytkownik musi upewnić się, że nie nastąpi kolizja głowicy z wydrukiem." -#: src/slic3r/GUI/Preferences.cpp:128 +#: src/slic3r/GUI/Preferences.cpp:193 msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Jeśli włączone, to używany będę wolny widok. Jeśli wyłączone, to widok będzie ograniczony." -#: src/slic3r/GUI/Preferences.cpp:121 +#: src/slic3r/GUI/Preferences.cpp:186 msgid "If enabled, use perspective camera. If not enabled, use orthographic camera." msgstr "Po włączeniu będzie wyświetlony widok perspektywiczny. Po wyłączeniu, ortograficzny." -#: src/slic3r/GUI/Preferences.cpp:145 +#: src/slic3r/GUI/Preferences.cpp:222 msgid "If enabled, you can change size of toolbar icons manually." msgstr "Włączenie umożliwi ręczną zmianę rozmiaru ikon pasków narzędzi." -#: src/slic3r/GUI/PresetHints.cpp:29 +#: src/slic3r/GUI/PresetHints.cpp:28 msgid "If estimated layer time is below ~%1%s, fan will run at %2%%% and print speed will be reduced so that no less than %3%s are spent on that layer (however, speed will never be reduced below %4%mm/s)." msgstr "Jeśli szacowany czas druku warstwy jest niższy niż ~%1%s, wentylator będzie pracował na %2%%% a prędkość druku zostanie obniżona tak, aby warstwa była drukowana przez nie mniej niż %3%s (jednakże prędkość nie zejdzie poniżej %4%mm/s)." -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:35 msgid "If estimated layer time is greater, but still below ~%1%s, fan will run at a proportionally decreasing speed between %2%%% and %3%%%." msgstr "Jeśli szacowany czas jest wyższy, ale poniżej ~%1%s, wentylator będzie pracował z proporcjonalnie zmniejszaną prędkością poniędzy %2%%% a %3%%%." -#: src/libslic3r/PrintConfig.cpp:901 +#: src/libslic3r/PrintConfig.cpp:943 msgid "If expressed as absolute value in mm/s, this speed will be applied to all the print moves of the first layer, regardless of their type. If expressed as a percentage (for example: 40%) it will scale the default speeds." msgstr "Jeśli ustawisz wartość bezwzględną wyrażoną w mm/s, taka prędkość będzie zastosowana dla wszystkich ruchów drukujących dla pierwszej warstwy, nie zależnie od ich rodzajów. Jeśli ustawisz wartość procentową (np. 40%), będzie ona skalowana wg domyślnej prędkości." -#: src/libslic3r/PrintConfig.cpp:573 +#: src/libslic3r/PrintConfig.cpp:609 msgid "If layer print time is estimated below this number of seconds, fan will be enabled and its speed will be calculated by interpolating the minimum and maximum speeds." msgstr "Jeśli szacowany czas druku warstwy będzie niższy niż ta wartość to wentylator będzie włączony a jego prędkość będzie interpolowana na podstawie górnego i dolnego limitu prędkości." -#: src/libslic3r/PrintConfig.cpp:1706 +#: src/libslic3r/PrintConfig.cpp:1821 msgid "If layer print time is estimated below this number of seconds, print moves speed will be scaled down to extend duration to this value." -msgstr "Jeśli szacowany czas druku warstwy będzie niższy niż ta wartość to prędkość ruchów drukujących będzie zmniejszona aby wydłużyć czas druku." +msgstr "Jeśli szacowany czas druku warstwy będzie niższy niż ta wartość to prędkość ruchów drukujących będzie zmniejszona, aby wydłużyć czas druku." -#: src/libslic3r/PrintConfig.cpp:567 +#: src/libslic3r/PrintConfig.cpp:603 msgid "If this is enabled, fan will never be disabled and will be kept running at least at its minimum speed. Useful for PLA, harmful for ABS." msgstr "Ta opcja spowoduje, że wentylator nie wyłączy się podczas druku, tzn. zawsze będzie pracował z przynajmniej minimalną prędkością. Przydatne dla PLA, może szkodzić przy ABS." -#: src/slic3r/GUI/Preferences.cpp:49 +#: src/slic3r/GUI/Preferences.cpp:66 msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." -msgstr "Spowoduje, że Slic3r będzie automatycznie umieszczał modele wokół centrum stołu." +msgstr "Spowoduje, że PrusaSlicer będzie automatycznie umieszczał modele wokół centrum stołu." -#: src/slic3r/GUI/Preferences.cpp:57 +#: src/slic3r/GUI/Preferences.cpp:74 msgid "If this is enabled, Slic3r will pre-process objects as soon as they're loaded in order to save time when exporting G-code." -msgstr "Spowoduje, że Slic3r będzie automatycznie procesował modele jak tylko zostaną załadowane aby zmniejszyć czas eksportu G-code." +msgstr "Spowoduje, że Slic3r będzie automatycznie procesował modele jak tylko zostaną załadowane, aby zmniejszyć czas eksportu G-code." -#: src/slic3r/GUI/Preferences.cpp:41 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." msgstr "Włączenie spowoduje, że Slic3r będzie za każdym razem pytał gdzie wyeksportować plik zamiast używać katalogu z plikami wejściowymi." -#: src/libslic3r/PrintConfig.cpp:1562 +#: src/slic3r/GUI/Preferences.cpp:125 +msgid "If this is enabled, when starting PrusaSlicer and another instance of the same PrusaSlicer is already running, that instance will be reactivated instead." +msgstr "Jeśli włączone, uruchomienie PrusaSlicer, gdy uruchomiona jest ta sama wersja PrusaSlicer, spowoduje reaktywację tej instancji." + +#: src/libslic3r/PrintConfig.cpp:1670 msgid "If you set this to a positive value, Z is quickly raised every time a retraction is triggered. When using multiple extruders, only the setting for the first extruder will be considered." msgstr "Jeśli ustawisz tu wartość dodatnią to oś Z wykona szybki ruch w górę przy każdej retrakcji. Przy używaniu kilku ekstruderów tylko ustawienia pierwszego z nich będą brane pod uwagę." -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1679 msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z. You can tune this setting for skipping lift on the first layers." msgstr "Jeśli ustawisz wartość dodatnią, to oś Z (z-hop) będzie podnosić się tylko powyżej ustawionej wartości. Możesz w ten sposób wyłączyć z-hop na pierwszej warstwie." -#: src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1688 msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z. You can tune this setting for limiting lift to the first layers." msgstr "Jeśli ustawisz wartość dodatnią, to z-hop będzie odbywał się tylko poniżej ustawionej wartości. Możesz w ten sposób ograniczyć działanie funkcji np. tylko dla pierwszych warstw." -#: src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1562 msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." msgstr "Wprowadź ścieżki do własnych skryptów jeśli chcesz dodać je do wyjściowego pliku G-code. Możesz dodać wiele skryptów, rozdzielając je średnikiem ( ; ). Skrypty będą przetwarzane jako pierwsze w kolejności i mają dostęp do ustawień konfiguracyjnych Slic3ra przez zmienne środowiskowe." -#: src/libslic3r/PrintConfig.cpp:530 +#: src/libslic3r/PrintConfig.cpp:566 msgid "If your firmware doesn't handle the extruder displacement you need the G-code to take it into account. This option lets you specify the displacement of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." msgstr "Jeśli oprogramowanie układowe (firmware) Twojej drukarki nie obsługuje rozmieszczenia ekstruderów to trzeba to określić w G-code. Ta opcja pozwala ustawić rozmieszczenie każdego ekstrudera w relacji do pierwszego. Oczekuje koordynat dodatnich (będą odejmowane od koordynat XY)." -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2312 msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." msgstr "Jeśli Twój firmware wymaga względnych wartości E, zaznacz to pole. W innym przypadku zostaw puste. Większość układów obsługuje wartości absolutne." -#: src/libslic3r/PrintConfig.cpp:3485 +#: src/libslic3r/PrintConfig.cpp:1219 +msgid "Ignore" +msgstr "Ignoruj" + +#: src/libslic3r/PrintConfig.cpp:3684 msgid "Ignore non-existent config files" msgstr "Ignoruj nieistniejące pliki konfiguracyjne" -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:192 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:173 +msgid "Ignores facets facing away from the camera." +msgstr "Ignoruje powierzchnie skierowane w przeciwną stronę względem widoku." + +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Import &Config" msgstr "Import Konfigura&cji" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Import Config &Bundle" msgstr "Import Paczki Konfi&guracyjnej" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Import Config from &project" msgstr "Import Konfiguracji z &projektu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Import Config from ini/amf/3mf/gcode" msgstr "Importuj konfigurację z ini/amf/3mf/gcode" -#: src/slic3r/GUI/Plater.cpp:4603 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:39 +msgid "Import file" +msgstr "Import pliku" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:46 +msgid "Import model and profile" +msgstr "Import modelu i profilu" + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:48 +msgid "Import model only" +msgstr "Import tylko modelu" + +#: src/slic3r/GUI/Plater.cpp:4655 msgid "Import Object" msgstr "Import Modelu" -#: src/slic3r/GUI/Plater.cpp:4607 +#: src/slic3r/GUI/Plater.cpp:4659 msgid "Import Objects" msgstr "Importuj Modele" @@ -3594,15 +4128,50 @@ msgstr "Importuj Modele" msgid "Import of the repaired 3mf file failed" msgstr "Niepowodzenie importu naprawionego pliku 3MF" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:47 +msgid "Import profile only" +msgstr "Import tylko profilu" + +#: src/slic3r/GUI/MainFrame.cpp:1050 +msgid "Import SL1 archive" +msgstr "Import archiwum SL1" + +#: src/slic3r/GUI/Plater.cpp:1561 +msgid "Import SLA archive" +msgstr "Import archiwum SLA" + +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Import STL (imperial units)" +msgstr "Import STL (jednostki imperialne)" + +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Import STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Import STL/OBJ/AMF/3MF without config, keep plater" msgstr "Otwórz STL/OBJ/AMF/3MF bez konfiguracji, zachowaj zawartość stołu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3422 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:159 +msgid "Importing canceled." +msgstr "Importowanie anulowane." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:160 +msgid "Importing done." +msgstr "Importowanie zakończone." + +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:135 +msgid "Importing SLA archive" +msgstr "Importowanie archiwum SLA" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +msgid "in" +msgstr "cale" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3885 #, c-format msgid "In this mode you can select only other %s Items%s" msgstr "W tym trybie możesz wybrać jedynie %s elementów %s" @@ -3611,25 +4180,25 @@ msgstr "W tym trybie możesz wybrać jedynie %s elementów %s" msgid "Incompatible bundles:" msgstr "Niekompatybilne zestawy ustawień:" +#: src/slic3r/GUI/PresetComboBoxes.cpp:241 +msgid "Incompatible presets" +msgstr "Niekompatybilne zestawy ustawień" + #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:75 #, c-format msgid "Incompatible with this %s" msgstr "Brak kompatybilności z %s" -#: src/slic3r/GUI/Plater.cpp:4685 +#: src/slic3r/GUI/Plater.cpp:4790 msgid "Increase Instances" msgstr "Zwiększ ilość instancji" -#: src/slic3r/GUI/GLCanvas3D.cpp:264 +#: src/slic3r/GUI/GLCanvas3D.cpp:251 msgid "Increase/decrease edit area" msgstr "Zmniejsz/zwiększ obszar edycji" -#: src/slic3r/GUI/Plater.cpp:2922 -msgid "Indexing hollowed object" -msgstr "Indeksowanie wydrążonego obiektu" - #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3258 +#: src/slic3r/GUI/Tab.cpp:3695 msgid "" "indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group to the system (or default) values." @@ -3638,432 +4207,488 @@ msgstr "" "Kliknij ikonę OTWARTEJ KŁÓDKI, aby zresetować wszystkie ustawienia obecnej grupy ustawień do wartości systemowych (lub domyślnych)." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:3254 +#: src/slic3r/GUI/Tab.cpp:3691 msgid "indicates that the settings are the same as the system (or default) values for the current option group" msgstr "wskazuje na to, że ustawienia są takie same jak systemowe (lub domyślne) wartości dla danej grupy opcji" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:3270 +#: src/slic3r/GUI/Tab.cpp:3707 msgid "" "indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." msgstr "" "oznacza, że ustawienia zostały zmodyfikowane i nie odpowiadają tym z ostatnio zapisanego zestawu ustawień dla obecnej grupy opcji.\n" -"Kliknij ikonę STRZAŁKI W TYŁ aby zresetować wszystkie ustawienia w obecnej grupie opcji do tych z ostatnio zapisanego zestawu ustawień." +"Kliknij ikonę STRZAŁKI W TYŁ, aby zresetować wszystkie ustawienia w obecnej grupie opcji do tych z ostatnio zapisanego zestawu ustawień." -#: src/slic3r/GUI/ConfigManipulation.cpp:211 -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:96 -#: src/slic3r/GUI/GUI_ObjectList.cpp:614 src/slic3r/GUI/Plater.cpp:527 -#: src/slic3r/GUI/Tab.cpp:1091 src/slic3r/GUI/Tab.cpp:1092 -#: src/libslic3r/PrintConfig.cpp:203 src/libslic3r/PrintConfig.cpp:416 -#: src/libslic3r/PrintConfig.cpp:436 src/libslic3r/PrintConfig.cpp:776 -#: src/libslic3r/PrintConfig.cpp:790 src/libslic3r/PrintConfig.cpp:827 -#: src/libslic3r/PrintConfig.cpp:981 src/libslic3r/PrintConfig.cpp:991 -#: src/libslic3r/PrintConfig.cpp:1009 src/libslic3r/PrintConfig.cpp:1028 -#: src/libslic3r/PrintConfig.cpp:1047 src/libslic3r/PrintConfig.cpp:1728 -#: src/libslic3r/PrintConfig.cpp:1745 +#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/GUI_ObjectList.cpp:93 +#: src/slic3r/GUI/GUI_ObjectList.cpp:652 src/slic3r/GUI/Plater.cpp:393 +#: src/slic3r/GUI/Tab.cpp:1413 src/slic3r/GUI/Tab.cpp:1414 +#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:450 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:826 src/libslic3r/PrintConfig.cpp:863 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1035 +#: src/libslic3r/PrintConfig.cpp:1053 src/libslic3r/PrintConfig.cpp:1072 +#: src/libslic3r/PrintConfig.cpp:1091 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1860 msgid "Infill" msgstr "Wypełnienie" -#: src/slic3r/GUI/PresetHints.cpp:174 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "wypełnienia" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1065 msgid "Infill before perimeters" msgstr "Wypełnienie przed obrysami" -#: src/libslic3r/PrintConfig.cpp:1001 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "Infill extruder" msgstr "Ekstruder dla wypełnienia" -#: src/libslic3r/PrintConfig.cpp:1036 +#: src/libslic3r/PrintConfig.cpp:1080 msgid "Infill/perimeters overlap" msgstr "Nakładanie wypełnienia na obrysy" -#: src/libslic3r/Print.cpp:1584 +#: src/libslic3r/Print.cpp:1610 msgid "Infilling layers" msgstr "Warstwy wypełniające" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3430 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3505 src/slic3r/GUI/Plater.cpp:141 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3893 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3968 src/slic3r/GUI/Plater.cpp:147 msgid "Info" msgstr "Info" -#: src/libslic3r/PrintConfig.cpp:1057 +#: src/slic3r/GUI/GUI_App.cpp:1087 src/slic3r/GUI/Tab.cpp:3435 +msgid "Information" +msgstr "Informacje" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:547 +msgid "Infornation" +msgstr "Informacje" + +#: src/libslic3r/PrintConfig.cpp:1101 msgid "Inherits profile" msgstr "Dziedziczy profil" -#: src/libslic3r/SLAPrint.cpp:653 +#: src/libslic3r/SLAPrint.cpp:667 msgid "Initial exposition time is out of printer profile bounds." msgstr "Początkowy czas naświetlania jest poza zakresem profilu drukarki." -#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2565 +#: src/libslic3r/PrintConfig.cpp:2707 src/libslic3r/PrintConfig.cpp:2708 msgid "Initial exposure time" msgstr "Początkowy czas naświetlania" -#: src/libslic3r/PrintConfig.cpp:2482 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2625 src/libslic3r/PrintConfig.cpp:2626 msgid "Initial layer height" msgstr "Wysokość pierwszej warstwy" -#: src/slic3r/GUI/Field.cpp:204 +#: src/slic3r/GUI/Field.cpp:252 src/slic3r/GUI/Field.cpp:1370 msgid "Input value is out of range" msgstr "Wartość poza zakresem" -#: src/slic3r/GUI/GUI_App.cpp:800 +#: src/slic3r/GUI/GUI_App.cpp:1480 msgid "Inspect / activate configuration snapshots" msgstr "Sprawdzenie / aktywacja zrzutów konfiguracji" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:60 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:216 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:62 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:218 #, c-format msgid "Instance %d" msgstr "Kopia %d" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2500 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2892 msgid "Instance manipulation" msgstr "Manipulacja kopią modelu" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:56 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:58 msgid "Instances" msgstr "Instancje (kopie)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1091 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3781 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1215 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4244 msgid "Instances to Separated Objects" msgstr "Kopie jako Osobne Modele" -#: src/libslic3r/PrintConfig.cpp:1973 +#: src/libslic3r/PrintConfig.cpp:2115 msgid "Interface layers" msgstr "Warstwy łączące" -#: src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Interface loops" msgstr "Warstwy łączące (pętle)" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Interface pattern spacing" msgstr "Rozstaw wzoru warstw łączących" -#: src/libslic3r/PrintConfig.cpp:1071 +#: src/libslic3r/PrintConfig.cpp:1115 msgid "Interface shells" msgstr "Powłoki łączące" -#: src/libslic3r/Zipper.cpp:84 +#: src/libslic3r/miniz_extension.cpp:143 msgid "internal error" msgstr "błąd wewnętrzny" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:313 +#: src/slic3r/GUI/GUI_Preview.cpp:304 src/libslic3r/ExtrusionEntity.cpp:317 +#: src/libslic3r/ExtrusionEntity.cpp:342 msgid "Internal infill" msgstr "Wypełnienie wewnętrzne" -#: src/slic3r/GUI/Plater.cpp:3106 +#: src/slic3r/GUI/BedShapeDialog.cpp:145 +msgid "Invalid" +msgstr "Nieprawidłowy" + +#: src/slic3r/GUI/Plater.cpp:2906 src/slic3r/GUI/Plater.cpp:3583 msgid "Invalid data" msgstr "Nieprawidłowe dane" -#: src/slic3r/GUI/BedShapeDialog.cpp:494 src/slic3r/GUI/BedShapeDialog.cpp:543 -#: src/slic3r/GUI/BedShapeDialog.cpp:566 +#: src/slic3r/GUI/BedShapeDialog.cpp:570 src/slic3r/GUI/BedShapeDialog.cpp:619 +#: src/slic3r/GUI/BedShapeDialog.cpp:642 msgid "Invalid file format." msgstr "Nieprawidłowy format pliku." -#: src/libslic3r/Zipper.cpp:80 +#: src/libslic3r/miniz_extension.cpp:139 msgid "invalid filename" msgstr "nieprawidłowa nazwa" -#: src/slic3r/GUI/ConfigManipulation.cpp:319 +#: src/slic3r/GUI/ConfigManipulation.cpp:324 msgid "Invalid Head penetration" msgstr "Nieprawidłowe przenikanie łączników podpór" -#: src/libslic3r/Zipper.cpp:48 +#: src/libslic3r/miniz_extension.cpp:107 msgid "invalid header or archive is corrupted" msgstr "niewłaściwy nagłówek lub uszkodzone archiwum" -#: src/slic3r/GUI/Field.cpp:195 src/slic3r/GUI/Field.cpp:226 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:376 +#: src/slic3r/GUI/Field.cpp:243 src/slic3r/GUI/Field.cpp:274 +#: src/slic3r/GUI/Field.cpp:1358 src/slic3r/GUI/GUI_ObjectLayers.cpp:413 msgid "Invalid numeric input." msgstr "Nieprawidłowa wartość numeryczna." -#: src/libslic3r/Zipper.cpp:78 +#: src/libslic3r/miniz_extension.cpp:137 msgid "invalid parameter" msgstr "nieprawidłowy parametr" -#: src/slic3r/GUI/ConfigManipulation.cpp:332 +#: src/slic3r/GUI/ConfigManipulation.cpp:337 msgid "Invalid pinhead diameter" msgstr "Błędna średnica łącznika" +#: src/slic3r/GUI/GUI_ObjectList.cpp:94 src/slic3r/GUI/GUI_ObjectList.cpp:653 +#: src/slic3r/GUI/GUI_Preview.cpp:307 src/slic3r/GUI/Tab.cpp:1420 +#: src/libslic3r/ExtrusionEntity.cpp:320 src/libslic3r/ExtrusionEntity.cpp:348 +#: src/libslic3r/PrintConfig.cpp:1126 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1156 +msgid "Ironing" +msgstr "Prasowanie" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Ironing Type" +msgstr "Rodzaj prasowania" + +#: src/slic3r/GUI/GUI_App.cpp:243 +msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "bazuje na projekcie Slic3r autorstwa Alessandro Ranellucciego i społeczności RepRap." + #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:258 +#: src/slic3r/GUI/AboutDialog.cpp:283 src/slic3r/GUI/GUI_App.cpp:244 msgid "is licensed under the" msgstr "ma licencję na warunkach" -#: src/slic3r/GUI/Tab.cpp:2941 -msgid "is not compatible with print profile" -msgstr "nie jest kompatybilne z profilem druku" - -#: src/slic3r/GUI/Tab.cpp:2940 -msgid "is not compatible with printer" -msgstr "nie jest kompatybilne z drukarką" - -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso" msgstr "Izometryczny" -#: src/slic3r/GUI/MainFrame.cpp:658 +#: src/slic3r/GUI/MainFrame.cpp:955 src/slic3r/GUI/MainFrame.cpp:1275 msgid "Iso View" msgstr "Widok izometryczny" -#: src/slic3r/GUI/Tab.cpp:964 +#: src/slic3r/GUI/Tab.cpp:1282 msgid "It can't be deleted or modified." msgstr "Nie można usunąć ani zmodyfikować." -#: src/slic3r/GUI/Plater.cpp:3321 +#: src/slic3r/GUI/Plater.cpp:3124 msgid "It is not allowed to change the file to reload" msgstr "Zmiana modelu do ponownego wczytania jest niemożliwa" -#: src/libslic3r/PrintConfig.cpp:974 +#: src/libslic3r/PrintConfig.cpp:1018 msgid "It may be beneficial to increase the extruder motor current during the filament exchange sequence to allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly shaped tip." msgstr "Zwiększenie prądu podawanego do silnika ekstrudera może mieć pozytywny wpływ podczas zmiany filamentu, pomagając kształtować końcówkę przez wyciskanie oraz przepychać filament z nieprawidłowo ukształtowaną końcówką." -#: src/slic3r/GUI/GUI_App.cpp:1084 src/slic3r/GUI/Tab.cpp:2958 +#: src/slic3r/GUI/Tab.cpp:3413 +msgid "It's a last preset for this physical printer." +msgstr "Jest to ostatni zestaw ustawień dla fizycznej drukarki." + +#: src/slic3r/GUI/GUI_App.cpp:1876 src/slic3r/GUI/Tab.cpp:3187 msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "Drukowanie modeli złożonych z wielu elementów jest niemożliwe w technologii SLA." -#: src/slic3r/GUI/Tab.cpp:2229 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:601 +msgid "It's not possible to delete the last related preset for the printer." +msgstr "Nie ma możliwości usunięcia ostatniego zestawu ustawień dla drukarki." + +#: src/slic3r/GUI/Tab.cpp:2398 msgid "Jerk limits" msgstr "Limity jerku" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1757 msgid "Jitter" msgstr "Jitter" -#: src/slic3r/GUI/DoubleSlider.cpp:957 src/slic3r/GUI/DoubleSlider.cpp:1529 -#: src/slic3r/GUI/DoubleSlider.cpp:1651 +#: src/slic3r/GUI/DoubleSlider.cpp:1077 src/slic3r/GUI/DoubleSlider.cpp:1721 +#: src/slic3r/GUI/DoubleSlider.cpp:1852 src/slic3r/GUI/DoubleSlider.cpp:1856 msgid "Jump to height" msgstr "Przejdź do wysokości" -#: src/slic3r/GUI/DoubleSlider.cpp:955 +#: src/slic3r/GUI/DoubleSlider.cpp:1075 #, c-format msgid "Jump to height %s or Set extruder sequence for the entire print" msgstr "Przejdź na wysokość %s lub ustaw sekwencję ekstruderów dla całego wydruku" -#: src/libslic3r/PrintConfig.cpp:566 +#: src/slic3r/GUI/DoubleSlider.cpp:1071 src/slic3r/GUI/DoubleSlider.cpp:1852 +msgid "Jump to move" +msgstr "Przeskocz do ruchu" + +#: src/slic3r/GUI/SavePresetDialog.cpp:315 +msgid "Just switch to \"%1%\" preset" +msgstr "Przełącz na zestaw ustawień \"%1%\"" + +#: src/libslic3r/PrintConfig.cpp:602 msgid "Keep fan always on" msgstr "Wentylator zawsze włączony" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:169 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:171 msgid "Keep lower part" msgstr "Zachowaj dolną część" -#: src/slic3r/GUI/GLCanvas3D.cpp:304 +#: src/slic3r/GUI/GLCanvas3D.cpp:290 msgid "Keep min" msgstr "Zachowaj min" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:168 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 msgid "Keep upper part" msgstr "Zachowaj górną część" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:41 src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:37 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:39 src/slic3r/GUI/MainFrame.cpp:941 +#: src/slic3r/GUI/MainFrame.cpp:1332 msgid "Keyboard Shortcuts" msgstr "Skróty klawiszowe" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:245 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:259 msgid "Keyboard shortcuts" msgstr "Skróty klawiszowe" -#: src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2641 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:965 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Label objects" msgstr "Oznacz modele" -#: src/libslic3r/PrintConfig.cpp:2399 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Landscape" msgstr "Tryb krajobrazu" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Language" msgstr "Język" -#: src/slic3r/GUI/GUI_App.cpp:885 +#: src/slic3r/GUI/GUI_App.cpp:1605 src/slic3r/GUI/GUI_App.cpp:1614 msgid "Language selection" msgstr "Wybór języka" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2140 -#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2307 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2408 msgid "Last instance of an object cannot be deleted." msgstr "Ostatnia kopia modelu nie może zostać usunięta." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 msgid "Layer" msgstr "Warstwa" -#: src/slic3r/GUI/ConfigManipulation.cpp:49 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1371 #: src/libslic3r/PrintConfig.cpp:71 msgid "Layer height" msgstr "Wysokość warstwy" -#: src/libslic3r/Print.cpp:1427 +#: src/libslic3r/Print.cpp:1453 msgid "Layer height can't be greater than nozzle diameter" msgstr "Wysokość pierwszej warstwy nie może być większa od średnicy dyszy" -#: src/slic3r/GUI/Tab.cpp:2362 +#: src/slic3r/GUI/Tab.cpp:2531 msgid "Layer height limits" msgstr "Limit wysokości warstw" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 -msgid "Layer height:" -msgstr "Wysokość warstwy:" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:2488 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2880 msgid "Layer range Settings to modify" msgstr "Zakres warstw dla modyfikacji ustawień" #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:52 -#: src/libslic3r/PrintConfig.cpp:362 src/libslic3r/PrintConfig.cpp:994 -#: src/libslic3r/PrintConfig.cpp:1505 src/libslic3r/PrintConfig.cpp:1690 -#: src/libslic3r/PrintConfig.cpp:1750 src/libslic3r/PrintConfig.cpp:1930 -#: src/libslic3r/PrintConfig.cpp:1976 +#: src/libslic3r/PrintConfig.cpp:396 src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1613 src/libslic3r/PrintConfig.cpp:1798 +#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:2072 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "layers" msgstr "warstwy" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:67 src/slic3r/GUI/Tab.cpp:3512 -#: src/slic3r/GUI/Tab.cpp:3600 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:69 src/slic3r/GUI/Tab.cpp:3928 +#: src/slic3r/GUI/Tab.cpp:4010 msgid "Layers" msgstr "Warstwy" -#: src/slic3r/GUI/Tab.cpp:1048 src/slic3r/GUI/Tab.cpp:3598 +#: src/slic3r/GUI/Tab.cpp:1370 src/slic3r/GUI/Tab.cpp:4008 msgid "Layers and perimeters" msgstr "Warstwy i obrysy" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:95 -#: src/slic3r/GUI/GUI_ObjectList.cpp:613 src/libslic3r/PrintConfig.cpp:72 -#: src/libslic3r/PrintConfig.cpp:175 src/libslic3r/PrintConfig.cpp:184 -#: src/libslic3r/PrintConfig.cpp:408 src/libslic3r/PrintConfig.cpp:470 -#: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:1075 src/libslic3r/PrintConfig.cpp:1374 -#: src/libslic3r/PrintConfig.cpp:1441 src/libslic3r/PrintConfig.cpp:1622 -#: src/libslic3r/PrintConfig.cpp:2074 src/libslic3r/PrintConfig.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:2142 +#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_ObjectList.cpp:92 +#: src/slic3r/GUI/GUI_ObjectList.cpp:651 src/libslic3r/PrintConfig.cpp:72 +#: src/libslic3r/PrintConfig.cpp:209 src/libslic3r/PrintConfig.cpp:218 +#: src/libslic3r/PrintConfig.cpp:442 src/libslic3r/PrintConfig.cpp:506 +#: src/libslic3r/PrintConfig.cpp:514 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1549 src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:2217 src/libslic3r/PrintConfig.cpp:2276 +#: src/libslic3r/PrintConfig.cpp:2285 msgid "Layers and Perimeters" msgstr "Warstwy i Obrysy" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:225 msgid "Layers Slider" msgstr "Suwak warstw" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Bottom" msgstr "Spód" -#: src/slic3r/GUI/OptionsGroup.cpp:258 +#: src/slic3r/GUI/OptionsGroup.cpp:293 msgctxt "Layers" msgid "Top" msgstr "Góra" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/Preferences.cpp:440 +msgid "Layout Options" +msgstr "Opcje układu" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:48 +msgid "Leaving Paint-on supports" +msgstr "Zamykam malowanie podpór" + +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:47 +msgid "Leaving Seam painting" +msgstr "Zamykam malowanie szwu" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left" msgstr "Lewo" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1363 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1366 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Left click" msgstr "Lewy przycisk" -#: src/slic3r/GUI/GLCanvas3D.cpp:237 -msgid "Left mouse button:" -msgstr "Lewy przycisk myszki:" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:46 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:29 +msgid "Left mouse button" +msgstr "Lewy przycisk myszy" -#: src/slic3r/GUI/MainFrame.cpp:671 +#: src/slic3r/GUI/GLCanvas3D.cpp:233 +msgid "Left mouse button:" +msgstr "Lewy przycisk myszy:" + +#: src/slic3r/GUI/MainFrame.cpp:968 src/slic3r/GUI/MainFrame.cpp:1288 msgid "Left View" msgstr "Widok lewy" -#: src/slic3r/GUI/GUI_Preview.cpp:257 +#: src/slic3r/GUI/GUI_Preview.cpp:339 msgid "Legend" msgstr "Legenda" -#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 +#: src/slic3r/GUI/GUI_Preview.cpp:1480 +msgid "Legend/Estimated printing time" +msgstr "Legenda/szacowany czas drukowania" + +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1659 msgid "Length" msgstr "Długość" -#: src/libslic3r/PrintConfig.cpp:328 +#: src/libslic3r/PrintConfig.cpp:362 msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "Długość rurki chłodzącej ograniczająca ruchy chłodzące do jej zakresu." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:129 +#: src/slic3r/GUI/AboutDialog.cpp:141 msgid "License agreements of all following programs (libraries) are part of application license agreement" msgstr "Umowy licencyjne dla wszystkich części programu (bibliotek) są częścią umowy licencyjnej programu" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1669 msgid "Lift Z" msgstr "Z-hop" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:886 msgid "Line" msgstr "Linia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1427 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1558 msgid "Load" msgstr "Załaduj" -#: src/slic3r/GUI/MainFrame.cpp:460 +#: src/slic3r/GUI/MainFrame.cpp:1042 msgid "Load a model" msgstr "Wczytaj model" -#: src/libslic3r/PrintConfig.cpp:3505 +#: src/slic3r/GUI/MainFrame.cpp:1046 +msgid "Load an model saved with imperial units" +msgstr "Wczytaj model zapisany w jednostkach imperialnych" + +#: src/slic3r/GUI/MainFrame.cpp:1058 +msgid "Load an SL1 archive" +msgstr "Wczytaj archiwum SL1" + +#: src/libslic3r/PrintConfig.cpp:3710 msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." msgstr "Załaduj i przechowuj ustawienia w podanej lokalizacji. Jest to przydatne przy używaniu wielu profili lub konfiguracji z lokalizacji sieciowej." -#: src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3688 msgid "Load config file" msgstr "Wczytaj plik konfiguracyjny" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Wczytaj Konfigurację z ini/amf/3mf/gcode i złącz" -#: src/slic3r/GUI/MainFrame.cpp:467 +#: src/slic3r/GUI/MainFrame.cpp:1058 msgid "Load configuration from project file" msgstr "Wczytaj konfigurację z pliku projektu" -#: src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:3689 msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." msgstr "Wczytaj konfigurację z określonego pliku. Może być użyte więcej niż raz, aby wczytać opcje z wielu plików." -#: src/slic3r/GUI/MainFrame.cpp:464 +#: src/slic3r/GUI/MainFrame.cpp:1055 msgid "Load exported configuration file" msgstr "Wczytaj wyeksportowany plik konfiguracyjny" -#: src/slic3r/GUI/Plater.cpp:1395 -msgid "Load File" -msgstr "Wczytaj Plik" - -#: src/slic3r/GUI/Plater.cpp:1399 -msgid "Load Files" -msgstr "Wczytaj Pliki" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1879 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2038 msgid "Load Part" msgstr "Wczytaj Element" -#: src/slic3r/GUI/MainFrame.cpp:471 +#: src/slic3r/GUI/MainFrame.cpp:1062 msgid "Load presets from a bundle" msgstr "Wczytaj zestaw ustawień" -#: src/slic3r/GUI/Plater.cpp:4575 +#: src/slic3r/GUI/Plater.cpp:4627 msgid "Load Project" msgstr "Wczytaj Projekt" -#: src/slic3r/GUI/BedShapeDialog.cpp:102 +#: src/slic3r/GUI/BedShapeDialog.cpp:243 msgid "Load shape from STL..." msgstr "Wczytaj kształt z STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:182 src/slic3r/GUI/BedShapeDialog.cpp:261 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 src/slic3r/GUI/BedShapeDialog.cpp:405 msgid "Load..." msgstr "Otwórz..." @@ -4071,19 +4696,27 @@ msgstr "Otwórz..." msgid "loaded" msgstr "załadowano" -#: src/slic3r/GUI/Plater.cpp:2426 +#: src/slic3r/GUI/Plater.cpp:2388 msgid "Loaded" msgstr "Wczytano" -#: src/slic3r/GUI/Plater.cpp:2273 +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Loading" msgstr "Ładowanie" -#: src/slic3r/GUI/GUI_App.cpp:474 +#: src/slic3r/GUI/GUI_App.cpp:797 +msgid "Loading configuration" +msgstr "Wczytywanie konfiguracji" + +#: src/slic3r/GUI/Plater.cpp:2226 +msgid "Loading file" +msgstr "Wczytywanie pliku" + +#: src/slic3r/GUI/GUI_App.cpp:1125 msgid "Loading of a mode view" msgstr "Ładowanie trybu wyświetlania" -#: src/slic3r/GUI/GUI_App.cpp:466 +#: src/slic3r/GUI/GUI_App.cpp:1120 msgid "Loading of current presets" msgstr "Wczytywanie aktualnych zestawów ustawień" @@ -4092,101 +4725,117 @@ msgstr "Wczytywanie aktualnych zestawów ustawień" msgid "Loading repaired model" msgstr "Ładowanie naprawionego modelu" -#: src/libslic3r/PrintConfig.cpp:607 +#: src/libslic3r/PrintConfig.cpp:643 msgid "Loading speed" msgstr "Prędkość ładowania" -#: src/libslic3r/PrintConfig.cpp:615 +#: src/libslic3r/PrintConfig.cpp:651 msgid "Loading speed at the start" msgstr "Początkowa prędkość ładowania" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:63 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:106 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:69 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:112 msgid "Local coordinates" msgstr "Lokalny układ współrzędnych" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:48 msgid "Lock supports under new islands" msgstr "Zablokuj podpory pod nowymi wyspami" -#: src/slic3r/GUI/Tab.cpp:3252 +#: src/slic3r/GUI/Tab.cpp:3689 msgid "LOCKED LOCK" msgstr "ZAMKNIĘTA KŁÓDKA" -#: src/slic3r/GUI/Tab.cpp:3280 +#: src/slic3r/GUI/Tab.cpp:3717 msgid "LOCKED LOCK icon indicates that the settings are the same as the system (or default) values for the current option group" msgstr "ZAMKNIĘTA KŁÓDKA oznacza, że ustawienia są takie same jak wartości systemowe (lub domyślne) w obecnej grupie ustawień" -#: src/slic3r/GUI/Tab.cpp:3296 +#: src/slic3r/GUI/Tab.cpp:3733 msgid "LOCKED LOCK icon indicates that the value is the same as the system (or default) value." msgstr "ZAMKNIĘTA KŁÓDKA oznacza, że wartości są takie same jak systemowe (lub domyślne)." -#: src/libslic3r/PrintConfig.cpp:3508 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "Logging level" msgstr "Poziom logowania" -#: src/libslic3r/PrintConfig.cpp:1695 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Loops (minimum)" msgstr "Pętle (minimum)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 msgid "Lower Layer" msgstr "Dolna Warstwa" -#: src/slic3r/GUI/Tab.cpp:2188 src/slic3r/GUI/Tab.cpp:2273 -#: src/libslic3r/PrintConfig.cpp:1129 src/libslic3r/PrintConfig.cpp:1146 -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1179 -#: src/libslic3r/PrintConfig.cpp:1189 src/libslic3r/PrintConfig.cpp:1199 -#: src/libslic3r/PrintConfig.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:2346 src/slic3r/GUI/Tab.cpp:2442 +#: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1254 src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1287 src/libslic3r/PrintConfig.cpp:1297 +#: src/libslic3r/PrintConfig.cpp:1307 src/libslic3r/PrintConfig.cpp:1317 msgid "Machine limits" msgstr "Limity maszynowe" -#: src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:3667 +msgid "Machine limits are not set, therefore the print time estimate may not be accurate." +msgstr "Limity maszynowe nie zostały ustawione, dlatego szacowany czas druku może odbiegać od rzeczywistości." + +#: src/slic3r/GUI/Tab.cpp:3660 +msgid "Machine limits will be emitted to G-code and used to estimate print time." +msgstr "Limity maszynowe zostaną przekazane do G-code i użyte do obliczenia czasu drukowania." + +#: src/slic3r/GUI/Tab.cpp:3663 +msgid "Machine limits will NOT be emitted to G-code, however they will be used to estimate print time, which may therefore not be accurate as the printer may apply a different set of machine limits." +msgstr "Limity maszynowe NIE będą przekazywane do G-code, jednak zostaną użyte do obliczenia czasu drukowania, który może okazać się niedokładny, ponieważ drukarka może zastosować inne." + +#: src/slic3r/GUI/Plater.cpp:172 msgid "Manifold" msgstr "Model zamknięty" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:57 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:56 msgid "Manual editing" msgstr "Edycja ręczna" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:180 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:214 msgid "Masked SLA file exported to %1%" msgstr "Maskowany plik SLA wyeksportowany do %1%" -#: src/slic3r/GUI/MainFrame.cpp:752 +#: src/slic3r/GUI/MainFrame.cpp:1451 msgid "Mate&rial Settings Tab" -msgstr "Ustawienia Mate&riału" +msgstr "Ustawienia mate&riału" -#: src/slic3r/GUI/Tab.cpp:3478 src/slic3r/GUI/Tab.cpp:3480 +#: src/slic3r/GUI/Tab.cpp:3894 src/slic3r/GUI/Tab.cpp:3896 msgid "Material" msgstr "Materiał" -#: src/slic3r/GUI/Tab.hpp:416 +#: src/slic3r/GUI/Tab.hpp:486 msgid "Material Settings" -msgstr "Ustawienia Materiału" +msgstr "Ustawienia materiału" -#: src/slic3r/GUI/Plater.cpp:163 +#: src/slic3r/GUI/GLCanvas3D.cpp:4304 src/slic3r/GUI/GLCanvas3D.cpp:4940 +msgid "Material Settings Tab" +msgstr "Ustawienia materiału" + +#: src/slic3r/GUI/Plater.cpp:169 msgid "Materials" msgstr "Materiały" -#: src/libslic3r/PrintConfig.cpp:1217 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1325 src/libslic3r/PrintConfig.cpp:1334 msgid "Max" msgstr "Max" -#: src/libslic3r/PrintConfig.cpp:2734 +#: src/libslic3r/PrintConfig.cpp:2898 msgid "Max bridge length" msgstr "Maksymalna długość mostu" -#: src/libslic3r/PrintConfig.cpp:2658 +#: src/libslic3r/PrintConfig.cpp:2812 msgid "Max bridges on a pillar" msgstr "Maks. liczba mostków na słupku" -#: src/libslic3r/PrintConfig.cpp:2822 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Max merge distance" msgstr "Maksymalny dystans łączenia" -#: src/libslic3r/PrintConfig.cpp:2743 +#: src/libslic3r/PrintConfig.cpp:2907 msgid "Max pillar linking distance" msgstr "Maksymalny dystans łączenia słupków" @@ -4194,7 +4843,7 @@ msgstr "Maksymalny dystans łączenia słupków" msgid "Max print height" msgstr "Maksymalna wysokość wydruku" -#: src/libslic3r/PrintConfig.cpp:1237 +#: src/libslic3r/PrintConfig.cpp:1345 msgid "Max print speed" msgstr "Maksymalna prędkość druku" @@ -4202,171 +4851,189 @@ msgstr "Maksymalna prędkość druku" msgid "max PrusaSlicer version" msgstr "max wersja PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:1268 +#: src/libslic3r/PrintConfig.cpp:1376 msgid "Max volumetric slope negative" msgstr "Maksymalny negatywny kąt zwisu" -#: src/libslic3r/PrintConfig.cpp:1257 +#: src/libslic3r/PrintConfig.cpp:1365 msgid "Max volumetric slope positive" -msgstr "Maksymalny objętościowo kąt pozytywny" +msgstr "Pozytywna krzywa natężenia przepływu" -#: src/libslic3r/PrintConfig.cpp:597 src/libslic3r/PrintConfig.cpp:1247 +#: src/libslic3r/PrintConfig.cpp:633 src/libslic3r/PrintConfig.cpp:1355 msgid "Max volumetric speed" msgstr "Maksymalny przepływ" -#: src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2411 msgid "Maximal bridging distance" msgstr "Maksymalna odległość drukowania mostów" -#: src/libslic3r/PrintConfig.cpp:2269 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Maximal distance between supports on sparse infill sections." msgstr "Minimalny odstęp pomiędzy podporami w sekcjach rzadkiego wypełnienia." -#: src/libslic3r/PrintConfig.cpp:1145 +#: src/libslic3r/PrintConfig.cpp:1253 msgid "Maximum acceleration E" msgstr "Maksymalne przyspieszenie E" -#: src/libslic3r/PrintConfig.cpp:1151 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Maximum acceleration of the E axis" msgstr "Maksymalne przyspieszenie osi E (ekstrudera)" -#: src/libslic3r/PrintConfig.cpp:1148 +#: src/libslic3r/PrintConfig.cpp:1256 msgid "Maximum acceleration of the X axis" msgstr "Maksymalne przyspieszenie osi X" -#: src/libslic3r/PrintConfig.cpp:1149 +#: src/libslic3r/PrintConfig.cpp:1257 msgid "Maximum acceleration of the Y axis" msgstr "Maksymalne przyspieszenie osi Y" -#: src/libslic3r/PrintConfig.cpp:1150 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Maximum acceleration of the Z axis" msgstr "Maksymalne przyspieszenie osi Z" -#: src/libslic3r/PrintConfig.cpp:1198 +#: src/libslic3r/PrintConfig.cpp:1306 msgid "Maximum acceleration when extruding" msgstr "Maksymalne przyspieszenie podczas ekstruzji" -#: src/libslic3r/PrintConfig.cpp:1200 +#: src/libslic3r/PrintConfig.cpp:1308 msgid "Maximum acceleration when extruding (M204 S)" msgstr "Maksymalne przyspieszenie podczas ekstrudowania (M204 S)" -#: src/libslic3r/PrintConfig.cpp:1208 +#: src/libslic3r/PrintConfig.cpp:1316 msgid "Maximum acceleration when retracting" msgstr "Maksymalne przyspieszenie podczas retrakcji" -#: src/libslic3r/PrintConfig.cpp:1210 +#: src/libslic3r/PrintConfig.cpp:1318 msgid "Maximum acceleration when retracting (M204 T)" msgstr "Maksymalne przyspieszenie podczas retrakcji (M204 T)" -#: src/libslic3r/PrintConfig.cpp:1142 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Maximum acceleration X" msgstr "Maksymalne przyspieszenie X" -#: src/libslic3r/PrintConfig.cpp:1143 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "Maximum acceleration Y" msgstr "Maksymalne przyspieszenie Y" -#: src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1252 msgid "Maximum acceleration Z" msgstr "Maksymalne przyspieszenie Z" -#: src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2391 msgid "Maximum accelerations" msgstr "Maksymalne przyspieszenia" -#: src/libslic3r/PrintConfig.cpp:2533 src/libslic3r/PrintConfig.cpp:2534 +#: src/libslic3r/PrintConfig.cpp:2676 src/libslic3r/PrintConfig.cpp:2677 msgid "Maximum exposure time" msgstr "Maksymalny czas naświetlania" -#: src/libslic3r/PrintConfig.cpp:1128 +#: src/libslic3r/PrintConfig.cpp:1236 msgid "Maximum feedrate E" msgstr "Maksymalny posuw E" -#: src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1242 msgid "Maximum feedrate of the E axis" msgstr "Maksymalny posuw (prędkość ruchu) osi E (ekstrudera)" -#: src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1239 msgid "Maximum feedrate of the X axis" msgstr "Maksymalny posuw (prędkość ruchu) osi X" -#: src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Maximum feedrate of the Y axis" msgstr "Maksymalny posuw (prędkość ruchu) osi Y" -#: src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "Maximum feedrate of the Z axis" msgstr "Maksymalny posuw (prędkość ruchu) osi Z" -#: src/libslic3r/PrintConfig.cpp:1125 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Maximum feedrate X" msgstr "Maksymalny posuw osi X" -#: src/libslic3r/PrintConfig.cpp:1126 +#: src/libslic3r/PrintConfig.cpp:1234 msgid "Maximum feedrate Y" msgstr "Maksymalny posuw Y" -#: src/libslic3r/PrintConfig.cpp:1127 +#: src/libslic3r/PrintConfig.cpp:1235 msgid "Maximum feedrate Z" msgstr "Maksymalny posuw Z" -#: src/slic3r/GUI/Tab.cpp:2217 +#: src/slic3r/GUI/Tab.cpp:2386 msgid "Maximum feedrates" msgstr "Maksymalne prędkości posuwu" -#: src/libslic3r/PrintConfig.cpp:2556 src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2699 src/libslic3r/PrintConfig.cpp:2700 msgid "Maximum initial exposure time" msgstr "Maksymalny początkowy czas naświetlania" -#: src/libslic3r/PrintConfig.cpp:1162 +#: src/libslic3r/PrintConfig.cpp:1270 msgid "Maximum jerk E" msgstr "Maksymalny jerk E" -#: src/libslic3r/PrintConfig.cpp:1168 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Maximum jerk of the E axis" msgstr "Maksymalny jerk dla osi E (ekstrudera)" -#: src/libslic3r/PrintConfig.cpp:1165 +#: src/libslic3r/PrintConfig.cpp:1273 msgid "Maximum jerk of the X axis" msgstr "Maksymalny jerk osi X" -#: src/libslic3r/PrintConfig.cpp:1166 +#: src/libslic3r/PrintConfig.cpp:1274 msgid "Maximum jerk of the Y axis" msgstr "Maksymalny jerk osi Y" -#: src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1275 msgid "Maximum jerk of the Z axis" msgstr "Maksymalny jerk dla osi Z" -#: src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "Maximum jerk X" msgstr "Maksymalny jerk X" -#: src/libslic3r/PrintConfig.cpp:1160 +#: src/libslic3r/PrintConfig.cpp:1268 msgid "Maximum jerk Y" msgstr "Maksymalny jerk Y" -#: src/libslic3r/PrintConfig.cpp:1161 +#: src/libslic3r/PrintConfig.cpp:1269 msgid "Maximum jerk Z" msgstr "Maksymalny jerk Z" -#: src/libslic3r/PrintConfig.cpp:2660 +#: src/libslic3r/PrintConfig.cpp:2814 msgid "Maximum number of bridges that can be placed on a pillar. Bridges hold support point pinheads and connect to pillars as small branches." msgstr "Maksymalna liczba mostków, która zostanie umieszczona na słupku podpory. Mostki wspierają łączniki podpór i łączą słupki podpór." -#: src/libslic3r/PrintConfig.cpp:598 +#: src/libslic3r/PrintConfig.cpp:634 msgid "Maximum volumetric speed allowed for this filament. Limits the maximum volumetric speed of a print to the minimum of print and filament volumetric speed. Set to zero for no limit." -msgstr "Maksymalna prędkość objętościowa dla tego filamentu. Ogranicza maksymalną prędkość objętościową do minimum objętościowej prędkości druku i filamentu. Ustaw zero aby usunąć ograniczenie." +msgstr "Maksymalne objętościowe natężenie przepływu dla tego filamentu. Ogranicza maksymalne natężenie przepływu do minimum objętościowej prędkości druku i filamentu. Ustaw zero aby usunąć ograniczenie." -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2569 src/libslic3r/PrintConfig.cpp:3641 msgid "Merge" msgstr "Łączenie" -#: src/libslic3r/PrintConfig.cpp:2683 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2660 +msgid "Merge all parts to the one single object" +msgstr "Scal wszystkie części w jeden model" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Merge objects to the one multipart object" +msgstr "Scal modele w jeden model wieloczęściowy" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1876 +msgid "Merge objects to the one single object" +msgstr "Scal modele w jeden model pojedynczy" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2576 +msgid "Merged" +msgstr "Scalono" + +#: src/libslic3r/PrintConfig.cpp:2847 msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." msgstr "Łączenie mostów lub słupków podpór z innymi może zwiększyć ich promień. 0 oznacza brak zmiany, 1 oznacza zmianę w całości." -#: src/libslic3r/SLAPrintSteps.cpp:64 +#: src/libslic3r/SLAPrintSteps.cpp:65 msgid "Merging slices and calculating statistics" msgstr "Łączenie cięć i obliczanie statystyk" @@ -4374,15 +5041,15 @@ msgstr "Łączenie cięć i obliczanie statystyk" msgid "Mesh repair failed." msgstr "Niepowodzenie naprawy siatki." -#: src/slic3r/GUI/DoubleSlider.cpp:1635 +#: src/slic3r/GUI/DoubleSlider.cpp:1831 msgid "Message for pause print on current layer (%1% mm)." msgstr "Komenda pauzująca wydruk na danej warstwie (%1% mm)." -#: src/libslic3r/PrintConfig.cpp:1280 src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1388 src/libslic3r/PrintConfig.cpp:1397 msgid "Min" msgstr "Min" -#: src/libslic3r/PrintConfig.cpp:1298 +#: src/libslic3r/PrintConfig.cpp:1406 msgid "Min print speed" msgstr "Minimalna prędkość druku" @@ -4390,232 +5057,237 @@ msgstr "Minimalna prędkość druku" msgid "min PrusaSlicer version" msgstr "min wersja PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:2772 +#: src/libslic3r/PrintConfig.cpp:2936 msgid "Minimal distance of the support points" msgstr "Minimalne rozmieszczenie punktów podpór" -#: src/libslic3r/PrintConfig.cpp:1306 +#: src/libslic3r/PrintConfig.cpp:1414 msgid "Minimal filament extrusion length" msgstr "Minimalna długość ekstruzji" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:53 msgid "Minimal points distance" msgstr "Minimalny dystans pomiędzy punktami" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:703 msgid "Minimal purge on wipe tower" msgstr "Minimalna objętość czyszczenia" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:221 msgid "Minimum bottom shell thickness" msgstr "Minimalna grubość dolnej powłoki" -#: src/slic3r/GUI/PresetHints.cpp:339 +#: src/slic3r/GUI/PresetHints.cpp:337 msgid "Minimum bottom shell thickness is %1% mm." msgstr "Minimalna grubość dolnej powłoki to %1% mm." -#: src/libslic3r/PrintConfig.cpp:1512 +#: src/libslic3r/PrintConfig.cpp:1620 msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." -msgstr "Minimalna rozdzielczość, używana do uproszczenia modelu wejściowego, co prowadzi do przyspieszenia procesu cięcia. Modele w wysokiej rozdzielczości mogą zawierać więcej szczegółów niż drukarka jest w stanie przetworzyć. Ustaw zero aby wyłączyć upraszczanie i użyć pełnej rozdzielczości pliku wejściowego." +msgstr "Minimalna rozdzielczość, używana do uproszczenia modelu wejściowego, co prowadzi do przyspieszenia procesu cięcia. Modele w wysokiej rozdzielczości mogą zawierać więcej szczegółów niż drukarka jest w stanie przetworzyć. Ustaw zero, aby wyłączyć upraszczanie i użyć pełnej rozdzielczości pliku wejściowego." -#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2526 +#: src/libslic3r/PrintConfig.cpp:2668 src/libslic3r/PrintConfig.cpp:2669 msgid "Minimum exposure time" msgstr "Minimalny czas naświetlania" -#: src/libslic3r/PrintConfig.cpp:1178 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Minimum feedrate when extruding" msgstr "Minimalna prędkość posuwu z ekstruzją" -#: src/libslic3r/PrintConfig.cpp:1180 +#: src/libslic3r/PrintConfig.cpp:1288 msgid "Minimum feedrate when extruding (M205 S)" msgstr "Minimalna prędkość posuwu z ekstruzją (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2234 +#: src/slic3r/GUI/Tab.cpp:2403 msgid "Minimum feedrates" msgstr "Minimalna prędkość posuwu" -#: src/libslic3r/PrintConfig.cpp:2548 src/libslic3r/PrintConfig.cpp:2549 +#: src/libslic3r/PrintConfig.cpp:2691 src/libslic3r/PrintConfig.cpp:2692 msgid "Minimum initial exposure time" msgstr "Minimalny początkowy czas naświetlania" -#: src/slic3r/GUI/Tab.cpp:1069 +#: src/slic3r/GUI/Tab.cpp:1391 msgid "Minimum shell thickness" msgstr "Minimalna grubość powłoki" -#: src/libslic3r/PrintConfig.cpp:1787 src/libslic3r/PrintConfig.cpp:1788 +#: src/libslic3r/PrintConfig.cpp:1902 src/libslic3r/PrintConfig.cpp:1903 msgid "Minimum thickness of a top / bottom shell" msgstr "Minimalna grubość górnej/dolnej powłoki" -#: src/libslic3r/PrintConfig.cpp:2146 +#: src/libslic3r/PrintConfig.cpp:2289 msgid "Minimum top shell thickness" msgstr "Minimalna grubość górnej powłoki" -#: src/slic3r/GUI/PresetHints.cpp:320 +#: src/slic3r/GUI/PresetHints.cpp:318 msgid "Minimum top shell thickness is %1% mm." msgstr "Minimalna grubość górnej powłoki to %1% mm." -#: src/libslic3r/PrintConfig.cpp:1522 +#: src/libslic3r/PrintConfig.cpp:1630 msgid "Minimum travel after retraction" msgstr "Minimalny ruch jałowy po retrakcji" -#: src/libslic3r/PrintConfig.cpp:1188 +#: src/libslic3r/PrintConfig.cpp:1296 msgid "Minimum travel feedrate" msgstr "Minimalna prędkość posuwu ruchu jałowego" -#: src/libslic3r/PrintConfig.cpp:1190 +#: src/libslic3r/PrintConfig.cpp:1298 msgid "Minimum travel feedrate (M205 T)" msgstr "Minimalna prędkość posuwu ruchu jałowego (M205 T)" -#: src/libslic3r/PrintConfig.cpp:2917 +#: src/libslic3r/PrintConfig.cpp:3081 msgid "Minimum wall thickness of a hollowed model." msgstr "Minimalna grubość ścianki drążonego modelu." -#: src/libslic3r/PrintConfig.cpp:2449 +#: src/libslic3r/PrintConfig.cpp:2592 msgid "Minimum width of features to maintain when doing elephant foot compensation." msgstr "Minimalna szerokość detali do zachowania podczas kompensacji stopy słonia." -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror" msgstr "Lustrzane" -#: src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2522 msgid "Mirror horizontally" msgstr "Odbij w poziomie" -#: src/slic3r/GUI/GLCanvas3D.cpp:2053 +#: src/slic3r/GUI/GLCanvas3D.cpp:2226 msgid "Mirror Object" msgstr "Odbicie Lustrzane" -#: src/slic3r/GUI/Plater.cpp:4002 +#: src/slic3r/GUI/Plater.cpp:3922 msgid "Mirror the selected object" msgstr "Odbicie lustrzane wybranego modelu" -#: src/slic3r/GUI/Plater.cpp:3995 +#: src/slic3r/GUI/Plater.cpp:3915 msgid "Mirror the selected object along the X axis" msgstr "Odbicie lustrzane wybranego modelu w osi X" -#: src/slic3r/GUI/Plater.cpp:3997 +#: src/slic3r/GUI/Plater.cpp:3917 msgid "Mirror the selected object along the Y axis" msgstr "Odbicie lustrzane wybranego modelu w osi Y" -#: src/slic3r/GUI/Plater.cpp:3999 +#: src/slic3r/GUI/Plater.cpp:3919 msgid "Mirror the selected object along the Z axis" msgstr "Odbicie lustrzane wybranego modelu w osi Z" -#: src/libslic3r/PrintConfig.cpp:2386 +#: src/libslic3r/PrintConfig.cpp:2529 msgid "Mirror vertically" msgstr "Odbij w poziomie" -#: src/slic3r/Utils/AstroBox.cpp:68 src/slic3r/Utils/OctoPrint.cpp:68 +#: src/slic3r/Utils/AstroBox.cpp:69 src/slic3r/Utils/OctoPrint.cpp:68 #, c-format msgid "Mismatched type of print host: %s" msgstr "Niepasujący typ serwera wydruku: %s" -#: src/libslic3r/ExtrusionEntity.cpp:323 +#: src/libslic3r/ExtrusionEntity.cpp:328 src/libslic3r/ExtrusionEntity.cpp:364 msgid "Mixed" msgstr "Mieszane" -#: src/libslic3r/PrintConfig.cpp:2491 +#: src/libslic3r/PrintConfig.cpp:2634 msgid "ml" msgstr "ml" -#: src/slic3r/GUI/BedShapeDialog.cpp:92 src/slic3r/GUI/ConfigWizard.cpp:218 -#: src/slic3r/GUI/ConfigWizard.cpp:970 src/slic3r/GUI/ConfigWizard.cpp:984 +#: src/slic3r/GUI/BedShapeDialog.cpp:129 src/slic3r/GUI/ConfigWizard.cpp:236 +#: src/slic3r/GUI/ConfigWizard.cpp:1336 src/slic3r/GUI/ConfigWizard.cpp:1350 #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:87 -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:135 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:333 -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 src/slic3r/GUI/GCodeViewer.cpp:2189 +#: src/slic3r/GUI/GCodeViewer.cpp:2197 src/slic3r/GUI/GUI_ObjectLayers.cpp:145 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:418 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:486 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:487 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 #: src/slic3r/GUI/WipeTowerDialog.cpp:85 src/libslic3r/PrintConfig.cpp:75 -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:91 -#: src/libslic3r/PrintConfig.cpp:122 src/libslic3r/PrintConfig.cpp:188 -#: src/libslic3r/PrintConfig.cpp:246 src/libslic3r/PrintConfig.cpp:321 -#: src/libslic3r/PrintConfig.cpp:329 src/libslic3r/PrintConfig.cpp:379 -#: src/libslic3r/PrintConfig.cpp:505 src/libslic3r/PrintConfig.cpp:516 -#: src/libslic3r/PrintConfig.cpp:534 src/libslic3r/PrintConfig.cpp:712 -#: src/libslic3r/PrintConfig.cpp:1231 src/libslic3r/PrintConfig.cpp:1292 -#: src/libslic3r/PrintConfig.cpp:1310 src/libslic3r/PrintConfig.cpp:1328 -#: src/libslic3r/PrintConfig.cpp:1384 src/libslic3r/PrintConfig.cpp:1394 -#: src/libslic3r/PrintConfig.cpp:1516 src/libslic3r/PrintConfig.cpp:1524 -#: src/libslic3r/PrintConfig.cpp:1565 src/libslic3r/PrintConfig.cpp:1573 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1591 -#: src/libslic3r/PrintConfig.cpp:1599 src/libslic3r/PrintConfig.cpp:1682 -#: src/libslic3r/PrintConfig.cpp:1914 src/libslic3r/PrintConfig.cpp:1985 -#: src/libslic3r/PrintConfig.cpp:2019 src/libslic3r/PrintConfig.cpp:2147 -#: src/libslic3r/PrintConfig.cpp:2226 src/libslic3r/PrintConfig.cpp:2233 -#: src/libslic3r/PrintConfig.cpp:2240 src/libslic3r/PrintConfig.cpp:2270 -#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2290 -#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2484 -#: src/libslic3r/PrintConfig.cpp:2623 src/libslic3r/PrintConfig.cpp:2632 -#: src/libslic3r/PrintConfig.cpp:2641 src/libslic3r/PrintConfig.cpp:2651 -#: src/libslic3r/PrintConfig.cpp:2695 src/libslic3r/PrintConfig.cpp:2705 -#: src/libslic3r/PrintConfig.cpp:2717 src/libslic3r/PrintConfig.cpp:2737 -#: src/libslic3r/PrintConfig.cpp:2747 src/libslic3r/PrintConfig.cpp:2757 -#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2790 -#: src/libslic3r/PrintConfig.cpp:2804 src/libslic3r/PrintConfig.cpp:2815 -#: src/libslic3r/PrintConfig.cpp:2828 src/libslic3r/PrintConfig.cpp:2873 -#: src/libslic3r/PrintConfig.cpp:2883 src/libslic3r/PrintConfig.cpp:2892 -#: src/libslic3r/PrintConfig.cpp:2902 src/libslic3r/PrintConfig.cpp:2918 -#: src/libslic3r/PrintConfig.cpp:2942 +#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:124 src/libslic3r/PrintConfig.cpp:222 +#: src/libslic3r/PrintConfig.cpp:280 src/libslic3r/PrintConfig.cpp:355 +#: src/libslic3r/PrintConfig.cpp:363 src/libslic3r/PrintConfig.cpp:413 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:570 src/libslic3r/PrintConfig.cpp:748 +#: src/libslic3r/PrintConfig.cpp:1158 src/libslic3r/PrintConfig.cpp:1339 +#: src/libslic3r/PrintConfig.cpp:1400 src/libslic3r/PrintConfig.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:1436 src/libslic3r/PrintConfig.cpp:1492 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1624 +#: src/libslic3r/PrintConfig.cpp:1632 src/libslic3r/PrintConfig.cpp:1673 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1691 +#: src/libslic3r/PrintConfig.cpp:1699 src/libslic3r/PrintConfig.cpp:1707 +#: src/libslic3r/PrintConfig.cpp:1790 src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2127 src/libslic3r/PrintConfig.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:2290 src/libslic3r/PrintConfig.cpp:2369 +#: src/libslic3r/PrintConfig.cpp:2376 src/libslic3r/PrintConfig.cpp:2383 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2433 src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2627 src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2775 src/libslic3r/PrintConfig.cpp:2784 +#: src/libslic3r/PrintConfig.cpp:2794 src/libslic3r/PrintConfig.cpp:2859 +#: src/libslic3r/PrintConfig.cpp:2869 src/libslic3r/PrintConfig.cpp:2881 +#: src/libslic3r/PrintConfig.cpp:2901 src/libslic3r/PrintConfig.cpp:2911 +#: src/libslic3r/PrintConfig.cpp:2921 src/libslic3r/PrintConfig.cpp:2939 +#: src/libslic3r/PrintConfig.cpp:2954 src/libslic3r/PrintConfig.cpp:2968 +#: src/libslic3r/PrintConfig.cpp:2979 src/libslic3r/PrintConfig.cpp:2992 +#: src/libslic3r/PrintConfig.cpp:3037 src/libslic3r/PrintConfig.cpp:3047 +#: src/libslic3r/PrintConfig.cpp:3056 src/libslic3r/PrintConfig.cpp:3066 +#: src/libslic3r/PrintConfig.cpp:3082 src/libslic3r/PrintConfig.cpp:3106 msgid "mm" msgstr "mm" -#: src/libslic3r/PrintConfig.cpp:1547 src/libslic3r/PrintConfig.cpp:1556 +#: src/libslic3r/PrintConfig.cpp:1655 src/libslic3r/PrintConfig.cpp:1664 msgid "mm (zero to disable)" -msgstr "mm (zero aby wyłączyć)" +msgstr "mm (zero, aby wyłączyć)" -#: src/libslic3r/PrintConfig.cpp:451 src/libslic3r/PrintConfig.cpp:560 -#: src/libslic3r/PrintConfig.cpp:882 src/libslic3r/PrintConfig.cpp:895 -#: src/libslic3r/PrintConfig.cpp:1015 src/libslic3r/PrintConfig.cpp:1041 -#: src/libslic3r/PrintConfig.cpp:1423 src/libslic3r/PrintConfig.cpp:1761 -#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:1951 -#: src/libslic3r/PrintConfig.cpp:2111 +#: src/libslic3r/PrintConfig.cpp:487 src/libslic3r/PrintConfig.cpp:596 +#: src/libslic3r/PrintConfig.cpp:924 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1059 src/libslic3r/PrintConfig.cpp:1085 +#: src/libslic3r/PrintConfig.cpp:1531 src/libslic3r/PrintConfig.cpp:1876 +#: src/libslic3r/PrintConfig.cpp:2025 src/libslic3r/PrintConfig.cpp:2093 +#: src/libslic3r/PrintConfig.cpp:2254 msgid "mm or %" msgstr "mm lub %" -#: src/libslic3r/PrintConfig.cpp:237 src/libslic3r/PrintConfig.cpp:609 -#: src/libslic3r/PrintConfig.cpp:617 src/libslic3r/PrintConfig.cpp:626 -#: src/libslic3r/PrintConfig.cpp:634 src/libslic3r/PrintConfig.cpp:661 -#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:922 -#: src/libslic3r/PrintConfig.cpp:1050 src/libslic3r/PrintConfig.cpp:1135 -#: src/libslic3r/PrintConfig.cpp:1169 src/libslic3r/PrintConfig.cpp:1181 -#: src/libslic3r/PrintConfig.cpp:1191 src/libslic3r/PrintConfig.cpp:1241 -#: src/libslic3r/PrintConfig.cpp:1300 src/libslic3r/PrintConfig.cpp:1433 -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1616 -#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/PrintConfig.cpp:2154 +#: src/libslic3r/PrintConfig.cpp:271 src/libslic3r/PrintConfig.cpp:645 +#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:662 +#: src/libslic3r/PrintConfig.cpp:670 src/libslic3r/PrintConfig.cpp:697 +#: src/libslic3r/PrintConfig.cpp:716 src/libslic3r/PrintConfig.cpp:966 +#: src/libslic3r/PrintConfig.cpp:1094 src/libslic3r/PrintConfig.cpp:1167 +#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1277 +#: src/libslic3r/PrintConfig.cpp:1289 src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1724 src/libslic3r/PrintConfig.cpp:2170 +#: src/libslic3r/PrintConfig.cpp:2297 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:462 src/libslic3r/PrintConfig.cpp:904 -#: src/libslic3r/PrintConfig.cpp:1720 src/libslic3r/PrintConfig.cpp:1772 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2124 +#: src/libslic3r/PrintConfig.cpp:498 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1835 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:2137 src/libslic3r/PrintConfig.cpp:2267 msgid "mm/s or %" msgstr "mm/s lub %" -#: src/libslic3r/PrintConfig.cpp:196 src/libslic3r/PrintConfig.cpp:339 -#: src/libslic3r/PrintConfig.cpp:862 src/libslic3r/PrintConfig.cpp:984 -#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1201 -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1403 +#: src/libslic3r/PrintConfig.cpp:230 src/libslic3r/PrintConfig.cpp:373 +#: src/libslic3r/PrintConfig.cpp:902 src/libslic3r/PrintConfig.cpp:1028 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1309 +#: src/libslic3r/PrintConfig.cpp:1319 src/libslic3r/PrintConfig.cpp:1511 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:1730 +#: src/libslic3r/PrintConfig.cpp:1845 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:672 +#: src/libslic3r/PrintConfig.cpp:708 msgid "mm³" msgstr "mm³" -#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:601 -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:637 +#: src/libslic3r/PrintConfig.cpp:1358 msgid "mm³/s" msgstr "mm³/s" -#: src/libslic3r/PrintConfig.cpp:1262 src/libslic3r/PrintConfig.cpp:1273 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1381 msgid "mm³/s²" msgstr "mm³/s²" -#: src/slic3r/GUI/GUI_App.cpp:820 +#: src/slic3r/GUI/GUI_App.cpp:1512 msgid "Mode" msgstr "&Tryb" @@ -4623,7 +5295,7 @@ msgstr "&Tryb" msgid "model" msgstr "model" -#: src/slic3r/GUI/BedShapeDialog.cpp:251 +#: src/slic3r/GUI/BedShapeDialog.cpp:395 msgid "Model" msgstr "Model" @@ -4652,99 +5324,125 @@ msgstr "Ukończono naprawę modelu" msgid "Model repaired successfully" msgstr "Model naprawiono pomyślnie" -#: src/slic3r/GUI/Tab.cpp:979 +#: src/slic3r/GUI/GUI_App.cpp:1506 src/slic3r/GUI/wxExtensions.cpp:675 +msgctxt "Mode" +msgid "Advanced" +msgstr "Zaawansowany" + +#: src/slic3r/GUI/Tab.cpp:1241 msgid "Modifications to the current profile will be saved." msgstr "Modyfikacje zostaną zapisane na obecnym profilu." -#: src/slic3r/GUI/Preset.cpp:247 +#: src/slic3r/GUI/GUI_App.cpp:1425 msgid "modified" msgstr "zmodyfikowano" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Modifier" msgstr "Modyfikator" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1491 msgid "Modifiers" msgstr "Modyfikatory" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2655 msgid "money/bottle" msgstr "pieniędzy/butelkę" -#: src/libslic3r/PrintConfig.cpp:762 +#: src/libslic3r/PrintConfig.cpp:798 msgid "money/kg" msgstr "pieniędzy/kg" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:461 +msgid "Monotonic" +msgstr "Monotoniczny" + +#: src/slic3r/GUI/NotificationManager.cpp:305 +#: src/slic3r/GUI/NotificationManager.cpp:315 +msgid "More" +msgstr "Więcej" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Mouse wheel" msgstr "Kółko myszy" -#: src/slic3r/GUI/GLCanvas3D.cpp:261 +#: src/slic3r/GUI/GLCanvas3D.cpp:249 msgid "Mouse wheel:" msgstr "Kółko myszy:" -#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:64 msgid "Move" msgstr "Przesuń" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1372 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1219 msgid "Move clipping plane" msgstr "Przesunięcie płaszczyzny przecinania" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 msgid "Move current slider thumb Down" msgstr "Przesuń suwak w dół" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:214 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:229 +msgid "Move current slider thumb Left" +msgstr "Przesuń suwak w lewo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:230 +msgid "Move current slider thumb Right" +msgstr "Przesuń suwak w prawo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:215 msgid "Move current slider thumb Up" msgstr "Przesuń suwak w górę" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:1059 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:835 msgid "Move drainage hole" msgstr "Przesuń otwór odpływowy" -#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +#: src/slic3r/GUI/GLCanvas3D.cpp:3810 msgid "Move Object" msgstr "Przesuń Model" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1365 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 msgid "Move point" msgstr "Przesuń punkt" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 msgid "Move selection 10 mm in negative X direction" msgstr "Przesuń zaznaczenie o -10 mm w osi X" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:159 msgid "Move selection 10 mm in negative Y direction" msgstr "Przesuń zaznaczenie o -10 mm w osi Y" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 msgid "Move selection 10 mm in positive X direction" msgstr "Przesuń zaznaczenie o +10 mm w osi X" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 msgid "Move selection 10 mm in positive Y direction" msgstr "Przesuń zaznaczenie o +10 mm w osi Y" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1097 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:955 msgid "Move support point" msgstr "Przenieś plik podpory" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 +#: src/slic3r/GUI/GCodeViewer.cpp:2492 +msgid "Movement" +msgstr "Ruch" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 msgid "Movement in camera space" msgstr "Ruch w przestrzeni widoku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:168 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 msgid "Movement step set to 1 mm" msgstr "Krok przesunięcia ustawiony na 1 mm" -#: src/libslic3r/PrintConfig.cpp:2201 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." msgstr "Drukarki pracujące z kilkoma filamentami na raz (multi-material) mogą wymagać czyszczenia głowicy przy zmianie filamentu. Nadmiar materiału jest wytłaczany w formie wieży czyszczącej." -#: src/slic3r/GUI/Plater.cpp:2360 src/slic3r/GUI/Plater.cpp:2413 +#: src/slic3r/GUI/Plater.cpp:2322 src/slic3r/GUI/Plater.cpp:2375 msgid "Multi-part object detected" msgstr "Wykryto obiekt wieloczęściowy" @@ -4753,11 +5451,11 @@ msgstr "Wykryto obiekt wieloczęściowy" msgid "Multiple %s devices found. Please only connect one at a time for flashing." msgstr "Wiele urządzeń %s znaleziono. Proszę zostawić tylko jedno podłączone podczas flashowania." -#: src/slic3r/GUI/Tab.cpp:1179 +#: src/slic3r/GUI/Tab.cpp:1509 msgid "Multiple Extruders" msgstr "Kilka ekstruderów" -#: src/slic3r/GUI/Plater.cpp:2410 +#: src/slic3r/GUI/Plater.cpp:2372 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -4766,36 +5464,41 @@ msgstr "" "Kilka obiektów zostało załadowanych dla drukarki typu multi-material.\n" "Traktować je jako jeden model zawierający kilka części?" -#: src/libslic3r/PrintConfig.cpp:3439 +#: src/libslic3r/PrintConfig.cpp:3638 msgid "Multiply copies by creating a grid." msgstr "Pomnóż ilość kopii przez stworzenie siatki." -#: src/libslic3r/PrintConfig.cpp:3434 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Multiply copies by this factor." msgstr "Pomnóż ilość kopii przez tę wartość." -#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/OptionsGroup.cpp:580 +#: src/slic3r/GUI/Field.cpp:198 src/slic3r/GUI/OptionsGroup.cpp:715 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:874 msgid "N/A" msgstr "N/D" -#: src/slic3r/GUI/GUI_ObjectList.cpp:270 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 +#: src/slic3r/GUI/GUI_ObjectList.cpp:284 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Name" msgstr "Nazwa" -#: src/libslic3r/PrintConfig.cpp:1488 +#: src/libslic3r/PrintConfig.cpp:114 +msgid "Name of the printer" +msgstr "Nazwa drukarki" + +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." msgstr "Nazwa wersji drukarki. Możesz np. tworzyć warianty wg średnicy dyszy." -#: src/libslic3r/PrintConfig.cpp:1482 +#: src/libslic3r/PrintConfig.cpp:1590 msgid "Name of the printer vendor." msgstr "Nazwa dostawcy drukarki." -#: src/libslic3r/PrintConfig.cpp:1058 +#: src/libslic3r/PrintConfig.cpp:1102 msgid "Name of the profile, from which this profile inherits." msgstr "Nazwa profilu, z którego dziedziczy ten profil." -#: src/libslic3r/PrintConfig.cpp:1630 +#: src/libslic3r/PrintConfig.cpp:1738 msgid "Nearest" msgstr "Najbliższy" @@ -4803,14 +5506,30 @@ msgstr "Najbliższy" msgid "Network lookup" msgstr "Podgląd sieci" -#: src/slic3r/GUI/Plater.cpp:2151 +#: src/slic3r/GUI/Preferences.cpp:430 +msgid "New layout, access via settings button in the top menu" +msgstr "Nowy układ z dostępem przez przycisk ustawień w górnym menu" + +#: src/slic3r/GUI/Plater.cpp:2056 msgid "New Project" msgstr "Nowy Projekt" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "New project, clear plater" msgstr "Nowy projekt, wyczyść stół" +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:609 +msgid "New Value" +msgstr "Nowa wartość" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1178 +msgid "New value" +msgstr "Nowa wartość" + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "New version is available." +msgstr "Dostępna jest nowa wersja." + #: src/slic3r/GUI/UpdateDialogs.cpp:38 #, c-format msgid "New version of %s is available" @@ -4820,23 +5539,23 @@ msgstr "Dostępna jest nowa wersja: %s" msgid "New version:" msgstr "Nowa wersja:" -#: src/slic3r/GUI/GLCanvas3D.cpp:4673 +#: src/slic3r/GUI/GLCanvas3D.cpp:5089 msgid "Next Redo action: %1%" msgstr "Następna akcja do powtórzenia: %1%" -#: src/slic3r/GUI/GLCanvas3D.cpp:4641 +#: src/slic3r/GUI/GLCanvas3D.cpp:5051 msgid "Next Undo action: %1%" msgstr "Następna akcja do cofnięcia: %1%" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:1004 msgid "No extrusion" msgstr "Brak ekstruzji" -#: src/libslic3r/SLAPrintSteps.cpp:453 +#: src/libslic3r/SLAPrintSteps.cpp:451 msgid "No pad can be generated for this model with the current configuration" msgstr "Nie ma możliwości wygenerowania podkładki dla tego modelu przy obecnych ustawieniach" -#: src/slic3r/GUI/MainFrame.cpp:784 +#: src/slic3r/GUI/MainFrame.cpp:1485 msgid "No previously sliced file." msgstr "Brak poprzednio pociętych plików." @@ -4844,175 +5563,221 @@ msgstr "Brak poprzednio pociętych plików." msgid "NO RAMMING AT ALL" msgstr "BRAK WYCISKANIA" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1999 msgid "No sparse layers (EXPERIMENTAL)" msgstr "Brak warstw bez czyszczenia (EKSPERYMENTALNE)" -#: src/libslic3r/PrintConfig.cpp:2774 +#: src/libslic3r/PrintConfig.cpp:2938 msgid "No support points will be placed closer than this threshold." msgstr "Punkty nie zostaną umieszczone bliżej siebie niż ustawiona wartość." -#: src/slic3r/GUI/UpdateDialogs.cpp:303 +#: src/slic3r/GUI/UpdateDialogs.cpp:304 msgid "No updates available" msgstr "Brak dostępnych aktualizacji" -#: src/slic3r/GUI/ConfigWizard.cpp:291 src/slic3r/GUI/ConfigWizard.cpp:574 -#: src/slic3r/GUI/Plater.cpp:499 src/slic3r/GUI/Plater.cpp:639 -#: src/libslic3r/ExtrusionEntity.cpp:309 +#: src/slic3r/GUI/ConfigWizard.cpp:309 src/slic3r/GUI/ConfigWizard.cpp:599 +#: src/slic3r/GUI/Plater.cpp:365 src/slic3r/GUI/Plater.cpp:505 +#: src/libslic3r/ExtrusionEntity.cpp:312 msgid "None" msgstr "Brak" -#: src/slic3r/GUI/Tab.cpp:2203 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2372 msgid "Normal" msgstr "Normalny" -#: src/slic3r/GUI/Plater.cpp:1286 +#: src/slic3r/GUI/Plater.cpp:1177 src/slic3r/GUI/Plater.cpp:1224 msgid "normal mode" msgstr "tryb normalny" -#: src/libslic3r/Zipper.cpp:46 +#: src/slic3r/GUI/GCodeViewer.cpp:2552 +msgid "Normal mode" +msgstr "Tryb normalny" + +#: src/libslic3r/miniz_extension.cpp:105 msgid "not a ZIP archive" msgstr "nie jest archiwum ZIP" -#: src/slic3r/GUI/BedShapeDialog.cpp:223 src/slic3r/GUI/BedShapeDialog.cpp:302 +#: src/slic3r/GUI/BedShapeDialog.cpp:366 src/slic3r/GUI/BedShapeDialog.cpp:446 msgid "Not found:" msgstr "Nie znaleziono:" -#: src/slic3r/GUI/DoubleSlider.cpp:1019 +#: src/slic3r/GUI/DoubleSlider.cpp:1144 msgid "Note" msgstr "Uwaga" -#: src/slic3r/Utils/AstroBox.cpp:89 +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Note, that selected preset will be deleted from this/those printer(s) too." +msgstr "Zwróć uwagę, że wybrany zestaw ustawień zostanie również usunięty z tej drukarki (lub tych drukarek)." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Note, that this/those printer(s) will be deleted after deleting of the selected preset." +msgstr "Zwróć uwagę, że usunięcie wybranego zestawu ustawień spowoduje również usunięcie tej drukarki (lub drukarek)." + +#: src/slic3r/GUI/Tab.cpp:2039 +msgid "" +"Note: All parameters from this group are moved to the Physical Printer settings (see changelog).\n" +"\n" +"A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored into PrusaSlicer/physical_printer directory." +msgstr "" +"Uwaga: wszystkie parametry z tej grupy zostały przeniesione do ustawień fizycznej drukarki (szczegóły na liście zmian).\n" +"\n" +"Nowy profil fizycznej drukarki tworzysz klikając ikonkę \"koła zębatego\" na liście rozwijanej z profilami drukarek lub wybierając \"Dodaj fizyczną drukarkę\" na tej samej liście. Edytor profilu fizycznej drukarki pojawi się również po kliknięciu na ikonkę \"koła zębatego\" w zakładce \"Ustawienia drukarki\". Profile fizycznych drukarek są przechowywane w katalogu PrusaSlicer/physical_printer." + +#: src/slic3r/Utils/AstroBox.cpp:92 msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "Uwaga: Wymagany jest AstroBox w wersji co najmniej 1.1.0." -#: src/slic3r/Utils/FlashAir.cpp:73 +#: src/slic3r/Utils/FlashAir.cpp:76 msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "Uwaga: Wymagana jest karta FlashAir z FW 2.00.02 lub nowszym z włączoną funkcją przesyłania." -#: src/slic3r/Utils/OctoPrint.cpp:89 +#: src/slic3r/Utils/OctoPrint.cpp:91 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Uwaga: wymagany jest OctoPrint w wersji 1.1.0 lub wyższej." -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1345 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1192 msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Uwaga: niektóre skróty działają tylko poza trybem edycji." -#: src/slic3r/GUI/Tab.cpp:1251 src/slic3r/GUI/Tab.cpp:1252 -#: src/slic3r/GUI/Tab.cpp:1540 src/slic3r/GUI/Tab.cpp:1541 -#: src/slic3r/GUI/Tab.cpp:2012 src/slic3r/GUI/Tab.cpp:2013 -#: src/slic3r/GUI/Tab.cpp:2128 src/slic3r/GUI/Tab.cpp:2129 -#: src/slic3r/GUI/Tab.cpp:3535 src/slic3r/GUI/Tab.cpp:3536 +#: src/slic3r/GUI/SavePresetDialog.cpp:151 +msgid "Note: This preset will be replaced after saving" +msgstr "Uwaga: ten zestaw ustawień zostanie zastąpiony po zapisaniu" + +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1887 src/slic3r/GUI/Tab.cpp:1888 +#: src/slic3r/GUI/Tab.cpp:2221 src/slic3r/GUI/Tab.cpp:2222 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/Tab.cpp:2298 +#: src/slic3r/GUI/Tab.cpp:3951 src/slic3r/GUI/Tab.cpp:3952 msgid "Notes" msgstr "Notatki" -#: src/slic3r/GUI/ConfigWizard.cpp:1751 src/slic3r/GUI/DoubleSlider.cpp:1905 -#: src/slic3r/GUI/DoubleSlider.cpp:1926 src/slic3r/GUI/GUI.cpp:245 +#: src/slic3r/GUI/ConfigWizard.cpp:2237 src/slic3r/GUI/DoubleSlider.cpp:2124 +#: src/slic3r/GUI/DoubleSlider.cpp:2144 src/slic3r/GUI/GUI.cpp:244 msgid "Notice" msgstr "Uwaga" -#: src/slic3r/GUI/ConfigWizard.cpp:218 +#: src/slic3r/GUI/ConfigWizard.cpp:236 msgid "nozzle" msgstr "dysza" -#: src/slic3r/GUI/Tab.cpp:1870 src/slic3r/GUI/Tab.cpp:2340 -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/slic3r/GUI/Tab.cpp:1790 +msgid "Nozzle" +msgstr "Dysza" + +#: src/slic3r/GUI/ConfigWizard.cpp:1392 +msgid "Nozzle and Bed Temperatures" +msgstr "Temperatury dyszy oraz stołu" + +#: src/slic3r/GUI/Tab.cpp:2104 src/slic3r/GUI/Tab.cpp:2509 +#: src/libslic3r/PrintConfig.cpp:1434 msgid "Nozzle diameter" msgstr "Średnica dyszy" -#: src/slic3r/GUI/ConfigWizard.cpp:969 +#: src/slic3r/GUI/ConfigWizard.cpp:1335 msgid "Nozzle Diameter:" msgstr "Średnica dyszy:" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:2201 +msgid "Nozzle temperature" +msgstr "Temperatura dyszy" + +#: src/libslic3r/PrintConfig.cpp:2198 +msgid "Nozzle temperature for layers after the first one. Set this to zero to disable temperature control commands in the output G-code." +msgstr "Temperatura dyszy dla warstw powyżej pierwszej. Ustaw 0, aby wyłączyć kontrolowanie temperatury w pliku G-code." + +#: src/libslic3r/PrintConfig.cpp:961 +msgid "Nozzle temperature for the first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output G-code." +msgstr "Temperatura dyszy dla pierwszej warstwy. Jeśli chcesz kontrolować temperaturę ręcznie podczas drukowania, ustaw 0, aby wyłączyć kontrolowanie temperatury w pliku G-code." + +#: src/libslic3r/PrintConfig.cpp:686 msgid "Number of cooling moves" msgstr "Ilość ruchów chłodzących" -#: src/slic3r/GUI/Tab.cpp:1839 +#: src/slic3r/GUI/Tab.cpp:2073 msgid "Number of extruders of the printer." msgstr "Liczba ekstruderów drukarki." -#: src/libslic3r/PrintConfig.cpp:1975 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Number of interface layers to insert between the object(s) and support material." msgstr "Liczba warstw łączących materiał podporowy z modelem właściwym." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1812 msgid "Number of loops for the skirt. If the Minimum Extrusion Length option is set, the number of loops might be greater than the one configured here. Set this to zero to disable skirt completely." -msgstr "Liczba pętli skirt. Jeśli włączona jest opcja \"Minimalna długość ekstruzji\", to może ona nadpisać wartość wprowadzoną w tym polu. Ustaw zero aby całkowicie wyłączyć skirt." +msgstr "Liczba pętli skirt. Jeśli włączona jest opcja \"Minimalna długość ekstruzji\", to może ona nadpisać wartość wprowadzoną w tym polu. Ustaw zero, aby całkowicie wyłączyć skirt." -#: src/libslic3r/PrintConfig.cpp:2365 +#: src/libslic3r/PrintConfig.cpp:2508 msgid "Number of pixels in" msgstr "Liczba pikseli" -#: src/libslic3r/PrintConfig.cpp:2367 +#: src/libslic3r/PrintConfig.cpp:2510 msgid "Number of pixels in X" msgstr "Liczba pikseli w osi X" -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "Number of pixels in Y" msgstr "Liczba pikseli w osi Y" -#: src/libslic3r/PrintConfig.cpp:176 +#: src/libslic3r/PrintConfig.cpp:210 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Liczba zwartych warstw dolnych." -#: src/libslic3r/PrintConfig.cpp:1781 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "Liczba zwartych warstw górnych i dolnych." -#: src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2277 msgid "Number of solid layers to generate on top surfaces." msgstr "Liczba zwartych warstw górnych." -#: src/libslic3r/PrintConfig.cpp:2518 +#: src/libslic3r/PrintConfig.cpp:2661 msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" msgstr "Liczba warstw potrzebnych, aby zmienić czas naświetlania z początkowego do stałego" -#: src/slic3r/GUI/Plater.cpp:241 +#: src/slic3r/GUI/Plater.cpp:247 msgid "Number of tool changes" msgstr "Ilość zmian narzędzi" -#: src/libslic3r/PrintConfig.cpp:2753 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:2917 msgid "Object elevation" msgstr "Podniesienie modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2466 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2858 msgid "Object manipulation" msgstr "Manipulowanie modelem" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:155 src/libslic3r/GCode.cpp:638 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:163 src/libslic3r/GCode.cpp:623 msgid "Object name" msgstr "Nazwa modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3417 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3880 msgid "Object or Instance" msgstr "Model lub Kopia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Object reordered" msgstr "Model przeorganizowany" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2479 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2871 msgid "Object Settings to modify" -msgstr "Ustawienia Modelu do modyfikacji" +msgstr "Ustawienia modelu do modyfikacji" -#: src/slic3r/GUI/Plater.cpp:2529 +#: src/slic3r/GUI/Plater.cpp:2491 msgid "Object too large?" msgstr "Model zbyt duży?" -#: src/libslic3r/PrintConfig.cpp:2262 +#: src/libslic3r/PrintConfig.cpp:2405 msgid "Object will be used to purge the nozzle after a toolchange to save material that would otherwise end up in the wipe tower and decrease print time. Colours of the objects will be mixed as a result." -msgstr "Modele zostaną użyte do czyszczenia dyszy po zmianie narzędzia (filamentu) aby oszczędzić materiał, który inaczej zostałby wyekstrudowany do wieży czyszczącej i aby skrócić czas wydruku. W rezultacie kolor tego modelu będzie niejednolity." +msgstr "Modele zostaną użyte do czyszczenia dyszy po zmianie narzędzia (filamentu), aby oszczędzić materiał, który inaczej zostałby wyekstrudowany do wieży czyszczącej i aby skrócić czas wydruku. W rezultacie kolor tego modelu będzie niejednolity." -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "object(s)" msgstr "model(e)" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "objects" msgstr "modele" -#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:465 src/libslic3r/PrintConfig.cpp:893 msgid "Octagram Spiral" msgstr "Spirala ośmiokątna" @@ -5020,64 +5785,97 @@ msgstr "Spirala ośmiokątna" msgid "OctoPrint version" msgstr "Wersja OctoPrint" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3425 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3888 msgid "of a current Object" msgstr "obecnego Modelu" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 msgid "Offset" msgstr "Offset" -#: src/slic3r/GUI/Tab.cpp:1755 +#: src/slic3r/GUI/Preferences.cpp:422 +msgid "Old regular layout with the tab bar" +msgstr "Poprzedni układ z paskiem kart" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:608 +msgid "Old Value" +msgstr "Poprzednia wartość" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1177 +msgid "Old value" +msgstr "Poprzednia wartość" + +#: src/slic3r/GUI/Preferences.cpp:123 +msgid "On OSX there is always only one instance of app running by default. However it is allowed to run multiple instances of same app from the command line. In such case this settings will allow only one instance." +msgstr "Na OSX domyślnie zawsze jest uruchomiona jedna instancja aplikacji. Dozwolone jest jednak uruchomienie wielu instancji tej samej aplikacji z linii komend. Ustawienie to spowoduje dopuszczenie tylko jednej instancji do działania." + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:359 #, c-format msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "W tym systemie, %s używa certyfikatu HTTPS z magazynu systemowego (Certificate Store) lub Keychain." -#: src/slic3r/GUI/DoubleSlider.cpp:950 +#: src/slic3r/GUI/DoubleSlider.cpp:1064 msgid "One layer mode" msgstr "Tryb jednej warstwy" -#: src/libslic3r/Print.cpp:1365 +#: src/libslic3r/Print.cpp:1391 msgid "One or more object were assigned an extruder that the printer does not have." msgstr "Jeden lub więcej modeli zostało przypisanych do ekstrudera, którego drukarka nie posiada." -#: src/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2676 +#: src/libslic3r/PrintConfig.cpp:2045 src/libslic3r/PrintConfig.cpp:2840 msgid "Only create support if it lies on a build plate. Don't create support on a print." msgstr "Tworzenie podpór tylko na stole. Nie będą tworzone na wydruku." -#: src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1071 msgid "Only infill where needed" msgstr "Tylko potrzebne wypełnienie" -#: src/slic3r/GUI/Tab.cpp:2373 +#: src/slic3r/GUI/Tab.cpp:2542 msgid "Only lift Z" msgstr "Z-hop tylko" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1678 msgid "Only lift Z above" msgstr "Z-hop tylko powyżej" -#: src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1687 msgid "Only lift Z below" msgstr "Z-hop tylko poniżej" -#: src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Only retract when crossing perimeters" msgstr "Retrakcja tylko przy przechodzeniu nad obrysami" -#: src/slic3r/GUI/Tab.cpp:1187 +#: src/slic3r/GUI/ConfigWizard.cpp:714 +msgid "Only the following installed printers are compatible with the selected filament:" +msgstr "Tylko te zainstalowane drukarki są kompatybilne z wybranym filamentem:" + +#: src/slic3r/GUI/Tab.cpp:1517 msgid "Ooze prevention" msgstr "Zapobieganie wyciekom (ooze)" -#: src/libslic3r/Print.cpp:1266 +#: src/libslic3r/Print.cpp:1292 msgid "Ooze prevention is currently not supported with the wipe tower enabled." msgstr "Zapobieganie wyciekom jest obecnie niedostępne przy włączonej wieży czyszczącej." -#: src/slic3r/GUI/MainFrame.cpp:408 +#: src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open &PrusaSlicer" +msgstr "Otwórz &PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:1391 +msgid "Open a G-code file" +msgstr "Otwórz plik G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:77 +#: src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open a new PrusaSlicer instance" +msgstr "Otwórz nową instancję PrusaSlicer" + +#: src/slic3r/GUI/MainFrame.cpp:989 msgid "Open a project file" msgstr "Otwórz plik projektu" -#: src/slic3r/GUI/Tab.cpp:1729 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:330 msgid "Open CA certificate file" msgstr "Otwórz plik certyfikatu CA" @@ -5090,116 +5888,150 @@ msgstr "Otwórz stronę z listami zmian" msgid "Open download page" msgstr "Otwórz stronę pobierania" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/NotificationManager.cpp:742 +msgid "Open Folder." +msgstr "Otwórz folder." + +#: src/slic3r/Utils/Process.cpp:151 +msgid "Open G-code file:" +msgstr "Otwórz plik G-code:" + +#: src/slic3r/GUI/MainFrame.cpp:66 src/slic3r/GUI/MainFrame.cpp:1141 +msgid "Open G-code viewer" +msgstr "Otwórz przeglądarkę G-code" + +#: src/slic3r/GUI/MainFrame.cpp:79 +msgid "Open new G-code viewer" +msgstr "Otwórz nową przeglądarkę G-code" + +#: src/slic3r/GUI/MainFrame.cpp:63 src/slic3r/GUI/MainFrame.cpp:1262 +msgid "Open new instance" +msgstr "Otwórz nową instancję" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "Open project STL/OBJ/AMF/3MF with config, clear plater" msgstr "Otwórz projekt STL/OBJ/AMF/3MF z konfiguracją, wyczyść stół" -#: src/slic3r/GUI/MainFrame.cpp:693 +#: src/slic3r/GUI/MainFrame.cpp:77 src/slic3r/GUI/MainFrame.cpp:1398 +msgid "Open PrusaSlicer" +msgstr "Otwórz PrusaSlicer " + +#: src/slic3r/GUI/MainFrame.cpp:918 src/slic3r/GUI/MainFrame.cpp:1317 #, c-format msgid "Open the %s website in your browser" msgstr "Otwórz stronę %s w przeglądarce" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Otwórz stronę Prusa3D ze sterownikami w przeglądarce" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Open the software releases page in your browser" msgstr "Otwórz stronę z wersjami oprogramowania w przeglądarce" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:220 src/slic3r/GUI/Plater.cpp:3961 msgid "Optimize orientation" msgstr "Optymalizuj orientację" -#: src/slic3r/GUI/Plater.cpp:2767 +#: src/slic3r/GUI/Plater.cpp:1555 msgid "Optimize Rotation" msgstr "Optymalizuj obrót" -#: src/slic3r/GUI/Plater.cpp:4040 +#: src/slic3r/GUI/Plater.cpp:3962 msgid "Optimize the rotation of the object for better print results." msgstr "Optymalizuj obrót modelu dla lepszych efektów." -#: src/libslic3r/PrintConfig.cpp:137 +#: src/libslic3r/PrintConfig.cpp:170 msgid "Optimize travel moves in order to minimize the crossing of perimeters. This is mostly useful with Bowden extruders which suffer from oozing. This feature slows down both the print and the G-code generation." -msgstr "Optymalizuj ruchy jałowe aby zminimalizować przejeżdżanie nad obrysami. Ta funkcja jest przydatna szczególne przy ekstruderach typu bowden, podatnych na wyciekanie filamentu z dyszy. Włączenie tej funkcji wydłuża zarówno czas druku jak i czas generowania G-code." +msgstr "Optymalizuj ruchy jałowe, aby zminimalizować przejeżdżanie nad obrysami. Ta funkcja jest przydatna szczególne przy ekstruderach typu Bowden, podatnych na wyciekanie filamentu z dyszy. Włączenie tej funkcji wydłuża zarówno czas druku, jak i czas generowania G-code." -#: src/slic3r/GUI/Tab.cpp:1131 +#: src/slic3r/GUI/GCodeViewer.cpp:2525 src/slic3r/GUI/GUI_Preview.cpp:320 +#: src/slic3r/GUI/GUI_Preview.cpp:333 +msgid "Options" +msgstr "Opcje" + +#: src/slic3r/GUI/Tab.cpp:1460 msgid "Options for support material and raft" msgstr "Opcje materiału podporowego i tratwy (raft)" -#: src/slic3r/GUI/DoubleSlider.cpp:989 +#: src/slic3r/GUI/Mouse3DController.cpp:315 +msgid "Options:" +msgstr "Opcje:" + +#: src/slic3r/GUI/DoubleSlider.cpp:1112 msgid "or press \"+\" key" msgstr "lub naciśnij klawisz \"+\"" -#: src/slic3r/GUI/Plater.cpp:2892 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:74 msgid "Orientation found." msgstr "Znaleziono orientację." -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:73 msgid "Orientation search canceled." msgstr "Anulowano ustawianie orientacji." -#: src/slic3r/GUI/BedShapeDialog.cpp:84 +#: src/slic3r/GUI/BedShapeDialog.cpp:94 msgid "Origin" msgstr "Punkt zerowy" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1557 msgid "Other" msgstr "Inne" -#: src/libslic3r/PrintConfig.cpp:144 src/libslic3r/PrintConfig.cpp:2064 +#: src/libslic3r/PrintConfig.cpp:177 src/libslic3r/PrintConfig.cpp:2206 msgid "Other layers" msgstr "Inne warstwy" -#: src/slic3r/GUI/ConfigWizard.cpp:856 +#: src/slic3r/GUI/ConfigWizard.cpp:1222 msgid "Other Vendors" msgstr "Inni dostawcy" -#: src/slic3r/GUI/Tab.cpp:1238 src/slic3r/GUI/Tab.cpp:3666 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:4085 msgid "Output file" msgstr "Plik wyjściowy" -#: src/libslic3r/PrintConfig.cpp:3493 +#: src/libslic3r/PrintConfig.cpp:3692 msgid "Output File" msgstr "Plik Wyjściowy" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1471 msgid "Output filename format" msgstr "Format pliku wyjściowego" -#: src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3580 msgid "Output Model Info" msgstr "Informacje o Modelu wyjściowym" -#: src/slic3r/GUI/Tab.cpp:1230 src/slic3r/GUI/Tab.cpp:3665 +#: src/slic3r/GUI/Tab.cpp:1560 src/slic3r/GUI/Tab.cpp:4084 msgid "Output options" msgstr "Opcje wyjściowe" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:312 +#: src/slic3r/GUI/GUI_Preview.cpp:303 src/libslic3r/ExtrusionEntity.cpp:316 +#: src/libslic3r/ExtrusionEntity.cpp:340 msgid "Overhang perimeter" msgstr "Obrys zwisu" -#: src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Overhang threshold" msgstr "Próg zwisu" -#: src/slic3r/GUI/Tab.cpp:1215 +#: src/slic3r/GUI/Tab.cpp:1545 msgid "Overlap" msgstr "Nakładanie" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "P&rint Settings Tab" -msgstr "Ustawienia D&ruku" +msgstr "Ustawienia d&ruku" -#: src/slic3r/GUI/GUI_ObjectList.cpp:107 src/slic3r/GUI/GUI_ObjectList.cpp:625 -#: src/slic3r/GUI/Plater.cpp:635 src/slic3r/GUI/Tab.cpp:3636 -#: src/slic3r/GUI/Tab.cpp:3637 src/libslic3r/PrintConfig.cpp:2781 -#: src/libslic3r/PrintConfig.cpp:2788 src/libslic3r/PrintConfig.cpp:2802 -#: src/libslic3r/PrintConfig.cpp:2813 src/libslic3r/PrintConfig.cpp:2823 -#: src/libslic3r/PrintConfig.cpp:2845 src/libslic3r/PrintConfig.cpp:2856 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:2870 -#: src/libslic3r/PrintConfig.cpp:2881 src/libslic3r/PrintConfig.cpp:2890 -#: src/libslic3r/PrintConfig.cpp:2899 +#: src/slic3r/GUI/GUI_ObjectList.cpp:105 src/slic3r/GUI/GUI_ObjectList.cpp:664 +#: src/slic3r/GUI/Plater.cpp:501 src/slic3r/GUI/Tab.cpp:4055 +#: src/slic3r/GUI/Tab.cpp:4056 src/slic3r/GUI/Tab.cpp:4127 +#: src/libslic3r/PrintConfig.cpp:2945 src/libslic3r/PrintConfig.cpp:2952 +#: src/libslic3r/PrintConfig.cpp:2966 src/libslic3r/PrintConfig.cpp:2977 +#: src/libslic3r/PrintConfig.cpp:2987 src/libslic3r/PrintConfig.cpp:3009 +#: src/libslic3r/PrintConfig.cpp:3020 src/libslic3r/PrintConfig.cpp:3027 +#: src/libslic3r/PrintConfig.cpp:3034 src/libslic3r/PrintConfig.cpp:3045 +#: src/libslic3r/PrintConfig.cpp:3054 src/libslic3r/PrintConfig.cpp:3063 msgid "Pad" msgstr "Podkładka" @@ -5207,150 +6039,186 @@ msgstr "Podkładka" msgid "Pad and Support" msgstr "Podkładka i Podpory" -#: src/libslic3r/PrintConfig.cpp:2855 +#: src/slic3r/GUI/Tab.cpp:4127 src/libslic3r/PrintConfig.cpp:3019 msgid "Pad around object" msgstr "Podkładka wokół modelu" -#: src/libslic3r/PrintConfig.cpp:2862 +#: src/libslic3r/PrintConfig.cpp:3026 msgid "Pad around object everywhere" msgstr "Podkładka wokół wszystkich modeli" -#: src/libslic3r/PrintConfig.cpp:2811 +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Pad brim size" msgstr "Rozmiar brimu dla podkładki" -#: src/libslic3r/SLA/Pad.cpp:691 +#: src/libslic3r/SLA/Pad.cpp:532 msgid "Pad brim size is too small for the current configuration." msgstr "Rozmiar brimu podkładki jest zbyt mały dla obecnej konfiguracji." -#: src/libslic3r/PrintConfig.cpp:2898 +#: src/libslic3r/PrintConfig.cpp:3062 msgid "Pad object connector penetration" msgstr "Przenikanie łącznika podkładki z modelem" -#: src/libslic3r/PrintConfig.cpp:2880 +#: src/libslic3r/PrintConfig.cpp:3044 msgid "Pad object connector stride" msgstr "Rozmieszczenie łączników podkładki z modelem" -#: src/libslic3r/PrintConfig.cpp:2889 +#: src/libslic3r/PrintConfig.cpp:3053 msgid "Pad object connector width" msgstr "Szerokość łącznika podkładki z modelem" -#: src/libslic3r/PrintConfig.cpp:2869 +#: src/libslic3r/PrintConfig.cpp:3033 msgid "Pad object gap" msgstr "Odstęp modelu od podkładki" -#: src/libslic3r/PrintConfig.cpp:2797 +#: src/libslic3r/PrintConfig.cpp:2961 msgid "Pad wall height" msgstr "Wysokość ścianki podkładki" -#: src/libslic3r/PrintConfig.cpp:2844 +#: src/libslic3r/PrintConfig.cpp:3008 msgid "Pad wall slope" msgstr "Kąt pochylenia ścianki podkładki" -#: src/libslic3r/PrintConfig.cpp:2787 +#: src/libslic3r/PrintConfig.cpp:2951 msgid "Pad wall thickness" msgstr "Grubość ścianki podkładki" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Page Down" msgstr "Page Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Page Up" msgstr "Page Up" -#: src/slic3r/GUI/Field.cpp:139 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:33 +msgid "Paint-on supports" +msgstr "Malowanie podpór" + +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:178 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:159 +msgid "Paints all facets inside, regardless of their orientation." +msgstr "Maluje wszystkie powierzchnie wewnątrz, bez względu na ich kierunek." + +#: src/slic3r/GUI/Field.cpp:187 msgid "parameter name" msgstr "nazwa parametru" -#: src/slic3r/GUI/Field.cpp:243 +#: src/slic3r/GUI/Field.cpp:291 msgid "Parameter validation" msgstr "Weryfikacja parametru" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3418 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3881 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Part" msgstr "Część" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2494 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2886 msgid "Part manipulation" msgstr "Manipulacja częścią" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2483 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2875 msgid "Part Settings to modify" -msgstr "Ustawienia Części do modyfikacji" +msgstr "Ustawienia części do modyfikacji" -#: src/slic3r/GUI/GLCanvas3D.cpp:4514 +#: src/libslic3r/PrintConfig.cpp:138 +msgid "Password" +msgstr "Hasło" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4880 msgid "Paste" msgstr "Wklej" -#: src/slic3r/GUI/MainFrame.cpp:592 +#: src/slic3r/GUI/MainFrame.cpp:1198 msgid "Paste clipboard" msgstr "Wklej zawartość schowka" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:128 msgid "Paste from clipboard" msgstr "Wklej ze schowka" -#: src/slic3r/GUI/Plater.cpp:5606 +#: src/slic3r/GUI/Plater.cpp:5803 msgid "Paste From Clipboard" msgstr "Wklej Ze Schowka" -#: src/libslic3r/PrintConfig.cpp:2002 +#: src/libslic3r/PrintConfig.cpp:2144 msgid "Pattern" msgstr "Wzór" -#: src/libslic3r/PrintConfig.cpp:1891 +#: src/libslic3r/PrintConfig.cpp:2033 msgid "Pattern angle" msgstr "Kąt wzoru" -#: src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Pattern spacing" msgstr "Rozstaw wzoru" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:2146 msgid "Pattern used to generate support material." msgstr "Wzór podpór." -#: src/slic3r/GUI/Plater.cpp:1261 +#: src/slic3r/GUI/GCodeViewer.cpp:2437 src/slic3r/GUI/GCodeViewer.cpp:2460 +#: src/slic3r/GUI/Plater.cpp:1199 msgid "Pause" msgstr "Pauza" -#: src/slic3r/GUI/DoubleSlider.cpp:1009 +#: src/slic3r/GUI/DoubleSlider.cpp:1133 msgid "Pause print (\"%1%\")" msgstr "Wstrzymaj wydruk (\"%1%\")" -#: src/slic3r/GUI/GLCanvas3D.cpp:934 src/slic3r/GUI/GLCanvas3D.cpp:943 -#: src/slic3r/GUI/GLCanvas3D.cpp:982 +#: src/slic3r/GUI/Tab.cpp:2209 src/libslic3r/PrintConfig.cpp:1969 +msgid "Pause Print G-code" +msgstr "G-code dla pauzy drukowania" + +#: src/slic3r/GUI/GLCanvas3D.cpp:940 src/slic3r/GUI/GLCanvas3D.cpp:949 +#: src/slic3r/GUI/GLCanvas3D.cpp:988 msgid "Pause print or custom G-code" msgstr "Pauza wydruku lub własny G-code" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:175 +#: src/libslic3r/PrintConfig.cpp:1147 +msgid "Percent of a flow rate relative to object's normal layer height." +msgstr "Procentowy udział przepływu w stosunku do normalnej wysokości warstwy modelu." + +#: src/slic3r/GUI/GCodeViewer.cpp:2233 +msgid "Percentage" +msgstr "Procentowo" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:177 msgid "Perform cut" msgstr "Przetnij" -#: src/libslic3r/PrintConfig.cpp:2927 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Performance vs accuracy of calculation. Lower values may produce unwanted artifacts." msgstr "Kalkulacja prędkości względem dokładności. Niższe wartości mogą powodować artefakty." -#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/ExtrusionEntity.cpp:310 +#: src/slic3r/GUI/GUI_Preview.cpp:301 src/libslic3r/ExtrusionEntity.cpp:314 +#: src/libslic3r/ExtrusionEntity.cpp:336 msgid "Perimeter" msgstr "Obrys" -#: src/libslic3r/PrintConfig.cpp:1408 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Perimeter extruder" msgstr "Ekstruder dla obrysów" -#: src/slic3r/GUI/PresetHints.cpp:165 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "obrysy" -#: src/libslic3r/PrintConfig.cpp:1399 src/libslic3r/PrintConfig.cpp:1417 -#: src/libslic3r/PrintConfig.cpp:1430 src/libslic3r/PrintConfig.cpp:1440 +#: src/libslic3r/PrintConfig.cpp:1507 src/libslic3r/PrintConfig.cpp:1525 +#: src/libslic3r/PrintConfig.cpp:1538 src/libslic3r/PrintConfig.cpp:1548 msgid "Perimeters" msgstr "Obrysy" -#: src/slic3r/GUI/ConfigWizard.cpp:860 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:159 +msgid "Physical Printer" +msgstr "Drukarka fizyczna" + +#: src/slic3r/GUI/PresetComboBoxes.cpp:789 +#: src/slic3r/GUI/PresetComboBoxes.cpp:948 +msgid "Physical printers" +msgstr "Drukarki fizyczne" + +#: src/slic3r/GUI/ConfigWizard.cpp:1226 #, c-format msgid "Pick another vendor supported by %s" msgstr "Wybierz innego producenta obsługiwanego przez %s" @@ -5359,291 +6227,338 @@ msgstr "Wybierz innego producenta obsługiwanego przez %s" msgid "Picture sizes to be stored into a .gcode and .sl1 files" msgstr "Rozmiary obrazów będą przechowywane w plikach .gcode i .sl1" -#: src/libslic3r/PrintConfig.cpp:2681 +#: src/libslic3r/PrintConfig.cpp:2822 +msgid "Pillar connection mode" +msgstr "Tryb łączenia słupków" + +#: src/libslic3r/PrintConfig.cpp:2791 +msgid "Pillar diameter" +msgstr "Średnica słupka" + +#: src/libslic3r/PrintConfig.cpp:2845 msgid "Pillar widening factor" msgstr "Współczynnik rozszerzania słupka" -#: src/slic3r/GUI/ConfigManipulation.cpp:330 +#: src/slic3r/GUI/ConfigManipulation.cpp:335 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Średnica łączników podpór powinna być mniejsza niż średnica słupków." -#: src/slic3r/GUI/DoubleSlider.cpp:79 +#: src/libslic3r/PrintConfig.cpp:2763 +msgid "Pinhead front diameter" +msgstr "Przednia średnica łącznika" + +#: src/libslic3r/PrintConfig.cpp:2781 +msgid "Pinhead width" +msgstr "Szerokość łącznika" + +#: src/slic3r/GUI/DoubleSlider.cpp:110 msgid "Place bearings in slots and resume printing" msgstr "Umieść łożyska w gniazdach i wznów drukowanie" -#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:45 +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:41 msgid "Place on face" msgstr "Połóż na płaszczyźnie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:192 src/slic3r/GUI/MainFrame.cpp:204 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:190 src/slic3r/GUI/MainFrame.cpp:340 +#: src/slic3r/GUI/MainFrame.cpp:352 msgid "Plater" msgstr "Zawartość Stołu" -#: src/slic3r/GUI/GUI_App.cpp:1085 +#: src/slic3r/GUI/GUI_App.cpp:1877 msgid "Please check and fix your object list." msgstr "Sprawdź i popraw listę modeli." -#: src/slic3r/GUI/Plater.cpp:2312 src/slic3r/GUI/Tab.cpp:2959 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:209 src/slic3r/GUI/Plater.cpp:2255 +#: src/slic3r/GUI/Tab.cpp:3188 msgid "Please check your object list before preset changing." msgstr "Sprawdź listę modeli przed zmianą zestawu ustawień." -#: src/slic3r/GUI/Plater.cpp:3286 +#: src/slic3r/GUI/Plater.cpp:3089 msgid "Please select the file to reload" msgstr "Wybierz plik do przeładowania" -#: src/slic3r/GUI/AboutDialog.cpp:39 src/slic3r/GUI/AboutDialog.cpp:291 +#: src/slic3r/GUI/AboutDialog.cpp:43 src/slic3r/GUI/AboutDialog.cpp:48 +#: src/slic3r/GUI/AboutDialog.cpp:317 msgid "Portions copyright" msgstr "Częściowe prawa autorskie" -#: src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2543 msgid "Portrait" msgstr "Tryb Portretowy" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:215 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:457 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:223 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:505 msgid "Position" msgstr "Pozycja" -#: src/slic3r/GUI/Tab.cpp:2367 +#: src/slic3r/GUI/Tab.cpp:2536 msgid "Position (for multi-extruder printers)" msgstr "Pozycja (dla drukarek z kilkoma ekstruderami)" -#: src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1731 msgid "Position of perimeters starting points." msgstr "Pozycja startowa druku obrysów." -#: src/libslic3r/PrintConfig.cpp:2224 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Position X" msgstr "Pozycja X" -#: src/libslic3r/PrintConfig.cpp:2231 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Position Y" msgstr "Pozycja Y" -#: src/slic3r/GUI/Tab.cpp:1245 src/libslic3r/PrintConfig.cpp:1453 +#: src/slic3r/GUI/Tab.cpp:1575 src/libslic3r/PrintConfig.cpp:1561 msgid "Post-processing scripts" msgstr "Skrypty do przetwarzania końcowego" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Pre&view" msgstr "Pod&gląd" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 src/slic3r/GUI/Preferences.cpp:12 msgid "Preferences" msgstr "Preferencje" -#: src/libslic3r/PrintConfig.cpp:1641 +#: src/libslic3r/PrintConfig.cpp:1749 msgid "Preferred direction of the seam" msgstr "Preferowane ustawienie szwu" -#: src/libslic3r/PrintConfig.cpp:1652 +#: src/libslic3r/PrintConfig.cpp:1760 msgid "Preferred direction of the seam - jitter" msgstr "Preferowany kierunek szwu - jitter" -#: src/libslic3r/PrintObject.cpp:255 +#: src/libslic3r/PrintObject.cpp:261 msgid "Preparing infill" msgstr "Przygotowywanie wypełnienia" -#: src/slic3r/GUI/Tab.cpp:2920 -#, c-format -msgid "Preset (%s)" -msgstr "Zestaw ustawień (%s)" +#: src/slic3r/GUI/GUI_App.cpp:855 +msgid "Preparing settings tabs" +msgstr "Przygotowuję zakładkę ustawień" -#: src/slic3r/GUI/Tab.cpp:3082 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1009 +msgid "Preset \"%1%\" has the following unsaved changes:" +msgstr "Zestaw ustawień \"%1%\" ma następujące niezapisane zmiany:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1014 +msgid "Preset \"%1%\" is not compatible with the new print profile and it has the following unsaved changes:" +msgstr "Zestaw ustawień \"%1%\" jest niekompatybilny z nowym profilem druku i ma następujące niezapisane zmiany:" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1013 +msgid "Preset \"%1%\" is not compatible with the new printer profile and it has the following unsaved changes:" +msgstr "Zestaw ustawień \"%1%\" jest niekompatybilny z nowym profilem drukarki i ma następujące niezapisane zmiany:" + +#: src/slic3r/GUI/SavePresetDialog.cpp:136 +msgid "Preset with name \"%1%\" already exists and is imcopatible with selected printer." +msgstr "Zestaw ustawień o nazwie \"%1%\" już istnieje i jest niekompatybilny z wybraną drukarką." + +#: src/slic3r/GUI/SavePresetDialog.cpp:148 msgid "Preset with name \"%1%\" already exists." msgstr "Zestaw ustawień o nazwie \"%1%\" już istnieje." -#: src/slic3r/GUI/Tab.cpp:3029 +#: src/slic3r/GUI/SavePresetDialog.cpp:219 msgctxt "PresetName" msgid "Copy" msgstr "Kopia" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:163 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:157 msgid "Press to activate deselection rectangle" -msgstr "Naciśnij aby aktywować prostokąt odznaczający" +msgstr "Naciśnij, aby aktywować prostokąt odznaczający" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:197 -msgid "Press to activate one direction scaling in Gizmo scale" -msgstr "Naciśnij aby aktywować skalowanie uchwytem w jednym kierunku" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:162 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Press to activate selection rectangle" msgstr "Naciśnij, aby aktywować prostokąt zaznaczający" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:198 -msgid "" -"Press to scale (in Gizmo scale) or rotate (in Gizmo rotate)\n" -"selected objects around their own center" -msgstr "" -"Naciśnij, aby skalować (z uchwytem) lub obracać (z uchwytem)\n" -"zaznaczone modele wokół ich środków" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:161 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 msgid "" "Press to select multiple objects\n" "or move multiple objects with mouse" msgstr "" -"Kliknij aby wybrać wiele modeli\n" -"lub przesunąć je przy pomocy myszki" +"Kliknij, aby wybrać wiele modeli\n" +"lub przesunąć je przy pomocy myszy" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:195 -#, no-c-format +#: src/slic3r/GUI/KBShortcutsDialog.cpp:221 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:222 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:231 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:232 msgid "" -"Press to snap by 5% in Gizmo scale\n" -"or to snap by 1mm in Gizmo move" +"Press to speed up 5 times while moving thumb\n" +"with arrow keys or mouse wheel" msgstr "" -"Naciśnij, aby a przyciągać co 5% podczas skalowania z uchwytem\n" -"lub przyciągać co 1 mm podczas przemieszczania z uchwytem" +"Naciśnij, aby przyspieszyć suwak 5-krotnie\n" +"podczas ruchu strzałkami lub kółkiem myszy" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:211 src/slic3r/GUI/Plater.cpp:4105 -#: src/slic3r/GUI/Tab.cpp:2390 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:212 src/slic3r/GUI/Plater.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:2559 msgid "Preview" msgstr "Podgląd cięcia" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:42 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:41 msgid "Preview hollowed and drilled model" -msgstr "Podgląd wydrążonego modelu z otworem" +msgstr "Podgląd drążenia/wiercenia" -#: src/slic3r/GUI/MainFrame.cpp:790 +#: src/slic3r/GUI/MainFrame.cpp:1491 msgid "Previously sliced file (" msgstr "Poprzednio pocięty plik (" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Prime all printing extruders" msgstr "Wyczyść wszystkie używane ekstrudery" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Preset.cpp:1521 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/libslic3r/Preset.cpp:1300 msgid "print" msgstr "druk" -#: src/slic3r/GUI/MainFrame.cpp:648 +#: src/slic3r/GUI/GCodeViewer.cpp:2436 src/slic3r/GUI/GCodeViewer.cpp:2451 +msgid "Print" +msgstr "Druk" + +#: src/slic3r/GUI/MainFrame.cpp:1258 msgid "Print &Host Upload Queue" msgstr "Kolej&ka zadań serwera druku" -#: src/libslic3r/PrintConfig.cpp:471 +#: src/libslic3r/PrintConfig.cpp:507 msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." msgstr "Drukuj obrysy od zewnątrz do wewnątrz zamiast domyślnego ustawienia węwnątrz-zewnątrz." -#: src/slic3r/GUI/ConfigWizard.cpp:952 +#: src/slic3r/GUI/ConfigWizard.cpp:1318 msgid "Print Diameters" -msgstr "Średnice wydruku" +msgstr "Średnice" -#: src/slic3r/GUI/Tab.cpp:1944 src/slic3r/GUI/Tab.cpp:2123 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:209 src/slic3r/GUI/Tab.cpp:2024 msgid "Print Host upload" msgstr "Wysyłanie do serwera druku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 #: src/slic3r/GUI/PrintHostDialogs.cpp:136 msgid "Print host upload queue" msgstr "Kolejka serwera druku" -#: src/slic3r/GUI/DoubleSlider.cpp:970 +#: src/slic3r/GUI/DoubleSlider.cpp:1093 msgid "Print mode" msgstr "Tryb drukowania" -#: src/slic3r/GUI/Tab.hpp:328 src/slic3r/GUI/Tab.hpp:431 +#: src/slic3r/GUI/GCodeViewer.cpp:2579 src/slic3r/GUI/GUI_Preview.cpp:1476 +msgid "Print pauses" +msgstr "Pauzuje wydruk" + +#: src/slic3r/GUI/Tab.hpp:378 src/slic3r/GUI/Tab.hpp:502 msgid "Print Settings" msgstr "Ustawienia Druku" -#: src/slic3r/GUI/Plater.cpp:815 +#: src/slic3r/GUI/Plater.cpp:690 msgid "Print settings" msgstr "Ustawienia druku" -#: src/slic3r/GUI/Tab.cpp:1478 +#: src/slic3r/GUI/GLCanvas3D.cpp:4303 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Print Settings Tab" +msgstr "Ustawienia druku" + +#: src/slic3r/GUI/Tab.cpp:1824 msgid "Print speed override" msgstr "Nadpisanie prędkości druku" -#: src/libslic3r/GCode.cpp:638 +#: src/libslic3r/GCode.cpp:623 msgid "Print z" msgstr "Druk z" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Print&er Settings Tab" -msgstr "Ustawi&enia Drukarki" +msgstr "Ustawi&enia drukarki" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1750 msgid "Printable" msgstr "Do druku" -#: src/slic3r/GUI/Plater.cpp:819 +#: src/slic3r/GUI/Plater.cpp:694 msgid "Printer" msgstr "Drukarka" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/slic3r/GUI/Preset.cpp:1525 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 src/libslic3r/Preset.cpp:1304 msgid "printer" msgstr "drukarka" -#: src/libslic3r/PrintConfig.cpp:2439 src/libslic3r/PrintConfig.cpp:2440 +#: src/libslic3r/PrintConfig.cpp:2582 src/libslic3r/PrintConfig.cpp:2583 msgid "Printer absolute correction" msgstr "Korekcje bezwzględne drukarki" -#: src/libslic3r/PrintConfig.cpp:2456 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2599 src/libslic3r/PrintConfig.cpp:2600 msgid "Printer gamma correction" msgstr "Korekcja gamma drukarki" -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1294 msgid "printer model" msgstr "model drukarki" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Printer notes" msgstr "Notatki o drukarce" -#: src/libslic3r/PrintConfig.cpp:2431 src/libslic3r/PrintConfig.cpp:2432 -#: src/libslic3r/PrintConfig.cpp:2433 +#: src/libslic3r/PrintConfig.cpp:144 +msgid "Printer preset name" +msgstr "Nazwa zestawu ustawień drukarki" + +#: src/libslic3r/PrintConfig.cpp:2574 src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2576 msgid "Printer scaling correction" msgstr "Korekcja skalowania drukarki" -#: src/slic3r/GUI/Tab.hpp:391 +#: src/slic3r/GUI/Tab.hpp:453 msgid "Printer Settings" msgstr "Ustawienia Drukarki" +#: src/slic3r/GUI/GLCanvas3D.cpp:4305 src/slic3r/GUI/GLCanvas3D.cpp:4941 +msgid "Printer Settings Tab" +msgstr "Ustawienia drukarki" + #: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "Technologia druku" -#: src/libslic3r/PrintConfig.cpp:1466 +#: src/libslic3r/PrintConfig.cpp:1574 msgid "Printer type" msgstr "Rodzaj drukarki" -#: src/libslic3r/PrintConfig.cpp:1487 +#: src/libslic3r/PrintConfig.cpp:1595 msgid "Printer variant" msgstr "Wariant drukarki" -#: src/libslic3r/PrintConfig.cpp:1481 +#: src/libslic3r/PrintConfig.cpp:1589 msgid "Printer vendor" msgstr "Dostawca drukarki" -#: src/libslic3r/Print.cpp:1388 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:476 +msgid "Printer with name \"%1%\" already exists." +msgstr "Drukarka o nazwie \"%1%\" już istnieje." + +#: src/slic3r/GUI/ConfigWizard.cpp:587 +msgid "Printer:" +msgstr "Drukarka:" + +#: src/libslic3r/Print.cpp:1414 msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." msgstr "Druk ekstruderami o różnych średnicach dysz. Jeśli podpory mają być drukowane obecnie ustawionym ekstruderem (support_material_extruder == 0 lub support_material_interface_extruder == 0) to wszystkie dysze muszą mieć taką samą średnicę." #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:849 +#: src/slic3r/GUI/MainFrame.cpp:1550 #, c-format msgid "Processing %s" msgstr "Przetwarzanie %s" -#: src/slic3r/GUI/Plater.cpp:2283 -#, c-format -msgid "Processing input file %s" -msgstr "Przetwarzanie pliku wejściowego %s" - -#: src/libslic3r/PrintObject.cpp:108 +#: src/libslic3r/PrintObject.cpp:114 msgid "Processing triangulated mesh" msgstr "Przetwarzanie siatki trójkątów" -#: src/slic3r/GUI/Tab.cpp:1259 src/slic3r/GUI/Tab.cpp:1549 -#: src/slic3r/GUI/Tab.cpp:2020 src/slic3r/GUI/Tab.cpp:2136 -#: src/slic3r/GUI/Tab.cpp:3544 src/slic3r/GUI/Tab.cpp:3672 +#: src/slic3r/GUI/Tab.cpp:1589 src/slic3r/GUI/Tab.cpp:1896 +#: src/slic3r/GUI/Tab.cpp:2229 src/slic3r/GUI/Tab.cpp:2305 +#: src/slic3r/GUI/Tab.cpp:3960 src/slic3r/GUI/Tab.cpp:4091 msgid "Profile dependencies" msgstr "Zależności profilowe" -#: src/slic3r/GUI/ConfigWizard.cpp:566 +#: src/slic3r/GUI/ConfigWizard.cpp:590 msgid "Profile:" msgstr "Profil:" -#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 msgid "Progress" msgstr "Postęp" @@ -5651,23 +6566,35 @@ msgstr "Postęp" msgid "Progress:" msgstr "Postęp:" -#: src/slic3r/GUI/MainFrame.cpp:684 +#: src/slic3r/GUI/MainFrame.cpp:909 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Prusa 3D &Drivers" msgstr "Sterowniki Prusa 3&D" -#: src/slic3r/GUI/ConfigWizard.cpp:1995 +#: src/slic3r/GUI/ConfigWizard.cpp:2506 msgid "Prusa FFF Technology Printers" msgstr "Drukarki Prusa w technologii FFF" -#: src/slic3r/GUI/ConfigWizard.cpp:1998 +#: src/slic3r/GUI/ConfigWizard.cpp:2509 msgid "Prusa MSLA Technology Printers" msgstr "Drukarki Prusa w technologii MSLA" -#: src/slic3r/GUI/AboutDialog.cpp:260 -msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." -msgstr "PrusaSlicer bazuje na projekcie Slic3r autorstwa Alessandro Ranelucciego i społeczności RepRap." +#: src/slic3r/Utils/Http.cpp:78 +msgid "PrusaSlicer detected system SSL certificate store in: %1%" +msgstr "PrusaSlicer wykrył systemowy magazyn certyfikatów SSL w: %1%" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:284 +#: src/slic3r/GUI/GUI_Init.cpp:85 src/slic3r/GUI/GUI_Init.cpp:88 +msgid "PrusaSlicer GUI initialization failed" +msgstr "Niepowodzenie inicjalizacji PrusaSlicer GUI" + +#: src/slic3r/GUI/AboutDialog.cpp:285 +msgid "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community." +msgstr "PrusaSlicer bazuje na projekcie Slic3r autorstwa Alessandro Ranellucciego i społeczności RepRap." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:525 +msgid "PrusaSlicer is closing: Unsaved Changes" +msgstr "Zamykanie PrusaSlicer: niezapisane zmiany" + +#: src/slic3r/GUI/OpenGLManager.cpp:259 #, c-format msgid "" "PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n" @@ -5680,7 +6607,11 @@ msgstr "" msgid "PrusaSlicer version" msgstr "wersja PrusaSlicer" -#: src/slic3r/GUI/ConfigWizard.cpp:815 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:662 +msgid "PrusaSlicer will remember your action." +msgstr "PrusaSlicer zapamięta tą czynność." + +#: src/slic3r/GUI/ConfigWizard.cpp:1174 msgid "" "PrusaSlicer's user interfaces comes in three variants:\n" "Simple, Advanced, and Expert.\n" @@ -5690,64 +6621,80 @@ msgstr "" "Prosty, Zaawansowany i Ekspercki.\n" "Tryb Prosty wyświetla tylko najczęściej używane ustawienia potrzebne w codziennym druku 3D. Pozostałe dwa oferują coraz większe możliwości konfiguracji i są przeznaczone odpowiednio dla użytkowników zaawansowanych i ekspertów." -#: src/libslic3r/PrintConfig.cpp:2254 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:668 +msgid "PrusaSlicer: Don't ask me again" +msgstr "PrusaSlicer: nie pytaj ponownie" + +#: src/libslic3r/PrintConfig.cpp:2397 msgid "Purging after toolchange will done inside this object's infills. This lowers the amount of waste but may result in longer print time due to additional travel moves." msgstr "Czyszczenie po zmianie filamentu następować wewnątrz wypełnienia tego modelu. Obniża to ilość zużywanego materiału, jednak może skutkować wydłużeniem czasu druku przez dodatkowe ruchy jałowe." -#: src/slic3r/GUI/Plater.cpp:544 +#: src/slic3r/GUI/Plater.cpp:410 msgid "Purging volumes" msgstr "Objętości czyszczenia" -#: src/libslic3r/PrintConfig.cpp:2207 +#: src/libslic3r/PrintConfig.cpp:2350 msgid "Purging volumes - load/unload volumes" msgstr "Objętość czyszczenia - objętość ładowania/rozładowania" -#: src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "Purging volumes - matrix" msgstr "Objętości czyszczenia - formuła" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:44 +#: src/libslic3r/PrintConfig.cpp:1201 +msgid "Purpose of Machine Limits" +msgstr "Cel limitów maszynowych" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:43 msgid "Quality" msgstr "Jakość" -#: src/slic3r/GUI/Tab.cpp:1080 +#: src/slic3r/GUI/Tab.cpp:1402 msgid "Quality (slower slicing)" msgstr "Jakość (wolniejsze cięcie)" -#: src/slic3r/GUI/GLCanvas3D.cpp:273 +#: src/slic3r/GUI/GLCanvas3D.cpp:260 msgid "Quality / Speed" msgstr "Jakość / Prędkość" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1182 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1530 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1536 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1849 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:61 +msgid "Quick" +msgstr "Szybka" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1306 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1661 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1667 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2008 #, c-format msgid "Quick Add Settings (%s)" -msgstr "Szybkie Dodanie Ustawień (%s)" +msgstr "Szybkie dodanie ustawień (%s)" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Quick Slice" msgstr "Szybkie Cięcie" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Quick Slice and Save As" msgstr "Szybkie cięcie i Zapis jako" -#: src/slic3r/GUI/MainFrame.cpp:540 +#: src/slic3r/GUI/MainFrame.cpp:1144 src/slic3r/GUI/MainFrame.cpp:1402 #, c-format msgid "Quit %s" msgstr "Wyjście z %s" -#: src/slic3r/GUI/GLCanvas3D.cpp:294 src/libslic3r/PrintConfig.cpp:511 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Quit, I will move my data now" +msgstr "Zamknij, przeniosę teraz swoje dane" + +#: src/slic3r/GUI/GLCanvas3D.cpp:280 src/libslic3r/PrintConfig.cpp:547 msgid "Radius" msgstr "Promień" -#: src/slic3r/GUI/Tab.cpp:1127 +#: src/slic3r/GUI/Tab.cpp:1456 msgid "Raft" msgstr "Tratwa (raft)" -#: src/libslic3r/PrintConfig.cpp:1501 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "Raft layers" msgstr "Warstwy tratwy" @@ -5761,7 +6708,7 @@ msgid "" "\n" "This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." msgstr "" -"Wyciskanie oznacza szybką ekstruzję bezpośrednio przed zmianą narzędzia w drukarce typu MultiMaterial z jednym ekstruderem (narzędzie w tym przypadku oznacza filament). Jego zadaniem jest odpowiednie ukształtowanie końcówki rozładowywanego filamentu, aby jego ponowne załadowanie mogło odbyć się bez przeszkód. Ta faza procesu zmiany filamentu jest bardzo ważna a różne filamenty mogą potrzebować różnej prędkości wyciskania aby uzyskać odpowiedni kształt końcówki. Z tego powodu można edytować jego parametry.\n" +"Wyciskanie oznacza szybką ekstruzję bezpośrednio przed zmianą narzędzia w drukarce typu MultiMaterial z jednym ekstruderem (narzędzie w tym przypadku oznacza filament). Jego zadaniem jest odpowiednie ukształtowanie końcówki rozładowywanego filamentu, aby jego ponowne załadowanie mogło odbyć się bez przeszkód. Ta faza procesu zmiany filamentu jest bardzo ważna, a różne filamenty mogą potrzebować różnej prędkości wyciskania aby uzyskać odpowiedni kształt końcówki. Z tego powodu można edytować jego parametry.\n" "\n" "To jest ustawienie dla zaawansowanych użytkowników. Nieprawidłowe wartości mogą powodować blokady, ścieranie filamentu przez radełko itp." @@ -5773,27 +6720,27 @@ msgstr "Rozstaw linii wyciskania" msgid "Ramming line width" msgstr "Szerokość linii wyciskania" -#: src/libslic3r/PrintConfig.cpp:694 +#: src/libslic3r/PrintConfig.cpp:730 msgid "Ramming parameters" msgstr "Parametry wyciskania" -#: src/slic3r/GUI/Tab.cpp:1505 +#: src/slic3r/GUI/Tab.cpp:1850 msgid "Ramming settings" msgstr "Ustawienia wyciskania" -#: src/libslic3r/PrintConfig.cpp:1629 +#: src/libslic3r/PrintConfig.cpp:1737 msgid "Random" msgstr "Dowolny" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:94 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:96 msgid "Range" msgstr "Zakres" -#: src/libslic3r/SLAPrintSteps.cpp:65 +#: src/libslic3r/SLAPrintSteps.cpp:66 msgid "Rasterizing layers" msgstr "Rasteryzowanie warstw" -#: src/slic3r/GUI/MainFrame.cpp:596 +#: src/slic3r/GUI/MainFrame.cpp:1202 msgid "Re&load from disk" msgstr "Wczytaj ponownie z d&ysku" @@ -5805,58 +6752,59 @@ msgstr "Ponowna konfiguracja" msgid "Ready" msgstr "Gotowe" -#: src/slic3r/GUI/Plater.cpp:3115 +#: src/slic3r/GUI/Plater.cpp:2915 msgid "Ready to slice" msgstr "Gotowość do cięcia" -#: src/slic3r/GUI/MainFrame.cpp:669 src/libslic3r/PrintConfig.cpp:1632 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:1740 msgid "Rear" msgstr "Tył" -#: src/slic3r/GUI/MainFrame.cpp:669 +#: src/slic3r/GUI/MainFrame.cpp:966 src/slic3r/GUI/MainFrame.cpp:1286 msgid "Rear View" msgstr "Widok z tyłu" -#: src/slic3r/GUI/MainFrame.cpp:413 +#: src/slic3r/GUI/MainFrame.cpp:994 msgid "Recent projects" msgstr "Ostatni&e projekty" -#: src/slic3r/GUI/PresetHints.cpp:263 +#: src/slic3r/GUI/PresetHints.cpp:262 #, c-format msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "Zalecana grubość ściany modelu dla wysokości warstwy %.2f i" -#: src/slic3r/GUI/PresetHints.cpp:274 +#: src/slic3r/GUI/PresetHints.cpp:273 msgid "Recommended object thin wall thickness: Not available due to excessively small extrusion width." msgstr "Zalecana grubość ścian dla modelu: niedostępna ze względu na zbyt małą szerokość ścieżki." -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "Recommended object thin wall thickness: Not available due to invalid layer height." msgstr "Zalecana grubość ścian dla modelu: niedostępna ze względu na niewłaściwą wysokość warstwy." -#: src/slic3r/GUI/GUI_App.cpp:450 src/slic3r/GUI/GUI_App.cpp:459 +#: src/slic3r/GUI/GUI_App.cpp:1102 src/slic3r/GUI/GUI_App.cpp:1115 msgid "Recreating" msgstr "Odtwarzanie" -#: src/slic3r/GUI/BedShapeDialog.cpp:73 +#: src/slic3r/GUI/BedShapeDialog.cpp:141 msgid "Rectangular" msgstr "Prostokątny" -#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:843 -#: src/libslic3r/PrintConfig.cpp:2009 +#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:881 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "Rectilinear" msgstr "Linie równoległe" -#: src/libslic3r/PrintConfig.cpp:2010 +#: src/libslic3r/PrintConfig.cpp:2152 msgid "Rectilinear grid" msgstr "Linie równoległe - kratka" -#: src/slic3r/GUI/GLCanvas3D.cpp:4657 src/slic3r/GUI/KBShortcutsDialog.cpp:131 -#: src/slic3r/GUI/MainFrame.cpp:584 +#: src/slic3r/GUI/GLCanvas3D.cpp:5067 src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/MainFrame.cpp:1190 msgid "Redo" msgstr "Powtórz" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Redo %1$d Action" msgid_plural "Redo %1$d Actions" @@ -5865,152 +6813,184 @@ msgstr[1] "Powtórz %1$d akcje" msgstr[2] "Powtórz %1$d akcji" msgstr[3] "Powtórz %1$d akcji" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Redo History" msgstr "Historia Powtórzeń" -#: src/slic3r/GUI/Tab.cpp:1098 +#: src/slic3r/GUI/Tab.cpp:1426 msgid "Reducing printing time" msgstr "Obniżanie czasu wydruku" -#: src/slic3r/GUI/Plater.cpp:3452 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:327 +msgid "Refresh Printers" +msgstr "Odśwież drukarki" + +#: src/libslic3r/PrintConfig.cpp:145 +msgid "Related printer preset name" +msgstr "Nazwa powiązanego zestawu ustawień drukarki" + +#: src/slic3r/GUI/Plater.cpp:3257 msgid "Reload all from disk" msgstr "Wczytaj ponownie wszystko z dysku" -#: src/slic3r/GUI/ConfigWizard.cpp:798 src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3225 -#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/ConfigWizard.cpp:1157 src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3028 +#: src/slic3r/GUI/Plater.cpp:3852 src/slic3r/GUI/Plater.cpp:3881 msgid "Reload from disk" msgstr "Wczytaj ponownie z dysku" -#: src/slic3r/GUI/Plater.cpp:3339 +#: src/slic3r/GUI/Plater.cpp:3142 msgid "Reload from:" msgstr "Wczytaj z:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 msgid "Reload plater from disk" msgstr "Przeładuj wirtualny stół z dysku" -#: src/slic3r/GUI/MainFrame.cpp:597 +#: src/slic3r/GUI/MainFrame.cpp:1203 msgid "Reload the plater from disk" msgstr "Przeładuj wirtualny stół z dysku" -#: src/slic3r/GUI/Plater.cpp:3963 +#: src/slic3r/GUI/Plater.cpp:3881 msgid "Reload the selected object from disk" msgstr "Wczytaj wybrany model ponownie z dysku" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1664 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3956 src/slic3r/GUI/Plater.cpp:3934 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1793 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4439 src/slic3r/GUI/Plater.cpp:3852 msgid "Reload the selected volumes from disk" msgstr "Wczytaj wybrane kształty ponownie z dysku" -#: src/slic3r/GUI/Preferences.cpp:39 +#: src/slic3r/GUI/GCodeViewer.cpp:2442 src/slic3r/GUI/GCodeViewer.cpp:2445 +msgid "Remaining time" +msgstr "Pozostały czas" + +#: src/slic3r/GUI/GUI_App.cpp:720 src/slic3r/GUI/UnsavedChangesDialog.cpp:653 +msgid "Remember my choice" +msgstr "Zapamiętaj mój wybór" + +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Remember output directory" msgstr "Zapamiętaj katalog wyjściowy" -#: src/slic3r/GUI/Tab.cpp:3121 +#: src/slic3r/GUI/MainFrame.cpp:166 +msgid "Remember to check for updates at https://github.com/prusa3d/PrusaSlicer/releases" +msgstr "Pamiętaj, aby sprawdzać aktualizacje na https://github.com/prusa3d/PrusaSlicer/releases" + +#: src/slic3r/GUI/Tab.cpp:3386 msgid "remove" msgstr "usuń" -#: src/slic3r/GUI/BedShapeDialog.cpp:190 src/slic3r/GUI/BedShapeDialog.cpp:269 -#: src/slic3r/GUI/Tab.cpp:3124 +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/BedShapeDialog.cpp:413 +#: src/slic3r/GUI/Tab.cpp:3423 msgid "Remove" msgstr "Usuń" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 msgid "Remove all holes" msgstr "Usuń wszystkie otwory" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 msgid "Remove all points" msgstr "Usuń wszystkie punkty" -#: src/slic3r/GUI/GLCanvas3D.cpp:246 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:52 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:35 +msgid "Remove all selection" +msgstr "Usuń całe zaznaczenie" + +#: src/slic3r/GUI/GLCanvas3D.cpp:239 msgid "Remove detail" msgstr "Niższa szczegółowość" -#: src/slic3r/GUI/Plater.cpp:879 -msgid "Remove device" -msgstr "Odłącz urządzenie" - #: src/slic3r/GUI/ExtruderSequenceDialog.cpp:182 msgid "Remove extruder from sequence" msgstr "Usuń ekstruder z sekwencji" -#: src/slic3r/GUI/GLCanvas3D.cpp:4537 src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/GLCanvas3D.cpp:4903 src/slic3r/GUI/Plater.cpp:3860 msgid "Remove instance" msgstr "Usuń instancję" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:160 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 msgid "Remove Instance of the selected object" msgstr "Usuń instancję zaznaczonego modelu" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:153 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:161 msgid "Remove layer range" msgstr "Usuń zakres warstw" -#: src/slic3r/GUI/Plater.cpp:3942 +#: src/slic3r/GUI/Plater.cpp:3860 msgid "Remove one instance of the selected object" msgstr "Usuń jedną instancję zaznaczonego modelu" -#: src/slic3r/GUI/GUI_ObjectSettings.cpp:95 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:98 msgid "Remove parameter" msgstr "Usuń parametr" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Remove point" msgstr "Usuń punkt" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1367 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1214 msgid "Remove point from selection" msgstr "Usuń punkt z zaznaczenia" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:47 msgid "Remove selected holes" msgstr "Usuń zaznaczone otwory" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1371 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:49 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1218 msgid "Remove selected points" msgstr "Usuń zaznaczone punkty" -#: src/slic3r/GUI/Plater.cpp:3931 src/slic3r/GUI/Plater.cpp:3953 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:51 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:34 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:368 +#: src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp:378 +msgid "Remove selection" +msgstr "Usuń zaznaczenie" + +#: src/slic3r/GUI/Plater.cpp:3849 src/slic3r/GUI/Plater.cpp:3871 msgid "Remove the selected object" msgstr "Usuń wybrany model" -#: src/slic3r/GUI/ConfigWizard.cpp:453 +#: src/slic3r/GUI/ConfigWizard.cpp:456 msgid "Remove user profiles (a snapshot will be taken beforehand)" msgstr "Usuń profile użytkownika (zostanie wykonany zrzut)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1636 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1765 msgid "Rename" msgstr "Zmień nazwę" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Object" msgstr "Zmień Nazwę Modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:589 msgid "Rename Sub-object" msgstr "Zmień Nazwę Modelu Podrzędnego" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3803 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4266 msgid "Renaming" msgstr "Zmiana nazwy" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:115 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:150 msgid "Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again." msgstr "Niepowodzenie zmiany nazwy pliku G-code po skopiowaniu do folderu docelowego. Obecna ścieżka to %1%.tmp. Spróbuj wyeksportować G-code ponownie." -#: src/libslic3r/PrintConfig.cpp:3515 +#: src/slic3r/GUI/Preferences.cpp:255 +msgid "Render" +msgstr "Render" + +#: src/libslic3r/PrintConfig.cpp:3720 msgid "Render with a software renderer" msgstr "Renderuj programowo" -#: src/libslic3r/PrintConfig.cpp:3516 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." msgstr "Renderowanie software'owe. Dołączony silnik MESA zostanie użyty zamiast domyślnego OpenGL." -#: src/slic3r/GUI/MainFrame.cpp:911 src/libslic3r/PrintConfig.cpp:3447 +#: src/slic3r/GUI/MainFrame.cpp:1612 src/libslic3r/PrintConfig.cpp:3646 msgid "Repair" msgstr "Naprawa" @@ -6034,38 +7014,38 @@ msgstr "Naprawiony plik 3MF nie zawiera żadnej objętości" msgid "Repairing model by the Netfabb service" msgstr "Naprawianie modelu przez usługę Netfabb" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat last quick slice" msgstr "Powtórz ostatnie szybkie cięcie" -#: src/slic3r/GUI/MainFrame.cpp:524 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Repeat Last Quick Slice" msgstr "Powtórz Ostatnie Szybkie Cięcie" -#: src/slic3r/GUI/Tab.cpp:3083 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:477 msgid "Replace?" msgstr "Zamienić?" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 msgid "Report an I&ssue" msgstr "Zgło&szenie problemu" -#: src/slic3r/GUI/MainFrame.cpp:703 +#: src/slic3r/GUI/MainFrame.cpp:928 src/slic3r/GUI/MainFrame.cpp:1327 #, c-format msgid "Report an issue on %s" msgstr "Zgłoś problem z %s" -#: src/slic3r/Utils/PresetUpdater.cpp:713 +#: src/slic3r/Utils/PresetUpdater.cpp:733 #, c-format msgid "requires max. %s" msgstr "wymaga max %s" -#: src/slic3r/Utils/PresetUpdater.cpp:710 +#: src/slic3r/Utils/PresetUpdater.cpp:730 #, c-format msgid "requires min. %s" msgstr "wymaga min. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:705 +#: src/slic3r/Utils/PresetUpdater.cpp:726 #, c-format msgid "requires min. %s and max. %s" msgstr "wymaga min. %s i max. %s" @@ -6074,270 +7054,300 @@ msgstr "wymaga min. %s i max. %s" msgid "Rescan" msgstr "Skanuj ponownie" -#: src/slic3r/GUI/Tab.cpp:1906 -msgid "Rescan serial ports" -msgstr "Przeskanuj porty szeregowe" - -#: src/slic3r/GUI/GLCanvas3D.cpp:313 +#: src/slic3r/GUI/GLCanvas3D.cpp:299 msgid "Reset" msgstr "Reset" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1373 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220 msgid "Reset clipping plane" msgstr "Reset płaszczyzny przecinania" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:59 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:43 +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:26 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:58 msgid "Reset direction" msgstr "Reset kierunku" -#: src/slic3r/GUI/Plater.cpp:2723 +#: src/slic3r/GUI/Plater.cpp:2684 msgid "Reset Project" msgstr "Resetuj Projekt" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:363 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:372 msgid "Reset rotation" msgstr "Resetuj obrót" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:385 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:394 msgid "Reset Rotation" msgstr "Resetuj Obrót" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:397 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:399 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:407 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:409 msgid "Reset scale" msgstr "Resetuj skalę" -#: src/slic3r/GUI/GLCanvas3D.cpp:252 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:136 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:118 +msgid "Reset selection" +msgstr "Reset zaznaczenia" + +#: src/slic3r/GUI/GLCanvas3D.cpp:243 msgid "Reset to base" msgstr "Resetuj do bazowego ust" -#: src/slic3r/GUI/Tab.cpp:2394 +#: src/slic3r/GUI/Tab.cpp:2564 msgid "Reset to Filament Color" msgstr "Zresetuj do koloru filamentu" -#: src/libslic3r/PrintConfig.cpp:1511 +#: src/libslic3r/PrintConfig.cpp:1619 msgid "Resolution" msgstr "Rozdzielczość" -#: src/libslic3r/PrintConfig.cpp:1529 +#: src/libslic3r/PrintConfig.cpp:1637 msgid "Retract amount before wipe" msgstr "Długość retrakcji przed ruchem czyszczącym" -#: src/libslic3r/PrintConfig.cpp:1537 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Retract on layer change" msgstr "Retrakcja przy zmianie warstwy" -#: src/slic3r/GUI/Tab.cpp:1324 src/slic3r/GUI/Tab.cpp:1383 -#: src/slic3r/GUI/Tab.cpp:2370 +#: src/slic3r/GUI/GCodeViewer.cpp:2494 src/slic3r/GUI/Tab.cpp:1670 +#: src/slic3r/GUI/Tab.cpp:2539 msgid "Retraction" msgstr "Retrakcja" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1631 msgid "Retraction is not triggered when travel moves are shorter than this length." msgstr "Retrakcja nie zostanie wykonana przy ruchu jałowym krótszym niż ta wartość." -#: src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "Retraction Length" msgstr "Długość retrakcji" -#: src/libslic3r/PrintConfig.cpp:1552 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Retraction Length (Toolchange)" msgstr "Długość Retrakcji (zmiana narzędzia)" -#: src/libslic3r/PrintConfig.cpp:1604 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1712 src/libslic3r/PrintConfig.cpp:1713 msgid "Retraction Speed" msgstr "Prędkość retrakcji" -#: src/slic3r/GUI/Tab.cpp:2386 +#: src/slic3r/GUI/Tab.cpp:2555 msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" msgstr "Retrakcja gdy dany ekstruder nie jest w użyciu (funkcja zaawansowana dla drukarek z kilkoma ekstruderami)" -#: src/slic3r/GUI/GUI_Preview.cpp:254 +#: src/slic3r/GUI/GCodeViewer.cpp:2528 src/slic3r/GUI/GUI_Preview.cpp:336 +#: src/slic3r/GUI/GUI_Preview.cpp:1472 msgid "Retractions" msgstr "Retrakcje" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/Preferences.cpp:198 +msgid "Reverse direction of zoom with mouse wheel" +msgstr "Odwróć kierunek zoomu kółkiem myszy" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1861 src/slic3r/GUI/Plater.cpp:4886 +msgid "Revert conversion from imperial units" +msgstr "Odwróć konwersję z jednostek imperialnych" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right" msgstr "Prawo" -#: src/slic3r/GUI/GUI_ObjectList.cpp:402 +#: src/slic3r/GUI/GUI_ObjectList.cpp:449 msgid "Right button click the icon to change the object printable property" msgstr "Kliknij na ikonę prawym przyciskiem, aby włączyć/wyłączyć drukowanie modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:396 +#: src/slic3r/GUI/GUI_ObjectList.cpp:443 msgid "Right button click the icon to change the object settings" msgstr "Kliknij na ikonę prawym przyciskiem, aby zmienić ustawienia modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:359 +#: src/slic3r/GUI/GUI_ObjectList.cpp:406 msgid "Right button click the icon to fix STL through Netfabb" msgstr "Kliknij prawym przyciskiem myszy na ikonę, aby naprawić plik STL przez serwis Netfabb" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1364 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1211 msgid "Right click" msgstr "Prawy przycisk" -#: src/slic3r/GUI/GLCanvas3D.cpp:243 -msgid "Right mouse button:" -msgstr "Prawy przycisk myszki:" +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:48 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:31 +msgid "Right mouse button" +msgstr "Prawy przycisk myszy" -#: src/slic3r/GUI/MainFrame.cpp:673 +#: src/slic3r/GUI/GLCanvas3D.cpp:237 +msgid "Right mouse button:" +msgstr "Prawy przycisk myszy:" + +#: src/slic3r/GUI/MainFrame.cpp:970 src/slic3r/GUI/MainFrame.cpp:1290 msgid "Right View" msgstr "Widok prawy" -#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:449 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:480 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:499 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:517 -#: src/libslic3r/PrintConfig.cpp:3451 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:513 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:527 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:546 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Rotate" msgstr "Obróć" -#: src/libslic3r/PrintConfig.cpp:3456 +#: src/libslic3r/PrintConfig.cpp:3655 msgid "Rotate around X" msgstr "Obróć wokół osi X" -#: src/libslic3r/PrintConfig.cpp:3461 +#: src/libslic3r/PrintConfig.cpp:3660 msgid "Rotate around Y" msgstr "Obróć wokół osi Y" -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:170 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:172 msgid "Rotate lower part upwards" msgstr "Obróć dolną część do góry nogami" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:170 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 msgid "Rotate selection 45 degrees CCW" msgstr "Obróć zaznaczone o 45 stopni w lewo" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 msgid "Rotate selection 45 degrees CW" msgstr "Obróć zaznaczone o 45 stopni w prawo" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:458 -#: src/slic3r/GUI/Mouse3DController.cpp:304 -#: src/slic3r/GUI/Mouse3DController.cpp:321 +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:210 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:224 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:506 +#: src/slic3r/GUI/Mouse3DController.cpp:288 +#: src/slic3r/GUI/Mouse3DController.cpp:309 msgid "Rotation" msgstr "Obrót" -#: src/libslic3r/PrintConfig.cpp:3457 +#: src/libslic3r/PrintConfig.cpp:3656 msgid "Rotation angle around the X axis in degrees." msgstr "Kąt obrotu w stopniach wokół osi X." -#: src/libslic3r/PrintConfig.cpp:3462 +#: src/libslic3r/PrintConfig.cpp:3661 msgid "Rotation angle around the Y axis in degrees." msgstr "Kąt obrotu w stopniach wokół osi Y." -#: src/libslic3r/PrintConfig.cpp:3452 +#: src/libslic3r/PrintConfig.cpp:3651 msgid "Rotation angle around the Z axis in degrees." msgstr "Kąt obrotu w stopniach wokół osi Z." -#: src/slic3r/GUI/GUI_App.cpp:797 +#: src/slic3r/GUI/GUI_App.cpp:1474 #, c-format msgid "Run %s" msgstr "Uruchom %s" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:128 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:478 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:163 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:520 msgid "Running post-processing scripts" msgstr "Wykonywanie skryptów przetwarzania końcowego (post-processing)" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:83 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:688 -#: src/libslic3r/PrintConfig.cpp:703 src/libslic3r/PrintConfig.cpp:2408 -#: src/libslic3r/PrintConfig.cpp:2417 src/libslic3r/PrintConfig.cpp:2527 -#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2543 -#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:680 src/libslic3r/PrintConfig.cpp:724 +#: src/libslic3r/PrintConfig.cpp:739 src/libslic3r/PrintConfig.cpp:2551 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2670 +#: src/libslic3r/PrintConfig.cpp:2678 src/libslic3r/PrintConfig.cpp:2686 +#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2701 +#: src/libslic3r/PrintConfig.cpp:2709 msgid "s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:481 src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1072 src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end G-code" msgstr "Wyślij G-cod&e" -#: src/slic3r/GUI/MainFrame.cpp:750 +#: src/slic3r/GUI/MainFrame.cpp:1449 msgid "S&end to print" msgstr "W&yślij do druku" -#. TRN Preset -#: src/slic3r/GUI/Tab.cpp:3417 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:642 +msgid "Save" +msgstr "Zapisz" + +#: src/slic3r/GUI/SavePresetDialog.cpp:72 #, c-format msgid "Save %s as:" msgstr "Zapisz %s jako:" -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 #, c-format msgid "Save %s file as:" msgstr "Zapisz plik %s jako:" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1046 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 msgid "Save changes?" msgstr "Zapisać zmiany?" -#: src/libslic3r/PrintConfig.cpp:3386 +#: src/libslic3r/PrintConfig.cpp:3585 msgid "Save config file" msgstr "Zapisz plik konfiguracyjny" -#: src/slic3r/GUI/MainFrame.cpp:925 +#: src/slic3r/GUI/MainFrame.cpp:1626 msgid "Save configuration as:" msgstr "Zapisz konfigurację jako:" -#: src/libslic3r/PrintConfig.cpp:3387 +#: src/libslic3r/PrintConfig.cpp:3586 msgid "Save configuration to the specified file." msgstr "Zapisz konfigurację jako wskazany plik." #. TRN "Save current Settings" -#: src/slic3r/GUI/Tab.cpp:133 +#: src/slic3r/GUI/Tab.cpp:203 #, c-format msgid "Save current %s" msgstr "Zapisz bieżące %s" -#: src/slic3r/GUI/MainFrame.cpp:446 +#: src/slic3r/GUI/MainFrame.cpp:1028 msgid "Save current project file" msgstr "Zapisz obecny projekt" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save current project file as" msgstr "Zapisz obecny projekt jako" -#: src/slic3r/GUI/Plater.cpp:2604 +#: src/slic3r/GUI/Plater.cpp:2566 msgid "Save file as:" msgstr "Zapisz plik jako:" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save G-code file as:" msgstr "Zapisz plik G-code jako:" -#: src/slic3r/GUI/MainFrame.cpp:899 +#: src/slic3r/GUI/MainFrame.cpp:1600 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Zapisz plik OBJ (mniej podatny na błędy współrzędnych niż STL) jako:" -#: src/slic3r/GUI/Tab.hpp:443 +#: src/slic3r/GUI/SavePresetDialog.cpp:190 +#: src/slic3r/GUI/SavePresetDialog.cpp:196 msgid "Save preset" msgstr "Zapisz zestaw ustawień" -#: src/slic3r/GUI/MainFrame.cpp:980 +#: src/slic3r/GUI/MainFrame.cpp:1681 msgid "Save presets bundle as:" msgstr "Zapisz paczkę ustawień jako:" -#: src/slic3r/GUI/MainFrame.cpp:450 src/slic3r/GUI/MainFrame.cpp:452 +#: src/slic3r/GUI/MainFrame.cpp:1032 src/slic3r/GUI/MainFrame.cpp:1034 msgid "Save Project &as" msgstr "Zapisz Projekt j&ako" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Save project (3mf)" msgstr "Zapisz Projekt (3mf)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 msgid "Save project as (3mf)" msgstr "Zapisz Projekt jako (3mf)" -#: src/slic3r/GUI/Plater.cpp:4839 +#: src/slic3r/GUI/Plater.cpp:4975 msgid "Save SL1 file as:" msgstr "Zapisz plik SL1 jako:" -#: src/slic3r/GUI/MainFrame.cpp:838 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:744 +msgid "Save the selected options to preset \"%1%\"." +msgstr "Zapisz wybrane opcje w zestawie ustawień \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Save the selected options." +msgstr "Zapisz wybrane opcje." + +#: src/slic3r/GUI/MainFrame.cpp:1539 msgid "Save zip file as:" msgstr "Zapisz plik .zip jako:" @@ -6347,159 +7357,184 @@ msgstr "Zapisz plik .zip jako:" msgid "Saving mesh into the 3MF container failed." msgstr "Niepowodzenie zapisywania siatki jako 3MF." -#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:47 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:500 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:518 -#: src/libslic3r/PrintConfig.cpp:3466 +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:78 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:238 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:547 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "Scale" msgstr "Skaluj" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:459 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:507 msgid "Scale factors" msgstr "Współczynnik skalowania" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:196 -msgid "" -"Scale selection to fit print volume\n" -"in Gizmo scale" -msgstr "" -"Skaluj zaznaczenie do wielkości przestrzeni roboczej\n" -"w skalowaniu z uchwytem" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale the selected object to fit the print volume" msgstr "Skaluj wybrany model, aby zmieścił się w przestrzeni roboczej" -#: src/libslic3r/PrintConfig.cpp:3475 +#: src/libslic3r/PrintConfig.cpp:3674 msgid "Scale to Fit" msgstr "Skaluj, aby dopasować" -#: src/slic3r/GUI/Selection.cpp:939 +#: src/slic3r/GUI/Selection.cpp:988 msgid "Scale To Fit" -msgstr "Skaluj aby zmieścić" +msgstr "Skaluj, aby zmieścić" -#: src/libslic3r/PrintConfig.cpp:3476 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "Scale to fit the given volume." msgstr "Skaluj, aby wypełnić zadaną objętość." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1724 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1852 msgid "Scale to print volume" msgstr "Skaluj do obszaru roboczego" -#: src/libslic3r/PrintConfig.cpp:3467 +#: src/libslic3r/PrintConfig.cpp:3666 msgid "Scaling factor or percentage." msgstr "Współczynnik lub procent skalowania." -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:505 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:545 msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" msgstr "Ustawianie harmonogramu przesyłania do `%1%`. Zobacz okno -> Kolejka serwera druku" -#: src/libslic3r/PrintConfig.cpp:1621 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:46 +msgid "Seam painting" +msgstr "Malowanie szwu" + +#: src/libslic3r/PrintConfig.cpp:1729 msgid "Seam position" msgstr "Pozycja szwu" -#: src/libslic3r/PrintConfig.cpp:1642 +#: src/libslic3r/PrintConfig.cpp:1750 msgid "Seam preferred direction" msgstr "Preferowany kierunek szwu" -#: src/libslic3r/PrintConfig.cpp:1651 +#: src/libslic3r/PrintConfig.cpp:1759 msgid "Seam preferred direction jitter" msgstr "Kierunek jitter wyznaczany przez szew" +#: src/slic3r/GUI/MainFrame.cpp:1207 +msgid "Searc&h" +msgstr "Szu&kaj" + +#: src/slic3r/GUI/GLCanvas3D.cpp:4402 src/slic3r/GUI/GLCanvas3D.cpp:4957 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 src/slic3r/GUI/Search.cpp:426 +msgid "Search" +msgstr "Szukaj" + +#: src/slic3r/GUI/ImGuiWrapper.cpp:803 src/slic3r/GUI/Search.cpp:460 +msgid "Search in English" +msgstr "Szukaj po angielsku" + +#: src/slic3r/GUI/MainFrame.cpp:1216 +msgid "Search in settings" +msgstr "Szukaj w ustawieniach" + +#: src/slic3r/GUI/Tab.cpp:222 +msgid "Search in settings [%1%]" +msgstr "Szukaj w ustawieniach [%1%]" + #: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "Wyszukiwanie urządzeń" -#: src/slic3r/GUI/Plater.cpp:2858 +#: src/slic3r/GUI/Jobs/RotoptimizeJob.cpp:41 msgid "Searching for optimal orientation" msgstr "Wyszukiwanie optymalnej orientacji" -#: src/slic3r/GUI/GUI_App.cpp:1103 +#: src/slic3r/GUI/NotificationManager.hpp:321 +msgid "See more." +msgstr "Zobacz więcej." + +#: src/slic3r/GUI/NotificationManager.hpp:322 +msgid "See Releases page." +msgstr "Zobacz stronę z wydaniami (\"Releases\")." + +#: src/slic3r/GUI/GUI_App.cpp:1895 msgid "Select a gcode file:" msgstr "Wybierz plik gcode:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Select all objects" msgstr "Zaznacz wszystkie modele" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1370 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1217 msgid "Select all points" msgstr "Zaznacz wszystkie punkty" -#: src/slic3r/GUI/ConfigWizard.cpp:1976 +#: src/slic3r/GUI/ConfigWizard.cpp:2487 msgid "Select all standard printers" msgstr "Zaznacz wszystkie podstawowe drukarki" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1368 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1215 msgid "Select by rectangle" msgstr "Zaznaczenie prostokątem" -#: src/slic3r/GUI/MainFrame.cpp:944 src/slic3r/GUI/MainFrame.cpp:1006 +#: src/slic3r/GUI/MainFrame.cpp:1645 src/slic3r/GUI/MainFrame.cpp:1707 msgid "Select configuration to load:" msgstr "Wybierz konfigurację do wczytania:" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:82 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:88 msgid "Select coordinate space, in which the transformation will be performed." msgstr "Wybierz płaszczyznę, w której ma nastąpić przekształcenie." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3971 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4458 msgid "Select extruder number:" msgstr "Wybierz numer ekstrudera:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Select Filament Settings Tab" -msgstr "Wybierz Zakładkę Ustawień Filamentu" +msgstr "Wybierz ustawienia filamentu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Select Plater Tab" msgstr "Wybierz Zakładkę Podglądu Stołu" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Select Print Settings Tab" -msgstr "Wybierz Zakładkę Ustawień Druku" +msgstr "Wybierz ustawienia druku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Select Printer Settings Tab" -msgstr "Wybierz Zakładkę Ustawień Drukarki" +msgstr "Wybierz ustawienia drukarki" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1265 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1396 msgid "Select showing settings" msgstr "Wybierz widok ustawień" -#: src/slic3r/GUI/GUI_App.cpp:629 +#: src/slic3r/GUI/GUI_App.cpp:1295 msgid "Select the language" msgstr "Wybierz język" -#: src/slic3r/GUI/Tab.cpp:57 +#: src/slic3r/GUI/Tab.cpp:108 msgid "Select the print profiles this profile is compatible with." msgstr "Wybierz profile druku, z którymi kompatybilny jest ten profil." -#: src/slic3r/GUI/Tab.cpp:51 +#: src/slic3r/GUI/Tab.cpp:102 msgid "Select the printers this profile is compatible with." msgstr "Wybierz drukarki kompatybilne z tym profilem." -#: src/slic3r/GUI/MainFrame.cpp:889 +#: src/slic3r/GUI/MainFrame.cpp:1590 msgid "Select the STL file to repair:" msgstr "Wybierz plik STL do naprawy:" -#: src/slic3r/GUI/Preferences.cpp:237 +#: src/slic3r/GUI/Preferences.cpp:391 msgid "Select toolbar icon size in respect to the default one." msgstr "Wybierz rozmiar ikon w odniesieniu do domyślnego." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Select type of part" msgstr "Wybierz rodzaj części" -#: src/slic3r/GUI/Plater.cpp:638 +#: src/slic3r/GUI/Plater.cpp:504 msgid "Select what kind of pad do you need" msgstr "Wybierz rodzaj wymaganej podkładki" -#: src/slic3r/GUI/Plater.cpp:498 +#: src/slic3r/GUI/Plater.cpp:364 msgid "Select what kind of support do you need" msgstr "Wybierz rodzaj potrzebnych podpór" -#: src/slic3r/GUI/DoubleSlider.cpp:1917 +#: src/slic3r/GUI/DoubleSlider.cpp:2135 msgid "" "Select YES if you want to delete all saved tool changes, \n" "NO if you want all tool changes switch to color changes, \n" @@ -6509,59 +7544,59 @@ msgstr "" "NIE, jeśli chcesz przełączyć zmiany narzędzi na zmiany koloru lub\n" "ANULUJ, aby pozostawić bez zmian." -#: src/slic3r/GUI/Selection.cpp:146 +#: src/slic3r/GUI/Selection.cpp:191 msgid "Selection-Add" msgstr "Zaznaczenie-Dodaj" -#: src/slic3r/GUI/Selection.cpp:376 +#: src/slic3r/GUI/Selection.cpp:421 msgid "Selection-Add All" msgstr "Zaznaczenie-Dodaj wszystko" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3299 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3762 msgid "Selection-Add from list" msgstr "Zaznaczenie-Dodaj z listy" -#: src/slic3r/GUI/GLCanvas3D.cpp:6598 +#: src/slic3r/GUI/GLCanvas3D.cpp:7193 msgid "Selection-Add from rectangle" msgstr "Zaznaczenie-Dodaj z prostokąta" -#: src/slic3r/GUI/Selection.cpp:256 +#: src/slic3r/GUI/Selection.cpp:301 msgid "Selection-Add Instance" msgstr "Zaznaczenie-Dodaj instancję" -#: src/slic3r/GUI/Selection.cpp:219 +#: src/slic3r/GUI/Selection.cpp:264 msgid "Selection-Add Object" msgstr "Zaznaczenie-Dodaj Model" -#: src/slic3r/GUI/Selection.cpp:187 +#: src/slic3r/GUI/Selection.cpp:232 msgid "Selection-Remove" msgstr "Zaznaczenie-Usuń" -#: src/slic3r/GUI/Selection.cpp:402 +#: src/slic3r/GUI/Selection.cpp:447 msgid "Selection-Remove All" msgstr "Zaznaczenie-Usuń Wszystko" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3291 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3754 msgid "Selection-Remove from list" msgstr "Zaznaczenie-Usunięcie z listy" -#: src/slic3r/GUI/GLCanvas3D.cpp:6617 +#: src/slic3r/GUI/GLCanvas3D.cpp:7212 msgid "Selection-Remove from rectangle" msgstr "Zaznaczenie-Usuń z prostokąta" -#: src/slic3r/GUI/Selection.cpp:275 +#: src/slic3r/GUI/Selection.cpp:320 msgid "Selection-Remove Instance" msgstr "Zaznaczenie-Usuń kopię" -#: src/slic3r/GUI/Selection.cpp:238 +#: src/slic3r/GUI/Selection.cpp:283 msgid "Selection-Remove Object" msgstr "Zaznaczenie-Usuń model" -#: src/slic3r/GUI/MainFrame.cpp:566 +#: src/slic3r/GUI/MainFrame.cpp:1172 msgid "Selects all objects" msgstr "Zaznacza wszystkie modele" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Plater.cpp:5707 msgid "Send G-code" msgstr "Wyślij G-code" @@ -6569,29 +7604,29 @@ msgstr "Wyślij G-code" msgid "Send G-Code to printer host" msgstr "Wyślij G-code do serwera druku" -#: src/slic3r/GUI/MainFrame.cpp:481 +#: src/slic3r/GUI/MainFrame.cpp:1072 msgid "Send to print current plate as G-code" msgstr "Wyślij zawartość stołu do druku jako G-code" -#: src/slic3r/GUI/Plater.cpp:878 src/slic3r/GUI/Plater.cpp:5522 +#: src/slic3r/GUI/Plater.cpp:753 src/slic3r/GUI/Plater.cpp:5707 msgid "Send to printer" msgstr "Wyślij do drukarki" -#: src/slic3r/GUI/GLCanvas3D.cpp:1305 +#: src/slic3r/GUI/GLCanvas3D.cpp:1312 msgid "Seq." msgstr "Sekw." -#: src/slic3r/GUI/Tab.cpp:1231 +#: src/slic3r/GUI/Tab.cpp:1561 msgid "Sequential printing" msgstr "Drukowanie sekwencyjne (model po modelu)" -#: src/slic3r/GUI/Tab.cpp:1901 src/libslic3r/PrintConfig.cpp:1661 -msgid "Serial port" -msgstr "Port szeregowy" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:235 +msgid "Sequential Slider" +msgstr "Suwak sekwencyjny" -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Szybkość portu szeregowego" +#: src/slic3r/GUI/Preferences.cpp:230 +msgid "Sequential slider applied only to top layer" +msgstr "Suwak sekwencyjny stosowany tylko do górnej warstwy" #: src/slic3r/GUI/FirmwareDialog.cpp:807 msgid "Serial port:" @@ -6601,17 +7636,16 @@ msgstr "Port szeregowy:" msgid "Service name" msgstr "Nazwa usługi" -#: src/slic3r/GUI/Tab.cpp:1802 src/slic3r/GUI/Tab.cpp:2046 -#: src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3509 src/slic3r/GUI/Tab.cpp:3588 msgid "Set" msgstr "Ustaw" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1599 -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1728 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Object" msgstr "Ustaw jako osobny model" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1611 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1740 msgid "Set as a Separated Objects" msgstr "Ustaw jako Osobne Modele" @@ -6619,7 +7653,7 @@ msgstr "Ustaw jako Osobne Modele" msgid "Set extruder change for every" msgstr "Ustaw zmianę ekstrudera dla każdej" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1671 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1800 msgid "Set extruder for selected items" msgstr "Ustaw ekstruder dla wybranych elementów" @@ -6627,7 +7661,7 @@ msgstr "Ustaw ekstruder dla wybranych elementów" msgid "Set extruder sequence" msgstr "Ustaw sekwencję ekstruderów" -#: src/slic3r/GUI/DoubleSlider.cpp:1532 +#: src/slic3r/GUI/DoubleSlider.cpp:1728 msgid "Set extruder sequence for the entire print" msgstr "Ustaw sekwencję ekstruderów dla całego wydruku" @@ -6635,84 +7669,84 @@ msgstr "Ustaw sekwencję ekstruderów dla całego wydruku" msgid "Set extruder(tool) sequence" msgstr "Ustaw sekwencję ekstruderów (narzędzi)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:218 msgid "Set lower thumb to current slider thumb" msgstr "Ustaw punkt zmiany koloru na poziomie dolnego suwaka" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:297 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 msgid "Set Mirror" msgstr "Ustaw Odbicie" -#: src/slic3r/GUI/Plater.cpp:3944 +#: src/slic3r/GUI/Plater.cpp:3862 msgid "Set number of instances" msgstr "Ustaw liczbę kopii" -#: src/slic3r/GUI/Plater.cpp:4756 +#: src/slic3r/GUI/Plater.cpp:4860 #, c-format msgid "Set numbers of copies to %d" msgstr "Ustaw ilość instancji na %d" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:781 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:828 msgid "Set Orientation" msgstr "Ustaw Orientację" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:750 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:797 msgid "Set Position" msgstr "Ustaw Pozycję" -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Printable" msgstr "Zaznacz do drukowania" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Printable Instance" msgstr "Włącz drukowanie kopii" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:846 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:893 msgid "Set Scale" msgstr "Ustaw Skalę" -#: src/libslic3r/PrintConfig.cpp:2393 +#: src/libslic3r/PrintConfig.cpp:2536 msgid "Set the actual LCD display orientation inside the SLA printer. Portrait mode will flip the meaning of display width and height parameters and the output images will be rotated by 90 degrees." msgstr "Ustaw właściwą orientację ekranu LCD wewnątrz drukarki SLA. Tryb portretowy spowoduje zamianę parametrów szerokości i wysokości a obrazek wyjściowy będzie obrócony o 90 stopni." -#: src/slic3r/GUI/ConfigWizard.cpp:932 +#: src/slic3r/GUI/ConfigWizard.cpp:1298 msgid "Set the shape of your printer's bed." msgstr "Ustaw kształt stołu roboczego drukarki." -#: src/libslic3r/PrintConfig.cpp:556 +#: src/libslic3r/PrintConfig.cpp:592 msgid "Set this to a non-zero value to allow a manual extrusion width. If left to zero, Slic3r derives extrusion widths from the nozzle diameter (see the tooltips for perimeter extrusion width, infill extrusion width etc). If expressed as percentage (for example: 230%), it will be computed over layer height." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstrudowanej linii. Jeśli ustawisz zero, Slic3r obliczy szerokość ekstruzji na podstawie średnicy dyszy (zobacz wskazówki dla szerokości ekstruzji obrysów, wypełnienia itp). Jeśli ustawisz wartość procentową (np. 230%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstrudowanej linii. Jeśli ustawisz zero, PrusaSlicer obliczy szerokość ekstruzji na podstawie średnicy dyszy (zobacz wskazówki dla szerokości ekstruzji obrysów, wypełnienia itp). Jeśli ustawisz wartość procentową (np. 230%) to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:448 +#: src/libslic3r/PrintConfig.cpp:484 msgid "Set this to a non-zero value to set a manual extrusion width for external perimeters. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%), it will be computed over layer height." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji obrysów zewnętrznych. Jeśli ustawisz zero, szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Jeśli ustawisz wartość procentową (np. 200%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji obrysów zewnętrznych. Jeśli ustawisz zero, szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Jeśli ustawisz wartość procentową (np. 200%) to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:878 +#: src/libslic3r/PrintConfig.cpp:920 msgid "Set this to a non-zero value to set a manual extrusion width for first layer. You can use this to force fatter extrudates for better adhesion. If expressed as percentage (for example 120%) it will be computed over first layer height. If set to zero, it will use the default extrusion width." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji pierwszej warstwy. Dzięki tej funkcji możesz wymusić grubsze linie dla lepszej przyczepności. Jeśli ustawisz wartość procentową (np. 120%) to będzie oliczona z wysokości pierwszej warstwy. Ustaw zero dla wartości domyślnej." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji pierwszej warstwy. Dzięki tej funkcji możesz wymusić grubsze linie dla lepszej przyczepności. Jeśli ustawisz wartość procentową (np. 120%), to będzie obliczona z wysokości pierwszej warstwy. Ustaw zero dla wartości domyślnej." -#: src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:1873 msgid "Set this to a non-zero value to set a manual extrusion width for infill for solid surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji wypełnienia powierzchni zwartych. Jeśli ustawisz zero, szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Jeśli ustawisz wartość procentową (np. 90%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji wypełnienia powierzchni zwartych. Jeśli ustawisz zero, szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Jeśli ustawisz wartość procentową (np. 90%), to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:2107 +#: src/libslic3r/PrintConfig.cpp:2250 msgid "Set this to a non-zero value to set a manual extrusion width for infill for top surfaces. You may want to use thinner extrudates to fill all narrow regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji zwartego wypełnienia górnych warstw. Możesz ustawić mniejszą szerokość aby wypełnić szczeliny i uzyskać gładsze wykończenie. Jeśli ustawisz zero, szerokość będzie miała wartość domyślną, czyli będzie równa średnicy dyszy. Jeśli ustawisz wartość procentową (np. 90%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji zwartego wypełnienia górnych warstw. Możesz ustawić mniejszą szerokość, aby wypełnić szczeliny i uzyskać gładsze wykończenie. Jeśli ustawisz zero, szerokość będzie miała wartość domyślną, czyli będzie równa średnicy dyszy. Jeśli ustawisz wartość procentową (np. 90%), to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:1011 +#: src/libslic3r/PrintConfig.cpp:1055 msgid "Set this to a non-zero value to set a manual extrusion width for infill. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. You may want to use fatter extrudates to speed up the infill and make your parts stronger. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji wypełnienia. Jeśli ustawisz zero to szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Możesz ustawić większą szerokość aby przyspieszyć druk wypełnienia i zwiększyć wytrzymałość wydruków. Jeśli ustawisz wartość procentową (np. 90%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji wypełnienia. Jeśli ustawisz zero, to szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Możesz ustawić większą szerokość, aby przyspieszyć druk wypełnienia i zwiększyć wytrzymałość wydruków. Jeśli ustawisz wartość procentową (np. 90%), to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:1419 +#: src/libslic3r/PrintConfig.cpp:1527 msgid "Set this to a non-zero value to set a manual extrusion width for perimeters. You may want to use thinner extrudates to get more accurate surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%) it will be computed over layer height." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji obrysów. Możesz ustawić większą szerokość aby uzyskać dokładniejsze wykończenie powierzchni. Jeśli ustawisz zero to szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Jeśli ustawisz wartość procentową (np. 200%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji obrysów. Możesz ustawić większą szerokość, aby uzyskać dokładniejsze wykończenie powierzchni. Jeśli ustawisz zero to szerokość będzie miała wartość domyślną, czyli 1.125x średnicy dyszy. Jeśli ustawisz wartość procentową (np. 200%), to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:1948 +#: src/libslic3r/PrintConfig.cpp:2090 msgid "Set this to a non-zero value to set a manual extrusion width for support material. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Ustaw tą wartość jako niezerową aby pozwolić na ręczne ustawienie szerokości ekstruzji materiału podporowego. Jeśli ustawisz zero to szerokość będzie miała wartość domyślną, czyli będzie równa średnicy dyszy. Jeśli ustawisz wartość procentową (np. 90%) to zostanie obliczona z wysokości warstwy." +msgstr "Ustaw tą wartość jako niezerową, aby pozwolić na ręczne ustawienie szerokości ekstruzji materiału podporowego. Jeśli ustawisz zero, to szerokość będzie miała wartość domyślną, czyli będzie równa średnicy dyszy. Jeśli ustawisz wartość procentową (np. 90%), to zostanie obliczona z wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:512 +#: src/libslic3r/PrintConfig.cpp:548 msgid "Set this to the clearance radius around your extruder. If the extruder is not centered, choose the largest value for safety. This setting is used to check for collisions and to display the graphical preview in the plater." msgstr "Określa promień okręgu opisanego na całym zespole ekstrudera (matematycznie - wyobraź sobie, że chcesz narysować okrąg opisany na zespole ekstrudera patrząc na niego z góry). Jeśli sam ekstruder nie jest dokładnie na środku, użyj największego promienia. Ta wartość jest używana do wykrywania możliwych kolizji z wydrukowanymi modelami i jako graficzna reprezentacja na wirtualnym stole." @@ -6720,23 +7754,23 @@ msgstr "Określa promień okręgu opisanego na całym zespole ekstrudera (matema msgid "Set this to the maximum height that can be reached by your extruder while printing." msgstr "Ustaw tutaj maksymalną wysokość, jaką może osiągnąć Twój ekstruder podczas drukowania." -#: src/libslic3r/PrintConfig.cpp:501 +#: src/libslic3r/PrintConfig.cpp:537 msgid "Set this to the vertical distance between your nozzle tip and (usually) the X carriage rods. In other words, this is the height of the clearance cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." -msgstr "Określa pionową odległość końcówki dyszy od (zazwyczaj) prętów osi X. Inaczej mówiąc (matematycznie), jest to wysokość cylindra opisanego na zespole ekstrudera i określa maksymalną głębokość, na którą może opuścić się ekstruder aby nie uderzyć w obiekt znajdujący się bezpośrednio pod prętami osi X." +msgstr "Określa pionową odległość końcówki dyszy od (zazwyczaj) prętów osi X. Inaczej mówiąc (matematycznie), jest to wysokość cylindra opisanego na zespole ekstrudera i określa maksymalną głębokość, na którą może opuścić się ekstruder, aby nie uderzyć w obiekt znajdujący się bezpośrednio pod prętami osi X." -#: src/slic3r/GUI/GUI_ObjectList.cpp:4094 src/slic3r/GUI/Selection.cpp:1474 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4581 src/slic3r/GUI/Selection.cpp:1513 msgid "Set Unprintable" msgstr "Zaznacz do ignorowania przy drukowaniu" -#: src/slic3r/GUI/Selection.cpp:1475 +#: src/slic3r/GUI/Selection.cpp:1515 msgid "Set Unprintable Instance" msgstr "Ignoruj drukowanie kopii" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:217 msgid "Set upper thumb to current slider thumb" msgstr "Ustaw punkt zmiany koloru na poziomie górnego suwaka" -#: src/libslic3r/PrintConfig.cpp:3509 +#: src/libslic3r/PrintConfig.cpp:3714 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" "For example. loglevel=2 logs fatal, error and warning level messages." @@ -6744,63 +7778,74 @@ msgstr "" "Ustawia czułość logowania. 0:krytyczne, 1:błędy, 2:ostrzeżenia, 3:info, 4:debug, 5:trace\n" "Np: loglevel=2 loguje krytyczne, błędy i ostrzeżenia." -#: src/slic3r/GUI/BedShapeDialog.cpp:155 +#: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/MainFrame.cpp:1969 msgid "Settings" msgstr "Ustawienia" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2507 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2899 msgid "Settings for height range" msgstr "Ustawienie zakresu wysokości" -#: src/slic3r/GUI/ConfigManipulation.cpp:162 +#: src/slic3r/GUI/Preferences.cpp:431 +msgid "Settings in non-modal window" +msgstr "Ustawienia w osobnym okienku" + +#: src/slic3r/GUI/ConfigManipulation.cpp:161 msgid "Shall I adjust those settings for supports?" msgstr "Czy chcesz zmienić te ustawienia dla podpór?" -#: src/slic3r/GUI/ConfigManipulation.cpp:89 +#: src/slic3r/GUI/ConfigManipulation.cpp:88 msgid "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "Czy chcesz zmienić te ustawienia, aby włączyć tryb wazy?" -#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:118 msgid "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "Czy chcesz zmienić te ustawienia, aby włączyć wieżę czyszczącą?" -#: src/slic3r/GUI/ConfigManipulation.cpp:210 +#: src/slic3r/GUI/ConfigManipulation.cpp:209 msgid "Shall I switch to rectilinear fill pattern?" msgstr "Czy chcesz zmienić wzór wypełnienia na linie równoległe?" -#: src/slic3r/GUI/ConfigManipulation.cpp:139 +#: src/slic3r/GUI/ConfigManipulation.cpp:138 msgid "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "Czy chcesz zsynchronizować warstwy podporowe, aby włączyć wieżę czyszczącą?" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 src/slic3r/GUI/GUI_ObjectList.cpp:2059 +#: src/slic3r/GUI/BedShapeDialog.cpp:156 src/slic3r/GUI/BedShapeDialog.cpp:222 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2215 msgid "Shape" msgstr "Kształt" -#: src/slic3r/GUI/GUI_Preview.cpp:256 +#: src/slic3r/GUI/GUI_Preview.cpp:338 src/slic3r/GUI/GUI_Preview.cpp:1478 msgid "Shells" msgstr "Powłoki" -#: src/slic3r/GUI/GLCanvas3D.cpp:249 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:50 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:33 +msgid "Shift + Left mouse button" +msgstr "Shift + lewy przycisk myszy" + +#: src/slic3r/GUI/GLCanvas3D.cpp:241 msgid "Shift + Left mouse button:" -msgstr "Shift + lewy przycisk myszki:" +msgstr "Shift + lewy przycisk myszy:" -#: src/slic3r/GUI/GLCanvas3D.cpp:255 +#: src/slic3r/GUI/GLCanvas3D.cpp:245 msgid "Shift + Right mouse button:" -msgstr "Shift + Prawy przycisk myszki:" +msgstr "Shift + Prawy przycisk myszy:" -#: src/slic3r/GUI/GUI_Preview.cpp:231 +#: src/slic3r/GUI/GUI_Preview.cpp:286 src/slic3r/GUI/GUI_Preview.cpp:288 msgid "Show" msgstr "Pokaż" -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show &Configuration Folder" msgstr "Pokaż folder Konfigura&cyjny" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show &labels" msgstr "Pokaż &etykiety" -#: src/slic3r/GUI/MainFrame.cpp:705 +#: src/slic3r/GUI/MainFrame.cpp:933 src/slic3r/GUI/MainFrame.cpp:937 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "Show about dialog" msgstr "Pokaż okienko" @@ -6808,111 +7853,127 @@ msgstr "Pokaż okienko" msgid "Show advanced settings" msgstr "Pokaż ustawienia zaawansowane" -#: src/slic3r/GUI/PrintHostDialogs.cpp:159 +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Show error message" msgstr "Pokaż komunikat błędu" -#: src/slic3r/GUI/Preferences.cpp:95 +#: src/slic3r/GUI/Preferences.cpp:112 msgid "Show incompatible print and filament presets" msgstr "Pokaż niekompatybilne ustawienia druku i filamentów" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 msgid "Show keyboard shortcuts list" msgstr "Pokaż listę skrótów klawiszowych" -#: src/slic3r/GUI/MainFrame.cpp:676 +#: src/slic3r/GUI/GCodeViewer.cpp:2591 +msgid "Show normal mode" +msgstr "Pokaż tryb normalny" + +#: src/slic3r/GUI/MainFrame.cpp:1294 msgid "Show object/instance labels in 3D scene" msgstr "Pokaż etykiety modelu/kopii w widoku edycji 3D" +#: src/slic3r/GUI/Preferences.cpp:213 +msgid "Show sidebar collapse/expand button" +msgstr "Pokaż przycisk zwijania/rozwijania bocznego panelu" + #: src/slic3r/GUI/WipeTowerDialog.cpp:377 msgid "Show simplified settings" msgstr "Pokaż ustawienia uproszczone" -#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:169 src/slic3r/GUI/Preferences.cpp:171 +msgid "Show splash screen" +msgstr "Pokaż ekran startowy" + +#: src/slic3r/GUI/GCodeViewer.cpp:2586 +msgid "Show stealth mode" +msgstr "Pokaż dla trybu stealth" + +#: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:51 msgid "Show supports" msgstr "Pokaż podpory" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "Show system information" msgstr "Pokaż informacje o systemie" -#: src/slic3r/GUI/MainFrame.cpp:626 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Show the 3D editing view" msgstr "Pokaż widok edycji 3D" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:1237 msgid "Show the 3D slices preview" msgstr "Pokaż podgląd cięcia 3D" -#: src/slic3r/GUI/MainFrame.cpp:617 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Show the filament settings" msgstr "Pokaż ustawienia filamentu" -#: src/libslic3r/PrintConfig.cpp:3372 +#: src/libslic3r/PrintConfig.cpp:3571 msgid "Show the full list of print/G-code configuration options." msgstr "Pokaż pełną listę opcji konfiguracji druku/G-code." -#: src/libslic3r/PrintConfig.cpp:3377 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Show the full list of SLA print configuration options." msgstr "Pokaż pełną listę opcji konfiguracji druku SLA." -#: src/slic3r/GUI/MainFrame.cpp:708 +#: src/slic3r/GUI/MainFrame.cpp:941 src/slic3r/GUI/MainFrame.cpp:1332 msgid "Show the list of the keyboard shortcuts" msgstr "Pokaż listę skrótów klawiszowych" -#: src/slic3r/GUI/MainFrame.cpp:606 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Show the plater" msgstr "Pokaż zawartość stołu" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Show the print settings" msgstr "Pokaż ustawienia druku" -#: src/slic3r/GUI/MainFrame.cpp:621 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Show the printer settings" msgstr "Pokaż ustawienia drukarki" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3565 msgid "Show this help." msgstr "Pokaż tą wskazówkę pomocy." -#: src/slic3r/GUI/MainFrame.cpp:701 +#: src/slic3r/GUI/MainFrame.cpp:926 src/slic3r/GUI/MainFrame.cpp:1325 msgid "Show user configuration folder (datadir)" msgstr "Pokaż folder z konfiguracjami użytkownika (datadir)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Show/Hide 3Dconnexion devices settings dialog" msgstr "Pokaż/ukryj ustawienia urządzeń 3Dconnexion" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:208 -msgid "Show/Hide Legend" -msgstr "Pokaż/ukryj legendę" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:216 +msgid "Show/Hide Legend & Estimated printing time" +msgstr "Pokaż/ukryj legendę i szacowany czas druku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 msgid "Show/Hide object/instance labels" msgstr "Ukryj/pokaż etykiety modelu/kopii" -#: src/slic3r/GUI/GUI_App.cpp:813 src/slic3r/GUI/wxExtensions.cpp:753 +#: src/slic3r/GUI/GUI_App.cpp:1504 src/slic3r/GUI/wxExtensions.cpp:673 msgid "Simple" msgstr "Prosty" -#: src/slic3r/GUI/ConfigWizard.cpp:820 +#: src/slic3r/GUI/ConfigWizard.cpp:1179 msgid "Simple mode" msgstr "Tryb Prosty" -#: src/slic3r/GUI/GUI_App.cpp:813 +#: src/slic3r/GUI/GUI_App.cpp:1504 msgid "Simple View Mode" msgstr "Tryb Widoku Prostego" -#: src/slic3r/GUI/Tab.cpp:2298 src/slic3r/GUI/Tab.cpp:2306 +#: src/slic3r/GUI/Tab.cpp:2467 src/slic3r/GUI/Tab.cpp:2475 msgid "Single extruder MM setup" msgstr "Ustawienia MM dla jednego ekstrudera" -#: src/libslic3r/PrintConfig.cpp:1845 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "Single Extruder Multi Material" msgstr "Multi Material z jednym ekstruderem" -#: src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2101 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -6922,435 +7983,463 @@ msgstr "" "więc wszystkie ekstrudery muszą mieć taką samą średnicę dyszy.\n" "Czy chcesz zmienić średnicę dyszy dla wszystkich ekstruderów na wartość z pierwszego?" -#: src/slic3r/GUI/Tab.cpp:2307 +#: src/slic3r/GUI/Tab.cpp:2476 msgid "Single extruder multimaterial parameters" msgstr "Parametry multimaterial przy jednym ekstruderze" -#: src/slic3r/GUI/BedShapeDialog.cpp:77 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:160 -#: src/slic3r/GUI/Tab.cpp:2324 +#: src/slic3r/GUI/Preferences.cpp:120 src/libslic3r/PrintConfig.cpp:3689 +msgid "Single instance mode" +msgstr "Tryb jednej instancji" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:240 src/slic3r/GUI/Plater.cpp:166 +#: src/slic3r/GUI/Tab.cpp:2493 msgid "Size" msgstr "Rozmiar" -#: src/slic3r/GUI/Tab.cpp:1797 src/slic3r/GUI/Tab.cpp:2041 +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:2241 msgid "Size and coordinates" msgstr "Rozmiar i koordynaty" -#: src/slic3r/GUI/BedShapeDialog.cpp:78 +#: src/slic3r/GUI/BedShapeDialog.cpp:110 msgid "Size in X and Y of the rectangular plate." msgstr "Rozmiar X i Y stołu prostokątnego." -#: src/slic3r/GUI/GUI_Preview.cpp:245 src/slic3r/GUI/Tab.cpp:1111 -#: src/libslic3r/ExtrusionEntity.cpp:318 +#: src/slic3r/GUI/GUI_Preview.cpp:310 src/slic3r/GUI/Tab.cpp:1439 +#: src/libslic3r/ExtrusionEntity.cpp:323 src/libslic3r/ExtrusionEntity.cpp:354 msgid "Skirt" msgstr "Skirt" -#: src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:1438 msgid "Skirt and brim" msgstr "Skirt i brim" -#: src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1795 msgid "Skirt height" msgstr "Wysokość skirt" -#: src/libslic3r/PrintConfig.cpp:1696 +#: src/libslic3r/PrintConfig.cpp:1811 msgid "Skirt Loops" msgstr "Liczba obrysów skirt" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1334 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1181 msgid "SLA gizmo keyboard shortcuts" msgstr "Skróty klawiszowe \"uchwytów\" SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1058 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:924 msgid "SLA gizmo turned off" msgstr "Uchwyt SLA wyłączony" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1017 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 msgid "SLA gizmo turned on" msgstr "Uchwyt SLA włączony" -#: src/slic3r/GUI/Plater.cpp:818 src/slic3r/GUI/Preset.cpp:1524 +#: src/slic3r/GUI/Plater.cpp:693 src/libslic3r/Preset.cpp:1303 msgid "SLA material" msgstr "Materiał SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Material Profiles Selection" msgstr "Wybór profili materiałów SLA" -#: src/libslic3r/PrintConfig.cpp:2470 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2613 src/libslic3r/PrintConfig.cpp:2614 msgid "SLA material type" msgstr "Rodzaj materiału SLA" -#: src/slic3r/GUI/ConfigWizard.cpp:1471 src/slic3r/GUI/ConfigWizard.cpp:2015 +#: src/slic3r/GUI/ConfigWizard.cpp:1872 src/slic3r/GUI/ConfigWizard.cpp:2526 msgid "SLA Materials" msgstr "Materiały SLA" -#: src/slic3r/GUI/Preset.cpp:1523 +#: src/libslic3r/Preset.cpp:1302 msgid "SLA print" msgstr "Druk SLA" -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:2721 msgid "SLA print material notes" msgstr "Notatki dla materiału SLA" -#: src/slic3r/GUI/Plater.cpp:817 +#: src/slic3r/GUI/Plater.cpp:692 msgid "SLA print settings" -msgstr "Ustawienia Druku SLA" +msgstr "Ustawienia druku SLA" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:996 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 msgid "SLA Support Points" msgstr "Punkty podpór SLA" -#: src/slic3r/GUI/GLCanvas3D.cpp:687 -msgid "SLA supports outside the print area were detected" -msgstr "Wykryto podpory SLA poza obszarem roboczym" +#: src/slic3r/GUI/GLCanvas3D.cpp:635 +msgid "SLA supports outside the print area were detected." +msgstr "Wykryto podpory SLA poza obszarem roboczym." -#: src/slic3r/GUI/ConfigWizard.cpp:1530 +#: src/slic3r/GUI/ConfigWizard.cpp:1931 msgid "SLA Technology Printers" msgstr "Drukarki SLA" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Slab" msgstr "Tafla" -#: src/libslic3r/PrintConfig.cpp:1333 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." -msgstr "Slic3r może przesyłać pliki G-code do serwera druku. To pole powinno zawierać rodzaj serwera." +msgstr "PrusaSlicer może przesyłać pliki G-code do serwera druku. To pole powinno zawierać rodzaj serwera." -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:107 msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." msgstr "Slic3r może przesyłać pliki G-code do serwera druku. To pole powinno zawierać klucz API lub hasło niezbędne do uwierzytelnienia." -#: src/libslic3r/PrintConfig.cpp:98 +#: src/libslic3r/PrintConfig.cpp:100 msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance." msgstr "Slic3r może przesyłać pliki G-code do serwera druku. Ta sekcja powinna zawierać nazwę hosta, adres IP lub adres URL serwera." -#: src/libslic3r/PrintConfig.cpp:1299 +#: src/libslic3r/PrintConfig.cpp:1407 msgid "Slic3r will not scale speed down below this speed." -msgstr "Slic3r nie będzie skalował prędkości poniżej tej wartości." +msgstr "PrusaSlicer nie będzie skalował prędkości poniżej tej wartości." -#: src/libslic3r/PrintConfig.cpp:3359 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Slice" msgstr "Cięcie" -#: src/slic3r/GUI/MainFrame.cpp:512 +#: src/slic3r/GUI/MainFrame.cpp:1113 msgid "Slice a file into a G-code" msgstr "Cięcie jako G-code" -#: src/slic3r/GUI/MainFrame.cpp:518 +#: src/slic3r/GUI/MainFrame.cpp:1119 msgid "Slice a file into a G-code, save as" msgstr "Cięcie jako G-code, zapisz jako" -#: src/libslic3r/PrintConfig.cpp:87 +#: src/libslic3r/PrintConfig.cpp:89 msgid "Slice gap closing radius" msgstr "Promień zamykania szpar" -#: src/slic3r/GUI/Plater.cpp:892 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5110 +#: src/slic3r/GUI/Plater.cpp:767 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5237 msgid "Slice now" msgstr "Cięcie" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3526 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Cięcie modelu i eksport warstw SLA jako PNG." -#: src/libslic3r/PrintConfig.cpp:3354 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Slice the model and export toolpaths as G-code." msgstr "Cięcie modelu i eksport ścieżek narzędzi jako G-code." -#: src/libslic3r/PrintConfig.cpp:3360 +#: src/libslic3r/PrintConfig.cpp:3559 msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." msgstr "Cięcie modelu jako FFF lub SLA oparte o ustawienie konfiguracji printer_technology." -#: src/slic3r/GUI/Plater.cpp:216 +#: src/slic3r/GUI/Plater.cpp:222 msgid "Sliced Info" msgstr "Informacje o cięciu" -#: src/slic3r/GUI/MainFrame.cpp:847 src/slic3r/GUI/Plater.cpp:3121 -#: src/slic3r/GUI/Plater.cpp:5107 src/slic3r/GUI/Tab.cpp:1221 -#: src/slic3r/GUI/Tab.cpp:3662 +#: src/slic3r/GUI/MainFrame.cpp:1548 src/slic3r/GUI/Plater.cpp:2921 +#: src/slic3r/GUI/Plater.cpp:5234 src/slic3r/GUI/Tab.cpp:1551 +#: src/slic3r/GUI/Tab.cpp:4081 msgid "Slicing" msgstr "Cięcie" -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:134 -#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:184 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:170 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:219 msgid "Slicing complete" msgstr "Cięcie zakończone" -#: src/libslic3r/SLAPrint.cpp:760 +#: src/libslic3r/SLAPrint.cpp:780 msgid "Slicing done" msgstr "Cięcie zakończone" -#: src/slic3r/GUI/MainFrame.cpp:874 +#: src/slic3r/GUI/MainFrame.cpp:1575 msgid "Slicing Done!" msgstr "Cięcie zakończone!" -#: src/libslic3r/SLAPrintSteps.cpp:245 +#: src/slic3r/GUI/NotificationManager.cpp:751 +msgid "Slicing finished." +msgstr "Cięcie zakończone." + +#: src/libslic3r/SLAPrintSteps.cpp:247 msgid "Slicing had to be stopped due to an internal error: Inconsistent slice index." msgstr "Cięcie zostało zatrzymane z powodu błędu wewnętrznego: nieciągły indeks cięcia." -#: src/libslic3r/SLAPrintSteps.cpp:45 +#: src/libslic3r/SLAPrintSteps.cpp:46 msgid "Slicing model" msgstr "Cięcie modelu" -#: src/libslic3r/SLAPrintSteps.cpp:49 +#: src/libslic3r/SLAPrintSteps.cpp:50 msgid "Slicing supports" msgstr "Cięcie podpór" -#: src/libslic3r/PrintConfig.cpp:2414 +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Slow" msgstr "Wolne" -#: src/libslic3r/PrintConfig.cpp:1705 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "Slow down if layer print time is below" msgstr "Zwolnij jeśli czas warstwy wynosi mniej niż" -#: src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2558 msgid "Slow tilt" msgstr "Wolne przechylanie" -#: src/libslic3r/PrintConfig.cpp:1715 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Small perimeters" msgstr "Małe obrysy" -#: src/slic3r/GUI/GLCanvas3D.cpp:288 -msgid "Smooth" -msgstr "Gładki" +#: src/libslic3r/PrintConfig.cpp:2801 +msgid "Small pillar diameter percent" +msgstr "Procent średnicy małego słupka" -#: src/slic3r/GUI/GLCanvas3D.cpp:258 +#: src/slic3r/GUI/GLCanvas3D.cpp:274 +msgid "Smooth" +msgstr "Wygładzanie" + +#: src/slic3r/GUI/GLCanvas3D.cpp:247 msgid "Smoothing" msgstr "Wygładzanie" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Snapshot name" msgstr "Nazwa zrzutu" -#: src/slic3r/GUI/MainFrame.cpp:686 +#: src/slic3r/GUI/MainFrame.cpp:911 src/slic3r/GUI/MainFrame.cpp:1310 msgid "Software &Releases" msgstr "Wersje oprog&ramowania" -#: src/slic3r/GUI/PresetHints.cpp:184 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "zwarte wypełnienie" -#: src/slic3r/GUI/GUI_Preview.cpp:241 src/libslic3r/ExtrusionEntity.cpp:314 -#: src/libslic3r/PrintConfig.cpp:1756 src/libslic3r/PrintConfig.cpp:1767 +#: src/slic3r/GUI/GUI_Preview.cpp:305 src/libslic3r/ExtrusionEntity.cpp:318 +#: src/libslic3r/ExtrusionEntity.cpp:344 src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1882 msgid "Solid infill" msgstr "Zwarte wypełnienie" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1859 msgid "Solid infill every" msgstr "Zwarte wypełnienie co" -#: src/libslic3r/PrintConfig.cpp:1736 +#: src/libslic3r/PrintConfig.cpp:1851 msgid "Solid infill extruder" msgstr "Ekstruder do zwartego wypełnienia" -#: src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1842 msgid "Solid infill threshold area" msgstr "Min. powierzchnia zwartego wypełnienia" -#: src/slic3r/GUI/Tab.cpp:1065 src/libslic3r/PrintConfig.cpp:1780 +#: src/slic3r/GUI/Tab.cpp:1387 src/libslic3r/PrintConfig.cpp:1895 msgid "Solid layers" msgstr "Zwarte warstwy" -#: src/libslic3r/PrintConfig.cpp:754 +#: src/libslic3r/PrintConfig.cpp:790 msgid "Soluble material" msgstr "Materiał rozpuszczalny" -#: src/libslic3r/PrintConfig.cpp:755 +#: src/libslic3r/PrintConfig.cpp:791 msgid "Soluble material is most likely used for a soluble support." msgstr "Materiał rozpuszczalny jest używany zazwyczaj do rozpuszczalnych podpór." -#: src/libslic3r/PrintConfig.cpp:937 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:735 +msgid "Some fields are too long to fit. Right mouse click reveals the full text." +msgstr "Niektóre opisy są zbyt długie, aby mogły się zmieścić. Kliknij prawym przyciskiem, aby pokazać cały tekst." + +#: src/libslic3r/PrintConfig.cpp:981 msgid "Some G/M-code commands, including temperature control and others, are not universal. Set this option to your printer's firmware to get a compatible output. The \"No extrusion\" flavor prevents PrusaSlicer from exporting any extrusion value at all." msgstr "Niektóre komendy kodu G/M, wliczając kontrolę temperatury i inne, nie są uniwersalne. Ustaw tą opcję w firmware Twojej drukarki, aby uzyskać kompatybilny plik wyjściowy. Wariant \"no extrusion\" wyłączy generowanie jakichkolwiek wartości ekstruzji." -#: src/slic3r/GUI/GLCanvas3D.cpp:688 -msgid "Some objects are not visible" -msgstr "Niektóre obiekty są niewidoczne" +#: src/slic3r/GUI/Plater.cpp:2309 +#, c-format +msgid "" +"Some object(s) in file %s looks like saved in inches.\n" +"Should I consider them as a saved in inches and convert them?" +msgstr "" +"Niektóre modele w pliku %s wyglądają, jak zapisane w calach.\n" +"Czy traktować je jako zapisane w calach i przekonwertować?" -#: src/libslic3r/Print.cpp:1226 +#: src/slic3r/GUI/GLCanvas3D.cpp:636 +msgid "Some objects are not visible." +msgstr "Niektóre modele są niewidoczne." + +#: src/libslic3r/Print.cpp:1252 msgid "Some objects are too close; your extruder will collide with them." msgstr "Niektóre modele są zbyt blisko; ekstruder zderzy się z którymś z nich." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1254 msgid "Some objects are too tall and cannot be printed without extruder collisions." -msgstr "Niektóre modele są zbyt wysokie aby można było wydrukować je bez kolizji." +msgstr "Niektóre modele są zbyt wysokie, aby można było wydrukować je bez kolizji." -#: src/libslic3r/PrintConfig.cpp:2824 +#: src/libslic3r/PrintConfig.cpp:2988 msgid "Some objects can get along with a few smaller pads instead of a single big one. This parameter defines how far the center of two smaller pads should be. If theyare closer, they will get merged into one pad." msgstr "Niektóre modele można wydrukować z kilkoma mniejszymi podkładkami, zamiast jednej dużej. Ten parametr określa jak daleko od siebie powinny znajdować się dwie mniejsze podkładki. Jeśli znajdą się zbyt blisko, to zostaną złączone w jedną, dużą podkładkę." -#: src/libslic3r/PrintConfig.cpp:2187 +#: src/libslic3r/PrintConfig.cpp:2330 msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." msgstr "Niektóre drukarki mogą mieć trudności z drukiem ze zmienną wysokością warstwy. Domyślnie włączone." -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:2126 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "Rozstaw linii warstwy łączącej. Ustaw zero dla zwartej warstwy łączącej." -#: src/libslic3r/PrintConfig.cpp:2018 +#: src/libslic3r/PrintConfig.cpp:1155 +msgid "Spacing between ironing passes" +msgstr "Odstęp między ścieżkami prasowania" + +#: src/libslic3r/PrintConfig.cpp:2160 msgid "Spacing between support material lines." msgstr "Rozstaw linii materiału podporowego." -#: src/slic3r/GUI/GUI_ObjectList.cpp:98 src/slic3r/GUI/GUI_ObjectList.cpp:616 -#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/Tab.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:235 src/libslic3r/PrintConfig.cpp:458 -#: src/libslic3r/PrintConfig.cpp:919 src/libslic3r/PrintConfig.cpp:1048 -#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1668 -#: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1768 -#: src/libslic3r/PrintConfig.cpp:2118 +#: src/slic3r/GUI/GUI_ObjectList.cpp:96 src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_Preview.cpp:278 src/slic3r/GUI/Tab.cpp:1474 +#: src/libslic3r/PrintConfig.cpp:269 src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:963 src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1883 src/libslic3r/PrintConfig.cpp:2261 msgid "Speed" msgstr "Prędkość" -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Szybkość transmisji portu USB/portu szeregowego do połączenia z drukarką." - -#: src/libslic3r/GCode/PreviewData.cpp:351 +#: src/slic3r/GUI/GCodeViewer.cpp:2238 src/libslic3r/GCode/PreviewData.cpp:356 msgid "Speed (mm/s)" msgstr "Prędkość (mm/s)" -#: src/libslic3r/PrintConfig.cpp:920 +#: src/libslic3r/PrintConfig.cpp:964 msgid "Speed for filling small gaps using short zigzag moves. Keep this reasonably low to avoid too much shaking and resonance issues. Set zero to disable gaps filling." -msgstr "Prędkość wypełniania szczelin krótkimi ruchami typu zygzak. Ustaw tą wartość na tyle nisko aby uniknąć wibracji i rezonansu. Ustaw 0 aby wyłączyć wypełnianie szczelin." +msgstr "Prędkość wypełniania szczelin krótkimi ruchami typu zygzak. Ustaw tą wartość na tyle nisko, aby uniknąć wibracji i rezonansu. Ustaw 0, aby wyłączyć wypełnianie szczelin." -#: src/slic3r/GUI/Tab.cpp:1158 +#: src/slic3r/GUI/Tab.cpp:1488 msgid "Speed for non-print moves" msgstr "Prędkość ruchów jałowych" -#: src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1540 msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "Prędkość obrysów (inaczej powłoki pionowej). Ustaw 0 dla prędkości automatycznej." -#: src/slic3r/GUI/Tab.cpp:1146 +#: src/slic3r/GUI/Tab.cpp:1475 msgid "Speed for print moves" msgstr "Prędkość ruchów drukujących" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "Speed for printing bridges." msgstr "Prędkość drukowania mostów." -#: src/libslic3r/PrintConfig.cpp:1769 +#: src/libslic3r/PrintConfig.cpp:1884 msgid "Speed for printing solid regions (top/bottom/internal horizontal shells). This can be expressed as a percentage (for example: 80%) over the default infill speed above. Set to zero for auto." msgstr "Prędkość druku zwartych obszarów (góra/dół/poziome powłoki wewnętrzne). Może być wyrażona procentowo (np. 80%) ponad domyślną prędkość wypełnienia. Wpisz zero dla automatycznego ustawienia." -#: src/libslic3r/PrintConfig.cpp:1993 +#: src/libslic3r/PrintConfig.cpp:2135 msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." msgstr "Prędkość druku warstw łączących materiału podporowego. Jeśli ustawisz wartość procentową (np. 50%) to zostanie obliczona z prędkości druku materiału podporowego." -#: src/libslic3r/PrintConfig.cpp:2027 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Speed for printing support material." msgstr "Prędkość druku materiału podporowego." -#: src/libslic3r/PrintConfig.cpp:1049 +#: src/libslic3r/PrintConfig.cpp:1093 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "Prędkość druku wewnętrznego wypełnienia. Ustaw 0 dla prędkości automatycznej." -#: src/libslic3r/PrintConfig.cpp:2119 +#: src/libslic3r/PrintConfig.cpp:2262 msgid "Speed for printing top solid layers (it only applies to the uppermost external layers and not to their internal solid layers). You may want to slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." msgstr "Prędkość druku najwyższych warstw zwartych (dotyczy tylko najwyższych, zewnętrznych warstw i nie obejmuje zwartych warstw umieszczonych niżej). Warto obniżyć tą wartość dla ładniejszego wykończenia powierzchni. Jeśli ustawisz wartość procentową (np. 80%) to zosttanie obliczona z prędkości druku zwartego wypełnienia. Ustaw zero dla prędkości automatycznej." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2296 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "Prędkość ruchów jałowych (przeskoków pomiędzy punktami ekstruzji)." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:695 msgid "Speed of the first cooling move" msgstr "Prędkość pierwszego ruchu chłodzącego" -#: src/libslic3r/PrintConfig.cpp:678 +#: src/libslic3r/PrintConfig.cpp:714 msgid "Speed of the last cooling move" msgstr "Prędkość ostatniego ruchu chłodzącego" -#: src/libslic3r/PrintConfig.cpp:616 +#: src/libslic3r/PrintConfig.cpp:652 msgid "Speed used at the very beginning of loading phase." msgstr "Prędkość używana podczas początkowej fazy ładowania filamentu." -#: src/libslic3r/PrintConfig.cpp:608 +#: src/libslic3r/PrintConfig.cpp:644 msgid "Speed used for loading the filament on the wipe tower." msgstr "Prędkość ładowania filamentu podczas drukowania wieży czyszczącej." -#: src/libslic3r/PrintConfig.cpp:624 +#: src/libslic3r/PrintConfig.cpp:660 msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." msgstr "Prędkość rozładowywania filamentu dla wieży czyszczącej (nie wpływa na początkową fazę rozładowywania zaraz po wyciskaniu)." -#: src/libslic3r/PrintConfig.cpp:633 +#: src/libslic3r/PrintConfig.cpp:669 msgid "Speed used for unloading the tip of the filament immediately after ramming." msgstr "Prędkość wycofywania (rozładowywania) końcówki filamentu bezpośrednio po wyciskaniu." -#: src/slic3r/GUI/Mouse3DController.cpp:296 +#: src/slic3r/GUI/Mouse3DController.cpp:279 msgid "Speed:" msgstr "Prędkość:" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1432 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:54 +#: src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp:37 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1563 msgid "Sphere" msgstr "Kula" -#: src/libslic3r/PrintConfig.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:1909 msgid "Spiral vase" msgstr "Tryb wazy" -#: src/slic3r/GUI/ConfigManipulation.cpp:90 +#: src/slic3r/GUI/ConfigManipulation.cpp:89 msgid "Spiral Vase" msgstr "Tryb wazy" -#: src/slic3r/GUI/Plater.cpp:4019 src/slic3r/GUI/Plater.cpp:4034 -#: src/slic3r/GUI/Plater.cpp:4048 src/libslic3r/PrintConfig.cpp:3471 +#: src/slic3r/GUI/Plater.cpp:3939 src/slic3r/GUI/Plater.cpp:3954 +#: src/slic3r/GUI/Plater.cpp:3972 src/libslic3r/PrintConfig.cpp:3670 msgid "Split" msgstr "Podziel" -#: src/slic3r/GUI/Plater.cpp:4019 +#: src/slic3r/GUI/Plater.cpp:3939 msgid "Split the selected object" msgstr "Podziel zaznaczony model" -#: src/slic3r/GUI/Plater.cpp:4014 src/slic3r/GUI/Plater.cpp:4034 +#: src/slic3r/GUI/Plater.cpp:3934 src/slic3r/GUI/Plater.cpp:3954 msgid "Split the selected object into individual objects" msgstr "Podziel wybrany model na osobne modele" -#: src/slic3r/GUI/Plater.cpp:4016 src/slic3r/GUI/Plater.cpp:4048 +#: src/slic3r/GUI/Plater.cpp:3936 src/slic3r/GUI/Plater.cpp:3972 msgid "Split the selected object into individual sub-parts" msgstr "Podziel wybrany model na części" -#: src/slic3r/GUI/GLCanvas3D.cpp:4550 +#: src/slic3r/GUI/GLCanvas3D.cpp:4916 msgid "Split to objects" msgstr "Podziel na osobne modele" -#: src/slic3r/GUI/Plater.cpp:2981 +#: src/slic3r/GUI/Plater.cpp:2774 msgid "Split to Objects" msgstr "Podziel na modele" -#: src/slic3r/GUI/GLCanvas3D.cpp:4560 src/slic3r/GUI/GUI_ObjectList.cpp:1487 +#: src/slic3r/GUI/GLCanvas3D.cpp:4926 src/slic3r/GUI/GUI_ObjectList.cpp:1618 msgid "Split to parts" msgstr "Podziel na części" -#: src/slic3r/GUI/GUI_ObjectList.cpp:2274 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2440 msgid "Split to Parts" msgstr "Podziel na części" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:307 msgid "Standard" msgstr "Standard" -#: src/libslic3r/PrintConfig.cpp:846 +#: src/libslic3r/PrintConfig.cpp:884 msgid "Stars" msgstr "Gwiazdki" -#: src/slic3r/GUI/MainFrame.cpp:405 +#: src/slic3r/GUI/MainFrame.cpp:986 msgid "Start a new project" msgstr "Rozpocznij nowy projekt" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Start at height" msgstr "Zakres od" -#: src/slic3r/GUI/Tab.cpp:1528 src/slic3r/GUI/Tab.cpp:1976 -#: src/libslic3r/PrintConfig.cpp:1813 src/libslic3r/PrintConfig.cpp:1828 +#: src/slic3r/GUI/Tab.cpp:1873 src/slic3r/GUI/Tab.cpp:2161 +#: src/libslic3r/PrintConfig.cpp:1928 src/libslic3r/PrintConfig.cpp:1943 msgid "Start G-code" msgstr "G-code startowy" -#: src/slic3r/GUI/MainFrame.cpp:532 +#: src/slic3r/GUI/MainFrame.cpp:1133 msgid "Start new slicing process" msgstr "Uruchom nowy proces cięcia" @@ -7358,7 +8447,37 @@ msgstr "Uruchom nowy proces cięcia" msgid "Start printing after upload" msgstr "Zacznij druk po przesłaniu" -#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +#: src/slic3r/GUI/GUI_App.cpp:396 +msgid "Start the application" +msgstr "Uruchom aplikację" + +#: src/slic3r/GUI/GUI_App.cpp:386 +msgid "" +"Starting with %1% 2.3, configuration directory on Linux has changed (according to XDG Base Directory Specification) to \n" +"%2%.\n" +"\n" +"This directory did not exist yet (maybe you run the new version for the first time).\n" +"However, an old %1% configuration directory was detected in \n" +"%3%.\n" +"\n" +"Consider moving the contents of the old directory to the new location in order to access your profiles, etc.\n" +"Note that if you decide to downgrade %1% in future, it will use the old location again.\n" +"\n" +"What do you want to do now?" +msgstr "" +"Zaczynając od %1% 2.3, konfiguracje na Linuxie zostały przeniesione (zgodnie ze specyfikacją XDG Base Directory) do\n" +"%2%.\n" +"\n" +"Ten katalog jeszcze nie istnieje (powodem może być pierwsze uruchomienie nowej wersji).\n" +"Jednak poprzedni katalog konfiguracji %1% został wykryty w\n" +"%3%.\n" +"\n" +"Rozważ przeniesienie zawartości poprzedniego katalogu do nowej lokalizacji, aby mieć dostęp do swoich profili itd.\n" +"Weź pod uwagę, że jeśli zdecyduje się w przyszłości zainstalować starszą wersję %1%, z powrotem zostanie użyty poprzedni katalog.\n" +"\n" +"Czy chcesz to teraz zrobić?" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 msgid "Status" msgstr "Stan" @@ -7366,166 +8485,160 @@ msgstr "Stan" msgid "Status:" msgstr "Stan:" -#: src/slic3r/GUI/Tab.cpp:2209 +#: src/slic3r/GUI/Search.cpp:77 src/slic3r/GUI/Tab.cpp:2378 msgid "Stealth" msgstr "Stealth" -#: src/slic3r/GUI/Plater.cpp:1291 +#: src/slic3r/GUI/Plater.cpp:1187 src/slic3r/GUI/Plater.cpp:1235 msgid "stealth mode" msgstr "tryb stealth" -#: src/slic3r/GUI/Plater.cpp:4985 +#: src/slic3r/GUI/GCodeViewer.cpp:2557 +msgid "Stealth mode" +msgstr "Tryb stealth" + +#: src/slic3r/GUI/Plater.cpp:5118 #, c-format msgid "STL file exported to %s" msgstr "Plik STL wyeksportowany do %s" -#: src/slic3r/GUI/GUI_ObjectLayers.cpp:27 +#: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 msgid "Stop at height" msgstr "Zakres do" -#: src/slic3r/GUI/Tab.cpp:1693 src/slic3r/GUI/Tab.cpp:1928 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:295 msgid "Success!" msgstr "Powodzenie!" -#: src/slic3r/GUI/PresetHints.cpp:203 +#: src/slic3r/GUI/Plater.cpp:2047 +#, c-format +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Wysunięto pomyślnie. Urządzenie %s(%s) można teraz bezpiecznie odłączyć od komputera." + +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "podpora" -#: src/libslic3r/PrintConfig.cpp:2692 +#: src/libslic3r/PrintConfig.cpp:2856 msgid "Support base diameter" msgstr "Średnica stopy podpory" -#: src/libslic3r/PrintConfig.cpp:2702 +#: src/libslic3r/PrintConfig.cpp:2866 msgid "Support base height" msgstr "Wysokość stopy podpory" -#: src/libslic3r/PrintConfig.cpp:2711 +#: src/libslic3r/PrintConfig.cpp:2875 msgid "Support base safety distance" msgstr "Bezpieczna odległość stopy podpory" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Blocker" msgstr "Blokada podpór" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3551 +#: src/libslic3r/PrintConfig.cpp:895 +msgid "Support Cubic" +msgstr "Sześcienny podpierający" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:4014 msgid "Support Enforcer" msgstr "Wymuszenie podpór" -#: src/slic3r/GUI/ConfigManipulation.cpp:163 +#: src/slic3r/GUI/ConfigManipulation.cpp:162 msgid "Support Generator" msgstr "Generator podpór" -#: src/slic3r/GUI/Tab.cpp:3608 +#: src/slic3r/GUI/Tab.cpp:4018 msgid "Support head" msgstr "Łącznik podpory" -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Support head front diameter" -msgstr "Średnica początku łącznika" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Support head penetration" -msgstr "Przenikanie łączników podpór" - -#: src/libslic3r/PrintConfig.cpp:2638 -msgid "Support head width" -msgstr "Szerokość łączników podpór" - -#: src/slic3r/GUI/PresetHints.cpp:213 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "warstwa łącząca podpory z modelem" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:97 -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 src/slic3r/GUI/GUI_Preview.cpp:246 -#: src/slic3r/GUI/Tab.cpp:1120 src/slic3r/GUI/Tab.cpp:1121 -#: src/libslic3r/ExtrusionEntity.cpp:319 src/libslic3r/PrintConfig.cpp:370 -#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1866 -#: src/libslic3r/PrintConfig.cpp:1872 src/libslic3r/PrintConfig.cpp:1880 -#: src/libslic3r/PrintConfig.cpp:1892 src/libslic3r/PrintConfig.cpp:1902 -#: src/libslic3r/PrintConfig.cpp:1910 src/libslic3r/PrintConfig.cpp:1925 -#: src/libslic3r/PrintConfig.cpp:1946 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:1974 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1992 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2017 src/libslic3r/PrintConfig.cpp:2025 -#: src/libslic3r/PrintConfig.cpp:2026 src/libslic3r/PrintConfig.cpp:2035 -#: src/libslic3r/PrintConfig.cpp:2043 src/libslic3r/PrintConfig.cpp:2057 +#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/slic3r/GUI/GUI_ObjectList.cpp:95 +#: src/slic3r/GUI/GUI_ObjectList.cpp:654 src/slic3r/GUI/GUI_Preview.cpp:311 +#: src/slic3r/GUI/Tab.cpp:1449 src/slic3r/GUI/Tab.cpp:1450 +#: src/libslic3r/ExtrusionEntity.cpp:324 src/libslic3r/ExtrusionEntity.cpp:356 +#: src/libslic3r/PrintConfig.cpp:404 src/libslic3r/PrintConfig.cpp:1610 +#: src/libslic3r/PrintConfig.cpp:2008 src/libslic3r/PrintConfig.cpp:2014 +#: src/libslic3r/PrintConfig.cpp:2022 src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2044 src/libslic3r/PrintConfig.cpp:2052 +#: src/libslic3r/PrintConfig.cpp:2067 src/libslic3r/PrintConfig.cpp:2088 +#: src/libslic3r/PrintConfig.cpp:2100 src/libslic3r/PrintConfig.cpp:2116 +#: src/libslic3r/PrintConfig.cpp:2125 src/libslic3r/PrintConfig.cpp:2134 +#: src/libslic3r/PrintConfig.cpp:2145 src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2177 src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "Support material" msgstr "Materiał podporowy" -#: src/slic3r/GUI/GUI_Preview.cpp:247 src/libslic3r/ExtrusionEntity.cpp:320 -#: src/libslic3r/PrintConfig.cpp:1991 +#: src/slic3r/GUI/GUI_Preview.cpp:312 src/libslic3r/ExtrusionEntity.cpp:325 +#: src/libslic3r/ExtrusionEntity.cpp:358 src/libslic3r/PrintConfig.cpp:2133 msgid "Support material interface" msgstr "Warstwa łącząca podpory z modelem" -#: src/libslic3r/PrintConfig.cpp:2044 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." msgstr "Podpory nie będą generowane dla zwisów, których kąt przekracza zadany próg (90° = pion). Inaczej mówiąc, ta wartość określa największy kąt od poziomu (kąt mierzony od płaszczyzny poziomej), który będzie drukowany bez podpór." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:2106 msgid "Support material/raft interface extruder" msgstr "Ekstruder dla podpór/warstw łączących raft z modelem" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:2079 msgid "Support material/raft/skirt extruder" msgstr "Ekstruder dla podpór/tratwy (raft)/skirtu" -#: src/slic3r/GUI/Plater.cpp:500 src/libslic3r/PrintConfig.cpp:1901 -#: src/libslic3r/PrintConfig.cpp:2674 +#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:2043 +#: src/libslic3r/PrintConfig.cpp:2838 msgid "Support on build plate only" msgstr "Podpory tylko na stole" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:762 msgid "Support parameter change" msgstr "Zmiana parametrów podpór" -#: src/slic3r/GUI/Tab.cpp:3613 +#: src/slic3r/GUI/Tab.cpp:4023 msgid "Support pillar" msgstr "Słupek podpory" -#: src/libslic3r/PrintConfig.cpp:2658 -msgid "Support pillar connection mode" -msgstr "Tryb łączenia słupków podpór" - -#: src/libslic3r/PrintConfig.cpp:2648 -msgid "Support pillar diameter" -msgstr "Średnica słupków podpór" - -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:55 -#: src/libslic3r/PrintConfig.cpp:2764 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:54 +#: src/libslic3r/PrintConfig.cpp:2928 msgid "Support points density" msgstr "Gęstość punktów podpór" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1196 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1048 msgid "Support points edit" msgstr "Edycja punktów podpór" -#: src/slic3r/GUI/GUI_ObjectList.cpp:106 src/slic3r/GUI/GUI_ObjectList.cpp:624 -#: src/slic3r/GUI/Plater.cpp:495 src/slic3r/GUI/Tab.cpp:3604 -#: src/slic3r/GUI/Tab.cpp:3605 src/libslic3r/PrintConfig.cpp:2614 -#: src/libslic3r/PrintConfig.cpp:2621 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2649 -#: src/libslic3r/PrintConfig.cpp:2675 src/libslic3r/PrintConfig.cpp:2682 -#: src/libslic3r/PrintConfig.cpp:2693 src/libslic3r/PrintConfig.cpp:2703 -#: src/libslic3r/PrintConfig.cpp:2712 src/libslic3r/PrintConfig.cpp:2725 -#: src/libslic3r/PrintConfig.cpp:2735 src/libslic3r/PrintConfig.cpp:2744 -#: src/libslic3r/PrintConfig.cpp:2754 src/libslic3r/PrintConfig.cpp:2765 -#: src/libslic3r/PrintConfig.cpp:2773 +#: src/slic3r/GUI/GUI_ObjectList.cpp:104 src/slic3r/GUI/GUI_ObjectList.cpp:663 +#: src/slic3r/GUI/Plater.cpp:361 src/slic3r/GUI/Tab.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:4015 src/libslic3r/PrintConfig.cpp:2757 +#: src/libslic3r/PrintConfig.cpp:2764 src/libslic3r/PrintConfig.cpp:2773 +#: src/libslic3r/PrintConfig.cpp:2782 src/libslic3r/PrintConfig.cpp:2792 +#: src/libslic3r/PrintConfig.cpp:2802 src/libslic3r/PrintConfig.cpp:2839 +#: src/libslic3r/PrintConfig.cpp:2846 src/libslic3r/PrintConfig.cpp:2857 +#: src/libslic3r/PrintConfig.cpp:2867 src/libslic3r/PrintConfig.cpp:2876 +#: src/libslic3r/PrintConfig.cpp:2889 src/libslic3r/PrintConfig.cpp:2899 +#: src/libslic3r/PrintConfig.cpp:2908 src/libslic3r/PrintConfig.cpp:2918 +#: src/libslic3r/PrintConfig.cpp:2929 src/libslic3r/PrintConfig.cpp:2937 msgid "Supports" msgstr "Podpory" -#: src/slic3r/GUI/Plater.cpp:1194 +#: src/slic3r/GUI/Plater.cpp:1103 msgid "supports and pad" msgstr "podpory i podkładka" -#: src/libslic3r/PrintConfig.cpp:1092 +#: src/libslic3r/PrintConfig.cpp:1185 msgid "Supports remaining times" msgstr "Obsługa pozostałego czasu druku" -#: src/libslic3r/PrintConfig.cpp:1101 +#: src/libslic3r/PrintConfig.cpp:1194 msgid "Supports stealth mode" msgstr "Wspiera tryb Stealth" -#: src/slic3r/GUI/ConfigManipulation.cpp:159 +#: src/slic3r/GUI/ConfigManipulation.cpp:158 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters" @@ -7533,44 +8646,60 @@ msgstr "" "Podpory działają lepiej, jeśli włączone jest poniższe ustawienie:\n" "- Wykrywanie mostów przy obrysach" -#: src/slic3r/GUI/Preferences.cpp:87 +#: src/slic3r/GUI/Preferences.cpp:104 msgid "Suppress \" - default - \" presets" msgstr "Ukryj \" - domyślne - \" zestawy ustawień" -#: src/slic3r/GUI/Preferences.cpp:89 +#: src/slic3r/GUI/Preferences.cpp:106 msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." msgstr "Ukryj \" - domyślne - \" zestawy ustawień w zakładkach Druk / Filament / Drukarka gdy dostępne są inne kompatybilne ustawienia." -#: src/slic3r/GUI/MainFrame.cpp:826 +#: src/slic3r/GUI/MainFrame.cpp:1527 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/DoubleSlider.cpp:1144 +#: src/slic3r/GUI/Mouse3DController.cpp:318 +msgid "Swap Y/Z axes" +msgstr "Zamień osie Y/Z" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Switch between Editor/Preview" +msgstr "Przełącz między edytorem/podglądem" + +#: src/slic3r/GUI/DoubleSlider.cpp:1273 msgid "Switch code to Change extruder" msgstr "Przełącz kod na zmianę ekstrudera" -#: src/slic3r/GUI/DoubleSlider.cpp:1179 +#: src/slic3r/GUI/DoubleSlider.cpp:1306 msgid "Switch code to Color change (%1%) for:" msgstr "Zmień kod na zmianę koloru (%1%) dla:" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Switch to 3D" msgstr "Przełącz na 3D" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1376 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1223 msgid "Switch to editing mode" msgstr "Tryb edycji" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Switch to Preview" msgstr "Przełącz na Podgląd cięcia" -#: src/slic3r/GUI/wxExtensions.cpp:703 +#: src/slic3r/GUI/GLCanvas3D.cpp:4302 src/slic3r/GUI/GLCanvas3D.cpp:4939 +msgid "Switch to Settings" +msgstr "Przełącz na ustawienia" + +#: src/slic3r/GUI/wxExtensions.cpp:623 #, c-format msgid "Switch to the %s mode" msgstr "Przełącz na tryb %s" -#: src/slic3r/GUI/GUI_App.cpp:882 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:542 +msgid "Switching Presets: Unsaved Changes" +msgstr "Przełączanie zestawu ustawień: niezapisane zmiany" + +#: src/slic3r/GUI/GUI_App.cpp:1608 msgid "" "Switching the language will trigger application restart.\n" "You will lose content of the plater." @@ -7585,65 +8714,72 @@ msgid "" "Do you want to proceed?" msgstr "Włączenie trybu prostego spowoduje odrzucenie zmian wprowadzonych w trybie zaawansowanym! Czy chcesz kontynować?" -#: src/slic3r/GUI/Tab.cpp:1014 +#: src/slic3r/GUI/Tab.cpp:1332 msgid "symbolic profile name" msgstr "skrócona nazwa profilu" -#: src/libslic3r/PrintConfig.cpp:2036 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." msgstr "Synchronizuj warstwy podporowe z warstwami modelu. Przydaje się przy drukarkach typu multi-material gdy zmiana używanego materiału jest kosztowna." -#: src/libslic3r/PrintConfig.cpp:2034 +#: src/libslic3r/PrintConfig.cpp:2176 msgid "Synchronize with object layers" msgstr "Synchronizuj z warstwami modelu" -#: src/slic3r/GUI/MainFrame.cpp:699 +#: src/slic3r/GUI/MainFrame.cpp:924 src/slic3r/GUI/MainFrame.cpp:1323 msgid "System &Info" msgstr "&Informacje o Systemie" -#: src/slic3r/GUI/SysInfoDialog.cpp:78 +#: src/slic3r/GUI/SysInfoDialog.cpp:90 src/slic3r/GUI/SysInfoDialog.cpp:92 msgid "System Information" msgstr "Informacje o systemie" -#: src/slic3r/GUI/Preset.cpp:1109 src/slic3r/GUI/Preset.cpp:1164 -#: src/slic3r/GUI/Preset.cpp:1242 src/slic3r/GUI/Preset.cpp:1284 -#: src/slic3r/GUI/PresetBundle.cpp:1583 src/slic3r/GUI/PresetBundle.cpp:1672 +#: src/slic3r/GUI/PresetComboBoxes.cpp:188 +#: src/slic3r/GUI/PresetComboBoxes.cpp:226 +#: src/slic3r/GUI/PresetComboBoxes.cpp:724 +#: src/slic3r/GUI/PresetComboBoxes.cpp:774 +#: src/slic3r/GUI/PresetComboBoxes.cpp:886 +#: src/slic3r/GUI/PresetComboBoxes.cpp:930 msgid "System presets" msgstr "Ustawienia systemowe" -#: src/slic3r/GUI/GUI_App.cpp:801 +#: src/slic3r/GUI/GUI_App.cpp:1481 msgid "Take Configuration &Snapshot" msgstr "Wykonaj Zrzu&t Konfiguracji" -#: src/slic3r/GUI/GUI_App.cpp:839 +#: src/slic3r/GUI/GUI_App.cpp:1540 msgid "Taking configuration snapshot" msgstr "Zrzucanie konfiguracji" -#: src/slic3r/GUI/Tab.cpp:1433 src/libslic3r/PrintConfig.cpp:2067 +#: src/slic3r/GUI/Tab.cpp:1779 msgid "Temperature" msgstr "Temperatura" -#: src/libslic3r/PrintConfig.cpp:1804 +#: src/libslic3r/PrintConfig.cpp:1919 msgid "Temperature difference to be applied when an extruder is not active. Enables a full-height \"sacrificial\" skirt on which the nozzles are periodically wiped." msgstr "Różnica temperatur mająca zastosowanie gdy ekstruder nie jest używany. Włącza druk skirtu o wysokości równej wysokości modelu, dzięki której dysze będą co jakiś czas czyszczone." -#: src/libslic3r/PrintConfig.cpp:1803 +#: src/libslic3r/PrintConfig.cpp:1918 msgid "Temperature variation" msgstr "Zmiana temperatury" -#: src/slic3r/GUI/ConfigWizard.cpp:1017 +#: src/slic3r/GUI/ConfigWizard.cpp:1383 msgid "Temperatures" msgstr "Temperatury" -#: src/slic3r/GUI/Tab.cpp:1677 src/slic3r/GUI/Tab.cpp:1915 +#: src/slic3r/GUI/Tab.cpp:2215 +msgid "Template Custom G-code" +msgstr "Szablon niestandardowego G-code" + +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:284 msgid "Test" msgstr "Test" -#: src/slic3r/GUI/BedShapeDialog.cpp:172 +#: src/slic3r/GUI/BedShapeDialog.cpp:315 msgid "Texture" msgstr "Tekstura" -#: src/slic3r/GUI/ConfigManipulation.cpp:208 +#: src/slic3r/GUI/ConfigManipulation.cpp:207 msgid "The %1% infill pattern is not supposed to work at 100%% density." msgstr "Wzór wypełnienia %1% nie działa z gęstością ustawioną na 100%%." @@ -7661,11 +8797,11 @@ msgstr "" "Nie znaleziono urządzenia %s .\n" "Jeśli urządzenie jest podłączone, to naciśnij przycisk Reset obok złącza USB ..." -#: src/slic3r/GUI/Tab.cpp:976 +#: src/slic3r/GUI/Tab.cpp:1238 msgid "The current custom preset will be detached from the parent system preset." msgstr "Obecny niestandardowy zestaw ustawień zostanie odłączony od dziedziczącego zestawu systemowego." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:875 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:925 msgid "" "The currently manipulated object is tilted (rotation angles are not multiples of 90°).\n" "Non-uniform scaling of tilted objects is only possible in the World coordinate system,\n" @@ -7674,120 +8810,137 @@ msgstr "" "Obecnie przekształcany model jest przechylony (kąty obrotu nie są wielokrotnością 90°).\n" "Nierównomierne skalowanie przechylonych modeli jest możliwe tylko w globalnym systemie koordynat, po osadzeniu kątów obrotu w koordynatach modelu." -#: src/libslic3r/PrintConfig.cpp:2726 +#: src/libslic3r/PrintConfig.cpp:2890 msgid "The default angle for connecting support sticks and junctions." msgstr "Domyślny kąt łączenia słupków i \"skrzyżowań\" podpór." -#: src/libslic3r/SLAPrint.cpp:631 +#: src/libslic3r/SLAPrint.cpp:645 msgid "The endings of the support pillars will be deployed on the gap between the object and the pad. 'Support base safety distance' has to be greater than the 'Pad object gap' parameter to avoid this." -msgstr "Końcówki słupków podpór będą rozmieszczone w przestrzeni pomiędzy modelem a podkładką. Aby tego uniknąć, parametr \"Bezpieczna odległość stopy podpory\" powinien być większy niż \"Odstęp modelu od podkładki\"." +msgstr "Końcówki słupków podpór będą rozmieszczone w przestrzeni pomiędzy modelem, a podkładką. Aby tego uniknąć, parametr \"Bezpieczna odległość stopy podpory\" powinien być większy niż \"Odstęp modelu od podkładki\"." -#: src/libslic3r/PrintConfig.cpp:489 +#: src/libslic3r/PrintConfig.cpp:525 msgid "The extruder to use (unless more specific extruder settings are specified). This value overrides perimeter and infill extruders, but not the support extruders." msgstr "Używany ekstruder (jeśli nie są określone dokładniejsze ustawienia ekstuderów). To ustawienie nadpisuje ustawienia ekstruderów dla obrysów i wypełnienia, ale nie tych dla podpór." -#: src/libslic3r/PrintConfig.cpp:1003 +#: src/libslic3r/PrintConfig.cpp:1047 msgid "The extruder to use when printing infill." msgstr "Ekstruder używany do druku wypełnienia." -#: src/libslic3r/PrintConfig.cpp:1410 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "Ekstruder używany przy druku obrysów i brim. Pierwszy ekstruder ma nr 1." -#: src/libslic3r/PrintConfig.cpp:1738 +#: src/libslic3r/PrintConfig.cpp:1853 msgid "The extruder to use when printing solid infill." msgstr "Ekstruder używany do druku zwartego wypełnienia." -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:2108 msgid "The extruder to use when printing support material interface (1+, 0 to use the current extruder to minimize tool changes). This affects raft too." -msgstr "Ekstruder używany przy druku warstw łączących podpory z modelem (1+, zero aby użyć obecnie wybranego ekstrudera i zminimalizować zmiany filamentu). Ma wpływ również na druk tratwy (raftu)." +msgstr "Ekstruder używany przy druku warstw łączących podpory z modelem (1+, zero, aby użyć obecnie wybranego ekstrudera i zminimalizować zmiany filamentu). Ma wpływ również na druk tratwy (raftu)." -#: src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:2081 msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." msgstr "Ekstruder używany przy druku podpór, tratwy (raft) i skirtu (1+, zero aby użyć obecnie wybranego ekstrudera i zminimalizować zmiany filamentu)." -#: src/libslic3r/PrintConfig.cpp:727 +#: src/libslic3r/PrintConfig.cpp:763 msgid "The filament material type for use in custom G-codes." msgstr "Rodzaj filamentu używanego przy własnym G-code." -#: src/libslic3r/PrintConfig.cpp:3494 +#: src/libslic3r/PrintConfig.cpp:3693 msgid "The file where the output will be written (if not specified, it will be based on the input file)." msgstr "Plik, w którym będzie zapisany efekt wyjściowy (jeśli nie zostanie określony, to będzie bazować na pliku wejściowym)." -#: src/libslic3r/PrintConfig.cpp:1102 +#: src/libslic3r/PrintConfig.cpp:1195 msgid "The firmware supports stealth mode" msgstr "Firmware wspiera tryb Stealth" -#: src/libslic3r/PrintConfig.cpp:120 +#: src/libslic3r/PrintConfig.cpp:122 msgid "The first layer will be shrunk in the XY plane by the configured value to compensate for the 1st layer squish aka an Elephant Foot effect." -msgstr "Pierwsza warstwa zostanie zmniejszona o tą wartość w osiach X i Y aby zniwelować efekt stopy słonia (Elephant Foot - gdy pierwsza warstwa \"rozjeżdża\" się na boki)." +msgstr "Pierwsza warstwa zostanie zmniejszona o tą wartość w osiach X i Y, aby zniwelować efekt stopy słonia (Elephant Foot - gdy pierwsza warstwa \"rozjeżdża\" się na boki)." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3820 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3927 src/slic3r/GUI/Tab.cpp:3457 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4283 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4410 +#: src/slic3r/GUI/SavePresetDialog.cpp:117 msgid "the following characters are not allowed:" msgstr "następujące znaki nie są dozwolone:" -#: src/slic3r/GUI/ConfigWizard.cpp:1830 +#: src/slic3r/GUI/ConfigWizard.cpp:2257 msgid "The following FFF printer models have no filament selected:" msgstr "Następujące modele drukarek FFF nie mają przypisanych filamentów:" -#: src/slic3r/GUI/ConfigWizard.cpp:1848 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1004 +msgid "The following presets were modified:" +msgstr "Następujące zestawy ustawień zostały zmodyfikowane:" + +#: src/slic3r/GUI/ConfigWizard.cpp:2275 msgid "The following SLA printer models have no materials selected:" msgstr "Następujące modele drukarek SLA nie mają przypisanych materiałów:" -#: src/slic3r/GUI/Tab.cpp:3461 +#: src/slic3r/GUI/SavePresetDialog.cpp:125 msgid "the following suffix is not allowed:" msgstr "następujący sufiks nie jest dozwolony:" -#: src/libslic3r/PrintConfig.cpp:2871 +#: src/libslic3r/PrintConfig.cpp:3035 msgid "The gap between the object bottom and the generated pad in zero elevation mode." msgstr "Odstęp między najniższą częścią modelu a wygenerowaną podkładką w trybie zerowego podniesienia." -#: src/libslic3r/PrintConfig.cpp:2704 +#: src/libslic3r/PrintConfig.cpp:2868 msgid "The height of the pillar base cone" msgstr "Wysokość stożka bazowego podpory" -#: src/slic3r/GUI/DoubleSlider.cpp:1922 +#: src/slic3r/GUI/DoubleSlider.cpp:2140 msgid "The last color change data was saved for a multi extruder printing with tool changes for whole print." msgstr "Dane ostatniej zmiany koloru zostały zapisane dla drukarki wielomateriałowej ze zmianami narzędzi dla całego wydruku." -#: src/slic3r/GUI/DoubleSlider.cpp:1900 src/slic3r/GUI/DoubleSlider.cpp:1916 +#: src/slic3r/GUI/DoubleSlider.cpp:2119 src/slic3r/GUI/DoubleSlider.cpp:2134 msgid "The last color change data was saved for a multi extruder printing." msgstr "Dane ostatniej zmiany koloru zostały zapisane dla druku wielomateriałowego." -#: src/slic3r/GUI/DoubleSlider.cpp:1899 +#: src/slic3r/GUI/DoubleSlider.cpp:2118 msgid "The last color change data was saved for a single extruder printing." msgstr "Dane ostatniej zmiany koloru zostały zapisane dla druku z jednym ekstruderem." -#: src/libslic3r/PrintConfig.cpp:2745 +#: src/libslic3r/PrintConfig.cpp:2909 msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." msgstr "Maksymalny dystans pomiędzy słupkami podpór, które powinny zostać połączone. Wartość 0 zapobiegnie łączeniu słupków podpór." -#: src/libslic3r/PrintConfig.cpp:2736 +#: src/libslic3r/PrintConfig.cpp:2900 msgid "The max length of a bridge" msgstr "Maksymalna długość mostu" -#: src/libslic3r/PrintConfig.cpp:2714 +#: src/libslic3r/PrintConfig.cpp:2878 msgid "The minimum distance of the pillar base from the model in mm. Makes sense in zero elevation mode where a gap according to this parameter is inserted between the model and the pad." msgstr "Minimalny odstęp stopy słupka od modelu, wyrażony w mm. Ma zastosowanie w trybie zerowego podniesienia, gdy odstęp określony tym parametrem będzie oddzielał model od podkładki." -#: src/libslic3r/PrintConfig.cpp:185 +#: src/slic3r/GUI/SavePresetDialog.cpp:142 +msgid "The name cannot be empty." +msgstr "Nazwa nie może być pusta." + +#: src/libslic3r/PrintConfig.cpp:219 msgid "The number of bottom solid layers is increased above bottom_solid_layers if necessary to satisfy minimum thickness of bottom shell." msgstr "Liczba dolnych warstw jest zwiększona ponad bottom_solid_layers, jeśli to konieczne, aby spełnić warunek minimalnej grubości powłoki." -#: src/libslic3r/PrintConfig.cpp:2143 +#: src/libslic3r/PrintConfig.cpp:2286 msgid "The number of top solid layers is increased above top_solid_layers if necessary to satisfy minimum thickness of top shell. This is useful to prevent pillowing effect when printing with variable layer height." msgstr "Liczba górnych warstw jest zwiększona ponad top_solid_layers, jeśli to konieczne, aby spełnić warunek minimalnej grubości powłoki. Przydaje się do uniknięcia efektu \"pillowingu\" (wypychania górnych warstw) podczas drukowania ze zmienną wysokością warstwy." -#: src/libslic3r/PrintConfig.cpp:2277 +#: src/slic3r/GUI/Plater.cpp:2326 +msgid "The object appears to be saved in inches" +msgstr "Model wygląda na zapisany w calach" + +#: src/libslic3r/PrintConfig.cpp:2420 msgid "The object will be grown/shrunk in the XY plane by the configured value (negative = inwards, positive = outwards). This might be useful for fine-tuning hole sizes." msgstr "Model zostanie zmniejszony lub zwiększony w osiach X i Y o zadaną wartość (ujemna = zmniejszenie, dotatnia = zwiększenie). Może być przydatne przy kalibracji średnic otworów." -#: src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1611 msgid "The object will be raised by this number of layers, and support material will be generated under it." msgstr "Model zostanie podniesiony o zadaną ilość warstw i umieszczony na podporach." -#: src/libslic3r/PrintConfig.cpp:2424 +#: src/libslic3r/PrintConfig.cpp:2803 +msgid "The percentage of smaller pillars compared to the normal pillar diameter which are used in problematic areas where a normal pilla cannot fit." +msgstr "Udział procentowy mniejszych słupków w stosunku do normalnych w problematycznych obszarach, gdzie normalne słupki nie mieszczą się." + +#: src/libslic3r/PrintConfig.cpp:2567 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -7797,39 +8950,51 @@ msgstr "" "Jeśli gabaryty wydruku przekraczają zadaną wartość,\n" "to zostanie użyte wolne przechylanie, w innym przypadku - szybkie" -#: src/slic3r/GUI/GUI_App.cpp:932 -msgid "The presets on the following tabs were modified" -msgstr "Ustawienia na następujących kartach zostały zmodyfikowane" +#: src/slic3r/GUI/Tab.cpp:3430 +msgid "The physical printer(s) below is based on the preset, you are going to delete." +msgstr "Na zestawie ustawień, który chcesz usunąć, bazuje poniższa fizyczna drukarka (lub fizyczne drukarki)." -#: src/libslic3r/PrintConfig.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:3438 +msgid "The physical printer(s) below is based only on the preset, you are going to delete." +msgstr "Tylko na zestawie ustawień, który chcesz usunąć, bazuje poniższa fizyczna drukarka (lub fizyczne drukarki)." + +#: src/slic3r/GUI/GUI_App.cpp:1676 +msgid "The preset(s) modifications are successfully saved" +msgstr "Modyfikacje zestawu (lub zestawów) ustawień zapisane pomyślnie" + +#: src/libslic3r/PrintConfig.cpp:1988 msgid "The printer multiplexes filaments into a single hot end." msgstr "Drukarka przechodzi pomiędzy filamentami używając jednego hotendu." -#: src/libslic3r/Format/3mf.cpp:1630 +#: src/libslic3r/Format/3mf.cpp:1667 msgid "The selected 3mf file has been saved with a newer version of %1% and is not compatible." msgstr "Wybrany plik 3mf został zapisany przy pomocy nowszej wersji %1% i nie jest kompatybilny." -#: src/libslic3r/Format/AMF.cpp:934 +#: src/libslic3r/Format/AMF.cpp:955 msgid "The selected amf file has been saved with a newer version of %1% and is not compatible." msgstr "Wybrany plik amf został zapisany przy pomocy nowszej wersji %1% i nie jest kompatybilny." -#: src/slic3r/GUI/BedShapeDialog.cpp:513 +#: src/slic3r/GUI/Plater.cpp:4751 +msgid "The selected file" +msgstr "Wybrany plik" + +#: src/slic3r/GUI/BedShapeDialog.cpp:589 msgid "The selected file contains no geometry." msgstr "Wybrany plik nie zawiera żadnego kształtu." -#: src/slic3r/GUI/BedShapeDialog.cpp:517 +#: src/slic3r/GUI/BedShapeDialog.cpp:593 msgid "The selected file contains several disjoint areas. This is not supported." msgstr "Wybrany plik zawiera kilka rozłączonych obszarów. Taki plik nie jest obsługiwany." -#: src/slic3r/GUI/Plater.cpp:2970 +#: src/slic3r/GUI/Plater.cpp:2763 msgid "The selected object can't be split because it contains more than one volume/material." msgstr "Wybrany model nie może być podzielony ponieważ składa się z więcej niż jednej części lub zawiera więcej niż jeden materiał." -#: src/slic3r/GUI/GUI_ObjectList.cpp:2270 src/slic3r/GUI/Plater.cpp:2978 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2436 src/slic3r/GUI/Plater.cpp:2771 msgid "The selected object couldn't be split because it contains only one part." msgstr "Wybrany model nie może być rozdzielony ponieważ zawiera tylko jedną część." -#: src/slic3r/GUI/MainFrame.cpp:461 +#: src/slic3r/GUI/MainFrame.cpp:1003 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -7837,7 +9002,7 @@ msgstr "" "Wybrany obiekt nie jest już dostępny.\n" "Czy chcesz usunąć go z listy niedawno używanych projektów?" -#: src/slic3r/GUI/DoubleSlider.cpp:998 +#: src/slic3r/GUI/DoubleSlider.cpp:1121 msgid "" "The sequential print is on.\n" "It's impossible to apply any custom G-code for objects printing sequentually.\n" @@ -7847,20 +9012,24 @@ msgstr "" "Niemożliwe jest dodawanie własnego G-code do modeli drukowanych sekwencyjnie.\n" "Ten kod nie będzie przetwarzany podczas generowania pliku G-code." -#: src/libslic3r/PrintConfig.cpp:2846 +#: src/slic3r/GUI/ConfigWizard.cpp:1187 +msgid "The size of the object can be specified in inches" +msgstr "Rozmiar modelu może być wyrażony w calach" + +#: src/libslic3r/PrintConfig.cpp:3010 msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." msgstr "Kąt pochylenia ścian podkładki względem powierzchni stołu. 90 stopni oznacza proste ściany." -#: src/libslic3r/PrintConfig.cpp:1614 +#: src/libslic3r/PrintConfig.cpp:1722 msgid "The speed for loading of a filament into extruder after retraction (it only applies to the extruder motor). If left to zero, the retraction speed is used." -msgstr "Prędkość powrotu filamentu do ekstrudera po retrakcji (dotyczy tylko silnika ekstrudera). Ustaw zero aby użyć prędkości retrakcji." +msgstr "Prędkość powrotu filamentu do ekstrudera po retrakcji (dotyczy tylko silnika ekstrudera). Ustaw zero, aby użyć prędkości retrakcji." -#: src/libslic3r/PrintConfig.cpp:1606 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "Prędkość retrakcji (stosowana tylko dla silnika ekstrudera)." -#: src/slic3r/GUI/ConfigManipulation.cpp:81 -#, no-c-format +#: src/slic3r/GUI/ConfigManipulation.cpp:80 +#, c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -7878,106 +9047,111 @@ msgstr "" "- wyłączone ustawienie \"Zagwarantuj grubość ścianki\"\n" "- wyłączone wykrywanie cienkich ścian" -#: src/libslic3r/Print.cpp:1237 +#: src/libslic3r/Print.cpp:1263 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "Tryb Wazy może być aktywny tylko podczas druku pojedynczego modelu." -#: src/libslic3r/Print.cpp:1244 +#: src/libslic3r/Print.cpp:1270 msgid "The Spiral Vase option can only be used when printing single material objects." msgstr "Tryb Wazy może być używany jedynie podczas druku z jednego materiału." -#: src/slic3r/GUI/Tab.cpp:3068 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:464 msgid "The supplied name is empty. It can't be saved." msgstr "Podana nazwa jest pusta. Nie można zapisać." -#: src/slic3r/GUI/Tab.cpp:3465 +#: src/slic3r/GUI/SavePresetDialog.cpp:131 msgid "The supplied name is not available." msgstr "Podana nazwa jest niedostępna." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3819 -#: src/slic3r/GUI/GUI_ObjectList.cpp:3926 src/slic3r/GUI/Tab.cpp:3456 -#: src/slic3r/GUI/Tab.cpp:3460 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4282 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4409 +#: src/slic3r/GUI/SavePresetDialog.cpp:116 +#: src/slic3r/GUI/SavePresetDialog.cpp:124 msgid "The supplied name is not valid;" msgstr "Podana nazwa nie jest prawidłowa;" -#: src/libslic3r/Print.cpp:1222 +#: src/libslic3r/Print.cpp:1248 msgid "The supplied settings will cause an empty print." msgstr "Wprowadzone ustawienia spowodują pusty wydruk." -#: src/libslic3r/PrintConfig.cpp:2789 +#: src/libslic3r/PrintConfig.cpp:2953 msgid "The thickness of the pad and its optional cavity walls." msgstr "Grubość podkładki i opcjonalnie wydrążenie ścianek." -#: src/libslic3r/PrintConfig.cpp:1911 +#: src/libslic3r/PrintConfig.cpp:2053 msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." msgstr "Dystans w pionie między modelem a warstwą łączącą materiału podporowego. Ustawienie na 0 wyłączy ustawienie mostu (prędkości i przepływu) dla pierwszej warstwy modelu nad warstwą łączącą." -#: src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:2731 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" -"Opcja czyszczenia dyszy nie jest dostępna z funkcją Retrakcji w Firmware (Firmware Retraction).\n" +"Opcja czyszczenia dyszy nie jest dostępna z funkcją retrakcji w firmware (Firmware Retraction).\n" "\n" -"Wyłączyć ją aby włączyć Firmware Retraction?" +"Wyłączyć ją, aby włączyć Firmware Retraction?" -#: src/libslic3r/Print.cpp:1268 +#: src/libslic3r/Print.cpp:1294 msgid "The Wipe Tower currently does not support volumetric E (use_volumetric_e=0)." msgstr "Wieża czyszcząca obecnie nie obsługuje wolumetrycznego parametru E (use_volumetric_e=0)." -#: src/slic3r/GUI/ConfigManipulation.cpp:115 +#: src/slic3r/GUI/ConfigManipulation.cpp:114 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool change.\n" "(both support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "Wieża czyszcząca obsługuje podpory nierozpuszczalne jedynie, gdy są drukowane tym samym ekstruderem - bez wywoływania zmiany narzędzia (zarówno support_material_extruder i support_material_interface_extruder muszą być ustawione na 0)." -#: src/libslic3r/Print.cpp:1400 +#: src/libslic3r/Print.cpp:1426 msgid "The Wipe Tower currently supports the non-soluble supports only if they are printed with the current extruder without triggering a tool change. (both support_material_extruder and support_material_interface_extruder need to be set to 0)." msgstr "Wieża Czyszcząca obsługuje podpory nierozpuszczalne jedynie, gdy są drukowane tym samym ekstruderem - bez wywoływania zmiany narzędzia (zarówno support_material_extruder i support_material_interface_extruder muszą być ustawione na 0)." -#: src/libslic3r/Print.cpp:1270 +#: src/libslic3r/Print.cpp:1296 msgid "The Wipe Tower is currently not supported for multimaterial sequential prints." msgstr "Wieża czyszcząca jest obecnie niedostępna dla wielomateriałowego druku sekwencyjnego." -#: src/libslic3r/Print.cpp:1262 -msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." -msgstr "Wieża Czyszcząca jest obecnie dostępna tylko dla G-code w stylu Marlin, RepRap/Sprinter i Repetier." +#: src/libslic3r/Print.cpp:1290 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "Wieża czyszcząca jest obecnie wspierana tylko dla G-code w stylu Marlin, RepRap/Sprinter, RepRapFirmware oraz Repetier." -#: src/libslic3r/Print.cpp:1264 +#: src/libslic3r/Print.cpp:1290 msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." msgstr "Wieża Czyszcząca jest obecnie dostępna tylko przy relatywnym adresowaniu ekstrudera (use_relative_e_distances=1)." -#: src/libslic3r/Print.cpp:1293 +#: src/libslic3r/Print.cpp:1319 msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" msgstr "Wieża Czyszcząca jest dostępna dla wielu modeli tylko gdy są drukowane na takiej samej ilości warstw tratwy (raft)" -#: src/libslic3r/Print.cpp:1295 +#: src/libslic3r/Print.cpp:1321 msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" msgstr "Wieża czyszcząca jest dostępna dla wielu modeli pod warunkiem, że ustawienie support_material_contact_distance jest jednakowe dla każdego z nich" -#: src/libslic3r/Print.cpp:1297 +#: src/libslic3r/Print.cpp:1323 msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." msgstr "Wieża Czyszcząca jest dostępna dla kilku modeli tylko jeśli są cięte z taką samą wysokością warstwy." -#: src/libslic3r/Print.cpp:1291 +#: src/libslic3r/Print.cpp:1317 msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heights" msgstr "Wieża czyszcząca jest dostępna dla wielu modeli pod warunkiem, że mają one równą wysokość warstwy" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1283 msgid "The wipe tower is only supported if all extruders have the same nozzle diameter and use filaments of the same diameter." msgstr "Wieża Czyszcząca jest dostępna tylko, gdy wszystkie ekstrudery mają taką samą średnicę dyszy i używają filamentów i takiej samej średnicy." -#: src/libslic3r/Print.cpp:1339 +#: src/libslic3r/Print.cpp:1365 msgid "The Wipe tower is only supported if all objects have the same variable layer height" msgstr "Wieża czyszcząca jest dostępna dla wielu modeli pod warunkiem, że mają one taką samą wysokość warstwy" -#: src/libslic3r/SLAPrintSteps.cpp:621 +#: src/slic3r/GUI/Plater.cpp:3563 +msgid "There are active warnings concerning sliced models:" +msgstr "Istnieją aktywne ostrzeżenia dotyczące ciętych modeli:" + +#: src/libslic3r/SLAPrintSteps.cpp:619 msgid "There are unprintable objects. Try to adjust support settings to make the objects printable." msgstr "Na stole są modele niemożliwe do wydrukowania. Spróbuj zmienić ustawienia podpór, aby możliwe było ich drukowanie." -#: src/slic3r/GUI/DoubleSlider.cpp:1030 +#: src/slic3r/GUI/DoubleSlider.cpp:1155 msgid "" "There is a color change for extruder that has not been used before.\n" "Check your settings to avoid redundant color changes." @@ -7985,7 +9159,7 @@ msgstr "" "Występuje zmiana koloru dla ekstrudera, który nie był jeszcze używany.\n" "Sprawdź ustawienia, aby uniknąć niepotrzebnych zmian koloru." -#: src/slic3r/GUI/DoubleSlider.cpp:1024 +#: src/slic3r/GUI/DoubleSlider.cpp:1149 msgid "" "There is a color change for extruder that won't be used till the end of print job.\n" "This code won't be processed during G-code generation." @@ -7993,7 +9167,7 @@ msgstr "" "Występuje zmiana koloru dla ekstrudera, który nie będzie używany do końca tego wydruku.\n" "Ten kod nie będzie przetwarzany podczas generowania G-code." -#: src/slic3r/GUI/DoubleSlider.cpp:1027 +#: src/slic3r/GUI/DoubleSlider.cpp:1152 msgid "" "There is an extruder change set to the same extruder.\n" "This code won't be processed during G-code generation." @@ -8001,12 +9175,16 @@ msgstr "" "Występuje zmiana koloru na używany przez ten sam ekstruder.\n" "Ten kod nie będzie przetwarzany podczas generowania G-code." +#: src/libslic3r/GCode.cpp:604 +msgid "There is an object with no extrusions on the first layer." +msgstr "Istnieje model bez ekstruzji na pierwszej warstwie." + #: src/slic3r/GUI/UpdateDialogs.cpp:225 #, c-format msgid "This %s version: %s" msgstr "%s wersja: %s" -#: src/slic3r/GUI/Tab.cpp:982 +#: src/slic3r/GUI/Tab.cpp:1244 msgid "" "This action is not revertable.\n" "Do you want to proceed?" @@ -8014,79 +9192,79 @@ msgstr "" "Tej czynności nie można odwrócić.\n" "Czy chcesz kontynuować?" -#: src/libslic3r/PrintConfig.cpp:165 +#: src/libslic3r/PrintConfig.cpp:199 msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Ten kod jest wykonywany pomiędzy drukiem poszczególnych modeli w trybie druku sekwencyjnego. Domyślnie przy komendzie non-wait temperatury dyszy i stołu są resetowane; jednakże jeśli przy tej opcji zostaną użyte komendy M104, M109, M140 lub M190 to Slic3r nie doda własnych komend do kontroli temperatury. Pamiętaj, że możesz używać zmiennych typu placeholder, więc np. komendę \"M109 S[first_layer_temperature]\" (temperatura pierwszej warstwy) możesz umieścić gdzie chcesz." -#: src/libslic3r/PrintConfig.cpp:1081 +#: src/libslic3r/PrintConfig.cpp:1174 msgid "This custom code is inserted at every layer change, right after the Z move and before the extruder moves to the first layer point. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Ten kod jest wykonywany przy każdej zmianie warstwy - zaraz po podniesieniu głowicy na wysokość kolejnej warstwy ale zanim ekstruder przejdzie do pierwszego punktu nowej warstwy. Pamiętaj, że możesz użyć zmiennych typu placeholder dla wszystkich ustawień Slic3r, jak np. [layer_num] (numer warstwy) i [layer_z] (położenie warstwy w osi Z)." -#: src/libslic3r/PrintConfig.cpp:154 +#: src/libslic3r/PrintConfig.cpp:188 msgid "This custom code is inserted at every layer change, right before the Z move. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." msgstr "Ten kod jest wykonywany przy każdej zmianie warstwy, zaraz przed podniesieniem ekstrudera na wysokość nowej warstwy. Pamiętaj, że możesz użyć zmiennych typu placeholder dla wszystkich ustawień PrusaSlicer, jak np. [layer_num] (numer warstwy) i [layer_z] (położenie warstwy w osi Z)." -#: src/libslic3r/PrintConfig.cpp:2094 +#: src/libslic3r/PrintConfig.cpp:2237 msgid "This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings as well as {previous_extruder} and {next_extruder} can be used. When a tool-changing command which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. It is therefore possible to script custom behaviour both before and after the toolchange." msgstr "Ten kod jest wykonywany przy każdej zmianie narzędzia (filamentu). Możesz użyć zmiennych dla wszystkich ustawień PrusaSlicer, jak i również {previous_extruder} i {next_extruder}. Po wysłaniu komendy zmiany narzędzia, która zmienia obecny ekstruder (np. T{next_extruder}), PrusaSlicer nie powtórzy tej komendy. Możliwe jest więc zdefiniowanie własnego zachowania zarówno przed jak i po zmianie narzędzia." -#: src/libslic3r/PrintConfig.cpp:396 +#: src/libslic3r/PrintConfig.cpp:430 msgid "This end procedure is inserted at the end of the output file, before the printer end gcode (and before any toolchange from this filament in case of multimaterial printers). Note that you can use placeholder variables for all PrusaSlicer settings. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Ta procedura końcowa jest dodawana na końcu pliku wyjściowego, przed kodem końcowym (jak i również przed każdą zmianą z tego filamentu na kolejny w przypadku drukarek wielomateriałowych). Zauważ, że możesz używać zmiennych dla wszystkich ustawień PrusaSlicer. Jeśli masz kilka ekstruderów, to G-code jest wykonywany w ich kolejności." -#: src/libslic3r/PrintConfig.cpp:386 +#: src/libslic3r/PrintConfig.cpp:420 msgid "This end procedure is inserted at the end of the output file. Note that you can use placeholder variables for all PrusaSlicer settings." msgstr "Ta procedura końcowa jest dodawana na końcu pliku wyjściowego. Zauważ, że możesz używać zmiennych dla wszystkich ustawień PrusaSlicer." -#: src/libslic3r/PrintConfig.cpp:1258 src/libslic3r/PrintConfig.cpp:1269 +#: src/libslic3r/PrintConfig.cpp:1366 src/libslic3r/PrintConfig.cpp:1377 msgid "This experimental setting is used to limit the speed of change in extrusion rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "To ustawienie eksperymentalne jest używane do ograniczania szybkości zmian ilości ekstrudowanego materiału. Wartość 1.8 mm³/s² oznacza, że zmiana z ilości ekstrudowanego materiału z poziomu 1.8 mm³/s (czyli 0.45 mm szerokości ekstruzji, 0.2 mm wysokości warstwy przy prędkości 20 mm/s) na 5.4 mm³/s (prędkość 60 mm/s) zajmie co najmniej 2 sekundy." -#: src/libslic3r/PrintConfig.cpp:1248 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." -msgstr "Ta eksperymentalna funkcja określa maksymalną prędkość objętościową, którą jest w stanie wytłoczyć Twój ekstruder." +msgstr "Ta eksperymentalna funkcja określa maksymalne natężenie przepływu (strumień objętości), które jest w stanie wytłoczyć Twój ekstruder." -#: src/libslic3r/PrintConfig.cpp:2162 +#: src/libslic3r/PrintConfig.cpp:2305 msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." -msgstr "Ta eksperymentalna funkcja używa komend G10 i G11 aby przerzucić kontrolę retrakcji na firmware. Jest wspierana jedynie przez najnowsze wersje Marlina." +msgstr "Ta eksperymentalna funkcja używa komend G10 i G11, aby przerzucić kontrolę retrakcji na firmware. Jest wspierana jedynie przez najnowsze wersje Marlina." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2319 msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." -msgstr "Ta eksperymentalna funkcja określa wyjściowe dane E (ilość ekstruzji) w milimetrach sześciennych zamiast długości. Jeśli średnica filamentu nie została jeszcze ustawiona w firmware, możesz użyć komendy \"M200 D[filament_diameter_0] T0\" w skrypcie startowym aby włączyć tryb objętościowy i użyć filamentu powiązanego z ustawionym w Slic3r. Ta funkcja jest wspierana jedynie przez najnowsze wersje Marlina." +msgstr "Ta eksperymentalna funkcja określa wyjściowe dane E (ilość ekstruzji) w milimetrach sześciennych zamiast długości. Jeśli średnica filamentu nie została jeszcze ustawiona w firmware, możesz użyć komendy \"M200 D[filament_diameter_0] T0\" w skrypcie startowym, aby włączyć tryb objętościowy i użyć filamentu powiązanego z ustawionym w Slic3r. Ta funkcja jest wspierana jedynie przez najnowsze wersje Marlina." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3972 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4459 msgid "This extruder will be set for selected items" msgstr "Ten ekstruder zostanie ustawiony dla wybranych elementów" -#: src/libslic3r/PrintConfig.cpp:224 +#: src/libslic3r/PrintConfig.cpp:258 msgid "This factor affects the amount of plastic for bridging. You can decrease it slightly to pull the extrudates and prevent sagging, although default settings are usually good and you should experiment with cooling (use a fan) before tweaking this." -msgstr "Ten współczynnik określa ilość plastiku wytłaczaną przy drukowaniu mostów. Możesz delikatnie zmniejszyć tą wartość aby zapobiec opadaniu drukowanej linii, jednakże standardowe ustawienia są zazwyczaj dobrze dobrane i najpierw poeksperymentuj z chłodzeniem wydruku." +msgstr "Ten współczynnik określa ilość plastiku wytłaczaną przy drukowaniu mostów. Możesz delikatnie zmniejszyć tą wartość, aby zapobiec opadaniu drukowanej linii, jednakże standardowe ustawienia są zazwyczaj dobrze dobrane i najpierw poeksperymentuj z chłodzeniem wydruku." -#: src/libslic3r/PrintConfig.cpp:546 +#: src/libslic3r/PrintConfig.cpp:582 msgid "This factor changes the amount of flow proportionally. You may need to tweak this setting to get nice surface finish and correct single wall widths. Usual values are between 0.9 and 1.1. If you think you need to change this more, check filament diameter and your firmware E steps." -msgstr "Ten współczynnik określa proporcjonalną ilość przepływu plastiku. Możesz zmienić tą wartość aby uzyskać gładsze powierzchnie i poprawną szerokość ścian drukowanych z 1 linii. Ten współczynnik waha się zazwyczaj od 0.9 do 1.1. Jeśli musisz wykroczyć poza ten zakres to najpierw zmierz średnicę filamentu i kroki ekstrudera (E steps)." +msgstr "Ten współczynnik określa proporcjonalną ilość przepływu plastiku. Możesz zmienić tą wartość, aby uzyskać gładsze powierzchnie i poprawną szerokość ścian drukowanych z 1 linii. Ten współczynnik waha się zazwyczaj od 0.9 do 1.1. Jeśli musisz wykroczyć poza ten zakres to najpierw zmierz średnicę filamentu i kroki ekstrudera (E steps)." -#: src/libslic3r/PrintConfig.cpp:214 +#: src/libslic3r/PrintConfig.cpp:248 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "Ta prędkość wentylatora zostanie zastosowana przy druku mostów i zwisów." -#: src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1036 msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "Ta funkcja pozwala ustawić oddzielne wysokości dla wypełnienia i obrysów modelu i przyspieszyć wydruk ustawiając np. wyższą warstwę wypełnienia zachowując nominalną wysokość obrysów, co pozwoli zachować wysoką jakość i dokładność wydruku." -#: src/libslic3r/PrintConfig.cpp:1746 +#: src/libslic3r/PrintConfig.cpp:1861 msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." -msgstr "Ta funkcja pozwoli wstawić zwartą warstwę wypełnienia pomiędzy określoną liczbą warstw. Ustaw zero aby wyłączyć. Możesz ustawić tu dowolną wartość (np. 9999) a Slic3r automatycznie wybierze maksymalną możliwą liczbę warstw biorąc pod uwagę średnicę dyszy i wysokość warstwy." +msgstr "Ta funkcja pozwoli wstawić zwartą warstwę wypełnienia pomiędzy określoną liczbą warstw. Ustaw zero, aby wyłączyć. Możesz ustawić tu dowolną wartość (np. 9999) a PrusaSlicer automatycznie wybierze maksymalną możliwą liczbę warstw biorąc pod uwagę średnicę dyszy i wysokość warstwy." -#: src/libslic3r/PrintConfig.cpp:1795 +#: src/libslic3r/PrintConfig.cpp:1910 msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." msgstr "Ta funkcja pozwala drukować modele z 1 zewnętrzną ścianką z ciągłym podnoszeniem Z, aby uniknąć widocznego szwu (czyli ekstruder nie będzie drukował po 1 warstwie na 1 wysokości, lecz będzie podnosił się płynnie w formie spirali). Wymaga użycia 1 obrysu, zerowego wypełnienia, braku warstw górnych i braku podpór. Możesz ustawić dowolną ilość dolnych warstw jak i obrysów skirt/brim. Nie zadziała przy druku więcej niż jednego modelu." -#: src/slic3r/GUI/Plater.cpp:2367 +#: src/slic3r/GUI/Plater.cpp:2329 msgid "This file cannot be loaded in a simple mode. Do you want to switch to an advanced mode?" msgstr "Ten plik nie może zostać wczytany w Trybie Prostym. Czy chcesz przełączyć na Tryb Zaawansowany?" -#: src/slic3r/GUI/Plater.cpp:2357 +#: src/slic3r/GUI/Plater.cpp:2319 msgid "" "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -8113,84 +9291,96 @@ msgstr "" "Czy chcesz kontynuować i mimo wszystko wgrać ten plik .hex?\n" "Kontynuuj tylko, jeśli wiesz, że tak powinno być." -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:348 msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." msgstr "Ta flaga umożliwia automatyczne sterowanie chłodzeniem przez zmianę prędkości druku i wentylatora względem czasu druku jednej warstwy." -#: src/slic3r/GUI/Plater.cpp:536 +#: src/slic3r/GUI/Plater.cpp:402 msgid "This flag enables the brim that will be printed around each object on the first layer." msgstr "Ta flaga włącza brim, który zostanie wydrukowany na pierwszej warstwie wokół każdego modelu." -#: src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1646 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "Ta flaga wymusza retrakcję przy każdej zmianie wysokości Z." -#: src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2337 msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." -msgstr "Ta flaga włączy ruch dyszy przy retrakcji aby zminimalizować formowanie się kropli filamentu wokół końcówki dyszy przy ekstruderach, które mają tendencję do wyciekania filamentu." +msgstr "Ta flaga włączy ruch dyszy przy retrakcji, aby zminimalizować formowanie się kropli filamentu wokół końcówki dyszy przy ekstruderach, które mają tendencję do wyciekania filamentu." -#: src/slic3r/GUI/Tab.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1961 +msgid "This G-code will be used as a code for the color change" +msgstr "Ten G-code zostanie użyty przy zmianie koloru" + +#: src/libslic3r/PrintConfig.cpp:1970 +msgid "This G-code will be used as a code for the pause print" +msgstr "Ten G-code zostanie użyty przy pauzie wydruku" + +#: src/libslic3r/PrintConfig.cpp:1979 +msgid "This G-code will be used as a custom code" +msgstr "Ten G-code zostanie użyty jako niestandardowy" + +#: src/slic3r/GUI/Tab.cpp:1272 msgid "This is a default preset." msgstr "To jest domyślny zestaw ustawień." -#: src/libslic3r/PrintConfig.cpp:2766 +#: src/libslic3r/PrintConfig.cpp:2930 msgid "This is a relative measure of support points density." msgstr "To jest względna miara gęstości punktów podpór." -#: src/slic3r/GUI/Tab.cpp:2338 +#: src/slic3r/GUI/Tab.cpp:2507 msgid "This is a single extruder multimaterial printer, diameters of all extruders will be set to the new value. Do you want to proceed?" msgstr "To jest drukarka wielomateriałowa z jednym ekstruderem, więc średnice wszystkich ekstruderów zostaną zastąpione nową wartością. Kontynuować?" -#: src/slic3r/GUI/Tab.cpp:955 +#: src/slic3r/GUI/Tab.cpp:1274 msgid "This is a system preset." msgstr "To jest systemowy zestaw ustawień." -#: src/libslic3r/PrintConfig.cpp:523 src/libslic3r/PrintConfig.cpp:583 +#: src/libslic3r/PrintConfig.cpp:559 src/libslic3r/PrintConfig.cpp:619 msgid "This is only used in the Slic3r interface as a visual help." -msgstr "Ta funkcja jest używana jedynie w interfejsie Slic3ra jako pomoc wizualna." +msgstr "Ta funkcja jest używana jedynie w interfejsie PrusaSlicer jako pomoc wizualna." -#: src/libslic3r/PrintConfig.cpp:336 +#: src/libslic3r/PrintConfig.cpp:370 msgid "This is the acceleration your printer will be reset to after the role-specific acceleration values are used (perimeter/infill). Set zero to prevent resetting acceleration at all." -msgstr "Do tej wartości przyspieszenia drukarka wróci gdy ustawione zostaną przyspieszenia dla określonych ruchów (obrysy/wypełnienie). Ustaw zero aby wyłączyć resetowanie przyspieszeń." +msgstr "Do tej wartości przyspieszenia drukarka wróci gdy ustawione zostaną przyspieszenia dla określonych ruchów (obrysy/wypełnienie). Ustaw zero, aby wyłączyć resetowanie przyspieszeń." -#: src/libslic3r/PrintConfig.cpp:194 +#: src/libslic3r/PrintConfig.cpp:228 msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." -msgstr "To jest przyspieszenie stosowane przy druku mostów. Ustaw zero aby wyłączyć osobne ustawienia przyspieszenia dla mostów." +msgstr "To jest przyspieszenie stosowane przy druku mostów. Ustaw zero, aby wyłączyć osobne ustawienia przyspieszenia dla mostów." -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:900 msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." -msgstr "To jest przyspieszenie stosowane przy druku pierwszej warstwy. Ustaw zero aby wyłączyć osobne ustawienia przyspieszenia dla pierwszej warstwy." +msgstr "To jest przyspieszenie stosowane przy druku pierwszej warstwy. Ustaw zero, aby wyłączyć osobne ustawienia przyspieszenia dla pierwszej warstwy." -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:1026 msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." -msgstr "To jest przyspieszenie stosowane przy druku wypełnienia. Ustaw zero aby wyłączyć osobne ustawienia przyspieszenia dla wypełnienia." +msgstr "To jest przyspieszenie stosowane przy druku wypełnienia. Ustaw zero aby, wyłączyć osobne ustawienia przyspieszenia dla wypełnienia." -#: src/libslic3r/PrintConfig.cpp:1400 +#: src/libslic3r/PrintConfig.cpp:1508 msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." -msgstr "To jest przyspieszenie stosowane przy druku obrysów. Wysoka wartość, np. 9000 zazwyczaj daje dobre rezultaty - pod warunkiem, że Twój sprzęt się do tego nadaje. Ustaw zero aby wyłączyć osobne ustawienia przyspieszenia dla obrysów." +msgstr "To jest przyspieszenie stosowane przy druku obrysów. Wysoka wartość, np. 9000 zazwyczaj daje dobre rezultaty - pod warunkiem, że Twój sprzęt się do tego nadaje. Ustaw zero, aby wyłączyć osobne ustawienia przyspieszenia dla obrysów." -#: src/libslic3r/PrintConfig.cpp:1327 +#: src/libslic3r/PrintConfig.cpp:1435 msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "To jest średnica dyszy ekstrudera (np. 0.5, 0.35 itp.)" -#: src/libslic3r/PrintConfig.cpp:1227 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1335 +#, c-format msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." -msgstr "To jest najwyższa możliwa do wydrukowania wysokość warstwy dla tego ekstrudera i jednocześnie górny limit dla funkcji zmiennej wysokości warstwy i materiału podporowego. Zalecana jest wartość nie większa niż 75% szerokości ekstruzji aby zapewnić dobrą przyczepność warstw do siebie. Jeśli ustawisz zero, wysokość warstwy zostanie ograniczona do 75% średnicy dyszy." +msgstr "To jest najwyższa możliwa do wydrukowania wysokość warstwy dla tego ekstrudera i jednocześnie górny limit dla funkcji zmiennej wysokości warstwy i materiału podporowego. Zalecana jest wartość nie większa niż 75% szerokości ekstruzji, aby zapewnić dobrą przyczepność warstw do siebie. Jeśli ustawisz zero, wysokość warstwy zostanie ograniczona do 75% średnicy dyszy." -#: src/libslic3r/PrintConfig.cpp:1290 +#: src/libslic3r/PrintConfig.cpp:1398 msgid "This is the lowest printable layer height for this extruder and limits the resolution for variable layer height. Typical values are between 0.05 mm and 0.1 mm." msgstr "To jest najniższa możliwa do wydrukowania wysokość warstwy dla tego ekstrudera i jednocześnie dolny limit dla funkcji zmiennej wysokości warstwy. Zazwyczaj jest to 0.05 lub 0.1 mm." -#: src/libslic3r/GCode.cpp:639 +#: src/libslic3r/GCode.cpp:624 msgid "This is usually caused by negligibly small extrusions or by a faulty model. Try to repair the model or change its orientation on the bed." msgstr "Dzieje się to zazwyczaj z powodu zbyt małych odcinków ekstruzji (są one pomijane) lub uszkodzenia modelu. Spróbuj naprawić model lub zmienić jego orientację na stole." -#: src/libslic3r/PrintConfig.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:2358 msgid "This matrix describes volumes (in cubic milimetres) required to purge the new filament on the wipe tower for any given pair of tools." msgstr "Ta formuła określa objętość (w milimetrach sześciennych) wymaganą do wyczyszczenia filamentu na wieży czyszczącej dla danej pary narzędzi (filamentów)." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:878 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:928 msgid "" "This operation is irreversible.\n" "Do you want to proceed?" @@ -8198,31 +9388,35 @@ msgstr "" "Tej czynności nie można cofnąć.\n" "Czy chcesz kontynuować?" -#: src/libslic3r/PrintConfig.cpp:1442 +#: src/libslic3r/PrintConfig.cpp:1550 msgid "This option sets the number of perimeters to generate for each layer. Note that Slic3r may increase this number automatically when it detects sloping surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." msgstr "To ustawienie określa ilość obrysów, które będą generowane dla każdej warstwy. Weź po uwagę, że Slic3r może zwiększyć tą liczbę automatycznie gdy wykryje zwisy, w których wydruku pomoże dodatkowa ilość obrysów przy jednocześnie włączonej opcji \"Dodatkowe obrysy jeśli potrzebne\"." -#: src/libslic3r/PrintConfig.cpp:1356 +#: src/libslic3r/PrintConfig.cpp:1464 msgid "This option will drop the temperature of the inactive extruders to prevent oozing. It will enable a tall skirt automatically and move extruders outside such skirt when changing temperatures." msgstr "Ta funkcja obniży temperatury nieużywanych ekstruderów aby zapobiec wyciekaniu filamentu z dyszy. Równocześnie włączy wysoki skirt i przesunie ekstrudery poza jego obrys przy zmianie temperatury." -#: src/libslic3r/PrintConfig.cpp:1029 +#: src/libslic3r/PrintConfig.cpp:1073 msgid "This option will limit infill to the areas actually needed for supporting ceilings (it will act as internal support material). If enabled, slows down the G-code generation due to the multiple checks involved." msgstr "Ta opcja wygeneruje wypełnienie jedynie w miejscach, gdzie jest potrzebne do podparcia górnych warstw (zadziała na zasadzie wewnętrznych podpór). Włączenie jej spowolni generowanie G-code ze względu na konieczność kilkukrotnej weryfikacji." -#: src/libslic3r/PrintConfig.cpp:1022 +#: src/libslic3r/PrintConfig.cpp:1066 msgid "This option will switch the print order of perimeters and infill, making the latter first." msgstr "Ta opcja zamieni kolejność druku obrysów i wypełnienia, aby te drugie były drukowane jako pierwsze." -#: src/libslic3r/PrintConfig.cpp:459 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:85 +msgid "This printer will be shown in the presets list as" +msgstr "Ta drukarka będzie widnieć na liście zestawów ustawień jako" + +#: src/libslic3r/PrintConfig.cpp:495 msgid "This separate setting will affect the speed of external perimeters (the visible ones). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "To ustawienie steruje prędkością zewnętrznych (widocznych) obrysów. Jeśli ustawisz wartość procentową (np. 80%) to zostanie obliczona z prędkości obrysów ustawionej powyżej. Ustaw zero aby pozwolić na sterowanie automatyczne." +msgstr "To ustawienie steruje prędkością zewnętrznych (widocznych) obrysów. Jeśli ustawisz wartość procentową (np. 80%) to zostanie obliczona z prędkości obrysów ustawionej powyżej. Ustaw zero, aby pozwolić na sterowanie automatyczne." -#: src/libslic3r/PrintConfig.cpp:1717 +#: src/libslic3r/PrintConfig.cpp:1832 msgid "This separate setting will affect the speed of perimeters having radius <= 6.5mm (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "To ustawienie reguluje prędkość obrysów posiadających promień mniejszy lub równy 6.5 mm (zazwyczaj chodzi o otwory). Jeśli ustawisz wartość procentową (np. 80%) to zostanie obliczona z prędkości obrysów ustawionej powyżej. Ustaw zero aby użyć nastawów automatycznych." +msgstr "To ustawienie reguluje prędkość obrysów posiadających promień mniejszy lub równy 6.5 mm (zazwyczaj chodzi o otwory). Jeśli ustawisz wartość procentową (np. 80%) to zostanie obliczona z prędkości obrysów ustawionej powyżej. Ustaw zero, aby użyć ustawień automatycznych." -#: src/libslic3r/PrintConfig.cpp:1038 +#: src/libslic3r/PrintConfig.cpp:1082 msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." msgstr "To ustawienie odpowiada za dodatkowe nakładanie na siebie linii obrysów i wypełnienia dla lepszego spojenia. Teoretycznie nie powinno być potrzebne ale luz może powodować szczeliny. Jeśli ustawisz wartość procentową (np. 15%) to zostanie obliczona z szerokości ekstruzji obrysów." @@ -8230,31 +9424,31 @@ msgstr "To ustawienie odpowiada za dodatkowe nakładanie na siebie linii obrysó msgid "This setting controls the height (and thus the total number) of the slices/layers. Thinner layers give better accuracy but take more time to print." msgstr "To ustawienie odpowiada za wysokość warstwy (czyli cięcia), a w konsekwencji za ich liczbę. Niższe warstwy zapewniają lepszą dokładność i jakość, ale wydłużają ogólny czas wydruku." -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1326 msgid "This setting represents the maximum speed of your fan." msgstr "To ustawienie odpowiada za maksymalną prędkość wentylatora." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1389 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "To ustawienie wyraża minimalny PWM (Pulse Width Modulation), który jest niezbędny dla wentylatora." -#: src/libslic3r/PrintConfig.cpp:1829 +#: src/libslic3r/PrintConfig.cpp:1944 msgid "This start procedure is inserted at the beginning, after any printer start gcode (and after any toolchange to this filament in case of multi-material printers). This is used to override settings for a specific filament. If PrusaSlicer detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." msgstr "Ta procedura startowa jest dodawana po kodzie startowym drukarki (i po zmianie filamentu w przypadku drukarek wielomateriałowych). Jest używana, aby nadpisać ustawienia dla konkretnego filamentu. Jeśli PrusaSlicer wykryje M104, M109, M140 lub M190 w Twoich kodach, to takie komendy nie będą automatycznie poprzedzane, więc możesz dowolnie ustawić kolejność nagrzewania i inne skonfigurowane przez siebie akcje. Zauważ, że możesz używać zmiennych dla wszystkich ustawień PrusaSlicer, więc możesz umieścić komendę \"M109 S[first_layer_temperature]\" gdzie tylko zechcesz. Jeśli masz kilka ekstruderów, to ten G-code jest wykonywany zgodnie z kolejnością ekstruderów." -#: src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:1929 msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all PrusaSlicer settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." msgstr "Ta procedura startowa jest dodawana na początku, po osiągnięciu przez stół zadanej temperatury i rozpoczęciu nagrzewania ekstrudera, ale przed zakończeniem tego procesu. Jeśli PrusaSlicer wykryje M140 lub M190 w Twoich kodach, to takie komendy nie będą automatycznie poprzedzane, więc możesz dowolnie ustawić kolejność nagrzewania i inne skonfigurowane przez siebie akcje. Zauważ, że możesz używać zmiennych dla wszystkich ustawień PrusaSlicer, więc możesz umieścić komendę \"M109 S[first_layer_temperature]\" gdzie tylko zechcesz." -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:731 msgid "This string is edited by RammingDialog and contains ramming specific parameters." msgstr "Ten ciąg jest edytowany przez RammingDialog i zawiera parametry właściwe dla wyciskania." -#: src/libslic3r/PrintConfig.cpp:2286 +#: src/libslic3r/PrintConfig.cpp:2429 msgid "This value will be added (or subtracted) from all the Z coordinates in the output G-code. It is used to compensate for bad Z endstop position: for example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." msgstr "Wartość tego ustawienia zostanie dodana (lub odjęta) od wszystkich koordynat w osi Z w pliku wyjściowym G-code. Jest używana dla korekcji złego położenia wyłącznika krańcowego osi Z. Np. jeśli końcówka dyszy znajduje się 0.3 mm ponad położeniem zerowym, ustaw tutaj -0.3 (lub napraw krańcówkę)." -#: src/libslic3r/PrintConfig.cpp:2208 +#: src/libslic3r/PrintConfig.cpp:2351 msgid "This vector saves required volumes to change from/to each tool used on the wipe tower. These values are used to simplify creation of the full purging volumes below." msgstr "To ustawienie określa wymaganą objętość wieży czyszczącej przy zmianie danego narzędzia. Te wartości używane są do uproszczenia określenia pełnych wartości czyszczenia poniżej." @@ -8271,82 +9465,96 @@ msgstr "" "\n" "Możesz zamknąć %s i spróbować ponownie z nowszą wersją, lub możesz też uruchomić ponownie konfigurację początkową. Spowoduje to stworzenie kopii istniejącej konfiguracji przed zainstalowaniem plików kompatybilnych z %s ." -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2601 msgid "This will apply a gamma correction to the rasterized 2D polygons. A gamma value of zero means thresholding with the threshold in the middle. This behaviour eliminates antialiasing without losing holes in polygons." msgstr "To ustawienie zastosuje korekcję gamma do zrasteryzowanych wielokątów 2D. Wartość 0 oznacza ustawienie progu w środku zakresu. Spowoduje to wyeliminowanie antaliasing bez utraty otworów w wielokątach." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2224 msgid "Threads" msgstr "Wątki" -#: src/libslic3r/PrintConfig.cpp:2082 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." msgstr "Wątki są używane do równoległego przetwarzania zadań wymagających używa wielu zasobów. Optymalna liczba wątków powinna być odrobinę większa od dostępnej liczby rdzeni lub procesorów." -#: src/slic3r/GUI/Tab.cpp:2093 +#: src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp:235 +msgid "Threshold:" +msgstr "Próg:" + +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Tilt" msgstr "Przechylanie" -#: src/slic3r/GUI/Tab.cpp:2094 +#: src/slic3r/GUI/Tab.cpp:2264 msgid "Tilt time" msgstr "Czas przechylania" +#: src/slic3r/GUI/GCodeViewer.cpp:2225 src/slic3r/GUI/GCodeViewer.cpp:2233 #: src/slic3r/GUI/RammingChart.cpp:76 msgid "Time" msgstr "Czas" -#: src/libslic3r/PrintConfig.cpp:687 +#: src/libslic3r/PrintConfig.cpp:723 msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." msgstr "Czas, który drukarka (lub dodatek Multi Material 2.0) poświęca na ładowanie nowego filamentu podczas zmiany narzędzia (przy wykonywaniu kodu T). Ten czas jest dodawany do szacowanego czasu druku." -#: src/libslic3r/PrintConfig.cpp:702 +#: src/libslic3r/PrintConfig.cpp:738 msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." msgstr "Czas, który drukarka (lub dodatek Multi Material 2.0) poświęca na rozładowanie nowego filamentu podczas zmiany narzędzia (przy wykonywaniu kodu T). Ten czas jest dodawany do szacowanego czasu druku." -#: src/libslic3r/PrintConfig.cpp:2407 +#: src/libslic3r/PrintConfig.cpp:2550 msgid "Time of the fast tilt" msgstr "Czas szybkiego przechylania" -#: src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2559 msgid "Time of the slow tilt" msgstr "Czas wolnego przechylania" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:677 msgid "Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible materials that may need more time to shrink to original dimensions." msgstr "Czas bezczynności po rozładowaniu filamentu. Może pomóc w bezproblemowej zmianie narzędzia podczas druku z materiałami elastycznymi, które mogą potrzebować więcej czasu na skurcz termiczny wracając do nominalnego rozmiaru." -#: src/slic3r/GUI/Tab.cpp:966 -msgid "To do that please specify a new name for the preset." -msgstr "Aby to zrobić ustaw nową nazwę zestawu ustawień." +#: src/slic3r/GUI/GCodeViewer.cpp:2197 +msgid "to" +msgstr "do" -#: src/slic3r/GUI/Plater.cpp:4014 +#: src/slic3r/GUI/Tab.cpp:1284 +msgid "To do that please specify a new name for the preset." +msgstr "Aby to zrobić, ustaw nową nazwę zestawu ustawień." + +#: src/slic3r/GUI/Plater.cpp:3934 msgid "To objects" msgstr "Do modeli" -#: src/slic3r/GUI/Plater.cpp:4016 +#: src/slic3r/GUI/Plater.cpp:3936 msgid "To parts" msgstr "Na części" -#: src/slic3r/GUI/Tab.cpp:1756 -msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." -msgstr "Aby użyć własnego certyfikatu, zaimportuj plik do Certificate Store / Keychain." +#: src/slic3r/Utils/Http.cpp:82 +msgid "To specify the system certificate store manually, please set the %1% environment variable to the correct CA bundle and restart the application." +msgstr "Aby ręcznie ustawić systemowy magazyn certyfikatów, ustaw %1% jako zmienną środowiskową pakietu i zrestartuj aplikację." -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:263 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:360 +msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." +msgstr "Aby użyć własnego certyfikatu, zaimportuj plik do magazynu (Certificate Store / Keychain)." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:271 #, c-format msgid "Toggle %c axis mirroring" msgstr "Włącz odbicie w osi %c" -#: src/libslic3r/Zipper.cpp:34 +#: src/libslic3r/miniz_extension.cpp:93 msgid "too many files" msgstr "zbyt wiele plików" -#: src/libslic3r/SLAPrintSteps.cpp:190 -msgid "Too much overlapping holes." +#: src/libslic3r/SLAPrintSteps.cpp:192 +msgid "Too many overlapping holes." msgstr "Zbyt wiele nakładających się otworów." -#: src/slic3r/GUI/GUI_Preview.cpp:227 src/slic3r/GUI/GUI_Preview.cpp:335 -#: src/slic3r/GUI/GUI_Preview.cpp:519 src/slic3r/GUI/GUI_Preview.cpp:574 -#: src/slic3r/GUI/GUI_Preview.cpp:835 src/libslic3r/GCode/PreviewData.cpp:357 +#: src/slic3r/GUI/GCodeViewer.cpp:2241 src/slic3r/GUI/GUI_Preview.cpp:281 +#: src/slic3r/GUI/GUI_Preview.cpp:453 src/slic3r/GUI/GUI_Preview.cpp:693 +#: src/slic3r/GUI/GUI_Preview.cpp:786 src/slic3r/GUI/GUI_Preview.cpp:1270 +#: src/libslic3r/GCode/PreviewData.cpp:362 msgid "Tool" msgstr "Narzędzie" @@ -8354,51 +9562,64 @@ msgstr "Narzędzie" msgid "Tool #" msgstr "Narzędzie #" -#: src/slic3r/GUI/Tab.cpp:2000 src/libslic3r/PrintConfig.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:2189 src/libslic3r/PrintConfig.cpp:2236 msgid "Tool change G-code" msgstr "G-code wykonywany przy zmianie narzędzia" -#: src/slic3r/GUI/Tab.cpp:1491 +#: src/slic3r/GUI/GCodeViewer.cpp:2530 src/slic3r/GUI/GUI_Preview.cpp:1474 +msgid "Tool changes" +msgstr "Zmiany narzędzi" + +#: src/slic3r/GUI/GUI_Preview.cpp:1479 +msgid "Tool marker" +msgstr "Oznaczenie narzędzia" + +#: src/slic3r/GUI/GCodeViewer.cpp:223 +msgid "Tool position" +msgstr "Pozycja narzędzia" + +#: src/slic3r/GUI/Tab.cpp:1837 msgid "Toolchange parameters with single extruder MM printers" msgstr "Parametry zmiany narzędzia dla drukarek MM z jednym ekstruderem" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:662 src/libslic3r/PrintConfig.cpp:2132 -#: src/libslic3r/PrintConfig.cpp:2141 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 +#: src/libslic3r/PrintConfig.cpp:2275 src/libslic3r/PrintConfig.cpp:2284 msgid "Top" msgstr "Górne" -#: src/slic3r/GUI/PresetHints.cpp:304 +#: src/slic3r/GUI/PresetHints.cpp:302 msgid "Top / bottom shell thickness hint: Not available due to invalid layer height." msgstr "Porada dot. grubości dolnej / górnej powłoki: niedostępne z powodu nieprawidłowej wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:449 msgid "Top fill pattern" msgstr "Wzór wypełnienia górnej warstwy" -#: src/slic3r/GUI/PresetHints.cpp:323 +#: src/slic3r/GUI/PresetHints.cpp:321 msgid "Top is open." msgstr "Góra jest otwarta." -#: src/slic3r/GUI/PresetHints.cpp:317 +#: src/slic3r/GUI/PresetHints.cpp:315 msgid "Top shell is %1% mm thick for layer height %2% mm." msgstr "Górna powłoka ma %1% mm grubości dla warstwy o wysokości %2% mm." -#: src/slic3r/GUI/PresetHints.cpp:192 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "zwarte wypełnienie na szczycie" -#: src/slic3r/GUI/GUI_Preview.cpp:242 src/libslic3r/ExtrusionEntity.cpp:315 -#: src/libslic3r/PrintConfig.cpp:2105 src/libslic3r/PrintConfig.cpp:2117 +#: src/slic3r/GUI/GUI_Preview.cpp:306 src/libslic3r/ExtrusionEntity.cpp:319 +#: src/libslic3r/ExtrusionEntity.cpp:346 src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Top solid infill" msgstr "Zwarte wypełnienie górne" -#: src/libslic3r/PrintConfig.cpp:2135 +#: src/libslic3r/PrintConfig.cpp:2278 msgid "Top solid layers" msgstr "Zwarte warstwy górne" -#: src/slic3r/GUI/MainFrame.cpp:662 +#: src/slic3r/GUI/MainFrame.cpp:959 src/slic3r/GUI/MainFrame.cpp:1279 msgid "Top View" msgstr "Widok z góry" @@ -8414,49 +9635,82 @@ msgstr "Całkowita objętość wyciskania" msgid "Total ramming time" msgstr "Całkowity czas wyciskania" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:516 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:640 +msgid "Transfer" +msgstr "Transfer" + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:745 +msgid "Transfer the selected options to the newly selected preset \"%1%\"." +msgstr "Przenieś wybrane opcje do nowo wybranego zestawu ustawień \"%1%\"." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:740 +msgid "Transfer the selected settings to the newly selected preset." +msgstr "Przenieś wybrane ustawienia do nowo wybranego zestawu ustawień." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:561 msgid "Translate" msgstr "Konwersja" -#: src/slic3r/GUI/Mouse3DController.cpp:300 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:282 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Translation" msgstr "Tłumaczenie" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/PrintConfig.cpp:2152 +#: src/slic3r/GUI/GCodeViewer.cpp:2489 src/slic3r/GUI/GUI_Preview.cpp:335 +#: src/slic3r/GUI/GUI_Preview.cpp:1471 src/libslic3r/PrintConfig.cpp:2295 msgid "Travel" msgstr "Jałowy" -#: src/libslic3r/PrintConfig.cpp:845 +#: src/libslic3r/PrintConfig.cpp:883 msgid "Triangles" msgstr "Trójkąty" -#: src/libslic3r/PrintConfig.cpp:3448 +#: src/libslic3r/PrintConfig.cpp:3647 msgid "Try to repair any non-manifold meshes (this option is implicitly added whenever we need to slice the model to perform the requested action)." msgstr "Podejmij próbę naprawienia wszystkich niezamkniętych obszarów siatki (ta opcja jest dodana w przypadku, w którym potrzebujemy pociąć model, aby przeprowadzić jakieś zadanie)." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:165 +msgid "Type here the name of your printer device" +msgstr "Wpisz tutaj nazwę drukarki" + +#: src/libslic3r/PrintConfig.cpp:1575 msgid "Type of the printer." msgstr "Rodzaj drukarki." -#: src/slic3r/GUI/ConfigWizard.cpp:2013 src/slic3r/GUI/GUI_ObjectList.cpp:3553 +#: src/slic3r/GUI/ConfigWizard.cpp:2524 src/slic3r/GUI/ConfigWizard.cpp:2526 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4016 msgid "Type:" msgstr "Typ:" -#: src/slic3r/GUI/Plater.cpp:3428 +#: src/slic3r/GUI/OpenGLManager.cpp:275 +#, c-format +msgid "" +"Unable to load the following shaders:\n" +"%s" +msgstr "" +"Niepowodzenie wczytywania następujących modułów cieniujących:\n" +"%s" + +#: src/slic3r/GUI/Plater.cpp:3233 msgid "Unable to reload:" msgstr "Nie można wczytać:" -#: src/libslic3r/Zipper.cpp:32 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:137 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:146 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:845 +msgid "Undef" +msgstr "Undef" + +#: src/libslic3r/miniz_extension.cpp:91 msgid "undefined error" msgstr "nieznany błąd" -#: src/slic3r/GUI/GLCanvas3D.cpp:4624 src/slic3r/GUI/KBShortcutsDialog.cpp:130 -#: src/slic3r/GUI/MainFrame.cpp:581 +#: src/slic3r/GUI/GLCanvas3D.cpp:5028 src/slic3r/GUI/KBShortcutsDialog.cpp:125 +#: src/slic3r/GUI/MainFrame.cpp:1187 msgid "Undo" msgstr "Cofnij" -#: src/slic3r/GUI/GLCanvas3D.cpp:4065 +#: src/slic3r/GUI/GLCanvas3D.cpp:4382 #, c-format msgid "Undo %1$d Action" msgid_plural "Undo %1$d Actions" @@ -8465,106 +9719,98 @@ msgstr[1] "Cofnij %1$d akcji" msgstr[2] "Cofnij %1$d akcji" msgstr[3] "Cofnij %1$d akcji" -#: src/slic3r/GUI/GLCanvas3D.cpp:4047 +#: src/slic3r/GUI/GLCanvas3D.cpp:4361 msgid "Undo History" msgstr "Historia Cofnięć" -#: src/libslic3r/Zipper.cpp:56 +#: src/libslic3r/miniz_extension.cpp:115 msgid "unexpected decompressed size" msgstr "nieoczekiwany rozmiar po rozpakowaniu" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +#: src/slic3r/GUI/GUI_Preview.cpp:299 src/libslic3r/ExtrusionEntity.cpp:310 msgid "Unknown" msgstr "Nieznane" -#: src/slic3r/Utils/Duet.cpp:82 src/slic3r/Utils/Duet.cpp:137 -#: src/slic3r/Utils/FlashAir.cpp:119 src/slic3r/Utils/FlashAir.cpp:140 -#: src/slic3r/Utils/FlashAir.cpp:156 +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:139 +#: src/slic3r/Utils/FlashAir.cpp:122 src/slic3r/Utils/FlashAir.cpp:143 +#: src/slic3r/Utils/FlashAir.cpp:159 msgid "Unknown error occured" msgstr "Wystąpił nieznany błąd" +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:178 +msgid "Unknown error occured during exporting G-code." +msgstr "Wystąpił nieznany błąd podczas eksportowania G-code." + #: src/slic3r/GUI/WipeTowerDialog.cpp:263 msgid "unloaded" msgstr "rozładowano" -#: src/libslic3r/PrintConfig.cpp:623 +#: src/libslic3r/PrintConfig.cpp:659 msgid "Unloading speed" msgstr "Prędkość rozładowania" -#: src/libslic3r/PrintConfig.cpp:632 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Unloading speed at the start" msgstr "Początkowa prędkość rozładowania" -#: src/slic3r/GUI/Tab.cpp:3256 +#: src/slic3r/GUI/Tab.cpp:3693 msgid "UNLOCKED LOCK" msgstr "OTWARTA KŁÓDKA" -#: src/slic3r/GUI/Tab.cpp:3282 +#: src/slic3r/GUI/Tab.cpp:3719 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not equal to the system (or default) values for the current option group.\n" "Click to reset all settings for current option group to the system (or default) values." msgstr "" "OTWARTA KŁÓDKA oznacza, że niektóre ustawienia zostały zmodyfikowane i nie odpowiadają wartościom systemowym (lub domyślnym) w obecnej grupie opcji.\n" -"Kliknij aby zresetować wszystkie ustawienia obecnej grupy ustawień do wartości systemowych (lub domyślnych)." +"Kliknij, aby zresetować wszystkie ustawienia obecnej grupy ustawień do wartości systemowych (lub domyślnych)." -#: src/slic3r/GUI/Tab.cpp:3297 +#: src/slic3r/GUI/Tab.cpp:3734 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to the system (or default) value.\n" "Click to reset current value to the system (or default) value." msgstr "" "OTWARTA KŁÓDKA oznacza, że niektóre wartości zostały zmodyfikowane i nie odpowiadają systemowym (lub domyślnym).\n" -"Kliknij ikonę aby zresetować do wartości systemowej (lub domyślnej)." +"Kliknij ikonę, aby zresetować do wartości systemowej (lub domyślnej)." -#: src/slic3r/GUI/Plater.cpp:5203 -#, c-format -msgid "Unmounting successful. The device %s(%s) can now be safely removed from the computer." -msgstr "Wysuwanie nośnika zakończone. Urządzenie %s (%s) może być teraz bezpiecznie odłączone od komputera." - -#: src/slic3r/GUI/GUI_Preview.cpp:255 -msgid "Unretractions" -msgstr "Powrót retrakcji" - -#: src/slic3r/GUI/Tab.cpp:2947 -msgid "Unsaved Changes" -msgstr "Niezapisane zmiany" - -#: src/slic3r/GUI/GUI_App.cpp:935 -msgid "Unsaved Presets" -msgstr "Niezapisane zestawy ustawień" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Unselect gizmo or clear selection" msgstr "Odznacz uchwyt lub wyczyść zaznaczenie" -#: src/libslic3r/Zipper.cpp:60 +#: src/libslic3r/miniz_extension.cpp:119 msgid "unsupported central directory size" msgstr "nieobsługiwany rozmiar katalogu centralnego" -#: src/libslic3r/Zipper.cpp:40 +#: src/libslic3r/miniz_extension.cpp:99 msgid "unsupported encryption" msgstr "nieobsługiwane szyfrowanie" -#: src/libslic3r/Zipper.cpp:42 +#: src/libslic3r/miniz_extension.cpp:101 msgid "unsupported feature" msgstr "nieobsługiwana funkcja" -#: src/libslic3r/Zipper.cpp:38 +#: src/libslic3r/miniz_extension.cpp:97 msgid "unsupported method" msgstr "nieobsługiwana metoda" -#: src/libslic3r/Zipper.cpp:50 +#: src/libslic3r/miniz_extension.cpp:109 msgid "unsupported multidisk archive" msgstr "nieobsługiwane archiwum wielodyskowe" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:292 +#: src/slic3r/GUI/OpenGLManager.cpp:267 msgid "Unsupported OpenGL version" msgstr "Nieobsługiwana wersja OpenGL" -#: src/slic3r/GUI/GUI_ObjectList.cpp:3420 +#: src/slic3r/GUI/GUI_ObjectList.cpp:3883 msgid "Unsupported selection" msgstr "Niewłaściwy wybór" -#: src/slic3r/GUI/GLCanvas3D.cpp:955 +#: src/slic3r/GUI/GCodeViewer.cpp:2183 +msgid "up to" +msgstr "do" + +#: src/slic3r/GUI/GLCanvas3D.cpp:961 #, c-format msgid "up to %.2f mm" msgstr "do %.2f mm" @@ -8573,15 +9819,15 @@ msgstr "do %.2f mm" msgid "Update available" msgstr "Dostępna jest aktualizacja" -#: src/slic3r/GUI/ConfigWizard.cpp:779 src/slic3r/GUI/Preferences.cpp:80 +#: src/slic3r/GUI/ConfigWizard.cpp:1138 src/slic3r/GUI/Preferences.cpp:97 msgid "Update built-in Presets automatically" msgstr "Automatyczna aktualizacja wbudowanych zestawów ustawień" -#: src/slic3r/GUI/ConfigWizard.cpp:761 +#: src/slic3r/GUI/ConfigWizard.cpp:1120 msgid "Updates" msgstr "Aktualizacje" -#: src/slic3r/GUI/ConfigWizard.cpp:786 +#: src/slic3r/GUI/ConfigWizard.cpp:1145 msgid "Updates are never applied without user's consent and never overwrite user's customized settings." msgstr "Aktualizacje nie są stosowane bez wiedzy użytkownika i nigdy nie nadpisują zapisanych ustawień własnych." @@ -8589,7 +9835,7 @@ msgstr "Aktualizacje nie są stosowane bez wiedzy użytkownika i nigdy nie nadpi msgid "Upgrade" msgstr "Aktualizacja" -#: src/slic3r/GUI/GUI_App.cpp:824 +#: src/slic3r/GUI/GUI_App.cpp:1522 msgid "Upload a firmware image into an Arduino based printer" msgstr "Wgraj obraz firmware do drukarki opartej na Adruino" @@ -8605,101 +9851,118 @@ msgstr "Prześlij do serwera druku z następującą nazwą pliku:" msgid "Uploading" msgstr "Przesyłanie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:204 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:206 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 msgid "Upper Layer" msgstr "Górna Warstwa" -#: src/slic3r/GUI/Tab.cpp:1900 -msgid "USB/Serial connection" -msgstr "Połączenie USB/szeregowe" - -#: src/libslic3r/PrintConfig.cpp:1662 -msgid "USB/serial port for printer connection." -msgstr "Port USB/szeregowy do połączenia z drukarką." - -#: src/slic3r/GUI/DoubleSlider.cpp:1147 +#: src/slic3r/GUI/DoubleSlider.cpp:1276 msgid "Use another extruder" msgstr "Użyj innego ekstrudera" -#: src/slic3r/GUI/Preferences.cpp:143 +#: src/slic3r/GUI/Preferences.cpp:220 msgid "Use custom size for toolbar icons" msgstr "Użyj własnego rozmiaru ikon pasków narzędzi" -#: src/libslic3r/PrintConfig.cpp:2161 +#: src/slic3r/GUI/Preferences.cpp:268 +msgid "Use environment map" +msgstr "Użyj mapy środowiskowej" + +#: src/libslic3r/PrintConfig.cpp:2304 msgid "Use firmware retraction" msgstr "Użyj retrakcji z firmware" +#: src/slic3r/GUI/ImGuiWrapper.cpp:800 src/slic3r/GUI/Search.cpp:464 +msgid "Use for search" +msgstr "Użyj do wyszukiwania" + +#: src/libslic3r/PrintConfig.cpp:1218 +msgid "Use for time estimate" +msgstr "Użyj do obliczenia czasu" + #: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Użyj prawego ukośnika ( / ) jako separatora katalogu w razie potrzeby." -#: src/slic3r/GUI/Preferences.cpp:126 +#: src/slic3r/GUI/Preferences.cpp:191 msgid "Use free camera" msgstr "Użyj wolnego widoku" -#: src/libslic3r/PrintConfig.cpp:2780 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Use inches" +msgstr "Użyj cali" + +#: src/libslic3r/PrintConfig.cpp:2944 msgid "Use pad" msgstr "Użyj podkładki" -#: src/slic3r/GUI/Preferences.cpp:119 +#: src/slic3r/GUI/Preferences.cpp:184 msgid "Use perspective camera" msgstr "Użyj widoku perspektywicznego" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2311 msgid "Use relative E distances" msgstr "Użyj względnych wartości E (ekstruzji)" -#: src/slic3r/GUI/Preferences.cpp:104 +#: src/slic3r/GUI/Preferences.cpp:135 msgid "Use Retina resolution for the 3D scene" msgstr "Użyj rozdzielczości Retina dla generowania podglądu 3D" -#: src/libslic3r/PrintConfig.cpp:540 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." msgstr "Ta opcja określa literę, którą Twoja drukarka opisuje oś ekstrudera (zazwyczaj jest to E ale niektóre drukarki używają A)." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:2035 msgid "Use this setting to rotate the support material pattern on the horizontal plane." msgstr "To ustawienie odpowiada za obrót materiału podporowego w płaszczyźnie poziomej." -#: src/libslic3r/PrintConfig.cpp:2175 +#: src/libslic3r/PrintConfig.cpp:2318 msgid "Use volumetric E" msgstr "Użyj wolumetrycznej wartości E" -#: src/slic3r/GUI/DoubleSlider.cpp:1171 +#: src/slic3r/GUI/DoubleSlider.cpp:1298 msgid "used" msgstr "używany" -#: src/slic3r/GUI/Plater.cpp:237 +#: src/slic3r/GUI/Plater.cpp:243 msgid "Used Filament (g)" msgstr "Użyty filament (g)" -#: src/slic3r/GUI/Plater.cpp:235 src/slic3r/GUI/Plater.cpp:1229 +#: src/slic3r/GUI/Plater.cpp:1141 +msgid "Used Filament (in)" +msgstr "Użyty filament (cale)" + +#: src/slic3r/GUI/Plater.cpp:1153 +msgid "Used Filament (in³)" +msgstr "Użyty filament (cale³)" + +#: src/slic3r/GUI/Plater.cpp:241 src/slic3r/GUI/Plater.cpp:1141 msgid "Used Filament (m)" msgstr "Użyty filament (m)" -#: src/slic3r/GUI/Plater.cpp:236 +#: src/slic3r/GUI/Plater.cpp:242 src/slic3r/GUI/Plater.cpp:1153 msgid "Used Filament (mm³)" msgstr "Użyty filament (mm³)" -#: src/slic3r/GUI/Plater.cpp:1191 +#: src/slic3r/GUI/Plater.cpp:1100 msgid "Used Material (ml)" msgstr "Używany materiał (ml)" -#: src/slic3r/GUI/Plater.cpp:238 +#: src/slic3r/GUI/Plater.cpp:244 msgid "Used Material (unit)" msgstr "Używany materiał (jednostka)" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 src/libslic3r/PrintConfig.cpp:132 msgid "User" msgstr "Użytkownik" -#: src/slic3r/GUI/Preset.cpp:1168 src/slic3r/GUI/Preset.cpp:1288 -#: src/slic3r/GUI/PresetBundle.cpp:1677 +#: src/slic3r/GUI/PresetComboBoxes.cpp:230 +#: src/slic3r/GUI/PresetComboBoxes.cpp:778 +#: src/slic3r/GUI/PresetComboBoxes.cpp:934 msgid "User presets" msgstr "Zestawy użytkownika" -#: src/libslic3r/Zipper.cpp:90 +#: src/libslic3r/miniz_extension.cpp:149 msgid "validation failed" msgstr "niepowodzenie weryfikacji" @@ -8711,31 +9974,31 @@ msgstr "Wartość jest taka sama jak systemowa" msgid "Value was changed and is not equal to the system value or the last saved preset" msgstr "Wartość została zmieniona i nie równa się wartości systemowej lub tej z ostatnio zapisanego zestawu ustawień" -#: src/slic3r/GUI/Tab.cpp:2202 +#: src/slic3r/GUI/Tab.cpp:2371 msgid "Values in this column are for Normal mode" msgstr "Wartości w tej kolumnie dotyczą trybu Normal" -#: src/slic3r/GUI/Tab.cpp:2208 +#: src/slic3r/GUI/Tab.cpp:2377 msgid "Values in this column are for Stealth mode" msgstr "Wartości w tej kolumnie dotyczą trybu Stealth" -#: src/slic3r/GUI/GLCanvas3D.cpp:234 src/slic3r/GUI/GLCanvas3D.cpp:4573 +#: src/slic3r/GUI/GLCanvas3D.cpp:231 src/slic3r/GUI/GLCanvas3D.cpp:4978 msgid "Variable layer height" msgstr "Zmienna wysokość warstwy" -#: src/slic3r/GUI/GLCanvas3D.cpp:1709 +#: src/slic3r/GUI/GLCanvas3D.cpp:1786 msgid "Variable layer height - Adaptive" msgstr "Zmienna wysokość warstwy - Adaptacyjna" -#: src/slic3r/GUI/GLCanvas3D.cpp:599 +#: src/slic3r/GUI/GLCanvas3D.cpp:565 msgid "Variable layer height - Manual edit" msgstr "Zmienna wysokość warstwy - ręczna edycja" -#: src/slic3r/GUI/GLCanvas3D.cpp:1701 +#: src/slic3r/GUI/GLCanvas3D.cpp:1778 msgid "Variable layer height - Reset" msgstr "Zmienna wysokość warstwy - Reset" -#: src/slic3r/GUI/GLCanvas3D.cpp:1717 +#: src/slic3r/GUI/GLCanvas3D.cpp:1794 msgid "Variable layer height - Smooth all" msgstr "Zmienna wysokość warstwy - Wygładź wszystko" @@ -8743,19 +10006,20 @@ msgstr "Zmienna wysokość warstwy - Wygładź wszystko" msgid "variants" msgstr "warianty" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 src/slic3r/GUI/Tab.cpp:1289 msgid "vendor" msgstr "dostawca" -#: src/slic3r/GUI/ConfigWizard.cpp:565 +#: src/slic3r/GUI/ConfigWizard.cpp:589 msgid "Vendor:" msgstr "Producent:" -#: src/libslic3r/PrintConfig.cpp:928 +#: src/libslic3r/PrintConfig.cpp:972 msgid "Verbose G-code" msgstr "G-code rozszerzony" -#: src/slic3r/GUI/AboutDialog.cpp:231 src/slic3r/GUI/MainFrame.cpp:64 +#: src/slic3r/GUI/AboutDialog.cpp:256 src/slic3r/GUI/GUI_App.cpp:239 +#: src/slic3r/GUI/MainFrame.cpp:164 msgid "Version" msgstr "Wersja" @@ -8763,24 +10027,36 @@ msgstr "Wersja" msgid "version" msgstr "wersja" -#: src/slic3r/GUI/Tab.cpp:1053 +#: src/slic3r/GUI/Tab.cpp:1375 msgid "Vertical shells" msgstr "Powłoka pionowa" -#: src/slic3r/GUI/GUI_Preview.cpp:218 +#: src/slic3r/GUI/GUI_Preview.cpp:265 src/slic3r/GUI/GUI_Preview.cpp:271 msgid "View" msgstr "Widok" -#: src/slic3r/GUI/ConfigWizard.cpp:813 +#: src/slic3r/GUI/ConfigWizard.cpp:1172 msgid "View mode" msgstr "Widok" -#: src/libslic3r/SLAPrintSteps.cpp:413 src/libslic3r/SLAPrintSteps.cpp:422 -#: src/libslic3r/SLAPrintSteps.cpp:461 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:666 +msgid "" +"Visit \"Preferences\" and check \"%1%\"\n" +"to be asked about unsaved changes again." +msgstr "" +"Otwórz Preferencje i sprawdź \"%1%\",\n" +"aby włączyć potwierdzanie niezapisanych zmian." + +#: src/libslic3r/PrintConfig.cpp:3553 +msgid "Visualize an already sliced and saved G-code" +msgstr "Wizualizacja pociętego i zapisanego G-code" + +#: src/libslic3r/SLAPrintSteps.cpp:411 src/libslic3r/SLAPrintSteps.cpp:420 +#: src/libslic3r/SLAPrintSteps.cpp:459 msgid "Visualizing supports" msgstr "Wizualizacja podpór" -#: src/slic3r/GUI/Plater.cpp:161 +#: src/slic3r/GUI/Plater.cpp:167 msgid "Volume" msgstr "Objętość" @@ -8788,175 +10064,190 @@ msgstr "Objętość" msgid "Volume to purge (mm³) when the filament is being" msgstr "Objętość do wyczyszczenia (mm³), gdy filament jest" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1106 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1230 msgid "Volumes in Object reordered" msgstr "Części modelu przeorganizowane" -#: src/slic3r/GUI/PresetHints.cpp:219 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "Objętościowy" -#: src/slic3r/GUI/Tab.cpp:1591 +#: src/slic3r/GUI/Tab.cpp:1930 msgid "Volumetric flow hints not available" msgstr "Podpowiedzi dot. objętości przepływu są niedostępne" -#: src/slic3r/GUI/GUI_Preview.cpp:226 +#: src/slic3r/GUI/GUI_Preview.cpp:280 msgid "Volumetric flow rate" -msgstr "Objętościowa wartość przepływu" +msgstr "Objętościowe natężenie przepływu" -#: src/libslic3r/GCode/PreviewData.cpp:355 +#: src/slic3r/GUI/GCodeViewer.cpp:2240 src/libslic3r/GCode/PreviewData.cpp:360 msgid "Volumetric flow rate (mm³/s)" -msgstr "Objętościowy współczynnik przepływu (mm³/s)" +msgstr "Natężenie przepływu (mm³/s)" #: src/slic3r/GUI/RammingChart.cpp:81 msgid "Volumetric speed" -msgstr "Prędkość objętościowa" +msgstr "Natężenie przepływu" -#: src/libslic3r/PrintConfig.cpp:2915 +#: src/libslic3r/PrintConfig.cpp:3079 msgid "Wall thickness" msgstr "Grubość ścianki" -#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1270 src/slic3r/GUI/GUI.cpp:251 -#: src/slic3r/GUI/Tab.cpp:3084 src/slic3r/GUI/WipeTowerDialog.cpp:45 -#: src/slic3r/GUI/WipeTowerDialog.cpp:366 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1129 src/slic3r/GUI/GUI.cpp:256 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:478 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:502 +#: src/slic3r/GUI/WipeTowerDialog.cpp:45 src/slic3r/GUI/WipeTowerDialog.cpp:366 msgid "Warning" msgstr "Ostrzeżenie" -#: src/slic3r/GUI/ConfigWizard.cpp:431 +#: src/slic3r/GUI/NotificationManager.cpp:672 +#: src/slic3r/GUI/NotificationManager.cpp:687 +#: src/slic3r/GUI/NotificationManager.cpp:702 +msgid "WARNING:" +msgstr "OSTRZEŻENIE:" + +#: src/slic3r/GUI/ConfigWizard.cpp:449 msgid "Welcome" msgstr "Witaj" -#: src/slic3r/GUI/ConfigWizard.cpp:427 +#: src/slic3r/GUI/ConfigWizard.cpp:445 #, c-format msgid "Welcome to the %s Configuration Assistant" msgstr "Witamy w Asystencie Konfiguracji %s" -#: src/slic3r/GUI/ConfigWizard.cpp:429 +#: src/slic3r/GUI/ConfigWizard.cpp:447 #, c-format msgid "Welcome to the %s Configuration Wizard" msgstr "Witamy w Asystencie Konfiguracji %s" -#: src/slic3r/GUI/Preferences.cpp:97 +#: src/slic3r/GUI/SavePresetDialog.cpp:310 +msgid "What would you like to do with \"%1%\" preset after saving?" +msgstr "Co chcesz zrobić z zestawem ustawień \"%1%\" po zapisaniu?" + +#: src/slic3r/GUI/Preferences.cpp:114 msgid "When checked, the print and filament presets are shown in the preset editor even if they are marked as incompatible with the active printer" msgstr "Zaznaczenie tej opcji spowoduje wyświetlanie wszystkich ustawień druku i filamentów w edytorze zestawów ustawień, nawet jeśli są oznaczone jak niekompatybilne z wybraną drukarką" -#: src/slic3r/GUI/PresetHints.cpp:224 +#: src/slic3r/GUI/Preferences.cpp:156 +msgid "When closing the application, always ask for unsaved changes" +msgstr "Zawsze pytaj o niezapisane zmiany podczas zamykania aplikacji" + +#: src/slic3r/GUI/PresetHints.cpp:223 msgid "when printing" msgstr "podczas druku" -#: src/libslic3r/PrintConfig.cpp:253 +#: src/libslic3r/PrintConfig.cpp:287 msgid "When printing multi-material objects, this settings will make Slic3r to clip the overlapping object parts one by the other (2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)." msgstr "To ustawienie sprawi, że podczas druku modeli z wielu materiałów, PrusaSlicer przytnie nachodzące na siebie części (druga część zostanie przycięta przez pierwszą, trzecia przez pierwszą i drugą itd.)" -#: src/libslic3r/PrintConfig.cpp:305 +#: src/libslic3r/PrintConfig.cpp:339 msgid "When printing multiple objects or copies, this feature will complete each object before moving onto next one (and starting it from its bottom layer). This feature is useful to avoid the risk of ruined prints. Slic3r should warn and prevent you from extruder collisions, but beware." -msgstr "Włączenie tej opcji sprawi, że przy druku kilku modeli drukarka wydrukuje jeden model w całości zanim przejdzie do następnego (zaczynając od najniższej warstwy). Przydaje się aby uniknąć ryzyka niepowodzenia wydruku kilku części. Slic3r powinien ostrzec przed możliwością kolizji z ekstruderem, ale zachowaj ostrożność." +msgstr "Włączenie tej opcji sprawi, że przy druku kilku modeli drukarka wydrukuje jeden model w całości zanim przejdzie do następnego (zaczynając od najniższej warstwy). Przydaje się, aby uniknąć ryzyka niepowodzenia wydruku kilku części. PrusaSlicer powinien ostrzec przed możliwością kolizji z ekstruderem, ale zachowaj ostrożność." -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:933 msgid "When printing with very low layer heights, you might still want to print a thicker bottom layer to improve adhesion and tolerance for non perfect build plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." -msgstr "Podczas druku z bardzo małą wysokością warstwy warto mimo wszystko wydrukować najniższą warstwę o większej wysokości aby zwiększyć przyczepność i tolerancję na niedoskonałości powierzchni druki. Może być wyrażona jako wartość bezwzględna lub procentowa (np. 150%) nominalnej wysokości warstwy." +msgstr "Podczas druku z bardzo małą wysokością warstwy warto mimo wszystko wydrukować najniższą warstwę o większej wysokości, aby zwiększyć przyczepność i tolerancję na niedoskonałości powierzchni druki. Może być wyrażona jako wartość bezwzględna lub procentowa (np. 150%) nominalnej wysokości warstwy." -#: src/libslic3r/PrintConfig.cpp:1553 +#: src/libslic3r/PrintConfig.cpp:1661 msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." msgstr "Kiedy retrakcja zostaje wykonana przed zmianą ekstrudera, filament o określonej długości jest wciągany z powrotem (mierzona jest długość nieprzetworzonego filamentu, zanim wejdzie do ekstrudera)." -#: src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1653 msgid "When retraction is triggered, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." msgstr "Kiedy zostaje wykonana retrakcja to filament o określonej długości jest wciągany z powrotem (mierzona jest długość nieprzetworzonego filamentu, zanim wejdzie do ekstrudera)." -#: src/libslic3r/PrintConfig.cpp:1391 +#: src/libslic3r/PrintConfig.cpp:1499 msgid "When set to zero, the distance the filament is moved from parking position during load is exactly the same as it was moved back during unload. When positive, it is loaded further, if negative, the loading move is shorter than unloading." msgstr "Gdy ta wartość wynosi zero, to długość ładowania filamentu z pozycji zaparkowanej jest dokładnie taka sama, jak podczas rozładowywania. Jeśli jest dodatnia to jest większa (więcej filamentu zostanie załadowane), jeśli ujemna to jest mniejsza niż przy rozładowywaniu." -#: src/libslic3r/PrintConfig.cpp:1238 +#: src/libslic3r/PrintConfig.cpp:1346 msgid "When setting other speed settings to 0 Slic3r will autocalculate the optimal speed in order to keep constant extruder pressure. This experimental setting is used to set the highest print speed you want to allow." msgstr "Ustawienie pozostałych prędkości na 0 spowoduje, ze Slic3r będzie automatycznie przeliczał optymalną prędkość dla utrzymania stałego ciśnienia materiału w ekstruderze. To eksperymentalne ustawienie określa maksymalną dozwoloną prędkość druku." -#: src/libslic3r/PrintConfig.cpp:1597 +#: src/libslic3r/PrintConfig.cpp:1705 msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Jeśli retrakcja jest korygowana po zmianie narzędzia, ekstruder przepchnie taką dodatkową ilość filamentu." -#: src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1697 msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Jeśli retrakcja jest korygowana po ruchu jałowym, ekstruder przepchnie taką dodatkową ilość filamentu. Ta opcja jest rzadko potrzebna." -#: src/slic3r/GUI/Tab.cpp:3263 +#: src/slic3r/GUI/Tab.cpp:3700 msgid "WHITE BULLET" msgstr "BIAŁA KROPKA" -#: src/slic3r/GUI/Tab.cpp:3285 +#: src/slic3r/GUI/Tab.cpp:3722 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "BIAŁA KROPKA oznacza niesystemowy (lub inny niż domyślny) zestaw ustawień." -#: src/slic3r/GUI/Tab.cpp:3288 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." msgstr "BIAŁA KROPKA oznacza, że ustawienia są takie same jak w ostatnio zapisanym zestawie ustawień dla obecnej grupy opcji." -#: src/slic3r/GUI/Tab.cpp:3303 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." msgstr "BIAŁA KROPKA oznacza, że wartość jest taka sama jak w ostatnio zapisanym zestawie ustawień." -#: src/slic3r/GUI/GUI_Preview.cpp:223 src/libslic3r/PrintConfig.cpp:2238 +#: src/slic3r/GUI/GUI_Preview.cpp:277 src/libslic3r/PrintConfig.cpp:2381 msgid "Width" msgstr "Szerokość" -#: src/libslic3r/GCode/PreviewData.cpp:349 +#: src/slic3r/GUI/GCodeViewer.cpp:2237 src/libslic3r/GCode/PreviewData.cpp:354 msgid "Width (mm)" msgstr "Szerokość (mm)" -#: src/libslic3r/PrintConfig.cpp:2640 +#: src/libslic3r/PrintConfig.cpp:2783 msgid "Width from the back sphere center to the front sphere center" msgstr "Odstęp pomiędzy środkami przedniej i tylnej części łącznika podpory" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2382 msgid "Width of a wipe tower" msgstr "Szerokość wieży czyszczącej" -#: src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3055 msgid "Width of the connector sticks which connect the object and the generated pad." msgstr "Średnica słupków łączących model z wygenerowaną podkładką." -#: src/libslic3r/PrintConfig.cpp:2354 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "Width of the display" msgstr "Szerokość wyświetlacza" -#: src/slic3r/GUI/PresetHints.cpp:48 +#: src/slic3r/GUI/PresetHints.cpp:47 msgid "will always run at %1%%%" msgstr "będzie zawsze pracować w %1%%%" -#: src/slic3r/GUI/PresetHints.cpp:55 +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "będzie wyłączony." -#: src/libslic3r/PrintConfig.cpp:2441 +#: src/libslic3r/PrintConfig.cpp:2584 msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." msgstr "Trójkąty 2D zostaną rozciągnięte lub ściśnięte zgodnie z kierunkiem korekcji." -#: src/libslic3r/PrintConfig.cpp:2261 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "Wipe into this object" msgstr "Czyszczenie na tym modelu" -#: src/libslic3r/PrintConfig.cpp:2253 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Wipe into this object's infill" msgstr "Czyszczenie na wypełnieniu modelu" -#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:101 -#: src/slic3r/GUI/GUI_ObjectList.cpp:619 src/libslic3r/PrintConfig.cpp:2252 -#: src/libslic3r/PrintConfig.cpp:2260 +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 src/slic3r/GUI/GUI_ObjectList.cpp:99 +#: src/slic3r/GUI/GUI_ObjectList.cpp:658 src/libslic3r/PrintConfig.cpp:2395 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Wipe options" msgstr "Opcje czyszczenia" -#: src/slic3r/GUI/GUI_Preview.cpp:248 src/slic3r/GUI/Tab.cpp:1191 -#: src/libslic3r/ExtrusionEntity.cpp:321 +#: src/slic3r/GUI/GUI_Preview.cpp:313 src/slic3r/GUI/Tab.cpp:1521 +#: src/libslic3r/ExtrusionEntity.cpp:326 src/libslic3r/ExtrusionEntity.cpp:360 msgid "Wipe tower" msgstr "Wieża czyszcząca" -#: src/slic3r/GUI/Plater.cpp:1231 src/slic3r/GUI/Plater.cpp:1245 +#: src/slic3r/GUI/Plater.cpp:1143 src/slic3r/GUI/Plater.cpp:1160 msgid "wipe tower" msgstr "wieża czyszcząca" -#: src/slic3r/GUI/ConfigManipulation.cpp:120 -#: src/slic3r/GUI/ConfigManipulation.cpp:140 +#: src/slic3r/GUI/ConfigManipulation.cpp:119 +#: src/slic3r/GUI/ConfigManipulation.cpp:139 msgid "Wipe Tower" msgstr "Wieża czyszcząca" @@ -8964,36 +10255,36 @@ msgstr "Wieża czyszcząca" msgid "Wipe tower - Purging volume adjustment" msgstr "Wieża czyszcząca - dostosowanie objętości czyszczenia" -#: src/slic3r/GUI/Tab.cpp:1488 +#: src/slic3r/GUI/Tab.cpp:1834 msgid "Wipe tower parameters" msgstr "Parametry wieży czyszczącej" -#: src/libslic3r/PrintConfig.cpp:2245 +#: src/libslic3r/PrintConfig.cpp:2388 msgid "Wipe tower rotation angle" msgstr "Kąt obrotu wieży czyszczącej" -#: src/libslic3r/PrintConfig.cpp:2246 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Wipe tower rotation angle with respect to x-axis." msgstr "Obrót wieży czyszczącej względem osi X." -#: src/libslic3r/PrintConfig.cpp:2193 +#: src/libslic3r/PrintConfig.cpp:2336 msgid "Wipe while retracting" msgstr "Czyszczenie przy retrakcji" -#: src/slic3r/GUI/PresetHints.cpp:225 +#: src/slic3r/GUI/PresetHints.cpp:224 msgid "with a volumetric rate" msgstr "ze współczynnikiem objętościowym" -#: src/libslic3r/PrintConfig.cpp:1530 +#: src/libslic3r/PrintConfig.cpp:1638 msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." msgstr "Przy ekstruderze typu bowden warto wykonać szybką retrakcję przed ruchem czyszczącym." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:2198 msgid "With sheath around the support" msgstr "Osłona wokół podpór" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:62 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:105 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:68 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:111 msgid "World coordinates" msgstr "Globalny układ współrzędnych" @@ -9011,84 +10302,100 @@ msgstr "" "\n" "Zaktualizowane paczki konfiguracyjne:" -#: src/libslic3r/Zipper.cpp:92 +#: src/libslic3r/miniz_extension.cpp:151 msgid "write calledback failed" msgstr "błąd write calledback" -#: src/libslic3r/PrintConfig.cpp:3382 +#: src/libslic3r/PrintConfig.cpp:3581 msgid "Write information about the model to the console." msgstr "Zapis informacji o modelu do konsoli." -#: src/slic3r/Utils/Duet.cpp:131 +#: src/slic3r/Utils/Duet.cpp:133 msgid "Wrong password" msgstr "Nieprawidłowe hasło" -#: src/libslic3r/PrintConfig.cpp:2225 +#: src/libslic3r/PrintConfig.cpp:2368 msgid "X coordinate of the left front corner of a wipe tower" msgstr "Koordynata X wieży czyszczącej od przedniego lewego narożnika" -#: src/libslic3r/PrintConfig.cpp:1879 +#: src/libslic3r/PrintConfig.cpp:2021 msgid "XY separation between an object and its support" msgstr "Odstęp materiału podporowego od modelu w osiach XY" -#: src/libslic3r/PrintConfig.cpp:1881 +#: src/libslic3r/PrintConfig.cpp:2023 msgid "XY separation between an object and its support. If expressed as percentage (for example 50%), it will be calculated over external perimeter width." msgstr "Odstęp materiału podporowego od modelu w osiach XY. Jeśli ustawisz wartość procentową (np. 15%) to zostanie obliczona z szerokości ekstruzji obrysów zewnętrznych." -#: src/libslic3r/PrintConfig.cpp:2275 +#: src/libslic3r/PrintConfig.cpp:2418 msgid "XY Size Compensation" msgstr "Korekta wymiarów XY" -#: src/libslic3r/PrintConfig.cpp:2232 +#: src/libslic3r/PrintConfig.cpp:2375 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Koordynata wieży czyszczącej w osi Y od przedniego lewego narożnika" -#: src/slic3r/GUI/Plater.cpp:1170 +#: src/slic3r/GUI/Plater.cpp:1079 msgid "Yes" msgstr "Tak" -#: src/libslic3r/PrintConfig.cpp:1317 +#: src/slic3r/GUI/Plater.cpp:1405 +msgid "You can open only one .gcode file at a time." +msgstr "Możesz mieć otwarty tylko jeden plik .gcode w tym samym czasie." + +#: src/libslic3r/PrintConfig.cpp:1425 msgid "You can put here your personal notes. This text will be added to the G-code header comments." msgstr "Tutaj możesz umieścić notatki, które zostaną dodane do nagłówka pliku G-code." -#: src/libslic3r/PrintConfig.cpp:589 +#: src/libslic3r/PrintConfig.cpp:625 msgid "You can put your notes regarding the filament here." msgstr "Tutaj możesz umieścić notatki dotyczące filamentu." -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "You can put your notes regarding the printer here." msgstr "Tutaj możesz umieścić notatki dotyczące drukarki." -#: src/libslic3r/PrintConfig.cpp:2579 +#: src/libslic3r/PrintConfig.cpp:2722 msgid "You can put your notes regarding the SLA print material here." msgstr "Tutaj możesz umieścić notatki dotyczące materiału druku SLA." -#: src/libslic3r/PrintConfig.cpp:360 +#: src/libslic3r/PrintConfig.cpp:394 msgid "You can set this to a positive value to disable fan at all during the first layers, so that it does not make adhesion worse." msgstr "Wpisując tutaj wartość dodatnią możesz wyłączyć wentylator podczas druku pierwszych warstw, aby nie pogarszać przyczepności do stołu." -#: src/libslic3r/PrintConfig.cpp:1364 +#: src/libslic3r/PrintConfig.cpp:1472 msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." msgstr "Możesz użyć wszystkich opcji konfiguracjnych jako zmiennych w tym szablonie, takich jak np: [layer_height] - wysokość warstwy, [fill_density] - gęstość wypełnienia, itp. Możesz również użyć [timestamp] - czas, [year] - rok, [month] - miesiąc, [day] - dzień, [hour] - godzina, [minute] - minuta, [second] - sekunda, [version] - wersja, [input_filename] - pełna nazwa pliku wejściowego, [input_filename_base] - nazwa pliku wejściowego bez rozszerzenia." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3546 +#: src/slic3r/GUI/GUI_ObjectList.cpp:4009 msgid "You can't change a type of the last solid part of the object." msgstr "Nie możesz zmienić typu ostatniej zwartej części modelu." -#: src/slic3r/GUI/Plater.cpp:2390 +#: src/slic3r/GUI/Plater.cpp:2352 #, c-format msgid "You can't to add the object(s) from %s because of one or some of them is(are) multi-part" msgstr "Nie możesz dodać obiektu/ów z %s, ponieważ jeden lub więcej modeli składa się z wielu części" -#: src/slic3r/GUI/Plater.cpp:2311 +#: src/slic3r/GUI/Jobs/SLAImportJob.cpp:208 src/slic3r/GUI/Plater.cpp:2254 msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "Nie możesz wczytać projektu SLA mając na stole wieloczęściowy model" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:625 msgid "You cannot use non-uniform scaling mode for multiple objects/parts selection" msgstr "Nie możesz używać skalowania nierównomiernego dla kliku modeli/części" -#: src/slic3r/GUI/GLCanvas3DManager.cpp:287 +#: src/slic3r/GUI/SavePresetDialog.cpp:277 +msgid "" +"You have selected physical printer \"%1%\" \n" +"with related printer preset \"%2%\"" +msgstr "" +"Wybrana została fizyczna drukarka \"%1%\"\n" +"z powiązanym zestawem ustawień drukarki \"%2%\"" + +#: src/slic3r/GUI/GUI_App.cpp:1078 +msgid "You have the following presets with saved options for \"Print Host upload\"" +msgstr "Masz następujące zestawy ustawień z zapisaną opcją \"Wysyłania do serwera druku\"" + +#: src/slic3r/GUI/OpenGLManager.cpp:262 msgid "You may need to update your graphics card driver." msgstr "Może być wymagana aktualizacja sterowników karty graficznej." @@ -9096,37 +10403,49 @@ msgstr "Może być wymagana aktualizacja sterowników karty graficznej." msgid "You must install a configuration update." msgstr "Do instalacji jest wymagana aktualizacja konfiguracji." -#: src/slic3r/GUI/Preferences.cpp:172 +#: src/slic3r/GUI/Preferences.cpp:299 #, c-format msgid "You need to restart %s to make the changes effective." msgstr "Wymagany jest restart %s, aby wprowadzić zmiany." -#: src/slic3r/GUI/GUI_ObjectList.cpp:3421 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:468 +msgid "You should to change a name of your printer device. It can't be saved." +msgstr "Należy zmienić nazwę drukarki. Nie można jej zapisać." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:3884 #, c-format msgid "You started your selection with %s Item." msgstr "Wybór rozpoczęty przez %s." -#: src/slic3r/GUI/DoubleSlider.cpp:1902 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:664 +msgid "You will not be asked about the unsaved changes the next time you close PrusaSlicer." +msgstr "Podczas kolejnego zamknięcia PrusaSlicer nie dostaniesz pytania o niezapisane zmiany." + +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:665 +msgid "You will not be asked about the unsaved changes the next time you switch a preset." +msgstr "Podczas kolejnej zmiany zestawu ustawień nie dostaniesz pytania o niezapisane zmiany." + +#: src/slic3r/GUI/DoubleSlider.cpp:2121 msgid "Your current changes will delete all saved color changes." msgstr "Wprowadzane zmiany usuną wszystkie zmiany kolorów." -#: src/slic3r/GUI/DoubleSlider.cpp:1923 +#: src/slic3r/GUI/DoubleSlider.cpp:2141 msgid "Your current changes will delete all saved extruder (tool) changes." msgstr "Obecne zmiany spowodują usunięcie wszystkich zapisanych zmian ekstruderów (narzędzi)." -#: src/slic3r/GUI/MainFrame.cpp:911 +#: src/slic3r/GUI/MainFrame.cpp:1612 msgid "Your file was repaired." msgstr "Twój plik został naprawiony." -#: src/slic3r/GUI/Plater.cpp:2528 +#: src/slic3r/GUI/Plater.cpp:2490 msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." msgstr "Importowany model przekracza wymiary przestrzeni roboczej i został przeskalowany do odpowiednich rozmiarów." -#: src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "Z offset" msgstr "Z offset" -#: src/slic3r/GUI/ConfigManipulation.cpp:60 +#: src/slic3r/GUI/ConfigManipulation.cpp:59 msgid "" "Zero first layer height is not valid.\n" "\n" @@ -9136,7 +10455,7 @@ msgstr "" "\n" "Wysokość pierwszej warstwy zostanie ustawiona na 0,01." -#: src/slic3r/GUI/ConfigManipulation.cpp:48 +#: src/slic3r/GUI/ConfigManipulation.cpp:47 msgid "" "Zero layer height is not valid.\n" "\n" @@ -9146,28 +10465,28 @@ msgstr "" "\n" "Wysokość warstwy zostanie ustawiona na 0,01." -#: src/libslic3r/PrintConfig.cpp:2667 +#: src/libslic3r/PrintConfig.cpp:2831 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/slic3r/GUI/Mouse3DController.cpp:308 -#: src/slic3r/GUI/Mouse3DController.cpp:317 +#: src/slic3r/GUI/Mouse3DController.cpp:294 +#: src/slic3r/GUI/Mouse3DController.cpp:303 msgid "Zoom" msgstr "Zoom" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 msgid "Zoom in" msgstr "Przybliżenie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 msgid "Zoom out" msgstr "Oddalenie" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:181 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Zoom to Bed" msgstr "Zbliżenie na Stół" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "" "Zoom to selected object\n" "or all objects in scene, if none selected" @@ -9175,14 +10494,16 @@ msgstr "" "Ustaw zbliżenie na wybrany model\n" "lub wszystkie na stole, jeśli żaden nie został wybrany" -#: src/libslic3r/PrintConfig.cpp:207 src/libslic3r/PrintConfig.cpp:780 -#: src/libslic3r/PrintConfig.cpp:1640 src/libslic3r/PrintConfig.cpp:1650 -#: src/libslic3r/PrintConfig.cpp:1894 src/libslic3r/PrintConfig.cpp:2049 -#: src/libslic3r/PrintConfig.cpp:2247 src/libslic3r/PrintConfig.cpp:2727 -#: src/libslic3r/PrintConfig.cpp:2848 +#: src/libslic3r/PrintConfig.cpp:241 src/libslic3r/PrintConfig.cpp:816 +#: src/libslic3r/PrintConfig.cpp:1748 src/libslic3r/PrintConfig.cpp:1758 +#: src/libslic3r/PrintConfig.cpp:2036 src/libslic3r/PrintConfig.cpp:2191 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2891 +#: src/libslic3r/PrintConfig.cpp:3012 msgid "°" msgstr "°" -#: src/slic3r/GUI/ConfigWizard.cpp:1038 src/slic3r/GUI/ConfigWizard.cpp:1052 +#: src/slic3r/GUI/ConfigWizard.cpp:1404 src/slic3r/GUI/ConfigWizard.cpp:1418 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:912 +#: src/libslic3r/PrintConfig.cpp:956 src/libslic3r/PrintConfig.cpp:2209 msgid "°C" msgstr "°C" diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 48af11a8a..8f2703faa 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -45,7 +45,7 @@ bool GLGizmoFdmSupports::on_init() m_desc["cursor_type"] = _L("Brush shape") + ": "; m_desc["enforce_caption"] = _L("Left mouse button") + ": "; m_desc["enforce"] = _L("Enforce supports"); - m_desc["block_caption"] = _L("Right mouse button") + " "; + m_desc["block_caption"] = _L("Right mouse button") + ": "; m_desc["block"] = _L("Block supports"); m_desc["remove_caption"] = _L("Shift + Left mouse button") + ": "; m_desc["remove"] = _L("Remove selection"); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp index 266230f11..6c3a8ddd3 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -28,7 +28,7 @@ bool GLGizmoSeam::on_init() m_desc["cursor_type"] = _L("Brush shape") + ": "; m_desc["enforce_caption"] = _L("Left mouse button") + ": "; m_desc["enforce"] = _L("Enforce seam"); - m_desc["block_caption"] = _L("Right mouse button") + " "; + m_desc["block_caption"] = _L("Right mouse button") + ": "; m_desc["block"] = _L("Block seam"); m_desc["remove_caption"] = _L("Shift + Left mouse button") + ": "; m_desc["remove"] = _L("Remove selection"); From 32345b9e755da8f588ded92be4d05d18eb2b2218 Mon Sep 17 00:00:00 2001 From: Pascal de Bruijn <pmjdebruijn@pcode.nl> Date: Wed, 18 Nov 2020 18:40:20 +0100 Subject: [PATCH 050/138] creality.ini: make start_gcode robust for absolute_e --- resources/profiles/Creality.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index 1270b6f08..e911edb32 100644 --- a/resources/profiles/Creality.ini +++ b/resources/profiles/Creality.ini @@ -666,14 +666,14 @@ deretract_speed = 40 retract_before_wipe = 70% default_print_profile = 0.16mm OPTIMAL @CREALITY default_filament_profile = Creality PLA @CREALITY -start_gcode = G90 ; 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 ; home all\nG1 Z2 F240\nG1 X2 Y10 F3000\nG1 Z0.28 F240\nG92 E0.0\nG1 Y190 E15.0 F1500.0 ; intro line\nG1 X2.3 F5000\nG1 Y10 E15.0 F1200.0 ; intro line\nG92 E0.0 +start_gcode = G90 ; 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 ; home all\nG1 Z2 F240\nG1 X2 Y10 F3000\nG1 Z0.28 F240\nG92 E0\nG1 Y190 E15 F1500 ; intro line\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E15 F1200 ; intro line\nG92 E0 end_gcode = M104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+5, max_print_height)} F600{endif} ; Move print head up\nG1 X5 Y170 F3000 ; present print\n{if layer_z < max_print_height-10}G1 Z{z_offset+min(layer_z+70, max_print_height-10)} F600{endif} ; Move print head up\nM84 X Y E ; disable motors [printer:*fastabl*] -start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set extruder temp for auto bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nG28 ; home all\nG29 ; auto bed levelling\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[first_layer_temperature] ; set extruder temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG1 Z0.28 F240\nG92 E0.0\nG1 Y190 E15.0 F1500.0 ; intro line\nG1 X2.3 F5000\nG1 Y10 E15.0 F1200.0 ; intro line\nG92 E0.0 +start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set extruder temp for auto bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nG28 ; home all\nG29 ; auto bed levelling\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[first_layer_temperature] ; set extruder temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG1 Z0.28 F240\nG92 E0\nG1 Y190 E15 F1500 ; intro line\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E15 F1200 ; intro line\nG92 E0 [printer:*slowabl*] -start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set extruder temp for auto bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG28 ; home all\nG29 ; auto bed levelling\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[first_layer_temperature] ; set extruder temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG1 Z0.28 F240\nG92 E0.0\nG1 Y190 E15.0 F1500.0 ; intro line\nG1 X2.3 F5000\nG1 Y10 E15.0 F1200.0 ; intro line\nG92 E0.0 +start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set extruder temp for auto bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG28 ; home all\nG29 ; auto bed levelling\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[first_layer_temperature] ; set extruder temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG1 Z0.28 F240\nG92 E0\nG1 Y190 E15 F1500 ; intro line\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E15 F1200 ; intro line\nG92 E0 [printer:*invertedz*] end_gcode = M104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+5, max_print_height)} F600{endif} ; Move print bed down\nG1 X50 Y50 F3000 ; present print\n{if layer_z < max_print_height-10}G1 Z{z_offset+max_print_height-10} F600{endif} ; Move print bed down\nM84 X Y E ; disable motors @@ -706,7 +706,7 @@ bed_shape = 0x0,150x0,150x150,0x150 printer_model = ENDER2 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_CREALITY\nPRINTER_MODEL_ENDER2\nPRINTER_HAS_BOWDEN max_print_height = 200 -start_gcode = G90 ; 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 ; home all\nG1 Z2 F240\nG1 X2 Y10 F3000\nG1 Z0.28 F240\nG92 E0.0\nG1 X15 Y135 E15.0 F1500.0 ; intro line\nG1 X2.3 F5000\nG1 Y10 E15.0 F1200.0 ; intro line\nG92 E0.0 +start_gcode = G90 ; 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 ; home all\nG1 Z2 F240\nG1 X2 Y10 F3000\nG1 Z0.28 F240\nG92 E0\nG1 X15 Y135 E15 F1500 ; intro line\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E15 F1200 ; intro line\nG92 E0 end_gcode = M104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+5, max_print_height)} F600{endif} ; Move print head up\nG1 X5 Y140 F3000 ; present print\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)} F600{endif} ; Move print head up\nM84 X Y E ; disable motors [printer:Creality CR-10 Mini] From ef9cea76c2639e7ad8ebbbed9e6f85c18a272308 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Thu, 19 Nov 2020 12:29:19 +0100 Subject: [PATCH 051/138] ENABLE_GCODE_VIEWER set as default in: GLCanvas3D hpp/cpp GUI_Preview hpp/cpp --- src/slic3r/GUI/GLCanvas3D.cpp | 1183 ++------------------------------ src/slic3r/GUI/GLCanvas3D.hpp | 119 ---- src/slic3r/GUI/GUI_Preview.cpp | 525 +------------- src/slic3r/GUI/GUI_Preview.hpp | 78 +-- 4 files changed, 70 insertions(+), 1835 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index f6ec0bd58..cd82878c2 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -352,20 +352,16 @@ bool GLCanvas3D::LayersEditing::is_initialized() const std::string GLCanvas3D::LayersEditing::get_tooltip(const GLCanvas3D& canvas) const { std::string ret; - if (m_enabled && (m_layer_height_profile.size() >= 4)) - { + if (m_enabled && m_layer_height_profile.size() >= 4) { float z = get_cursor_z_relative(canvas); - if (z != -1000.0f) - { + if (z != -1000.0f) { z *= m_object_max_z; float h = 0.0f; - for (size_t i = m_layer_height_profile.size() - 2; i >= 2; i -= 2) - { + for (size_t i = m_layer_height_profile.size() - 2; i >= 2; i -= 2) { float zi = m_layer_height_profile[i]; float zi_1 = m_layer_height_profile[i - 2]; - if ((zi_1 <= z) && (z <= zi)) - { + if (zi_1 <= z && z <= zi) { float dz = zi - zi_1; h = (dz != 0.0f) ? lerp(m_layer_height_profile[i - 1], m_layer_height_profile[i + 1], (z - zi_1) / dz) : m_layer_height_profile[i + 1]; break; @@ -809,11 +805,9 @@ bool GLCanvas3D::WarningTexture::generate(const std::string& msg_utf8, const GLC // prepare buffer std::vector<unsigned char> data(4 * m_width * m_height, 0); const unsigned char *src = image.GetData(); - for (int h = 0; h < m_height; ++h) - { + for (int h = 0; h < m_height; ++h) { unsigned char* dst = data.data() + 4 * h * m_width; - for (int w = 0; w < m_width; ++w) - { + for (int w = 0; w < m_width; ++w) { *dst++ = 255; if (red_colored) { *dst++ = 72; // 204 @@ -848,8 +842,7 @@ void GLCanvas3D::WarningTexture::render(const GLCanvas3D& canvas) const if (m_warnings.empty()) return; - if ((m_id > 0) && (m_original_width > 0) && (m_original_height > 0) && (m_width > 0) && (m_height > 0)) - { + if (m_id > 0 && m_original_width > 0 && m_original_height > 0 && m_width > 0 && m_height > 0) { const Size& cnv_size = canvas.get_canvas_size(); float inv_zoom = (float)wxGetApp().plater()->get_camera().get_inv_zoom(); float left = (-0.5f * (float)m_original_width) * inv_zoom; @@ -880,367 +873,6 @@ void GLCanvas3D::WarningTexture::msw_rescale(const GLCanvas3D& canvas) generate(m_msg_text, canvas, true, m_is_colored_red); } -#if !ENABLE_GCODE_VIEWER -const unsigned char GLCanvas3D::LegendTexture::Squares_Border_Color[3] = { 64, 64, 64 }; -const unsigned char GLCanvas3D::LegendTexture::Default_Background_Color[3] = { (unsigned char)(DEFAULT_BG_LIGHT_COLOR[0] * 255.0f), (unsigned char)(DEFAULT_BG_LIGHT_COLOR[1] * 255.0f), (unsigned char)(DEFAULT_BG_LIGHT_COLOR[2] * 255.0f) }; -const unsigned char GLCanvas3D::LegendTexture::Error_Background_Color[3] = { (unsigned char)(ERROR_BG_LIGHT_COLOR[0] * 255.0f), (unsigned char)(ERROR_BG_LIGHT_COLOR[1] * 255.0f), (unsigned char)(ERROR_BG_LIGHT_COLOR[2] * 255.0f) }; -const unsigned char GLCanvas3D::LegendTexture::Opacity = 255; - -GLCanvas3D::LegendTexture::LegendTexture() - : GUI::GLTexture() - , m_original_width(0) - , m_original_height(0) -{ -} - -void GLCanvas3D::LegendTexture::fill_color_print_legend_items( const GLCanvas3D& canvas, - const std::vector<float>& colors_in, - std::vector<float>& colors, - std::vector<std::string>& cp_legend_items) -{ - std::vector<CustomGCode::Item> custom_gcode_per_print_z = wxGetApp().plater()->model().custom_gcode_per_print_z.gcodes; - - const int extruders_cnt = wxGetApp().extruders_edited_cnt(); - if (extruders_cnt == 1) - { - if (custom_gcode_per_print_z.empty()) { - cp_legend_items.emplace_back(I18N::translate_utf8(L("Default print color"))); - colors = colors_in; - return; - } - std::vector<std::pair<double, double>> cp_values; - cp_values.reserve(custom_gcode_per_print_z.size()); - - std::vector<double> print_zs = canvas.get_current_print_zs(true); - for (auto custom_code : custom_gcode_per_print_z) - { - if (custom_code.type != CustomGCode::ColorChange) - continue; - auto lower_b = std::lower_bound(print_zs.begin(), print_zs.end(), custom_code.print_z - Slic3r::DoubleSlider::epsilon()); - - if (lower_b == print_zs.end()) - continue; - - double current_z = *lower_b; - double previous_z = lower_b == print_zs.begin() ? 0.0 : *(--lower_b); - - // to avoid duplicate values, check adding values - if (cp_values.empty() || - !(cp_values.back().first == previous_z && cp_values.back().second == current_z)) - cp_values.emplace_back(std::pair<double, double>(previous_z, current_z)); - } - - const auto items_cnt = (int)cp_values.size(); - if (items_cnt == 0) // There is no one color change, but there is/are some pause print or custom Gcode - { - cp_legend_items.emplace_back(I18N::translate_utf8(L("Default print color"))); - cp_legend_items.emplace_back(I18N::translate_utf8(L("Pause print or custom G-code"))); - colors = colors_in; - return; - } - - const int color_cnt = (int)colors_in.size() / 4; - colors.resize(colors_in.size(), 0.0); - - ::memcpy((void*)(colors.data()), (const void*)(colors_in.data() + (color_cnt - 1) * 4), 4 * sizeof(float)); - cp_legend_items.emplace_back(I18N::translate_utf8(L("Pause print or custom G-code"))); - size_t color_pos = 4; - - for (int i = items_cnt; i >= 0; --i, color_pos+=4) - { - // update colors for color print item - ::memcpy((void*)(colors.data() + color_pos), (const void*)(colors_in.data() + i * 4), 4 * sizeof(float)); - - // create label for color print item - std::string id_str = std::to_string(i + 1) + ": "; - - if (i == 0) { - cp_legend_items.emplace_back(id_str + (boost::format(I18N::translate_utf8(L("up to %.2f mm"))) % cp_values[0].first).str()); - break; - } - if (i == items_cnt) { - cp_legend_items.emplace_back(id_str + (boost::format(I18N::translate_utf8(L("above %.2f mm"))) % cp_values[i - 1].second).str()); - continue; - } - - cp_legend_items.emplace_back(id_str + (boost::format(I18N::translate_utf8(L("%.2f - %.2f mm"))) % cp_values[i - 1].second % cp_values[i].first).str()); - } - } - else - { - // colors = colors_in; - const int color_cnt = (int)colors_in.size() / 4; - colors.resize(colors_in.size(), 0.0); - - ::memcpy((void*)(colors.data()), (const void*)(colors_in.data()), 4 * extruders_cnt * sizeof(float)); - size_t color_pos = 4 * extruders_cnt; - size_t color_in_pos = 4 * (color_cnt - 1); - - for (unsigned int i = 0; i < (unsigned int)extruders_cnt; ++i) - cp_legend_items.emplace_back((boost::format(I18N::translate_utf8(L("Extruder %d"))) % (i + 1)).str()); - - ::memcpy((void*)(colors.data() + color_pos), (const void*)(colors_in.data() + color_in_pos), 4 * sizeof(float)); - color_pos += 4; - color_in_pos -= 4; - cp_legend_items.emplace_back(I18N::translate_utf8(L("Pause print or custom G-code"))); - - int cnt = custom_gcode_per_print_z.size(); - int color_change_idx = color_cnt - extruders_cnt; - for (int i = cnt-1; i >= 0; --i) - if (custom_gcode_per_print_z[i].type == CustomGCode::ColorChange) { - ::memcpy((void*)(colors.data() + color_pos), (const void*)(colors_in.data() + color_in_pos), 4 * sizeof(float)); - color_pos += 4; - color_in_pos -= 4; - - // create label for color change item - std::string id_str = std::to_string(color_change_idx--) + ": "; - - cp_legend_items.emplace_back(id_str + (boost::format(I18N::translate_utf8(L("Color change for Extruder %d at %.2f mm"))) % custom_gcode_per_print_z[i].extruder % custom_gcode_per_print_z[i].print_z).str()); - } - } -} - -bool GLCanvas3D::LegendTexture::generate(const GCodePreviewData& preview_data, const std::vector<float>& tool_colors_in, const GLCanvas3D& canvas, bool compress) -{ - reset(); - - // collects items to render - auto title = _(preview_data.get_legend_title()); - - std::vector<std::string> cp_legend_items; - std::vector<float> cp_colors; - - if (preview_data.extrusion.view_type == GCodePreviewData::Extrusion::ColorPrint) - { - cp_legend_items.reserve(cp_colors.size()); - fill_color_print_legend_items(canvas, tool_colors_in, cp_colors, cp_legend_items); - } - - const std::vector<float>& tool_colors = preview_data.extrusion.view_type == GCodePreviewData::Extrusion::ColorPrint ? cp_colors : tool_colors_in; - const GCodePreviewData::LegendItemsList& items = preview_data.get_legend_items(tool_colors, cp_legend_items); - - unsigned int items_count = (unsigned int)items.size(); - if (items_count == 0) - // nothing to render, return - return false; - - wxMemoryDC memDC; - wxMemoryDC mask_memDC; - - // calculate scaling - const float scale_gl = canvas.get_canvas_size().get_scale_factor(); -#if ENABLE_RETINA_GL - // For non-visible or non-created window getBackingScaleFactor function return 0.0 value. - // And using of the zero scale causes a crash, when we trying to draw text to the (0,0) rectangle - if (scale_gl <= 0.0f) - return false; -#endif - const float scale = scale_gl * wxGetApp().em_unit()*0.1; // get scale from em_unit() value, because of get_scale_factor() return 1 - const int scaled_square = std::floor((float)Px_Square * scale); - const int scaled_title_offset = Px_Title_Offset * scale; - const int scaled_text_offset = Px_Text_Offset * scale; - const int scaled_square_contour = Px_Square_Contour * scale; - const int scaled_border = Px_Border * scale; - -#ifdef __WXMSW__ - // set scaled application normal font as default font - wxFont font = wxGetApp().normal_font(); - - // Disabling ClearType works, but the font returned is very different (much thicker) from the default. -// msw_disable_cleartype(font); -// bool cleartype = is_font_cleartype(font); -#else - // select default font - wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Scale(scale_gl); -// bool cleartype = false; -#endif /* __WXMSW__ */ - - memDC.SetFont(font); - mask_memDC.SetFont(font); - - // calculates texture size - wxCoord w, h; - memDC.GetTextExtent(title, &w, &h); - int title_width = (int)w; - int title_height = (int)h; - - int max_text_width = 0; - int max_text_height = 0; - for (const GCodePreviewData::LegendItem& item : items) - { - memDC.GetTextExtent(GUI::from_u8(item.text), &w, &h); - max_text_width = std::max(max_text_width, (int)w); - max_text_height = std::max(max_text_height, (int)h); - } - - m_original_width = std::max(2 * scaled_border + title_width, 2 * (scaled_border + scaled_square_contour) + scaled_square + scaled_text_offset + max_text_width); - m_original_height = 2 * (scaled_border + scaled_square_contour) + title_height + scaled_title_offset + items_count * scaled_square; - if (items_count > 1) - m_original_height += (items_count - 1) * scaled_square_contour; - - m_width = (int)next_highest_power_of_2((uint32_t)m_original_width); - m_height = (int)next_highest_power_of_2((uint32_t)m_original_height); - - // generates bitmap - wxBitmap bitmap(m_width, m_height); - wxBitmap mask(m_width, m_height); - - memDC.SelectObject(bitmap); - mask_memDC.SelectObject(mask); - - memDC.SetBackground(wxBrush(*wxBLACK)); - mask_memDC.SetBackground(wxBrush(*wxBLACK)); - - memDC.Clear(); - mask_memDC.Clear(); - - // draw title - memDC.SetTextForeground(*wxWHITE); - mask_memDC.SetTextForeground(*wxRED); - - int title_x = scaled_border; - int title_y = scaled_border; - memDC.DrawText(title, title_x, title_y); - mask_memDC.DrawText(title, title_x, title_y); - - // draw icons contours as background - int squares_contour_x = scaled_border; - int squares_contour_y = scaled_border + title_height + scaled_title_offset; - int squares_contour_width = scaled_square + 2 * scaled_square_contour; - int squares_contour_height = items_count * scaled_square + 2 * scaled_square_contour; - if (items_count > 1) - squares_contour_height += (items_count - 1) * scaled_square_contour; - - wxColour color(Squares_Border_Color[0], Squares_Border_Color[1], Squares_Border_Color[2]); - wxPen pen(color); - wxBrush brush(color); - memDC.SetPen(pen); - memDC.SetBrush(brush); - memDC.DrawRectangle(wxRect(squares_contour_x, squares_contour_y, squares_contour_width, squares_contour_height)); - - // draw items (colored icon + text) - int icon_x = squares_contour_x + scaled_square_contour; - int icon_x_inner = icon_x + 1; - int icon_y = squares_contour_y + scaled_square_contour; - int icon_y_step = scaled_square + scaled_square_contour; - - int text_x = icon_x + scaled_square + scaled_text_offset; - int text_y_offset = (scaled_square - max_text_height) / 2; - - int px_inner_square = scaled_square - 2; - - for (const GCodePreviewData::LegendItem& item : items) - { - // draw darker icon perimeter - const std::vector<unsigned char>& item_color_bytes = item.color.as_bytes(); - wxImage::HSVValue dark_hsv = wxImage::RGBtoHSV(wxImage::RGBValue(item_color_bytes[0], item_color_bytes[1], item_color_bytes[2])); - dark_hsv.value *= 0.75; - wxImage::RGBValue dark_rgb = wxImage::HSVtoRGB(dark_hsv); - color.Set(dark_rgb.red, dark_rgb.green, dark_rgb.blue, item_color_bytes[3]); - pen.SetColour(color); - brush.SetColour(color); - memDC.SetPen(pen); - memDC.SetBrush(brush); - memDC.DrawRectangle(wxRect(icon_x, icon_y, scaled_square, scaled_square)); - - // draw icon interior - color.Set(item_color_bytes[0], item_color_bytes[1], item_color_bytes[2], item_color_bytes[3]); - pen.SetColour(color); - brush.SetColour(color); - memDC.SetPen(pen); - memDC.SetBrush(brush); - memDC.DrawRectangle(wxRect(icon_x_inner, icon_y + 1, px_inner_square, px_inner_square)); - - // draw text - mask_memDC.DrawText(GUI::from_u8(item.text), text_x, icon_y + text_y_offset); - - // update y - icon_y += icon_y_step; - } - - memDC.SelectObject(wxNullBitmap); - mask_memDC.SelectObject(wxNullBitmap); - - // Convert the bitmap into a linear data ready to be loaded into the GPU. - wxImage image = bitmap.ConvertToImage(); - wxImage mask_image = mask.ConvertToImage(); - - // prepare buffer - std::vector<unsigned char> data(4 * m_width * m_height, 0); - const unsigned char *src_image = image.GetData(); - const unsigned char *src_mask = mask_image.GetData(); - for (int h = 0; h < m_height; ++h) - { - int hh = h * m_width; - unsigned char* px_ptr = data.data() + 4 * hh; - for (int w = 0; w < m_width; ++w) - { - if (w >= squares_contour_x && w < squares_contour_x + squares_contour_width && - h >= squares_contour_y && h < squares_contour_y + squares_contour_height) { - // Color palette, use the color verbatim. - *px_ptr++ = *src_image++; - *px_ptr++ = *src_image++; - *px_ptr++ = *src_image++; - *px_ptr++ = 255; - } else { - // Text or background - unsigned char alpha = *src_mask; - // Compensate the white color for the 50% opacity reduction at the character edges. - //unsigned char color = (unsigned char)floor(alpha * 255.f / (128.f + 0.5f * alpha)); - unsigned char color = alpha; - *px_ptr++ = color; - *px_ptr++ = color; // *src_mask ++; - *px_ptr++ = color; // *src_mask ++; - *px_ptr++ = 128 + (alpha / 2); // (alpha > 0) ? 255 : 128; - src_image += 3; - } - src_mask += 3; - } - } - - // sends buffer to gpu - glsafe(::glPixelStorei(GL_UNPACK_ALIGNMENT, 1)); - glsafe(::glGenTextures(1, &m_id)); - glsafe(::glBindTexture(GL_TEXTURE_2D, (GLuint)m_id)); - if (compress && GLEW_EXT_texture_compression_s3tc) - glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data())); - else - glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data())); - glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); - glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); - glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0)); - glsafe(::glBindTexture(GL_TEXTURE_2D, 0)); - - return true; -} - -void GLCanvas3D::LegendTexture::render(const GLCanvas3D& canvas) const -{ - if ((m_id > 0) && (m_original_width > 0) && (m_original_height > 0) && (m_width > 0) && (m_height > 0)) - { - const Size& cnv_size = canvas.get_canvas_size(); - float inv_zoom = (float)wxGetApp().plater()->get_camera().get_inv_zoom(); - float left = (-0.5f * (float)cnv_size.get_width()) * inv_zoom; - float top = (0.5f * (float)cnv_size.get_height()) * inv_zoom; - float right = left + (float)m_original_width * inv_zoom; - float bottom = top - (float)m_original_height * inv_zoom; - - float uv_left = 0.0f; - float uv_top = 0.0f; - float uv_right = (float)m_original_width / (float)m_width; - float uv_bottom = (float)m_original_height / (float)m_height; - - GLTexture::Quad_UVs uvs; - uvs.left_top = { uv_left, uv_top }; - uvs.left_bottom = { uv_left, uv_bottom }; - uvs.right_bottom = { uv_right, uv_bottom }; - uvs.right_top = { uv_right, uv_top }; - - GLTexture::render_sub_texture(m_id, left, right, bottom, top, uvs); - } -} -#endif // !ENABLE_GCODE_VIEWER - void GLCanvas3D::Labels::render(const std::vector<const ModelInstance*>& sorted_instances) const { if (!m_enabled || !is_shown()) @@ -1355,8 +987,7 @@ void GLCanvas3D::Labels::render(const std::vector<const ModelInstance*>& sorted_ ImGui::AlignTextToFramePadding(); imgui.text(owner.label); - if (!owner.print_order.empty()) - { + if (!owner.print_order.empty()) { ImGui::Separator(); float po_len = imgui.calc_text_size(owner.print_order).x; ImGui::SetCursorPosX(0.5f * (win_w - po_len)); @@ -1378,8 +1009,7 @@ void GLCanvas3D::Tooltip::set_text(const std::string& text) { // If the mouse is inside an ImGUI dialog, then the tooltip is suppressed. const std::string &new_text = m_in_imgui ? std::string() : text; - if (m_text != new_text) - { + if (m_text != new_text) { if (m_text.empty()) m_start_time = std::chrono::steady_clock::now(); @@ -1448,11 +1078,7 @@ wxDEFINE_EVENT(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_UPDATE_BED_SHAPE, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_TAB, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_RESETGIZMOS, SimpleEvent); -#if ENABLE_GCODE_VIEWER wxDEFINE_EVENT(EVT_GLCANVAS_MOVE_LAYERS_SLIDER, wxKeyEvent); -#else -wxDEFINE_EVENT(EVT_GLCANVAS_MOVE_DOUBLE_SLIDER, wxKeyEvent); -#endif // ENABLE_GCODE_VIEWER wxDEFINE_EVENT(EVT_GLCANVAS_EDIT_COLOR_CHANGE, wxKeyEvent); wxDEFINE_EVENT(EVT_GLCANVAS_JUMP_TO, wxKeyEvent); wxDEFINE_EVENT(EVT_GLCANVAS_UNDO, SimpleEvent); @@ -1484,9 +1110,6 @@ GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas) , m_dirty(true) , m_initialized(false) , m_apply_zoom_to_volumes_filter(false) -#if !ENABLE_GCODE_VIEWER - , m_legend_texture_enabled(false) -#endif // !ENABLE_GCODE_VIEWER , m_picking_enabled(false) , m_moving_enabled(false) , m_dynamic_background_enabled(false) @@ -1684,12 +1307,10 @@ void GLCanvas3D::toggle_model_objects_visibility(bool visible, const ModelObject void GLCanvas3D::update_instance_printable_state_for_object(const size_t obj_idx) { ModelObject* model_object = m_model->objects[obj_idx]; - for (int inst_idx = 0; inst_idx < (int)model_object->instances.size(); ++inst_idx) - { + for (int inst_idx = 0; inst_idx < (int)model_object->instances.size(); ++inst_idx) { ModelInstance* instance = model_object->instances[inst_idx]; - for (GLVolume* volume : m_volumes.volumes) - { + for (GLVolume* volume : m_volumes.volumes) { if ((volume->object_idx() == (int)obj_idx) && (volume->instance_idx() == inst_idx)) volume->printable = instance->printable; } @@ -1739,8 +1360,7 @@ void GLCanvas3D::refresh_camera_scene_box() BoundingBoxf3 GLCanvas3D::volumes_bounding_box() const { BoundingBoxf3 bb; - for (const GLVolume* volume : m_volumes.volumes) - { + for (const GLVolume* volume : m_volumes.volumes) { if (!m_apply_zoom_to_volumes_filter || ((volume != nullptr) && volume->zoom_to_volumes)) bb.merge(volume->transformed_bounding_box()); } @@ -1751,8 +1371,7 @@ BoundingBoxf3 GLCanvas3D::scene_bounding_box() const { BoundingBoxf3 bb = volumes_bounding_box(); bb.merge(wxGetApp().plater()->get_bed().get_bounding_box(true)); - if (m_config != nullptr) - { + if (m_config != nullptr) { double h = m_config->opt_float("max_print_height"); bb.min(2) = std::min(bb.min(2), -h); bb.max(2) = std::max(bb.max(2), h); @@ -1773,7 +1392,7 @@ bool GLCanvas3D::is_layers_editing_allowed() const void GLCanvas3D::reset_layer_height_profile() { - wxGetApp().plater()->take_snapshot(_(L("Variable layer height - Reset"))); + wxGetApp().plater()->take_snapshot(_L("Variable layer height - Reset")); m_layers_editing.reset_layer_height_profile(*this); m_layers_editing.state = LayersEditing::Completed; m_dirty = true; @@ -1781,7 +1400,7 @@ void GLCanvas3D::reset_layer_height_profile() void GLCanvas3D::adaptive_layer_height_profile(float quality_factor) { - wxGetApp().plater()->take_snapshot(_(L("Variable layer height - Adaptive"))); + wxGetApp().plater()->take_snapshot(_L("Variable layer height - Adaptive")); m_layers_editing.adaptive_layer_height_profile(*this, quality_factor); m_layers_editing.state = LayersEditing::Completed; m_dirty = true; @@ -1789,7 +1408,7 @@ void GLCanvas3D::adaptive_layer_height_profile(float quality_factor) void GLCanvas3D::smooth_layer_height_profile(const HeightProfileSmoothingParams& smoothing_params) { - wxGetApp().plater()->take_snapshot(_(L("Variable layer height - Smooth all"))); + wxGetApp().plater()->take_snapshot(_L("Variable layer height - Smooth all")); m_layers_editing.smooth_layer_height_profile(*this, smoothing_params); m_layers_editing.state = LayersEditing::Completed; m_dirty = true; @@ -1804,8 +1423,7 @@ void GLCanvas3D::enable_layers_editing(bool enable) { m_layers_editing.set_enabled(enable); const Selection::IndicesList& idxs = m_selection.get_volume_idxs(); - for (unsigned int idx : idxs) - { + for (unsigned int idx : idxs) { GLVolume* v = m_volumes.volumes[idx]; if (v->is_modifier) v->force_transparent = enable; @@ -1816,11 +1434,7 @@ void GLCanvas3D::enable_layers_editing(bool enable) void GLCanvas3D::enable_legend_texture(bool enable) { -#if ENABLE_GCODE_VIEWER m_gcode_viewer.enable_legend(enable); -#else - m_legend_texture_enabled = enable; -#endif // ENABLE_GCODE_VIEWER } void GLCanvas3D::enable_picking(bool enable) @@ -1882,12 +1496,10 @@ void GLCanvas3D::zoom_to_selection() _zoom_to_box(m_selection.get_bounding_box()); } -#if ENABLE_GCODE_VIEWER void GLCanvas3D::zoom_to_gcode() { _zoom_to_box(m_gcode_viewer.get_paths_bounding_box(), 1.05); } -#endif // ENABLE_GCODE_VIEWER void GLCanvas3D::select_view(const std::string& direction) { @@ -1904,8 +1516,7 @@ void GLCanvas3D::update_volumes_colors_by_extruder() void GLCanvas3D::render() { - if (m_in_render) - { + if (m_in_render) { // if called recursively, return m_dirty = true; return; @@ -1929,17 +1540,14 @@ void GLCanvas3D::render() auto start_time = std::chrono::high_resolution_clock::now(); #endif // ENABLE_RENDER_STATISTICS - if (wxGetApp().plater()->get_bed().get_shape().empty()) - { + if (wxGetApp().plater()->get_bed().get_shape().empty()) { // this happens at startup when no data is still saved under <>\AppData\Roaming\Slic3rPE post_event(SimpleEvent(EVT_GLCANVAS_UPDATE_BED_SHAPE)); return; } #if ENABLE_ENVIRONMENT_MAP -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) -#endif // ENABLE_GCODE_VIEWER wxGetApp().plater()->init_environment_texture(); #endif // ENABLE_ENVIRONMENT_MAP @@ -1951,8 +1559,7 @@ void GLCanvas3D::render() Camera& camera = wxGetApp().plater()->get_camera(); camera.apply_viewport(0, 0, std::max(10u, (unsigned int)cnv_size.get_width()), std::max(10u, (unsigned int)cnv_size.get_height())); - if (camera.requires_zoom_to_bed) - { + if (camera.requires_zoom_to_bed) { zoom_to_bed(); _resize((unsigned int)cnv_size.get_width(), (unsigned int)cnv_size.get_height()); camera.requires_zoom_to_bed = false; @@ -1968,8 +1575,7 @@ void GLCanvas3D::render() wxGetApp().imgui()->new_frame(); - if (m_picking_enabled) - { + if (m_picking_enabled) { if (m_rectangle_selection.is_dragging()) // picking pass using rectangle selection _rectangular_selection_picking_pass(); @@ -1979,18 +1585,15 @@ void GLCanvas3D::render() } #if ENABLE_RENDER_PICKING_PASS - if (!m_picking_enabled || !m_show_picking_texture) - { + if (!m_picking_enabled || !m_show_picking_texture) { #endif // ENABLE_RENDER_PICKING_PASS // draw scene glsafe(::glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); _render_background(); _render_objects(); -#if ENABLE_GCODE_VIEWER if (!m_main_toolbar.is_enabled()) _render_gcode(); -#endif // ENABLE_GCODE_VIEWER _render_sla_slices(); _render_selection(); _render_bed(!camera.is_looking_downward(), true); @@ -2002,10 +1605,8 @@ void GLCanvas3D::render() // we need to set the mouse's scene position here because the depth buffer // could be invalidated by the following gizmo render methods // this position is used later into on_mouse() to drag the objects -#if ENABLE_GCODE_VIEWER if (m_picking_enabled) -#endif // ENABLE_GCODE_VIEWER - m_mouse.scene_position = _mouse_to_3d(m_mouse.position.cast<coord_t>()); + m_mouse.scene_position = _mouse_to_3d(m_mouse.position.cast<coord_t>()); _render_current_gizmo(); _render_selection_sidebar_hints(); @@ -2051,8 +1652,7 @@ void GLCanvas3D::render() // Negative coordinate means out of the window, likely because the window was deactivated. // In that case the tooltip should be hidden. - if (m_mouse.position.x() >= 0. && m_mouse.position.y() >= 0.) - { + if (m_mouse.position.x() >= 0. && m_mouse.position.y() >= 0.) { if (tooltip.empty()) tooltip = m_layers_editing.get_tooltip(*this); @@ -2126,10 +1726,8 @@ void GLCanvas3D::ensure_on_bed(unsigned int object_idx) typedef std::map<std::pair<int, int>, double> InstancesToZMap; InstancesToZMap instances_min_z; - for (GLVolume* volume : m_volumes.volumes) - { - if ((volume->object_idx() == (int)object_idx) && !volume->is_modifier) - { + for (GLVolume* volume : m_volumes.volumes) { + if (volume->object_idx() == (int)object_idx && !volume->is_modifier) { double min_z = volume->transformed_convex_hull_bounding_box().min(2); std::pair<int, int> instance = std::make_pair(volume->object_idx(), volume->instance_idx()); InstancesToZMap::iterator it = instances_min_z.find(instance); @@ -2140,8 +1738,7 @@ void GLCanvas3D::ensure_on_bed(unsigned int object_idx) } } - for (GLVolume* volume : m_volumes.volumes) - { + for (GLVolume* volume : m_volumes.volumes) { std::pair<int, int> instance = std::make_pair(volume->object_idx(), volume->instance_idx()); InstancesToZMap::iterator it = instances_min_z.find(instance); if (it != instances_min_z.end()) @@ -2150,7 +1747,6 @@ void GLCanvas3D::ensure_on_bed(unsigned int object_idx) } -#if ENABLE_GCODE_VIEWER const std::vector<double>& GLCanvas3D::get_gcode_layers_zs() const { return m_gcode_viewer.get_layers_zs(); @@ -2186,24 +1782,11 @@ void GLCanvas3D::set_toolpaths_z_range(const std::array<unsigned int, 2>& range) if (m_gcode_viewer.has_data()) m_gcode_viewer.set_layers_z_range(range); } -#else -std::vector<double> GLCanvas3D::get_current_print_zs(bool active_only) const -{ - return m_volumes.get_current_print_zs(active_only); -} - -void GLCanvas3D::set_toolpaths_range(double low, double high) -{ - m_volumes.set_range(low, high); -} -#endif // ENABLE_GCODE_VIEWER std::vector<int> GLCanvas3D::load_object(const ModelObject& model_object, int obj_idx, std::vector<int> instance_idxs) { - if (instance_idxs.empty()) - { - for (unsigned int i = 0; i < model_object.instances.size(); ++i) - { + if (instance_idxs.empty()) { + for (unsigned int i = 0; i < model_object.instances.size(); ++i) { instance_idxs.emplace_back(i); } } @@ -2212,8 +1795,7 @@ std::vector<int> GLCanvas3D::load_object(const ModelObject& model_object, int ob std::vector<int> GLCanvas3D::load_object(const Model& model, int obj_idx) { - if ((0 <= obj_idx) && (obj_idx < (int)model.objects.size())) - { + if (0 <= obj_idx && obj_idx < (int)model.objects.size()) { const ModelObject* model_object = model.objects[obj_idx]; if (model_object != nullptr) return load_object(*model_object, obj_idx, std::vector<int>()); @@ -2237,7 +1819,7 @@ void GLCanvas3D::mirror_selection(Axis axis) // 5) Out of bed collision status & message overlay (texture) void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_refresh) { - if ((m_canvas == nullptr) || (m_config == nullptr) || (m_model == nullptr)) + if (m_canvas == nullptr || m_config == nullptr || m_model == nullptr) return; if (!m_initialized) @@ -2536,16 +2118,14 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re volume->set_sla_shift_z(shift_zs[volume->object_idx()]); } - if (printer_technology == ptFFF && m_config->has("nozzle_diameter")) - { + if (printer_technology == ptFFF && m_config->has("nozzle_diameter")) { // Should the wipe tower be visualized ? unsigned int extruders_count = (unsigned int)dynamic_cast<const ConfigOptionFloats*>(m_config->option("nozzle_diameter"))->values.size(); bool wt = dynamic_cast<const ConfigOptionBool*>(m_config->option("wipe_tower"))->value; bool co = dynamic_cast<const ConfigOptionBool*>(m_config->option("complete_objects"))->value; - if ((extruders_count > 1) && wt && !co) - { + if ((extruders_count > 1) && wt && !co) { // Height of a print (Show at least a slab) double height = std::max(m_model->bounding_box().max(2), 10.0); @@ -2586,8 +2166,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); // checks for geometry outside the print volume to render it accordingly - if (!m_volumes.empty()) - { + if (!m_volumes.empty()) { ModelInstanceEPrintVolumeState state; const bool contained_min_one = m_volumes.check_outside_state(m_config, &state); @@ -2600,8 +2179,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re post_event(Event<bool>(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, contained_min_one && !m_model->objects.empty() && state != ModelInstancePVS_Partly_Outside)); } - else - { + else { _set_warning_texture(WarningTexture::ObjectOutside, false); _set_warning_texture(WarningTexture::ObjectClashed, false); _set_warning_texture(WarningTexture::SlaSupportsOutside, false); @@ -2610,8 +2188,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re refresh_camera_scene_box(); - if (m_selection.is_empty()) - { + if (m_selection.is_empty()) { // If no object is selected, deactivate the active gizmo, if any // Otherwise it may be shown after cleaning the scene (if it was active while the objects were deleted) m_gizmos.reset_all_states(); @@ -2642,40 +2219,6 @@ static void reserve_new_volume_finalize_old_volume(GLVolume& vol_new, GLVolume& vol_old.finalize_geometry(gl_initialized); } -#if !ENABLE_GCODE_VIEWER -static void load_gcode_retractions(const GCodePreviewData::Retraction& retractions, GLCanvas3D::GCodePreviewVolumeIndex::EType extrusion_type, GLVolumeCollection &volumes, GLCanvas3D::GCodePreviewVolumeIndex &volume_index, bool gl_initialized) -{ - // nothing to render, return - if (retractions.positions.empty()) - return; - - volume_index.first_volumes.emplace_back(extrusion_type, 0, (unsigned int)volumes.volumes.size()); - - GLVolume *volume = volumes.new_nontoolpath_volume(retractions.color.rgba.data(), VERTEX_BUFFER_RESERVE_SIZE); - - GCodePreviewData::Retraction::PositionsList copy(retractions.positions); - std::sort(copy.begin(), copy.end(), [](const GCodePreviewData::Retraction::Position& p1, const GCodePreviewData::Retraction::Position& p2) { return p1.position(2) < p2.position(2); }); - - for (const GCodePreviewData::Retraction::Position& position : copy) - { - volume->print_zs.emplace_back(unscale<double>(position.position(2))); - volume->offsets.emplace_back(volume->indexed_vertex_array.quad_indices.size()); - volume->offsets.emplace_back(volume->indexed_vertex_array.triangle_indices.size()); - - _3DScene::point3_to_verts(position.position, position.width, position.height, *volume); - - // Ensure that no volume grows over the limits. If the volume is too large, allocate a new one. - if (volume->indexed_vertex_array.vertices_and_normals_interleaved.size() > MAX_VERTEX_BUFFER_SIZE) { - GLVolume &vol = *volume; - volume = volumes.new_nontoolpath_volume(vol.color); - reserve_new_volume_finalize_old_volume(*volume, vol, gl_initialized); - } - } - volume->indexed_vertex_array.finalize_geometry(gl_initialized); -} -#endif // !ENABLE_GCODE_VIEWER - -#if ENABLE_GCODE_VIEWER void GLCanvas3D::load_gcode_preview(const GCodeProcessor::Result& gcode_result) { m_gcode_viewer.load(gcode_result, *this->fff_print(), m_initialized); @@ -2689,82 +2232,11 @@ void GLCanvas3D::refresh_gcode_preview(const GCodeProcessor::Result& gcode_resul set_as_dirty(); request_extra_frame(); } -#else -void GLCanvas3D::load_gcode_preview(const GCodePreviewData& preview_data, const std::vector<std::string>& str_tool_colors) -{ - const Print *print = this->fff_print(); - if ((m_canvas != nullptr) && (print != nullptr)) - { - _set_current(); - - std::vector<float> tool_colors = _parse_colors(str_tool_colors); - - if (m_volumes.empty()) - { - m_gcode_preview_volume_index.reset(); - - _load_gcode_extrusion_paths(preview_data, tool_colors); - _load_gcode_travel_paths(preview_data, tool_colors); - load_gcode_retractions(preview_data.retraction, GCodePreviewVolumeIndex::Retraction, m_volumes, m_gcode_preview_volume_index, m_initialized); - load_gcode_retractions(preview_data.unretraction, GCodePreviewVolumeIndex::Unretraction, m_volumes, m_gcode_preview_volume_index, m_initialized); - - if (!m_volumes.empty()) - { - // Remove empty volumes from both m_volumes, update m_gcode_preview_volume_index. - { - size_t idx_volume_src = 0; - size_t idx_volume_dst = 0; - size_t idx_volume_index_src = 0; - size_t idx_volume_index_dst = 0; - size_t idx_volume_of_this_type_last = (idx_volume_index_src + 1 == m_gcode_preview_volume_index.first_volumes.size()) ? m_volumes.volumes.size() : m_gcode_preview_volume_index.first_volumes[idx_volume_index_src + 1].id; - size_t idx_volume_of_this_type_first_new = 0; - for (;;) { - if (idx_volume_src == idx_volume_of_this_type_last) { - if (idx_volume_of_this_type_first_new < idx_volume_dst) { - // There are some volumes of this type left, therefore their entry in the index has to be maintained. - if (idx_volume_index_dst < idx_volume_index_src) - m_gcode_preview_volume_index.first_volumes[idx_volume_index_dst] = m_gcode_preview_volume_index.first_volumes[idx_volume_index_src]; - m_gcode_preview_volume_index.first_volumes[idx_volume_index_dst].id = idx_volume_of_this_type_first_new; - ++ idx_volume_index_dst; - } - if (idx_volume_of_this_type_last == m_volumes.volumes.size()) - break; - ++ idx_volume_index_src; - idx_volume_of_this_type_last = (idx_volume_index_src + 1 == m_gcode_preview_volume_index.first_volumes.size()) ? m_volumes.volumes.size() : m_gcode_preview_volume_index.first_volumes[idx_volume_index_src + 1].id; - idx_volume_of_this_type_first_new = idx_volume_dst; - if (idx_volume_src == idx_volume_of_this_type_last) - // Empty sequence of volumes for the current index item. - continue; - } - if (! m_volumes.volumes[idx_volume_src]->print_zs.empty()) - m_volumes.volumes[idx_volume_dst ++] = m_volumes.volumes[idx_volume_src]; - ++ idx_volume_src; - } - m_volumes.volumes.erase(m_volumes.volumes.begin() + idx_volume_dst, m_volumes.volumes.end()); - m_gcode_preview_volume_index.first_volumes.erase(m_gcode_preview_volume_index.first_volumes.begin() + idx_volume_index_dst, m_gcode_preview_volume_index.first_volumes.end()); - } - - _load_fff_shells(); - } - _update_toolpath_volumes_outside_state(); - } - - _update_gcode_volumes_visibility(preview_data); - _show_warning_texture_if_needed(WarningTexture::ToolpathOutside); - - if (m_volumes.empty()) - reset_legend_texture(); - else - _generate_legend_texture(preview_data, tool_colors); - } -} -#endif // ENABLE_GCODE_VIEWER void GLCanvas3D::load_sla_preview() { const SLAPrint* print = this->sla_print(); - if ((m_canvas != nullptr) && (print != nullptr)) - { + if (m_canvas != nullptr && print != nullptr) { _set_current(); // Release OpenGL data before generating new data. this->reset_volumes(); @@ -2792,16 +2264,6 @@ void GLCanvas3D::load_preview(const std::vector<std::string>& str_tool_colors, c _update_toolpath_volumes_outside_state(); _show_warning_texture_if_needed(WarningTexture::ToolpathOutside); -#if !ENABLE_GCODE_VIEWER - if (color_print_values.empty()) - reset_legend_texture(); - else { - auto preview_data = GCodePreviewData(); - preview_data.extrusion.view_type = GCodePreviewData::Extrusion::ColorPrint; - const std::vector<float> tool_colors = _parse_colors(str_tool_colors); - _generate_legend_texture(preview_data, tool_colors); - } -#endif // !ENABLE_GCODE_VIEWER } void GLCanvas3D::bind_event_handlers() @@ -3061,7 +2523,6 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) case 'i': { _update_camera_zoom(1.0); break; } case 'K': case 'k': { wxGetApp().plater()->get_camera().select_next_type(); m_dirty = true; break; } -#if ENABLE_GCODE_VIEWER case 'L': case 'l': { if (!m_main_toolbar.is_enabled()) { @@ -3071,7 +2532,6 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) } break; } -#endif // ENABLE_GCODE_VIEWER case 'O': case 'o': { _update_camera_zoom(-1.0); break; } #if ENABLE_RENDER_PICKING_PASS @@ -3083,7 +2543,6 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) } #endif // ENABLE_RENDER_PICKING_PASS case 'Z': -#if ENABLE_GCODE_VIEWER case 'z': { if (!m_selection.is_empty()) @@ -3097,9 +2556,6 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) break; } -#else - case 'z': { m_selection.is_empty() ? zoom_to_volumes() : zoom_to_selection(); break; } -#endif // ENABLE_GCODE_VIEWER default: { evt.Skip(); break; } } } @@ -3212,8 +2668,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) double multiplier = slow ? 1.0 : 10.0; Vec3d displacement; - if (camera_space) - { + if (camera_space) { Eigen::Matrix<double, 3, 3, Eigen::DontAlign> inv_view_3x3 = wxGetApp().plater()->get_camera().get_view_matrix().inverse().matrix().block(0, 0, 3, 3); displacement = multiplier * (inv_view_3x3 * direction); displacement(2) = 0.0; @@ -3234,8 +2689,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } else { - if (!m_gizmos.on_key(evt)) - { + if (!m_gizmos.on_key(evt)) { if (evt.GetEventType() == wxEVT_KEY_UP) { if (m_tab_down && keyCode == WXK_TAB && !evt.HasAnyModifiers()) { // Enable switching between 3D and Preview with Tab @@ -3246,12 +2700,10 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) // Collapse side-panel with Shift+Tab post_event(SimpleEvent(EVT_GLCANVAS_COLLAPSE_SIDEBAR)); } - else if (keyCode == WXK_SHIFT) - { + else if (keyCode == WXK_SHIFT) { translationProcessor.process(evt); - if (m_picking_enabled && m_rectangle_selection.is_dragging()) - { + if (m_picking_enabled && m_rectangle_selection.is_dragging()) { _update_selection_from_hover(); m_rectangle_selection.stop_dragging(); m_mouse.ignore_left_up = true; @@ -3259,10 +2711,8 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } // set_cursor(Standard); } - else if (keyCode == WXK_ALT) - { - if (m_picking_enabled && m_rectangle_selection.is_dragging()) - { + else if (keyCode == WXK_ALT) { + if (m_picking_enabled && m_rectangle_selection.is_dragging()) { _update_selection_from_hover(); m_rectangle_selection.stop_dragging(); m_mouse.ignore_left_up = true; @@ -3299,8 +2749,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } else if (evt.GetEventType() == wxEVT_KEY_DOWN) { m_tab_down = keyCode == WXK_TAB && !evt.HasAnyModifiers(); - if (keyCode == WXK_SHIFT) - { + if (keyCode == WXK_SHIFT) { translationProcessor.process(evt); if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)) @@ -3309,8 +2758,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) // set_cursor(Cross); } } - else if (keyCode == WXK_ALT) - { + else if (keyCode == WXK_ALT) { if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)) { m_mouse.ignore_left_up = false; @@ -3319,8 +2767,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } else if (keyCode == WXK_CONTROL) m_dirty = true; - else if (m_gizmos.is_enabled() && !m_selection.is_empty()) - { + else if (m_gizmos.is_enabled() && !m_selection.is_empty()) { auto do_rotate = [this](double angle_z_rad) { m_selection.start_dragging(); m_selection.rotate(Vec3d(0.0, 0.0, angle_z_rad), TransformationType(TransformationType::World_Relative_Joint)); @@ -3337,20 +2784,14 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) default: { break; } } } - else if (!m_gizmos.is_enabled()) - { + else if (!m_gizmos.is_enabled()) { // DoubleSlider navigation in Preview if (keyCode == WXK_LEFT || keyCode == WXK_RIGHT || keyCode == WXK_UP || - keyCode == WXK_DOWN) - { + keyCode == WXK_DOWN) { if (dynamic_cast<Preview*>(m_canvas->GetParent()) != nullptr) -#if ENABLE_GCODE_VIEWER post_event(wxKeyEvent(EVT_GLCANVAS_MOVE_LAYERS_SLIDER, evt)); -#else - post_event(wxKeyEvent(EVT_GLCANVAS_MOVE_DOUBLE_SLIDER, evt)); -#endif // ENABLE_GCODE_VIEWER } } } @@ -3400,14 +2841,11 @@ void GLCanvas3D::on_mouse_wheel(wxMouseEvent& evt) #endif /* __WXMSW__ */ // Performs layers editing updates, if enabled - if (is_layers_editing_enabled()) - { + if (is_layers_editing_enabled()) { int object_idx_selected = m_selection.get_object_idx(); - if (object_idx_selected != -1) - { + if (object_idx_selected != -1) { // A volume is selected. Test, whether hovering over a layer thickness bar. - if (m_layers_editing.bar_rect_contains(*this, (float)evt.GetX(), (float)evt.GetY())) - { + if (m_layers_editing.bar_rect_contains(*this, (float)evt.GetX(), (float)evt.GetY())) { // Adjust the width of the selection. m_layers_editing.band_width = std::max(std::min(m_layers_editing.band_width * (1.0f + 0.1f * (float)evt.GetWheelRotation() / (float)evt.GetWheelDelta()), 10.0f), 1.5f); if (m_canvas != nullptr) @@ -3868,13 +3306,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) if (m_selection.is_empty()) m_gizmos.reset_all_states(); -#if ENABLE_GCODE_VIEWER m_dirty = true; -#else - // Only refresh if picking is enabled, in that case the objects may get highlighted if the mouse cursor hovers over. - //if (m_picking_enabled) - m_dirty = true; -#endif // ENABLE_GCODE_VIEWER } else evt.Skip(); @@ -3935,17 +3367,6 @@ Vec2d GLCanvas3D::get_local_mouse_position() const return Vec2d(factor * mouse_pos.x, factor * mouse_pos.y); } -#if !ENABLE_GCODE_VIEWER -void GLCanvas3D::reset_legend_texture() -{ - if (m_legend_texture.get_id() != 0) - { - _set_current(); - m_legend_texture.reset(); - } -} -#endif // !ENABLE_GCODE_VIEWER - void GLCanvas3D::set_tooltip(const std::string& tooltip) const { if (m_canvas != nullptr) @@ -4234,13 +3655,8 @@ void GLCanvas3D::update_ui_from_settings() } #endif // ENABLE_RETINA_GL -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) wxGetApp().plater()->enable_collapse_toolbar(wxGetApp().app_config->get("show_collapse_button") == "1"); -#else - bool enable_collapse = wxGetApp().app_config->get("show_collapse_button") == "1"; - wxGetApp().plater()->get_collapse_toolbar().set_enabled(enable_collapse); -#endif // ENABLE_GCODE_VIEWER } GLCanvas3D::WipeTowerInfo GLCanvas3D::get_wipe_tower_info() const @@ -4304,20 +3720,12 @@ void GLCanvas3D::update_tooltip_for_settings_item_in_main_toolbar() bool GLCanvas3D::has_toolpaths_to_export() const { -#if ENABLE_GCODE_VIEWER return m_gcode_viewer.has_data(); -#else - return m_volumes.has_toolpaths_to_export(); -#endif // ENABLE_GCODE_VIEWER } void GLCanvas3D::export_toolpaths_to_obj(const char* filename) const { -#if ENABLE_GCODE_VIEWER m_gcode_viewer.export_toolpaths_to_obj(filename); -#else - m_volumes.export_toolpaths_to_obj(filename); -#endif // ENABLE_GCODE_VIEWER } void GLCanvas3D::mouse_up_cleanup() @@ -5150,10 +4558,8 @@ BoundingBoxf3 GLCanvas3D::_max_bounding_box(bool include_gizmos, bool include_be bb.merge(wxGetApp().plater()->get_bed().get_bounding_box(include_bed_model)); -#if ENABLE_GCODE_VIEWER if (!m_main_toolbar.is_enabled()) bb.merge(m_gcode_viewer.get_max_bounding_box()); -#endif // ENABLE_GCODE_VIEWER return bb; } @@ -5314,7 +4720,6 @@ void GLCanvas3D::_rectangular_selection_picking_pass() const _update_volumes_hover_state(); } -#if ENABLE_GCODE_VIEWER static BoundingBoxf3 print_volume(const DynamicPrintConfig& config) { // tolerance to avoid false detection at bed edges @@ -5331,11 +4736,9 @@ static BoundingBoxf3 print_volume(const DynamicPrintConfig& config) } return ret; } -#endif // ENABLE_GCODE_VIEWER void GLCanvas3D::_render_background() const { -#if ENABLE_GCODE_VIEWER bool use_error_color = false; if (wxGetApp().is_editor()) { use_error_color = m_dynamic_background_enabled && @@ -5348,7 +4751,6 @@ void GLCanvas3D::_render_background() const use_error_color &= (test_volume.radius() > 0.0) ? !test_volume.contains(m_gcode_viewer.get_paths_bounding_box()) : false; } } -#endif // ENABLE_GCODE_VIEWER glsafe(::glPushMatrix()); glsafe(::glLoadIdentity()); @@ -5360,11 +4762,7 @@ void GLCanvas3D::_render_background() const glsafe(::glDisable(GL_DEPTH_TEST)); ::glBegin(GL_QUADS); -#if ENABLE_GCODE_VIEWER if (use_error_color) -#else - if (m_dynamic_background_enabled && _is_any_volume_outside()) -#endif // ENABLE_GCODE_VIEWER ::glColor3fv(ERROR_BG_DARK_COLOR); else ::glColor3fv(DEFAULT_BG_DARK_COLOR); @@ -5372,12 +4770,8 @@ void GLCanvas3D::_render_background() const ::glVertex2f(-1.0f, -1.0f); ::glVertex2f(1.0f, -1.0f); -#if ENABLE_GCODE_VIEWER if (use_error_color) -#else - if (m_dynamic_background_enabled && _is_any_volume_outside()) -#endif // ENABLE_GCODE_VIEWER -::glColor3fv(ERROR_BG_LIGHT_COLOR); + ::glColor3fv(ERROR_BG_LIGHT_COLOR); else ::glColor3fv(DEFAULT_BG_LIGHT_COLOR); @@ -5475,12 +4869,10 @@ void GLCanvas3D::_render_objects() const m_camera_clipping_plane = ClippingPlane::ClipsNothing(); } -#if ENABLE_GCODE_VIEWER void GLCanvas3D::_render_gcode() const { m_gcode_viewer.render(); } -#endif // ENABLE_GCODE_VIEWER void GLCanvas3D::_render_selection() const { @@ -5562,9 +4954,6 @@ void GLCanvas3D::_render_overlays() const _render_gizmos_overlay(); _render_warning_texture(); -#if !ENABLE_GCODE_VIEWER - _render_legend_texture(); -#endif // !ENABLE_GCODE_VIEWER // main toolbar and undoredo toolbar need to be both updated before rendering because both their sizes are needed // to correctly place them @@ -5607,16 +4996,6 @@ void GLCanvas3D::_render_warning_texture() const m_warning_texture.render(*this); } -#if !ENABLE_GCODE_VIEWER -void GLCanvas3D::_render_legend_texture() const -{ - if (!m_legend_texture_enabled) - return; - - m_legend_texture.render(*this); -} -#endif // !ENABLE_GCODE_VIEWER - void GLCanvas3D::_render_volumes_for_picking() const { static const GLfloat INV_255 = 1.0f / 255.0f; @@ -6563,336 +5942,6 @@ void GLCanvas3D::_load_wipe_tower_toolpaths(const std::vector<std::string>& str_ BOOST_LOG_TRIVIAL(debug) << "Loading wipe tower toolpaths in parallel - end" << m_volumes.log_memory_info() << log_memory_info(); } -#if !ENABLE_GCODE_VIEWER -static inline int hex_digit_to_int(const char c) -{ - return - (c >= '0' && c <= '9') ? int(c - '0') : - (c >= 'A' && c <= 'F') ? int(c - 'A') + 10 : - (c >= 'a' && c <= 'f') ? int(c - 'a') + 10 : -1; -} - -void GLCanvas3D::_load_gcode_extrusion_paths(const GCodePreviewData& preview_data, const std::vector<float>& tool_colors) -{ - BOOST_LOG_TRIVIAL(debug) << "Loading G-code extrusion paths - start" << m_volumes.log_memory_info() << log_memory_info(); - - // helper functions to select data in dependence of the extrusion view type - struct Helper - { - static float path_filter(GCodePreviewData::Extrusion::EViewType type, const GCodePreviewData::Extrusion::Path& path) - { - switch (type) - { - case GCodePreviewData::Extrusion::FeatureType: - // The role here is used for coloring. - return (float)path.extrusion_role; - case GCodePreviewData::Extrusion::Height: - return path.height; - case GCodePreviewData::Extrusion::Width: - return path.width; - case GCodePreviewData::Extrusion::Feedrate: - return path.feedrate; - case GCodePreviewData::Extrusion::FanSpeed: - return path.fan_speed; - case GCodePreviewData::Extrusion::VolumetricRate: - return path.feedrate * path.mm3_per_mm; - case GCodePreviewData::Extrusion::Tool: - return (float)path.extruder_id; - case GCodePreviewData::Extrusion::ColorPrint: - return (float)path.cp_color_id; - default: - return 0.0f; - } - - return 0.0f; - } - - static Color path_color(const GCodePreviewData& data, const std::vector<float>& tool_colors, float value) - { - switch (data.extrusion.view_type) - { - case GCodePreviewData::Extrusion::FeatureType: - return data.get_extrusion_role_color((ExtrusionRole)(int)value); - case GCodePreviewData::Extrusion::Height: - return data.get_height_color(value); - case GCodePreviewData::Extrusion::Width: - return data.get_width_color(value); - case GCodePreviewData::Extrusion::Feedrate: - return data.get_feedrate_color(value); - case GCodePreviewData::Extrusion::FanSpeed: - return data.get_fan_speed_color(value); - case GCodePreviewData::Extrusion::VolumetricRate: - return data.get_volumetric_rate_color(value); - case GCodePreviewData::Extrusion::Tool: - { - Color color; - ::memcpy((void*)color.rgba.data(), (const void*)(tool_colors.data() + (unsigned int)value * 4), 4 * sizeof(float)); - return color; - } - case GCodePreviewData::Extrusion::ColorPrint: - { - int color_cnt = (int)tool_colors.size() / 4; - int val = value > color_cnt ? color_cnt - 1 : value; - - Color color; - ::memcpy((void*)color.rgba.data(), (const void*)(tool_colors.data() + val * 4), 4 * sizeof(float)); - - return color; - } - default: - return Color{}; - } - - return Color{}; - } - }; - - size_t initial_volumes_count = m_volumes.volumes.size(); - size_t initial_volume_index_count = m_gcode_preview_volume_index.first_volumes.size(); - - try - { - BOOST_LOG_TRIVIAL(debug) << "Loading G-code extrusion paths - create volumes" << m_volumes.log_memory_info() << log_memory_info(); - - // detects filters - size_t vertex_buffer_prealloc_size = 0; - std::vector<std::vector<std::pair<float, GLVolume*>>> roles_filters; - { - std::vector<size_t> num_paths_per_role(size_t(erCount), 0); - for (const GCodePreviewData::Extrusion::Layer &layer : preview_data.extrusion.layers) - for (const GCodePreviewData::Extrusion::Path &path : layer.paths) - ++ num_paths_per_role[size_t(path.extrusion_role)]; - std::vector<std::vector<float>> roles_values; - roles_values.assign(size_t(erCount), std::vector<float>()); - for (size_t i = 0; i < roles_values.size(); ++ i) - roles_values[i].reserve(num_paths_per_role[i]); - for (const GCodePreviewData::Extrusion::Layer& layer : preview_data.extrusion.layers) - for (const GCodePreviewData::Extrusion::Path &path : layer.paths) - roles_values[size_t(path.extrusion_role)].emplace_back(Helper::path_filter(preview_data.extrusion.view_type, path)); - roles_filters.reserve(size_t(erCount)); - size_t num_buffers = 0; - for (std::vector<float> &values : roles_values) { - sort_remove_duplicates(values); - num_buffers += values.size(); - } - if (num_buffers == 0) - // nothing to render, return - return; - vertex_buffer_prealloc_size = (uint64_t(num_buffers) * uint64_t(VERTEX_BUFFER_RESERVE_SIZE) < VERTEX_BUFFER_RESERVE_SIZE_SUM_MAX) ? - VERTEX_BUFFER_RESERVE_SIZE : next_highest_power_of_2(VERTEX_BUFFER_RESERVE_SIZE_SUM_MAX / num_buffers) / 2; - for (std::vector<float> &values : roles_values) { - size_t role = &values - &roles_values.front(); - roles_filters.emplace_back(); - if (! values.empty()) { - m_gcode_preview_volume_index.first_volumes.emplace_back(GCodePreviewVolumeIndex::Extrusion, role, (unsigned int)m_volumes.volumes.size()); - for (const float value : values) - roles_filters.back().emplace_back(value, m_volumes.new_toolpath_volume(Helper::path_color(preview_data, tool_colors, value).rgba.data(), vertex_buffer_prealloc_size)); - } - } - } - - BOOST_LOG_TRIVIAL(debug) << "Loading G-code extrusion paths - populate volumes" << m_volumes.log_memory_info() << log_memory_info(); - - // populates volumes - const bool is_selected_separate_extruder = m_selected_extruder > 0 && preview_data.extrusion.view_type == GCodePreviewData::Extrusion::ColorPrint; - for (const GCodePreviewData::Extrusion::Layer& layer : preview_data.extrusion.layers) - { - for (const GCodePreviewData::Extrusion::Path& path : layer.paths) - { - if (is_selected_separate_extruder && path.extruder_id != m_selected_extruder - 1) - continue; - std::vector<std::pair<float, GLVolume*>> &filters = roles_filters[size_t(path.extrusion_role)]; - auto key = std::make_pair<float, GLVolume*>(Helper::path_filter(preview_data.extrusion.view_type, path), nullptr); - auto it_filter = std::lower_bound(filters.begin(), filters.end(), key); - assert(it_filter != filters.end() && key.first == it_filter->first); - - GLVolume& vol = *it_filter->second; - vol.print_zs.emplace_back(layer.z); - vol.offsets.emplace_back(vol.indexed_vertex_array.quad_indices.size()); - vol.offsets.emplace_back(vol.indexed_vertex_array.triangle_indices.size()); - - _3DScene::extrusionentity_to_verts(path.polyline, path.width, path.height, layer.z, vol); - } - // Ensure that no volume grows over the limits. If the volume is too large, allocate a new one. - for (std::vector<std::pair<float, GLVolume*>> &filters : roles_filters) { - unsigned int role = (unsigned int)(&filters - &roles_filters.front()); - for (std::pair<float, GLVolume*> &filter : filters) - if (filter.second->indexed_vertex_array.vertices_and_normals_interleaved.size() > MAX_VERTEX_BUFFER_SIZE) { - if (m_gcode_preview_volume_index.first_volumes.back().type != GCodePreviewVolumeIndex::Extrusion || m_gcode_preview_volume_index.first_volumes.back().flag != role) - m_gcode_preview_volume_index.first_volumes.emplace_back(GCodePreviewVolumeIndex::Extrusion, role, (unsigned int)m_volumes.volumes.size()); - GLVolume& vol = *filter.second; - filter.second = m_volumes.new_toolpath_volume(vol.color); - reserve_new_volume_finalize_old_volume(*filter.second, vol, m_initialized, vertex_buffer_prealloc_size); - } - } - } - - // Finalize volumes and sends geometry to gpu - for (std::vector<std::pair<float, GLVolume*>> &filters : roles_filters) - for (std::pair<float, GLVolume*> &filter : filters) - filter.second->indexed_vertex_array.finalize_geometry(m_initialized); - - BOOST_LOG_TRIVIAL(debug) << "Loading G-code extrusion paths - end" << m_volumes.log_memory_info() << log_memory_info(); - } - catch (const std::bad_alloc & /* err */) - { - // an error occourred - restore to previous state and return - GLVolumePtrs::iterator begin = m_volumes.volumes.begin() + initial_volumes_count; - GLVolumePtrs::iterator end = m_volumes.volumes.end(); - for (GLVolumePtrs::iterator it = begin; it < end; ++it) - delete *it; - m_volumes.volumes.erase(begin, end); - m_gcode_preview_volume_index.first_volumes.erase(m_gcode_preview_volume_index.first_volumes.begin() + initial_volume_index_count, m_gcode_preview_volume_index.first_volumes.end()); - BOOST_LOG_TRIVIAL(debug) << "Loading G-code extrusion paths - failed on low memory" << m_volumes.log_memory_info() << log_memory_info(); - //FIXME rethrow bad_alloc? - } -} - -template<typename TYPE, typename FUNC_VALUE, typename FUNC_COLOR> -inline void travel_paths_internal( - // input - const GCodePreviewData &preview_data, - // accessors - FUNC_VALUE func_value, FUNC_COLOR func_color, - // output - GLVolumeCollection &volumes, bool gl_initialized) - -{ - // colors travels by type - std::vector<std::pair<TYPE, GLVolume*>> by_type; - { - std::vector<TYPE> values; - values.reserve(preview_data.travel.polylines.size()); - for (const GCodePreviewData::Travel::Polyline& polyline : preview_data.travel.polylines) - values.emplace_back(func_value(polyline)); - sort_remove_duplicates(values); - by_type.reserve(values.size()); - // creates a new volume for each feedrate - for (TYPE type : values) - by_type.emplace_back(type, volumes.new_nontoolpath_volume(func_color(type).rgba.data(), VERTEX_BUFFER_RESERVE_SIZE)); - } - - // populates volumes - std::pair<TYPE, GLVolume*> key(0.f, nullptr); - for (const GCodePreviewData::Travel::Polyline& polyline : preview_data.travel.polylines) - { - key.first = func_value(polyline); - auto it = std::lower_bound(by_type.begin(), by_type.end(), key, [](const std::pair<TYPE, GLVolume*>& l, const std::pair<TYPE, GLVolume*>& r) { return l.first < r.first; }); - assert(it != by_type.end() && it->first == func_value(polyline)); - - GLVolume& vol = *it->second; - vol.print_zs.emplace_back(unscale<double>(polyline.polyline.bounding_box().min(2))); - vol.offsets.emplace_back(vol.indexed_vertex_array.quad_indices.size()); - vol.offsets.emplace_back(vol.indexed_vertex_array.triangle_indices.size()); - - _3DScene::polyline3_to_verts(polyline.polyline, preview_data.travel.width, preview_data.travel.height, vol); - - // Ensure that no volume grows over the limits. If the volume is too large, allocate a new one. - if (vol.indexed_vertex_array.vertices_and_normals_interleaved.size() > MAX_VERTEX_BUFFER_SIZE) { - it->second = volumes.new_nontoolpath_volume(vol.color); - reserve_new_volume_finalize_old_volume(*it->second, vol, gl_initialized); - } - } - - for (auto &feedrate : by_type) - feedrate.second->finalize_geometry(gl_initialized); -} - -void GLCanvas3D::_load_gcode_travel_paths(const GCodePreviewData& preview_data, const std::vector<float>& tool_colors) -{ - // nothing to render, return - if (preview_data.travel.polylines.empty()) - return; - - size_t initial_volumes_count = m_volumes.volumes.size(); - size_t volume_index_allocated = false; - - try { - m_gcode_preview_volume_index.first_volumes.emplace_back(GCodePreviewVolumeIndex::Travel, 0, (unsigned int)initial_volumes_count); - volume_index_allocated = true; - - switch (preview_data.extrusion.view_type) - { - case GCodePreviewData::Extrusion::Feedrate: - travel_paths_internal<float>(preview_data, - [](const GCodePreviewData::Travel::Polyline &polyline) { return polyline.feedrate; }, - [&preview_data](const float feedrate) -> const Color { return preview_data.get_feedrate_color(feedrate); }, - m_volumes, m_initialized); - break; - case GCodePreviewData::Extrusion::Tool: - travel_paths_internal<unsigned int>(preview_data, - [](const GCodePreviewData::Travel::Polyline &polyline) { return polyline.extruder_id; }, - [&tool_colors](const unsigned int extruder_id) -> const Color { assert((extruder_id + 1) * 4 <= tool_colors.size()); return Color(tool_colors.data() + extruder_id * 4); }, - m_volumes, m_initialized); - break; - default: - travel_paths_internal<unsigned int>(preview_data, - [](const GCodePreviewData::Travel::Polyline &polyline) { return polyline.type; }, - [&preview_data](const unsigned int type) -> const Color& { return preview_data.travel.type_colors[type]; }, - m_volumes, m_initialized); - break; - } - } catch (const std::bad_alloc & /* ex */) { - // an error occourred - restore to previous state and return - GLVolumePtrs::iterator begin = m_volumes.volumes.begin() + initial_volumes_count; - GLVolumePtrs::iterator end = m_volumes.volumes.end(); - for (GLVolumePtrs::iterator it = begin; it < end; ++it) - delete *it; - m_volumes.volumes.erase(begin, end); - if (volume_index_allocated) - m_gcode_preview_volume_index.first_volumes.pop_back(); - //FIXME report the memory issue? - } -} - -void GLCanvas3D::_load_fff_shells() -{ - size_t initial_volumes_count = m_volumes.volumes.size(); - m_gcode_preview_volume_index.first_volumes.emplace_back(GCodePreviewVolumeIndex::Shell, 0, (unsigned int)initial_volumes_count); - - const Print *print = this->fff_print(); - if (print->objects().empty()) - // nothing to render, return - return; - - // adds objects' volumes - int object_id = 0; - for (const PrintObject* obj : print->objects()) - { - const ModelObject* model_obj = obj->model_object(); - - std::vector<int> instance_ids(model_obj->instances.size()); - for (int i = 0; i < (int)model_obj->instances.size(); ++i) - { - instance_ids[i] = i; - } - - m_volumes.load_object(model_obj, object_id, instance_ids, "object", m_initialized); - - ++object_id; - } - - if (wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptFFF) { - // adds wipe tower's volume - double max_z = print->objects()[0]->model_object()->get_model()->bounding_box().max(2); - const PrintConfig& config = print->config(); - size_t extruders_count = config.nozzle_diameter.size(); - if ((extruders_count > 1) && config.wipe_tower && !config.complete_objects) { - - const DynamicPrintConfig &print_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; - double layer_height = print_config.opt_float("layer_height"); - double first_layer_height = print_config.get_abs_value("first_layer_height", layer_height); - double nozzle_diameter = print->config().nozzle_diameter.values[0]; - float depth = print->wipe_tower_data(extruders_count, first_layer_height, nozzle_diameter).depth; - float brim_width = print->wipe_tower_data(extruders_count, first_layer_height, nozzle_diameter).brim_width; - - m_volumes.load_wipe_tower_preview(1000, config.wipe_tower_x, config.wipe_tower_y, config.wipe_tower_width, depth, max_z, config.wipe_tower_rotation_angle, - !print->is_step_done(psWipeTower), brim_width, m_initialized); - } - } -} -#endif // !ENABLE_GCODE_VIEWER - // While it looks like we can call // this->reload_scene(true, true) // the two functions are quite different: @@ -6949,136 +5998,25 @@ void GLCanvas3D::_load_sla_shells() update_volumes_colors_by_extruder(); } -#if !ENABLE_GCODE_VIEWER -void GLCanvas3D::_update_gcode_volumes_visibility(const GCodePreviewData& preview_data) -{ - unsigned int size = (unsigned int)m_gcode_preview_volume_index.first_volumes.size(); - for (unsigned int i = 0; i < size; ++i) - { - GLVolumePtrs::iterator begin = m_volumes.volumes.begin() + m_gcode_preview_volume_index.first_volumes[i].id; - GLVolumePtrs::iterator end = (i + 1 < size) ? m_volumes.volumes.begin() + m_gcode_preview_volume_index.first_volumes[i + 1].id : m_volumes.volumes.end(); - - for (GLVolumePtrs::iterator it = begin; it != end; ++it) - { - GLVolume* volume = *it; - - switch (m_gcode_preview_volume_index.first_volumes[i].type) - { - case GCodePreviewVolumeIndex::Extrusion: - { - if ((ExtrusionRole)m_gcode_preview_volume_index.first_volumes[i].flag == erCustom) - volume->zoom_to_volumes = false; - - volume->is_active = preview_data.extrusion.is_role_flag_set((ExtrusionRole)m_gcode_preview_volume_index.first_volumes[i].flag); - break; - } - case GCodePreviewVolumeIndex::Travel: - { - volume->is_active = preview_data.travel.is_visible; - volume->zoom_to_volumes = false; - break; - } - case GCodePreviewVolumeIndex::Retraction: - { - volume->is_active = preview_data.retraction.is_visible; - volume->zoom_to_volumes = false; - break; - } - case GCodePreviewVolumeIndex::Unretraction: - { - volume->is_active = preview_data.unretraction.is_visible; - volume->zoom_to_volumes = false; - break; - } - case GCodePreviewVolumeIndex::Shell: - { - volume->is_active = preview_data.shell.is_visible; - volume->color[3] = 0.25f; - volume->zoom_to_volumes = false; - break; - } - default: - { - volume->is_active = false; - volume->zoom_to_volumes = false; - break; - } - } - } - } -} -#endif // !ENABLE_GCODE_VIEWER - void GLCanvas3D::_update_toolpath_volumes_outside_state() { -#if ENABLE_GCODE_VIEWER BoundingBoxf3 test_volume = (m_config != nullptr) ? print_volume(*m_config) : BoundingBoxf3(); -#else - // tolerance to avoid false detection at bed edges - static const double tolerance_x = 0.05; - static const double tolerance_y = 0.05; - - BoundingBoxf3 print_volume; - if (m_config != nullptr) - { - const ConfigOptionPoints* opt = dynamic_cast<const ConfigOptionPoints*>(m_config->option("bed_shape")); - if (opt != nullptr) - { - BoundingBox bed_box_2D = get_extents(Polygon::new_scale(opt->values)); - print_volume = BoundingBoxf3(Vec3d(unscale<double>(bed_box_2D.min(0)) - tolerance_x, unscale<double>(bed_box_2D.min(1)) - tolerance_y, 0.0), Vec3d(unscale<double>(bed_box_2D.max(0)) + tolerance_x, unscale<double>(bed_box_2D.max(1)) + tolerance_y, m_config->opt_float("max_print_height"))); - // Allow the objects to protrude below the print bed - print_volume.min(2) = -1e10; - } - } -#endif // ENABLE_GCODE_VIEWER - - for (GLVolume* volume : m_volumes.volumes) - { -#if ENABLE_GCODE_VIEWER + for (GLVolume* volume : m_volumes.volumes) { volume->is_outside = ((test_volume.radius() > 0.0) && volume->is_extrusion_path) ? !test_volume.contains(volume->bounding_box()) : false; -#else - volume->is_outside = ((print_volume.radius() > 0.0) && volume->is_extrusion_path) ? !print_volume.contains(volume->bounding_box()) : false; -#endif // ENABLE_GCODE_VIEWER } } void GLCanvas3D::_update_sla_shells_outside_state() { -#if ENABLE_GCODE_VIEWER BoundingBoxf3 test_volume = (m_config != nullptr) ? print_volume(*m_config) : BoundingBoxf3(); -#else - // tolerance to avoid false detection at bed edges - static const double tolerance_x = 0.05; - static const double tolerance_y = 0.05; - - BoundingBoxf3 print_volume; - if (m_config != nullptr) - { - const ConfigOptionPoints* opt = dynamic_cast<const ConfigOptionPoints*>(m_config->option("bed_shape")); - if (opt != nullptr) - { - BoundingBox bed_box_2D = get_extents(Polygon::new_scale(opt->values)); - print_volume = BoundingBoxf3(Vec3d(unscale<double>(bed_box_2D.min(0)) - tolerance_x, unscale<double>(bed_box_2D.min(1)) - tolerance_y, 0.0), Vec3d(unscale<double>(bed_box_2D.max(0)) + tolerance_x, unscale<double>(bed_box_2D.max(1)) + tolerance_y, m_config->opt_float("max_print_height"))); - // Allow the objects to protrude below the print bed - print_volume.min(2) = -1e10; - } - } -#endif // ENABLE_GCODE_VIEWER - - for (GLVolume* volume : m_volumes.volumes) - { -#if ENABLE_GCODE_VIEWER + for (GLVolume* volume : m_volumes.volumes) { volume->is_outside = ((test_volume.radius() > 0.0) && volume->shader_outside_printer_detection_enabled) ? !test_volume.contains(volume->transformed_convex_hull_bounding_box()) : false; -#else - volume->is_outside = ((print_volume.radius() > 0.0) && volume->shader_outside_printer_detection_enabled) ? !print_volume.contains(volume->transformed_convex_hull_bounding_box()) : false; -#endif // ENABLE_GCODE_VIEWER } } void GLCanvas3D::_show_warning_texture_if_needed(WarningTexture::Warning warning) { _set_current(); -#if ENABLE_GCODE_VIEWER bool show = false; if (!m_volumes.empty()) show = _is_any_volume_outside(); @@ -7091,9 +6029,6 @@ void GLCanvas3D::_show_warning_texture_if_needed(WarningTexture::Warning warning } } _set_warning_texture(warning, show); -#else - _set_warning_texture(warning, _is_any_volume_outside()); -#endif // ENABLE_GCODE_VIEWER } std::vector<float> GLCanvas3D::_parse_colors(const std::vector<std::string>& colors) @@ -7121,13 +6056,6 @@ std::vector<float> GLCanvas3D::_parse_colors(const std::vector<std::string>& col return output; } -#if !ENABLE_GCODE_VIEWER -void GLCanvas3D::_generate_legend_texture(const GCodePreviewData& preview_data, const std::vector<float>& tool_colors) -{ - m_legend_texture.generate(preview_data, tool_colors, *this, true); -} -#endif // !ENABLE_GCODE_VIEWER - void GLCanvas3D::_set_warning_texture(WarningTexture::Warning warning, bool state) { m_warning_texture.activate(warning, state, *this); @@ -7135,8 +6063,7 @@ void GLCanvas3D::_set_warning_texture(WarningTexture::Warning warning, bool stat bool GLCanvas3D::_is_any_volume_outside() const { - for (const GLVolume* volume : m_volumes.volumes) - { + for (const GLVolume* volume : m_volumes.volumes) { if ((volume != nullptr) && volume->is_outside) return true; } diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index cc3971c17..0975e59a0 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -12,10 +12,8 @@ #include "GUI_ObjectLayers.hpp" #include "GLSelectionRectangle.hpp" #include "MeshUtils.hpp" -#if ENABLE_GCODE_VIEWER #include "libslic3r/GCode/GCodeProcessor.hpp" #include "GCodeViewer.hpp" -#endif // ENABLE_GCODE_VIEWER #include "libslic3r/Slicing.hpp" @@ -39,9 +37,6 @@ namespace Slic3r { struct Camera; class BackgroundSlicingProcess; -#if !ENABLE_GCODE_VIEWER -class GCodePreviewData; -#endif // !ENABLE_GCODE_VIEWER struct ThumbnailData; class ModelObject; class ModelInstance; @@ -108,11 +103,7 @@ wxDECLARE_EVENT(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_UPDATE_BED_SHAPE, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_TAB, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_RESETGIZMOS, SimpleEvent); -#if ENABLE_GCODE_VIEWER wxDECLARE_EVENT(EVT_GLCANVAS_MOVE_LAYERS_SLIDER, wxKeyEvent); -#else -wxDECLARE_EVENT(EVT_GLCANVAS_MOVE_DOUBLE_SLIDER, wxKeyEvent); -#endif // ENABLE_GCODE_VIEWER wxDECLARE_EVENT(EVT_GLCANVAS_EDIT_COLOR_CHANGE, wxKeyEvent); wxDECLARE_EVENT(EVT_GLCANVAS_JUMP_TO, wxKeyEvent); wxDECLARE_EVENT(EVT_GLCANVAS_UNDO, SimpleEvent); @@ -127,37 +118,6 @@ class GLCanvas3D { static const double DefaultCameraZoomToBoxMarginFactor; -public: -#if !ENABLE_GCODE_VIEWER - struct GCodePreviewVolumeIndex - { - enum EType - { - Extrusion, - Travel, - Retraction, - Unretraction, - Shell, - Num_Geometry_Types - }; - - struct FirstVolume - { - EType type; - unsigned int flag; - // Index of the first volume in a GLVolumeCollection. - unsigned int id; - - FirstVolume(EType type, unsigned int flag, unsigned int id) : type(type), flag(flag), id(id) {} - }; - - std::vector<FirstVolume> first_volumes; - - void reset() { first_volumes.clear(); } - }; -#endif // !ENABLE_GCODE_VIEWER - -private: class LayersEditing { public: @@ -355,35 +315,6 @@ private: bool generate(const std::string& msg, const GLCanvas3D& canvas, bool compress, bool red_colored = false); }; -#if !ENABLE_GCODE_VIEWER - class LegendTexture : public GUI::GLTexture - { - static const int Px_Title_Offset = 5; - static const int Px_Text_Offset = 5; - static const int Px_Square = 20; - static const int Px_Square_Contour = 1; - static const int Px_Border = Px_Square / 2; - static const unsigned char Squares_Border_Color[3]; - static const unsigned char Default_Background_Color[3]; - static const unsigned char Error_Background_Color[3]; - static const unsigned char Opacity; - - int m_original_width; - int m_original_height; - - public: - LegendTexture(); - void fill_color_print_legend_items(const GLCanvas3D& canvas, - const std::vector<float>& colors_in, - std::vector<float>& colors, - std::vector<std::string>& cp_legend_items); - - bool generate(const GCodePreviewData& preview_data, const std::vector<float>& tool_colors, const GLCanvas3D& canvas, bool compress); - - void render(const GLCanvas3D& canvas) const; - }; -#endif // !ENABLE_GCODE_VIEWER - #if ENABLE_RENDER_STATISTICS struct RenderStats { @@ -457,9 +388,6 @@ private: std::unique_ptr<RetinaHelper> m_retina_helper; #endif bool m_in_render; -#if !ENABLE_GCODE_VIEWER - LegendTexture m_legend_texture; -#endif // !ENABLE_GCODE_VIEWER WarningTexture m_warning_texture; wxTimer m_timer; LayersEditing m_layers_editing; @@ -478,9 +406,7 @@ private: bool m_event_handlers_bound{ false }; mutable GLVolumeCollection m_volumes; -#if ENABLE_GCODE_VIEWER GCodeViewer m_gcode_viewer; -#endif // ENABLE_GCODE_VIEWER Selection m_selection; const DynamicPrintConfig* m_config; @@ -492,9 +418,6 @@ private: bool m_initialized; bool m_apply_zoom_to_volumes_filter; mutable std::vector<int> m_hover_volume_idxs; -#if !ENABLE_GCODE_VIEWER - bool m_legend_texture_enabled; -#endif // !ENABLE_GCODE_VIEWER bool m_picking_enabled; bool m_moving_enabled; bool m_dynamic_background_enabled; @@ -512,10 +435,6 @@ private: bool m_reload_delayed; -#if !ENABLE_GCODE_VIEWER - GCodePreviewVolumeIndex m_gcode_preview_volume_index; -#endif // !ENABLE_GCODE_VIEWER - #if ENABLE_RENDER_PICKING_PASS bool m_show_picking_texture; #endif // ENABLE_RENDER_PICKING_PASS @@ -554,11 +473,9 @@ public: void reset_volumes(); int check_volumes_outside_state() const; -#if ENABLE_GCODE_VIEWER void reset_gcode_toolpaths() { m_gcode_viewer.reset(); } const GCodeViewer::SequentialView& get_gcode_sequential_view() const { return m_gcode_viewer.get_sequential_view(); } void update_gcode_sequential_view_current(unsigned int first, unsigned int last) { m_gcode_viewer.update_sequential_view_current(first, last); } -#endif // ENABLE_GCODE_VIEWER void toggle_sla_auxiliaries_visibility(bool visible, const ModelObject* mo = nullptr, int instance_idx = -1); void toggle_model_objects_visibility(bool visible, const ModelObject* mo = nullptr, int instance_idx = -1); @@ -622,9 +539,7 @@ public: void zoom_to_bed(); void zoom_to_volumes(); void zoom_to_selection(); -#if ENABLE_GCODE_VIEWER void zoom_to_gcode(); -#endif // ENABLE_GCODE_VIEWER void select_view(const std::string& direction); void update_volumes_colors_by_extruder(); @@ -641,7 +556,6 @@ public: void delete_selected(); void ensure_on_bed(unsigned int object_idx); -#if ENABLE_GCODE_VIEWER bool is_gcode_legend_enabled() const { return m_gcode_viewer.is_legend_enabled(); } GCodeViewer::EViewType get_gcode_view_type() const { return m_gcode_viewer.get_view_type(); } const std::vector<double>& get_gcode_layers_zs() const; @@ -653,9 +567,6 @@ public: void set_toolpath_view_type(GCodeViewer::EViewType type); void set_volumes_z_range(const std::array<double, 2>& range); void set_toolpaths_z_range(const std::array<unsigned int, 2>& range); -#else - std::vector<double> get_current_print_zs(bool active_only) const; -#endif // ENABLE_GCODE_VIEWER void set_toolpaths_range(double low, double high); std::vector<int> load_object(const ModelObject& model_object, int obj_idx, std::vector<int> instance_idxs); @@ -665,14 +576,10 @@ public: void reload_scene(bool refresh_immediately, bool force_full_scene_refresh = false); -#if ENABLE_GCODE_VIEWER void load_gcode_preview(const GCodeProcessor::Result& gcode_result); void refresh_gcode_preview(const GCodeProcessor::Result& gcode_result, const std::vector<std::string>& str_tool_colors); void set_gcode_view_preview_type(GCodeViewer::EViewType type) { return m_gcode_viewer.set_view_type(type); } GCodeViewer::EViewType get_gcode_view_preview_type() const { return m_gcode_viewer.get_view_type(); } -#else - void load_gcode_preview(const GCodePreviewData& preview_data, const std::vector<std::string>& str_tool_colors); -#endif // ENABLE_GCODE_VIEWER void load_sla_preview(); void load_preview(const std::vector<std::string>& str_tool_colors, const std::vector<CustomGCode::Item>& color_print_values); void bind_event_handlers(); @@ -691,10 +598,6 @@ public: Size get_canvas_size() const; Vec2d get_local_mouse_position() const; -#if !ENABLE_GCODE_VIEWER - void reset_legend_texture(); -#endif // !ENABLE_GCODE_VIEWER - void set_tooltip(const std::string& tooltip) const; // the following methods add a snapshot to the undo/redo stack, unless the given string is empty @@ -792,9 +695,7 @@ private: void _render_background() const; void _render_bed(bool bottom, bool show_axes) const; void _render_objects() const; -#if ENABLE_GCODE_VIEWER void _render_gcode() const; -#endif // ENABLE_GCODE_VIEWER void _render_selection() const; #if ENABLE_RENDER_SELECTION_CENTER void _render_selection_center() const; @@ -802,9 +703,6 @@ private: void _check_and_update_toolbar_icon_scale() const; void _render_overlays() const; void _render_warning_texture() const; -#if !ENABLE_GCODE_VIEWER - void _render_legend_texture() const; -#endif // !ENABLE_GCODE_VIEWER void _render_volumes_for_picking() const; void _render_current_gizmo() const; void _render_gizmos_overlay() const; @@ -852,29 +750,12 @@ private: // Create 3D thick extrusion lines for wipe tower extrusions void _load_wipe_tower_toolpaths(const std::vector<std::string>& str_tool_colors); -#if !ENABLE_GCODE_VIEWER - // generates gcode extrusion paths geometry - void _load_gcode_extrusion_paths(const GCodePreviewData& preview_data, const std::vector<float>& tool_colors); - // generates gcode travel paths geometry - void _load_gcode_travel_paths(const GCodePreviewData& preview_data, const std::vector<float>& tool_colors); - // generates objects and wipe tower geometry - void _load_fff_shells(); -#endif // !ENABLE_GCODE_VIEWER // Load SLA objects and support structures for objects, for which the slaposSliceSupports step has been finished. void _load_sla_shells(); -#if !ENABLE_GCODE_VIEWER - // sets gcode geometry visibility according to user selection - void _update_gcode_volumes_visibility(const GCodePreviewData& preview_data); -#endif // !ENABLE_GCODE_VIEWER void _update_toolpath_volumes_outside_state(); void _update_sla_shells_outside_state(); void _show_warning_texture_if_needed(WarningTexture::Warning warning); -#if !ENABLE_GCODE_VIEWER - // generates the legend texture in dependence of the current shown view type - void _generate_legend_texture(const GCodePreviewData& preview_data, const std::vector<float>& tool_colors); -#endif // !ENABLE_GCODE_VIEWER - // generates a warning texture containing the given message void _set_warning_texture(WarningTexture::Warning warning, bool state); diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index 637231aae..8091792e0 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -10,9 +10,7 @@ #include "libslic3r/PresetBundle.hpp" #include "DoubleSlider.hpp" #include "Plater.hpp" -#if ENABLE_GCODE_VIEWER #include "MainFrame.hpp" -#endif // ENABLE_GCODE_VIEWER #include <wx/notebook.h> #include <wx/glcanvas.h> @@ -168,62 +166,33 @@ void View3D::render() m_canvas->set_as_dirty(); } -#if ENABLE_GCODE_VIEWER Preview::Preview( wxWindow* parent, Model* model, DynamicPrintConfig* config, BackgroundSlicingProcess* process, GCodeProcessor::Result* gcode_result, std::function<void()> schedule_background_process_func) -#else -Preview::Preview( - wxWindow* parent, Model* model, DynamicPrintConfig* config, - BackgroundSlicingProcess* process, GCodePreviewData* gcode_preview_data, std::function<void()> schedule_background_process_func) -#endif // ENABLE_GCODE_VIEWER : m_canvas_widget(nullptr) , m_canvas(nullptr) -#if ENABLE_GCODE_VIEWER , m_left_sizer(nullptr) , m_layers_slider_sizer(nullptr) , m_bottom_toolbar_panel(nullptr) -#else - , m_double_slider_sizer(nullptr) -#endif // ENABLE_GCODE_VIEWER , m_label_view_type(nullptr) , m_choice_view_type(nullptr) , m_label_show(nullptr) , m_combochecklist_features(nullptr) -#if ENABLE_GCODE_VIEWER , m_combochecklist_features_pos(0) , m_combochecklist_options(nullptr) -#else - , m_checkbox_travel(nullptr) - , m_checkbox_retractions(nullptr) - , m_checkbox_unretractions(nullptr) - , m_checkbox_shells(nullptr) - , m_checkbox_legend(nullptr) -#endif // ENABLE_GCODE_VIEWER , m_config(config) , m_process(process) -#if ENABLE_GCODE_VIEWER , m_gcode_result(gcode_result) -#else - , m_gcode_preview_data(gcode_preview_data) -#endif // ENABLE_GCODE_VIEWER , m_number_extruders(1) , m_preferred_color_mode("feature") , m_loaded(false) -#if !ENABLE_GCODE_VIEWER - , m_enabled(false) -#endif // !ENABLE_GCODE_VIEWER , m_schedule_background_process(schedule_background_process_func) #ifdef __linux__ , m_volumes_cleanup_required(false) #endif // __linux__ { - if (init(parent, model)) { -#if !ENABLE_GCODE_VIEWER - show_hide_ui_elements("none"); -#endif // !ENABLE_GCODE_VIEWER + if (init(parent, model)) load_print(); - } } bool Preview::init(wxWindow* parent, Model* model) @@ -231,14 +200,12 @@ bool Preview::init(wxWindow* parent, Model* model) if (!Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 /* disable wxTAB_TRAVERSAL */)) return false; -#if ENABLE_GCODE_VIEWER // to match the background of the sliders #ifdef _WIN32 SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); #else SetBackgroundColour(GetParent()->GetBackgroundColour()); #endif // _WIN32 -#endif // ENABLE_GCODE_VIEWER m_canvas_widget = OpenGLManager::create_wxglcanvas(*this); if (m_canvas_widget == nullptr) @@ -253,20 +220,11 @@ bool Preview::init(wxWindow* parent, Model* model) m_canvas->enable_legend_texture(true); m_canvas->enable_dynamic_background(true); -#if ENABLE_GCODE_VIEWER m_layers_slider_sizer = create_layers_slider_sizer(); m_bottom_toolbar_panel = new wxPanel(this); m_label_view_type = new wxStaticText(m_bottom_toolbar_panel, wxID_ANY, _L("View")); m_choice_view_type = new wxChoice(m_bottom_toolbar_panel, wxID_ANY); -#else - m_double_slider_sizer = new wxBoxSizer(wxHORIZONTAL); - create_double_slider(); - - m_label_view_type = new wxStaticText(this, wxID_ANY, _L("View")); - - m_choice_view_type = new wxChoice(this, wxID_ANY); -#endif // ENABLE_GCODE_VIEWER m_choice_view_type->Append(_L("Feature type")); m_choice_view_type->Append(_L("Height")); m_choice_view_type->Append(_L("Width")); @@ -277,22 +235,12 @@ bool Preview::init(wxWindow* parent, Model* model) m_choice_view_type->Append(_L("Color Print")); m_choice_view_type->SetSelection(0); -#if ENABLE_GCODE_VIEWER m_label_show = new wxStaticText(m_bottom_toolbar_panel, wxID_ANY, _L("Show")); -#else - m_label_show = new wxStaticText(this, wxID_ANY, _L("Show")); -#endif // ENABLE_GCODE_VIEWER m_combochecklist_features = new wxComboCtrl(); -#if ENABLE_GCODE_VIEWER m_combochecklist_features->Create(m_bottom_toolbar_panel, wxID_ANY, _L("Feature types"), wxDefaultPosition, wxDefaultSize, wxCB_READONLY); -#else - m_combochecklist_features->Create(this, wxID_ANY, _L("Feature types"), wxDefaultPosition, wxDefaultSize, wxCB_READONLY); -#endif // ENABLE_GCODE_VIEWER std::string feature_items = GUI::into_u8( -#if ENABLE_GCODE_VIEWER _L("Unknown") + "|1|" + -#endif // ENABLE_GCODE_VIEWER _L("Perimeter") + "|1|" + _L("External perimeter") + "|1|" + _L("Overhang perimeter") + "|1|" + @@ -310,7 +258,6 @@ bool Preview::init(wxWindow* parent, Model* model) ); Slic3r::GUI::create_combochecklist(m_combochecklist_features, GUI::into_u8(_L("Feature types")), feature_items); -#if ENABLE_GCODE_VIEWER m_combochecklist_options = new wxComboCtrl(); m_combochecklist_options->Create(m_bottom_toolbar_panel, wxID_ANY, _L("Options"), wxDefaultPosition, wxDefaultSize, wxCB_READONLY); std::string options_items = GUI::into_u8( @@ -324,18 +271,9 @@ bool Preview::init(wxWindow* parent, Model* model) get_option_type_string(OptionType::Shells) + "|0|" + get_option_type_string(OptionType::ToolMarker) + "|1|" + get_option_type_string(OptionType::Legend) + "|1" -); + ); Slic3r::GUI::create_combochecklist(m_combochecklist_options, GUI::into_u8(_L("Options")), options_items); -#else - m_checkbox_travel = new wxCheckBox(this, wxID_ANY, _L("Travel")); - m_checkbox_retractions = new wxCheckBox(this, wxID_ANY, _L("Retractions")); - m_checkbox_unretractions = new wxCheckBox(this, wxID_ANY, _L("Deretractions")); - m_checkbox_shells = new wxCheckBox(this, wxID_ANY, _L("Shells")); - m_checkbox_legend = new wxCheckBox(this, wxID_ANY, _L("Legend")); - m_checkbox_legend->SetValue(true); -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER m_left_sizer = new wxBoxSizer(wxVERTICAL); m_left_sizer->Add(m_canvas_widget, 1, wxALL | wxEXPAND, 0); @@ -366,32 +304,6 @@ bool Preview::init(wxWindow* parent, Model* model) wxBoxSizer* main_sizer = new wxBoxSizer(wxHORIZONTAL); main_sizer->Add(m_left_sizer, 1, wxALL | wxEXPAND, 0); main_sizer->Add(right_sizer, 0, wxALL | wxEXPAND, 0); -#else - wxBoxSizer* top_sizer = new wxBoxSizer(wxHORIZONTAL); - top_sizer->Add(m_canvas_widget, 1, wxALL | wxEXPAND, 0); - top_sizer->Add(m_double_slider_sizer, 0, wxEXPAND, 0); - - wxBoxSizer* bottom_sizer = new wxBoxSizer(wxHORIZONTAL); - bottom_sizer->Add(m_label_view_type, 0, wxALIGN_CENTER_VERTICAL, 5); - bottom_sizer->Add(m_choice_view_type, 0, wxEXPAND | wxALL, 5); - bottom_sizer->AddSpacer(10); - bottom_sizer->Add(m_label_show, 0, wxALIGN_CENTER_VERTICAL, 5); - bottom_sizer->Add(m_combochecklist_features, 0, wxEXPAND | wxALL, 5); - bottom_sizer->AddSpacer(20); - bottom_sizer->Add(m_checkbox_travel, 0, wxEXPAND | wxALL, 5); - bottom_sizer->AddSpacer(10); - bottom_sizer->Add(m_checkbox_retractions, 0, wxEXPAND | wxALL, 5); - bottom_sizer->AddSpacer(10); - bottom_sizer->Add(m_checkbox_unretractions, 0, wxEXPAND | wxALL, 5); - bottom_sizer->AddSpacer(10); - bottom_sizer->Add(m_checkbox_shells, 0, wxEXPAND | wxALL, 5); - bottom_sizer->AddSpacer(20); - bottom_sizer->Add(m_checkbox_legend, 0, wxEXPAND | wxALL, 5); - - wxBoxSizer* main_sizer = new wxBoxSizer(wxVERTICAL); - main_sizer->Add(top_sizer, 1, wxALL | wxEXPAND, 0); - main_sizer->Add(bottom_sizer, 0, wxALL | wxEXPAND, 0); -#endif // ENABLE_GCODE_VIEWER SetSizer(main_sizer); SetMinSize(GetSize()); @@ -399,26 +311,6 @@ bool Preview::init(wxWindow* parent, Model* model) bind_event_handlers(); -#if !ENABLE_GCODE_VIEWER - // sets colors for gcode preview extrusion roles - std::vector<std::string> extrusion_roles_colors = { - "Perimeter", "FFFF66", - "External perimeter", "FFA500", - "Overhang perimeter", "0000FF", - "Internal infill", "B1302A", - "Solid infill", "D732D7", - "Top solid infill", "FF1A1A", - "Bridge infill", "9999FF", - "Gap fill", "FFFFFF", - "Skirt", "845321", - "Support material", "00FF00", - "Support material interface", "008000", - "Wipe tower", "B3E3AB", - "Custom", "28CC94" - }; - m_gcode_preview_data->set_extrusion_paths_colors(extrusion_roles_colors); -#endif // !ENABLE_GCODE_VIEWER - return true; } @@ -441,31 +333,18 @@ void Preview::set_as_dirty() void Preview::set_number_extruders(unsigned int number_extruders) { - if (m_number_extruders != number_extruders) - { + if (m_number_extruders != number_extruders) { m_number_extruders = number_extruders; int tool_idx = m_choice_view_type->FindString(_(L("Tool"))); int type = (number_extruders > 1) ? tool_idx /* color by a tool number */ : 0; // color by a feature type m_choice_view_type->SetSelection(type); -#if ENABLE_GCODE_VIEWER - if ((0 <= type) && (type < static_cast<int>(GCodeViewer::EViewType::Count))) + if (0 <= type && (type < static_cast<int>(GCodeViewer::EViewType::Count))) m_canvas->set_gcode_view_preview_type(static_cast<GCodeViewer::EViewType>(type)); -#else - if ((0 <= type) && (type < (int)GCodePreviewData::Extrusion::Num_View_Types)) - m_gcode_preview_data->extrusion.view_type = (GCodePreviewData::Extrusion::EViewType)type; -#endif // ENABLE_GCODE_VIEWER m_preferred_color_mode = (type == tool_idx) ? "tool_or_feature" : "feature"; } } -#if !ENABLE_GCODE_VIEWER -void Preview::set_enabled(bool enabled) -{ - m_enabled = enabled; -} -#endif // !ENABLE_GCODE_VIEWER - void Preview::bed_shape_changed() { if (m_canvas != nullptr) @@ -491,9 +370,7 @@ void Preview::load_print(bool keep_z_range) else if (tech == ptSLA) load_print_as_sla(); -#if ENABLE_GCODE_VIEWER update_bottom_toolbar(); -#endif // ENABLE_GCODE_VIEWER Layout(); } @@ -515,9 +392,6 @@ void Preview::reload_print(bool keep_volumes) !keep_volumes) { m_canvas->reset_volumes(); -#if !ENABLE_GCODE_VIEWER - m_canvas->reset_legend_texture(); -#endif // !ENABLE_GCODE_VIEWER m_loaded = false; #ifdef __linux__ m_volumes_cleanup_required = false; @@ -540,12 +414,8 @@ void Preview::refresh_print() void Preview::msw_rescale() { // rescale slider -#if ENABLE_GCODE_VIEWER if (m_layers_slider != nullptr) m_layers_slider->msw_rescale(); if (m_moves_slider != nullptr) m_moves_slider->msw_rescale(); -#else - if (m_slider) m_slider->msw_rescale(); -#endif // ENABLE_GCODE_VIEWER // rescale warning legend on the canvas get_canvas3d()->msw_rescale(); @@ -556,55 +426,26 @@ void Preview::msw_rescale() void Preview::jump_layers_slider(wxKeyEvent& evt) { -#if ENABLE_GCODE_VIEWER if (m_layers_slider) m_layers_slider->OnChar(evt); -#else - if (m_slider) - m_slider->OnKeyDown(evt); -#endif // ENABLE_GCODE_VIEWER } -#if ENABLE_GCODE_VIEWER void Preview::move_layers_slider(wxKeyEvent& evt) { if (m_layers_slider != nullptr) m_layers_slider->OnKeyDown(evt); } -#else -void Preview::move_double_slider(wxKeyEvent& evt) -{ - if (m_slider) - m_slider->OnKeyDown(evt); -} -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER void Preview::edit_layers_slider(wxKeyEvent& evt) { if (m_layers_slider != nullptr) m_layers_slider->OnChar(evt); } -#else -void Preview::edit_double_slider(wxKeyEvent& evt) -{ - if (m_slider) - m_slider->OnChar(evt); -} -#endif // ENABLE_GCODE_VIEWER void Preview::bind_event_handlers() { this->Bind(wxEVT_SIZE, &Preview::on_size, this); m_choice_view_type->Bind(wxEVT_CHOICE, &Preview::on_choice_view_type, this); m_combochecklist_features->Bind(wxEVT_CHECKLISTBOX, &Preview::on_combochecklist_features, this); -#if ENABLE_GCODE_VIEWER m_combochecklist_options->Bind(wxEVT_CHECKLISTBOX, &Preview::on_combochecklist_options, this); m_moves_slider->Bind(wxEVT_SCROLL_CHANGED, &Preview::on_moves_slider_scroll_changed, this); -#else - m_checkbox_travel->Bind(wxEVT_CHECKBOX, &Preview::on_checkbox_travel, this); - m_checkbox_retractions->Bind(wxEVT_CHECKBOX, &Preview::on_checkbox_retractions, this); - m_checkbox_unretractions->Bind(wxEVT_CHECKBOX, &Preview::on_checkbox_unretractions, this); - m_checkbox_shells->Bind(wxEVT_CHECKBOX, &Preview::on_checkbox_shells, this); - m_checkbox_legend->Bind(wxEVT_CHECKBOX, &Preview::on_checkbox_legend, this); -#endif // ENABLE_GCODE_VIEWER } void Preview::unbind_event_handlers() @@ -612,76 +453,15 @@ void Preview::unbind_event_handlers() this->Unbind(wxEVT_SIZE, &Preview::on_size, this); m_choice_view_type->Unbind(wxEVT_CHOICE, &Preview::on_choice_view_type, this); m_combochecklist_features->Unbind(wxEVT_CHECKLISTBOX, &Preview::on_combochecklist_features, this); -#if ENABLE_GCODE_VIEWER m_combochecklist_options->Unbind(wxEVT_CHECKLISTBOX, &Preview::on_combochecklist_options, this); m_moves_slider->Unbind(wxEVT_SCROLL_CHANGED, &Preview::on_moves_slider_scroll_changed, this); -#else - m_checkbox_travel->Unbind(wxEVT_CHECKBOX, &Preview::on_checkbox_travel, this); - m_checkbox_retractions->Unbind(wxEVT_CHECKBOX, &Preview::on_checkbox_retractions, this); - m_checkbox_unretractions->Unbind(wxEVT_CHECKBOX, &Preview::on_checkbox_unretractions, this); - m_checkbox_shells->Unbind(wxEVT_CHECKBOX, &Preview::on_checkbox_shells, this); - m_checkbox_legend->Unbind(wxEVT_CHECKBOX, &Preview::on_checkbox_legend, this); -#endif // ENABLE_GCODE_VIEWER } -#if !ENABLE_GCODE_VIEWER -void Preview::show_hide_ui_elements(const std::string& what) -{ - bool enable = (what == "full"); - m_label_show->Enable(enable); - m_combochecklist_features->Enable(enable); - m_checkbox_travel->Enable(enable); - m_checkbox_retractions->Enable(enable); - m_checkbox_unretractions->Enable(enable); - m_checkbox_shells->Enable(enable); - m_checkbox_legend->Enable(enable); - - enable = (what != "none"); - m_label_view_type->Enable(enable); - m_choice_view_type->Enable(enable); - - bool visible = (what != "none"); - m_label_show->Show(visible); - m_combochecklist_features->Show(visible); - m_checkbox_travel->Show(visible); - m_checkbox_retractions->Show(visible); - m_checkbox_unretractions->Show(visible); - m_checkbox_shells->Show(visible); - m_checkbox_legend->Show(visible); - m_label_view_type->Show(visible); - m_choice_view_type->Show(visible); -} -#endif // !ENABLE_GCODE_VIEWER - -#if ENABLE_GCODE_VIEWER void Preview::hide_layers_slider() { m_layers_slider_sizer->Hide((size_t)0); Layout(); } -#else -void Preview::reset_sliders(bool reset_all) -{ - m_enabled = false; - // reset_double_slider(); - if (reset_all) - m_double_slider_sizer->Hide((size_t)0); - else - m_double_slider_sizer->GetItem(size_t(0))->GetSizer()->Hide(1); -} -#endif // ENABLE_GCODE_VIEWER - -#if !ENABLE_GCODE_VIEWER -void Preview::update_sliders(const std::vector<double>& layers_z, bool keep_z_range) -{ - m_enabled = true; - update_double_slider(layers_z, keep_z_range); - - m_double_slider_sizer->Show((size_t)0); - - Layout(); -} -#endif // !ENABLE_GCODE_VIEWER void Preview::on_size(wxSizeEvent& evt) { @@ -693,31 +473,19 @@ void Preview::on_choice_view_type(wxCommandEvent& evt) { m_preferred_color_mode = (m_choice_view_type->GetStringSelection() == L("Tool")) ? "tool" : "feature"; int selection = m_choice_view_type->GetCurrentSelection(); -#if ENABLE_GCODE_VIEWER if (0 <= selection && selection < static_cast<int>(GCodeViewer::EViewType::Count)) m_canvas->set_toolpath_view_type(static_cast<GCodeViewer::EViewType>(selection)); refresh_print(); -#else - if ((0 <= selection) && (selection < (int)GCodePreviewData::Extrusion::Num_View_Types)) - m_gcode_preview_data->extrusion.view_type = (GCodePreviewData::Extrusion::EViewType)selection; - - reload_print(); -#endif // ENABLE_GCODE_VIEWER } void Preview::on_combochecklist_features(wxCommandEvent& evt) { unsigned int flags = Slic3r::GUI::combochecklist_get_flags(m_combochecklist_features); -#if ENABLE_GCODE_VIEWER m_canvas->set_toolpath_role_visibility_flags(flags); -#else - m_gcode_preview_data->extrusion.role_flags = flags; -#endif // ENABLE_GCODE_VIEWER refresh_print(); } -#if ENABLE_GCODE_VIEWER void Preview::on_combochecklist_options(wxCommandEvent& evt) { auto xored = [](unsigned int flags1, unsigned int flags2, unsigned int flag) { @@ -742,39 +510,6 @@ void Preview::on_combochecklist_options(wxCommandEvent& evt) else m_canvas->set_as_dirty(); } -#else -void Preview::on_checkbox_travel(wxCommandEvent& evt) -{ - m_gcode_preview_data->travel.is_visible = m_checkbox_travel->IsChecked(); - m_gcode_preview_data->ranges.feedrate.set_mode(GCodePreviewData::FeedrateKind::TRAVEL, m_gcode_preview_data->travel.is_visible); - // Rather than refresh, reload print so that speed color ranges get recomputed (affected by travel visibility) - reload_print(); -} - -void Preview::on_checkbox_retractions(wxCommandEvent& evt) -{ - m_gcode_preview_data->retraction.is_visible = m_checkbox_retractions->IsChecked(); - refresh_print(); -} - -void Preview::on_checkbox_unretractions(wxCommandEvent& evt) -{ - m_gcode_preview_data->unretraction.is_visible = m_checkbox_unretractions->IsChecked(); - refresh_print(); -} - -void Preview::on_checkbox_shells(wxCommandEvent& evt) -{ - m_gcode_preview_data->shell.is_visible = m_checkbox_shells->IsChecked(); - refresh_print(); -} - -void Preview::on_checkbox_legend(wxCommandEvent& evt) -{ - m_canvas->enable_legend_texture(m_checkbox_legend->IsChecked()); - m_canvas_widget->Refresh(); -} -#endif // ENABLE_GCODE_VIEWER void Preview::update_view_type(bool keep_volumes) { @@ -790,49 +525,34 @@ void Preview::update_view_type(bool keep_volumes) int type = m_choice_view_type->FindString(choice); if (m_choice_view_type->GetSelection() != type) { m_choice_view_type->SetSelection(type); -#if ENABLE_GCODE_VIEWER - if ((0 <= type) && (type < static_cast<int>(GCodeViewer::EViewType::Count))) + if (0 <= type && type < static_cast<int>(GCodeViewer::EViewType::Count)) m_canvas->set_gcode_view_preview_type(static_cast<GCodeViewer::EViewType>(type)); -#else - if (0 <= type && type < (int)GCodePreviewData::Extrusion::Num_View_Types) - m_gcode_preview_data->extrusion.view_type = (GCodePreviewData::Extrusion::EViewType)type; -#endif // ENABLE_GCODE_VIEWER m_preferred_color_mode = "feature"; } -#if ENABLE_GCODE_VIEWER reload_print(keep_volumes); -#else - reload_print(); -#endif // ENABLE_GCODE_VIEWER } -#if ENABLE_GCODE_VIEWER void Preview::update_bottom_toolbar() { combochecklist_set_flags(m_combochecklist_features, m_canvas->get_toolpath_role_visibility_flags()); combochecklist_set_flags(m_combochecklist_options, m_canvas->get_gcode_options_visibility_flags()); // updates visibility of features combobox - if (m_bottom_toolbar_panel->IsShown()) - { + if (m_bottom_toolbar_panel->IsShown()) { wxSizer* sizer = m_bottom_toolbar_panel->GetSizer(); bool show = !m_canvas->is_gcode_legend_enabled() || m_canvas->get_gcode_view_type() != GCodeViewer::EViewType::FeatureType; - if (show) - { - if (sizer->GetItem(m_combochecklist_features) == nullptr) - { + if (show) { + if (sizer->GetItem(m_combochecklist_features) == nullptr) { sizer->Insert(m_combochecklist_features_pos, m_combochecklist_features, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 5); sizer->Show(m_combochecklist_features); sizer->Layout(); Refresh(); } } - else - { - if (sizer->GetItem(m_combochecklist_features) != nullptr) - { + else { + if (sizer->GetItem(m_combochecklist_features) != nullptr) { sizer->Hide(m_combochecklist_features); sizer->Detach(m_combochecklist_features); sizer->Layout(); @@ -841,9 +561,7 @@ void Preview::update_bottom_toolbar() } } } -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER wxBoxSizer* Preview::create_layers_slider_sizer() { wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); @@ -875,37 +593,6 @@ wxBoxSizer* Preview::create_layers_slider_sizer() return sizer; } -#else -void Preview::create_double_slider() -{ - m_slider = new DoubleSlider::Control(this, wxID_ANY, 0, 0, 0, 100); - - bool sla_print_technology = wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptSLA; - bool sequential_print = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("complete_objects"); - m_slider->SetDrawMode(sla_print_technology, sequential_print); - - m_double_slider_sizer->Add(m_slider, 0, wxEXPAND, 0); - - - // sizer, m_canvas_widget - m_canvas_widget->Bind(wxEVT_KEY_DOWN, &Preview::update_double_slider_from_canvas, this); - m_canvas_widget->Bind(wxEVT_KEY_UP, [this](wxKeyEvent& event) { - if (event.GetKeyCode() == WXK_SHIFT) - m_slider->UseDefaultColors(true); - event.Skip(); - }); - - m_slider->Bind(wxEVT_SCROLL_CHANGED, &Preview::on_sliders_scroll_changed, this); - - Bind(DoubleSlider::wxCUSTOMEVT_TICKSCHANGED, [this](wxEvent&) { - Model& model = wxGetApp().plater()->model(); - model.custom_gcode_per_print_z = m_slider->GetTicksValues(); - m_schedule_background_process(); - - update_view_type(false); - }); -} -#endif // ENABLE_GCODE_VIEWER // Find an index of a value in a sorted vector, which is in <z-eps, z+eps>. // Returns -1 if there is no such member. @@ -934,12 +621,7 @@ static int find_close_layer_idx(const std::vector<double>& zs, double &z, double return -1; } -#if ENABLE_GCODE_VIEWER void Preview::check_layers_slider_values(std::vector<CustomGCode::Item>& ticks_from_model, const std::vector<double>& layers_z) -#else -void Preview::check_slider_values(std::vector<CustomGCode::Item>& ticks_from_model, - const std::vector<double>& layers_z) -#endif // ENABLE_GCODE_VIEWER { // All ticks that would end up outside the slider range should be erased. // TODO: this should be placed into more appropriate part of code, @@ -956,7 +638,6 @@ void Preview::check_slider_values(std::vector<CustomGCode::Item>& ticks_from_mod m_schedule_background_process(); } -#if ENABLE_GCODE_VIEWER void Preview::update_layers_slider(const std::vector<double>& layers_z, bool keep_z_range) { // Save the initial slider span. @@ -1009,64 +690,8 @@ void Preview::update_layers_slider(const std::vector<double>& layers_z, bool kee m_layers_slider_sizer->Show((size_t)0); Layout(); } -#else -void Preview::update_double_slider(const std::vector<double> & layers_z, bool keep_z_range) -{ - // Save the initial slider span. - double z_low = m_slider->GetLowerValueD(); - double z_high = m_slider->GetHigherValueD(); - bool was_empty = m_slider->GetMaxValue() == 0; - bool force_sliders_full_range = was_empty; - if (!keep_z_range) - { - bool span_changed = layers_z.empty() || std::abs(layers_z.back() - m_slider->GetMaxValueD()) > DoubleSlider::epsilon()/*1e-6*/; - force_sliders_full_range |= span_changed; - } - bool snap_to_min = force_sliders_full_range || m_slider->is_lower_at_min(); - bool snap_to_max = force_sliders_full_range || m_slider->is_higher_at_max(); - - // Detect and set manipulation mode for double slider - update_double_slider_mode(); - - CustomGCode::Info& ticks_info_from_model = wxGetApp().plater()->model().custom_gcode_per_print_z; - check_slider_values(ticks_info_from_model.gcodes, layers_z); - - m_slider->SetSliderValues(layers_z); - assert(m_slider->GetMinValue() == 0); - m_slider->SetMaxValue(layers_z.empty() ? 0 : layers_z.size() - 1); - - int idx_low = 0; - int idx_high = m_slider->GetMaxValue(); - if (!layers_z.empty()) { - if (!snap_to_min) { - int idx_new = find_close_layer_idx(layers_z, z_low, DoubleSlider::epsilon()/*1e-6*/); - if (idx_new != -1) - idx_low = idx_new; - } - if (!snap_to_max) { - int idx_new = find_close_layer_idx(layers_z, z_high, DoubleSlider::epsilon()/*1e-6*/); - if (idx_new != -1) - idx_high = idx_new; - } - } - m_slider->SetSelectionSpan(idx_low, idx_high); - - m_slider->SetTicksValues(ticks_info_from_model); - - bool sla_print_technology = wxGetApp().plater()->printer_technology() == ptSLA; - bool sequential_print = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("complete_objects"); - m_slider->SetDrawMode(sla_print_technology, sequential_print); - - m_slider->SetExtruderColors(wxGetApp().plater()->get_extruder_colors_from_plater_config()); -} -#endif // ENABLE_GCODE_VIEWER - -#if ENABLE_GCODE_VIEWER void Preview::update_layers_slider_mode() -#else -void Preview::update_double_slider_mode() -#endif // ENABLE_GCODE_VIEWER { // true -> single-extruder printer profile OR // multi-extruder printer profile , but whole model is printed by only one extruder @@ -1115,28 +740,15 @@ void Preview::update_double_slider_mode() } } -#if ENABLE_GCODE_VIEWER m_layers_slider->SetModeAndOnlyExtruder(one_extruder_printed_model, only_extruder); -#else - m_slider->SetModeAndOnlyExtruder(one_extruder_printed_model, only_extruder); -#endif // ENABLE_GCODE_VIEWER } -#if ENABLE_GCODE_VIEWER void Preview::reset_layers_slider() { m_layers_slider->SetHigherValue(0); m_layers_slider->SetLowerValue(0); } -#else -void Preview::reset_double_slider() -{ - m_slider->SetHigherValue(0); - m_slider->SetLowerValue(0); -} -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER void Preview::update_layers_slider_from_canvas(wxKeyEvent& event) { if (event.HasModifiers()) { @@ -1185,42 +797,12 @@ void Preview::enable_moves_slider(bool enable) m_moves_slider->Refresh(); } } -#else -void Preview::update_double_slider_from_canvas(wxKeyEvent & event) -{ - if (event.HasModifiers()) { - event.Skip(); - return; - } - - const auto key = event.GetKeyCode(); - - if (key == 'U' || key == 'D') { - const int new_pos = key == 'U' ? m_slider->GetHigherValue() + 1 : m_slider->GetHigherValue() - 1; - m_slider->SetHigherValue(new_pos); - if (event.ShiftDown() || m_slider->is_one_layer()) m_slider->SetLowerValue(m_slider->GetHigherValue()); - } - else if (key == 'L') { - m_checkbox_legend->SetValue(!m_checkbox_legend->GetValue()); - auto evt = wxCommandEvent(); - on_checkbox_legend(evt); - } - else if (key == 'S') - m_slider->ChangeOneLayerLock(); - else if (key == WXK_SHIFT) - m_slider->UseDefaultColors(false); - else - event.Skip(); -} -#endif // ENABLE_GCODE_VIEWER void Preview::load_print_as_fff(bool keep_z_range) { -#if ENABLE_GCODE_VIEWER if (wxGetApp().mainframe == nullptr || wxGetApp().is_recreating_gui()) // avoid processing while mainframe is being constructed return; -#endif // ENABLE_GCODE_VIEWER if (m_loaded || m_process->current_printer_technology() != ptFFF) return; @@ -1245,17 +827,11 @@ void Preview::load_print_as_fff(bool keep_z_range) } } -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor() && !has_layers) { hide_layers_slider(); m_left_sizer->Hide(m_bottom_toolbar_panel); m_left_sizer->Layout(); Refresh(); -#else - if (! has_layers) { - reset_sliders(true); - m_canvas->reset_legend_texture(); -#endif // ENABLE_GCODE_VIEWER m_canvas_widget->Refresh(); return; } @@ -1267,100 +843,58 @@ void Preview::load_print_as_fff(bool keep_z_range) int tool_idx = m_choice_view_type->FindString(_L("Tool")); int type = (number_extruders > 1) ? tool_idx /* color by a tool number */ : 0; // color by a feature type m_choice_view_type->SetSelection(type); -#if ENABLE_GCODE_VIEWER if (0 <= type && type < static_cast<int>(GCodeViewer::EViewType::Count)) m_canvas->set_gcode_view_preview_type(static_cast<GCodeViewer::EViewType>(type)); -#else - if ((0 <= type) && (type < (int)GCodePreviewData::Extrusion::Num_View_Types)) - m_gcode_preview_data->extrusion.view_type = (GCodePreviewData::Extrusion::EViewType)type; -#endif // ENABLE_GCODE_VIEWER // If the->SetSelection changed the following line, revert it to "decide yourself". m_preferred_color_mode = "tool_or_feature"; } -#if ENABLE_GCODE_VIEWER GCodeViewer::EViewType gcode_view_type = m_canvas->get_gcode_view_preview_type(); bool gcode_preview_data_valid = !m_gcode_result->moves.empty(); -#else - bool gcode_preview_data_valid = print->is_step_done(psGCodeExport) && ! m_gcode_preview_data->empty(); -#endif // ENABLE_GCODE_VIEWER // Collect colors per extruder. std::vector<std::string> colors; std::vector<CustomGCode::Item> color_print_values = {}; // set color print values, if it si selected "ColorPrint" view type -#if ENABLE_GCODE_VIEWER if (gcode_view_type == GCodeViewer::EViewType::ColorPrint) { colors = wxGetApp().plater()->get_colors_for_color_print(m_gcode_result); -#else - if (m_gcode_preview_data->extrusion.view_type == GCodePreviewData::Extrusion::ColorPrint) { - colors = wxGetApp().plater()->get_colors_for_color_print(); - colors.push_back("#808080"); // gray color for pause print or custom G-code -#endif // ENABLE_GCODE_VIEWER if (!gcode_preview_data_valid) { color_print_values = wxGetApp().plater()->model().custom_gcode_per_print_z.gcodes; -#if ENABLE_GCODE_VIEWER colors.push_back("#808080"); // gray color for pause print or custom G-code -#endif // ENABLE_GCODE_VIEWER } } -#if ENABLE_GCODE_VIEWER else if (gcode_preview_data_valid || gcode_view_type == GCodeViewer::EViewType::Tool) { colors = wxGetApp().plater()->get_extruder_colors_from_plater_config(m_gcode_result); -#else - else if (gcode_preview_data_valid || (m_gcode_preview_data->extrusion.view_type == GCodePreviewData::Extrusion::Tool) ) { - colors = wxGetApp().plater()->get_extruder_colors_from_plater_config(); -#endif // ENABLE_GCODE_VIEWER color_print_values.clear(); } if (IsShown()) { -#if ENABLE_GCODE_VIEWER std::vector<double> zs; -#endif // ENABLE_GCODE_VIEWER m_canvas->set_selected_extruder(0); if (gcode_preview_data_valid) { // Load the real G-code preview. -#if ENABLE_GCODE_VIEWER m_canvas->load_gcode_preview(*m_gcode_result); m_canvas->refresh_gcode_preview(*m_gcode_result, colors); m_left_sizer->Show(m_bottom_toolbar_panel); m_left_sizer->Layout(); Refresh(); zs = m_canvas->get_gcode_layers_zs(); -#else - m_canvas->load_gcode_preview(*m_gcode_preview_data, colors); -#endif // ENABLE_GCODE_VIEWER m_loaded = true; } else { // Load the initial preview based on slices, not the final G-code. m_canvas->load_preview(colors, color_print_values); -#if ENABLE_GCODE_VIEWER m_left_sizer->Hide(m_bottom_toolbar_panel); m_left_sizer->Layout(); Refresh(); zs = m_canvas->get_volumes_print_zs(true); -#endif // ENABLE_GCODE_VIEWER } -#if !ENABLE_GCODE_VIEWER - show_hide_ui_elements(gcode_preview_data_valid ? "full" : "simple"); - std::vector<double> zs = m_canvas->get_current_print_zs(true); -#endif // !ENABLE_GCODE_VIEWER if (zs.empty()) { // all layers filtered out -#if ENABLE_GCODE_VIEWER hide_layers_slider(); -#else - reset_sliders(true); -#endif // ENABLE_GCODE_VIEWER m_canvas_widget->Refresh(); } else -#if ENABLE_GCODE_VIEWER update_layers_slider(zs, keep_z_range); -#else - update_sliders(zs, keep_z_range); -#endif // ENABLE_GCODE_VIEWER } } @@ -1375,8 +909,7 @@ void Preview::load_print_as_sla() std::vector<double> zs; double initial_layer_height = print->material_config().initial_layer_height.value; for (const SLAPrintObject* obj : print->objects()) - if (obj->is_step_done(slaposSliceSupports) && !obj->get_slice_index().empty()) - { + if (obj->is_step_done(slaposSliceSupports) && !obj->get_slice_index().empty()) { auto low_coord = obj->get_slice_index().front().print_level(); for (auto& rec : obj->get_slice_index()) zs.emplace_back(initial_layer_height + (rec.print_level() - low_coord) * SCALING_FACTOR); @@ -1386,74 +919,43 @@ void Preview::load_print_as_sla() m_canvas->reset_clipping_planes_cache(); n_layers = (unsigned int)zs.size(); - if (n_layers == 0) - { -#if ENABLE_GCODE_VIEWER + if (n_layers == 0) { hide_layers_slider(); -#else - reset_sliders(true); -#endif // ENABLE_GCODE_VIEWER m_canvas_widget->Refresh(); } - if (IsShown()) - { + if (IsShown()) { m_canvas->load_sla_preview(); -#if ENABLE_GCODE_VIEWER m_left_sizer->Hide(m_bottom_toolbar_panel); m_left_sizer->Hide(m_bottom_toolbar_panel); m_left_sizer->Layout(); Refresh(); -#else - show_hide_ui_elements("none"); -#endif // ENABLE_GCODE_VIEWER if (n_layers > 0) -#if ENABLE_GCODE_VIEWER update_layers_slider(zs); -#else - update_sliders(zs); -#endif // ENABLE_GCODE_VIEWER m_loaded = true; } } -#if ENABLE_GCODE_VIEWER void Preview::on_layers_slider_scroll_changed(wxCommandEvent& event) -#else -void Preview::on_sliders_scroll_changed(wxCommandEvent& event) -#endif // ENABLE_GCODE_VIEWER { if (IsShown()) { PrinterTechnology tech = m_process->current_printer_technology(); if (tech == ptFFF) { -#if ENABLE_GCODE_VIEWER m_canvas->set_volumes_z_range({ m_layers_slider->GetLowerValueD(), m_layers_slider->GetHigherValueD() }); m_canvas->set_toolpaths_z_range({ static_cast<unsigned int>(m_layers_slider->GetLowerValue()), static_cast<unsigned int>(m_layers_slider->GetHigherValue()) }); m_canvas->set_as_dirty(); -#else - m_canvas->set_toolpaths_range(m_slider->GetLowerValueD() - 1e-6, m_slider->GetHigherValueD() + 1e-6); - m_canvas->render(); - m_canvas->set_use_clipping_planes(false); -#endif // ENABLE_GCODE_VIEWER } else if (tech == ptSLA) { -#if ENABLE_GCODE_VIEWER m_canvas->set_clipping_plane(0, ClippingPlane(Vec3d::UnitZ(), -m_layers_slider->GetLowerValueD())); m_canvas->set_clipping_plane(1, ClippingPlane(-Vec3d::UnitZ(), m_layers_slider->GetHigherValueD())); m_canvas->set_use_clipping_planes(m_layers_slider->GetHigherValue() != 0); -#else - m_canvas->set_clipping_plane(0, ClippingPlane(Vec3d::UnitZ(), -m_slider->GetLowerValueD())); - m_canvas->set_clipping_plane(1, ClippingPlane(-Vec3d::UnitZ(), m_slider->GetHigherValueD())); - m_canvas->set_use_clipping_planes(m_slider->GetHigherValue() != 0); -#endif // ENABLE_GCODE_VIEWER m_canvas->render(); } } } -#if ENABLE_GCODE_VIEWER void Preview::on_moves_slider_scroll_changed(wxCommandEvent& event) { m_canvas->update_gcode_sequential_view_current(static_cast<unsigned int>(m_moves_slider->GetLowerValueD() - 1.0), static_cast<unsigned int>(m_moves_slider->GetHigherValueD() - 1.0)); @@ -1477,7 +979,6 @@ wxString Preview::get_option_type_string(OptionType type) const default: { return ""; } } } -#endif // ENABLE_GCODE_VIEWER } // namespace GUI } // namespace Slic3r diff --git a/src/slic3r/GUI/GUI_Preview.hpp b/src/slic3r/GUI/GUI_Preview.hpp index 5ad70a1ac..76fef117e 100644 --- a/src/slic3r/GUI/GUI_Preview.hpp +++ b/src/slic3r/GUI/GUI_Preview.hpp @@ -7,9 +7,7 @@ #include "libslic3r/CustomGCode.hpp" #include <string> -#if ENABLE_GCODE_VIEWER #include "libslic3r/GCode/GCodeProcessor.hpp" -#endif // ENABLE_GCODE_VIEWER class wxNotebook; class wxGLCanvas; @@ -25,9 +23,6 @@ namespace Slic3r { class DynamicPrintConfig; class Print; class BackgroundSlicingProcess; -#if !ENABLE_GCODE_VIEWER -class GCodePreviewData; -#endif // !ENABLE_GCODE_VIEWER class Model; namespace DoubleSlider { @@ -83,35 +78,19 @@ class Preview : public wxPanel { wxGLCanvas* m_canvas_widget; GLCanvas3D* m_canvas; -#if ENABLE_GCODE_VIEWER wxBoxSizer* m_left_sizer; wxBoxSizer* m_layers_slider_sizer; wxPanel* m_bottom_toolbar_panel; -#else - wxBoxSizer* m_double_slider_sizer; -#endif // ENABLE_GCODE_VIEWER wxStaticText* m_label_view_type; wxChoice* m_choice_view_type; wxStaticText* m_label_show; wxComboCtrl* m_combochecklist_features; -#if ENABLE_GCODE_VIEWER size_t m_combochecklist_features_pos; wxComboCtrl* m_combochecklist_options; -#else - wxCheckBox* m_checkbox_travel; - wxCheckBox* m_checkbox_retractions; - wxCheckBox* m_checkbox_unretractions; - wxCheckBox* m_checkbox_shells; - wxCheckBox* m_checkbox_legend; -#endif // ENABLE_GCODE_VIEWER DynamicPrintConfig* m_config; BackgroundSlicingProcess* m_process; -#if ENABLE_GCODE_VIEWER GCodeProcessor::Result* m_gcode_result; -#else - GCodePreviewData* m_gcode_preview_data; -#endif // ENABLE_GCODE_VIEWER #ifdef __linux__ // We are getting mysterious crashes on Linux in gtk due to OpenGL context activation GH #1874 #1955. @@ -126,19 +105,11 @@ class Preview : public wxPanel std::string m_preferred_color_mode; bool m_loaded; -#if !ENABLE_GCODE_VIEWER - bool m_enabled; -#endif // !ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER DoubleSlider::Control* m_layers_slider{ nullptr }; DoubleSlider::Control* m_moves_slider{ nullptr }; -#else - DoubleSlider::Control* m_slider {nullptr}; -#endif // ENABLE_GCODE_VIEWER public: -#if ENABLE_GCODE_VIEWER enum class OptionType : unsigned int { Travel, @@ -153,12 +124,8 @@ public: Legend }; -Preview(wxWindow* parent, Model* model, DynamicPrintConfig* config, BackgroundSlicingProcess* process, - GCodeProcessor::Result* gcode_result, std::function<void()> schedule_background_process = []() {}); -#else -Preview(wxWindow* parent, Model* model, DynamicPrintConfig* config, - BackgroundSlicingProcess* process, GCodePreviewData* gcode_preview_data, std::function<void()> schedule_background_process = []() {}); -#endif // ENABLE_GCODE_VIEWER + Preview(wxWindow* parent, Model* model, DynamicPrintConfig* config, BackgroundSlicingProcess* process, + GCodeProcessor::Result* gcode_result, std::function<void()> schedule_background_process = []() {}); virtual ~Preview(); wxGLCanvas* get_wxglcanvas() { return m_canvas_widget; } @@ -167,9 +134,6 @@ Preview(wxWindow* parent, Model* model, DynamicPrintConfig* config, void set_as_dirty(); void set_number_extruders(unsigned int number_extruders); -#if !ENABLE_GCODE_VIEWER - void set_enabled(bool enabled); -#endif // !ENABLE_GCODE_VIEWER void bed_shape_changed(); void select_view(const std::string& direction); void set_drop_target(wxDropTarget* target); @@ -180,24 +144,17 @@ Preview(wxWindow* parent, Model* model, DynamicPrintConfig* config, void msw_rescale(); void jump_layers_slider(wxKeyEvent& evt); -#if ENABLE_GCODE_VIEWER void move_layers_slider(wxKeyEvent& evt); void edit_layers_slider(wxKeyEvent& evt); -#else - void move_double_slider(wxKeyEvent& evt); - void edit_double_slider(wxKeyEvent& evt); -#endif // ENABLE_GCODE_VIEWER void update_view_type(bool keep_volumes); bool is_loaded() const { return m_loaded; } -#if ENABLE_GCODE_VIEWER void update_bottom_toolbar(); void update_moves_slider(); void enable_moves_slider(bool enable); void hide_layers_slider(); -#endif // ENABLE_GCODE_VIEWER private: bool init(wxWindow* parent, Model* model); @@ -205,27 +162,11 @@ private: void bind_event_handlers(); void unbind_event_handlers(); -#if !ENABLE_GCODE_VIEWER - void show_hide_ui_elements(const std::string& what); - - void reset_sliders(bool reset_all); - void update_sliders(const std::vector<double>& layers_z, bool keep_z_range = false); -#endif // !ENABLE_GCODE_VIEWER - void on_size(wxSizeEvent& evt); void on_choice_view_type(wxCommandEvent& evt); void on_combochecklist_features(wxCommandEvent& evt); -#if ENABLE_GCODE_VIEWER void on_combochecklist_options(wxCommandEvent& evt); -#else - void on_checkbox_travel(wxCommandEvent& evt); - void on_checkbox_retractions(wxCommandEvent& evt); - void on_checkbox_unretractions(wxCommandEvent& evt); - void on_checkbox_shells(wxCommandEvent& evt); - void on_checkbox_legend(wxCommandEvent& evt); -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER // Create/Update/Reset double slider on 3dPreview wxBoxSizer* create_layers_slider_sizer(); void check_layers_slider_values(std::vector<CustomGCode::Item>& ticks_from_model, @@ -235,28 +176,13 @@ private: void update_layers_slider_mode(); // update vertical DoubleSlider after keyDown in canvas void update_layers_slider_from_canvas(wxKeyEvent& event); -#else - // Create/Update/Reset double slider on 3dPreview - void create_double_slider(); - void check_slider_values(std::vector<CustomGCode::Item>& ticks_from_model, - const std::vector<double>& layers_z); - void reset_double_slider(); - void update_double_slider(const std::vector<double>& layers_z, bool keep_z_range = false); - void update_double_slider_mode(); - // update DoubleSlider after keyDown in canvas - void update_double_slider_from_canvas(wxKeyEvent& event); -#endif // ENABLE_GCODE_VIEWER void load_print_as_fff(bool keep_z_range = false); void load_print_as_sla(); -#if ENABLE_GCODE_VIEWER void on_layers_slider_scroll_changed(wxCommandEvent& event); void on_moves_slider_scroll_changed(wxCommandEvent& event); wxString get_option_type_string(OptionType type) const; -#else - void on_sliders_scroll_changed(wxCommandEvent& event); -#endif // ENABLE_GCODE_VIEWER }; } // namespace GUI From a1905d9b9e9871815899a72029d5f52df7f6eb32 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Thu, 19 Nov 2020 14:59:46 +0100 Subject: [PATCH 052/138] ENABLE_GCODE_VIEWER set as default in: MainFrame hpp/cpp Plater hpp/cpp --- src/slic3r/GUI/MainFrame.cpp | 174 +------------------------------- src/slic3r/GUI/MainFrame.hpp | 8 -- src/slic3r/GUI/Plater.cpp | 188 +---------------------------------- src/slic3r/GUI/Plater.hpp | 27 +---- 4 files changed, 5 insertions(+), 392 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 67f7db55f..32443c7d5 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -117,7 +117,6 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S // Load the icon either from the exe, or from the ico file. #if _WIN32 { -#if ENABLE_GCODE_VIEWER wxString src_path; wxFileName::SplitPath(wxStandardPaths::Get().GetExecutablePath(), &src_path, nullptr, nullptr, wxPATH_NATIVE); switch (wxGetApp().get_app_mode()) { @@ -128,22 +127,14 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S wxIconLocation icon_location; icon_location.SetFileName(src_path); SetIcon(icon_location); -#else - TCHAR szExeFileName[MAX_PATH]; - GetModuleFileName(nullptr, szExeFileName, MAX_PATH); - SetIcon(wxIcon(szExeFileName, wxBITMAP_TYPE_ICO)); -#endif // ENABLE_GCODE_VIEWER } #else -#if ENABLE_GCODE_VIEWER switch (wxGetApp().get_app_mode()) { default: case GUI_App::EAppMode::Editor: { -#endif // ENABLE_GCODE_VIEWER SetIcon(wxIcon(Slic3r::var("PrusaSlicer_128px.png"), wxBITMAP_TYPE_PNG)); -#if ENABLE_GCODE_VIEWER break; } case GUI_App::EAppMode::GCodeViewer: @@ -152,15 +143,12 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S break; } } -#endif // ENABLE_GCODE_VIEWER #endif // _WIN32 // initialize status bar m_statusbar = std::make_shared<ProgressStatusBar>(this); m_statusbar->set_font(GUI::wxGetApp().normal_font()); -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) -#endif // ENABLE_GCODE_VIEWER m_statusbar->embed(this); m_statusbar->set_status_text(_L("Version") + " " + SLIC3R_VERSION + " - " + @@ -168,7 +156,6 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S // initialize tabpanel and menubar init_tabpanel(); -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_gcode_viewer()) init_menubar_as_gcodeviewer(); else @@ -186,9 +173,6 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S wxAcceleratorTable accel(6, entries); SetAcceleratorTable(accel); #endif // _WIN32 -#else - init_menubar(); -#endif // ENABLE_GCODE_VIEWER // set default tooltip timer in msec // SetAutoPop supposedly accepts long integers but some bug doesn't allow for larger values @@ -256,9 +240,7 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S update_ui_from_settings(); // FIXME (?) if (m_plater != nullptr) { -#if ENABLE_GCODE_VIEWER m_plater->get_collapse_toolbar().set_enabled(wxGetApp().app_config->get("show_collapse_button") == "1"); -#endif // ENABLE_GCODE_VIEWER m_plater->show_action_buttons(true); } } @@ -301,16 +283,10 @@ void MainFrame::update_layout() Layout(); }; -#if ENABLE_GCODE_VIEWER ESettingsLayout layout = wxGetApp().is_gcode_viewer() ? ESettingsLayout::GCodeViewer : (wxGetApp().app_config->get("old_settings_layout_mode") == "1" ? ESettingsLayout::Old : wxGetApp().app_config->get("new_settings_layout_mode") == "1" ? ESettingsLayout::New : wxGetApp().app_config->get("dlg_settings_layout_mode") == "1" ? ESettingsLayout::Dlg : ESettingsLayout::Old); -#else - ESettingsLayout layout = wxGetApp().app_config->get("old_settings_layout_mode") == "1" ? ESettingsLayout::Old : - wxGetApp().app_config->get("new_settings_layout_mode") == "1" ? ESettingsLayout::New : - wxGetApp().app_config->get("dlg_settings_layout_mode") == "1" ? ESettingsLayout::Dlg : ESettingsLayout::Old; -#endif // ENABLE_GCODE_VIEWER if (m_layout == layout) return; @@ -374,7 +350,6 @@ void MainFrame::update_layout() m_plater->Show(); break; } -#if ENABLE_GCODE_VIEWER case ESettingsLayout::GCodeViewer: { m_main_sizer->Add(m_plater, 1, wxEXPAND); @@ -384,7 +359,6 @@ void MainFrame::update_layout() m_plater->Show(); break; } -#endif // ENABLE_GCODE_VIEWER } #ifdef __WXMSW__ @@ -453,7 +427,6 @@ void MainFrame::shutdown() } #endif // _WIN32 -#if ENABLE_GCODE_VIEWER if (m_plater != nullptr) { m_plater->stop_jobs(); @@ -466,19 +439,6 @@ void MainFrame::shutdown() // see: https://github.com/prusa3d/PrusaSlicer/issues/3964 m_plater->reset_canvas_volumes(); } -#else - if (m_plater) - m_plater->stop_jobs(); - - // Unbinding of wxWidgets event handling in canvases needs to be done here because on MAC, - // when closing the application using Command+Q, a mouse event is triggered after this lambda is completed, - // causing a crash - if (m_plater) m_plater->unbind_canvas_event_handlers(); - - // Cleanup of canvases' volumes needs to be done here or a crash may happen on some Linux Debian flavours - // see: https://github.com/prusa3d/PrusaSlicer/issues/3964 - if (m_plater) m_plater->reset_canvas_volumes(); -#endif // ENABLE_GCODE_VIEWER // Weird things happen as the Paint messages are floating around the windows being destructed. // Avoid the Paint messages by hiding the main window. @@ -526,11 +486,7 @@ void MainFrame::update_title() title += (project + " - "); } -#if ENABLE_GCODE_VIEWER std::string build_id = wxGetApp().is_editor() ? SLIC3R_BUILD_ID : GCODEVIEWER_BUILD_ID; -#else - std::string build_id = SLIC3R_BUILD_ID; -#endif // ENABLE_GCODE_VIEWER size_t idx_plus = build_id.find('+'); if (idx_plus != build_id.npos) { // Parse what is behind the '+'. If there is a number, then it is a build number after the label, and full build ID is shown. @@ -545,13 +501,10 @@ void MainFrame::update_title() #endif } } -#if ENABLE_GCODE_VIEWER + title += wxString(build_id); if (wxGetApp().is_editor()) title += (" " + _L("based on Slic3r")); -#else - title += (wxString(build_id) + " " + _L("based on Slic3r")); -#endif // ENABLE_GCODE_VIEWER SetTitle(title); } @@ -600,9 +553,7 @@ void MainFrame::init_tabpanel() // or when the preset's "modified" status changes. Bind(EVT_TAB_PRESETS_CHANGED, &MainFrame::on_presets_changed, this); // #ys_FIXME_to_delete -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) -#endif // ENABLE_GCODE_VIEWER create_preset_tabs(); if (m_plater) { @@ -811,9 +762,7 @@ bool MainFrame::can_change_view() const int page_id = m_tabpanel->GetSelection(); return page_id != wxNOT_FOUND && dynamic_cast<const Slic3r::GUI::Plater*>(m_tabpanel->GetPage((size_t)page_id)) != nullptr; } -#if ENABLE_GCODE_VIEWER case ESettingsLayout::GCodeViewer: { return true; } -#endif // ENABLE_GCODE_VIEWER } } @@ -905,7 +854,6 @@ void MainFrame::on_sys_color_changed() msw_rescale_menu(menu_bar->GetMenu(id)); } -#if ENABLE_GCODE_VIEWER #ifdef _MSC_VER // \xA0 is a non-breaking space. It is entered here to spoil the automatic accelerators, // as the simple numeric accelerators spoil all numeric data entry. @@ -940,17 +888,13 @@ static wxMenu* generate_help_menu() [](wxCommandEvent&) { Slic3r::GUI::desktop_open_datadir_folder(); }); append_menu_item(helpMenu, wxID_ANY, _L("Report an I&ssue"), wxString::Format(_L("Report an issue on %s"), SLIC3R_APP_NAME), [](wxCommandEvent&) { wxLaunchDefaultBrowser("https://github.com/prusa3d/slic3r/issues/new"); }); -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) -#endif // ENABLE_GCODE_VIEWER append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("&About %s"), SLIC3R_APP_NAME), _L("Show about dialog"), [](wxCommandEvent&) { Slic3r::GUI::about(); }); -#if ENABLE_GCODE_VIEWER else append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("&About %s"), GCODEVIEWER_APP_NAME), _L("Show about dialog"), [](wxCommandEvent&) { Slic3r::GUI::about(); }); -#endif // ENABLE_GCODE_VIEWER - helpMenu->AppendSeparator(); + helpMenu->AppendSeparator(); append_menu_item(helpMenu, wxID_ANY, _L("Keyboard Shortcuts") + sep + "&?", _L("Show the list of the keyboard shortcuts"), [](wxCommandEvent&) { wxGetApp().keyboard_shortcuts(); }); #if ENABLE_THUMBNAIL_GENERATOR_DEBUG @@ -985,9 +929,6 @@ static void add_common_view_menu_items(wxMenu* view_menu, MainFrame* mainFrame, } void MainFrame::init_menubar_as_editor() -#else -void MainFrame::init_menubar() -#endif // ENABLE_GCODE_VIEWER { #ifdef __APPLE__ wxMenuBar::SetAutoWindowMenu(false); @@ -1158,18 +1099,6 @@ void MainFrame::init_menubar() [this](wxCommandEvent&) { Close(false); }, "exit"); } -#if !ENABLE_GCODE_VIEWER -#ifdef _MSC_VER - // \xA0 is a non-breaking space. It is entered here to spoil the automatic accelerators, - // as the simple numeric accelerators spoil all numeric data entry. - wxString sep = "\t\xA0"; - wxString sep_space = "\xA0"; -#else - wxString sep = " - "; - wxString sep_space = ""; -#endif -#endif // !ENABLE_GCODE_VIEWER - // Edit menu wxMenu* editMenu = nullptr; if (m_plater != nullptr) @@ -1252,21 +1181,6 @@ void MainFrame::init_menubar() [this](){return can_change_view(); }, this); } -#if !ENABLE_GCODE_VIEWER -#if _WIN32 - // This is needed on Windows to fake the CTRL+# of the window menu when using the numpad - wxAcceleratorEntry entries[6]; - entries[0].Set(wxACCEL_CTRL, WXK_NUMPAD1, wxID_HIGHEST + 1); - entries[1].Set(wxACCEL_CTRL, WXK_NUMPAD2, wxID_HIGHEST + 2); - entries[2].Set(wxACCEL_CTRL, WXK_NUMPAD3, wxID_HIGHEST + 3); - entries[3].Set(wxACCEL_CTRL, WXK_NUMPAD4, wxID_HIGHEST + 4); - entries[4].Set(wxACCEL_CTRL, WXK_NUMPAD5, wxID_HIGHEST + 5); - entries[5].Set(wxACCEL_CTRL, WXK_NUMPAD6, wxID_HIGHEST + 6); - wxAcceleratorTable accel(6, entries); - SetAcceleratorTable(accel); -#endif // _WIN32 -#endif // !ENABLE_GCODE_VIEWER - windowMenu->AppendSeparator(); append_menu_item(windowMenu, wxID_ANY, _L("Print &Host Upload Queue") + "\tCtrl+J", _L("Display the Print Host Upload Queue window"), [this](wxCommandEvent&) { m_printhost_queue_dlg->Show(); }, "upload_queue", nullptr, []() {return true; }, this); @@ -1281,28 +1195,7 @@ void MainFrame::init_menubar() wxMenu* viewMenu = nullptr; if (m_plater) { viewMenu = new wxMenu(); -#if ENABLE_GCODE_VIEWER add_common_view_menu_items(viewMenu, this, std::bind(&MainFrame::can_change_view, this)); -#else - // The camera control accelerators are captured by GLCanvas3D::on_char(). - append_menu_item(viewMenu, wxID_ANY, _L("Iso") + sep + "&0", _L("Iso View"), [this](wxCommandEvent&) { select_view("iso"); }, - "", nullptr, [this](){return can_change_view(); }, this); - viewMenu->AppendSeparator(); - //TRN To be shown in the main menu View->Top - append_menu_item(viewMenu, wxID_ANY, _L("Top") + sep + "&1", _L("Top View"), [this](wxCommandEvent&) { select_view("top"); }, - "", nullptr, [this](){return can_change_view(); }, this); - //TRN To be shown in the main menu View->Bottom - append_menu_item(viewMenu, wxID_ANY, _L("Bottom") + sep + "&2", _L("Bottom View"), [this](wxCommandEvent&) { select_view("bottom"); }, - "", nullptr, [this](){return can_change_view(); }, this); - append_menu_item(viewMenu, wxID_ANY, _L("Front") + sep + "&3", _L("Front View"), [this](wxCommandEvent&) { select_view("front"); }, - "", nullptr, [this](){return can_change_view(); }, this); - append_menu_item(viewMenu, wxID_ANY, _L("Rear") + sep + "&4", _L("Rear View"), [this](wxCommandEvent&) { select_view("rear"); }, - "", nullptr, [this](){return can_change_view(); }, this); - append_menu_item(viewMenu, wxID_ANY, _L("Left") + sep + "&5", _L("Left View"), [this](wxCommandEvent&) { select_view("left"); }, - "", nullptr, [this](){return can_change_view(); }, this); - append_menu_item(viewMenu, wxID_ANY, _L("Right") + sep + "&6", _L("Right View"), [this](wxCommandEvent&) { select_view("right"); }, - "", nullptr, [this](){return can_change_view(); }, this); -#endif // ENABLE_GCODE_VIEWER viewMenu->AppendSeparator(); append_menu_check_item(viewMenu, wxID_ANY, _L("Show &labels") + sep + "E", _L("Show object/instance labels in 3D scene"), [this](wxCommandEvent&) { m_plater->show_view3D_labels(!m_plater->are_view3D_labels_shown()); }, this, @@ -1313,49 +1206,11 @@ void MainFrame::init_menubar() } // Help menu -#if ENABLE_GCODE_VIEWER auto helpMenu = generate_help_menu(); -#else - auto helpMenu = new wxMenu(); - { - append_menu_item(helpMenu, wxID_ANY, _L("Prusa 3D &Drivers"), _L("Open the Prusa3D drivers download page in your browser"), - [this](wxCommandEvent&) { wxGetApp().open_web_page_localized("https://www.prusa3d.com/downloads"); }); - append_menu_item(helpMenu, wxID_ANY, _L("Software &Releases"), _L("Open the software releases page in your browser"), - [this](wxCommandEvent&) { wxLaunchDefaultBrowser("https://github.com/prusa3d/PrusaSlicer/releases"); }); -//# my $versioncheck = $self->_append_menu_item($helpMenu, "Check for &Updates...", "Check for new Slic3r versions", sub{ -//# wxTheApp->check_version(1); -//# }); -//# $versioncheck->Enable(wxTheApp->have_version_check); - append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("%s &Website"), SLIC3R_APP_NAME), - wxString::Format(_L("Open the %s website in your browser"), SLIC3R_APP_NAME), - [this](wxCommandEvent&) { wxGetApp().open_web_page_localized("https://www.prusa3d.com/slicerweb"); }); -// append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("%s &Manual"), SLIC3R_APP_NAME), -// wxString::Format(_L("Open the %s manual in your browser"), SLIC3R_APP_NAME), -// [this](wxCommandEvent&) { wxLaunchDefaultBrowser("http://manual.slic3r.org/"); }); - helpMenu->AppendSeparator(); - append_menu_item(helpMenu, wxID_ANY, _L("System &Info"), _L("Show system information"), - [this](wxCommandEvent&) { wxGetApp().system_info(); }); - append_menu_item(helpMenu, wxID_ANY, _L("Show &Configuration Folder"), _L("Show user configuration folder (datadir)"), - [this](wxCommandEvent&) { Slic3r::GUI::desktop_open_datadir_folder(); }); - append_menu_item(helpMenu, wxID_ANY, _L("Report an I&ssue"), wxString::Format(_L("Report an issue on %s"), SLIC3R_APP_NAME), - [this](wxCommandEvent&) { wxLaunchDefaultBrowser("https://github.com/prusa3d/slic3r/issues/new"); }); - append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("&About %s"), SLIC3R_APP_NAME), _L("Show about dialog"), - [this](wxCommandEvent&) { Slic3r::GUI::about(); }); - helpMenu->AppendSeparator(); - append_menu_item(helpMenu, wxID_ANY, _L("Keyboard Shortcuts") + sep + "&?", _L("Show the list of the keyboard shortcuts"), - [this](wxCommandEvent&) { wxGetApp().keyboard_shortcuts(); }); -#if ENABLE_THUMBNAIL_GENERATOR_DEBUG - helpMenu->AppendSeparator(); - append_menu_item(helpMenu, wxID_ANY, "DEBUG gcode thumbnails", "DEBUG ONLY - read the selected gcode file and generates png for the contained thumbnails", - [this](wxCommandEvent&) { wxGetApp().gcode_thumbnails_debug(); }); -#endif // ENABLE_THUMBNAIL_GENERATOR_DEBUG - } -#endif // ENABLE_GCODE_VIEWER // menubar // assign menubar to frame after appending items, otherwise special items // will not be handled correctly -#if ENABLE_GCODE_VIEWER m_menubar = new wxMenuBar(); m_menubar->Append(fileMenu, _L("&File")); if (editMenu) m_menubar->Append(editMenu, _L("&Edit")); @@ -1365,26 +1220,11 @@ void MainFrame::init_menubar() wxGetApp().add_config_menu(m_menubar); m_menubar->Append(helpMenu, _L("&Help")); SetMenuBar(m_menubar); -#else - auto menubar = new wxMenuBar(); - menubar->Append(fileMenu, _L("&File")); - if (editMenu) menubar->Append(editMenu, _L("&Edit")); - menubar->Append(windowMenu, _L("&Window")); - if (viewMenu) menubar->Append(viewMenu, _L("&View")); - // Add additional menus from C++ - wxGetApp().add_config_menu(menubar); - menubar->Append(helpMenu, _L("&Help")); - SetMenuBar(menubar); -#endif // ENABLE_GCODE_VIEWER #ifdef __APPLE__ // This fixes a bug on Mac OS where the quit command doesn't emit window close events // wx bug: https://trac.wxwidgets.org/ticket/18328 -#if ENABLE_GCODE_VIEWER wxMenu* apple_menu = m_menubar->OSXGetAppleMenu(); -#else - wxMenu *apple_menu = menubar->OSXGetAppleMenu(); -#endif // ENABLE_GCODE_VIEWER if (apple_menu != nullptr) { apple_menu->Bind(wxEVT_MENU, [this](wxCommandEvent &) { Close(); @@ -1396,7 +1236,6 @@ void MainFrame::init_menubar() update_menubar(); } -#if ENABLE_GCODE_VIEWER void MainFrame::init_menubar_as_gcodeviewer() { wxMenu* fileMenu = new wxMenu; @@ -1429,10 +1268,8 @@ void MainFrame::init_menubar_as_gcodeviewer() m_menubar = new wxMenuBar(); m_menubar->Append(fileMenu, _L("&File")); if (viewMenu != nullptr) m_menubar->Append(viewMenu, _L("&View")); -#if ENABLE_GCODE_VIEWER // Add additional menus from C++ wxGetApp().add_config_menu(m_menubar); -#endif // ENABLE_GCODE_VIEWER m_menubar->Append(helpMenu, _L("&Help")); SetMenuBar(m_menubar); @@ -1447,14 +1284,11 @@ void MainFrame::init_menubar_as_gcodeviewer() } #endif // __APPLE__ } -#endif // ENABLE_GCODE_VIEWER void MainFrame::update_menubar() { -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_gcode_viewer()) return; -#endif // ENABLE_GCODE_VIEWER const bool is_fff = plater()->printer_technology() == ptFFF; @@ -1983,10 +1817,8 @@ SettingsDialog::SettingsDialog(MainFrame* mainframe) wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX, "settings_dialog"), m_main_frame(mainframe) { -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_gcode_viewer()) return; -#endif // ENABLE_GCODE_VIEWER #if ENABLE_WX_3_1_3_DPI_CHANGED_EVENT && defined(__WXMSW__) // ys_FIXME! temporary workaround for correct font scaling @@ -2059,10 +1891,8 @@ SettingsDialog::SettingsDialog(MainFrame* mainframe) void SettingsDialog::on_dpi_changed(const wxRect& suggested_rect) { -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_gcode_viewer()) return; -#endif // ENABLE_GCODE_VIEWER const int& em = em_unit(); const wxSize& size = wxSize(85 * em, 50 * em); diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 611ea7991..fb393f619 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -71,9 +71,7 @@ class MainFrame : public DPIFrame wxString m_qs_last_input_file = wxEmptyString; wxString m_qs_last_output_file = wxEmptyString; wxString m_last_config = wxEmptyString; -#if ENABLE_GCODE_VIEWER wxMenuBar* m_menubar{ nullptr }; -#endif // ENABLE_GCODE_VIEWER #if 0 wxMenuItem* m_menu_item_repeat { nullptr }; // doesn't used now @@ -128,9 +126,7 @@ class MainFrame : public DPIFrame Old, New, Dlg, -#if ENABLE_GCODE_VIEWER GCodeViewer -#endif // ENABLE_GCODE_VIEWER }; ESettingsLayout m_layout{ ESettingsLayout::Unknown }; @@ -159,12 +155,8 @@ public: // Register Win32 RawInput callbacks (3DConnexion) and removable media insert / remove callbacks. // Called from wxEVT_ACTIVATE, as wxEVT_CREATE was not reliable (bug in wxWidgets?). void register_win32_callbacks(); -#if ENABLE_GCODE_VIEWER void init_menubar_as_editor(); void init_menubar_as_gcodeviewer(); -#else - void init_menubar(); -#endif // ENABLE_GCODE_VIEWER void update_menubar(); void update_ui_from_settings(bool apply_free_camera_correction = true); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 6ba1d7f7a..16e55db63 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1169,7 +1169,6 @@ void Sidebar::update_sliced_info_sizer() wxString::Format("%.2f", ps.total_cost); p->sliced_info->SetTextAndShow(siCost, info_text, new_label); -#if ENABLE_GCODE_VIEWER if (ps.estimated_normal_print_time == "N/A" && ps.estimated_silent_print_time == "N/A") p->sliced_info->SetTextAndShow(siEstimatedTime, "N/A"); else { @@ -1191,56 +1190,6 @@ void Sidebar::update_sliced_info_sizer() } p->sliced_info->SetTextAndShow(siEstimatedTime, info_text, new_label); } -#else - if (ps.estimated_normal_print_time == "N/A" && ps.estimated_silent_print_time == "N/A") - p->sliced_info->SetTextAndShow(siEstimatedTime, "N/A"); - else { - new_label = _L("Estimated printing time") + ":"; - info_text = ""; - wxString str_color = _L("Color"); - wxString str_pause = _L("Pause"); - - auto fill_labels = [str_color, str_pause](const std::vector<std::pair<CustomGCode::Type, std::string>>& times, - wxString& new_label, wxString& info_text) - { - int color_change_count = 0; - for (auto time : times) - if (time.first == CustomGCode::ColorChange) - color_change_count++; - - for (int i = (int)times.size() - 1; i >= 0; --i) - { - if (i == 0 || times[i - 1].first == CustomGCode::PausePrint) - new_label += format_wxstr("\n - %1%%2%", str_color + " ", color_change_count); - else if (times[i - 1].first == CustomGCode::ColorChange) - new_label += format_wxstr("\n - %1%%2%", str_color + " ", color_change_count--); - - if (i != (int)times.size() - 1 && times[i].first == CustomGCode::PausePrint) - new_label += format_wxstr(" -> %1%", str_pause); - - info_text += format_wxstr("\n%1%", times[i].second); - } - }; - - if (ps.estimated_normal_print_time != "N/A") { - new_label += format_wxstr("\n - %1%", _L("normal mode")); - info_text += format_wxstr("\n%1%", ps.estimated_normal_print_time); - fill_labels(ps.estimated_normal_custom_gcode_print_times, new_label, info_text); - - // uncomment next line to not disappear slicing finished notif when colapsing sidebar before time estimate - //if (p->plater->is_sidebar_collapsed()) - p->plater->get_notification_manager()->set_slicing_complete_large(p->plater->is_sidebar_collapsed()); - p->plater->get_notification_manager()->set_slicing_complete_print_time("Estimated printing time: " + ps.estimated_normal_print_time); - - } - if (ps.estimated_silent_print_time != "N/A") { - new_label += format_wxstr("\n - %1%", _L("stealth mode")); - info_text += format_wxstr("\n%1%", ps.estimated_silent_print_time); - fill_labels(ps.estimated_silent_custom_gcode_print_times, new_label, info_text); - } - p->sliced_info->SetTextAndShow(siEstimatedTime, info_text, new_label); - } -#endif // !ENABLE_GCODE_VIEWER // if there is a wipe tower, insert number of toolchanges info into the array: p->sliced_info->SetTextAndShow(siWTNumbetOfToolchanges, is_wipe_tower ? wxString::Format("%.d", ps.total_toolchanges) : "N/A"); @@ -1333,9 +1282,7 @@ void Sidebar::collapse(bool collapse) p->plater->Layout(); // save collapsing state to the AppConfig -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) -#endif // ENABLE_GCODE_VIEWER wxGetApp().app_config->set("collapsed_sidebar", collapse ? "1" : "0"); } @@ -1375,15 +1322,11 @@ private: Plater *plater; static const std::regex pattern_drop; -#if ENABLE_GCODE_VIEWER static const std::regex pattern_gcode_drop; -#endif // ENABLE_GCODE_VIEWER }; const std::regex PlaterDropTarget::pattern_drop(".*[.](stl|obj|amf|3mf|prusa)", std::regex::icase); -#if ENABLE_GCODE_VIEWER const std::regex PlaterDropTarget::pattern_gcode_drop(".*[.](gcode|g)", std::regex::icase); -#endif // ENABLE_GCODE_VIEWER enum class LoadType : unsigned char { @@ -1453,7 +1396,6 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &fi { std::vector<fs::path> paths; -#if ENABLE_GCODE_VIEWER #ifdef WIN32 // hides the system icon this->MSWUpdateDragImageOnLeave(); @@ -1478,17 +1420,14 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &fi } return false; } -#endif // ENABLE_GCODE_VIEWER // editor section for (const auto &filename : filenames) { fs::path path(into_path(filename)); if (std::regex_match(path.string(), pattern_drop)) paths.push_back(std::move(path)); -#if ENABLE_GCODE_VIEWER else if (std::regex_match(path.string(), pattern_gcode_drop)) start_new_gcodeviewer(&filename); -#endif // ENABLE_GCODE_VIEWER else return false; } @@ -1605,11 +1544,7 @@ struct Plater::priv Slic3r::SLAPrint sla_print; Slic3r::Model model; PrinterTechnology printer_technology = ptFFF; -#if ENABLE_GCODE_VIEWER Slic3r::GCodeProcessor::Result gcode_result; -#else - Slic3r::GCodePreviewData gcode_preview_data; -#endif // ENABLE_GCODE_VIEWER // GUI elements wxSizer* panel_sizer{ nullptr }; @@ -1717,13 +1652,11 @@ struct Plater::priv bool init_view_toolbar(); bool init_collapse_toolbar(); -#if ENABLE_GCODE_VIEWER void update_preview_bottom_toolbar(); void update_preview_moves_slider(); void enable_preview_moves_slider(bool enable); void reset_gcode_toolpaths(); -#endif // ENABLE_GCODE_VIEWER void reset_all_gizmos(); void update_ui_from_settings(bool apply_free_camera_correction = true); @@ -1945,11 +1878,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) background_process.set_fff_print(&fff_print); background_process.set_sla_print(&sla_print); -#if ENABLE_GCODE_VIEWER background_process.set_gcode_result(&gcode_result); -#else - background_process.set_gcode_preview_data(&gcode_preview_data); -#endif // ENABLE_GCODE_VIEWER background_process.set_thumbnail_cb([this](ThumbnailsList& thumbnails, const Vec2ds& sizes, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) { std::packaged_task<void(ThumbnailsList&, const Vec2ds&, bool, bool, bool, bool)> task([this](ThumbnailsList& thumbnails, const Vec2ds& sizes, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) { @@ -1974,11 +1903,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) this->q->Bind(EVT_SLICING_UPDATE, &priv::on_slicing_update, this); view3D = new View3D(q, &model, config, &background_process); -#if ENABLE_GCODE_VIEWER preview = new Preview(q, &model, config, &background_process, &gcode_result, [this]() { schedule_background_process(); }); -#else - preview = new Preview(q, &model, config, &background_process, &gcode_preview_data, [this]() { schedule_background_process(); }); -#endif // ENABLE_GCODE_VIEWER #ifdef __APPLE__ // set default view_toolbar icons size equal to GLGizmosManager::Default_Icons_Size @@ -2009,22 +1934,16 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) // Events: -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) { -#endif // ENABLE_GCODE_VIEWER // Preset change event sidebar->Bind(wxEVT_COMBOBOX, &priv::on_select_preset, this); sidebar->Bind(EVT_OBJ_LIST_OBJECT_SELECT, [this](wxEvent&) { priv::selection_changed(); }); sidebar->Bind(EVT_SCHEDULE_BACKGROUND_PROCESS, [this](SimpleEvent&) { this->schedule_background_process(); }); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER wxGLCanvas* view3D_canvas = view3D->get_wxglcanvas(); -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) { -#endif // ENABLE_GCODE_VIEWER // 3DScene events: view3D_canvas->Bind(EVT_GLCANVAS_SCHEDULE_BACKGROUND_PROCESS, [this](SimpleEvent&) { this->schedule_background_process(); }); view3D_canvas->Bind(EVT_GLCANVAS_OBJECT_SELECT, &priv::on_object_select, this); @@ -2066,10 +1985,8 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) view3D_canvas->Bind(EVT_GLTOOLBAR_SPLIT_OBJECTS, &priv::on_action_split_objects, this); view3D_canvas->Bind(EVT_GLTOOLBAR_SPLIT_VOLUMES, &priv::on_action_split_volumes, this); view3D_canvas->Bind(EVT_GLTOOLBAR_LAYERSEDITING, &priv::on_action_layersediting, this); -#if ENABLE_GCODE_VIEWER - } -#endif // ENABLE_GCODE_VIEWER - view3D_canvas->Bind(EVT_GLCANVAS_UPDATE_BED_SHAPE, [q](SimpleEvent&) { q->set_bed_shape(); }); + } + view3D_canvas->Bind(EVT_GLCANVAS_UPDATE_BED_SHAPE, [q](SimpleEvent&) { q->set_bed_shape(); }); // Preview events: preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_QUESTION_MARK, [this](SimpleEvent&) { wxGetApp().keyboard_shortcuts(); }); @@ -2077,37 +1994,24 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_TAB, [this](SimpleEvent&) { select_next_view_3D(); }); preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_COLLAPSE_SIDEBAR, [this](SimpleEvent&) { this->q->collapse_sidebar(!this->q->is_sidebar_collapsed()); }); preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_JUMP_TO, [this](wxKeyEvent& evt) { preview->jump_layers_slider(evt); }); -#if ENABLE_GCODE_VIEWER preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_MOVE_LAYERS_SLIDER, [this](wxKeyEvent& evt) { preview->move_layers_slider(evt); }); preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_EDIT_COLOR_CHANGE, [this](wxKeyEvent& evt) { preview->edit_layers_slider(evt); }); -#else - preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_MOVE_DOUBLE_SLIDER, [this](wxKeyEvent& evt) { preview->move_double_slider(evt); }); - preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_EDIT_COLOR_CHANGE, [this](wxKeyEvent& evt) { preview->edit_double_slider(evt); }); -#endif // ENABLE_GCODE_VIEWER -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) { -#endif // ENABLE_GCODE_VIEWER q->Bind(EVT_SLICING_COMPLETED, &priv::on_slicing_completed, this); q->Bind(EVT_PROCESS_COMPLETED, &priv::on_process_completed, this); q->Bind(EVT_EXPORT_BEGAN, &priv::on_export_began, this); q->Bind(EVT_GLVIEWTOOLBAR_3D, [q](SimpleEvent&) { q->select_view_3D("3D"); }); q->Bind(EVT_GLVIEWTOOLBAR_PREVIEW, [q](SimpleEvent&) { q->select_view_3D("Preview"); }); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER // Drop target: q->SetDropTarget(new PlaterDropTarget(q)); // if my understanding is right, wxWindow takes the owenership q->Layout(); -#if ENABLE_GCODE_VIEWER set_current_panel(wxGetApp().is_editor() ? (wxPanel*)view3D : (wxPanel*)preview); if (wxGetApp().is_gcode_viewer()) preview->hide_layers_slider(); -#else - set_current_panel(view3D); -#endif // ENABLE_GCODE_VIEWER // updates camera type from .ini file camera.enable_update_config_on_type_change(true); @@ -2133,9 +2037,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) #endif /* _WIN32 */ notification_manager = new NotificationManager(this->q); -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) { -#endif // ENABLE_GCODE_VIEWER this->q->Bind(EVT_EJECT_DRIVE_NOTIFICAION_CLICKED, [this](EjectDriveNotificationClickedEvent&) { this->q->eject_drive(); }); this->q->Bind(EVT_EXPORT_GCODE_NOTIFICAION_CLICKED, [this](ExportGcodeNotificationClickedEvent&) { this->q->export_gcode(true); }); this->q->Bind(EVT_PRESET_UPDATE_AVAILABLE_CLICKED, [this](PresetUpdateAvailableClickedEvent&) { wxGetApp().get_preset_updater()->on_update_notification_confirm(); }); @@ -2161,9 +2063,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) this->q->Bind(EVT_VOLUME_ATTACHED, [this](VolumeAttachedEvent &evt) { wxGetApp().removable_drive_manager()->volumes_changed(); }); this->q->Bind(EVT_VOLUME_DETACHED, [this](VolumeDetachedEvent &evt) { wxGetApp().removable_drive_manager()->volumes_changed(); }); #endif /* _WIN32 */ -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER // Initialize the Undo / Redo stack with a first snapshot. this->take_snapshot(_L("New Project")); @@ -2178,14 +2078,10 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) wxGetApp().other_instance_message_handler()->init(this->q); // collapse sidebar according to saved value -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_editor()) { -#endif // ENABLE_GCODE_VIEWER bool is_collapsed = wxGetApp().app_config->get("collapsed_sidebar") == "1"; sidebar->collapse(is_collapsed); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER } Plater::priv::~priv() @@ -2234,9 +2130,7 @@ void Plater::priv::select_view_3D(const std::string& name) else if (name == "Preview") set_current_panel(preview); -#if ENABLE_GCODE_VIEWER wxGetApp().update_ui_from_settings(false); -#endif // ENABLE_GCODE_VIEWER } void Plater::priv::select_next_view_3D() @@ -2765,11 +2659,6 @@ void Plater::priv::deselect_all() void Plater::priv::remove(size_t obj_idx) { -#if !ENABLE_GCODE_VIEWER - // Prevent toolpaths preview from rendering while we modify the Print object - preview->set_enabled(false); -#endif // !ENABLE_GCODE_VIEWER - if (view3D->is_layers_editing_enabled()) view3D->enable_layers_editing(false); @@ -2800,18 +2689,11 @@ void Plater::priv::reset() set_project_filename(wxEmptyString); -#if !ENABLE_GCODE_VIEWER - // Prevent toolpaths preview from rendering while we modify the Print object - preview->set_enabled(false); -#endif // !ENABLE_GCODE_VIEWER - if (view3D->is_layers_editing_enabled()) view3D->enable_layers_editing(false); -#if ENABLE_GCODE_VIEWER reset_gcode_toolpaths(); gcode_result.reset(); -#endif // ENABLE_GCODE_VIEWER // Stop and reset the Print content. this->background_process.reset(); @@ -2958,19 +2840,12 @@ unsigned int Plater::priv::update_background_process(bool force_validation, bool this->sidebar->show_sliced_info_sizer(false); // Reset preview canvases. If the print has been invalidated, the preview canvases will be cleared. // Otherwise they will be just refreshed. -#if ENABLE_GCODE_VIEWER if (this->preview != nullptr) { // If the preview is not visible, the following line just invalidates the preview, // but the G-code paths or SLA preview are calculated first once the preview is made visible. reset_gcode_toolpaths(); this->preview->reload_print(); } -#else - if (this->preview != nullptr) - // If the preview is not visible, the following line just invalidates the preview, - // but the G-code paths or SLA preview are calculated first once the preview is made visible. - this->preview->reload_print(); -#endif // ENABLE_GCODE_VIEWER // In FDM mode, we need to reload the 3D scene because of the wipe tower preview box. // In SLA mode, we need to reload the 3D scene every time to show the support structures. if (this->printer_technology == ptSLA || (this->printer_technology == ptFFF && this->config->opt_bool("wipe_tower"))) @@ -4136,10 +4011,8 @@ void Plater::priv::reset_canvas_volumes() bool Plater::priv::init_view_toolbar() { -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_gcode_viewer()) return true; -#endif // ENABLE_GCODE_VIEWER if (view_toolbar.get_items_count() > 0) // already initialized @@ -4186,10 +4059,8 @@ bool Plater::priv::init_view_toolbar() bool Plater::priv::init_collapse_toolbar() { -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_gcode_viewer()) return true; -#endif // ENABLE_GCODE_VIEWER if (collapse_toolbar.get_items_count() > 0) // already initialized @@ -4230,7 +4101,6 @@ bool Plater::priv::init_collapse_toolbar() return true; } -#if ENABLE_GCODE_VIEWER void Plater::priv::update_preview_bottom_toolbar() { preview->update_bottom_toolbar(); @@ -4250,7 +4120,6 @@ void Plater::priv::reset_gcode_toolpaths() { preview->get_canvas3d()->reset_gcode_toolpaths(); } -#endif // ENABLE_GCODE_VIEWER bool Plater::priv::can_set_instance_to_object() const { @@ -4807,7 +4676,6 @@ void Plater::extract_config_from_project() load_files(input_paths, false, true); } -#if ENABLE_GCODE_VIEWER void Plater::load_gcode() { // Ask user for a gcode file name. @@ -4858,7 +4726,6 @@ void Plater::refresh_print() { p->preview->refresh_print(); } -#endif // ENABLE_GCODE_VIEWER std::vector<size_t> Plater::load_files(const std::vector<fs::path>& input_files, bool load_model, bool load_config, bool imperial_units /*= false*/) { return p->load_files(input_files, load_model, load_config, imperial_units); } @@ -5363,9 +5230,7 @@ void Plater::reslice() if ((state & priv::UPDATE_BACKGROUND_PROCESS_INVALID) != 0) return; -#if ENABLE_GCODE_VIEWER bool clean_gcode_toolpaths = true; -#endif // ENABLE_GCODE_VIEWER if (p->background_process.running()) { if (wxGetApp().get_mode() == comSimple) @@ -5378,7 +5243,6 @@ void Plater::reslice() } else if (!p->background_process.empty() && !p->background_process.idle()) p->show_action_buttons(true); -#if ENABLE_GCODE_VIEWER else clean_gcode_toolpaths = false; @@ -5387,10 +5251,6 @@ void Plater::reslice() // update type of preview p->preview->update_view_type(!clean_gcode_toolpaths); -#else - // update type of preview - p->preview->update_view_type(true); -#endif // ENABLE_GCODE_VIEWER } void Plater::reslice_SLA_supports(const ModelObject &object, bool postpone_error_messages) @@ -5607,9 +5467,7 @@ void Plater::on_config_change(const DynamicPrintConfig &config) // print technology is changed, so we should to update a search list p->sidebar->update_searcher(); p->sidebar->show_sliced_info_sizer(false); -#if ENABLE_GCODE_VIEWER p->reset_gcode_toolpaths(); -#endif // ENABLE_GCODE_VIEWER } else if (opt_key == "bed_shape" || opt_key == "bed_custom_texture" || opt_key == "bed_custom_model") { bed_shape_changed = true; @@ -5652,23 +5510,15 @@ void Plater::on_config_change(const DynamicPrintConfig &config) void Plater::set_bed_shape() const { -#if ENABLE_GCODE_VIEWER set_bed_shape(p->config->option<ConfigOptionPoints>("bed_shape")->values, p->config->option<ConfigOptionString>("bed_custom_texture")->value, p->config->option<ConfigOptionString>("bed_custom_model")->value); -#else - p->set_bed_shape(p->config->option<ConfigOptionPoints>("bed_shape")->values, - p->config->option<ConfigOptionString>("bed_custom_texture")->value, - p->config->option<ConfigOptionString>("bed_custom_model")->value); -#endif // ENABLE_GCODE_VIEWER } -#if ENABLE_GCODE_VIEWER void Plater::set_bed_shape(const Pointfs& shape, const std::string& custom_texture, const std::string& custom_model, bool force_as_custom) const { p->set_bed_shape(shape, custom_texture, custom_model, force_as_custom); } -#endif // ENABLE_GCODE_VIEWER void Plater::force_filament_colors_update() { @@ -5724,17 +5574,11 @@ void Plater::on_activate() } // Get vector of extruder colors considering filament color, if extruder color is undefined. -#if ENABLE_GCODE_VIEWER std::vector<std::string> Plater::get_extruder_colors_from_plater_config(const GCodeProcessor::Result* const result) const -#else -std::vector<std::string> Plater::get_extruder_colors_from_plater_config() const -#endif // ENABLE_GCODE_VIEWER { -#if ENABLE_GCODE_VIEWER if (wxGetApp().is_gcode_viewer() && result != nullptr) return result->extruder_colors; else { -#endif // ENABLE_GCODE_VIEWER const Slic3r::DynamicPrintConfig* config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; std::vector<std::string> extruder_colors; if (!config->has("extruder_colour")) // in case of a SLA print @@ -5750,23 +5594,15 @@ std::vector<std::string> Plater::get_extruder_colors_from_plater_config() const extruder_colors[i] = filament_colours[i]; return extruder_colors; -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER } /* Get vector of colors used for rendering of a Preview scene in "Color print" mode * It consists of extruder colors and colors, saved in model.custom_gcode_per_print_z */ -#if ENABLE_GCODE_VIEWER std::vector<std::string> Plater::get_colors_for_color_print(const GCodeProcessor::Result* const result) const { std::vector<std::string> colors = get_extruder_colors_from_plater_config(result); -#else -std::vector<std::string> Plater::get_colors_for_color_print() const -{ - std::vector<std::string> colors = get_extruder_colors_from_plater_config(); -#endif // ENABLE_GCODE_VIEWER colors.reserve(colors.size() + p->model.custom_gcode_per_print_z.gcodes.size()); for (const CustomGCode::Item& code : p->model.custom_gcode_per_print_z.gcodes) @@ -5848,23 +5684,13 @@ PrinterTechnology Plater::printer_technology() const const DynamicPrintConfig * Plater::config() const { return p->config; } -#if ENABLE_GCODE_VIEWER bool Plater::set_printer_technology(PrinterTechnology printer_technology) -#else -void Plater::set_printer_technology(PrinterTechnology printer_technology) -#endif // ENABLE_GCODE_VIEWER { p->printer_technology = printer_technology; -#if ENABLE_GCODE_VIEWER bool ret = p->background_process.select_technology(printer_technology); if (ret) { // Update the active presets. } -#else - if (p->background_process.select_technology(printer_technology)) { - // Update the active presets. - } -#endif // ENABLE_GCODE_VIEWER //FIXME for SLA synchronize //p->background_process.apply(Model)! @@ -5878,9 +5704,7 @@ void Plater::set_printer_technology(PrinterTechnology printer_technology) p->sidebar->get_searcher().set_printer_technology(printer_technology); -#if ENABLE_GCODE_VIEWER return ret; -#endif // ENABLE_GCODE_VIEWER } void Plater::changed_object(int obj_idx) @@ -6028,24 +5852,20 @@ bool Plater::init_view_toolbar() return p->init_view_toolbar(); } -#if ENABLE_GCODE_VIEWER void Plater::enable_view_toolbar(bool enable) { p->view_toolbar.set_enabled(enable); } -#endif // ENABLE_GCODE_VIEWER bool Plater::init_collapse_toolbar() { return p->init_collapse_toolbar(); } -#if ENABLE_GCODE_VIEWER void Plater::enable_collapse_toolbar(bool enable) { p->collapse_toolbar.set_enabled(enable); } -#endif // ENABLE_GCODE_VIEWER const Camera& Plater::get_camera() const { @@ -6100,7 +5920,6 @@ GLToolbar& Plater::get_collapse_toolbar() return p->collapse_toolbar; } -#if ENABLE_GCODE_VIEWER void Plater::update_preview_bottom_toolbar() { p->update_preview_bottom_toolbar(); @@ -6120,7 +5939,6 @@ void Plater::reset_gcode_toolpaths() { p->reset_gcode_toolpaths(); } -#endif // ENABLE_GCODE_VIEWER const Mouse3DController& Plater::get_mouse3d_controller() const { @@ -6189,9 +6007,7 @@ bool Plater::can_undo() const { return p->undo_redo_stack().has_undo_snapshot(); bool Plater::can_redo() const { return p->undo_redo_stack().has_redo_snapshot(); } bool Plater::can_reload_from_disk() const { return p->can_reload_from_disk(); } const UndoRedo::Stack& Plater::undo_redo_stack_main() const { return p->undo_redo_stack_main(); } -#if ENABLE_GCODE_VIEWER void Plater::clear_undo_redo_stack_main() { p->undo_redo_stack_main().clear(); } -#endif // ENABLE_GCODE_VIEWER void Plater::enter_gizmos_stack() { p->enter_gizmos_stack(); } void Plater::leave_gizmos_stack() { p->leave_gizmos_stack(); } bool Plater::inside_snapshot_capture() { return p->inside_snapshot_capture(); } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index b40548bde..9a286c424 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -11,9 +11,7 @@ #include "libslic3r/Preset.hpp" #include "libslic3r/BoundingBox.hpp" -#if ENABLE_GCODE_VIEWER #include "libslic3r/GCode/GCodeProcessor.hpp" -#endif // ENABLE_GCODE_VIEWER #include "Jobs/Job.hpp" #include "Search.hpp" @@ -144,11 +142,9 @@ public: void add_model(bool imperial_units = false); void import_sl1_archive(); void extract_config_from_project(); -#if ENABLE_GCODE_VIEWER void load_gcode(); void load_gcode(const wxString& filename); void refresh_print(); -#endif // ENABLE_GCODE_VIEWER std::vector<size_t> load_files(const std::vector<boost::filesystem::path>& input_files, bool load_model = true, bool load_config = true, bool imperial_units = false); // To be called when providing a list of files to the GUI slic3r on command line. @@ -223,9 +219,7 @@ public: bool search_string_getter(int idx, const char** label, const char** tooltip); // For the memory statistics. const Slic3r::UndoRedo::Stack& undo_redo_stack_main() const; -#if ENABLE_GCODE_VIEWER void clear_undo_redo_stack_main(); -#endif // ENABLE_GCODE_VIEWER // Enter / leave the Gizmos specific Undo / Redo stack. To be used by the SLA support point editing gizmo. void enter_gizmos_stack(); void leave_gizmos_stack(); @@ -236,13 +230,8 @@ public: void force_print_bed_update(); // On activating the parent window. void on_activate(); -#if ENABLE_GCODE_VIEWER std::vector<std::string> get_extruder_colors_from_plater_config(const GCodeProcessor::Result* const result = nullptr) const; std::vector<std::string> get_colors_for_color_print(const GCodeProcessor::Result* const result = nullptr) const; -#else - std::vector<std::string> get_extruder_colors_from_plater_config() const; - std::vector<std::string> get_colors_for_color_print() const; -#endif // ENABLE_GCODE_VIEWER void update_object_menu(); void show_action_buttons(const bool is_ready_to_slice) const; @@ -268,11 +257,7 @@ public: PrinterTechnology printer_technology() const; const DynamicPrintConfig * config() const; -#if ENABLE_GCODE_VIEWER bool set_printer_technology(PrinterTechnology printer_technology); -#else - void set_printer_technology(PrinterTechnology printer_technology); -#endif // ENABLE_GCODE_VIEWER void copy_selection_to_clipboard(); void paste_from_clipboard(); @@ -298,13 +283,9 @@ public: void sys_color_changed(); bool init_view_toolbar(); -#if ENABLE_GCODE_VIEWER void enable_view_toolbar(bool enable); -#endif // ENABLE_GCODE_VIEWER bool init_collapse_toolbar(); -#if ENABLE_GCODE_VIEWER void enable_collapse_toolbar(bool enable); -#endif // ENABLE_GCODE_VIEWER const Camera& get_camera() const; Camera& get_camera(); @@ -323,23 +304,19 @@ public: const GLToolbar& get_collapse_toolbar() const; GLToolbar& get_collapse_toolbar(); -#if ENABLE_GCODE_VIEWER void update_preview_bottom_toolbar(); void update_preview_moves_slider(); void enable_preview_moves_slider(bool enable); void reset_gcode_toolpaths(); void reset_last_loaded_gcode() { m_last_loaded_gcode = ""; } -#endif // ENABLE_GCODE_VIEWER const Mouse3DController& get_mouse3d_controller() const; Mouse3DController& get_mouse3d_controller(); void set_bed_shape() const; -#if ENABLE_GCODE_VIEWER void set_bed_shape(const Pointfs& shape, const std::string& custom_texture, const std::string& custom_model, bool force_as_custom = false) const; -#endif // ENABLE_GCODE_VIEWER - + const NotificationManager* get_notification_manager() const; NotificationManager* get_notification_manager(); @@ -394,9 +371,7 @@ private: bool m_tracking_popup_menu = false; wxString m_tracking_popup_menu_error_message; -#if ENABLE_GCODE_VIEWER wxString m_last_loaded_gcode; -#endif // ENABLE_GCODE_VIEWER void suppress_snapshots(); void allow_snapshots(); From c6e9b48db56c79b9d97ca69742b9a04027d8d684 Mon Sep 17 00:00:00 2001 From: David Kocik <kocikdav@gmail.com> Date: Thu, 19 Nov 2020 09:41:19 +0100 Subject: [PATCH 053/138] eject debug log --- src/slic3r/GUI/RemovableDriveManager.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/RemovableDriveManager.cpp b/src/slic3r/GUI/RemovableDriveManager.cpp index 0f6f5255e..740064b1a 100644 --- a/src/slic3r/GUI/RemovableDriveManager.cpp +++ b/src/slic3r/GUI/RemovableDriveManager.cpp @@ -81,7 +81,7 @@ void RemovableDriveManager::eject_drive() #ifndef REMOVABLE_DRIVE_MANAGER_OS_CALLBACKS this->update(); #endif // REMOVABLE_DRIVE_MANAGER_OS_CALLBACKS - + BOOST_LOG_TRIVIAL(info) << "Ejecting started"; tbb::mutex::scoped_lock lock(m_drives_mutex); auto it_drive_data = this->find_last_save_path_drive_data(); if (it_drive_data != m_current_drives.end()) { @@ -90,7 +90,7 @@ void RemovableDriveManager::eject_drive() mpath = mpath.substr(0, mpath.size() - 1); HANDLE handle = CreateFileW(boost::nowide::widen(mpath).c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr); if (handle == INVALID_HANDLE_VALUE) { - std::cerr << "Ejecting " << mpath << " failed " << GetLastError() << " \n"; + BOOST_LOG_TRIVIAL(error) << "Ejecting " << mpath << " failed (handle == INVALID_HANDLE_VALUE): " << GetLastError(); assert(m_callback_evt_handler); if (m_callback_evt_handler) wxPostEvent(m_callback_evt_handler, RemovableDriveEjectEvent(EVT_REMOVABLE_DRIVE_EJECTED, std::pair<DriveData, bool>(*it_drive_data, false))); @@ -99,19 +99,22 @@ void RemovableDriveManager::eject_drive() DWORD deviceControlRetVal(0); //these 3 commands should eject device safely but they dont, the device does disappear from file explorer but the "device was safely remove" notification doesnt trigger. //sd cards does trigger WM_DEVICECHANGE messege, usb drives dont - DeviceIoControl(handle, FSCTL_LOCK_VOLUME, nullptr, 0, nullptr, 0, &deviceControlRetVal, nullptr); - DeviceIoControl(handle, FSCTL_DISMOUNT_VOLUME, nullptr, 0, nullptr, 0, &deviceControlRetVal, nullptr); + BOOL e1 = DeviceIoControl(handle, FSCTL_LOCK_VOLUME, nullptr, 0, nullptr, 0, &deviceControlRetVal, nullptr); + BOOST_LOG_TRIVIAL(debug) << "FSCTL_LOCK_VOLUME " << e1 << " ; " << deviceControlRetVal << " ; " << GetLastError(); + BOOL e2 = DeviceIoControl(handle, FSCTL_DISMOUNT_VOLUME, nullptr, 0, nullptr, 0, &deviceControlRetVal, nullptr); + BOOST_LOG_TRIVIAL(debug) << "FSCTL_DISMOUNT_VOLUME " << e2 << " ; " << deviceControlRetVal << " ; " << GetLastError(); // some implemenatations also calls IOCTL_STORAGE_MEDIA_REMOVAL here but it returns error to me BOOL error = DeviceIoControl(handle, IOCTL_STORAGE_EJECT_MEDIA, nullptr, 0, nullptr, 0, &deviceControlRetVal, nullptr); if (error == 0) { CloseHandle(handle); - BOOST_LOG_TRIVIAL(error) << "Ejecting " << mpath << " failed " << deviceControlRetVal << " " << GetLastError() << " \n"; + BOOST_LOG_TRIVIAL(error) << "Ejecting " << mpath << " failed (IOCTL_STORAGE_EJECT_MEDIA)" << deviceControlRetVal << " " << GetLastError(); assert(m_callback_evt_handler); if (m_callback_evt_handler) wxPostEvent(m_callback_evt_handler, RemovableDriveEjectEvent(EVT_REMOVABLE_DRIVE_EJECTED, std::pair<DriveData, bool>(*it_drive_data, false))); return; } CloseHandle(handle); + BOOST_LOG_TRIVIAL(info) << "Ejecting finished"; assert(m_callback_evt_handler); if (m_callback_evt_handler) wxPostEvent(m_callback_evt_handler, RemovableDriveEjectEvent(EVT_REMOVABLE_DRIVE_EJECTED, std::pair< DriveData, bool >(std::move(*it_drive_data), true))); @@ -256,6 +259,7 @@ void RemovableDriveManager::eject_drive() #ifndef REMOVABLE_DRIVE_MANAGER_OS_CALLBACKS this->update(); #endif // REMOVABLE_DRIVE_MANAGER_OS_CALLBACKS + BOOST_LOG_TRIVIAL(info) << "Ejecting started"; tbb::mutex::scoped_lock lock(m_drives_mutex); auto it_drive_data = this->find_last_save_path_drive_data(); @@ -290,7 +294,7 @@ void RemovableDriveManager::eject_drive() child.wait(); int err = child.exit_code(); if (err) { - BOOST_LOG_TRIVIAL(error) << "Ejecting failed"; + BOOST_LOG_TRIVIAL(error) << "Ejecting failed. Exit code: " << err; assert(m_callback_evt_handler); if (m_callback_evt_handler) wxPostEvent(m_callback_evt_handler, RemovableDriveEjectEvent(EVT_REMOVABLE_DRIVE_EJECTED, std::pair<DriveData, bool>(*it_drive_data, false))); From 5144feb3197e6ee575e617bb7ed6d9cd32c671f6 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Thu, 19 Nov 2020 10:57:24 +0100 Subject: [PATCH 054/138] Estimated printing time per layer for SLAPrint Split the time if it's needed --- src/libslic3r/SLAPrint.hpp | 2 ++ src/libslic3r/SLAPrintSteps.cpp | 27 ++++++++------ src/slic3r/GUI/DoubleSlider.cpp | 63 ++++++++++++++++++++++++++++++--- src/slic3r/GUI/DoubleSlider.hpp | 3 +- src/slic3r/GUI/GUI_Preview.cpp | 12 ++++--- 5 files changed, 87 insertions(+), 20 deletions(-) diff --git a/src/libslic3r/SLAPrint.hpp b/src/libslic3r/SLAPrint.hpp index a4305e0c3..15292273f 100644 --- a/src/libslic3r/SLAPrint.hpp +++ b/src/libslic3r/SLAPrint.hpp @@ -350,6 +350,7 @@ struct SLAPrintStatistics size_t fast_layers_count; double total_cost; double total_weight; + std::vector<double> layers_times; // Config with the filled in print statistics. DynamicConfig config() const; @@ -366,6 +367,7 @@ struct SLAPrintStatistics fast_layers_count = 0; total_cost = 0.; total_weight = 0.; + layers_times.clear(); } }; diff --git a/src/libslic3r/SLAPrintSteps.cpp b/src/libslic3r/SLAPrintSteps.cpp index 11c8c6f4e..d8bea62ae 100644 --- a/src/libslic3r/SLAPrintSteps.cpp +++ b/src/libslic3r/SLAPrintSteps.cpp @@ -671,6 +671,8 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { double models_volume(0.0); double estim_time(0.0); + std::vector<double> layers_times; + layers_times.reserve(printer_input.size()); size_t slow_layers = 0; size_t fast_layers = 0; @@ -688,7 +690,7 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { // write vars &mutex, &models_volume, &supports_volume, &estim_time, &slow_layers, - &fast_layers, &fade_layer_time](size_t sliced_layer_cnt) + &fast_layers, &fade_layer_time, &layers_times](size_t sliced_layer_cnt) { PrintLayer &layer = m_print->m_printer_input[sliced_layer_cnt]; @@ -775,20 +777,21 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { else slow_layers++; - // Calculation of the printing time - + + double layer_times = 0.0; if (sliced_layer_cnt < 3) - estim_time += init_exp_time; - else if (fade_layer_time > exp_time) - { + layer_times += init_exp_time; + else if (fade_layer_time > exp_time) { fade_layer_time -= delta_fade_time; - estim_time += fade_layer_time; + layer_times += fade_layer_time; } else - estim_time += exp_time; - - estim_time += tilt_time; + layer_times += exp_time; + layer_times += tilt_time; + + layers_times.push_back(layer_times); + estim_time += layer_times; } }; @@ -804,8 +807,10 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { // A layers count o the highest object if (printer_input.size() == 0) print_statistics.estimated_print_time = std::nan(""); - else + else { print_statistics.estimated_print_time = estim_time; + print_statistics.layers_times = layers_times; + } print_statistics.fast_layers_count = fast_layers; print_statistics.slow_layers_count = slow_layers; diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index 3f988acf1..02fcadba8 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -381,9 +381,20 @@ void Control::SetTicksValues(const Info& custom_gcode_per_print_z) } void Control::SetLayersTimes(const std::vector<float>& layers_times) +{ + m_layers_times.clear(); + if (layers_times.empty()) + return; + m_layers_times.resize(layers_times.size(), 0.0); + m_layers_times[0] = layers_times[0]; + for (size_t i = 1; i < layers_times.size(); i++) + m_layers_times[i] = m_layers_times[i - 1] + layers_times[i]; +} + +void Control::SetLayersTimes(const std::vector<double>& layers_times) { m_layers_times = layers_times; - for (int i = 1; i < m_layers_times.size(); i++) + for (size_t i = 1; i < m_layers_times.size(); i++) m_layers_times[i] += m_layers_times[i - 1]; } @@ -579,7 +590,7 @@ void Control::draw_tick_on_mouse_position(wxDC& dc) } tick = get_value_from_position(m_moving_pos); - if (tick >= m_max_value || tick <= m_min_value || tick == m_higher_value || tick == m_lower_value) + if (tick > m_max_value || tick < m_min_value || tick == m_higher_value || tick == m_lower_value) return; wxCoord new_pos = get_position_from_value(tick); @@ -597,6 +608,47 @@ void Control::draw_tick_on_mouse_position(wxDC& dc) } } +static std::string short_and_splitted_time(const std::string& time) +{ + // Parse the dhms time format. + int days = 0; + int hours = 0; + int minutes = 0; + int seconds = 0; + if (time.find('d') != std::string::npos) + ::sscanf(time.c_str(), "%dd %dh %dm %ds", &days, &hours, &minutes, &seconds); + else if (time.find('h') != std::string::npos) + ::sscanf(time.c_str(), "%dh %dm %ds", &hours, &minutes, &seconds); + else if (time.find('m') != std::string::npos) + ::sscanf(time.c_str(), "%dm %ds", &minutes, &seconds); + else if (time.find('s') != std::string::npos) + ::sscanf(time.c_str(), "%ds", &seconds); + + // Format the dhm time. + char buffer[64]; + if (days > 0) + ::sprintf(buffer, "%dd%dh\n%dm", days, hours, minutes); + else if (hours > 0) { + if (hours < 10 && minutes < 10 && seconds < 10) + ::sprintf(buffer, "%dh%dm%ds", hours, minutes, seconds); + else if (hours > 10 && minutes > 10 && seconds > 10) + ::sprintf(buffer, "%dh\n%dm\n%ds", hours, minutes, seconds); + else if (minutes < 10 && seconds > 10 || minutes > 10 && seconds < 10) + ::sprintf(buffer, "%dh\n%dm%ds", hours, minutes, seconds); + else + ::sprintf(buffer, "%dh%dm\n%ds", hours, minutes, seconds); + } + else if (minutes > 0) { + if (minutes > 10 && seconds > 10) + ::sprintf(buffer, "%dm\n%ds", minutes, seconds); + else + ::sprintf(buffer, "%dm%ds", minutes, seconds); + } + else + ::sprintf(buffer, "%ds", seconds); + return buffer; +} + wxString Control::get_label(int tick, LabelType label_type/* = ltHeightWithLayer*/) const { const int value = tick; @@ -613,7 +665,7 @@ wxString Control::get_label(int tick, LabelType label_type/* = ltHeightWithLayer if (label_type == ltEstimatedTime) { if (m_values.size() != m_layers_times.size()) return "time"; - return Slic3r::short_time(get_time_dhms(m_layers_times[value])); + return short_and_splitted_time(get_time_dhms(m_layers_times[value])); } wxString str = m_values.empty() ? wxString::Format("%.*f", 2, m_label_koef * value) : @@ -664,7 +716,10 @@ void Control::draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, LabelType l text_pos = wxPoint(pos.x - text_width - 1 - m_thumb_size.x, pos.y - 0.5 * text_height + 1); } - dc.DrawText(label, text_pos); + if (label_type == ltEstimatedTime) + dc.DrawLabel(label, wxRect(text_pos, wxSize(text_width, text_height)), wxALIGN_RIGHT); + else + dc.DrawText(label, text_pos); } void Control::draw_thumb_text(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection) const diff --git a/src/slic3r/GUI/DoubleSlider.hpp b/src/slic3r/GUI/DoubleSlider.hpp index 509f6ce1e..57fa5d0f1 100644 --- a/src/slic3r/GUI/DoubleSlider.hpp +++ b/src/slic3r/GUI/DoubleSlider.hpp @@ -225,6 +225,7 @@ public: Info GetTicksValues() const; void SetTicksValues(const Info &custom_gcode_per_print_z); void SetLayersTimes(const std::vector<float>& layers_times); + void SetLayersTimes(const std::vector<double>& layers_times); void SetDrawMode(bool is_sla_print, bool is_sequential_print); #if ENABLE_GCODE_VIEWER @@ -402,7 +403,7 @@ private: std::vector<double> m_values; TickCodeInfo m_ticks; - std::vector<float> m_layers_times; + std::vector<double> m_layers_times; std::vector<std::string> m_extruder_colors; diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index 8091792e0..d33c8f22a 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -657,7 +657,8 @@ void Preview::update_layers_slider(const std::vector<double>& layers_z, bool kee // Detect and set manipulation mode for double slider update_layers_slider_mode(); - CustomGCode::Info& ticks_info_from_model = wxGetApp().plater()->model().custom_gcode_per_print_z; + Plater* plater = wxGetApp().plater(); + CustomGCode::Info& ticks_info_from_model = plater->model().custom_gcode_per_print_z; check_layers_slider_values(ticks_info_from_model.gcodes, layers_z); m_layers_slider->SetSliderValues(layers_z); @@ -680,12 +681,15 @@ void Preview::update_layers_slider(const std::vector<double>& layers_z, bool kee } m_layers_slider->SetSelectionSpan(idx_low, idx_high); m_layers_slider->SetTicksValues(ticks_info_from_model); - m_layers_slider->SetLayersTimes(m_gcode_result->time_statistics.modes[0].layers_times); - bool sla_print_technology = wxGetApp().plater()->printer_technology() == ptSLA; + bool sla_print_technology = plater->printer_technology() == ptSLA; bool sequential_print = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("complete_objects"); m_layers_slider->SetDrawMode(sla_print_technology, sequential_print); - m_layers_slider->SetExtruderColors(wxGetApp().plater()->get_extruder_colors_from_plater_config()); + m_layers_slider->SetExtruderColors(plater->get_extruder_colors_from_plater_config()); + if (sla_print_technology) + m_layers_slider->SetLayersTimes(plater->sla_print().print_statistics().layers_times); + else + m_layers_slider->SetLayersTimes(m_gcode_result->time_statistics.modes[0].layers_times); m_layers_slider_sizer->Show((size_t)0); Layout(); From a0239a75095eaff97cd2260de0363dc9b6f1d72a Mon Sep 17 00:00:00 2001 From: David Kocik <kocikdav@gmail.com> Date: Fri, 20 Nov 2020 09:42:43 +0100 Subject: [PATCH 055/138] close export finished notification after eject atempt --- src/slic3r/GUI/Plater.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 16e55db63..46e1fe2fc 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2044,6 +2044,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) this->q->Bind(EVT_REMOVABLE_DRIVE_EJECTED, [this, q](RemovableDriveEjectEvent &evt) { if (evt.data.second) { this->show_action_buttons(this->ready_to_slice); + notification_manager->close_notification_of_type(NotificationType::ExportFinished); notification_manager->push_notification(format(_L("Successfully unmounted. The device %s(%s) can now be safely removed from the computer."),evt.data.first.name, evt.data.first.path), NotificationManager::NotificationLevel::RegularNotification, *q->get_current_canvas3D()); } else { From 096d0c9860c3c54aa19cf6d07ad0187a1bc90f34 Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Fri, 20 Nov 2020 09:35:04 +0100 Subject: [PATCH 056/138] Fix arrange objectfunction to avoid last object in awkward positions. fixes #3900 --- src/libslic3r/Arrange.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index 6ae7dd6a2..e61f11517 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -277,10 +277,10 @@ protected: if (result.empty()) score = 0.50 * dist + 0.50 * density; else - score = R * 0.60 * dist + - (1.0 - R) * 0.20 * density + - 0.20 * alignment_score; - + // Let the density matter more when fewer objects remain + score = 0.50 * dist + (1.0 - R) * 0.20 * density + + 0.30 * alignment_score; + break; } case LAST_BIG_ITEM: { From d5bdaceff200bab6ba06c0ef5f9109ab03c79732 Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Wed, 18 Nov 2020 00:06:34 +0100 Subject: [PATCH 057/138] Right mouse reaction to arrange button Working arrange settings popup --- src/libslic3r/Arrange.cpp | 34 +++++++++++++--------------- src/libslic3r/Arrange.hpp | 2 ++ src/slic3r/GUI/GLCanvas3D.cpp | 36 +++++++++++++++++++++++++++++- src/slic3r/GUI/GLCanvas3D.hpp | 12 ++++++++++ src/slic3r/GUI/Jobs/ArrangeJob.cpp | 8 ++++--- 5 files changed, 69 insertions(+), 23 deletions(-) diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index e61f11517..00656a629 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -83,7 +83,7 @@ const double BIG_ITEM_TRESHOLD = 0.02; // Fill in the placer algorithm configuration with values carefully chosen for // Slic3r. template<class PConf> -void fill_config(PConf& pcfg) { +void fill_config(PConf& pcfg, const ArrangeParams ¶ms) { // Align the arranged pile into the center of the bin pcfg.alignment = PConf::Alignment::CENTER; @@ -93,14 +93,17 @@ void fill_config(PConf& pcfg) { // TODO cannot use rotations until multiple objects of same geometry can // handle different rotations. - pcfg.rotations = { 0.0 }; + if (params.allow_rotations) + pcfg.rotations = {0., PI / 2., PI, 3. * PI / 2. }; + else + pcfg.rotations = {0.}; // The accuracy of optimization. // Goes from 0.0 to 1.0 and scales performance as well - pcfg.accuracy = 0.65f; + pcfg.accuracy = params.accuracy; // Allow parallel execution. - pcfg.parallel = true; + pcfg.parallel = params.parallel; } // Apply penalty to object function result. This is used only when alignment @@ -304,15 +307,15 @@ protected: public: AutoArranger(const TBin & bin, - Distance dist, + const ArrangeParams ¶ms, std::function<void(unsigned)> progressind, std::function<bool(void)> stopcond) - : m_pck(bin, dist) + : m_pck(bin, params.min_obj_distance) , m_bin(bin) , m_bin_area(sl::area(bin)) , m_norm(std::sqrt(m_bin_area)) { - fill_config(m_pconf); + fill_config(m_pconf, params); // Set up a callback that is called just before arranging starts // This functionality is provided by the Nester class (m_pack). @@ -349,12 +352,6 @@ public: m_pck.configure(m_pconf); } - - AutoArranger(const TBin & bin, - std::function<void(unsigned)> progressind, - std::function<bool(void)> stopcond) - : AutoArranger{bin, 0 /* no min distance */, progressind, stopcond} - {} template<class It> inline void operator()(It from, It to) { m_rtree.clear(); @@ -457,7 +454,7 @@ void _arrange( std::vector<Item> & shapes, std::vector<Item> & excludes, const BinT & bin, - const ArrangeParams & params, + const ArrangeParams ¶ms, std::function<void(unsigned)> progressfn, std::function<bool()> stopfn) { @@ -467,11 +464,10 @@ void _arrange( auto corrected_bin = bin; sl::offset(corrected_bin, md); - - AutoArranger<BinT> arranger{corrected_bin, progressfn, stopfn}; - - arranger.config().accuracy = params.accuracy; - arranger.config().parallel = params.parallel; + ArrangeParams mod_params = params; + mod_params.min_obj_distance = 0; + + AutoArranger<BinT> arranger{corrected_bin, mod_params, progressfn, stopfn}; auto infl = coord_t(std::ceil(params.min_obj_distance / 2.0)); for (Item& itm : shapes) itm.inflate(infl); diff --git a/src/libslic3r/Arrange.hpp b/src/libslic3r/Arrange.hpp index 7630ab3e8..65c3984d5 100644 --- a/src/libslic3r/Arrange.hpp +++ b/src/libslic3r/Arrange.hpp @@ -78,6 +78,8 @@ struct ArrangeParams { /// Allow parallel execution. bool parallel = true; + + bool allow_rotations = false; /// Progress indicator callback called when an object gets packed. /// The unsigned argument is the number of items remaining to pack. diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index cd82878c2..ae08d40d9 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -170,7 +170,7 @@ void GLCanvas3D::LayersEditing::init() } void GLCanvas3D::LayersEditing::set_config(const DynamicPrintConfig* config) -{ +{ m_config = config; delete m_slicing_parameters; m_slicing_parameters = nullptr; @@ -1325,6 +1325,9 @@ void GLCanvas3D::update_instance_printable_state_for_objects(std::vector<size_t> void GLCanvas3D::set_config(const DynamicPrintConfig* config) { + if (!m_config) + m_arrange_settings.distance = min_object_distance(*config); + m_config = config; m_layers_editing.set_config(config); } @@ -3847,6 +3850,30 @@ bool GLCanvas3D::_render_search_list(float pos_x) const return action_taken; } +bool GLCanvas3D::_render_arrange_popup() +{ + ImGuiWrapper *imgui = wxGetApp().imgui(); + + float x = 0.5f * (float)get_canvas_size().get_width(); + imgui->set_next_window_pos(x, m_main_toolbar.get_height(), ImGuiCond_Always, 0.5f, 0.0f); + + imgui->begin(_(L("Arrange options")), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse); + ArrangeSettings settings = m_arrange_settings; + + if (imgui->slider_float(_(L("Gap size")), &settings.distance, 0.f, 100.f)) + m_arrange_settings.distance = settings.distance; + + if (imgui->slider_float(_(L("Accuracy")), &settings.accuracy, 0.f, 1.f)) + m_arrange_settings.accuracy = settings.accuracy; + + if (imgui->checkbox(_(L("Enable rotations")), settings.enable_rotation)) + m_arrange_settings.enable_rotation = settings.enable_rotation; + + imgui->end(); + + return false; +} + #define ENABLE_THUMBNAIL_GENERATOR_DEBUG_OUTPUT 0 #if ENABLE_THUMBNAIL_GENERATOR_DEBUG_OUTPUT static void debug_output_thumbnail(const ThumbnailData& thumbnail_data) @@ -4263,6 +4290,13 @@ bool GLCanvas3D::_init_main_toolbar() item.sprite_id = 3; item.left.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_ARRANGE)); }; item.enabling_callback = []()->bool { return wxGetApp().plater()->can_arrange(); }; + item.right.toggable = true; + item.right.render_callback = [this](float left, float right, float, float) { + if (m_canvas != nullptr) + { + _render_arrange_popup(); + } + }; if (!m_main_toolbar.add_item(item)) return false; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 0975e59a0..c760dc323 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -381,6 +381,13 @@ public: Cross }; + struct ArrangeSettings + { + float distance = 6.; + float accuracy = 0.65f; + bool enable_rotation = false; + }; + private: wxGLCanvas* m_canvas; wxGLContext* m_context; @@ -452,6 +459,8 @@ private: mutable bool m_tooltip_enabled{ true }; Slope m_slope; + ArrangeSettings m_arrange_settings; + public: explicit GLCanvas3D(wxGLCanvas* canvas); ~GLCanvas3D(); @@ -671,6 +680,8 @@ public: void use_slope(bool use) { m_slope.use(use); } void set_slope_normal_angle(float angle_in_deg) { m_slope.set_normal_angle(angle_in_deg); } + const ArrangeSettings& get_arrange_settings() const { return m_arrange_settings; } + private: bool _is_shown_on_screen() const; @@ -717,6 +728,7 @@ private: void _render_selection_sidebar_hints() const; bool _render_undo_redo_stack(const bool is_undo, float pos_x) const; bool _render_search_list(float pos_x) const; + bool _render_arrange_popup(); void _render_thumbnail_internal(ThumbnailData& thumbnail_data, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) const; // render thumbnail using an off-screen framebuffer void _render_thumbnail_framebuffer(ThumbnailData& thumbnail_data, unsigned int w, unsigned int h, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) const; diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index 41fd717da..9bb26e096 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -147,11 +147,13 @@ void ArrangeJob::prepare() void ArrangeJob::process() { static const auto arrangestr = _(L("Arranging")); - - double dist = min_object_distance(*m_plater->config()); + + GLCanvas3D::ArrangeSettings settings = + m_plater->canvas3D()->get_arrange_settings(); arrangement::ArrangeParams params; - params.min_obj_distance = scaled(dist); + params.min_obj_distance = scaled(settings.distance); + params.allow_rotations = settings.enable_rotation; auto count = unsigned(m_selected.size() + m_unprintable.size()); Points bedpts = get_bed_shape(*m_plater->config()); From e17e6b4d0e6974eb560ee8c86dff1a28f91d271a Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Fri, 20 Nov 2020 09:28:09 +0100 Subject: [PATCH 058/138] Add minimum bounding box rotation as starting point --- src/libslic3r/Arrange.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index 00656a629..e581f4c0f 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -7,6 +7,7 @@ #include <libnest2d/optimizers/nlopt/subplex.hpp> #include <libnest2d/placers/nfpplacer.hpp> #include <libnest2d/selections/firstfit.hpp> +#include <libnest2d/utils/rotcalipers.hpp> #include <numeric> #include <ClipperUtils.hpp> @@ -449,6 +450,12 @@ template<class Bin> void remove_large_items(std::vector<Item> &items, Bin &&bin) ++it : it = items.erase(it); } +template<class S> Radians min_area_boundingbox_rotation(const S &sh) +{ + return minAreaBoundingBox<S, TCompute<S>, boost::rational<LargeInt>>(sh) + .angleToX(); +} + template<class BinT> // Arrange for arbitrary bin type void _arrange( std::vector<Item> & shapes, @@ -483,6 +490,13 @@ void _arrange( for (auto &itm : shapes ) inp.emplace_back(itm); for (auto &itm : excludes) inp.emplace_back(itm); + // Use the minimum bounding box rotation as a starting point. + // TODO: This only works for convex hull. If we ever switch to concave + // polygon nesting, a convex hull needs to be calculated. + if (params.allow_rotations) + for (auto &itm : shapes) + itm.rotation(min_area_boundingbox_rotation(itm.rawShape())); + arranger(inp.begin(), inp.end()); for (Item &itm : inp) itm.inflate(-infl); } From bc3696bd42ff5fe7dbf4589e9b403cdd2af050f8 Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Wed, 18 Nov 2020 14:38:46 +0100 Subject: [PATCH 059/138] Save and load arrange settings to app_config --- src/slic3r/GUI/GLCanvas3D.cpp | 44 ++++++++++++++++++++++++++--------- src/slic3r/GUI/GLCanvas3D.hpp | 2 +- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index ae08d40d9..7bab21982 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1091,6 +1091,25 @@ wxDEFINE_EVENT(EVT_GLCANVAS_RELOAD_FROM_DISK, SimpleEvent); const double GLCanvas3D::DefaultCameraZoomToBoxMarginFactor = 1.25; +GLCanvas3D::ArrangeSettings load_arrange_settings() +{ + GLCanvas3D::ArrangeSettings settings; + + std::string dist_str = + wxGetApp().app_config->get("arrange", "min_object_distance"); + + std::string en_rot_str = + wxGetApp().app_config->get("arrange", "enable_rotation"); + + if (!dist_str.empty()) + settings.distance = std::stof(dist_str); + + if (!en_rot_str.empty()) + settings.enable_rotation = (en_rot_str == "1" || en_rot_str == "yes"); + + return settings; +} + GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas) : m_canvas(canvas) , m_context(nullptr) @@ -1133,6 +1152,8 @@ GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas) #endif // ENABLE_RETINA_GL } + m_arrange_settings = load_arrange_settings(); + m_selection.set_volumes(&m_volumes.volumes); } @@ -1325,9 +1346,6 @@ void GLCanvas3D::update_instance_printable_state_for_objects(std::vector<size_t> void GLCanvas3D::set_config(const DynamicPrintConfig* config) { - if (!m_config) - m_arrange_settings.distance = min_object_distance(*config); - m_config = config; m_layers_editing.set_config(config); } @@ -3850,7 +3868,7 @@ bool GLCanvas3D::_render_search_list(float pos_x) const return action_taken; } -bool GLCanvas3D::_render_arrange_popup() +void GLCanvas3D:: _render_arrange_popup() { ImGuiWrapper *imgui = wxGetApp().imgui(); @@ -3860,18 +3878,19 @@ bool GLCanvas3D::_render_arrange_popup() imgui->begin(_(L("Arrange options")), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse); ArrangeSettings settings = m_arrange_settings; - if (imgui->slider_float(_(L("Gap size")), &settings.distance, 0.f, 100.f)) + auto &appcfg = wxGetApp().app_config; + + if (imgui->slider_float(_(L("Gap size")), &settings.distance, 0.f, 100.f)) { m_arrange_settings.distance = settings.distance; + appcfg->set("arrange", "min_object_distance", std::to_string(settings.distance)); + } - if (imgui->slider_float(_(L("Accuracy")), &settings.accuracy, 0.f, 1.f)) - m_arrange_settings.accuracy = settings.accuracy; - - if (imgui->checkbox(_(L("Enable rotations")), settings.enable_rotation)) + if (imgui->checkbox(_(L("Enable rotations")), settings.enable_rotation)) { m_arrange_settings.enable_rotation = settings.enable_rotation; + appcfg->set("arrange", "enable_rotation", "1"); + } imgui->end(); - - return false; } #define ENABLE_THUMBNAIL_GENERATOR_DEBUG_OUTPUT 0 @@ -4300,6 +4319,9 @@ bool GLCanvas3D::_init_main_toolbar() if (!m_main_toolbar.add_item(item)) return false; + item.right.toggable = false; + item.right.render_callback = GLToolbarItem::Default_Render_Callback; + if (!m_main_toolbar.add_separator()) return false; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index c760dc323..7a73f8fe4 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -728,7 +728,7 @@ private: void _render_selection_sidebar_hints() const; bool _render_undo_redo_stack(const bool is_undo, float pos_x) const; bool _render_search_list(float pos_x) const; - bool _render_arrange_popup(); + void _render_arrange_popup(); void _render_thumbnail_internal(ThumbnailData& thumbnail_data, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) const; // render thumbnail using an off-screen framebuffer void _render_thumbnail_framebuffer(ThumbnailData& thumbnail_data, unsigned int w, unsigned int h, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) const; From adf81af6de25fe6a0f4eacb33dc17cfed7ed0670 Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Fri, 20 Nov 2020 09:32:18 +0100 Subject: [PATCH 060/138] Prototype feature: fill plater with instances of selected object #fixes #1350 --- src/libslic3r/Arrange.cpp | 39 ++++---- src/slic3r/CMakeLists.txt | 2 + src/slic3r/GUI/Jobs/ArrangeJob.cpp | 34 ++++--- src/slic3r/GUI/Jobs/ArrangeJob.hpp | 57 ++++++------ src/slic3r/GUI/Jobs/FillBedJob.cpp | 139 +++++++++++++++++++++++++++++ src/slic3r/GUI/Jobs/FillBedJob.hpp | 46 ++++++++++ src/slic3r/GUI/Plater.cpp | 26 +++++- src/slic3r/GUI/Plater.hpp | 2 + 8 files changed, 286 insertions(+), 59 deletions(-) create mode 100644 src/slic3r/GUI/Jobs/FillBedJob.cpp create mode 100644 src/slic3r/GUI/Jobs/FillBedJob.hpp diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index e581f4c0f..e4a5c7b42 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -566,28 +566,35 @@ static void process_arrangeable(const ArrangePolygon &arrpoly, outp.back().priority(arrpoly.priority); } +template<class Fn> auto call_with_bed(const Points &bed, Fn &&fn) +{ + if (bed.empty()) + return fn(InfiniteBed{}); + else if (bed.size() == 1) + return fn(InfiniteBed{bed.front()}); + else { + auto bb = BoundingBox(bed); + CircleBed circ = to_circle(bb.center(), bed); + auto parea = poly_area(bed); + + if ((1.0 - parea / area(bb)) < 1e-3) + return fn(bb); + else if (!std::isnan(circ.radius())) + return fn(circ); + else + return fn(Polygon(bed)); + } +} + template<> void arrange(ArrangePolygons & items, const ArrangePolygons &excludes, const Points & bed, const ArrangeParams & params) { - if (bed.empty()) - arrange(items, excludes, InfiniteBed{}, params); - else if (bed.size() == 1) - arrange(items, excludes, InfiniteBed{bed.front()}, params); - else { - auto bb = BoundingBox(bed); - CircleBed circ = to_circle(bb.center(), bed); - auto parea = poly_area(bed); - - if ((1.0 - parea / area(bb)) < 1e-3) - arrange(items, excludes, bb, params); - else if (!std::isnan(circ.radius())) - arrange(items, excludes, circ, params); - else - arrange(items, excludes, Polygon(bed), params); - } + call_with_bed(bed, [&](const auto &bin) { + arrange(items, excludes, bin, params); + }); } template<class BedT> diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index c44b76970..699135d27 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -162,6 +162,8 @@ set(SLIC3R_GUI_SOURCES GUI/Jobs/ArrangeJob.cpp GUI/Jobs/RotoptimizeJob.hpp GUI/Jobs/RotoptimizeJob.cpp + GUI/Jobs/FillBedJob.hpp + GUI/Jobs/FillBedJob.cpp GUI/Jobs/SLAImportJob.hpp GUI/Jobs/SLAImportJob.cpp GUI/Jobs/ProgressIndicator.hpp diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index 9bb26e096..b8f165c02 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -46,7 +46,7 @@ public: } }; -static WipeTower get_wipe_tower(Plater &plater) +static WipeTower get_wipe_tower(const Plater &plater) { return WipeTower{plater.canvas3D()->get_wipe_tower_info()}; } @@ -68,18 +68,13 @@ void ArrangeJob::clear_input() m_unprintable.reserve(cunprint /* for optional wti */); } -double ArrangeJob::bed_stride() const { - double bedwidth = m_plater->bed_shape_bb().size().x(); - return scaled<double>((1. + LOGICAL_BED_GAP) * bedwidth); -} - void ArrangeJob::prepare_all() { clear_input(); for (ModelObject *obj: m_plater->model().objects) for (ModelInstance *mi : obj->instances) { ArrangePolygons & cont = mi->printable ? m_selected : m_unprintable; - cont.emplace_back(get_arrange_poly(mi)); + cont.emplace_back(get_arrange_poly(mi, m_plater)); } if (auto wti = get_wipe_tower(*m_plater)) @@ -90,7 +85,7 @@ void ArrangeJob::prepare_selected() { clear_input(); Model &model = m_plater->model(); - double stride = bed_stride(); + double stride = bed_stride(m_plater); std::vector<const Selection::InstanceIdxsList *> obj_sel(model.objects.size(), nullptr); @@ -111,7 +106,7 @@ void ArrangeJob::prepare_selected() { inst_sel[size_t(inst_id)] = true; for (size_t i = 0; i < inst_sel.size(); ++i) { - ArrangePolygon &&ap = get_arrange_poly(mo->instances[i]); + ArrangePolygon &&ap = get_arrange_poly(mo->instances[i], m_plater); ArrangePolygons &cont = mo->instances[i]->printable ? (inst_sel[i] ? m_selected : @@ -123,7 +118,7 @@ void ArrangeJob::prepare_selected() { } if (auto wti = get_wipe_tower(*m_plater)) { - ArrangePolygon &&ap = get_arrange_poly(&wti); + ArrangePolygon &&ap = get_arrange_poly(&wti, m_plater); m_plater->get_selection().is_wipe_tower() ? m_selected.emplace_back(std::move(ap)) : @@ -213,14 +208,25 @@ void ArrangeJob::finalize() { Job::finalize(); } -arrangement::ArrangePolygon get_wipe_tower_arrangepoly(Plater &plater) +std::optional<arrangement::ArrangePolygon> +get_wipe_tower_arrangepoly(const Plater &plater) { - return WipeTower{plater.canvas3D()->get_wipe_tower_info()}.get_arrange_polygon(); + if (auto wti = get_wipe_tower(plater)) + return wti.get_arrange_polygon(); + + return {}; } -void apply_wipe_tower_arrangepoly(Plater &plater, const arrangement::ArrangePolygon &ap) +void apply_wipe_tower_arrangepoly(Plater & plater, + const arrangement::ArrangePolygon &ap) { - WipeTower{plater.canvas3D()->get_wipe_tower_info()}.apply_arrange_result(ap.translation.cast<double>(), ap.rotation); + WipeTower{plater.canvas3D()->get_wipe_tower_info()} + .apply_arrange_result(ap.translation.cast<double>(), ap.rotation); +} + +double bed_stride(const Plater *plater) { + double bedwidth = plater->bed_shape_bb().size().x(); + return scaled<double>((1. + LOGICAL_BED_GAP) * bedwidth); } }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.hpp b/src/slic3r/GUI/Jobs/ArrangeJob.hpp index bd097af6b..f178711e9 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.hpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.hpp @@ -14,35 +14,12 @@ class ArrangeJob : public Job using ArrangePolygon = arrangement::ArrangePolygon; using ArrangePolygons = arrangement::ArrangePolygons; - - // The gap between logical beds in the x axis expressed in ratio of - // the current bed width. - static const constexpr double LOGICAL_BED_GAP = 1. / 5.; - + ArrangePolygons m_selected, m_unselected, m_unprintable; // clear m_selected and m_unselected, reserve space for next usage void clear_input(); - - // Stride between logical beds - double bed_stride() const; - - // Set up arrange polygon for a ModelInstance and Wipe tower - template<class T> ArrangePolygon get_arrange_poly(T *obj) const - { - ArrangePolygon ap = obj->get_arrange_polygon(); - ap.priority = 0; - ap.bed_idx = ap.translation.x() / bed_stride(); - ap.setter = [obj, this](const ArrangePolygon &p) { - if (p.is_arranged()) { - Vec2d t = p.translation.cast<double>(); - t.x() += p.bed_idx * bed_stride(); - obj->apply_arrange_result(t, p.rotation); - } - }; - return ap; - } - + // Prepare all objects on the bed regardless of the selection void prepare_all(); @@ -69,9 +46,37 @@ public: void finalize() override; }; -arrangement::ArrangePolygon get_wipe_tower_arrangepoly(Plater &); +std::optional<arrangement::ArrangePolygon> get_wipe_tower_arrangepoly(const Plater &); void apply_wipe_tower_arrangepoly(Plater &plater, const arrangement::ArrangePolygon &ap); +// The gap between logical beds in the x axis expressed in ratio of +// the current bed width. +static const constexpr double LOGICAL_BED_GAP = 1. / 5.; + +// Stride between logical beds +double bed_stride(const Plater *plater); + +// Set up arrange polygon for a ModelInstance and Wipe tower +template<class T> +arrangement::ArrangePolygon get_arrange_poly(T *obj, const Plater *plater) +{ + using ArrangePolygon = arrangement::ArrangePolygon; + + ArrangePolygon ap = obj->get_arrange_polygon(); + ap.priority = 0; + ap.bed_idx = ap.translation.x() / bed_stride(plater); + ap.setter = [obj, plater](const ArrangePolygon &p) { + if (p.is_arranged()) { + Vec2d t = p.translation.cast<double>(); + t.x() += p.bed_idx * bed_stride(plater); + obj->apply_arrange_result(t, p.rotation); + } + }; + + return ap; +} + + }} // namespace Slic3r::GUI #endif // ARRANGEJOB_HPP diff --git a/src/slic3r/GUI/Jobs/FillBedJob.cpp b/src/slic3r/GUI/Jobs/FillBedJob.cpp new file mode 100644 index 000000000..8c7b3c418 --- /dev/null +++ b/src/slic3r/GUI/Jobs/FillBedJob.cpp @@ -0,0 +1,139 @@ +#include "FillBedJob.hpp" + +#include "libslic3r/Model.hpp" +#include "libslic3r/ClipperUtils.hpp" + +#include "slic3r/GUI/Plater.hpp" +#include "slic3r/GUI/GLCanvas3D.hpp" +#include "slic3r/GUI/GUI_ObjectList.hpp" + +#include <numeric> + +namespace Slic3r { +namespace GUI { + +void FillBedJob::prepare() +{ + m_selected.clear(); + m_unselected.clear(); + m_bedpts.clear(); + + m_object_idx = m_plater->get_selected_object_idx(); + if (m_object_idx == -1) + return; + + ModelObject *model_object = m_plater->model().objects[m_object_idx]; + if (model_object->instances.empty()) return; + + m_selected.reserve(model_object->instances.size()); + for (ModelInstance *inst : model_object->instances) + if (inst->printable) { + ArrangePolygon ap = get_arrange_poly(inst, m_plater); + ++ap.priority; // need to be included in the result + m_selected.emplace_back(ap); + } + + if (m_selected.empty()) return; + + m_bedpts = get_bed_shape(*m_plater->config()); + + auto &objects = m_plater->model().objects; + for (size_t idx = 0; idx < objects.size(); ++idx) + if (int(idx) != m_object_idx) + for (const ModelInstance *mi : objects[idx]->instances) { + m_unselected.emplace_back(mi->get_arrange_polygon()); + m_unselected.back().bed_idx = 0; + } + + if (auto wt = get_wipe_tower_arrangepoly(*m_plater)) + m_unselected.emplace_back(std::move(*wt)); + + double sc = scaled<double>(1.) * scaled(1.); + + ExPolygon poly = m_selected.front().poly; + double poly_area = poly.area() / sc; + double unsel_area = std::accumulate(m_unselected.begin(), + m_unselected.end(), 0., + [](double s, const auto &ap) { + return s + ap.poly.area(); + }) / sc; + + double fixed_area = unsel_area + m_selected.size() * poly_area; + + // This is the maximum range, the real number will always be close but less. + double bed_area = Polygon{m_bedpts}.area() / sc; + + m_status_range = (bed_area - fixed_area) / poly_area; + + ModelInstance *mi = model_object->instances[0]; + for (int i = 0; i < m_status_range; ++i) { + ArrangePolygon ap; + ap.poly = m_selected.front().poly; + ap.bed_idx = arrangement::UNARRANGED; + ap.setter = [this, mi](const ArrangePolygon &p) { + ModelObject *mo = m_plater->model().objects[m_object_idx]; + ModelInstance *inst = mo->add_instance(*mi); + inst->apply_arrange_result(p.translation.cast<double>(), p.rotation); + }; + m_selected.emplace_back(ap); + } +} + +void FillBedJob::process() +{ + if (m_object_idx == -1 || m_selected.empty()) return; + + GLCanvas3D::ArrangeSettings settings = + m_plater->canvas3D()->get_arrange_settings(); + + arrangement::ArrangeParams params; + params.min_obj_distance = scaled(settings.distance); + params.allow_rotations = settings.enable_rotation; + + params.stopcondition = [this]() { return was_canceled(); }; + + params.progressind = [this](unsigned st) { + if (st > 0) + update_status(int(m_status_range - st), _(L("Filling bed"))); + }; + + arrangement::arrange(m_selected, m_unselected, m_bedpts, params); + + // finalize just here. + update_status(m_status_range, was_canceled() ? + _(L("Bed filling canceled.")) : + _(L("Bed filling done."))); +} + +void FillBedJob::finalize() +{ + if (m_object_idx == -1) return; + + ModelObject *model_object = m_plater->model().objects[m_object_idx]; + if (model_object->instances.empty()) return; + + size_t inst_cnt = model_object->instances.size(); + + for (ArrangePolygon &ap : m_selected) { + if (ap.priority != 0 || !(ap.bed_idx == arrangement::UNARRANGED || ap.bed_idx > 0)) + ap.apply(); + } + + model_object->ensure_on_bed(); + + m_plater->update(); + + int added_cnt = std::accumulate(m_selected.begin(), m_selected.end(), 0, + [](int s, auto &ap) { + return s + int(ap.priority == 0 && ap.bed_idx == 0); + }); + + // FIXME: somebody explain why this is needed for increase_object_instances + if (inst_cnt == 1) added_cnt++; + + if (added_cnt > 0) + m_plater->sidebar() + .obj_list()->increase_object_instances(m_object_idx, size_t(added_cnt)); +} + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Jobs/FillBedJob.hpp b/src/slic3r/GUI/Jobs/FillBedJob.hpp new file mode 100644 index 000000000..448ae53d4 --- /dev/null +++ b/src/slic3r/GUI/Jobs/FillBedJob.hpp @@ -0,0 +1,46 @@ +#ifndef FILLBEDJOB_HPP +#define FILLBEDJOB_HPP + +#include "ArrangeJob.hpp" + +namespace Slic3r { namespace GUI { + +class Plater; + +class FillBedJob : public Job +{ + Plater *m_plater; + int m_object_idx = -1; + + using ArrangePolygon = arrangement::ArrangePolygon; + using ArrangePolygons = arrangement::ArrangePolygons; + + ArrangePolygons m_selected; + ArrangePolygons m_unselected; + + Points m_bedpts; + + int m_status_range = 0; + +protected: + + void prepare() override; + +public: + FillBedJob(std::shared_ptr<ProgressIndicator> pri, Plater *plater) + : Job{std::move(pri)}, m_plater{plater} + {} + + int status_range() const override + { + return m_status_range; + } + + void process() override; + + void finalize() override; +}; + +}} // namespace Slic3r::GUI + +#endif // FILLBEDJOB_HPP diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 46e1fe2fc..4b31f10d7 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -63,6 +63,7 @@ #include "Mouse3DController.hpp" #include "Tab.hpp" #include "Jobs/ArrangeJob.hpp" +#include "Jobs/FillBedJob.hpp" #include "Jobs/RotoptimizeJob.hpp" #include "Jobs/SLAImportJob.hpp" #include "BackgroundSlicingProcess.hpp" @@ -1573,7 +1574,7 @@ struct Plater::priv class Jobs: public ExclusiveJobGroup { priv *m; - size_t m_arrange_id, m_rotoptimize_id, m_sla_import_id; + size_t m_arrange_id, m_fill_bed_id, m_rotoptimize_id, m_sla_import_id; void before_start() override { m->background_process.stop(); } @@ -1581,6 +1582,7 @@ struct Plater::priv Jobs(priv *_m) : m(_m) { m_arrange_id = add_job(std::make_unique<ArrangeJob>(m->statusbar(), m->q)); + m_fill_bed_id = add_job(std::make_unique<FillBedJob>(m->statusbar(), m->q)); m_rotoptimize_id = add_job(std::make_unique<RotoptimizeJob>(m->statusbar(), m->q)); m_sla_import_id = add_job(std::make_unique<SLAImportJob>(m->statusbar(), m->q)); } @@ -1590,6 +1592,12 @@ struct Plater::priv m->take_snapshot(_(L("Arrange"))); start(m_arrange_id); } + + void fill_bed() + { + m->take_snapshot(_(L("Fill bed"))); + start(m_fill_bed_id); + } void optimize_rotation() { @@ -2731,8 +2739,8 @@ void Plater::find_new_position(const ModelInstancePtrs &instances, movable.emplace_back(std::move(arrpoly)); } - if (p->view3D->get_canvas3d()->get_wipe_tower_info()) - fixed.emplace_back(get_wipe_tower_arrangepoly(*this)); + if (auto wt = get_wipe_tower_arrangepoly(*this)) + fixed.emplace_back(*wt); arrangement::arrange(movable, fixed, get_bed_shape(*config()), arrangement::ArrangeParams{min_d}); @@ -3860,6 +3868,8 @@ bool Plater::priv::init_common_menu(wxMenu* menu, const bool is_part/* = false*/ [this](wxCommandEvent&) { q->decrease_instances(); }, "remove_copies", nullptr, [this]() { return can_decrease_instances(); }, q); wxMenuItem* item_set_number_of_copies = append_menu_item(menu, wxID_ANY, _L("Set number of instances") + dots, _L("Change the number of instances of the selected object"), [this](wxCommandEvent&) { q->set_number_of_copies(); }, "number_of_copies", nullptr, [this]() { return can_increase_instances(); }, q); + append_menu_item(menu, wxID_ANY, _L("Fill bed with instances") + dots, _L("Fill the remaining area of bed with instances of the selected object"), + [this](wxCommandEvent&) { q->fill_bed_with_instances(); }, "", nullptr, [this]() { return can_increase_instances(); }, q); items_increase.push_back(item_increase); @@ -4864,6 +4874,11 @@ void Plater::set_number_of_copies(/*size_t num*/) decrease_instances(-diff); } +void Plater::fill_bed_with_instances() +{ + p->m_ui_jobs.fill_bed(); +} + bool Plater::is_selection_empty() const { return p->get_selection().is_empty() || p->get_selection().is_wipe_tower(); @@ -5648,6 +5663,11 @@ GLCanvas3D* Plater::canvas3D() return p->view3D->get_canvas3d(); } +const GLCanvas3D* Plater::canvas3D() const +{ + return p->view3D->get_canvas3d(); +} + GLCanvas3D* Plater::get_current_canvas3D() { return p->get_current_canvas3D(); diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 9a286c424..0c1d48bc3 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -181,6 +181,7 @@ public: void increase_instances(size_t num = 1); void decrease_instances(size_t num = 1); void set_number_of_copies(/*size_t num*/); + void fill_bed_with_instances(); bool is_selection_empty() const; void scale_selection_to_fit_print_volume(); void convert_unit(bool from_imperial_unit); @@ -245,6 +246,7 @@ public: int get_selected_object_idx(); bool is_single_full_object_selection() const; GLCanvas3D* canvas3D(); + const GLCanvas3D * canvas3D() const; GLCanvas3D* get_current_canvas3D(); BoundingBoxf bed_shape_bb() const; From 148f4fe766cb7cf63972686af600d83804a2e8d3 Mon Sep 17 00:00:00 2001 From: Enrico Turri <enricoturri@seznam.cz> Date: Fri, 20 Nov 2020 11:50:25 +0100 Subject: [PATCH 061/138] GCode Viewer - Fixed crash when switching to tool view with gcode generated by slicers other than PrusaSlicer --- src/libslic3r/GCode/GCodeProcessor.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 4d3e16b47..4785c0898 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -817,6 +817,10 @@ void GCodeProcessor::process_file(const std::string& filename, bool apply_postpr update_estimated_times_stats(); + // ensure at least one (default) color is defined + if (m_result.extruder_colors.empty()) + m_result.extruder_colors.push_back("#FF8000"); + // post-process to add M73 lines into the gcode if (apply_postprocess) m_time_processor.post_process(filename); From cf42e9fc6e516c930acd4c809ca1ca9aafd5faba Mon Sep 17 00:00:00 2001 From: Enrico Turri <enricoturri@seznam.cz> Date: Fri, 20 Nov 2020 12:01:59 +0100 Subject: [PATCH 062/138] Fixed typo --- src/slic3r/GUI/ImGuiWrapper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 5da0efa6e..c1d121380 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -23,7 +23,7 @@ #include "libslic3r/libslic3r.h" #include "libslic3r/Utils.hpp" -#include "3DScene.hpp"+ +#include "3DScene.hpp" #include "GUI.hpp" #include "I18N.hpp" #include "Search.hpp" From 8d1e13fccd5e3be505be5f185f0f91b194e95c10 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Fri, 20 Nov 2020 13:36:58 +0100 Subject: [PATCH 063/138] Anchoring of sparse infills can now be disabled. --- src/libslic3r/Fill/Fill.cpp | 26 ++++++++++++-------------- src/libslic3r/Fill/Fill3DHoneycomb.cpp | 2 +- src/libslic3r/Fill/FillAdaptive.cpp | 2 +- src/libslic3r/Fill/FillBase.cpp | 16 ++++++++-------- src/libslic3r/Fill/FillBase.hpp | 8 ++++---- src/libslic3r/Fill/FillGyroid.cpp | 2 +- src/libslic3r/Fill/FillHoneycomb.cpp | 2 +- src/libslic3r/Fill/FillLine.cpp | 2 +- src/libslic3r/Fill/FillPlanePath.cpp | 2 +- src/libslic3r/Fill/FillRectilinear.cpp | 4 ++-- src/libslic3r/PrintConfig.cpp | 5 +++-- 11 files changed, 35 insertions(+), 36 deletions(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 33ebf4ca2..90cd5699f 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -33,12 +33,11 @@ struct SurfaceFillParams // FillParams float density = 0.f; - // Don't connect the fill lines around the inner perimeter. - bool dont_connect = false; // Don't adjust spacing to fill the space evenly. bool dont_adjust = false; // Length of the infill anchor along the perimeter line. - float anchor_length = std::numeric_limits<float>::max(); + // 1000mm is roughly the maximum length line that fits into a 32bit coord_t. + float anchor_length = 1000.f; // width, height of extrusion, nozzle diameter, is bridge // For the output, for fill generator. @@ -67,7 +66,6 @@ struct SurfaceFillParams RETURN_COMPARE_NON_EQUAL(overlap); RETURN_COMPARE_NON_EQUAL(angle); RETURN_COMPARE_NON_EQUAL(density); - RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, dont_connect); RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, dont_adjust); RETURN_COMPARE_NON_EQUAL(anchor_length); RETURN_COMPARE_NON_EQUAL(flow.width); @@ -86,7 +84,6 @@ struct SurfaceFillParams this->overlap == rhs.overlap && this->angle == rhs.angle && this->density == rhs.density && - this->dont_connect == rhs.dont_connect && this->dont_adjust == rhs.dont_adjust && this->anchor_length == rhs.anchor_length && this->flow == rhs.flow && @@ -154,7 +151,11 @@ std::vector<SurfaceFill> group_fills(const Layer &layer) ); // Calculate flow spacing for infill pattern generation. - if (! surface.is_solid() && ! is_bridge) { + if (surface.is_solid() || is_bridge) { + params.spacing = params.flow.spacing(); + // Don't limit anchor length for solid or bridging infill. + params.anchor_length = 1000.f; + } else { // it's internal infill, so we can calculate a generic flow spacing // for all layers, for avoiding the ugly effect of // misaligned infill on first layer because of different extrusion width and @@ -167,12 +168,11 @@ std::vector<SurfaceFill> group_fills(const Layer &layer) -1, // auto width *layer.object() ).spacing(); - } else - params.spacing = params.flow.spacing(); - - params.anchor_length = float(region_config.infill_anchor); - if (region_config.infill_anchor.percent) - params.anchor_length *= 0.01 * params.spacing; + // Anchor a sparse infill to inner perimeters with the following anchor length: + params.anchor_length = float(region_config.infill_anchor); + if (region_config.infill_anchor.percent) + params.anchor_length *= 0.01 * params.spacing; + } auto it_params = set_surface_params.find(params); if (it_params == set_surface_params.end()) @@ -543,8 +543,6 @@ void Layer::make_ironing() fill.z = this->print_z; fill.overlap = 0; fill_params.density = 1.; -// fill_params.dont_connect = true; - fill_params.dont_connect = false; fill_params.monotonic = true; for (size_t i = 0; i < by_extruder.size(); ++ i) { diff --git a/src/libslic3r/Fill/Fill3DHoneycomb.cpp b/src/libslic3r/Fill/Fill3DHoneycomb.cpp index 69a7f9923..2ddca7fe4 100644 --- a/src/libslic3r/Fill/Fill3DHoneycomb.cpp +++ b/src/libslic3r/Fill/Fill3DHoneycomb.cpp @@ -165,7 +165,7 @@ void Fill3DHoneycomb::_fill_surface_single( polylines = intersection_pl(polylines, to_polygons(expolygon)); // connect lines if needed - if (params.dont_connect || polylines.size() <= 1) + if (params.dont_connect() || polylines.size() <= 1) append(polylines_out, chain_polylines(std::move(polylines))); else this->connect_infill(std::move(polylines), expolygon, polylines_out, this->spacing, params); diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 07c454c80..3b6297626 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -1332,7 +1332,7 @@ void Filler::_fill_surface_single( } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ - if (params.dont_connect || all_polylines_with_hooks.size() <= 1) + if (params.dont_connect() || all_polylines_with_hooks.size() <= 1) append(polylines_out, chain_polylines(std::move(all_polylines_with_hooks))); else connect_infill(std::move(all_polylines_with_hooks), expolygon, polylines_out, this->spacing, params); diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index cacc79d52..3cb93e073 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -1067,6 +1067,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const Polygons &boundary_s void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Polygon*> &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms) { assert(! infill_ordered.empty()); + assert(params.anchor_length >= 0.01f); const auto anchor_length = float(scale_(params.anchor_length)); #if 0 @@ -1239,7 +1240,6 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po return std::numeric_limits<size_t>::max(); }; - const float take_max_length = anchor_length > 0.f ? anchor_length : std::numeric_limits<float>::max(); const float line_half_width = 0.5f * scale_(spacing); #if 0 @@ -1276,7 +1276,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po idx_first = get_and_update_merged_with(idx_first); assert(idx_first < idx_second); assert(idx_second == merged_with[idx_second]); - if (could_connect && (anchor_length == 0.f || length < anchor_length * 2.5)) { + if (could_connect && length < anchor_length * 2.5) { // Take the complete contour. // Connect the two polygons using the boundary contour. take(infill_ordered[idx_first], infill_ordered[idx_second], boundary[cp1->contour_idx], cp1, cp2, connection_cost.reversed); @@ -1285,8 +1285,8 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po infill_ordered[idx_second].points.clear(); } else { // Try to connect cp1 resp. cp2 with a piece of perimeter line. - take_limited(infill_ordered[idx_first], boundary[cp1->contour_idx], boundary_params[cp1->contour_idx], cp1, cp2, connection_cost.reversed, take_max_length, line_half_width); - take_limited(infill_ordered[idx_second], boundary[cp1->contour_idx], boundary_params[cp1->contour_idx], cp2, cp1, ! connection_cost.reversed, take_max_length, line_half_width); + take_limited(infill_ordered[idx_first], boundary[cp1->contour_idx], boundary_params[cp1->contour_idx], cp1, cp2, connection_cost.reversed, anchor_length, line_half_width); + take_limited(infill_ordered[idx_second], boundary[cp1->contour_idx], boundary_params[cp1->contour_idx], cp2, cp1, ! connection_cost.reversed, anchor_length, line_half_width); } } #endif @@ -1314,7 +1314,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po if (polyline_idx1 != polyline_idx2) { Polyline &polyline1 = infill_ordered[polyline_idx1]; Polyline &polyline2 = infill_ordered[polyline_idx2]; - if (anchor_length == 0.f || arc.arc_length < anchor_length * 2.5) { + if (arc.arc_length < anchor_length * 2.5) { // Not closing a loop, connecting the lines. assert(contour[cp1->point_idx] == polyline1.points.front() || contour[cp1->point_idx] == polyline1.points.back()); if (contour[cp1->point_idx] == polyline1.points.front()) @@ -1359,7 +1359,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po assert(contour[contour_point.point_idx] == polyline.points.front() || contour[contour_point.point_idx] == polyline.points.back()); bool connected = false; for (float l : { std::min(lprev, lnext), std::max(lprev, lnext) }) { - if (l == std::numeric_limits<float>::max() || (anchor_length > 0.f && l > anchor_length * 2.5)) + if (l == std::numeric_limits<float>::max() || l > anchor_length * 2.5) break; // Take the complete contour. bool reversed = l == lprev; @@ -1400,9 +1400,9 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po float l = std::max(contour_point.contour_not_taken_length_prev, contour_point.contour_not_taken_length_next); if (l > SCALED_EPSILON) { if (contour_point.contour_not_taken_length_prev > contour_point.contour_not_taken_length_next) - take_limited(polyline, contour, contour_params, &contour_point, contour_point.prev_on_contour, true, take_max_length, line_half_width); + take_limited(polyline, contour, contour_params, &contour_point, contour_point.prev_on_contour, true, anchor_length, line_half_width); else - take_limited(polyline, contour, contour_params, &contour_point, contour_point.next_on_contour, false, take_max_length, line_half_width); + take_limited(polyline, contour, contour_params, &contour_point, contour_point.next_on_contour, false, anchor_length, line_half_width); } } } diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index 4f8456bfa..4ebad7a8d 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -33,15 +33,15 @@ public: struct FillParams { bool full_infill() const { return density > 0.9999f; } + // Don't connect the fill lines around the inner perimeter. + bool dont_connect() const { return anchor_length < 0.05f; } // Fill density, fraction in <0, 1> float density { 0.f }; // Length of an infill anchor along the perimeter. - float anchor_length { std::numeric_limits<float>::max() }; - - // Don't connect the fill lines around the inner perimeter. - bool dont_connect { false }; + // 1000mm is roughly the maximum length line that fits into a 32bit coord_t. + float anchor_length { 1000.f }; // Don't adjust spacing to fill the space evenly. bool dont_adjust { true }; diff --git a/src/libslic3r/Fill/FillGyroid.cpp b/src/libslic3r/Fill/FillGyroid.cpp index c70c4439e..5cbfed57c 100644 --- a/src/libslic3r/Fill/FillGyroid.cpp +++ b/src/libslic3r/Fill/FillGyroid.cpp @@ -192,7 +192,7 @@ void FillGyroid::_fill_surface_single( if (! polylines.empty()) { // connect lines size_t polylines_out_first_idx = polylines_out.size(); - if (params.dont_connect) + if (params.dont_connect()) append(polylines_out, chain_polylines(polylines)); else this->connect_infill(std::move(polylines), expolygon, polylines_out, this->spacing, params); diff --git a/src/libslic3r/Fill/FillHoneycomb.cpp b/src/libslic3r/Fill/FillHoneycomb.cpp index 8d80529ec..5e7000088 100644 --- a/src/libslic3r/Fill/FillHoneycomb.cpp +++ b/src/libslic3r/Fill/FillHoneycomb.cpp @@ -74,7 +74,7 @@ void FillHoneycomb::_fill_surface_single( } all_polylines = intersection_pl(std::move(all_polylines), to_polygons(expolygon)); - if (params.dont_connect || all_polylines.size() <= 1) + if (params.dont_connect() || all_polylines.size() <= 1) append(polylines_out, chain_polylines(std::move(all_polylines))); else connect_infill(std::move(all_polylines), expolygon, polylines_out, this->spacing, params); diff --git a/src/libslic3r/Fill/FillLine.cpp b/src/libslic3r/Fill/FillLine.cpp index 1e6ed5284..1cb9b2244 100644 --- a/src/libslic3r/Fill/FillLine.cpp +++ b/src/libslic3r/Fill/FillLine.cpp @@ -76,7 +76,7 @@ void FillLine::_fill_surface_single( size_t n_polylines_out_old = polylines_out.size(); // connect lines - if (! params.dont_connect && ! polylines.empty()) { // prevent calling leftmost_point() on empty collections + if (! params.dont_connect() && ! polylines.empty()) { // prevent calling leftmost_point() on empty collections // offset the expolygon by max(min_spacing/2, extra) ExPolygon expolygon_off; { diff --git a/src/libslic3r/Fill/FillPlanePath.cpp b/src/libslic3r/Fill/FillPlanePath.cpp index 0ce992ca3..a7a33b13d 100644 --- a/src/libslic3r/Fill/FillPlanePath.cpp +++ b/src/libslic3r/Fill/FillPlanePath.cpp @@ -46,7 +46,7 @@ void FillPlanePath::_fill_surface_single( // intersection(polylines_src, offset((Polygons)expolygon, scale_(0.02)), &polylines); polylines = intersection_pl(std::move(polylines), to_polygons(expolygon)); Polylines chained; - if (params.dont_connect || params.density > 0.5 || polylines.size() <= 1) + if (params.dont_connect() || params.density > 0.5 || polylines.size() <= 1) chained = chain_polylines(std::move(polylines)); else connect_infill(std::move(polylines), expolygon, chained, this->spacing, params); diff --git a/src/libslic3r/Fill/FillRectilinear.cpp b/src/libslic3r/Fill/FillRectilinear.cpp index 09bb44201..0a75b6729 100644 --- a/src/libslic3r/Fill/FillRectilinear.cpp +++ b/src/libslic3r/Fill/FillRectilinear.cpp @@ -1109,7 +1109,7 @@ static void connect_segment_intersections_by_contours( } } - if (params.dont_connect) { + if (params.dont_connect()) { if (itsct.prev_on_contour_quality == SegmentIntersection::LinkQuality::Valid) itsct.prev_on_contour_quality = SegmentIntersection::LinkQuality::TooLong; if (itsct.next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) @@ -2820,7 +2820,7 @@ bool FillRectilinear::fill_surface_by_multilines(const Surface *surface, FillPar } } - if (params.dont_connect || fill_lines.size() <= 1) { + if (params.dont_connect() || fill_lines.size() <= 1) { if (fill_lines.size() > 1) fill_lines = chain_polylines(std::move(fill_lines)); append(polylines_out, std::move(fill_lines)); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index e59e67cff..dc2ae61f8 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1064,14 +1064,15 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("5"); def->enum_values.push_back("10"); def->enum_values.push_back("1000"); - def->enum_labels.push_back(L("0 (unprintable)")); + def->enum_labels.push_back(L("0 (not anchored)")); def->enum_labels.push_back("1 mm"); def->enum_labels.push_back("2 mm"); def->enum_labels.push_back("5 mm"); def->enum_labels.push_back("10 mm"); def->enum_labels.push_back(L("1000 (unlimited)")); def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(300, true)); +// def->set_default_value(new ConfigOptionFloatOrPercent(300, true)); + def->set_default_value(new ConfigOptionFloatOrPercent(1000, false)); def = this->add("infill_extruder", coInt); def->label = L("Infill extruder"); From 5330b34d0a4e2d293a3a703387ebaf08c21cb795 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Fri, 20 Nov 2020 14:30:48 +0100 Subject: [PATCH 064/138] Added "Filament -> Spool weight" parameter --- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Print.cpp | 1 + src/libslic3r/PrintConfig.cpp | 7 +++++++ src/libslic3r/PrintConfig.hpp | 2 ++ src/slic3r/GUI/Plater.cpp | 38 ++++++++++++++++++++++++++++++++++- src/slic3r/GUI/Tab.cpp | 13 ++++++++++++ 6 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 1f00db49d..0b13745e1 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -439,7 +439,7 @@ const std::vector<std::string>& Preset::filament_options() { static std::vector<std::string> s_opts { "filament_colour", "filament_diameter", "filament_type", "filament_soluble", "filament_notes", "filament_max_volumetric_speed", - "extrusion_multiplier", "filament_density", "filament_cost", "filament_loading_speed", "filament_loading_speed_start", "filament_load_time", + "extrusion_multiplier", "filament_density", "filament_cost", "filament_spool_weight", "filament_loading_speed", "filament_loading_speed_start", "filament_load_time", "filament_unloading_speed", "filament_unloading_speed_start", "filament_unload_time", "filament_toolchange_delay", "filament_cooling_moves", "filament_cooling_initial_speed", "filament_cooling_final_speed", "filament_ramming_parameters", "filament_minimal_purge_on_wipe_tower", "temperature", "first_layer_temperature", "bed_temperature", "first_layer_bed_temperature", "fan_always_on", "cooling", "min_fan_speed", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 47d48dd40..4e4c90fb2 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -98,6 +98,7 @@ bool Print::invalidate_state_by_config_options(const std::vector<t_config_option "filament_density", "filament_notes", "filament_cost", + "filament_spool_weight", "first_layer_acceleration", "first_layer_bed_temperature", "first_layer_speed", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index dc2ae61f8..3831b08cb 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -806,6 +806,13 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->set_default_value(new ConfigOptionFloats { 0. }); + def = this->add("filament_spool_weight", coFloats); + def->label = L("Spool weight"); + def->tooltip = L("Enter weight of the spool without filament. This is only for statistical information."); + def->sidetext = L("g"); + def->min = 0; + def->set_default_value(new ConfigOptionFloats { 0. }); + def = this->add("filament_settings_id", coStrings); def->set_default_value(new ConfigOptionStrings { "" }); def->cli = ConfigOptionDef::nocli; diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 790e15af6..4f887c7c0 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -683,6 +683,7 @@ public: ConfigOptionStrings filament_type; ConfigOptionBools filament_soluble; ConfigOptionFloats filament_cost; + ConfigOptionFloats filament_spool_weight; ConfigOptionFloats filament_max_volumetric_speed; ConfigOptionFloats filament_loading_speed; ConfigOptionFloats filament_loading_speed_start; @@ -759,6 +760,7 @@ protected: OPT_PTR(filament_type); OPT_PTR(filament_soluble); OPT_PTR(filament_cost); + OPT_PTR(filament_spool_weight); OPT_PTR(filament_max_volumetric_speed); OPT_PTR(filament_loading_speed); OPT_PTR(filament_loading_speed_start); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 4b31f10d7..763a906f5 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1156,7 +1156,43 @@ void Sidebar::update_sliced_info_sizer() new_label = imperial_units ? _L("Used Filament (in³)") : _L("Used Filament (mm³)"); info_text = wxString::Format("%.2f", imperial_units ? ps.total_extruded_volume * koef : ps.total_extruded_volume); p->sliced_info->SetTextAndShow(siFilament_mm3, info_text, new_label); - p->sliced_info->SetTextAndShow(siFilament_g, ps.total_weight == 0.0 ? "N/A" : wxString::Format("%.2f", ps.total_weight)); + + if (ps.total_weight == 0.0) + p->sliced_info->SetTextAndShow(siFilament_g, "N/A"); + else { + new_label = _L("Used Filament (g)"); + info_text = wxString::Format("%.2f", ps.total_weight); + + const std::vector<std::string>& filament_presets = wxGetApp().preset_bundle->filament_presets; + const PresetCollection& filaments = wxGetApp().preset_bundle->filaments; + + if (ps.filament_stats.size() > 1) + new_label += ":"; + + for (auto filament : ps.filament_stats) { + const Preset* filament_preset = filaments.find_preset(filament_presets[filament.first], false); + if (filament_preset) { + double filament_weight; + if (ps.filament_stats.size() == 1) + filament_weight = ps.total_weight; + else { + double filament_density = filament_preset->config.opt_float("filament_density", 0); + filament_weight = filament.second * filament_density * 2.4052f * 0.001; // assumes 1.75mm filament diameter; + + new_label += "\n - " + format_wxstr(_L("Filament at extruder %1%"), filament.first + 1); + info_text += wxString::Format("\n%.2f", filament_weight); + } + + double spool_weight = filament_preset->config.opt_float("filament_spool_weight", 0); + if (spool_weight != 0.0) { + new_label += "\n " + _L("(weight with spool)"); + info_text += wxString::Format(" (%.2f)\n", filament_weight + spool_weight); + } + } + } + + p->sliced_info->SetTextAndShow(siFilament_g, info_text, new_label); + } new_label = _L("Cost"); if (is_wipe_tower) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 3b2f26668..940b4eeb2 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1785,6 +1785,19 @@ void TabFilament::build() optgroup->append_single_option_line("extrusion_multiplier"); optgroup->append_single_option_line("filament_density"); optgroup->append_single_option_line("filament_cost"); + optgroup->append_single_option_line("filament_spool_weight"); + + optgroup->m_on_change = [this, optgroup](t_config_option_key opt_key, boost::any value) + { + update_dirty(); + if (opt_key == "filament_spool_weight") { + // Change of this option influences for an update of "Sliced Info" + wxGetApp().sidebar().update_sliced_info_sizer(); + wxGetApp().sidebar().Layout(); + } + else + on_value_change(opt_key, value); + }; // optgroup = page->new_optgroup(_(L("Temperature")) + wxString(" °C", wxConvUTF8)); optgroup = page->new_optgroup(L("Temperature")); From f394d26f83171cb399db986b4d6a9de965338adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= <hejl.lukas@gmail.com> Date: Fri, 20 Nov 2020 15:19:49 +0100 Subject: [PATCH 065/138] Added missing includes to fix build on gcc 9 --- src/libslic3r/Fill/FillBase.cpp | 1 + src/libslic3r/Point.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index 3cb93e073..7ed928741 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -1,4 +1,5 @@ #include <stdio.h> +#include <numeric> #include "../ClipperUtils.hpp" #include "../EdgeGrid.hpp" diff --git a/src/libslic3r/Point.cpp b/src/libslic3r/Point.cpp index 555a1cb2d..b16abe7be 100644 --- a/src/libslic3r/Point.cpp +++ b/src/libslic3r/Point.cpp @@ -2,6 +2,7 @@ #include "Line.hpp" #include "MultiPoint.hpp" #include "Int128.hpp" +#include "BoundingBox.hpp" #include <algorithm> namespace Slic3r { From bca000a739b4cd328fdf9c92ac66ad2e9ece54eb Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Fri, 20 Nov 2020 17:21:37 +0100 Subject: [PATCH 066/138] Font of the DoubleSliders is changes to default (#5121) --- src/slic3r/GUI/DoubleSlider.cpp | 12 +++++------- src/slic3r/GUI/GUI_Preview.cpp | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index 02fcadba8..4df91fb78 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -137,14 +137,13 @@ Control::Control( wxWindow *parent, m_line_pens = { &DARK_GREY_PEN, &GREY_PEN, &LIGHT_GREY_PEN }; m_segm_pens = { &DARK_ORANGE_PEN, &ORANGE_PEN, &LIGHT_ORANGE_PEN }; - const wxFont& font = GetFont(); - m_font = is_osx ? font.Smaller().Smaller() : font.Smaller(); + m_font = GetFont(); + this->SetMinSize(get_min_size()); } void Control::msw_rescale() { - const wxFont& font = GUI::wxGetApp().normal_font(); - m_font = is_osx ? font.Smaller().Smaller() : font.Smaller(); + m_font = GUI::wxGetApp().normal_font(); m_bmp_thumb_higher.msw_rescale(); m_bmp_thumb_lower .msw_rescale(); @@ -182,8 +181,7 @@ int Control::GetActiveValue() const wxSize Control::get_min_size() const { - const int min_side = GUI::wxGetApp().em_unit() * ( is_horizontal() ? (is_osx ? 8 : 6) : 10 ); - + const int min_side = GUI::wxGetApp().em_unit() * ( is_horizontal() ? 5 : 11 ); return wxSize(min_side, min_side); } @@ -713,7 +711,7 @@ void Control::draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, LabelType l text_pos = wxPoint(xx, pos.y - m_thumb_size.x / 2 - text_height - 1); } else - text_pos = wxPoint(pos.x - text_width - 1 - m_thumb_size.x, pos.y - 0.5 * text_height + 1); + text_pos = wxPoint(std::max(2, pos.x - text_width - 1 - m_thumb_size.x), pos.y - 0.5 * text_height + 1); } if (label_type == ltEstimatedTime) diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index d33c8f22a..a3b25fba7 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -280,7 +280,7 @@ bool Preview::init(wxWindow* parent, Model* model) wxBoxSizer* right_sizer = new wxBoxSizer(wxVERTICAL); right_sizer->Add(m_layers_slider_sizer, 1, wxEXPAND, 0); - m_moves_slider = new DoubleSlider::Control(m_bottom_toolbar_panel, wxID_ANY, 0, 0, 0, 100, wxDefaultPosition, wxSize(-1, 3 * GetTextExtent("m").y), wxSL_HORIZONTAL); + m_moves_slider = new DoubleSlider::Control(m_bottom_toolbar_panel, wxID_ANY, 0, 0, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL); m_moves_slider->SetDrawMode(DoubleSlider::dmSequentialGCodeView); wxBoxSizer* bottom_toolbar_sizer = new wxBoxSizer(wxHORIZONTAL); From 9f30ea535a84b8dc94925a0c8c980fbf84a0cc49 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Fri, 20 Nov 2020 17:23:35 +0100 Subject: [PATCH 067/138] Windows specific: Fixed layout of fields inside the OG_CustomCtrl --- src/slic3r/GUI/OG_CustomCtrl.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index 30c7e76e4..2ed1ea252 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -174,7 +174,15 @@ wxPoint OG_CustomCtrl::get_pos(const Line& line, Field* field_in/* = nullptr*/) label += ":"; wxCoord label_w, label_h; +#ifdef __WXMSW__ + // when we use 2 monitors with different DPIs, GetTextExtent() return value for the primary display + // so, use dc.GetMultiLineTextExtent on Windows + wxPaintDC dc(this); + dc.SetFont(m_font); + dc.GetMultiLineTextExtent(label, &label_w, &label_h); +#else GetTextExtent(label, &label_w, &label_h, 0, 0, &m_font); +#endif //__WXMSW__ h_pos += label_w + 1 + m_h_gap; } h_pos += (opt.opt.gui_type == "legend" ? 1 : 3) * blinking_button_width; From 93aaf660cf9914e3a54c9f44ad3ea7c3192077b5 Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Fri, 20 Nov 2020 17:50:10 +0100 Subject: [PATCH 068/138] Fixes for arrange menu Fixed issues: - Imgui window is aligned with the arrange toolbar button - Reset and Arrange buttons added onto the window - Window closes after clicking the canvas or hitting ESC - Tooltip extended with instructions for using the arrange menu Remaining issues: - Imgui arrange button closes the menu after clicked - Menu is not in "exclusive or" relationship with other imgui windows. --- src/slic3r/GUI/GLCanvas3D.cpp | 49 +++++++++++++++++++++++++++++------ src/slic3r/GUI/GLCanvas3D.hpp | 3 ++- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 7bab21982..34278377b 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2392,7 +2392,7 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) return; } - if (keyCode == WXK_ESCAPE && (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item())) + if (keyCode == WXK_ESCAPE && (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item() || _deactivate_arrange_menu())) return; if (m_gizmos.on_char(evt)) @@ -3083,7 +3083,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_dirty = true; } else if (evt.LeftDown() || evt.RightDown() || evt.MiddleDown()) { - if (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item()) + if (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item() || _deactivate_arrange_menu()) return; // If user pressed left or right button we first check whether this happened @@ -3868,11 +3868,12 @@ bool GLCanvas3D::_render_search_list(float pos_x) const return action_taken; } -void GLCanvas3D:: _render_arrange_popup() +bool GLCanvas3D::_render_arrange_menu(float pos_x) { ImGuiWrapper *imgui = wxGetApp().imgui(); - float x = 0.5f * (float)get_canvas_size().get_width(); + auto canvas_w = float(get_canvas_size().get_width()); + const float x = pos_x * float(wxGetApp().plater()->get_camera().get_zoom()) + 0.5f * canvas_w; imgui->set_next_window_pos(x, m_main_toolbar.get_height(), ImGuiCond_Always, 0.5f, 0.0f); imgui->begin(_(L("Arrange options")), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse); @@ -3880,17 +3881,39 @@ void GLCanvas3D:: _render_arrange_popup() auto &appcfg = wxGetApp().app_config; + bool settings_changed = false; + if (imgui->slider_float(_(L("Gap size")), &settings.distance, 0.f, 100.f)) { m_arrange_settings.distance = settings.distance; - appcfg->set("arrange", "min_object_distance", std::to_string(settings.distance)); + settings_changed = true; } if (imgui->checkbox(_(L("Enable rotations")), settings.enable_rotation)) { m_arrange_settings.enable_rotation = settings.enable_rotation; - appcfg->set("arrange", "enable_rotation", "1"); + settings_changed = true; + } + + ImGui::Separator(); + + if (imgui->button(_(L("Reset")))) { + m_arrange_settings = ArrangeSettings{}; + settings_changed = true; + } + + if (settings_changed) { + appcfg->set("arrange", "min_object_distance", std::to_string(m_arrange_settings.distance)); + appcfg->set("arrange", "enable_rotation", m_arrange_settings.enable_rotation? "1" : "0"); + } + + ImGui::SameLine(); + + if (imgui->button(_(L("Arrange")))) { + wxGetApp().plater()->arrange(); } imgui->end(); + + return settings_changed; } #define ENABLE_THUMBNAIL_GENERATOR_DEBUG_OUTPUT 0 @@ -4305,7 +4328,7 @@ bool GLCanvas3D::_init_main_toolbar() item.name = "arrange"; item.icon_filename = "arrange.svg"; - item.tooltip = _utf8(L("Arrange")) + " [A]\n" + _utf8(L("Arrange selection")) + " [Shift+A]"; + item.tooltip = _utf8(L("Arrange")) + " [A]\n" + _utf8(L("Arrange selection")) + " [Shift+A]\n" + _utf8(L("Click right mouse button to show arrangement options")); item.sprite_id = 3; item.left.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_ARRANGE)); }; item.enabling_callback = []()->bool { return wxGetApp().plater()->can_arrange(); }; @@ -4313,7 +4336,7 @@ bool GLCanvas3D::_init_main_toolbar() item.right.render_callback = [this](float left, float right, float, float) { if (m_canvas != nullptr) { - _render_arrange_popup(); + _render_arrange_menu(0.5f * (left + right)); } }; if (!m_main_toolbar.add_item(item)) @@ -6246,6 +6269,16 @@ bool GLCanvas3D::is_search_pressed() const return m_main_toolbar.is_item_pressed("search"); } +bool GLCanvas3D::_deactivate_arrange_menu() +{ + if (m_main_toolbar.is_item_pressed("arrange")) { + m_main_toolbar.force_right_action(m_main_toolbar.get_item_id("arrange"), *this); + return true; + } + + return false; +} + bool GLCanvas3D::_deactivate_search_toolbar_item() { if (is_search_pressed()) diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 7a73f8fe4..7f44901d1 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -728,7 +728,7 @@ private: void _render_selection_sidebar_hints() const; bool _render_undo_redo_stack(const bool is_undo, float pos_x) const; bool _render_search_list(float pos_x) const; - void _render_arrange_popup(); + bool _render_arrange_menu(float pos_x); void _render_thumbnail_internal(ThumbnailData& thumbnail_data, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) const; // render thumbnail using an off-screen framebuffer void _render_thumbnail_framebuffer(ThumbnailData& thumbnail_data, unsigned int w, unsigned int h, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) const; @@ -780,6 +780,7 @@ private: bool _deactivate_search_toolbar_item(); bool _activate_search_toolbar_item(); bool _deactivate_collapse_toolbar_items(); + bool _deactivate_arrange_menu(); float get_overlay_window_width() { return LayersEditing::get_overlay_window_width(); } From b7abe7dfa92b738b50ae223b8a9e8944515852bb Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Fri, 20 Nov 2020 18:46:14 +0100 Subject: [PATCH 069/138] Added "Suppress to open hyperlink in browser" parameter in Preferences --- src/slic3r/GUI/OG_CustomCtrl.cpp | 23 +++++++++++++++++++---- src/slic3r/GUI/Preferences.cpp | 8 ++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index 2ed1ea252..9f7ddf3bb 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -239,9 +239,11 @@ void OG_CustomCtrl::OnMotion(wxMouseEvent& event) wxString language = wxGetApp().app_config->get("translation_language"); + bool suppress_hyperlinks = get_app_config()->get("suppress_hyperlinks") == "1"; + for (CtrlLine& line : ctrl_lines) { line.is_focused = is_point_in_rect(pos, line.rect_label); - if (line.is_focused) { + if (line.is_focused && !suppress_hyperlinks) { tooltip = get_url(line.og_line.label_path); break; } @@ -472,6 +474,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord v_pos) { Field* field = ctrl->opt_group->get_field(og_line.get_options().front().opt_id); + bool suppress_hyperlinks = get_app_config()->get("suppress_hyperlinks") == "1"; if (draw_just_act_buttons) { if (field) draw_act_bmps(dc, wxPoint(0, v_pos), field->undo_to_sys_bitmap()->bmp(), field->undo_bitmap()->bmp(), field->blink()); @@ -489,7 +492,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord v_pos) bool is_url_string = false; if (ctrl->opt_group->label_width != 0 && !label.IsEmpty()) { const wxColour* text_clr = (option_set.size() == 1 && field ? field->label_color() : og_line.full_Label_color); - is_url_string = !og_line.label_path.IsEmpty(); + is_url_string = !suppress_hyperlinks && !og_line.label_path.IsEmpty(); h_pos = draw_text(dc, wxPoint(h_pos, v_pos), label + ":", text_clr, ctrl->opt_group->label_width * ctrl->m_em_unit, is_url_string); } @@ -529,7 +532,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord v_pos) if (is_url_string) is_url_string = false; else if(opt == option_set.front()) - is_url_string = !og_line.label_path.IsEmpty(); + is_url_string = !suppress_hyperlinks && !og_line.label_path.IsEmpty(); h_pos = draw_text(dc, wxPoint(h_pos, v_pos), label, field ? field->label_color() : nullptr, ctrl->opt_group->sublabel_width * ctrl->m_em_unit, is_url_string); } @@ -668,7 +671,19 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBi bool OG_CustomCtrl::CtrlLine::launch_browser() const { - return is_focused && !og_line.label_path.IsEmpty() && wxLaunchDefaultBrowser(get_url(og_line.label_path)); + if (get_app_config()->get("suppress_hyperlinks").empty()) { + wxString preferences_item = _L("Suppress to open hyperlink in browser"); + wxString msg = + _L("PrusaSlicer will remember your action.") + "\n" + + _L("You will not be asked about it again on label hovering.") + "\n\n" + + format_wxstr(_L("Visit \"Preferences\" and check \"%1%\"\nto changes your choise."), preferences_item) + "\n\n" + + _L("Should we suppress to use hyperlinks in PrusaSlicer?"); + + wxMessageDialog dialog(nullptr, msg, _L("PrusaSlicer: Don't ask me again"), wxYES | wxNO | wxICON_INFORMATION); + get_app_config()->set("suppress_hyperlinks", dialog.ShowModal() == wxID_YES ? "1" : "0"); + } + + return get_app_config()->get("suppress_hyperlinks") == "0" && is_focused && !og_line.label_path.IsEmpty() && wxLaunchDefaultBrowser(get_url(og_line.label_path)); } diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index aed336b5c..4abe4b84c 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -235,6 +235,14 @@ void PreferencesDialog::build() option = Option(def, "seq_top_layer_only"); m_optgroup_gui->append_single_option_line(option); + def.label = L("Suppress to open hyperlink in browser"); + def.type = coBool; + def.tooltip = L("If enabled, the descriptions of configuration parameters in settings tabs woldn't work as hyperlinks. " + "If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks."); + def.set_default_value(new ConfigOptionBool{ app_config->get("suppress_hyperlinks") == "1" }); + option = Option(def, "suppress_hyperlinks"); + m_optgroup_gui->append_single_option_line(option); + m_optgroup_gui->activate(); if (is_editor) { From 54a5c1da1e7b9bcdf7237fc560cffd514bd56a30 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Fri, 20 Nov 2020 18:46:39 +0100 Subject: [PATCH 070/138] Fixed crash in reworked infill anchoring due to numeric issues. Added some more asserts to EdgeGrid. --- src/libslic3r/EdgeGrid.hpp | 24 ++++++++++++++++++++---- src/libslic3r/Fill/FillBase.cpp | 15 +++++++-------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/libslic3r/EdgeGrid.hpp b/src/libslic3r/EdgeGrid.hpp index 71d636628..fd13ddc7f 100644 --- a/src/libslic3r/EdgeGrid.hpp +++ b/src/libslic3r/EdgeGrid.hpp @@ -84,10 +84,14 @@ public: template<typename VISITOR> void visit_cells_intersecting_line(Slic3r::Point p1, Slic3r::Point p2, VISITOR &visitor) const { // End points of the line segment. - p1(0) -= m_bbox.min(0); - p1(1) -= m_bbox.min(1); - p2(0) -= m_bbox.min(0); - p2(1) -= m_bbox.min(1); + assert(m_bbox.contains(p1)); + assert(m_bbox.contains(p2)); + p1 -= m_bbox.min; + p2 -= m_bbox.min; + assert(p1.x() >= 0 && p1.x() < m_cols * m_resolution); + assert(p1.y() >= 0 && p1.y() < m_rows * m_resolution); + assert(p2.x() >= 0 && p2.x() < m_cols * m_resolution); + assert(p2.y() >= 0 && p2.y() < m_rows * m_resolution); // Get the cells of the end points. coord_t ix = p1(0) / m_resolution; coord_t iy = p1(1) / m_resolution; @@ -115,18 +119,22 @@ public: ey -= ex; ex = int64_t(dy) * m_resolution; ix += 1; + assert(ix <= ixb); } else if (ex == ey) { ex = int64_t(dy) * m_resolution; ey = int64_t(dx) * m_resolution; ix += 1; iy += 1; + assert(ix <= ixb); + assert(iy <= iyb); } else { assert(ex > ey); ex -= ey; ey = int64_t(dx) * m_resolution; iy += 1; + assert(iy <= iyb); } if (! visitor(iy, ix)) return; @@ -141,11 +149,13 @@ public: ey -= ex; ex = int64_t(dy) * m_resolution; ix += 1; + assert(ix <= ixb); } else { ex -= ey; ey = int64_t(dx) * m_resolution; iy -= 1; + assert(iy >= iyb); } if (! visitor(iy, ix)) return; @@ -163,12 +173,14 @@ public: ey -= ex; ex = int64_t(dy) * m_resolution; ix -= 1; + assert(ix >= ixb); } else { assert(ex >= ey); ex -= ey; ey = int64_t(dx) * m_resolution; iy += 1; + assert(iy <= iyb); } if (! visitor(iy, ix)) return; @@ -183,6 +195,7 @@ public: ey -= ex; ex = int64_t(dy) * m_resolution; ix -= 1; + assert(ix >= ixb); } else if (ex == ey) { // The lower edge of a grid cell belongs to the cell. @@ -191,10 +204,12 @@ public: if (dx > 0) { ex = int64_t(dy) * m_resolution; ix -= 1; + assert(ix >= ixb); } if (dy > 0) { ey = int64_t(dx) * m_resolution; iy -= 1; + assert(iy >= iyb); } } else { @@ -202,6 +217,7 @@ public: ex -= ey; ey = int64_t(dx) * m_resolution; iy -= 1; + assert(iy >= iyb); } if (! visitor(iy, ix)) return; diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index 7ed928741..4e714b570 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -841,7 +841,7 @@ void mark_boundary_segments_touching_infill( EdgeGrid::Grid grid; // Make sure that the the grid is big enough for queries against the thick segment. - grid.set_bbox(boundary_bbox.inflated(distance_colliding + SCALED_EPSILON)); + grid.set_bbox(boundary_bbox.inflated(distance_colliding * 1.43)); // Inflate the bounding box by a thick line width. grid.create(boundary, std::max(clip_distance, distance_colliding) + scale_(10.)); @@ -961,9 +961,6 @@ void mark_boundary_segments_touching_infill( #endif // INFILL_DEBUG_OUTPUT } visitor(grid, boundary, boundary_parameters, boundary_intersections, distance_colliding); - BoundingBoxf bboxf(boundary_bbox.min.cast<double>(), boundary_bbox.max.cast<double>()); - bboxf.offset(- SCALED_EPSILON); - for (const Polyline &polyline : infill) { #ifdef INFILL_DEBUG_OUTPUT ++ iStep; @@ -1019,12 +1016,14 @@ void mark_boundary_segments_touching_infill( Vec2d vperp = perp(v); Vec2d a = pt1 - v - vperp; Vec2d b = pt2 + v - vperp; - if (Geometry::liang_barsky_line_clipping(a, b, bboxf)) - grid.visit_cells_intersecting_line(a.cast<coord_t>(), b.cast<coord_t>(), visitor); + assert(grid.bbox().contains(a.cast<coord_t>())); + assert(grid.bbox().contains(b.cast<coord_t>())); + grid.visit_cells_intersecting_line(a.cast<coord_t>(), b.cast<coord_t>(), visitor); a = pt1 - v + vperp; b = pt2 + v + vperp; - if (Geometry::liang_barsky_line_clipping(a, b, bboxf)) - grid.visit_cells_intersecting_line(a.cast<coord_t>(), b.cast<coord_t>(), visitor); + assert(grid.bbox().contains(a.cast<coord_t>())); + assert(grid.bbox().contains(b.cast<coord_t>())); + grid.visit_cells_intersecting_line(a.cast<coord_t>(), b.cast<coord_t>(), visitor); #endif #ifdef INFILL_DEBUG_OUTPUT // export_infill_to_svg(boundary, boundary_parameters, boundary_intersections, infill, distance_colliding * 2, debug_out_path("%s-%03d-%03d-%03d.svg", "FillBase-mark_boundary_segments_touching_infill-step", iRun, iStep, int(point_idx)), { polyline }); From 56c37d5c38d91a9a3b4dc25c20cf0ac6e99e635b Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Fri, 20 Nov 2020 18:58:54 +0100 Subject: [PATCH 071/138] Make monotonic infill default for bottom layers as well #4963 --- src/libslic3r/PrintConfig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 3831b08cb..f61d2ed9c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -483,7 +483,7 @@ void PrintConfigDef::init_fff_params() def->enum_values = def_top_fill_pattern->enum_values; def->enum_labels = def_top_fill_pattern->enum_labels; def->aliases = def_top_fill_pattern->aliases; - def->set_default_value(new ConfigOptionEnum<InfillPattern>(ipRectilinear)); + def->set_default_value(new ConfigOptionEnum<InfillPattern>(ipMonotonic)); def = this->add("external_perimeter_extrusion_width", coFloatOrPercent); def->label = L("External perimeters"); From a2e763d4caf0ef31571b7040add34b9e570b78d6 Mon Sep 17 00:00:00 2001 From: rtyr <36745189+rtyr@users.noreply.github.com> Date: Sat, 21 Nov 2020 10:22:57 +0100 Subject: [PATCH 072/138] Bumped up creality bundle version to 0.0.7 --- resources/profiles/Creality.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index e911edb32..c9e433524 100644 --- a/resources/profiles/Creality.ini +++ b/resources/profiles/Creality.ini @@ -5,7 +5,7 @@ name = Creality # 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. -config_version = 0.0.6 +config_version = 0.0.7 # Where to get the updates from? config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/Creality/ # changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1% From 9023f092adec704b40061737ae08fdf434ee9116 Mon Sep 17 00:00:00 2001 From: rtyr <36745189+rtyr@users.noreply.github.com> Date: Sat, 21 Nov 2020 10:24:54 +0100 Subject: [PATCH 073/138] Creality 0.0.7 - updated start g-code --- resources/profiles/Creality.idx | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/profiles/Creality.idx b/resources/profiles/Creality.idx index e3091eccc..e2b41cdda 100644 --- a/resources/profiles/Creality.idx +++ b/resources/profiles/Creality.idx @@ -1,4 +1,5 @@ min_slic3r_version = 2.3.0-alpha2 +0.0.7 Updated start g-code for Creality printers 0.0.6 Added filament profiles, adjusted temperatures, updated start g-code for some models. 0.0.5 Added 0.08mm SUPERDETAIL and 0.28mm SUPERDRAFT print profiles. Updated OPTIMAL print profile. 0.0.4 Added initial CR-10 profile, end g-code improvements. From 0e6acbc0e29fe41c310d655b257d0a72a8e62fae Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Sat, 21 Nov 2020 10:36:10 +0100 Subject: [PATCH 074/138] Preview - Visualization of wipe mones --- src/libslic3r/GCode.cpp | 8 +++ src/libslic3r/GCode/GCodeProcessor.cpp | 42 +++++++++++++++ src/libslic3r/GCode/GCodeProcessor.hpp | 15 ++++++ src/libslic3r/Technologies.hpp | 7 +++ src/slic3r/GUI/GCodeViewer.cpp | 71 ++++++++++++++++++++++++++ src/slic3r/GUI/GCodeViewer.hpp | 9 ++++ src/slic3r/GUI/GUI_Preview.cpp | 6 +++ src/slic3r/GUI/GUI_Preview.hpp | 3 ++ 8 files changed, 161 insertions(+) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index e592466c7..86a89fd6f 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -256,6 +256,10 @@ namespace Slic3r { // subdivide the retraction in segments if (!wipe_path.empty()) { +#if ENABLE_SHOW_WIPE_MOVES + // add tag for processor + gcode += ";" + GCodeProcessor::Wipe_Start_Tag + "\n"; +#endif // ENABLE_SHOW_WIPE_MOVES for (const Line& line : wipe_path.lines()) { double segment_length = line.length(); /* Reduce retraction length a bit to avoid effective retraction speed to be greater than the configured one @@ -270,6 +274,10 @@ namespace Slic3r { "wipe and retract" ); } +#if ENABLE_SHOW_WIPE_MOVES + // add tag for processor + gcode += ";" + GCodeProcessor::Wipe_End_Tag + "\n"; +#endif // ENABLE_SHOW_WIPE_MOVES gcodegen.set_last_pos(wipe_path.points.back()); } diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 4785c0898..7e12439d7 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -25,6 +25,10 @@ static const float DEFAULT_ACCELERATION = 1500.0f; // Prusa Firmware 1_75mm_MK2 namespace Slic3r { const std::string GCodeProcessor::Extrusion_Role_Tag = "TYPE:"; +#if ENABLE_SHOW_WIPE_MOVES +const std::string GCodeProcessor::Wipe_Start_Tag = "WIPE_START"; +const std::string GCodeProcessor::Wipe_End_Tag = "WIPE_END"; +#endif // ENABLE_SHOW_WIPE_MOVES const std::string GCodeProcessor::Height_Tag = "HEIGHT:"; const std::string GCodeProcessor::Layer_Change_Tag = "LAYER_CHANGE"; const std::string GCodeProcessor::Color_Change_Tag = "COLOR_CHANGE"; @@ -35,6 +39,11 @@ const std::string GCodeProcessor::First_Line_M73_Placeholder_Tag = "; _ const std::string GCodeProcessor::Last_Line_M73_Placeholder_Tag = "; _GP_LAST_LINE_M73_PLACEHOLDER"; const std::string GCodeProcessor::Estimated_Printing_Time_Placeholder_Tag = "; _GP_ESTIMATED_PRINTING_TIME_PLACEHOLDER"; +#if ENABLE_SHOW_WIPE_MOVES +const float GCodeProcessor::Wipe_Width = 0.05f; +const float GCodeProcessor::Wipe_Height = 0.05f; +#endif // ENABLE_SHOW_WIPE_MOVES + #if ENABLE_GCODE_VIEWER_DATA_CHECKING const std::string GCodeProcessor::Width_Tag = "WIDTH:"; const std::string GCodeProcessor::Mm3_Per_Mm_Tag = "MM3_PER_MM:"; @@ -725,6 +734,9 @@ void GCodeProcessor::reset() m_end_position = { 0.0f, 0.0f, 0.0f, 0.0f }; m_origin = { 0.0f, 0.0f, 0.0f, 0.0f }; m_cached_position.reset(); +#if ENABLE_SHOW_WIPE_MOVES + m_wiping = false; +#endif // ENABLE_SHOW_WIPE_MOVES m_feedrate = 0.0f; m_width = 0.0f; @@ -806,6 +818,16 @@ void GCodeProcessor::process_file(const std::string& filename, bool apply_postpr process_gcode_line(line); }); +#if ENABLE_SHOW_WIPE_MOVES + // update width/height of wipe moves + for (MoveVertex& move : m_result.moves) { + if (move.type == EMoveType::Wipe) { + move.width = Wipe_Width; + move.height = Wipe_Height; + } + } +#endif // ENABLE_SHOW_WIPE_MOVES + // process the time blocks for (size_t i = 0; i < static_cast<size_t>(PrintEstimatedTimeStatistics::ETimeMode::Count); ++i) { TimeMachine& machine = m_time_processor.machines[i]; @@ -1031,6 +1053,20 @@ void GCodeProcessor::process_tags(const std::string_view comment) return; } +#if ENABLE_SHOW_WIPE_MOVES + // wipe start tag + if (starts_with(comment, Wipe_Start_Tag)) { + m_wiping = true; + return; + } + + // wipe end tag + if (starts_with(comment, Wipe_End_Tag)) { + m_wiping = false; + return; + } +#endif // ENABLE_SHOW_WIPE_MOVES + if ((!m_producers_enabled || m_producer == EProducer::PrusaSlicer) && starts_with(comment, Height_Tag)) { // height tag @@ -1427,7 +1463,13 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) auto move_type = [this](const AxisCoords& delta_pos) { EMoveType type = EMoveType::Noop; +#if ENABLE_SHOW_WIPE_MOVES + if (m_wiping) + type = EMoveType::Wipe; + else if (delta_pos[E] < 0.0f) +#else if (delta_pos[E] < 0.0f) +#endif // ENABLE_SHOW_WIPE_MOVES type = (delta_pos[X] != 0.0f || delta_pos[Y] != 0.0f || delta_pos[Z] != 0.0f) ? EMoveType::Travel : EMoveType::Retract; else if (delta_pos[E] > 0.0f) { if (delta_pos[X] == 0.0f && delta_pos[Y] == 0.0f) diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index ea13d9981..1911c83ad 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -24,6 +24,9 @@ namespace Slic3r { Pause_Print, Custom_GCode, Travel, +#if ENABLE_SHOW_WIPE_MOVES + Wipe, +#endif // ENABLE_SHOW_WIPE_MOVES Extrude, Count }; @@ -69,6 +72,10 @@ namespace Slic3r { { public: static const std::string Extrusion_Role_Tag; +#if ENABLE_SHOW_WIPE_MOVES + static const std::string Wipe_Start_Tag; + static const std::string Wipe_End_Tag; +#endif // ENABLE_SHOW_WIPE_MOVES static const std::string Height_Tag; static const std::string Layer_Change_Tag; static const std::string Color_Change_Tag; @@ -78,6 +85,11 @@ namespace Slic3r { static const std::string Last_Line_M73_Placeholder_Tag; static const std::string Estimated_Printing_Time_Placeholder_Tag; +#if ENABLE_SHOW_WIPE_MOVES + static const float Wipe_Width; + static const float Wipe_Height; +#endif // ENABLE_SHOW_WIPE_MOVES + #if ENABLE_GCODE_VIEWER_DATA_CHECKING static const std::string Width_Tag; static const std::string Mm3_Per_Mm_Tag; @@ -390,6 +402,9 @@ namespace Slic3r { AxisCoords m_end_position; // mm AxisCoords m_origin; // mm CachedPosition m_cached_position; +#if ENABLE_SHOW_WIPE_MOVES + bool m_wiping; +#endif // ENABLE_SHOW_WIPE_MOVES float m_feedrate; // mm/s float m_width; // mm diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 66258fe62..29a3721ff 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -74,4 +74,11 @@ #define ENABLE_SHOW_OPTION_POINT_LAYERS (1 && ENABLE_GCODE_VIEWER && ENABLE_2_3_0_ALPHA4) +//=================== +// 2.3.0.beta1 techs +//=================== +#define ENABLE_2_3_0_BETA1 1 + +#define ENABLE_SHOW_WIPE_MOVES (1 && ENABLE_GCODE_VIEWER && ENABLE_2_3_0_BETA1) + #endif // _prusaslicer_technologies_h_ diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 4be9f5fbd..063169d97 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -272,6 +272,10 @@ const std::vector<GCodeViewer::Color> GCodeViewer::Travel_Colors {{ { 0.505f, 0.064f, 0.028f } // Retract }}; +#if ENABLE_SHOW_WIPE_MOVES +const GCodeViewer::Color GCodeViewer::Wipe_Color = { 1.0f, 1.0f, 0.0f }; +#endif // ENABLE_SHOW_WIPE_MOVES + const std::vector<GCodeViewer::Color> GCodeViewer::Range_Colors {{ { 0.043f, 0.173f, 0.478f }, // bluish { 0.075f, 0.349f, 0.522f }, @@ -456,6 +460,9 @@ void GCodeViewer::render() const buffer.shader = wxGetApp().is_glsl_version_greater_or_equal_to(1, 20) ? "options_120" : "options_110"; break; } +#if ENABLE_SHOW_WIPE_MOVES + case EMoveType::Wipe: +#endif // ENABLE_SHOW_WIPE_MOVES case EMoveType::Extrude: { buffer.shader = "gouraud_light"; break; @@ -569,6 +576,9 @@ unsigned int GCodeViewer::get_options_visibility_flags() const unsigned int flags = 0; flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::Travel), is_toolpath_move_type_visible(EMoveType::Travel)); +#if ENABLE_SHOW_WIPE_MOVES + flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::Wipe), is_toolpath_move_type_visible(EMoveType::Wipe)); +#endif // ENABLE_SHOW_WIPE_MOVES flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::Retractions), is_toolpath_move_type_visible(EMoveType::Retract)); flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::Unretractions), is_toolpath_move_type_visible(EMoveType::Unretract)); flags = set_flag(flags, static_cast<unsigned int>(Preview::OptionType::ToolChanges), is_toolpath_move_type_visible(EMoveType::Tool_change)); @@ -588,6 +598,9 @@ void GCodeViewer::set_options_visibility_from_flags(unsigned int flags) }; set_toolpath_move_type_visible(EMoveType::Travel, is_flag_set(static_cast<unsigned int>(Preview::OptionType::Travel))); +#if ENABLE_SHOW_WIPE_MOVES + set_toolpath_move_type_visible(EMoveType::Wipe, is_flag_set(static_cast<unsigned int>(Preview::OptionType::Wipe))); +#endif // ENABLE_SHOW_WIPE_MOVES set_toolpath_move_type_visible(EMoveType::Retract, is_flag_set(static_cast<unsigned int>(Preview::OptionType::Retractions))); set_toolpath_move_type_visible(EMoveType::Unretract, is_flag_set(static_cast<unsigned int>(Preview::OptionType::Unretractions))); set_toolpath_move_type_visible(EMoveType::Tool_change, is_flag_set(static_cast<unsigned int>(Preview::OptionType::ToolChanges))); @@ -925,6 +938,9 @@ void GCodeViewer::init() buffer.vertices.format = VBuffer::EFormat::Position; break; } +#if ENABLE_SHOW_WIPE_MOVES + case EMoveType::Wipe: +#endif // ENABLE_SHOW_WIPE_MOVES case EMoveType::Extrude: { buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Triangle; @@ -1392,6 +1408,14 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) #endif // ENABLE_SHOW_OPTION_POINT_LAYERS } +#if ENABLE_SHOW_WIPE_MOVES + // move the wipe toolpaths half height up to render them on proper position + std::vector<float>& wipe_vertices = vertices[buffer_id(EMoveType::Wipe)]; + for (size_t i = 2; i < wipe_vertices.size(); i += 3) { + wipe_vertices[i] += 0.5f * GCodeProcessor::Wipe_Height; + } +#endif // ENABLE_SHOW_WIPE_MOVES + log_memory_usage("Loaded G-code generated vertex buffers, ", vertices, indices); // toolpaths data -> send vertices data to gpu @@ -1425,7 +1449,11 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) buffer.paths.clear(); } // variable used to keep track of the current size (in vertices) of the vertex buffer +#if ENABLE_SHOW_WIPE_MOVES + std::vector<size_t> curr_buffer_vertices_size(m_buffers.size(), 0); +#else size_t curr_buffer_vertices_size = 0; +#endif // ENABLE_SHOW_WIPE_MOVES for (size_t i = 0; i < m_moves_count; ++i) { // skip first vertex if (i == 0) @@ -1453,7 +1481,11 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) // create another index buffer, and move the current path indices into it if (buffer_indices.back().size() >= THRESHOLD - static_cast<size_t>(buffer.indices_per_segment())) { buffer_indices.push_back(IndexBuffer()); +#if ENABLE_SHOW_WIPE_MOVES + if (buffer.render_primitive_type != TBuffer::ERenderPrimitiveType::Point) { +#else if (curr.type == EMoveType::Extrude || curr.type == EMoveType::Travel) { +#endif // ENABLE_SHOW_WIPE_MOVES if (!(prev.type != curr.type || !buffer.paths.back().matches(curr))) { Path& last_path = buffer.paths.back(); size_t delta_id = last_path.last.i_id - last_path.first.i_id; @@ -1484,7 +1516,11 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) break; } case TBuffer::ERenderPrimitiveType::Triangle: { +#if ENABLE_SHOW_WIPE_MOVES + add_indices_as_solid(prev, curr, buffer, curr_buffer_vertices_size[id], static_cast<unsigned int>(buffer_indices.size()) - 1, buffer_indices.back(), i); +#else add_indices_as_solid(prev, curr, buffer, curr_buffer_vertices_size, static_cast<unsigned int>(buffer_indices.size()) - 1, buffer_indices.back(), i); +#endif // ENABLE_SHOW_WIPE_MOVES break; } } @@ -1529,6 +1565,13 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) for (size_t i = 0; i < travel_buffer_indices.size(); ++i) { m_statistics.travel_segments_count = travel_buffer_indices[i].size() / m_buffers[travel_buffer_id].indices_per_segment(); } +#if ENABLE_SHOW_WIPE_MOVES + unsigned int wipe_buffer_id = buffer_id(EMoveType::Wipe); + const MultiIndexBuffer& wipe_buffer_indices = indices[wipe_buffer_id]; + for (size_t i = 0; i < wipe_buffer_indices.size(); ++i) { + m_statistics.wipe_segments_count = wipe_buffer_indices[i].size() / m_buffers[wipe_buffer_id].indices_per_segment(); + } +#endif // ENABLE_SHOW_WIPE_MOVES unsigned int extrude_buffer_id = buffer_id(EMoveType::Extrude); const MultiIndexBuffer& extrude_buffer_indices = indices[extrude_buffer_id]; for (size_t i = 0; i < extrude_buffer_indices.size(); ++i) { @@ -1865,6 +1908,9 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool break; } +#if ENABLE_SHOW_WIPE_MOVES + case EMoveType::Wipe: { color = Wipe_Color; break; } +#endif // ENABLE_SHOW_WIPE_MOVES default: { color = { 0.0f, 0.0f, 0.0f }; break; } } @@ -2597,6 +2643,28 @@ void GCodeViewer::render_legend() const } } +#if ENABLE_SHOW_WIPE_MOVES + // wipe paths section + if (m_buffers[buffer_id(EMoveType::Wipe)].visible) { + switch (m_view_type) + { + case EViewType::Feedrate: + case EViewType::Tool: + case EViewType::ColorPrint: { break; } + default: { + // title + ImGui::Spacing(); + imgui.title(_u8L("Wipe")); + + // items + append_item(EItemType::Line, Wipe_Color, _u8L("Wipe")); + + break; + } + } + } +#endif // ENABLE_SHOW_WIPE_MOVES + auto any_option_available = [this]() { auto available = [this](EMoveType type) { const TBuffer& buffer = m_buffers[buffer_id(type)]; @@ -2825,6 +2893,9 @@ void GCodeViewer::render_statistics() const if (ImGui::CollapsingHeader("Other")) { add_counter(std::string("Travel segments count:"), m_statistics.travel_segments_count); +#if ENABLE_SHOW_WIPE_MOVES + add_counter(std::string("Wipe segments count:"), m_statistics.wipe_segments_count); +#endif // ENABLE_SHOW_WIPE_MOVES add_counter(std::string("Extrude segments count:"), m_statistics.extrude_segments_count); add_counter(std::string("Max vertices in vertex buffer:"), m_statistics.max_vertices_in_vertex_buffer); add_counter(std::string("Max indices in index buffer:"), m_statistics.max_indices_in_index_buffer); diff --git a/src/slic3r/GUI/GCodeViewer.hpp b/src/slic3r/GUI/GCodeViewer.hpp index 639a5b430..1a11b633e 100644 --- a/src/slic3r/GUI/GCodeViewer.hpp +++ b/src/slic3r/GUI/GCodeViewer.hpp @@ -24,6 +24,9 @@ class GCodeViewer static const std::vector<Color> Extrusion_Role_Colors; static const std::vector<Color> Options_Colors; static const std::vector<Color> Travel_Colors; +#if ENABLE_SHOW_WIPE_MOVES + static const Color Wipe_Color; +#endif // ENABLE_SHOW_WIPE_MOVES static const std::vector<Color> Range_Colors; enum class EOptionsColors : unsigned char @@ -327,6 +330,9 @@ class GCodeViewer long long render_paths_size{ 0 }; // other long long travel_segments_count{ 0 }; +#if ENABLE_SHOW_WIPE_MOVES + long long wipe_segments_count{ 0 }; +#endif // ENABLE_SHOW_WIPE_MOVES long long extrude_segments_count{ 0 }; long long max_vertices_in_vertex_buffer{ 0 }; long long max_indices_in_index_buffer{ 0 }; @@ -361,6 +367,9 @@ class GCodeViewer void reset_others() { travel_segments_count = 0; +#if ENABLE_SHOW_WIPE_MOVES + wipe_segments_count = 0; +#endif // ENABLE_SHOW_WIPE_MOVES extrude_segments_count = 0; max_vertices_in_vertex_buffer = 0; max_indices_in_index_buffer = 0; diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index d33c8f22a..9b3f708b4 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -262,6 +262,9 @@ bool Preview::init(wxWindow* parent, Model* model) m_combochecklist_options->Create(m_bottom_toolbar_panel, wxID_ANY, _L("Options"), wxDefaultPosition, wxDefaultSize, wxCB_READONLY); std::string options_items = GUI::into_u8( get_option_type_string(OptionType::Travel) + "|0|" + +#if ENABLE_SHOW_WIPE_MOVES + get_option_type_string(OptionType::Wipe) + "|0|" + +#endif // ENABLE_SHOW_WIPE_MOVES get_option_type_string(OptionType::Retractions) + "|0|" + get_option_type_string(OptionType::Unretractions) + "|0|" + get_option_type_string(OptionType::ToolChanges) + "|0|" + @@ -971,6 +974,9 @@ wxString Preview::get_option_type_string(OptionType type) const switch (type) { case OptionType::Travel: { return _L("Travel"); } +#if ENABLE_SHOW_WIPE_MOVES + case OptionType::Wipe: { return _L("Wipe"); } +#endif // ENABLE_SHOW_WIPE_MOVES case OptionType::Retractions: { return _L("Retractions"); } case OptionType::Unretractions: { return _L("Deretractions"); } case OptionType::ToolChanges: { return _L("Tool changes"); } diff --git a/src/slic3r/GUI/GUI_Preview.hpp b/src/slic3r/GUI/GUI_Preview.hpp index 76fef117e..daa92d0b2 100644 --- a/src/slic3r/GUI/GUI_Preview.hpp +++ b/src/slic3r/GUI/GUI_Preview.hpp @@ -113,6 +113,9 @@ public: enum class OptionType : unsigned int { Travel, +#if ENABLE_SHOW_WIPE_MOVES + Wipe, +#endif // ENABLE_SHOW_WIPE_MOVES Retractions, Unretractions, ToolChanges, From ddc9e26f195dd7c79665cad0b0600941e5085098 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Sat, 21 Nov 2020 11:02:07 +0100 Subject: [PATCH 075/138] Follow-up to 80e8b5e985b84a6a50215d383bad96657bae0b12 Removed the legacy PreviewData.cpp,hpp --- src/slic3r/GUI/DoubleSlider.cpp | 5 ----- xs/src/perlglue.cpp | 3 --- xs/xsp/GCode.xsp | 32 -------------------------------- 3 files changed, 40 deletions(-) diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index 4df91fb78..4759ec64d 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -1,11 +1,6 @@ #include "libslic3r/libslic3r.h" -#if ENABLE_GCODE_VIEWER #include "DoubleSlider.hpp" #include "libslic3r/GCode.hpp" -#else -#include "wxExtensions.hpp" -#include "libslic3r/GCode/PreviewData.hpp" -#endif // ENABLE_GCODE_VIEWER #include "GUI.hpp" #include "GUI_App.hpp" #include "Plater.hpp" diff --git a/xs/src/perlglue.cpp b/xs/src/perlglue.cpp index 47961c623..be539e108 100644 --- a/xs/src/perlglue.cpp +++ b/xs/src/perlglue.cpp @@ -8,15 +8,12 @@ REGISTER_CLASS(ExPolygonCollection, "ExPolygon::Collection"); REGISTER_CLASS(ExtrusionMultiPath, "ExtrusionMultiPath"); REGISTER_CLASS(ExtrusionPath, "ExtrusionPath"); REGISTER_CLASS(ExtrusionLoop, "ExtrusionLoop"); -// there is no ExtrusionLoop::Collection or ExtrusionEntity::Collection REGISTER_CLASS(ExtrusionEntityCollection, "ExtrusionPath::Collection"); REGISTER_CLASS(ExtrusionSimulator, "ExtrusionSimulator"); REGISTER_CLASS(Filler, "Filler"); REGISTER_CLASS(Flow, "Flow"); REGISTER_CLASS(CoolingBuffer, "GCode::CoolingBuffer"); REGISTER_CLASS(GCode, "GCode"); -//REGISTER_CLASS(GCodePreviewData, "GCode::PreviewData"); -// REGISTER_CLASS(GCodeSender, "GCode::Sender"); REGISTER_CLASS(Layer, "Layer"); REGISTER_CLASS(SupportLayer, "Layer::Support"); REGISTER_CLASS(LayerRegion, "Layer::Region"); diff --git a/xs/xsp/GCode.xsp b/xs/xsp/GCode.xsp index d1f53f6e8..4545984bb 100644 --- a/xs/xsp/GCode.xsp +++ b/xs/xsp/GCode.xsp @@ -25,14 +25,6 @@ croak("%s\n", e.what()); } %}; -// void do_export_w_preview(Print *print, const char *path, GCodePreviewData *preview_data) -// %code%{ -// try { -// THIS->do_export(print, path, preview_data); -// } catch (std::exception& e) { -// croak("%s\n", e.what()); -// } -// %}; Ref<Vec2d> origin() %code{% RETVAL = &(THIS->origin()); %}; @@ -58,27 +50,3 @@ Ref<StaticPrintConfig> config() %code{% RETVAL = const_cast<StaticPrintConfig*>(static_cast<const StaticPrintConfig*>(static_cast<const PrintObjectConfig*>(&THIS->config()))); %}; }; - -//%name{Slic3r::GCode::PreviewData} class GCodePreviewData { -// GCodePreviewData(); -// ~GCodePreviewData(); -// void reset(); -// bool empty() const; -// void set_type(int type) -// %code%{ -// if ((0 <= type) && (type < GCodePreviewData::Extrusion::Num_View_Types)) -// THIS->extrusion.view_type = (GCodePreviewData::Extrusion::EViewType)type; -// %}; -// int type() %code%{ RETVAL = (int)THIS->extrusion.view_type; %}; -// void set_extrusion_flags(int flags) -// %code%{ THIS->extrusion.role_flags = (unsigned int)flags; %}; -// void set_travel_visible(bool visible) -// %code%{ THIS->travel.is_visible = visible; %}; -// void set_retractions_visible(bool visible) -// %code%{ THIS->retraction.is_visible = visible; %}; -// void set_unretractions_visible(bool visible) -// %code%{ THIS->unretraction.is_visible = visible; %}; -// void set_shells_visible(bool visible) -// %code%{ THIS->shell.is_visible = visible; %}; -// void set_extrusion_paths_colors(std::vector<std::string> colors); -//}; From ce7b843de7bb9158e74fe3344e31e4ea66e9e028 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Sat, 21 Nov 2020 11:30:14 +0100 Subject: [PATCH 076/138] GCode Viewer - Fixed filament label in legend --- src/slic3r/GUI/GCodeViewer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 4be9f5fbd..5f932a718 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -2675,7 +2675,9 @@ void GCodeViewer::render_legend() const } if (!m_settings_ids.filament.empty()) { for (unsigned char i : m_extruder_ids) { - imgui.text(_u8L("Filament") + " " + std::to_string(i + 1) + ":"); + std::string txt = _u8L("Filament"); + txt += (m_extruder_ids.size() == 1) ? ":" : " " + std::to_string(i + 1); + imgui.text(txt); ImGui::SameLine(offset); imgui.text(m_settings_ids.filament[i]); } From 288dbfd0d8940e399cf45bbb59aac44bbb444041 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Sat, 21 Nov 2020 11:43:48 +0100 Subject: [PATCH 077/138] fixed typo in comment & formatting --- src/slic3r/GUI/InstanceCheck.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/InstanceCheck.cpp b/src/slic3r/GUI/InstanceCheck.cpp index 8067fc7f3..aaf3ba3c6 100644 --- a/src/slic3r/GUI/InstanceCheck.cpp +++ b/src/slic3r/GUI/InstanceCheck.cpp @@ -259,16 +259,15 @@ bool instance_check(int argc, char** argv, bool app_config_single_instance) std::hash<std::string>{}(boost::filesystem::system_complete(argv[0]).string()); #else std::hash<std::string>{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0]), ec).string()); - if(ec.value() > 0) { // canonical was not able to find execitable (can happen with appimage on some systems) - ec.clear(); - // Compose path with boost canonical of folder and filename - hashed_path = std::hash<std::string>{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0]).parent_path(), ec).string() + "/" + boost::filesystem::system_complete(argv[0]).filename().string()); - if(ec.value() > 0) { - // Still not valid, process without canonical - hashed_path = std::hash<std::string>{}(boost::filesystem::system_complete(argv[0]).string()); - - } + if (ec.value() > 0) { // canonical was not able to find the executable (can happen with appimage on some systems. Does it fail on Fuse file systems?) + ec.clear(); + // Compose path with boost canonical of folder and filename + hashed_path = std::hash<std::string>{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0]).parent_path(), ec).string() + "/" + boost::filesystem::system_complete(argv[0]).filename().string()); + if (ec.value() > 0) { + // Still not valid, process without canonical + hashed_path = std::hash<std::string>{}(boost::filesystem::system_complete(argv[0]).string()); } + } #endif // win32 std::string lock_name = std::to_string(hashed_path); From 25ca1fcf77e3356e187a8dd63893f67d7843a0f0 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Sat, 21 Nov 2020 13:16:03 +0100 Subject: [PATCH 078/138] Some minor refactoring / polishing. --- src/libslic3r/GCode/GCodeProcessor.cpp | 10 ++++------ src/libslic3r/PrintConfig.cpp | 5 ++++- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- src/slic3r/GUI/GUI_Preview.cpp | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 4785c0898..1b8985d06 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -390,13 +390,11 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename) }; // check for temporary lines - auto is_temporary_decoration = [](const std::string& gcode_line) { + auto is_temporary_decoration = [](const std::string_view gcode_line) { // remove trailing '\n' - std::string line = gcode_line.substr(0, gcode_line.length() - 1); - if (line == ";" + Layer_Change_Tag) - return true; - else - return false; + assert(! gcode_line.empty()); + assert(gcode_line.back() == '\n'); + return gcode_line.substr(0, gcode_line.length() - 1) == ";" + Layer_Change_Tag; }; // Iterators for the normal and silent cached time estimate entry recently processed, used by process_line_G1. diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index f61d2ed9c..0ad48e6dd 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -808,7 +808,10 @@ void PrintConfigDef::init_fff_params() def = this->add("filament_spool_weight", coFloats); def->label = L("Spool weight"); - def->tooltip = L("Enter weight of the spool without filament. This is only for statistical information."); + def->tooltip = L("Enter weight of the empty filament spool. " + "One may weigh a partially consumed filament spool before printing and one may compare the measured weight " + "with the calculated weight of the filament with the spool to find out whether the amount " + "of filament on the spool is sufficient to finish the print."); def->sidetext = L("g"); def->min = 0; def->set_default_value(new ConfigOptionFloats { 0. }); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 34278377b..b8e379965 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1091,7 +1091,7 @@ wxDEFINE_EVENT(EVT_GLCANVAS_RELOAD_FROM_DISK, SimpleEvent); const double GLCanvas3D::DefaultCameraZoomToBoxMarginFactor = 1.25; -GLCanvas3D::ArrangeSettings load_arrange_settings() +static GLCanvas3D::ArrangeSettings load_arrange_settings() { GLCanvas3D::ArrangeSettings settings; diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index a3b25fba7..000e7ab9c 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -689,7 +689,7 @@ void Preview::update_layers_slider(const std::vector<double>& layers_z, bool kee if (sla_print_technology) m_layers_slider->SetLayersTimes(plater->sla_print().print_statistics().layers_times); else - m_layers_slider->SetLayersTimes(m_gcode_result->time_statistics.modes[0].layers_times); + m_layers_slider->SetLayersTimes(m_gcode_result->time_statistics.modes.front().layers_times); m_layers_slider_sizer->Show((size_t)0); Layout(); From f0606c2a76da890dea359a9111825bbdb736a799 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Sat, 21 Nov 2020 14:10:10 +0100 Subject: [PATCH 079/138] Merge of https://github.com/prusa3d/PrusaSlicer/pull/2856 Add aligned rectilinear infill functionality by @m-schubert Implements [Feature Request] Aligned rectilinear infill #1938 --- src/libslic3r/Fill/FillBase.cpp | 1 + src/libslic3r/Fill/FillRectilinear.hpp | 11 +++++++++++ src/libslic3r/PrintConfig.cpp | 4 ++++ src/libslic3r/PrintConfig.hpp | 3 ++- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index 4e714b570..326c1bd42 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -29,6 +29,7 @@ Fill* Fill::new_from_type(const InfillPattern type) case ip3DHoneycomb: return new Fill3DHoneycomb(); case ipGyroid: return new FillGyroid(); case ipRectilinear: return new FillRectilinear(); + case ipAlignedRectilinear: return new FillAlignedRectilinear(); case ipMonotonic: return new FillMonotonic(); case ipLine: return new FillLine(); case ipGrid: return new FillGrid(); diff --git a/src/libslic3r/Fill/FillRectilinear.hpp b/src/libslic3r/Fill/FillRectilinear.hpp index 806b29be1..0686fa166 100644 --- a/src/libslic3r/Fill/FillRectilinear.hpp +++ b/src/libslic3r/Fill/FillRectilinear.hpp @@ -29,6 +29,17 @@ protected: bool fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out); }; +class FillAlignedRectilinear : public FillRectilinear +{ +public: + Fill* clone() const override { return new FillAlignedRectilinear(*this); }; + ~FillAlignedRectilinear() override = default; + +protected: + // Always generate infill at the same angle. + virtual float _layer_angle(size_t idx) const { return 0.f; } +}; + class FillMonotonic : public FillRectilinear { public: diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 0ad48e6dd..5f29c15a8 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -460,12 +460,14 @@ void PrintConfigDef::init_fff_params() def->enum_keys_map = &ConfigOptionEnum<InfillPattern>::get_enum_values(); def->enum_values.push_back("rectilinear"); def->enum_values.push_back("monotonic"); + def->enum_values.push_back("alignedrectilinear"); def->enum_values.push_back("concentric"); def->enum_values.push_back("hilbertcurve"); def->enum_values.push_back("archimedeanchords"); def->enum_values.push_back("octagramspiral"); def->enum_labels.push_back(L("Rectilinear")); def->enum_labels.push_back(L("Monotonic")); + def->enum_labels.push_back(L("Aligned Rectilinear")); def->enum_labels.push_back(L("Concentric")); def->enum_labels.push_back(L("Hilbert Curve")); def->enum_labels.push_back(L("Archimedean Chords")); @@ -881,6 +883,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Fill pattern for general low-density infill."); def->enum_keys_map = &ConfigOptionEnum<InfillPattern>::get_enum_values(); def->enum_values.push_back("rectilinear"); + def->enum_values.push_back("alignedrectilinear"); def->enum_values.push_back("grid"); def->enum_values.push_back("triangles"); def->enum_values.push_back("stars"); @@ -896,6 +899,7 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("adaptivecubic"); def->enum_values.push_back("supportcubic"); def->enum_labels.push_back(L("Rectilinear")); + def->enum_labels.push_back(L("Aligned Rectilinear")); def->enum_labels.push_back(L("Grid")); def->enum_labels.push_back(L("Triangles")); def->enum_labels.push_back(L("Stars")); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 4f887c7c0..5ca04a341 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -44,7 +44,7 @@ enum AuthorizationType { }; enum InfillPattern : int { - ipRectilinear, ipMonotonic, ipGrid, ipTriangles, ipStars, ipCubic, ipLine, ipConcentric, ipHoneycomb, ip3DHoneycomb, + ipRectilinear, ipMonotonic, ipAlignedRectilinear, ipGrid, ipTriangles, ipStars, ipCubic, ipLine, ipConcentric, ipHoneycomb, ip3DHoneycomb, ipGyroid, ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral, ipAdaptiveCubic, ipSupportCubic, ipCount, }; @@ -145,6 +145,7 @@ template<> inline const t_config_enum_values& ConfigOptionEnum<InfillPattern>::g if (keys_map.empty()) { keys_map["rectilinear"] = ipRectilinear; keys_map["monotonic"] = ipMonotonic; + keys_map["alignedrectilinear"] = ipAlignedRectilinear; keys_map["grid"] = ipGrid; keys_map["triangles"] = ipTriangles; keys_map["stars"] = ipStars; From ee20331ead77ece72cda2df93f8a2e79c2896274 Mon Sep 17 00:00:00 2001 From: rtyr <36745189+rtyr@users.noreply.github.com> Date: Sat, 21 Nov 2020 15:42:38 +0100 Subject: [PATCH 080/138] 1.2.0-alpha0 added filament spool weight --- resources/profiles/PrusaResearch.idx | 284 ++++++++++++++------------- resources/profiles/PrusaResearch.ini | 61 +++++- 2 files changed, 203 insertions(+), 142 deletions(-) diff --git a/resources/profiles/PrusaResearch.idx b/resources/profiles/PrusaResearch.idx index c01a9ddea..6f647c910 100644 --- a/resources/profiles/PrusaResearch.idx +++ b/resources/profiles/PrusaResearch.idx @@ -1,141 +1,143 @@ -min_slic3r_version = 2.2.0-alpha3 -1.1.10 Updated firmware version. -1.1.9 Updated K values in filament profiles (linear advance). Added new filament profiles and SLA materials. -1.1.8 Updated start/end g-code scripts for MK3 family printer profiles (reduced extruder motor current for some print profiles). Added new filament and SLA material profiles. -1.1.7 Updated end g-code for MMU2 Single printer profiles. Added/updated filament and SLA material profiles. -1.1.6 Updated firmware version for MK2.5/S and MK3/S. -1.1.5 Updated MMU1 specific retraction settings for Prusament PC Blend -1.1.4 Added Prusament PC Blend filament profile. -1.1.3 Added SLA material and filament profile -1.1.2 Added renamed_from fields for PETG filaments to indicate that they were renamed from PET. -1.1.1 Added Verbatim and Fiberlogy PETG filament profiles. Updated auto cooling settings for ABS. -1.1.1-beta Updated for PrusaSlicer 2.2.0-beta -1.1.1-alpha4 Extended list of default filaments to be installed, top/bottom_solid_min_thickness defined, infill_acceleration changed etc -1.1.1-alpha3 Print bed textures are now configurable from the Preset Bundle. Requires PrusaSlicer 2.2.0-alpha3 and newer. -# The following line (max_slic3r_version) forces the users of PrusaSlicer 2.2.0-alpha3 and newer to update the profiles to 1.1.1-alpha3 and newer, -# so they will see the print bed. -max_slic3r_version = 2.2.0-alpha2 -min_slic3r_version = 2.2.0-alpha0 -1.1.1-alpha2 Bumped up config version, so our in house customer will get updated profiles. -1.1.0 Filament aliases, Creality profiles and other goodies for PrusaSlicer 2.2.0-alpha0 -min_slic3r_version = 2.1.1-beta0 -1.0.10 Updated firmware version for MK2.5/S and MK3/S. -1.0.9 Updated firmware version for MK2.5/S and MK3/S. -1.0.8 Various changes in FFF profiles, new filaments/materials added. See changelog. -1.0.7 Updated layer height limits for MINI -1.0.6 Added Prusa MINI profiles -min_slic3r_version = 2.1.0-alpha0 -1.0.5 Added SLA materials -1.0.4 Updated firmware version and 0.25mm nozzle profiles -1.0.3 Added filament profiles -1.0.2 Added SLA materials -1.0.1 Updated MK3 firmware version check to 3.8.0, new soluble support profiles for 0.6mm nozzle diameter MMU2S printers. -1.0.0 Updated end G-code for the MMU2 profiles to lift the extruder at the end of print. Wipe tower bridging distance was made smaller for soluble supports. -1.0.0-beta1 Updated color for the ASA filaments to differ from the other filaments. Single extruder printers now have no extruder color assigned, obects and toolpaths will be colored with the color of the active filament. -1.0.0-beta0 Printer model checks in start G-codes, ASA filament profiles, limits on min / max SL1 exposition times -1.0.0-alpha2 Printer model and nozzle diameter check -1.0.0-alpha1 Added Prusament ASA profile -1.0.0-alpha0 Filament specific retract for PET and similar copolymers, and for FLEX -min_slic3r_version = 1.42.0-alpha6 -0.8.9 Updated firmware version for MK2.5/S and MK3/S. -0.8.8 Updated firmware version for MK2.5/S and MK3/S. -0.8.7 Updated firmware version -0.8.6 Updated firmware version for MK2.5/S and MK3/S -0.8.5 Updated SL1 printer and material settings -0.8.4 Added Prusament ASA profile -0.8.3 FW version and SL1 materials update -0.8.2 FFF and SL1 settings update -0.8.1 Output settings and SLA materials update -0.8.0 Updated for the PrusaSlicer 2.0.0 final release -0.8.0-rc2 Updated firmware versions for MK2.5/S and MK3/S -0.8.0-rc1 Updated SLA profiles -0.8.0-rc Updated for the PrusaSlicer 2.0.0-rc release -0.8.0-beta4 Updated SLA profiles -0.8.0-beta3 Updated SLA profiles -0.8.0-beta2 Updated SLA profiles -0.8.0-beta1 Updated SLA profiles -0.8.0-beta Updated SLA profiles -0.8.0-alpha9 Updated SLA and FFF profiles -0.8.0-alpha8 Updated SLA profiles -0.8.0-alpha7 Updated SLA profiles -0.8.0-alpha6 Updated SLA profiles -min_slic3r_version = 1.42.0-alpha -0.8.0-alpha Updated SLA profiles -0.4.0-alpha4 Updated SLA profiles -0.4.0-alpha3 Update of SLA profiles -0.4.0-alpha2 First SLA profiles -min_slic3r_version = 1.41.3-alpha -0.4.12 Updated firmware version for MK2.5/S and MK3/S. -0.4.11 Updated firmware version for MK2.5/S and MK3/S. -0.4.10 Updated firmware version -0.4.9 Updated firmware version for MK2.5/S and MK3/S -0.4.8 MK2.5/3/S FW update -0.4.7 MK2/S/MMU FW update -0.4.6 Updated firmware versions for MK2.5/S and MK3/S -0.4.5 Enabled remaining time support for MK2/S/MMU1 -0.4.4 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt -0.4.3 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt -0.4.2 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt -0.4.1 New MK2.5S and MK3S FW versions -0.4.0 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt -min_slic3r_version = 1.41.1 -0.3.11 Updated firmware version for MK2.5/S and MK3/S. -0.3.10 Updated firmware version -0.3.9 Updated firmware version for MK2.5/S and MK3/S -0.3.8 MK2.5/3/S FW update -0.3.7 MK2/S/MMU FW update -0.3.6 Updated firmware versions for MK2.5 and MK3 -0.3.5 New MK2.5 and MK3 FW versions -0.3.4 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt -0.3.3 Prusament PETG released -0.3.2 New MK2.5 and MK3 FW versions -0.3.1 New MK2.5 and MK3 FW versions -0.3.0 New MK2.5 and MK3 FW version -min_slic3r_version = 1.41.0-alpha -0.2.9 New MK2.5 and MK3 FW versions -0.2.8 New MK2.5 and MK3 FW version -min_slic3r_version = 1.41.1 -0.2.7 New MK2.5 and MK3 FW version -0.2.6 Added MMU2 MK2.5 settings -min_slic3r_version = 1.41.0-alpha -0.2.5 Prusament is out - added prusament settings -0.2.4 Added soluble support profiles for MMU2 -0.2.3 Added materials for MMU2 single mode, edited MK3 xy stealth feedrate limit -0.2.2 Edited MMU2 Single mode purge line -0.2.1 Added PET and BVOH settings for MMU2 -0.2.0-beta5 Fixed MMU1 ramming parameters -0.2.0-beta4 Added filament loading speed at start, increased minimal purge on wipe tower -0.2.0-beta3 Edited ramming parameters and filament cooling moves for MMU2 -0.2.0-beta2 Edited first layer speed and wipe tower position -0.2.0-beta Removed limit on the MK3MMU2 height, added legacy M204 S T format to the MK2 profiles -0.2.0-alpha8 Added filament_load/unload_time for the PLA/ABS MMU2 filament presets. -0.2.0-alpha7 Vojtech's fix the incorrect *MK3* references -0.2.0-alpha6 Jindra's way to fix the 0.2.0-alpha5 version -0.2.0-alpha5 Bumped up firmware versions for MK2.5/MK3 to 3.3.1, disabled priming areas for MK3MMU2 -0.2.0-alpha4 Extended the custom start/end G-codes of the MMU2.0 printers for no priming towers. -0.2.0-alpha3 Adjusted machine limits for time estimates, added filament density and cost -0.2.0-alpha2 Renamed the key MK3SMMU to MK3MMU2, added a generic PLA MMU2 material -0.2.0-alpha1 added initial profiles for the i3 MK3 Multi Material Upgrade 2.0 -0.2.0-alpha moved machine limits from the start G-code to the new print profile parameters -min_slic3r_version = 1.40.0 -0.1.18 Updated firmware version -0.1.17 Updated firmware version for MK2.5/S and MK3/S -0.1.16 MK2.5/3/S FW update -0.1.15 MK2/S/MMU FW update -0.1.14 Updated firmware versions for MK2.5 and MK3 -0.1.13 New MK2.5 and MK3 FW versions -0.1.12 New MK2.5 and MK3 FW versions -0.1.11 fw version changed to 3.3.1 -0.1.10 MK3 jerk and acceleration update -0.1.9 edited support extrusion width for 0.25 and 0.6 nozzles -0.1.8 extrusion width for 0,25, 0.6 and variable layer height fixes -0.1.7 Fixed errors in 0.25mm and 0.6mm profiles -0.1.6 Split the MK2.5 profile from the MK2S -min_slic3r_version = 1.40.0-beta -0.1.5 fixed printer_variant fields for the i3 MK3 0.25 and 0.6mm nozzles -0.1.4 edited fw version, added z-raise after print -min_slic3r_version = 1.40.0-alpha -0.1.3 Fixed an incorrect position of the max_print_height parameter -0.1.2 Wipe tower changes -0.1.1 Minor print speed adjustments -0.1.0 Initial +min_slic3r_version = 2.3.0-alpha4 +1.2.0-alpha0 Added filament spool weights +min_slic3r_version = 2.2.0-alpha3 +1.1.10 Updated firmware version. +1.1.9 Updated K values in filament profiles (linear advance). Added new filament profiles and SLA materials. +1.1.8 Updated start/end g-code scripts for MK3 family printer profiles (reduced extruder motor current for some print profiles). Added new filament and SLA material profiles. +1.1.7 Updated end g-code for MMU2 Single printer profiles. Added/updated filament and SLA material profiles. +1.1.6 Updated firmware version for MK2.5/S and MK3/S. +1.1.5 Updated MMU1 specific retraction settings for Prusament PC Blend +1.1.4 Added Prusament PC Blend filament profile. +1.1.3 Added SLA material and filament profile +1.1.2 Added renamed_from fields for PETG filaments to indicate that they were renamed from PET. +1.1.1 Added Verbatim and Fiberlogy PETG filament profiles. Updated auto cooling settings for ABS. +1.1.1-beta Updated for PrusaSlicer 2.2.0-beta +1.1.1-alpha4 Extended list of default filaments to be installed, top/bottom_solid_min_thickness defined, infill_acceleration changed etc +1.1.1-alpha3 Print bed textures are now configurable from the Preset Bundle. Requires PrusaSlicer 2.2.0-alpha3 and newer. +# The following line (max_slic3r_version) forces the users of PrusaSlicer 2.2.0-alpha3 and newer to update the profiles to 1.1.1-alpha3 and newer, +# so they will see the print bed. +max_slic3r_version = 2.2.0-alpha2 +min_slic3r_version = 2.2.0-alpha0 +1.1.1-alpha2 Bumped up config version, so our in house customer will get updated profiles. +1.1.0 Filament aliases, Creality profiles and other goodies for PrusaSlicer 2.2.0-alpha0 +min_slic3r_version = 2.1.1-beta0 +1.0.10 Updated firmware version for MK2.5/S and MK3/S. +1.0.9 Updated firmware version for MK2.5/S and MK3/S. +1.0.8 Various changes in FFF profiles, new filaments/materials added. See changelog. +1.0.7 Updated layer height limits for MINI +1.0.6 Added Prusa MINI profiles +min_slic3r_version = 2.1.0-alpha0 +1.0.5 Added SLA materials +1.0.4 Updated firmware version and 0.25mm nozzle profiles +1.0.3 Added filament profiles +1.0.2 Added SLA materials +1.0.1 Updated MK3 firmware version check to 3.8.0, new soluble support profiles for 0.6mm nozzle diameter MMU2S printers. +1.0.0 Updated end G-code for the MMU2 profiles to lift the extruder at the end of print. Wipe tower bridging distance was made smaller for soluble supports. +1.0.0-beta1 Updated color for the ASA filaments to differ from the other filaments. Single extruder printers now have no extruder color assigned, obects and toolpaths will be colored with the color of the active filament. +1.0.0-beta0 Printer model checks in start G-codes, ASA filament profiles, limits on min / max SL1 exposition times +1.0.0-alpha2 Printer model and nozzle diameter check +1.0.0-alpha1 Added Prusament ASA profile +1.0.0-alpha0 Filament specific retract for PET and similar copolymers, and for FLEX +min_slic3r_version = 1.42.0-alpha6 +0.8.9 Updated firmware version for MK2.5/S and MK3/S. +0.8.8 Updated firmware version for MK2.5/S and MK3/S. +0.8.7 Updated firmware version +0.8.6 Updated firmware version for MK2.5/S and MK3/S +0.8.5 Updated SL1 printer and material settings +0.8.4 Added Prusament ASA profile +0.8.3 FW version and SL1 materials update +0.8.2 FFF and SL1 settings update +0.8.1 Output settings and SLA materials update +0.8.0 Updated for the PrusaSlicer 2.0.0 final release +0.8.0-rc2 Updated firmware versions for MK2.5/S and MK3/S +0.8.0-rc1 Updated SLA profiles +0.8.0-rc Updated for the PrusaSlicer 2.0.0-rc release +0.8.0-beta4 Updated SLA profiles +0.8.0-beta3 Updated SLA profiles +0.8.0-beta2 Updated SLA profiles +0.8.0-beta1 Updated SLA profiles +0.8.0-beta Updated SLA profiles +0.8.0-alpha9 Updated SLA and FFF profiles +0.8.0-alpha8 Updated SLA profiles +0.8.0-alpha7 Updated SLA profiles +0.8.0-alpha6 Updated SLA profiles +min_slic3r_version = 1.42.0-alpha +0.8.0-alpha Updated SLA profiles +0.4.0-alpha4 Updated SLA profiles +0.4.0-alpha3 Update of SLA profiles +0.4.0-alpha2 First SLA profiles +min_slic3r_version = 1.41.3-alpha +0.4.12 Updated firmware version for MK2.5/S and MK3/S. +0.4.11 Updated firmware version for MK2.5/S and MK3/S. +0.4.10 Updated firmware version +0.4.9 Updated firmware version for MK2.5/S and MK3/S +0.4.8 MK2.5/3/S FW update +0.4.7 MK2/S/MMU FW update +0.4.6 Updated firmware versions for MK2.5/S and MK3/S +0.4.5 Enabled remaining time support for MK2/S/MMU1 +0.4.4 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt +0.4.3 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt +0.4.2 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt +0.4.1 New MK2.5S and MK3S FW versions +0.4.0 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt +min_slic3r_version = 1.41.1 +0.3.11 Updated firmware version for MK2.5/S and MK3/S. +0.3.10 Updated firmware version +0.3.9 Updated firmware version for MK2.5/S and MK3/S +0.3.8 MK2.5/3/S FW update +0.3.7 MK2/S/MMU FW update +0.3.6 Updated firmware versions for MK2.5 and MK3 +0.3.5 New MK2.5 and MK3 FW versions +0.3.4 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt +0.3.3 Prusament PETG released +0.3.2 New MK2.5 and MK3 FW versions +0.3.1 New MK2.5 and MK3 FW versions +0.3.0 New MK2.5 and MK3 FW version +min_slic3r_version = 1.41.0-alpha +0.2.9 New MK2.5 and MK3 FW versions +0.2.8 New MK2.5 and MK3 FW version +min_slic3r_version = 1.41.1 +0.2.7 New MK2.5 and MK3 FW version +0.2.6 Added MMU2 MK2.5 settings +min_slic3r_version = 1.41.0-alpha +0.2.5 Prusament is out - added prusament settings +0.2.4 Added soluble support profiles for MMU2 +0.2.3 Added materials for MMU2 single mode, edited MK3 xy stealth feedrate limit +0.2.2 Edited MMU2 Single mode purge line +0.2.1 Added PET and BVOH settings for MMU2 +0.2.0-beta5 Fixed MMU1 ramming parameters +0.2.0-beta4 Added filament loading speed at start, increased minimal purge on wipe tower +0.2.0-beta3 Edited ramming parameters and filament cooling moves for MMU2 +0.2.0-beta2 Edited first layer speed and wipe tower position +0.2.0-beta Removed limit on the MK3MMU2 height, added legacy M204 S T format to the MK2 profiles +0.2.0-alpha8 Added filament_load/unload_time for the PLA/ABS MMU2 filament presets. +0.2.0-alpha7 Vojtech's fix the incorrect *MK3* references +0.2.0-alpha6 Jindra's way to fix the 0.2.0-alpha5 version +0.2.0-alpha5 Bumped up firmware versions for MK2.5/MK3 to 3.3.1, disabled priming areas for MK3MMU2 +0.2.0-alpha4 Extended the custom start/end G-codes of the MMU2.0 printers for no priming towers. +0.2.0-alpha3 Adjusted machine limits for time estimates, added filament density and cost +0.2.0-alpha2 Renamed the key MK3SMMU to MK3MMU2, added a generic PLA MMU2 material +0.2.0-alpha1 added initial profiles for the i3 MK3 Multi Material Upgrade 2.0 +0.2.0-alpha moved machine limits from the start G-code to the new print profile parameters +min_slic3r_version = 1.40.0 +0.1.18 Updated firmware version +0.1.17 Updated firmware version for MK2.5/S and MK3/S +0.1.16 MK2.5/3/S FW update +0.1.15 MK2/S/MMU FW update +0.1.14 Updated firmware versions for MK2.5 and MK3 +0.1.13 New MK2.5 and MK3 FW versions +0.1.12 New MK2.5 and MK3 FW versions +0.1.11 fw version changed to 3.3.1 +0.1.10 MK3 jerk and acceleration update +0.1.9 edited support extrusion width for 0.25 and 0.6 nozzles +0.1.8 extrusion width for 0,25, 0.6 and variable layer height fixes +0.1.7 Fixed errors in 0.25mm and 0.6mm profiles +0.1.6 Split the MK2.5 profile from the MK2S +min_slic3r_version = 1.40.0-beta +0.1.5 fixed printer_variant fields for the i3 MK3 0.25 and 0.6mm nozzles +0.1.4 edited fw version, added z-raise after print +min_slic3r_version = 1.40.0-alpha +0.1.3 Fixed an incorrect position of the max_print_height parameter +0.1.2 Wipe tower changes +0.1.1 Minor print speed adjustments +0.1.0 Initial diff --git a/resources/profiles/PrusaResearch.ini b/resources/profiles/PrusaResearch.ini index 9e353e0fb..fa9e14b22 100644 --- a/resources/profiles/PrusaResearch.ini +++ b/resources/profiles/PrusaResearch.ini @@ -5,7 +5,7 @@ name = Prusa Research # Configuration version of this file. Config file will only be installed, if the config_version differs. # This means, the server may force the PrusaSlicer configuration to be downgraded. -config_version = 1.1.10 +config_version = 1.2.0-alpha0 # Where to get the updates from? 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% @@ -1807,12 +1807,14 @@ inherits = *PLA* filament_vendor = Fillamentum filament_cost = 21.99 filament_density = 1.24 +filament_spool_weight = 230 [filament:Fillamentum ABS] inherits = *ABSC* filament_vendor = Fillamentum filament_cost = 32.4 filament_density = 1.04 +filament_spool_weight = 230 first_layer_temperature = 240 temperature = 240 @@ -1821,6 +1823,7 @@ inherits = *ABS* filament_vendor = Fillamentum filament_cost = 38.7 filament_density = 1.07 +filament_spool_weight = 230 fan_always_on = 1 cooling = 1 min_fan_speed = 20 @@ -1836,6 +1839,7 @@ inherits = *ABS* filament_vendor = Prusa Polymers filament_cost = 35.28 filament_density = 1.07 +filament_spool_weight = 201 fan_always_on = 1 first_layer_temperature = 260 first_layer_bed_temperature = 105 @@ -1857,6 +1861,7 @@ inherits = *ABS* filament_vendor = Prusa Polymers filament_cost = 49.99 filament_density = 1.22 +filament_spool_weight = 201 fan_always_on = 0 first_layer_temperature = 275 first_layer_bed_temperature = 110 @@ -1883,6 +1888,7 @@ inherits = *ABS* filament_vendor = Prusa Polymers filament_cost = 49.99 filament_density = 1.22 +filament_spool_weight = 201 fan_always_on = 0 first_layer_temperature = 275 first_layer_bed_temperature = 105 @@ -1916,6 +1922,7 @@ inherits = *PET* filament_vendor = Fillamentum filament_cost = 34.99 filament_density = 1.25 +filament_spool_weight = 230 filament_type = CPE first_layer_bed_temperature = 90 first_layer_temperature = 275 @@ -1931,6 +1938,7 @@ compatible_printers_condition = nozzle_diameter[0]>0.35 and ! (printer_notes=~/. extrusion_multiplier = 1.1 filament_cost = 68 filament_density = 1.15 +filament_spool_weight = 230 filament_colour = #804040 filament_max_volumetric_speed = 10 first_layer_temperature = 190 @@ -1969,12 +1977,14 @@ inherits = *ABSC* filament_vendor = Hatchbox filament_cost = 27.82 filament_density = 1.04 +filament_spool_weight = 225 [filament:Plasty Mladec ABS] inherits = *ABSC* filament_vendor = Plasty Mladec filament_cost = 27.82 filament_density = 1.08 +filament_spool_weight = 230 [filament:Verbatim ABS] inherits = *ABSC* @@ -1995,6 +2005,7 @@ inherits = *PET* filament_vendor = Plasty Mladec filament_cost = 27.82 filament_density = 1.27 +filament_spool_weight = 230 [filament:Generic PLA] inherits = *PLA* @@ -2039,6 +2050,7 @@ inherits = *FLEX* filament_vendor = Fillamentum filament_cost = 33.99 filament_density = 1.20 +filament_spool_weight = 230 filament_max_volumetric_speed = 1.2 filament_retract_length = 0 filament_retract_speed = nil @@ -2136,6 +2148,7 @@ inherits = *ABSC* filament_vendor = Made for Prusa filament_cost = 22.99 filament_density = 1.08 +filament_spool_weight = 230 [filament:*ABS MMU2*] inherits = Prusa ABS @@ -2185,6 +2198,7 @@ inherits = *ABS MMU2* filament_vendor = Prusa Polymers filament_cost = 35.28 filament_density = 1.07 +filament_spool_weight = 201 fan_always_on = 1 first_layer_temperature = 260 first_layer_bed_temperature = 105 @@ -2209,6 +2223,7 @@ inherits = *ABS MMU2* filament_vendor = Prusa Polymers filament_cost = 49.99 filament_density = 1.22 +filament_spool_weight = 201 fan_always_on = 0 fan_below_layer_time = 30 first_layer_temperature = 265 @@ -2237,17 +2252,20 @@ start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and no inherits = *ABS MMU2* filament_vendor = Made for Prusa filament_cost = 22.99 +filament_spool_weight = 230 [filament:Plasty Mladec ABS @MMU2] inherits = *ABS MMU2* filament_vendor = Plasty Mladec filament_density = 1.08 +filament_spool_weight = 230 [filament:Prusa HIPS] inherits = *ABS* filament_vendor = Made for Prusa filament_cost = 27.3 filament_density = 1.04 +filament_spool_weight = 230 bridge_fan_speed = 50 cooling = 1 extrusion_multiplier = 1 @@ -2287,6 +2305,7 @@ renamed_from = "Prusa PET" filament_vendor = Made for Prusa filament_cost = 22.99 filament_density = 1.27 +filament_spool_weight = 230 compatible_printers_condition = nozzle_diameter[0]!=0.6 and printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) [filament:Verbatim PETG] @@ -2310,6 +2329,7 @@ first_layer_temperature = 240 temperature = 250 filament_cost = 29.99 filament_density = 1.27 +filament_spool_weight = 201 filament_type = PETG compatible_printers_condition = nozzle_diameter[0]!=0.6 and printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) @@ -2319,6 +2339,7 @@ renamed_from = "Prusa PET 0.6 nozzle"; "Prusa PETG 0.6 nozzle" filament_vendor = Made for Prusa filament_cost = 22.99 filament_density = 1.27 +filament_spool_weight = 230 [filament:Prusament PETG @0.6 nozzle] inherits = *PET06* @@ -2327,6 +2348,7 @@ first_layer_temperature = 240 temperature = 250 filament_cost = 29.99 filament_density = 1.27 +filament_spool_weight = 201 filament_type = PETG [filament:Plasty Mladec PETG @0.6 nozzle] @@ -2336,6 +2358,7 @@ first_layer_temperature = 230 temperature = 240 filament_cost = 27.92 filament_density = 1.27 +filament_spool_weight = 230 filament_type = PETG [filament:Devil Design PETG @0.6 nozzle] @@ -2398,12 +2421,14 @@ filament_vendor = Generic [filament:Plasty Mladec PETG @MMU2] inherits = *PET MMU2* filament_vendor = Plasty Mladec +filament_spool_weight = 230 [filament:Prusa PETG @MMU2] inherits = *PET MMU2* renamed_from = "Prusa PET MMU2"; "Prusa PETG MMU2" filament_vendor = Made for Prusa filament_cost = 22.99 +filament_spool_weight = 230 [filament:Prusament PETG @MMU2] inherits = *PET MMU2* @@ -2411,6 +2436,7 @@ filament_type = PETG filament_vendor = Prusa Polymers filament_cost = 29.99 filament_density = 1.27 +filament_spool_weight = 201 [filament:Generic PETG @MMU2 0.6 nozzle] inherits = *PET MMU2 06* @@ -2421,6 +2447,7 @@ filament_vendor = Generic inherits = *PET MMU2 06* renamed_from = "Prusa PET MMU2 0.6 nozzle"; "Prusa PETG MMU2 0.6 nozzle" filament_vendor = Made for Prusa +filament_spool_weight = 230 [filament:Prusament PETG @MMU2 0.6 nozzle] inherits = *PET MMU2 06* @@ -2428,17 +2455,20 @@ filament_type = PETG filament_vendor = Prusa Polymers filament_cost = 29.99 filament_density = 1.27 +filament_spool_weight = 201 [filament:Plasty Mladec PETG @MMU2 0.6 nozzle] inherits = *PET MMU2 06* filament_type = PETG filament_vendor = Plasty Mladec +filament_spool_weight = 230 [filament:Prusa PLA] inherits = *PLA* filament_vendor = Made for Prusa filament_cost = 20.99 filament_density = 1.24 +filament_spool_weight = 230 [filament:Fiberlogy PLA] inherits = *PLA* @@ -2451,6 +2481,7 @@ inherits = *PLA* filament_vendor = Plasty Mladec filament_cost = 25.4 filament_density = 1.24 +filament_spool_weight = 230 [filament:AmazonBasics PLA] inherits = *PLA* @@ -2463,6 +2494,7 @@ inherits = *PLA* filament_vendor = Hatchbox filament_cost = 25.4 filament_density = 1.24 +filament_spool_weight = 225 [filament:Esun PLA] inherits = *PLA* @@ -2494,6 +2526,7 @@ filament_vendor = Prusa Polymers temperature = 215 filament_cost = 24.99 filament_density = 1.24 +filament_spool_weight = 201 filament_notes = "Affordable filament for everyday printing in premium quality manufactured in-house by Josef Prusa" [filament:*PLA MMU2*] @@ -2520,18 +2553,21 @@ filament_vendor = Generic inherits = *PLA MMU2* filament_vendor = Made for Prusa filament_cost = 20.99 +filament_spool_weight = 230 [filament:Prusament PLA @MMU2] inherits = *PLA MMU2* filament_vendor = Prusa Polymers filament_cost = 24.99 filament_density = 1.24 +filament_spool_weight = 201 [filament:Fillamentum PLA @MMU2] inherits = *PLA MMU2* filament_vendor = Fillamentum filament_cost = 21.99 filament_density = 1.24 +filament_spool_weight = 230 [filament:SemiFlex or Flexfill 98A] inherits = *FLEX* @@ -2545,6 +2581,7 @@ inherits = *FLEX* filament_vendor = Fillamentum filament_cost = 33.99 filament_density = 1.23 +filament_spool_weight = 230 filament_max_volumetric_speed = 1.35 fan_always_on = 1 cooling = 0 @@ -2579,6 +2616,7 @@ inherits = *common* filament_vendor = Fillamentum filament_cost = 56.99 filament_density = 1.01 +filament_spool_weight = 230 bed_temperature = 90 bridge_fan_speed = 30 cooling = 1 @@ -2790,6 +2828,7 @@ inherits = *PETMMU1* filament_vendor = Fillamentum filament_cost = 34.99 filament_density = 1.25 +filament_spool_weight = 230 filament_type = CPE first_layer_bed_temperature = 90 first_layer_temperature = 275 @@ -2819,6 +2858,7 @@ inherits = *PETMMU1* filament_vendor = Plasty Mladec filament_cost = 27.82 filament_density = 1.27 +filament_spool_weight = 230 [filament:Verbatim PETG @MMU1] inherits = *PETMMU1* @@ -2838,6 +2878,7 @@ renamed_from = "Prusa PET MMU1"; "Prusa PETG MMU1" filament_vendor = Made for Prusa filament_cost = 22.99 filament_density = 1.27 +filament_spool_weight = 230 [filament:Prusament PETG @MMU1] inherits = *PETMMU1* @@ -2846,6 +2887,7 @@ first_layer_temperature = 240 temperature = 250 filament_cost = 29.99 filament_density = 1.27 +filament_spool_weight = 201 filament_type = PETG [filament:Taulman T-Glase @MMU1] @@ -2910,6 +2952,7 @@ inherits = Generic PETG; *PETMINI* filament_vendor = Plasty Mladec filament_cost = 27.82 filament_density = 1.27 +filament_spool_weight = 230 compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6 [filament:Verbatim PETG @MINI] @@ -2979,6 +3022,7 @@ inherits = Generic ABS; *ABSMINI* filament_vendor = Hatchbox filament_cost = 27.82 filament_density = 1.08 +filament_spool_weight = 225 fan_always_on = 0 cooling = 1 min_fan_speed = 15 @@ -2993,6 +3037,7 @@ inherits = Generic ABS; *ABSMINI* filament_vendor = Plasty Mladec filament_cost = 27.82 filament_density = 1.08 +filament_spool_weight = 230 fan_always_on = 0 cooling = 1 min_fan_speed = 15 @@ -3022,6 +3067,7 @@ filament_vendor = Prusa Polymers first_layer_temperature = 240 temperature = 250 filament_density = 1.27 +filament_spool_weight = 201 filament_cost = 29.99 compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6 @@ -3044,6 +3090,7 @@ inherits = Prusament PETG; *PETMINI06* first_layer_temperature = 240 temperature = 250 filament_density = 1.27 +filament_spool_weight = 201 filament_cost = 29.99 [filament:Generic PETG @0.6 nozzle MINI] @@ -3063,6 +3110,7 @@ filament_density = 1.23 [filament:Plasty Mladec PETG @0.6 nozzle MINI] inherits = Generic PETG; *PETMINI06* filament_vendor = Plasty Mladec +filament_spool_weight = 230 [filament:Verbatim PETG @0.6 nozzle MINI] inherits = Generic PETG; *PETMINI06* @@ -3090,6 +3138,7 @@ filament_type = ASA filament_colour = #FFF2EC filament_cost = 35.28 filament_density = 1.07 +filament_spool_weight = 201 [filament:Fillamentum Flexfill 98A @MINI] inherits = SemiFlex or Flexfill 98A; *FLEXMINI* @@ -3098,6 +3147,7 @@ first_layer_temperature = 240 temperature = 240 filament_max_volumetric_speed = 1.35 filament_cost = 33.99 +filament_spool_weight = 230 [filament:Generic FLEX @MINI] inherits = SemiFlex or Flexfill 98A; *FLEXMINI* @@ -3173,6 +3223,7 @@ filament_retract_lift = 0 filament_retract_before_travel = 7 filament_wipe = 0 filament_density = 1.20 +filament_spool_weight = 230 filament_cost = 33.95 bridge_fan_speed = 70 fan_always_on = 1 @@ -3193,6 +3244,7 @@ temperature = 265 filament_type = CPE filament_cost = 34.99 filament_density = 1.25 +filament_spool_weight = 230 [filament:ColorFabb nGen @MINI] inherits = ColorFabb nGen; *PETMINI* @@ -3208,6 +3260,7 @@ filament_cost = 28.80 inherits = Fillamentum ABS; *ABSMINI* filament_cost = 32.4 filament_density = 1.04 +filament_spool_weight = 230 fan_always_on = 0 cooling = 1 min_fan_speed = 15 @@ -3234,6 +3287,7 @@ filament_type = ASA filament_colour = #FFF2EC filament_cost = 38.7 filament_density = 1.07 +filament_spool_weight = 230 [filament:Polymaker PC-Max @MINI] inherits = Polymaker PC-Max; *ABSMINI* @@ -3253,6 +3307,7 @@ inherits = *ABSMINI* filament_vendor = Prusa Polymers filament_cost = 49.99 filament_density = 1.22 +filament_spool_weight = 201 fan_always_on = 0 first_layer_temperature = 275 first_layer_bed_temperature = 100 @@ -3281,6 +3336,7 @@ inherits = *ABSMINI* filament_vendor = Made for Prusa filament_cost = 22.99 filament_density = 1.08 +filament_spool_weight = 230 fan_always_on = 0 cooling = 1 min_fan_speed = 15 @@ -3374,6 +3430,7 @@ renamed_from = "Prusa PET MINI"; "Prusa PETG MINI" filament_vendor = Made for Prusa filament_cost = 22.99 filament_density = 1.27 +filament_spool_weight = 230 compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6 [filament:Prusa PETG @0.6 nozzle MINI] @@ -3382,6 +3439,7 @@ renamed_from = "Prusa PET 0.6 nozzle MINI"; "Prusa PETG 0.6 nozzle MINI" filament_vendor = Made for Prusa filament_cost = 22.99 filament_density = 1.27 +filament_spool_weight = 230 [sla_print:*common*] compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_SL1.*/ @@ -3409,6 +3467,7 @@ support_pillar_diameter = 1 support_pillar_connection_mode = zigzag support_pillar_widening_factor = 0 supports_enable = 1 +support_small_pillar_diameter_percent = 60% [sla_print:0.025 UltraDetail] inherits = *common* From 7527797a36b68251290c70e69ef2cca998e29bf4 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Sat, 21 Nov 2020 15:59:02 +0100 Subject: [PATCH 081/138] Bumped up version number --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index 36c15a52d..b34ee729d 100644 --- a/version.inc +++ b/version.inc @@ -3,7 +3,7 @@ set(SLIC3R_APP_NAME "PrusaSlicer") set(SLIC3R_APP_KEY "PrusaSlicer") -set(SLIC3R_VERSION "2.3.0-alpha3") +set(SLIC3R_VERSION "2.3.0-alpha4") set(SLIC3R_BUILD_ID "PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN") set(SLIC3R_RC_VERSION "2,3,0,0") set(SLIC3R_RC_VERSION_DOTS "2.3.0.0") From 641d27eef4d1bb8a20d3aee3f4db66401a344fe0 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Sat, 21 Nov 2020 16:05:58 +0100 Subject: [PATCH 082/138] Fixed missing include --- src/slic3r/GUI/OG_CustomCtrl.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index 9f7ddf3bb..3e455f672 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -8,6 +8,7 @@ #include <boost/algorithm/string/split.hpp> #include "libslic3r/Utils.hpp" #include "I18N.hpp" +#include "format.hpp" namespace Slic3r { namespace GUI { From 2e0e63fed8f8a8c14f0938480f3f36bb3fa8f057 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Sat, 21 Nov 2020 18:15:20 +0100 Subject: [PATCH 083/138] Tooltips for the parameters labels on Settings tabs are back --- src/slic3r/GUI/OG_CustomCtrl.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index 3e455f672..7da66a565 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -244,8 +244,10 @@ void OG_CustomCtrl::OnMotion(wxMouseEvent& event) for (CtrlLine& line : ctrl_lines) { line.is_focused = is_point_in_rect(pos, line.rect_label); - if (line.is_focused && !suppress_hyperlinks) { - tooltip = get_url(line.og_line.label_path); + if (line.is_focused) { + if (!suppress_hyperlinks && !line.og_line.label_path.empty()) + tooltip = get_url(line.og_line.label_path) +"\n\n"; + tooltip += line.og_line.label_tooltip; break; } @@ -610,7 +612,7 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_text(wxDC& dc, wxPoint pos, const wxStr dc.GetMultiLineTextExtent(out_text, &text_width, &text_height); pos.y = pos.y + lround((height - text_height) / 2); - if (width > 0 && is_url) + if (width > 0) rect_label = wxRect(pos, wxSize(text_width, text_height)); wxColour old_clr = dc.GetTextForeground(); From 3a75b0da7f049edf1145d373f3fa8e5bc85ee96c Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Mon, 23 Nov 2020 09:13:48 +0100 Subject: [PATCH 084/138] Update of the perimeter_acceleration tooltip --- src/libslic3r/PrintConfig.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 5f29c15a8..629838a0b 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1555,8 +1555,7 @@ void PrintConfigDef::init_fff_params() def = this->add("perimeter_acceleration", coFloat); def->label = L("Perimeters"); def->tooltip = L("This is the acceleration your printer will use for perimeters. " - "A high value like 9000 usually gives good results if your hardware is up to the job. " - "Set zero to disable acceleration control for perimeters."); + "Set zero to disable acceleration control for perimeters."); def->sidetext = L("mm/s²"); def->mode = comExpert; def->set_default_value(new ConfigOptionFloat(0)); From 26befd5fa329c35ec03cfa80b890c2ad9cac1158 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Mon, 23 Nov 2020 13:45:12 +0100 Subject: [PATCH 085/138] #5234 - Disabled pop-up menu on the wipe tower --- src/slic3r/GUI/GLCanvas3D.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index b8e379965..2ae852dbd 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3313,9 +3313,13 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) const float factor = m_retina_helper->get_scale_factor(); logical_pos = logical_pos.cwiseQuotient(Vec2d(factor, factor)); #endif // ENABLE_RETINA_GL - if (!m_mouse.dragging) + if (!m_mouse.dragging) { // do not post the event if the user is panning the scene - post_event(RBtnEvent(EVT_GLCANVAS_RIGHT_CLICK, { logical_pos, m_hover_volume_idxs.empty() })); + // or if right click was done over the wipe tower + bool post_right_click_event = m_hover_volume_idxs.empty() || !m_volumes.volumes[get_first_hover_volume_idx()]->is_wipe_tower; + if (post_right_click_event) + post_event(RBtnEvent(EVT_GLCANVAS_RIGHT_CLICK, { logical_pos, m_hover_volume_idxs.empty() })); + } } mouse_up_cleanup(); From 1d0b947fa87bee5dd5286183e1ba584cf5b7710a Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Mon, 23 Nov 2020 14:30:31 +0100 Subject: [PATCH 086/138] ENABLE_GCODE_VIEWER set as default in: GCodeViewer hpp/cpp --- src/slic3r/GUI/GCodeViewer.cpp | 2 -- src/slic3r/GUI/GCodeViewer.hpp | 3 --- 2 files changed, 5 deletions(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index cee0b655b..4a4a8e90e 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -1,7 +1,6 @@ #include "libslic3r/libslic3r.h" #include "GCodeViewer.hpp" -#if ENABLE_GCODE_VIEWER #include "libslic3r/Print.hpp" #include "libslic3r/Geometry.hpp" #include "libslic3r/Model.hpp" @@ -2934,4 +2933,3 @@ void GCodeViewer::log_memory_used(const std::string& label, long long additional } // namespace GUI } // namespace Slic3r -#endif // ENABLE_GCODE_VIEWER diff --git a/src/slic3r/GUI/GCodeViewer.hpp b/src/slic3r/GUI/GCodeViewer.hpp index 1a11b633e..fff80a224 100644 --- a/src/slic3r/GUI/GCodeViewer.hpp +++ b/src/slic3r/GUI/GCodeViewer.hpp @@ -1,7 +1,6 @@ #ifndef slic3r_GCodeViewer_hpp_ #define slic3r_GCodeViewer_hpp_ -#if ENABLE_GCODE_VIEWER #include "3DScene.hpp" #include "libslic3r/GCode/GCodeProcessor.hpp" #include "GLModel.hpp" @@ -522,7 +521,5 @@ private: } // namespace GUI } // namespace Slic3r -#endif // ENABLE_GCODE_VIEWER - #endif // slic3r_GCodeViewer_hpp_ From f1acde80241b451bb85ba3604703d3d1fbcf5087 Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Mon, 23 Nov 2020 16:05:24 +0100 Subject: [PATCH 087/138] Fix broken wipe tower arrangement fixes #5207 fixes #5216 --- src/slic3r/GUI/Jobs/ArrangeJob.cpp | 33 +++++++++++++----------------- src/slic3r/GUI/Jobs/ArrangeJob.hpp | 25 +++++++++++++++++----- src/slic3r/GUI/Jobs/FillBedJob.cpp | 6 +++--- 3 files changed, 37 insertions(+), 27 deletions(-) diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index b8f165c02..7a8c21365 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -41,7 +41,8 @@ public: ret.poly.contour = std::move(ap); ret.translation = scaled(m_pos); ret.rotation = m_rotation; - ret.priority++; + ++ret.priority; + return ret; } }; @@ -74,11 +75,11 @@ void ArrangeJob::prepare_all() { for (ModelObject *obj: m_plater->model().objects) for (ModelInstance *mi : obj->instances) { ArrangePolygons & cont = mi->printable ? m_selected : m_unprintable; - cont.emplace_back(get_arrange_poly(mi, m_plater)); + cont.emplace_back(get_arrange_poly(PtrWrapper{mi}, m_plater)); } - if (auto wti = get_wipe_tower(*m_plater)) - m_selected.emplace_back(wti.get_arrange_polygon()); + if (auto wti = get_wipe_tower_arrangepoly(*m_plater)) + m_selected.emplace_back(std::move(*wti)); } void ArrangeJob::prepare_selected() { @@ -106,8 +107,9 @@ void ArrangeJob::prepare_selected() { inst_sel[size_t(inst_id)] = true; for (size_t i = 0; i < inst_sel.size(); ++i) { - ArrangePolygon &&ap = get_arrange_poly(mo->instances[i], m_plater); - + ArrangePolygon &&ap = + get_arrange_poly(PtrWrapper{mo->instances[i]}, m_plater); + ArrangePolygons &cont = mo->instances[i]->printable ? (inst_sel[i] ? m_selected : m_unselected) : @@ -118,11 +120,11 @@ void ArrangeJob::prepare_selected() { } if (auto wti = get_wipe_tower(*m_plater)) { - ArrangePolygon &&ap = get_arrange_poly(&wti, m_plater); - - m_plater->get_selection().is_wipe_tower() ? - m_selected.emplace_back(std::move(ap)) : - m_unselected.emplace_back(std::move(ap)); + ArrangePolygon &&ap = get_arrange_poly(wti, m_plater); + + auto &cont = m_plater->get_selection().is_wipe_tower() ? m_selected : + m_unselected; + cont.emplace_back(std::move(ap)); } // If the selection was empty arrange everything @@ -212,18 +214,11 @@ std::optional<arrangement::ArrangePolygon> get_wipe_tower_arrangepoly(const Plater &plater) { if (auto wti = get_wipe_tower(plater)) - return wti.get_arrange_polygon(); + return get_arrange_poly(wti, &plater); return {}; } -void apply_wipe_tower_arrangepoly(Plater & plater, - const arrangement::ArrangePolygon &ap) -{ - WipeTower{plater.canvas3D()->get_wipe_tower_info()} - .apply_arrange_result(ap.translation.cast<double>(), ap.rotation); -} - double bed_stride(const Plater *plater) { double bedwidth = plater->bed_shape_bb().size().x(); return scaled<double>((1. + LOGICAL_BED_GAP) * bedwidth); diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.hpp b/src/slic3r/GUI/Jobs/ArrangeJob.hpp index f178711e9..73540c230 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.hpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.hpp @@ -47,7 +47,6 @@ public: }; std::optional<arrangement::ArrangePolygon> get_wipe_tower_arrangepoly(const Plater &); -void apply_wipe_tower_arrangepoly(Plater &plater, const arrangement::ArrangePolygon &ap); // The gap between logical beds in the x axis expressed in ratio of // the current bed width. @@ -56,20 +55,36 @@ static const constexpr double LOGICAL_BED_GAP = 1. / 5.; // Stride between logical beds double bed_stride(const Plater *plater); +template<class T> struct PtrWrapper +{ + T *ptr; + + explicit PtrWrapper(T *p) : ptr{p} {} + + arrangement::ArrangePolygon get_arrange_polygon() const + { + return ptr->get_arrange_polygon(); + } + + void apply_arrange_result(const Vec2d &t, double rot) + { + ptr->apply_arrange_result(t, rot); + } +}; + // Set up arrange polygon for a ModelInstance and Wipe tower template<class T> -arrangement::ArrangePolygon get_arrange_poly(T *obj, const Plater *plater) +arrangement::ArrangePolygon get_arrange_poly(T obj, const Plater *plater) { using ArrangePolygon = arrangement::ArrangePolygon; - ArrangePolygon ap = obj->get_arrange_polygon(); - ap.priority = 0; + ArrangePolygon ap = obj.get_arrange_polygon(); ap.bed_idx = ap.translation.x() / bed_stride(plater); ap.setter = [obj, plater](const ArrangePolygon &p) { if (p.is_arranged()) { Vec2d t = p.translation.cast<double>(); t.x() += p.bed_idx * bed_stride(plater); - obj->apply_arrange_result(t, p.rotation); + T{obj}.apply_arrange_result(t, p.rotation); } }; diff --git a/src/slic3r/GUI/Jobs/FillBedJob.cpp b/src/slic3r/GUI/Jobs/FillBedJob.cpp index 8c7b3c418..060528006 100644 --- a/src/slic3r/GUI/Jobs/FillBedJob.cpp +++ b/src/slic3r/GUI/Jobs/FillBedJob.cpp @@ -28,7 +28,7 @@ void FillBedJob::prepare() m_selected.reserve(model_object->instances.size()); for (ModelInstance *inst : model_object->instances) if (inst->printable) { - ArrangePolygon ap = get_arrange_poly(inst, m_plater); + ArrangePolygon ap = get_arrange_poly(PtrWrapper{inst}, m_plater); ++ap.priority; // need to be included in the result m_selected.emplace_back(ap); } @@ -40,8 +40,8 @@ void FillBedJob::prepare() auto &objects = m_plater->model().objects; for (size_t idx = 0; idx < objects.size(); ++idx) if (int(idx) != m_object_idx) - for (const ModelInstance *mi : objects[idx]->instances) { - m_unselected.emplace_back(mi->get_arrange_polygon()); + for (ModelInstance *mi : objects[idx]->instances) { + m_unselected.emplace_back(get_arrange_poly(PtrWrapper{mi}, m_plater)); m_unselected.back().bed_idx = 0; } From 95d65f9f3085bc0c935b1bb3691151f89343f7b2 Mon Sep 17 00:00:00 2001 From: David Kocik <kocikdav@gmail.com> Date: Mon, 23 Nov 2020 16:42:03 +0100 Subject: [PATCH 088/138] Documentation for NotificationManager --- src/slic3r/GUI/NotificationManager.hpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index d483173c3..da544391d 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -150,7 +150,9 @@ private: const int duration; const std::string text1; const std::string hypertext; - // Callback for hypertext - returns if notif shall close. + // Callback for hypertext - returns true if notification should close after triggering + // Usually sends event to UI thread thru wxEvtHandler. + // Examples in basic_notifications. std::function<bool(wxEvtHandler*)> callback { nullptr }; const std::string text2; }; @@ -227,7 +229,8 @@ private: void render_left_sign(ImGuiWrapper& imgui); virtual void render_minimize_button(ImGuiWrapper& imgui, const float win_pos_x, const float win_pos_y); - // Hypertext action, returns if close notification + // Hypertext action, returns true if notification should close. + // Action is stored in NotificationData::callback as std::function<bool(wxEvtHandler*)> virtual bool on_text_click(); const NotificationData m_data; From 92953acc57971be634a905710e4ac274ef8d1e1b Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Mon, 23 Nov 2020 17:15:22 +0100 Subject: [PATCH 089/138] #5236 - Fixed color not correctly shown after slice The bug was introduced with 148f4fe766cb7cf63972686af600d83804a2e8d3 which is now replaced by this commit --- src/libslic3r/GCode/GCodeProcessor.cpp | 9 ++------- src/slic3r/GUI/GCodeViewer.cpp | 4 ++++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index e2a3d0fd7..d30ec70b5 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -598,9 +598,6 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config) } } - // ensure at least one (default) color is defined - std::string default_color = "#FF8000"; - m_result.extruder_colors = std::vector<std::string>(1, default_color); const ConfigOptionStrings* extruder_colour = config.option<ConfigOptionStrings>("extruder_colour"); if (extruder_colour != nullptr) { // takes colors from config @@ -615,7 +612,9 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config) } } + // replace missing values with default + std::string default_color = "#FF8000"; for (size_t i = 0; i < m_result.extruder_colors.size(); ++i) { if (m_result.extruder_colors[i].empty()) m_result.extruder_colors[i] = default_color; @@ -837,10 +836,6 @@ void GCodeProcessor::process_file(const std::string& filename, bool apply_postpr update_estimated_times_stats(); - // ensure at least one (default) color is defined - if (m_result.extruder_colors.empty()) - m_result.extruder_colors.push_back("#FF8000"); - // post-process to add M73 lines into the gcode if (apply_postprocess) m_time_processor.post_process(filename); diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 4a4a8e90e..7101ee811 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -373,6 +373,10 @@ void GCodeViewer::refresh(const GCodeProcessor::Result& gcode_result, const std: // update tool colors m_tool_colors = decode_colors(str_tool_colors); + // ensure at least one (default) color is defined + if (m_tool_colors.empty()) + m_tool_colors.push_back(decode_color("#FF8000")); + // update ranges for coloring / legend m_extrusions.reset_ranges(); for (size_t i = 0; i < m_moves_count; ++i) { From 79c2bd15750075270378069a18d41b272361bfcc Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Mon, 23 Nov 2020 17:52:08 +0100 Subject: [PATCH 090/138] Fix for gcode-viewer symlink fixes #5238 --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c93d95946..acd8d465c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -249,5 +249,5 @@ else () install(TARGETS PrusaSlicer RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") # Install the symlink for gcodeviewer - install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink prusa-slicer prusa-gcodeviewer WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})") + install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink prusa-slicer prusa-gcodeviewer WORKING_DIRECTORY \$ENV{DESTDIR}/${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})") endif () From 4736408a460fbf917978185efc28dc1b49a6ed41 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Tue, 24 Nov 2020 09:23:33 +0100 Subject: [PATCH 091/138] Fixed localization on preview's legend button --- src/slic3r/GUI/GCodeViewer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 7101ee811..166976c3a 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -2783,7 +2783,7 @@ void GCodeViewer::render_legend() const ImGui::SameLine(); imgui.text(short_time(get_time_dhms(time_mode.time))); - auto show_mode_button = [this, &imgui](const std::string& label, PrintEstimatedTimeStatistics::ETimeMode mode) { + auto show_mode_button = [this, &imgui](const wxString& label, PrintEstimatedTimeStatistics::ETimeMode mode) { bool show = false; for (size_t i = 0; i < m_time_statistics.modes.size(); ++i) { if (i != static_cast<size_t>(mode) && @@ -2803,11 +2803,11 @@ void GCodeViewer::render_legend() const switch (m_time_estimate_mode) { case PrintEstimatedTimeStatistics::ETimeMode::Normal: { - show_mode_button(_u8L("Show stealth mode"), PrintEstimatedTimeStatistics::ETimeMode::Stealth); + show_mode_button(_L("Show stealth mode"), PrintEstimatedTimeStatistics::ETimeMode::Stealth); break; } case PrintEstimatedTimeStatistics::ETimeMode::Stealth: { - show_mode_button(_u8L("Show normal mode"), PrintEstimatedTimeStatistics::ETimeMode::Normal); + show_mode_button(_L("Show normal mode"), PrintEstimatedTimeStatistics::ETimeMode::Normal); break; } } From 4b2f9562abbd58ac993d48cbb92cfa5b3793e9e3 Mon Sep 17 00:00:00 2001 From: rtyr <36745189+rtyr@users.noreply.github.com> Date: Tue, 24 Nov 2020 09:53:50 +0100 Subject: [PATCH 092/138] TriLAB - Added PLA, PETG profiles for 0.8 nozzle, update print materials https://github.com/prusa3d/PrusaSlicer-settings/pull/110 --- resources/profiles/TriLAB.idx | 11 +- resources/profiles/TriLAB.ini | 552 ++++++++++++++++++++++------------ 2 files changed, 370 insertions(+), 193 deletions(-) diff --git a/resources/profiles/TriLAB.idx b/resources/profiles/TriLAB.idx index 9281dab13..1cf505da2 100644 --- a/resources/profiles/TriLAB.idx +++ b/resources/profiles/TriLAB.idx @@ -1,5 +1,6 @@ -min_slic3r_version = 2.3.0-alpha3 -0.0.3 Added DeltiQ 2, DeltiQ 2 Plus printers, 0.10mm, 0.20mm FLEX print profiles, updated print materials, flexprint extension support -min_slic3r_version = 2.3.0-alpha0 -0.0.2 Added 0.15mm print profile -0.0.1 Initial TriLAB bundle +min_slic3r_version = 2.3.0-alpha3 +0.0.4 Added PLA, PETG profiles for 0.8 nozzle, update print materials +0.0.3 Added DeltiQ 2, DeltiQ 2 Plus printers, 0.10mm, 0.20mm FLEX print profiles, updated print materials, flexprint extension support +min_slic3r_version = 2.3.0-alpha0 +0.0.2 Added 0.15mm print profile +0.0.1 Initial TriLAB bundle \ No newline at end of file diff --git a/resources/profiles/TriLAB.ini b/resources/profiles/TriLAB.ini index 735314ae2..959190e35 100644 --- a/resources/profiles/TriLAB.ini +++ b/resources/profiles/TriLAB.ini @@ -6,7 +6,7 @@ name = TriLAB # 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. -config_version = 0.0.3 +config_version = 0.0.4 # Where to get the updates from? config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/TriLAB/ # changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1% @@ -17,21 +17,21 @@ config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/Prus [printer_model:DQ2] name = DeltiQ 2 -variants = 0.4 +variants = 0.4; 0.8 technology = FFF family = DeltiQ 2 bed_model = dq2_bed.stl bed_texture = dq2_bed_texture.svg -default_materials = DeltiQ PLA; DeltiQ ASA; DeltiQ PET; DeltiQ ABS; DeltiQ CPE +default_materials = DeltiQ - PLA - Generic; DeltiQ - PETG - Generic; DeltiQ - ABS - Generic; DeltiQ - PLA - ExtraFill (Fillamentum); DeltiQ - PETG (Devil Design); DeltiQ - ABS - ExtraFill (Fillamentum); DeltiQ - ASA - ExtraFill (Fillamentum); DeltiQ - CPE - HG100 (Fillamentum); DeltiQ FP2 - PLA - Generic; DeltiQ FP2 - PETG - Generic; DeltiQ FP2 - ABS - Generic; DeltiQ FP2 - PLA - ExtraFill (Fillamentum); DeltiQ FP2 - PETG (Devil Design); DeltiQ FP2 - ABS - ExtraFill (Fillamentum); DeltiQ FP2 - ASA - ExtraFill (Fillamentum); DeltiQ FP2 - CPE - HG100 (Fillamentum); DeltiQ FP2 - FLEX - Generic; DeltiQ FP2 - TPU 92A - FlexFill (Fillamentum); DeltiQ FP2 - TPU 98A - FlexFill (Fillamentum); DeltiQ - PLA - ExtraFill (Fillamentum) @0.8 nozzle [printer_model:DQ2P] name = DeltiQ 2 Plus -variants = 0.4 +variants = 0.4; 0.8 technology = FFF family = DeltiQ 2 bed_model = dq2_bed.stl bed_texture = dq2_bed_texture.svg -default_materials = DeltiQ PLA; DeltiQ ASA; DeltiQ PET; DeltiQ ABS; DeltiQ CPE +default_materials = DeltiQ - PLA - Generic; DeltiQ - PETG - Generic; DeltiQ - ABS - Generic; DeltiQ - PLA - ExtraFill (Fillamentum); DeltiQ - PETG (Devil Design); DeltiQ - ABS - ExtraFill (Fillamentum); DeltiQ - ASA - ExtraFill (Fillamentum); DeltiQ - CPE - HG100 (Fillamentum); DeltiQ - PLA - ExtraFill (Fillamentum) @0.8 nozzle [printer_model:DQ2+FP2] name = DeltiQ 2 + FlexPrint 2 @@ -40,7 +40,7 @@ technology = FFF family = DeltiQ 2 bed_model = dq2_bed.stl bed_texture = dq2_bed_texture.svg -default_materials = DeltiQ FlexPrint 2 FLEX; DeltiQ FlexPrint 2 FLEX Smartfil; DeltiQ FlexPrint 2 PLA; DeltiQ FlexPrint 2 ASA; DeltiQ FlexPrint 2 PET; DeltiQ FlexPrint 2 ABS; DeltiQ FlexPrint 2 CPE +default_materials = DeltiQ FP2 - PLA - Generic; DeltiQ FP2 - PETG - Generic; DeltiQ FP2 - ABS - Generic; DeltiQ FP2 - PLA - ExtraFill (Fillamentum); DeltiQ FP2 - PETG (Devil Design); DeltiQ FP2 - ABS - ExtraFill (Fillamentum); DeltiQ FP2 - ASA - ExtraFill (Fillamentum); DeltiQ FP2 - CPE - HG100 (Fillamentum); DeltiQ FP2 - FLEX - Generic; DeltiQ FP2 - TPU 92A - FlexFill (Fillamentum); DeltiQ FP2 - TPU 98A - FlexFill (Fillamentum) [printer_model:DQ2P+FP2] name = DeltiQ 2 Plus + FlexPrint 2 @@ -49,7 +49,7 @@ technology = FFF family = DeltiQ 2 bed_model = dq2_bed.stl bed_texture = dq2_bed_texture.svg -default_materials = DeltiQ FlexPrint 2 FLEX; DeltiQ FlexPrint 2 FLEX Smartfil; DeltiQ FlexPrint 2 PLA; DeltiQ FlexPrint 2 ASA; DeltiQ FlexPrint 2 PET; DeltiQ FlexPrint 2 ABS; DeltiQ FlexPrint 2 CPE +default_materials = DeltiQ FP2 - PLA - Generic; DeltiQ FP2 - PETG - Generic; DeltiQ FP2 - ABS - Generic; DeltiQ FP2 - PLA - ExtraFill (Fillamentum); DeltiQ FP2 - PETG (Devil Design); DeltiQ FP2 - ABS - ExtraFill (Fillamentum); DeltiQ FP2 - ASA - ExtraFill (Fillamentum); DeltiQ FP2 - CPE - HG100 (Fillamentum); DeltiQ FP2 - FLEX - Generic; DeltiQ FP2 - TPU 92A - FlexFill (Fillamentum); DeltiQ FP2 - TPU 98A - FlexFill (Fillamentum) [printer_model:DQ2+FP] name = DeltiQ 2 + FlexPrint @@ -58,7 +58,7 @@ technology = FFF family = DeltiQ 2 bed_model = dq2_bed.stl bed_texture = dq2_bed_texture.svg -default_materials = DeltiQ FlexPrint FLEX; DeltiQ FlexPrint PLA; DeltiQ FlexPrint ASA; DeltiQ FlexPrint PET; DeltiQ FlexPrint ABS; DeltiQ FlexPrint CPE +default_materials = DeltiQ FP - PLA - Generic; DeltiQ FP - PETG - Generic; DeltiQ FP - ABS - Generic; DeltiQ FP - PLA - ExtraFill (Fillamentum); DeltiQ FP - PETG (Devil Design); DeltiQ FP - ABS - ExtraFill (Fillamentum); DeltiQ FP - ASA - ExtraFill (Fillamentum); DeltiQ FP - CPE - HG100 (Fillamentum); DeltiQ FP - FLEX - Generic; [printer_model:DQ2P+FP] name = DeltiQ 2 Plus + FlexPrint @@ -67,7 +67,7 @@ technology = FFF family = DeltiQ 2 bed_model = dq2_bed.stl bed_texture = dq2_bed_texture.svg -default_materials = DeltiQ FlexPrint FLEX; DeltiQ FlexPrint PLA; DeltiQ FlexPrint ASA; DeltiQ FlexPrint PET; DeltiQ FlexPrint ABS; DeltiQ FlexPrint CPE +default_materials = DeltiQ FP - PLA - Generic; DeltiQ FP - PETG - Generic; DeltiQ FP - ABS - Generic; DeltiQ FP - PLA - ExtraFill (Fillamentum); DeltiQ FP - PETG (Devil Design); DeltiQ FP - ABS - ExtraFill (Fillamentum); DeltiQ FP - ASA - ExtraFill (Fillamentum); DeltiQ FP - CPE - HG100 (Fillamentum); DeltiQ FP - FLEX - Generic [printer_model:DQM] name = DeltiQ M @@ -105,7 +105,7 @@ bridge_speed = 30 brim_width = 0 clip_multipart_objects = 1 compatible_printers = -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and nozzle_diameter[0]==0.4 complete_objects = 0 default_acceleration = 2000 dont_support_bridges = 0 @@ -176,7 +176,7 @@ solid_infill_speed = 60 spiral_vase = 0 standby_temperature_delta = -5 support_material = 0 -support_material_angle = 40 +support_material_angle = 30 support_material_auto = 1 support_material_buildplate_only = 0 support_material_contact_distance = 0.1 @@ -192,7 +192,7 @@ support_material_pattern = rectilinear support_material_spacing = 2 support_material_speed = 50 support_material_synchronize_layers = 0 -support_material_threshold = 55 +support_material_threshold = 40 support_material_with_sheath = 0 support_material_xy_spacing = 0.6 thin_walls = 0 @@ -254,9 +254,11 @@ thin_walls = 0 [print:DeltiQ 0.20mm FLEX] inherits = DeltiQ 0.20mm Normal avoid_crossing_perimeters = 0 -bridge_flow_ratio = 0.90 -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*FLEXPRINT.*/ +bridge_flow_ratio = 0.80 +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*FLEXPRINT.*/ and nozzle_diameter[0]==0.4 +extra_perimeters = 1 only_retract_when_crossing_perimeters = 1 +extrusion_width = 0.40 overhangs = 0 seam_position = nearest thin_walls = 0 @@ -264,23 +266,71 @@ bridge_speed = 20 external_perimeter_speed = 20 first_layer_speed = 20 gap_fill_speed = 25 -infill_speed = 30 +infill_extrusion_width = 0.55 +infill_speed = 40 +infill_overlap = 27% perimeter_speed = 25 small_perimeter_speed = 20 solid_infill_speed = 30 +solid_infill_extrusion_width = 0.45 support_material_contact_distance = 0.3 +support_material_speed = 30 top_solid_infill_speed = 20 top_fill_pattern = rectilinear fill_pattern = grid fill_density = 25% travel_speed = 200 -max_print_speed = 30 +max_print_speed = 40 complete_objects = 1 +[print:DeltiQ 0.40mm Normal @0.8 nozzle] +inherits = DeltiQ 0.20mm Normal +bottom_solid_layers = 3 +bottom_solid_min_thickness = 1.2 +bridge_flow_ratio = 0.90 +bridge_speed = 20 +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and nozzle_diameter[0]==0.8 +elefant_foot_compensation = 0.2 +external_perimeter_extrusion_width = 0.80 +external_perimeter_speed = 30 +extrusion_width = 0.80 +first_layer_extrusion_width = 0.80 +first_layer_height = 0.4 +first_layer_speed = 20 +gap_fill_speed = 40 +infill_extrusion_width = 0.9 +infill_overlap = 28% +infill_speed = 60 +layer_height = 0.4 +max_print_speed = 80 +max_volumetric_speed = 40 +overhangs = 1 +perimeter_extrusion_width = 0.80 +perimeter_speed = 45 +perimeters = 2 +small_perimeter_speed = 20 +solid_infill_extrusion_width = 0.8 +solid_infill_speed = 60 +top_infill_extrusion_width = 0.8 +top_solid_infill_speed = 40 +top_solid_layers = 4 +top_solid_min_thickness = 1.2 + +[print:DeltiQ 0.40mm Vase @0.8 nozzle] +inherits = DeltiQ 0.40mm Normal @0.8 nozzle +bottom_solid_layers = 4 +perimeters = 1 +top_solid_layers = 0 +fill_density = 0 +support_material = 0 +spiral_vase = 1 +ensure_vertical_shell_thickness = 1 +thin_walls = 0 + [filament:*DeltiQ common*] compatible_printers = -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and !(printer_notes=~/.*FLEXPRINT.*/) +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and !(printer_notes=~/.*FLEXPRINT.*/) and nozzle_diameter[0]==0.4 disable_fan_first_layers = 3 extrusion_multiplier = 1 filament_colour = #FF0000 @@ -294,7 +344,37 @@ filament_toolchange_delay = 0 start_filament_gcode = "; FILAMENT_START_GCODE" end_filament_gcode = "; FILAMENT_END_GCODE" -[filament:DeltiQ PET] + +# DeltiQ Filaments # + +[filament:DeltiQ - PLA - Generic] +inherits = *DeltiQ common* +bed_temperature = 55 +bridge_fan_speed = 100 +cooling = 1 +fan_always_on = 1 +fan_below_layer_time = 100 +filament_vendor = Fillamentum +filament_cost = 767 +filament_density = 1.24 +filament_max_volumetric_speed = 8 +filament_retract_before_travel = 2 +filament_retract_before_wipe = 90% +filament_retract_layer_change = 1 +filament_retract_length = 4.0 +filament_retract_lift = 0.2 +filament_retract_speed = 30 +filament_type = PLA +filament_wipe = 1 +first_layer_bed_temperature = 55 +first_layer_temperature = 220 +max_fan_speed = 100 +min_fan_speed = 100 +min_print_speed = 10 +slowdown_below_layer_time = 4 +temperature = 215 + +[filament:DeltiQ - PETG - Generic] inherits = *DeltiQ common* bed_temperature = 90 bridge_fan_speed = 50 @@ -322,34 +402,7 @@ min_print_speed = 10 slowdown_below_layer_time = 5 temperature = 245 -[filament:DeltiQ PLA] -inherits = *DeltiQ common* -bed_temperature = 55 -bridge_fan_speed = 100 -cooling = 1 -fan_always_on = 1 -fan_below_layer_time = 100 -filament_vendor = Fillamentum -filament_cost = 767 -filament_density = 1.24 -filament_max_volumetric_speed = 8 -filament_retract_before_travel = 2 -filament_retract_before_wipe = 90% -filament_retract_layer_change = 1 -filament_retract_length = 4.0 -filament_retract_lift = 0.2 -filament_retract_speed = 30 -filament_type = PLA -filament_wipe = 1 -first_layer_bed_temperature = 55 -first_layer_temperature = 220 -max_fan_speed = 100 -min_fan_speed = 100 -min_print_speed = 10 -slowdown_below_layer_time = 4 -temperature = 215 - -[filament:DeltiQ ABS] +[filament:DeltiQ - ABS - Generic] inherits = *DeltiQ common* bed_temperature = 100 bridge_fan_speed = 25 @@ -376,14 +429,24 @@ min_print_speed = 10 slowdown_below_layer_time = 15 temperature = 255 -[filament:DeltiQ ASA] -inherits = DeltiQ ABS +[filament:DeltiQ - PLA - ExtraFill (Fillamentum)] +inherits = DeltiQ - PLA - Generic + +[filament:DeltiQ - PETG (Devil Design)] +inherits = DeltiQ - PETG - Generic + +[filament:DeltiQ - ABS - ExtraFill (Fillamentum)] +inherits = DeltiQ - ABS - Generic + +[filament:DeltiQ - ASA - ExtraFill (Fillamentum)] +inherits = DeltiQ - ABS - Generic filament_density = 1.07 filament_type = ASA +filament_vendor = Fillamentum first_layer_temperature = 265 temperature = 265 -[filament:DeltiQ CPE] +[filament:DeltiQ - CPE - HG100 (Fillamentum)] inherits = *DeltiQ common* bed_temperature = 90 bridge_fan_speed = 50 @@ -411,41 +474,155 @@ min_print_speed = 10 slowdown_below_layer_time = 5 temperature = 260 +[filament:DeltiQ - PLA - ExtraFill (Fillamentum) @0.8 nozzle] +inherits = DeltiQ - PLA - ExtraFill (Fillamentum) +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and !(printer_notes=~/.*FLEXPRINT.*/) and nozzle_diameter[0]==0.8 +disable_fan_first_layers = 1 +filament_max_volumetric_speed = 40 +first_layer_temperature = 230 +slowdown_below_layer_time = 8 +temperature = 230 +filament_retract_layer_change = 0 +filament_retract_length = 4.1 +filament_retract_speed = 45 +filament_deretract_speed = 25 -[filament:DeltiQ FlexPrint 2 PET] -inherits = DeltiQ PET -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ +[filament:DeltiQ - PETG (Devil Design) @0.8 nozzle] +inherits = DeltiQ - PETG (Devil Design) +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and !(printer_notes=~/.*FLEXPRINT.*/) and nozzle_diameter[0]==0.8 +filament_max_volumetric_speed = 40 +first_layer_temperature = 240 +slowdown_below_layer_time = 8 +temperature = 240 +filament_retract_layer_change = 0 +filament_retract_length = 4.3 +filament_retract_speed = 45 +filament_deretract_speed = 25 +filament_retract_before_wipe = 80% +filament_wipe = 1 + + +# DeltiQ FlexPrint Filaments # + +[filament:DeltiQ FP - PLA - Generic] +inherits = DeltiQ - PLA - Generic +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ and nozzle_diameter[0]==0.4 +filament_retract_length = 0.7 +filament_retract_speed = 28 + +[filament:DeltiQ FP - PETG - Generic] +inherits = DeltiQ - PETG - Generic +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ and nozzle_diameter[0]==0.4 +filament_retract_length = 0.7 +filament_retract_speed = 25 + +[filament:DeltiQ FP - ABS - Generic] +inherits = DeltiQ - ABS - Generic +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ and nozzle_diameter[0]==0.4 +filament_retract_length = 0.7 +filament_retract_speed = 25 + +[filament:DeltiQ FP - FLEX - Generic] +inherits = *DeltiQ common* +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ and nozzle_diameter[0]==0.4 +bed_temperature = 50 +bridge_fan_speed = 80 +cooling = 1 +disable_fan_first_layers = 1 +extrusion_multiplier = 1.07 +fan_always_on = 1 +fan_below_layer_time = 20 +filament_vendor = Generic +filament_cost = 1870 +filament_density = 1.22 +filament_deretract_speed = nil +filament_max_volumetric_speed = 0.7 +filament_retract_before_travel = 2 +filament_retract_before_wipe = 70% +filament_retract_layer_change = 0 +filament_retract_length = 2.5 +filament_retract_lift = 0.2 +filament_retract_restart_extra = nil +filament_retract_speed = 20 +filament_type = FLEX +filament_wipe = 1 +first_layer_bed_temperature = 50 +first_layer_temperature = 240 +max_fan_speed = 50 +min_fan_speed = 30 +min_print_speed = 5 +slowdown_below_layer_time = 4 +temperature = 240 + +[filament:DeltiQ FP - PLA - ExtraFill (Fillamentum)] +inherits = DeltiQ FP - PLA - Generic + +[filament:DeltiQ FP - PETG (Devil Design)] +inherits = DeltiQ FP - PETG - Generic + +[filament:DeltiQ FP - ABS - ExtraFill (Fillamentum)] +inherits = DeltiQ FP - ABS - Generic + +[filament:DeltiQ FP - ASA - ExtraFill (Fillamentum)] +inherits = DeltiQ - ASA - ExtraFill (Fillamentum) +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ and nozzle_diameter[0]==0.4 +filament_retract_length = 0.7 +filament_retract_speed = 25 + +[filament:DeltiQ FP - CPE - HG100 (Fillamentum)] +inherits = DeltiQ - CPE - HG100 (Fillamentum) +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ and nozzle_diameter[0]==0.4 +filament_retract_length = 0.7 +filament_retract_speed = 25 +filament_deretract_speed = 0 +filament_retract_before_wipe = 0% + + +# DeltiQ FlexPrint 2 Filaments # + +[filament:DeltiQ FP2 - PLA - Generic] +inherits = DeltiQ FP - PLA - Generic +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ and nozzle_diameter[0]==0.4 +filament_retract_length = 1.2 +filament_retract_speed = 28 + +[filament:DeltiQ FP2 - PETG - Generic] +inherits = DeltiQ FP - PETG - Generic +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ and nozzle_diameter[0]==0.4 filament_retract_length = 1.4 filament_retract_speed = 35 filament_retract_before_wipe = 0% -[filament:DeltiQ FlexPrint 2 PLA] -inherits = DeltiQ PLA -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ -filament_retract_length = 1.2 -filament_retract_speed = 28 - -[filament:DeltiQ FlexPrint 2 ABS] -inherits = DeltiQ ABS -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ +[filament:DeltiQ FP2 - ABS - Generic] +inherits = DeltiQ FP - ABS - Generic +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ and nozzle_diameter[0]==0.4 filament_retract_length = 0.8 filament_retract_speed = 25 -[filament:DeltiQ FlexPrint 2 ASA] -inherits = DeltiQ ASA -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ +[filament:DeltiQ FP2 - PLA - ExtraFill (Fillamentum)] +inherits = DeltiQ FP2 - PLA - Generic -[filament:DeltiQ FlexPrint 2 CPE] -inherits = DeltiQ CPE -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ +[filament:DeltiQ FP2 - PETG (Devil Design)] +inherits = DeltiQ FP2 - PETG - Generic + +[filament:DeltiQ FP2 - ABS - ExtraFill (Fillamentum)] +inherits = DeltiQ FP2 - ABS - Generic + +[filament:DeltiQ FP2 - ASA - ExtraFill (Fillamentum)] +inherits = DeltiQ FP - ASA - ExtraFill (Fillamentum) +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ and nozzle_diameter[0]==0.4 + +[filament:DeltiQ FP2 - CPE - HG100 (Fillamentum)] +inherits = DeltiQ FP - CPE - HG100 (Fillamentum) +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ and nozzle_diameter[0]==0.4 filament_retract_length = 0.8 filament_retract_speed = 35 filament_deretract_speed = 0 filament_retract_before_wipe = 0% -[filament:DeltiQ FlexPrint 2 FLEX] -inherits = *DeltiQ common* -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ +[filament:DeltiQ FP2 - FLEX - Generic] +inherits = DeltiQ FP - FLEX - Generic +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ and nozzle_diameter[0]==0.4 bed_temperature = 50 bridge_fan_speed = 80 cooling = 1 @@ -456,12 +633,12 @@ fan_below_layer_time = 20 filament_vendor = Fillamentum filament_cost = 1870 filament_density = 1.22 -filament_deretract_speed = 0 +filament_deretract_speed = nil filament_max_volumetric_speed = 2.9 -filament_retract_before_travel = 1 +filament_retract_before_travel = 2 filament_retract_before_wipe = 70% filament_retract_layer_change = 0 -filament_retract_length = 1.6 +filament_retract_length = 2.5 filament_retract_lift = 0.2 filament_retract_restart_extra = nil filament_retract_speed = 20 @@ -475,72 +652,52 @@ min_print_speed = 5 slowdown_below_layer_time = 4 temperature = 225 -[filament:DeltiQ FlexPrint 2 FLEX Smartfil] -inherits = *DeltiQ common* -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT2.*/ +[filament:DeltiQ FP2 - TPU 92A - FlexFill (Fillamentum)] +inherits = DeltiQ FP2 - FLEX - Generic bed_temperature = 50 bridge_fan_speed = 80 -cooling = 0 -disable_fan_first_layers = 3 -extrusion_multiplier = 1.07 +cooling = 1 +disable_fan_first_layers = 1 +extrusion_multiplier = 1.10 fan_always_on = 1 fan_below_layer_time = 20 -filament_vendor = Smart Materials 3D -filament_cost = 1209 -filament_density = 1.21 -filament_deretract_speed = 0 -filament_max_volumetric_speed = 2.5 -filament_retract_before_travel = 1 -filament_retract_before_wipe = nil +filament_vendor = Fillamentum +filament_cost = 1870 +filament_density = 1.22 +filament_deretract_speed = nil +filament_max_volumetric_speed = 2.9 +filament_retract_before_travel = 2 +filament_retract_before_wipe = 70% filament_retract_layer_change = 0 -filament_retract_length = 1.2 +filament_retract_length = 2.5 filament_retract_lift = 0.2 filament_retract_restart_extra = nil filament_retract_speed = 20 -filament_type = FLEX -filament_wipe = 0 +filament_type = TPU92A +filament_wipe = 1 first_layer_bed_temperature = 50 -first_layer_temperature = 240 -max_fan_speed = 50 +first_layer_temperature = 230 +max_fan_speed = 70 min_fan_speed = 50 -min_print_speed = 10 +min_print_speed = 5 slowdown_below_layer_time = 4 -temperature = 240 +temperature = 230 +[filament:DeltiQ FP2 - TPU 98A - FlexFill (Fillamentum)] +inherits = DeltiQ FP2 - TPU 92A - FlexFill (Fillamentum) +extrusion_multiplier = 1.10 +filament_cost = 1870 +filament_density = 1.23 +filament_deretract_speed = nil +filament_max_volumetric_speed = 2.9 +filament_retract_before_wipe = 70% +filament_retract_length = 2.5 +filament_retract_speed = 20 +filament_type = TPU98A -[filament:DeltiQ FlexPrint PET] -inherits = DeltiQ PET -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ -filament_retract_length = 0.7 -filament_retract_speed = 25 + +# DeltiQ Printer # -[filament:DeltiQ FlexPrint PLA] -inherits = DeltiQ PLA -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ -filament_retract_length = 0.7 -filament_retract_speed = 28 - -[filament:DeltiQ FlexPrint ABS] -inherits = DeltiQ ABS -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ -filament_retract_length = 0.7 -filament_retract_speed = 25 - -[filament:DeltiQ FlexPrint ASA] -inherits = DeltiQ ASA -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ -filament_retract_length = 0.7 -filament_retract_speed = 25 - -[filament:DeltiQ FlexPrint CPE] -inherits = DeltiQ CPE -compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_TRILAB.*/ and printer_notes=~/.*PRINTER_FAMILY_DQ.*/ and printer_notes=~/.*FLEXPRINT1.*/ -filament_retract_length = 0.7 -filament_retract_speed = 25 -filament_deretract_speed = 0 -filament_retract_before_wipe = 0% - - [printer:*DeltiQ*] inherits = bed_shape = 124.315x13.0661,122.268x25.989,118.882x38.6271,114.193x50.8421,108.253x62.5,101.127x73.4732,92.8931x83.6413,83.6413x92.8931,73.4732x101.127,62.5x108.253,50.8421x114.193,38.6271x118.882,25.989x122.268,13.0661x124.315,3.54096e-014x125,-13.0661x124.315,-25.989x122.268,-38.6271x118.882,-50.8421x114.193,-62.5x108.253,-73.4732x101.127,-83.6413x92.8931,-92.8931x83.6413,-101.127x73.4732,-108.253x62.5,-114.193x50.8421,-118.882x38.6271,-122.268x25.989,-124.315x13.0661,-125x7.08192e-014,-124.315x-13.0661,-122.268x-25.989,-118.882x-38.6271,-114.193x-50.8421,-108.253x-62.5,-101.127x-73.4732,-92.8931x-83.6413,-83.6413x-92.8931,-73.4732x-101.127,-62.5x-108.253,-50.8421x-114.193,-38.6271x-118.882,-25.989x-122.268,-13.0661x-124.315,-2.29621e-014x-125,13.0661x-124.315,25.989x-122.268,38.6271x-118.882,50.8421x-114.193,62.5x-108.253,73.4732x-101.127,83.6413x-92.8931,92.8931x-83.6413,101.127x-73.4732,108.253x-62.5,114.193x-50.8421,118.882x-38.6271,122.268x-25.989,124.315x-13.0661,125x-1.41638e-013 @@ -597,68 +754,6 @@ variable_layer_height = 0 wipe = 1 z_offset = 0 -[printer:*DeltiQ 2*] -inherits = *DeltiQ* -before_layer_gcode = ; BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n -end_gcode = ; END_GCODE\n\nM140 S0 ; Turn off bed\n\nG28 ; Home\n\nM104 S0 ; Turn off extruder\nM107 ; Turn off fan\n\nG90 ; Absolute positioning\nM220 S100 ; Feedmultiply back to 100percent\n\nM84 S5; Disable motors -gcode_flavor = reprap -layer_gcode = ; AFTER_LAYER_CHANGE\n;[layer_z] -pause_print_gcode = M0 -start_gcode = ; START_GCODE\n\nM220 S100 ; Set feedmultiply back to 100percent\n\nT0 ; Select Titan extruder\n\nG90 ; Absolute positioning\nM83; Relative Extruder\n\nM190 S[first_layer_bed_temperature] ; Set and wait - bed temperature\nM104 S[first_layer_temperature]\n\nG28 ; Home all axes\nG32 ; Probe Z and calculate Z plane\n\nG29 ; Mesh bed probe\n\nG1009 ; Go ARC to purge end\n\nG92 E0 ; Zero extruder -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_TRILAB\nPRINTER_FAMILY_DQ\nPRINTER_MODEL_DQ2 - -[printer:*DeltiQ 2 FlexPrint*] -inherits = *DeltiQ 2* -start_gcode = ; START_GCODE\n\nM220 S100 ; Set feedmultiply back to 100percent\n\nT1 ; Select FlexPrint extruder\n\nG90 ; Absolute positioning\nM83; Relative Extruder\n\nM190 S[first_layer_bed_temperature] ; Set and wait - bed temperature\nM104 S[first_layer_temperature]\n\nG28 ; Home all axes\nG32 ; Probe Z and calculate Z plane\n\nG29 ; Mesh bed probe\n\nG1009 ; Go ARC to purge end\n\nG92 E0 ; Zero extruder -default_print_profile = DeltiQ 0.20mm FLEX -default_filament_profile = "DeltiQ FlexPrint 2 FLEX" -retract_length = 0.7 -retract_speed = 25 -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_TRILAB\nPRINTER_FAMILY_DQ\nPRINTER_MODEL_DQ2+FP\nFLEXPRINT1 - -[printer:*DeltiQ 2 FlexPrint 2*] -inherits = *DeltiQ 2 FlexPrint* -default_filament_profile = "DeltiQ FlexPrint 2 FLEX" -retract_length = 0.8 -retract_speed = 25 -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_TRILAB\nPRINTER_FAMILY_DQ\nPRINTER_MODEL_DQ2+FP\nFLEXPRINT2 - -[printer:DeltiQ 2] -inherits = *DeltiQ 2* -printer_model = DQ2 -printer_variant = 0.4 -max_print_height = 320 - -[printer:DeltiQ 2 Plus] -inherits = *DeltiQ 2* -printer_model = DQ2P -printer_variant = 0.4 -max_print_height = 500 - -[printer:DeltiQ 2 + FlexPrint 2] -inherits = *DeltiQ 2 FlexPrint 2* -printer_model = DQ2+FP2 -printer_variant = 0.4 -max_print_height = 320 - -[printer:DeltiQ 2 Plus + FlexPrint 2] -inherits = *DeltiQ 2 FlexPrint 2* -printer_model = DQ2P+FP2 -printer_variant = 0.4 -max_print_height = 500 - -[printer:DeltiQ 2 + FlexPrint] -inherits = *DeltiQ 2 FlexPrint* -printer_model = DQ2+FP -printer_variant = 0.4 -max_print_height = 320 - -[printer:DeltiQ 2 Plus + FlexPrint] -inherits = *DeltiQ 2 FlexPrint* -printer_model = DQ2P+FP -printer_variant = 0.4 -max_print_height = 500 - [printer:DeltiQ L] inherits = *DeltiQ* printer_model = DQL @@ -686,7 +781,88 @@ max_print_height = 500 retract_length = 4.5 retract_speed = 35 +[printer:*DeltiQ 2*] +inherits = *DeltiQ* +before_layer_gcode = ; BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n +end_gcode = ; END_GCODE\n\nM140 S0 ; Turn off bed\n\nG28 ; Home\n\nM104 S0 ; Turn off extruder\nM107 ; Turn off fan\n\nG90 ; Absolute positioning\nM220 S100 ; Feedmultiply back to 100percent\n\nM84 S5; Disable motors +gcode_flavor = reprap +layer_gcode = ; AFTER_LAYER_CHANGE\n;[layer_z] +pause_print_gcode = M0 +start_gcode = ; START_GCODE\n\nM220 S100 ; Set feedmultiply back to 100percent\n\nT0 ; Select Titan extruder\n\nG90 ; Absolute positioning\nM83; Relative Extruder\n\nM190 S[first_layer_bed_temperature] ; Set and wait - bed temperature\nM104 S[first_layer_temperature]\n\nG28 ; Home all axes\nG32 ; Probe Z and calculate Z plane\n\nG29 ; Mesh bed probe\n\nG1009 ; Go ARC to purge end\n\nG92 E0 ; Zero extruder +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_TRILAB\nPRINTER_FAMILY_DQ\nPRINTER_MODEL_DQ2 + +[printer:DeltiQ 2] +inherits = *DeltiQ 2* +printer_model = DQ2 +printer_variant = 0.4 +max_print_height = 320 + +[printer:DeltiQ 2 - 0.8 nozzle] +inherits = DeltiQ 2 +printer_variant = 0.8 +max_layer_height = 0.4 +min_layer_height = 0.4 +nozzle_diameter = 0.8 +default_filament_profile = "DeltiQ - PLA - ExtraFill (Fillamentum) @0.8 nozzle" +default_print_profile = DeltiQ 0.40mm Normal @0.8 nozzle + +[printer:DeltiQ 2 Plus] +inherits = *DeltiQ 2* +printer_model = DQ2P +printer_variant = 0.4 +max_print_height = 500 + +[printer:DeltiQ 2 Plus - 0.8 nozzle] +inherits = DeltiQ 2 Plus +printer_variant = 0.8 +max_layer_height = 0.4 +min_layer_height = 0.4 +nozzle_diameter = 0.8 +default_filament_profile = "DeltiQ - PLA - ExtraFill (Fillamentum) @0.8 nozzle" +default_print_profile = DeltiQ 0.40mm Normal @0.8 nozzle + +[printer:*DeltiQ 2 FlexPrint*] +inherits = *DeltiQ 2* +start_gcode = ; START_GCODE\n\nM220 S100 ; Set feedmultiply back to 100percent\n\nT1 ; Select FlexPrint extruder\n\nG90 ; Absolute positioning\nM83; Relative Extruder\n\nM190 S[first_layer_bed_temperature] ; Set and wait - bed temperature\nM104 S[first_layer_temperature]\n\nG28 ; Home all axes\nG32 ; Probe Z and calculate Z plane\n\nG29 ; Mesh bed probe\n\nG1009 ; Go ARC to purge end\n\nG92 E0 ; Zero extruder +default_print_profile = DeltiQ 0.20mm FLEX +default_filament_profile = "DeltiQ FP2 - FLEX - Generic" +retract_length = 0.7 +retract_speed = 25 +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_TRILAB\nPRINTER_FAMILY_DQ\nPRINTER_MODEL_DQ2+FP\nFLEXPRINT1 + +[printer:DeltiQ 2 + FlexPrint] +inherits = *DeltiQ 2 FlexPrint* +printer_model = DQ2+FP +printer_variant = 0.4 +max_print_height = 320 + +[printer:DeltiQ 2 Plus + FlexPrint] +inherits = *DeltiQ 2 FlexPrint* +printer_model = DQ2P+FP +printer_variant = 0.4 +max_print_height = 500 + +[printer:*DeltiQ 2 FlexPrint 2*] +inherits = *DeltiQ 2 FlexPrint* +default_filament_profile = "DeltiQ FP2 - FLEX - Generic" +retract_length = 0.8 +retract_speed = 25 +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_TRILAB\nPRINTER_FAMILY_DQ\nPRINTER_MODEL_DQ2+FP\nFLEXPRINT2 + +[printer:DeltiQ 2 + FlexPrint 2] +inherits = *DeltiQ 2 FlexPrint 2* +printer_model = DQ2+FP2 +printer_variant = 0.4 +max_print_height = 320 + +[printer:DeltiQ 2 Plus + FlexPrint 2] +inherits = *DeltiQ 2 FlexPrint 2* +printer_model = DQ2P+FP2 +printer_variant = 0.4 +max_print_height = 500 + + [presets] print = DeltiQ 0.20mm Normal printer = DeltiQ 2 -filament = DeltiQ PLA \ No newline at end of file +filament = DeltiQ - PLA - Generic \ No newline at end of file From b2951cb43e739f03e5baf7a03b0eb064b779ad07 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Tue, 24 Nov 2020 10:03:15 +0100 Subject: [PATCH 093/138] Added "Remember my choice" checkbox to the message dialog after first clicking on parameter label in Settings tabs --- src/slic3r/GUI/OG_CustomCtrl.cpp | 64 +++++++++++++++++++++++++++----- src/slic3r/GUI/OG_CustomCtrl.hpp | 14 +++++++ src/slic3r/GUI/Preferences.cpp | 6 ++- 3 files changed, 74 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index 7da66a565..8469b1a4b 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -674,21 +674,67 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBi bool OG_CustomCtrl::CtrlLine::launch_browser() const { + if (!is_focused || og_line.label_path.IsEmpty()) + return false; + + bool launch = true; + if (get_app_config()->get("suppress_hyperlinks").empty()) { - wxString preferences_item = _L("Suppress to open hyperlink in browser"); - wxString msg = - _L("PrusaSlicer will remember your action.") + "\n" + - _L("You will not be asked about it again on label hovering.") + "\n\n" + - format_wxstr(_L("Visit \"Preferences\" and check \"%1%\"\nto changes your choise."), preferences_item) + "\n\n" + - _L("Should we suppress to use hyperlinks in PrusaSlicer?"); + RememberChoiceDialog dialog(nullptr, _L("Should we open this hyperlink in your default browser?"), _L("PrusaSlicer: Open hyperlink")); + int answer = dialog.ShowModal(); + launch = answer == wxID_YES; - wxMessageDialog dialog(nullptr, msg, _L("PrusaSlicer: Don't ask me again"), wxYES | wxNO | wxICON_INFORMATION); - get_app_config()->set("suppress_hyperlinks", dialog.ShowModal() == wxID_YES ? "1" : "0"); + get_app_config()->set("suppress_hyperlinks", dialog.remember_choice() ? (answer == wxID_NO ? "1" : "0") : ""); } + if (launch) + launch = get_app_config()->get("suppress_hyperlinks") != "1"; - return get_app_config()->get("suppress_hyperlinks") == "0" && is_focused && !og_line.label_path.IsEmpty() && wxLaunchDefaultBrowser(get_url(og_line.label_path)); + return launch && wxLaunchDefaultBrowser(get_url(og_line.label_path)); } +RememberChoiceDialog::RememberChoiceDialog(wxWindow* parent, const wxString& msg_text, const wxString& caption) + : wxDialog(parent, wxID_ANY, caption, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxICON_INFORMATION) +{ + this->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); + this->SetEscapeId(wxID_CLOSE); + + wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL); + + m_remember_choice = new wxCheckBox(this, wxID_ANY, _L("Remember my choice")); + m_remember_choice->SetValue(false); + m_remember_choice->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent& evt) + { + if (!evt.IsChecked()) + return; + 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 label hovering.") + "\n\n" + + format_wxstr(_L("Visit \"Preferences\" and check \"%1%\"\nto changes your choice."), preferences_item); + + wxMessageDialog dialog(nullptr, msg, _L("PrusaSlicer: Don't ask me again"), wxOK | wxCANCEL | wxICON_INFORMATION); + if (dialog.ShowModal() == wxID_CANCEL) + m_remember_choice->SetValue(false); + }); + + + // Add dialog's buttons + wxStdDialogButtonSizer* btns = this->CreateStdDialogButtonSizer(wxYES | wxNO); + wxButton* btnYES = static_cast<wxButton*>(this->FindWindowById(wxID_YES, this)); + wxButton* btnNO = static_cast<wxButton*>(this->FindWindowById(wxID_NO, this)); + btnYES->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { this->EndModal(wxID_YES); }); + btnNO->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { this->EndModal(wxID_NO); }); + + topSizer->Add(new wxStaticText(this, wxID_ANY, msg_text), 0, wxEXPAND | wxALL, 10); + topSizer->Add(m_remember_choice, 0, wxEXPAND | wxALL, 10); + topSizer->Add(btns, 0, wxEXPAND | wxALL, 10); + + this->SetSizer(topSizer); + topSizer->SetSizeHints(this); + + this->CenterOnScreen(); +} + } // GUI } // Slic3r diff --git a/src/slic3r/GUI/OG_CustomCtrl.hpp b/src/slic3r/GUI/OG_CustomCtrl.hpp index 722b393f5..798443f39 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.hpp +++ b/src/slic3r/GUI/OG_CustomCtrl.hpp @@ -95,6 +95,20 @@ public: }; +//----------------------------------------------- +// RememberChoiceDialog +//----------------------------------------------- + +class RememberChoiceDialog : public wxDialog +{ + wxCheckBox* m_remember_choice; +public: + RememberChoiceDialog(wxWindow* parent, const wxString& msg_text, const wxString& caption); + ~RememberChoiceDialog() {} + + bool remember_choice() const { return m_remember_choice->GetValue(); } +}; + }} #endif /* slic3r_OG_CustomCtrl_hpp_ */ diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 4abe4b84c..95e86ff7e 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -204,7 +204,11 @@ void PreferencesDialog::build() m_optgroup_gui = std::make_shared<ConfigOptionsGroup>(this, _L("GUI")); m_optgroup_gui->label_width = 40; m_optgroup_gui->m_on_change = [this](t_config_option_key opt_key, boost::any value) { - m_values[opt_key] = boost::any_cast<bool>(value) ? "1" : "0"; + if (opt_key == "suppress_hyperlinks") + m_values[opt_key] = boost::any_cast<bool>(value) ? "1" : ""; + else + m_values[opt_key] = boost::any_cast<bool>(value) ? "1" : "0"; + if (opt_key == "use_custom_toolbar_size") { m_icon_size_sizer->ShowItems(boost::any_cast<bool>(value)); this->layout(); From 709404ce3e773f40cf380710b81a1cef10d72b44 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Tue, 24 Nov 2020 11:09:05 +0100 Subject: [PATCH 094/138] Fixed crash in texture compression --- src/slic3r/GUI/GLTexture.cpp | 141 ++++++++++++----------------------- 1 file changed, 49 insertions(+), 92 deletions(-) diff --git a/src/slic3r/GUI/GLTexture.cpp b/src/slic3r/GUI/GLTexture.cpp index 6a4d0f9b6..b97d8ae48 100644 --- a/src/slic3r/GUI/GLTexture.cpp +++ b/src/slic3r/GUI/GLTexture.cpp @@ -75,11 +75,9 @@ void GLTexture::Compressor::send_compressed_data_to_gpu() glsafe(::glBindTexture(GL_TEXTURE_2D, m_texture.m_id)); // Querying the atomic m_num_levels_compressed value synchronizes processor caches, so that the dat of m_levels modified by the worker thread are accessible to the calling thread. int num_compressed = (int)m_num_levels_compressed; - for (int i = 0; i < num_compressed; ++ i) - { + for (int i = 0; i < num_compressed; ++ i) { Level& level = m_levels[i]; - if (! level.sent_to_gpu && ! level.compressed_data.empty()) - { + if (! level.sent_to_gpu && ! level.compressed_data.empty()) { glsafe(::glCompressedTexSubImage2D(GL_TEXTURE_2D, (GLint)i, 0, 0, (GLsizei)level.w, (GLsizei)level.h, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)level.compressed_data.size(), (const GLvoid*)level.compressed_data.data())); glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, i)); glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (i > 0) ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR)); @@ -102,14 +100,13 @@ void GLTexture::Compressor::compress() assert(m_num_levels_compressed == 0); assert(m_abort_compressing == false); - for (Level& level : m_levels) - { + for (Level& level : m_levels) { if (m_abort_compressing) break; // stb_dxt library, despite claiming that the needed size of the destination buffer is equal to (source buffer size)/4, - // crashes if doing so, requiring a minimum of 16 bytes and up to a third of the source buffer size, so we set the destination buffer initial size to be half the source buffer size - level.compressed_data = std::vector<unsigned char>(std::max((unsigned int)16, level.w * level.h * 2), 0); + // crashes if doing so, requiring a minimum of 64 bytes and up to a third of the source buffer size, so we set the destination buffer initial size to be half the source buffer size + level.compressed_data = std::vector<unsigned char>(std::max((unsigned int)64, (unsigned int)level.src_data.size() / 2), 0); int compressed_size = 0; rygCompress(level.compressed_data.data(), level.src_data.data(), level.w, level.h, 1, compressed_size); level.compressed_data.resize(compressed_size); @@ -166,7 +163,7 @@ bool GLTexture::load_from_svg_files_as_sprites_array(const std::vector<std::stri { reset(); - if (filenames.empty() || states.empty() || (sprite_size_px == 0)) + if (filenames.empty() || states.empty() || sprite_size_px == 0) return false; // every tile needs to have a 1px border around it to avoid artifacts when linear sampling on its edges @@ -180,8 +177,7 @@ bool GLTexture::load_from_svg_files_as_sprites_array(const std::vector<std::stri int sprite_stride = sprite_size_px_ex * 4; int sprite_bytes = sprite_n_pixels * 4; - if (n_pixels <= 0) - { + if (n_pixels <= 0) { reset(); return false; } @@ -193,15 +189,13 @@ bool GLTexture::load_from_svg_files_as_sprites_array(const std::vector<std::stri std::vector<unsigned char> output_data(sprite_bytes, 0); NSVGrasterizer* rast = nsvgCreateRasterizer(); - if (rast == nullptr) - { + if (rast == nullptr) { reset(); return false; } int sprite_id = -1; - for (const std::string& filename : filenames) - { + for (const std::string& filename : filenames) { ++sprite_id; if (!boost::filesystem::exists(filename)) @@ -221,8 +215,7 @@ bool GLTexture::load_from_svg_files_as_sprites_array(const std::vector<std::stri // makes white only copy of the sprite ::memcpy((void*)sprite_white_only_data.data(), (const void*)sprite_data.data(), sprite_bytes); - for (int i = 0; i < sprite_n_pixels; ++i) - { + for (int i = 0; i < sprite_n_pixels; ++i) { int offset = i * 4; if (sprite_white_only_data.data()[offset] != 0) ::memset((void*)&sprite_white_only_data.data()[offset], 255, 3); @@ -230,8 +223,7 @@ bool GLTexture::load_from_svg_files_as_sprites_array(const std::vector<std::stri // makes gray only copy of the sprite ::memcpy((void*)sprite_gray_only_data.data(), (const void*)sprite_data.data(), sprite_bytes); - for (int i = 0; i < sprite_n_pixels; ++i) - { + for (int i = 0; i < sprite_n_pixels; ++i) { int offset = i * 4; if (sprite_gray_only_data.data()[offset] != 0) ::memset((void*)&sprite_gray_only_data.data()[offset], 128, 3); @@ -239,30 +231,26 @@ bool GLTexture::load_from_svg_files_as_sprites_array(const std::vector<std::stri int sprite_offset_px = sprite_id * (int)sprite_size_px_ex * m_width; int state_id = -1; - for (const std::pair<int, bool>& state : states) - { + for (const std::pair<int, bool>& state : states) { ++state_id; // select the sprite variant std::vector<unsigned char>* src = nullptr; switch (state.first) { - case 1: { src = &sprite_white_only_data; break; } - case 2: { src = &sprite_gray_only_data; break; } + case 1: { src = &sprite_white_only_data; break; } + case 2: { src = &sprite_gray_only_data; break; } default: { src = &sprite_data; break; } } ::memcpy((void*)output_data.data(), (const void*)src->data(), sprite_bytes); // applies background, if needed - if (state.second) - { + if (state.second) { float inv_255 = 1.0f / 255.0f; // offset by 1 to leave the first pixel empty (both in x and y) - for (unsigned int r = 1; r <= sprite_size_px; ++r) - { + for (unsigned int r = 1; r <= sprite_size_px; ++r) { unsigned int offset_r = r * sprite_size_px_ex; - for (unsigned int c = 1; c <= sprite_size_px; ++c) - { + for (unsigned int c = 1; c <= sprite_size_px; ++c) { unsigned int offset = (offset_r + c) * 4; float alpha = (float)output_data.data()[offset + 3] * inv_255; output_data.data()[offset + 0] = (unsigned char)(output_data.data()[offset + 0] * alpha); @@ -274,8 +262,7 @@ bool GLTexture::load_from_svg_files_as_sprites_array(const std::vector<std::stri } int state_offset_px = sprite_offset_px + state_id * sprite_size_px_ex; - for (int j = 0; j < (int)sprite_size_px_ex; ++j) - { + for (int j = 0; j < (int)sprite_size_px_ex; ++j) { ::memcpy((void*)&data.data()[(state_offset_px + j * m_width) * 4], (const void*)&output_data.data()[j * sprite_stride], sprite_stride); } } @@ -309,11 +296,9 @@ bool GLTexture::load_from_svg_files_as_sprites_array(const std::vector<std::stri wxImage output(m_width, m_height); output.InitAlpha(); - for (int h = 0; h < m_height; ++h) - { + for (int h = 0; h < m_height; ++h) { int px_h = h * m_width; - for (int w = 0; w < m_width; ++w) - { + for (int w = 0; w < m_width; ++w) { int offset = (px_h + w) * 4; output.SetRGB(w, h, data.data()[offset + 0], data.data()[offset + 1], data.data()[offset + 2]); output.SetAlpha(w, h, data.data()[offset + 3]); @@ -373,8 +358,7 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo // Load a PNG with an alpha channel. wxImage image; - if (!image.LoadFile(wxString::FromUTF8(filename.c_str()), wxBITMAP_TYPE_PNG)) - { + if (!image.LoadFile(wxString::FromUTF8(filename.c_str()), wxBITMAP_TYPE_PNG)) { reset(); return false; } @@ -384,20 +368,17 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo bool requires_rescale = false; - if (compression_enabled && (compression_type == MultiThreaded)) - { + if (compression_enabled && compression_type == MultiThreaded) { // the stb_dxt compression library seems to like only texture sizes which are a multiple of 4 int width_rem = m_width % 4; int height_rem = m_height % 4; - if (width_rem != 0) - { + if (width_rem != 0) { m_width += (4 - width_rem); requires_rescale = true; } - if (height_rem != 0) - { + if (height_rem != 0) { m_height += (4 - height_rem); requires_rescale = true; } @@ -407,16 +388,14 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo image = image.ResampleBicubic(m_width, m_height); int n_pixels = m_width * m_height; - if (n_pixels <= 0) - { + if (n_pixels <= 0) { reset(); return false; } // Get RGB & alpha raw data from wxImage, pack them into an array. unsigned char* img_rgb = image.GetData(); - if (img_rgb == nullptr) - { + if (img_rgb == nullptr) { reset(); return false; } @@ -424,8 +403,7 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo unsigned char* img_alpha = image.GetAlpha(); std::vector<unsigned char> data(n_pixels * 4, 0); - for (int i = 0; i < n_pixels; ++i) - { + for (int i = 0; i < n_pixels; ++i) { int data_id = i * 4; int img_id = i * 3; data[data_id + 0] = img_rgb[img_id + 0]; @@ -439,19 +417,16 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo glsafe(::glGenTextures(1, &m_id)); glsafe(::glBindTexture(GL_TEXTURE_2D, m_id)); - if (apply_anisotropy) - { + if (apply_anisotropy) { GLfloat max_anisotropy = OpenGLManager::get_gl_info().get_max_anisotropy(); if (max_anisotropy > 1.0f) glsafe(::glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, max_anisotropy)); } - if (compression_enabled) - { + if (compression_enabled) { if (compression_type == SingleThreaded) glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data())); - else - { + else { // initializes the texture on GPU glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0)); // and send the uncompressed data to the compressor @@ -461,14 +436,12 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo else glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data())); - if (use_mipmaps) - { + if (use_mipmaps) { // we manually generate mipmaps because glGenerateMipmap() function is not reliable on all graphics cards int lod_w = m_width; int lod_h = m_height; GLint level = 0; - while ((lod_w > 1) || (lod_h > 1)) - { + while (lod_w > 1 || lod_h > 1) { ++level; lod_w = std::max(lod_w / 2, 1); @@ -482,8 +455,7 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo img_rgb = image.GetData(); img_alpha = image.GetAlpha(); - for (int i = 0; i < n_pixels; ++i) - { + for (int i = 0; i < n_pixels; ++i) { int data_id = i * 4; int img_id = i * 3; data[data_id + 0] = img_rgb[img_id + 0]; @@ -492,12 +464,10 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo data[data_id + 3] = (img_alpha != nullptr) ? img_alpha[i] : 255; } - if (compression_enabled) - { + if (compression_enabled) { if (compression_type == SingleThreaded) glsafe(::glTexImage2D(GL_TEXTURE_2D, level, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data())); - else - { + else { // initializes the texture on GPU glsafe(::glTexImage2D(GL_TEXTURE_2D, level, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)lod_w, (GLsizei)lod_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0)); // and send the uncompressed data to the compressor @@ -508,14 +478,12 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo glsafe(::glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA, (GLsizei)lod_w, (GLsizei)lod_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data())); } - if (!compression_enabled) - { + if (!compression_enabled) { glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, level)); glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR)); } } - else - { + else { glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0)); } @@ -526,7 +494,7 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo m_source = filename; - if (compression_enabled && (compression_type == MultiThreaded)) + if (compression_enabled && compression_type == MultiThreaded) // start asynchronous compression m_compressor.start_compressing(); @@ -538,8 +506,7 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo bool compression_enabled = compress && GLEW_EXT_texture_compression_s3tc; NSVGimage* image = nsvgParseFromFile(filename.c_str(), "px", 96.0f); - if (image == nullptr) - { + if (image == nullptr) { reset(); return false; } @@ -549,8 +516,7 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo m_width = (int)(scale * image->width); m_height = (int)(scale * image->height); - if (compression_enabled) - { + if (compression_enabled) { // the stb_dxt compression library seems to like only texture sizes which are a multiple of 4 int width_rem = m_width % 4; int height_rem = m_height % 4; @@ -564,16 +530,14 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo int n_pixels = m_width * m_height; - if (n_pixels <= 0) - { + if (n_pixels <= 0) { reset(); nsvgDelete(image); return false; } NSVGrasterizer* rast = nsvgCreateRasterizer(); - if (rast == nullptr) - { + if (rast == nullptr) { nsvgDelete(image); reset(); return false; @@ -588,15 +552,13 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo glsafe(::glGenTextures(1, &m_id)); glsafe(::glBindTexture(GL_TEXTURE_2D, m_id)); - if (apply_anisotropy) - { + if (apply_anisotropy) { GLfloat max_anisotropy = OpenGLManager::get_gl_info().get_max_anisotropy(); if (max_anisotropy > 1.0f) glsafe(::glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, max_anisotropy)); } - if (compression_enabled) - { + if (compression_enabled) { // initializes the texture on GPU glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0)); // and send the uncompressed data to the compressor @@ -605,14 +567,12 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo else glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data())); - if (use_mipmaps) - { + if (use_mipmaps) { // we manually generate mipmaps because glGenerateMipmap() function is not reliable on all graphics cards int lod_w = m_width; int lod_h = m_height; GLint level = 0; - while ((lod_w > 1) || (lod_h > 1)) - { + while (lod_w > 1 || lod_h > 1) { ++level; lod_w = std::max(lod_w / 2, 1); @@ -622,8 +582,7 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo data.resize(lod_w * lod_h * 4); nsvgRasterize(rast, image, 0, 0, scale, data.data(), lod_w, lod_h, lod_w * 4); - if (compression_enabled) - { + if (compression_enabled) { // initializes the texture on GPU glsafe(::glTexImage2D(GL_TEXTURE_2D, level, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)lod_w, (GLsizei)lod_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0)); // and send the uncompressed data to the compressor @@ -633,14 +592,12 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo glsafe(::glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA, (GLsizei)lod_w, (GLsizei)lod_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data())); } - if (!compression_enabled) - { + if (!compression_enabled) { glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, level)); glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR)); } } - else - { + else { glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0)); } From b2ab5db69b845b1630eb98316b1c508080cfbe81 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Tue, 24 Nov 2020 11:53:52 +0100 Subject: [PATCH 095/138] ENABLE_GCODE_VIEWER set as default in: DoubleSlider hpp/cpp --- src/slic3r/GUI/DoubleSlider.cpp | 156 +------------------------------- src/slic3r/GUI/DoubleSlider.hpp | 13 --- 2 files changed, 4 insertions(+), 165 deletions(-) diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index 4759ec64d..8d28acf8b 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -18,9 +18,6 @@ #include <wx/bmpcbox.h> #include <wx/statline.h> #include <wx/dcclient.h> -#if !ENABLE_GCODE_VIEWER -#include <wx/numformatter.h> -#endif // !ENABLE_GCODE_VIEWER #include <wx/colordlg.h> #include <cmath> @@ -74,13 +71,8 @@ Control::Control( wxWindow *parent, if (!is_osx) SetDoubleBuffered(true);// SetDoubleBuffered exists on Win and Linux/GTK, but is missing on OSX -#if ENABLE_GCODE_VIEWER m_bmp_thumb_higher = (style == wxSL_HORIZONTAL ? ScalableBitmap(this, "thumb_right") : ScalableBitmap(this, "thumb_up")); m_bmp_thumb_lower = (style == wxSL_HORIZONTAL ? ScalableBitmap(this, "thumb_left") : ScalableBitmap(this, "thumb_down")); -#else - m_bmp_thumb_higher = (style == wxSL_HORIZONTAL ? ScalableBitmap(this, "right_half_circle.png") : ScalableBitmap(this, "thumb_up")); - m_bmp_thumb_lower = (style == wxSL_HORIZONTAL ? ScalableBitmap(this, "left_half_circle.png" ) : ScalableBitmap(this, "thumb_down")); -#endif // ENABLE_GCODE_VIEWER m_thumb_size = m_bmp_thumb_lower.GetBmpSize(); m_bmp_add_tick_on = ScalableBitmap(this, "colorchange_add"); @@ -314,22 +306,14 @@ double Control::get_double_value(const SelectedSlider& selection) Info Control::GetTicksValues() const { Info custom_gcode_per_print_z; -#if ENABLE_GCODE_VIEWER std::vector<CustomGCode::Item>& values = custom_gcode_per_print_z.gcodes; -#else - std::vector<Item>& values = custom_gcode_per_print_z.gcodes; -#endif // ENABLE_GCODE_VIEWER const int val_size = m_values.size(); if (!m_values.empty()) for (const TickCode& tick : m_ticks.ticks) { if (tick.tick > val_size) break; -#if ENABLE_GCODE_VIEWER values.emplace_back(CustomGCode::Item{ m_values[tick.tick], tick.type, tick.extruder, tick.color, tick.extra }); -#else - values.emplace_back(Item{m_values[tick.tick], tick.type, tick.extruder, tick.color, tick.extra}); -#endif // ENABLE_GCODE_VIEWER } if (m_force_mode_apply) @@ -348,11 +332,7 @@ void Control::SetTicksValues(const Info& custom_gcode_per_print_z) const bool was_empty = m_ticks.empty(); m_ticks.ticks.clear(); -#if ENABLE_GCODE_VIEWER const std::vector<CustomGCode::Item>& heights = custom_gcode_per_print_z.gcodes; -#else - const std::vector<Item>& heights = custom_gcode_per_print_z.gcodes; -#endif // ENABLE_GCODE_VIEWER for (auto h : heights) { auto it = std::lower_bound(m_values.begin(), m_values.end(), h.print_z - epsilon()); @@ -442,15 +422,11 @@ void Control::draw_focus_rect() void Control::render() { -#if ENABLE_GCODE_VIEWER #ifdef _WIN32 SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); #else SetBackgroundColour(GetParent()->GetBackgroundColour()); #endif // _WIN32 -#else - SetBackgroundColour(GetParent()->GetBackgroundColour()); -#endif // ENABLE_GCODE_VIEWER draw_focus_rect(); wxPaintDC dc(this); @@ -494,10 +470,8 @@ void Control::draw_action_icon(wxDC& dc, const wxPoint pt_beg, const wxPoint pt_ { const int tick = m_selection == ssLower ? m_lower_value : m_higher_value; -#if ENABLE_GCODE_VIEWER if (!m_enable_action_icon) return; -#endif // ENABLE_GCODE_VIEWER // suppress add tick on first layer if (tick == 0) @@ -651,7 +625,6 @@ wxString Control::get_label(int tick, LabelType label_type/* = ltHeightWithLayer if (value >= m_values.size()) return "ErrVal"; -#if ENABLE_GCODE_VIEWER if (m_draw_mode == dmSequentialGCodeView) return wxString::Format("%d", static_cast<unsigned int>(m_values[value])); else { @@ -668,15 +641,7 @@ wxString Control::get_label(int tick, LabelType label_type/* = ltHeightWithLayer if (label_type == ltHeightWithLayer) return format_wxstr("%1%\n(%2%)", str, m_values.empty() ? value : value + 1); } -#else - const wxString str = m_values.empty() ? - wxNumberFormatter::ToString(m_label_koef * value, 2, wxNumberFormatter::Style_None) : - wxNumberFormatter::ToString(m_values[value], 2, wxNumberFormatter::Style_None); - if (label_type == ltHeight) - return str; - if (label_type == ltHeightWithLayer) - return format_wxstr("%1%\n(%2%)", str, m_values.empty() ? value : value + 1); -#endif // ENABLE_GCODE_VIEWER + return wxEmptyString; } @@ -722,32 +687,8 @@ void Control::draw_thumb_text(wxDC& dc, const wxPoint& pos, const SelectedSlider void Control::draw_thumb_item(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection) { -#if ENABLE_GCODE_VIEWER wxCoord x_draw = pos.x - int(0.5 * m_thumb_size.x); wxCoord y_draw = pos.y - int(0.5 * m_thumb_size.y); -#else - wxCoord x_draw, y_draw; - if (selection == ssLower) { - if (is_horizontal()) { - x_draw = pos.x - m_thumb_size.x; - y_draw = pos.y - int(0.5*m_thumb_size.y); - } - else { - x_draw = pos.x - int(0.5*m_thumb_size.x); - y_draw = pos.y - int(0.5*m_thumb_size.y); - } - } - else { - if (is_horizontal()) { - x_draw = pos.x; - y_draw = pos.y - int(0.5*m_thumb_size.y); - } - else { - x_draw = pos.x - int(0.5*m_thumb_size.x); - y_draw = pos.y - int(0.5*m_thumb_size.y); - } - } -#endif // ENABLE_GCODE_VIEWER dc.DrawBitmap(selection == ssLower ? m_bmp_thumb_lower.bmp() : m_bmp_thumb_higher.bmp(), x_draw, y_draw); // Update thumb rect @@ -913,15 +854,11 @@ void Control::draw_colored_band(wxDC& dc) // don't color a band for MultiExtruder mode if (m_ticks.empty() || m_mode == MultiExtruder) { -#if ENABLE_GCODE_VIEWER #ifdef _WIN32 draw_band(dc, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW), main_band); #else draw_band(dc, GetParent()->GetBackgroundColour(), main_band); #endif // _WIN32 -#else - draw_band(dc, GetParent()->GetBackgroundColour(), main_band); -#endif // ENABLE_GCODE_VIEWER return; } @@ -1065,10 +1002,8 @@ void Control::draw_ruler(wxDC& dc) void Control::draw_one_layer_icon(wxDC& dc) { -#if ENABLE_GCODE_VIEWER if (m_draw_mode == dmSequentialGCodeView) return; -#endif // ENABLE_GCODE_VIEWER const wxBitmap& icon = m_is_one_layer ? m_focus == fiOneLayerIcon ? m_bmp_one_layer_lock_off.bmp() : m_bmp_one_layer_lock_on.bmp() : @@ -1107,26 +1042,21 @@ void Control::draw_revert_icon(wxDC& dc) void Control::draw_cog_icon(wxDC& dc) { -#if ENABLE_GCODE_VIEWER if (m_draw_mode == dmSequentialGCodeView) return; -#endif // ENABLE_GCODE_VIEWER + int width, height; get_size(&width, &height); wxCoord x_draw, y_draw; -#if ENABLE_GCODE_VIEWER if (m_draw_mode == dmSequentialGCodeView) { is_horizontal() ? x_draw = width - 2 : x_draw = 0.5 * width - 0.5 * m_cog_icon_dim; is_horizontal() ? y_draw = 0.5 * height - 0.5 * m_cog_icon_dim : y_draw = height - 2; } else { -#endif // ENABLE_GCODE_VIEWER is_horizontal() ? x_draw = width - 2 : x_draw = width - m_cog_icon_dim - 2; is_horizontal() ? y_draw = height - m_cog_icon_dim - 2 : y_draw = height - 2; -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER dc.DrawBitmap(m_bmp_cog.bmp(), x_draw, y_draw); @@ -1273,19 +1203,15 @@ wxString Control::get_tooltip(int tick/*=-1*/) if (m_focus == fiRevertIcon) return _L("Discard all custom changes"); if (m_focus == fiCogIcon) -#if ENABLE_GCODE_VIEWER { if (m_draw_mode == dmSequentialGCodeView) return _L("Jump to move") + " (Shift + G)"; else -#endif // ENABLE_GCODE_VIEWER return m_mode == MultiAsSingle ? GUI::from_u8((boost::format(_u8L("Jump to height %s Set ruler mode\n or " "Set extruder sequence for the entire print")) % " (Shift + G)\n").str()) : GUI::from_u8((boost::format(_u8L("Jump to height %s or Set ruler mode")) % " (Shift + G)\n").str()); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER if (m_focus == fiColorBand) return m_mode != SingleExtruder ? "" : _L("Edit current color - Right click the colored slider segment"); @@ -1619,17 +1545,12 @@ void Control::OnWheel(wxMouseEvent& event) if (m_selection == ssLower && !is_lower_thumb_editable()) m_selection = ssUndef; -#if ENABLE_GCODE_VIEWER move_current_thumb((m_draw_mode == dmSequentialGCodeView) ? event.GetWheelRotation() < 0 : event.GetWheelRotation() > 0); -#else - move_current_thumb(event.GetWheelRotation() > 0); -#endif // ENABLE_GCODE_VIEWER } void Control::OnKeyDown(wxKeyEvent &event) { const int key = event.GetKeyCode(); -#if ENABLE_GCODE_VIEWER if (m_draw_mode != dmSequentialGCodeView && key == WXK_NUMPAD_ADD) { // OnChar() is called immediately after OnKeyDown(), which can cause call of add_tick() twice. // To avoid this case we should suppress second add_tick() call. @@ -1644,26 +1565,8 @@ void Control::OnKeyDown(wxKeyEvent &event) } else if (m_draw_mode != dmSequentialGCodeView && event.GetKeyCode() == WXK_SHIFT) UseDefaultColors(false); -#else - if (key == WXK_NUMPAD_ADD) { - // OnChar() is called immediately after OnKeyDown(), which can cause call of add_tick() twice. - // To avoid this case we should suppress second add_tick() call. - m_ticks.suppress_plus(true); - add_current_tick(true); - } - else if (key == 390 || key == WXK_DELETE || key == WXK_BACK) { - // OnChar() is called immediately after OnKeyDown(), which can cause call of delete_tick() twice. - // To avoid this case we should suppress second delete_tick() call. - m_ticks.suppress_minus(true); - delete_current_tick(); - } - else if (event.GetKeyCode() == WXK_SHIFT) - UseDefaultColors(false); -#endif // ENABLE_GCODE_VIEWER else if (is_horizontal()) { -#if ENABLE_GCODE_VIEWER if (m_is_focused) { -#endif // ENABLE_GCODE_VIEWER if (key == WXK_LEFT || key == WXK_RIGHT) move_current_thumb(key == WXK_LEFT); else if (key == WXK_UP || key == WXK_DOWN) { @@ -1673,14 +1576,10 @@ void Control::OnKeyDown(wxKeyEvent &event) m_selection = ssLower; Refresh(); } -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER } else { -#if ENABLE_GCODE_VIEWER if (m_is_focused) { -#endif // ENABLE_GCODE_VIEWER if (key == WXK_LEFT || key == WXK_RIGHT) { if (key == WXK_LEFT) m_selection = ssHigher; @@ -1690,9 +1589,7 @@ void Control::OnKeyDown(wxKeyEvent &event) } else if (key == WXK_UP || key == WXK_DOWN) move_current_thumb(key == WXK_UP); -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER } event.Skip(); // !Needed to have EVT_CHAR generated as well @@ -1713,10 +1610,7 @@ void Control::OnKeyUp(wxKeyEvent &event) void Control::OnChar(wxKeyEvent& event) { const int key = event.GetKeyCode(); -#if ENABLE_GCODE_VIEWER - if (m_draw_mode != dmSequentialGCodeView) - { -#endif // ENABLE_GCODE_VIEWER + if (m_draw_mode != dmSequentialGCodeView) { if (key == '+' && !m_ticks.suppressed_plus()) { add_current_tick(true); m_ticks.suppress_plus(false); @@ -1725,15 +1619,9 @@ void Control::OnChar(wxKeyEvent& event) delete_current_tick(); m_ticks.suppress_minus(false); } -#if ENABLE_GCODE_VIEWER } -#endif // ENABLE_GCODE_VIEWER if (key == 'G') -#if ENABLE_GCODE_VIEWER jump_to_value(); -#else - jump_to_print_z(); -#endif // ENABLE_GCODE_VIEWER } void Control::OnRightDown(wxMouseEvent& event) @@ -1920,11 +1808,7 @@ void Control::show_cog_icon_context_menu() wxMenu menu; append_menu_item(&menu, wxID_ANY, _L("Jump to height") + " (Shift+G)", "", -#if ENABLE_GCODE_VIEWER - [this](wxCommandEvent&) { jump_to_value(); }, "", & menu); -#else - [this](wxCommandEvent&) { jump_to_print_z(); }, "", &menu); -#endif // ENABLE_GCODE_VIEWER + [this](wxCommandEvent&) { jump_to_value(); }, "", & menu); wxMenu* ruler_mode_menu = new wxMenu(); if (ruler_mode_menu) { @@ -2061,21 +1945,11 @@ static std::string get_pause_print_msg(const std::string& msg_in, double height) return into_u8(dlg.GetValue()); } -#if ENABLE_GCODE_VIEWER static double get_value_to_jump(double active_value, double min_z, double max_z, DrawMode mode) -#else -static double get_print_z_to_jump(double active_print_z, double min_z, double max_z) -#endif // ENABLE_GCODE_VIEWER { -#if ENABLE_GCODE_VIEWER wxString msg_text = (mode == dmSequentialGCodeView) ? _L("Enter the move you want to jump to") + ":" : _L("Enter the height you want to jump to") + ":"; wxString msg_header = (mode == dmSequentialGCodeView) ? _L("Jump to move") : _L("Jump to height"); wxString msg_in = GUI::double_to_string(active_value); -#else - wxString msg_text = _L("Enter the height you want to jump to") + ":"; - wxString msg_header = _L("Jump to height"); - wxString msg_in = GUI::double_to_string(active_print_z); -#endif // ENABLE_GCODE_VIEWER // get custom gcode wxTextEntryDialog dlg(nullptr, msg_text, msg_header, msg_in, wxTextEntryDialogStyle); @@ -2277,7 +2151,6 @@ void Control::edit_extruder_sequence() post_ticks_changed_event(ToolChange); } -#if ENABLE_GCODE_VIEWER void Control::jump_to_value() { double value = get_value_to_jump(m_values[m_selection == ssLower ? m_lower_value : m_higher_value], @@ -2293,23 +2166,6 @@ void Control::jump_to_value() else SetHigherValue(tick_value); } -#else -void Control::jump_to_print_z() -{ - double print_z = get_print_z_to_jump(m_values[m_selection == ssLower ? m_lower_value : m_higher_value], - m_values[m_min_value], m_values[m_max_value]); - if (print_z < 0) - return; - - auto it = std::lower_bound(m_values.begin(), m_values.end(), print_z - epsilon()); - int tick_value = it - m_values.begin(); - - if (m_selection == ssLower) - SetLowerValue(tick_value); - else - SetHigherValue(tick_value); -} -#endif // ENABLE_GCODE_VIEWER void Control::post_ticks_changed_event(Type type /*= Custom*/) { @@ -2378,11 +2234,7 @@ bool Control::check_ticks_changed_event(Type type) std::string TickCodeInfo::get_color_for_tick(TickCode tick, Type type, const int extruder) { if (mode == SingleExtruder && type == ColorChange && m_use_default_colors) { -#if ENABLE_GCODE_VIEWER const std::vector<std::string>& colors = ColorPrintColors::get(); -#else - const std::vector<std::string>& colors = GCodePreviewData::ColorPrintColors(); -#endif // ENABLE_GCODE_VIEWER if (ticks.empty()) return colors[0]; m_default_color_idx++; diff --git a/src/slic3r/GUI/DoubleSlider.hpp b/src/slic3r/GUI/DoubleSlider.hpp index 57fa5d0f1..3eb905923 100644 --- a/src/slic3r/GUI/DoubleSlider.hpp +++ b/src/slic3r/GUI/DoubleSlider.hpp @@ -4,9 +4,6 @@ #include "libslic3r/CustomGCode.hpp" #include "wxExtensions.hpp" -#if !ENABLE_GCODE_VIEWER -#include <wx/wx.h> -#endif // !ENABLE_GCODE_VIEWER #include <wx/window.h> #include <wx/control.h> #include <wx/dc.h> @@ -79,9 +76,7 @@ enum DrawMode dmRegular, dmSlaPrint, dmSequentialFffPrint, -#if ENABLE_GCODE_VIEWER dmSequentialGCodeView, -#endif // ENABLE_GCODE_VIEWER }; enum LabelType @@ -228,9 +223,7 @@ public: void SetLayersTimes(const std::vector<double>& layers_times); void SetDrawMode(bool is_sla_print, bool is_sequential_print); -#if ENABLE_GCODE_VIEWER void SetDrawMode(DrawMode mode) { m_draw_mode = mode; } -#endif // ENABLE_GCODE_VIEWER void SetManipulationMode(Mode mode) { m_mode = mode; } Mode GetManipulationMode() const { return m_mode; } @@ -270,12 +263,8 @@ public: void discard_all_thicks(); void move_current_thumb_to_pos(wxPoint pos); void edit_extruder_sequence(); -#if ENABLE_GCODE_VIEWER void jump_to_value(); void enable_action_icon(bool enable) { m_enable_action_icon = enable; } -#else - void jump_to_print_z(); -#endif // ENABLE_GCODE_VIEWER void show_add_context_menu(); void show_edit_context_menu(); void show_cog_icon_context_menu(); @@ -371,9 +360,7 @@ private: bool m_is_one_layer = false; bool m_is_focused = false; bool m_force_mode_apply = true; -#if ENABLE_GCODE_VIEWER bool m_enable_action_icon = true; -#endif // ENABLE_GCODE_VIEWER DrawMode m_draw_mode = dmRegular; From 1ce8cddbdabe83e443c0364a8803791838a8e983 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Tue, 24 Nov 2020 12:00:46 +0100 Subject: [PATCH 096/138] Do not show anything in vertical slider if estimated times are missing --- src/slic3r/GUI/DoubleSlider.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index 8d28acf8b..eaf75c254 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -630,7 +630,7 @@ wxString Control::get_label(int tick, LabelType label_type/* = ltHeightWithLayer else { if (label_type == ltEstimatedTime) { if (m_values.size() != m_layers_times.size()) - return "time"; + return wxEmptyString; return short_and_splitted_time(get_time_dhms(m_layers_times[value])); } wxString str = m_values.empty() ? From 44fe3b8a005e5b2aca940aef6ef59d4abb3c6663 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Tue, 24 Nov 2020 13:35:43 +0100 Subject: [PATCH 097/138] Tech ENABLE_DRAG_AND_DROP_FIX -> Apply dialog implemented with 808c43cb4b05b4e61abe07deee934bf63918bd22 also to drag and drop of project files into application executable --- src/libslic3r/Technologies.hpp | 7 + src/slic3r/GUI/GUI_App.cpp | 1 - src/slic3r/GUI/Plater.cpp | 225 +++++++++++++++++++++++++++++++-- src/slic3r/GUI/Plater.hpp | 4 + 4 files changed, 223 insertions(+), 14 deletions(-) diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 66258fe62..42061df71 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -74,4 +74,11 @@ #define ENABLE_SHOW_OPTION_POINT_LAYERS (1 && ENABLE_GCODE_VIEWER && ENABLE_2_3_0_ALPHA4) +//=================== +// 2.3.0.beta1 techs +//=================== +#define ENABLE_2_3_0_BETA1 1 + +#define ENABLE_DRAG_AND_DROP_FIX (1 && ENABLE_2_3_0_BETA1) + #endif // _prusaslicer_technologies_h_ diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 694cd7103..fa913f6b5 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -542,7 +542,6 @@ static void register_win32_device_notification_event() }); wxWindow::MSWRegisterMessageHandler(WM_COPYDATA, [](wxWindow* win, WXUINT /* nMsg */, WXWPARAM wParam, WXLPARAM lParam) { - COPYDATASTRUCT* copy_data_structure = { 0 }; copy_data_structure = (COPYDATASTRUCT*)lParam; if (copy_data_structure->dwData == 1) { diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 763a906f5..5df1e5e17 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1351,17 +1351,20 @@ std::string& Sidebar::get_search_line() class PlaterDropTarget : public wxFileDropTarget { public: - PlaterDropTarget(Plater *plater) : plater(plater) { this->SetDefaultAction(wxDragCopy); } + PlaterDropTarget(Plater* plater) : m_plater(plater) { this->SetDefaultAction(wxDragCopy); } virtual bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &filenames); private: - Plater *plater; + Plater* m_plater; +#if !ENABLE_DRAG_AND_DROP_FIX static const std::regex pattern_drop; static const std::regex pattern_gcode_drop; +#endif // !ENABLE_DRAG_AND_DROP_FIX }; +#if !ENABLE_DRAG_AND_DROP_FIX const std::regex PlaterDropTarget::pattern_drop(".*[.](stl|obj|amf|3mf|prusa)", std::regex::icase); const std::regex PlaterDropTarget::pattern_gcode_drop(".*[.](gcode|g)", std::regex::icase); @@ -1428,16 +1431,22 @@ void ProjectDropDialog::on_dpi_changed(const wxRect& suggested_rect) Fit(); Refresh(); } +#endif // !ENABLE_DRAG_AND_DROP_FIX bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &filenames) { +#if !ENABLE_DRAG_AND_DROP_FIX std::vector<fs::path> paths; +#endif // !ENABLE_DRAG_AND_DROP_FIX #ifdef WIN32 // hides the system icon this->MSWUpdateDragImageOnLeave(); #endif // WIN32 +#if ENABLE_DRAG_AND_DROP_FIX + return (m_plater != nullptr) ? m_plater->load_files(filenames) : false; +#else // gcode viewer section if (wxGetApp().is_gcode_viewer()) { for (const auto& filename : filenames) { @@ -1447,12 +1456,12 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &fi } if (paths.size() > 1) { - wxMessageDialog((wxWindow*)plater, _L("You can open only one .gcode file at a time."), + wxMessageDialog((wxWindow*)m_plater, _L("You can open only one .gcode file at a time."), wxString(SLIC3R_APP_NAME) + " - " + _L("Drag and drop G-code file"), wxCLOSE | wxICON_WARNING | wxCENTRE).ShowModal(); return false; } else if (paths.size() == 1) { - plater->load_gcode(from_path(paths.front())); + m_plater->load_gcode(from_path(paths.front())); return true; } return false; @@ -1477,7 +1486,7 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &fi std::string filename = (*it).filename().string(); if (boost::algorithm::iends_with(filename, ".3mf") || boost::algorithm::iends_with(filename, ".amf")) { LoadType load_type = LoadType::Unknown; - if (!plater->model().objects.empty()) { + if (!m_plater->model().objects.empty()) { if (wxGetApp().app_config->get("show_drop_project_dialog") == "1") { ProjectDropDialog dlg(filename); if (dlg.ShowModal() == wxID_OK) { @@ -1498,20 +1507,20 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &fi switch (load_type) { case LoadType::OpenProject: { - plater->load_project(from_path(*it)); + m_plater->load_project(from_path(*it)); break; } case LoadType::LoadGeometry: { - Plater::TakeSnapshot snapshot(plater, _L("Import Object")); + Plater::TakeSnapshot snapshot(m_plater, _L("Import Object")); std::vector<fs::path> in_paths; in_paths.emplace_back(*it); - plater->load_files(in_paths, true, false); + m_plater->load_files(in_paths, true, false); break; } case LoadType::LoadConfig: { std::vector<fs::path> in_paths; in_paths.emplace_back(*it); - plater->load_files(in_paths, false, true); + m_plater->load_files(in_paths, false, true); break; } } @@ -1537,10 +1546,11 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &fi snapshot_label += wxString::FromUTF8(paths[i].filename().string().c_str()); } } - Plater::TakeSnapshot snapshot(plater, snapshot_label); - plater->load_files(paths); + Plater::TakeSnapshot snapshot(m_plater, snapshot_label); + m_plater->load_files(paths); return true; +#endif // ENABLE_DRAG_AND_DROP_FIX } // State to manage showing after export notifications and device ejecting @@ -2113,11 +2123,22 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) // Initialize the Undo / Redo stack with a first snapshot. this->take_snapshot(_L("New Project")); - this->q->Bind(EVT_LOAD_MODEL_OTHER_INSTANCE, [this](LoadFromOtherInstanceEvent &evt) { +#if ENABLE_DRAG_AND_DROP_FIX + this->q->Bind(EVT_LOAD_MODEL_OTHER_INSTANCE, [this](LoadFromOtherInstanceEvent& evt) { + BOOST_LOG_TRIVIAL(debug) << "received load from other instance event "; + wxArrayString input_files; + for (size_t i = 0; i < evt.data.size(); ++i) { + input_files.push_back(from_u8(evt.data[i].string())); + } + this->q->load_files(input_files); + }); +#else + this->q->Bind(EVT_LOAD_MODEL_OTHER_INSTANCE, [this](LoadFromOtherInstanceEvent &evt) { BOOST_LOG_TRIVIAL(debug) << "received load from other instance event "; this->load_files(evt.data, true, true); }); - this->q->Bind(EVT_INSTANCE_GO_TO_FRONT, [this](InstanceGoToFrontEvent &) { +#endif // ENABLE_DRAG_AND_DROP_FIX + this->q->Bind(EVT_INSTANCE_GO_TO_FRONT, [this](InstanceGoToFrontEvent &) { bring_instance_forward(); }); wxGetApp().other_instance_message_handler()->init(this->q); @@ -4786,6 +4807,184 @@ std::vector<size_t> Plater::load_files(const std::vector<std::string>& input_fil return p->load_files(paths, load_model, load_config, imperial_units); } +#if ENABLE_DRAG_AND_DROP_FIX +enum class LoadType : unsigned char +{ + Unknown, + OpenProject, + LoadGeometry, + LoadConfig +}; + +class ProjectDropDialog : public DPIDialog +{ + wxRadioBox* m_action{ nullptr }; +public: + ProjectDropDialog(const std::string& filename); + + int get_action() const { return m_action->GetSelection() + 1; } + +protected: + void on_dpi_changed(const wxRect& suggested_rect) override; +}; + +ProjectDropDialog::ProjectDropDialog(const std::string& filename) + : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, + from_u8((boost::format(_utf8(L("%s - Drop project file"))) % SLIC3R_APP_NAME).str()), wxDefaultPosition, + wxDefaultSize, wxDEFAULT_DIALOG_STYLE) +{ + SetFont(wxGetApp().normal_font()); + + wxBoxSizer* main_sizer = new wxBoxSizer(wxVERTICAL); + + const wxString choices[] = { _L("Open as project"), + _L("Import geometry only"), + _L("Import config only") }; + + main_sizer->Add(new wxStaticText(this, wxID_ANY, + _L("Select an action to apply to the file") + ": " + from_u8(filename)), 0, wxEXPAND | wxALL, 10); + m_action = new wxRadioBox(this, wxID_ANY, _L("Action"), wxDefaultPosition, wxDefaultSize, + WXSIZEOF(choices), choices, 0, wxRA_SPECIFY_ROWS); + int action = std::clamp(std::stoi(wxGetApp().app_config->get("drop_project_action")), + static_cast<int>(LoadType::OpenProject), static_cast<int>(LoadType::LoadConfig)) - 1; + m_action->SetSelection(action); + main_sizer->Add(m_action, 1, wxEXPAND | wxRIGHT | wxLEFT, 10); + + wxBoxSizer* bottom_sizer = new wxBoxSizer(wxHORIZONTAL); + wxCheckBox* check = new wxCheckBox(this, wxID_ANY, _L("Don't show again")); + check->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent& evt) { + wxGetApp().app_config->set("show_drop_project_dialog", evt.IsChecked() ? "0" : "1"); + }); + + bottom_sizer->Add(check, 0, wxEXPAND | wxRIGHT, 5); + bottom_sizer->Add(CreateStdDialogButtonSizer(wxOK | wxCANCEL), 0, wxEXPAND | wxLEFT, 5); + main_sizer->Add(bottom_sizer, 0, wxEXPAND | wxALL, 10); + + SetSizer(main_sizer); + main_sizer->SetSizeHints(this); +} + +void ProjectDropDialog::on_dpi_changed(const wxRect& suggested_rect) +{ + const int em = em_unit(); + SetMinSize(wxSize(65 * em, 30 * em)); + Fit(); + Refresh(); +} + +bool Plater::load_files(const wxArrayString& filenames) +{ + const std::regex pattern_drop(".*[.](stl|obj|amf|3mf|prusa)", std::regex::icase); + const std::regex pattern_gcode_drop(".*[.](gcode|g)", std::regex::icase); + + std::vector<fs::path> paths; + + // gcode viewer section + if (wxGetApp().is_gcode_viewer()) { + for (const auto& filename : filenames) { + fs::path path(into_path(filename)); + if (std::regex_match(path.string(), pattern_gcode_drop)) + paths.push_back(std::move(path)); + } + + if (paths.size() > 1) { + wxMessageDialog((wxWindow*)this, _L("You can open only one .gcode file at a time."), + wxString(SLIC3R_APP_NAME) + " - " + _L("Drag and drop G-code file"), wxCLOSE | wxICON_WARNING | wxCENTRE).ShowModal(); + return false; + } + else if (paths.size() == 1) { + load_gcode(from_path(paths.front())); + return true; + } + return false; + } + + // editor section + for (const auto& filename : filenames) { + fs::path path(into_path(filename)); + if (std::regex_match(path.string(), pattern_drop)) + paths.push_back(std::move(path)); + else if (std::regex_match(path.string(), pattern_gcode_drop)) + start_new_gcodeviewer(&filename); + else + return false; + } + if (paths.empty()) + // Likely all paths processed were gcodes, for which a G-code viewer instance has hopefully been started. + return false; + + // searches for project files + for (std::vector<fs::path>::const_reverse_iterator it = paths.rbegin(); it != paths.rend(); ++it) { + std::string filename = (*it).filename().string(); + if (boost::algorithm::iends_with(filename, ".3mf") || boost::algorithm::iends_with(filename, ".amf")) { + LoadType load_type = LoadType::Unknown; + if (!model().objects.empty()) { + if (wxGetApp().app_config->get("show_drop_project_dialog") == "1") { + ProjectDropDialog dlg(filename); + if (dlg.ShowModal() == wxID_OK) { + int choice = dlg.get_action(); + load_type = static_cast<LoadType>(choice); + wxGetApp().app_config->set("drop_project_action", std::to_string(choice)); + } + } + else + load_type = static_cast<LoadType>(std::clamp(std::stoi(wxGetApp().app_config->get("drop_project_action")), + static_cast<int>(LoadType::OpenProject), static_cast<int>(LoadType::LoadConfig))); + } + else + load_type = LoadType::OpenProject; + + if (load_type == LoadType::Unknown) + return false; + + switch (load_type) { + case LoadType::OpenProject: { + load_project(from_path(*it)); + break; + } + case LoadType::LoadGeometry: { + Plater::TakeSnapshot snapshot(this, _L("Import Object")); + std::vector<fs::path> in_paths; + in_paths.emplace_back(*it); + load_files(in_paths, true, false); + break; + } + case LoadType::LoadConfig: { + std::vector<fs::path> in_paths; + in_paths.emplace_back(*it); + load_files(in_paths, false, true); + break; + } + } + + return true; + } + } + + // other files + wxString snapshot_label; + assert(!paths.empty()); + if (paths.size() == 1) { + snapshot_label = _L("Load File"); + snapshot_label += ": "; + snapshot_label += wxString::FromUTF8(paths.front().filename().string().c_str()); + } + else { + snapshot_label = _L("Load Files"); + snapshot_label += ": "; + snapshot_label += wxString::FromUTF8(paths.front().filename().string().c_str()); + for (size_t i = 1; i < paths.size(); ++i) { + snapshot_label += ", "; + snapshot_label += wxString::FromUTF8(paths[i].filename().string().c_str()); + } + } + Plater::TakeSnapshot snapshot(this, snapshot_label); + load_files(paths); + + return true; +} +#endif // ENABLE_DRAG_AND_DROP_FIX + void Plater::update() { p->update(); } void Plater::stop_jobs() { p->m_ui_jobs.stop_all(); } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 0c1d48bc3..971f9c9c1 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -149,6 +149,10 @@ public: std::vector<size_t> load_files(const std::vector<boost::filesystem::path>& input_files, bool load_model = true, bool load_config = true, bool imperial_units = false); // To be called when providing a list of files to the GUI slic3r on command line. std::vector<size_t> load_files(const std::vector<std::string>& input_files, bool load_model = true, bool load_config = true, bool imperial_units = false); +#if ENABLE_DRAG_AND_DROP_FIX + // to be called on drag and drop + bool load_files(const wxArrayString& filenames); +#endif // ENABLE_DRAG_AND_DROP_FIX void update(); void stop_jobs(); From 30693e29e45ddd7028743aed700263e3fbf58ee5 Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Tue, 24 Nov 2020 14:41:36 +0100 Subject: [PATCH 098/138] Stop bed filling if enough instances are generated --- src/libslic3r/Arrange.cpp | 8 +++++--- src/libslic3r/Arrange.hpp | 3 ++- src/slic3r/GUI/Jobs/ArrangeJob.cpp | 4 ++-- src/slic3r/GUI/Jobs/FillBedJob.cpp | 8 ++++++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index e4a5c7b42..1036844d7 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -309,7 +309,7 @@ protected: public: AutoArranger(const TBin & bin, const ArrangeParams ¶ms, - std::function<void(unsigned)> progressind, + std::function<void(unsigned, unsigned /*bins*/)> progressind, std::function<bool(void)> stopcond) : m_pck(bin, params.min_obj_distance) , m_bin(bin) @@ -348,7 +348,9 @@ public: m_pconf.object_function = get_objfn(); - if (progressind) m_pck.progressIndicator(progressind); + if (progressind) m_pck.progressIndicator([this, &progressind](unsigned rem) { + progressind(rem, m_pck.lastResult().size() - 1); + }); if (stopcond) m_pck.stopCondition(stopcond); m_pck.configure(m_pconf); @@ -462,7 +464,7 @@ void _arrange( std::vector<Item> & excludes, const BinT & bin, const ArrangeParams ¶ms, - std::function<void(unsigned)> progressfn, + std::function<void(unsigned, unsigned)> progressfn, std::function<bool()> stopfn) { // Integer ceiling the min distance from the bed perimeters diff --git a/src/libslic3r/Arrange.hpp b/src/libslic3r/Arrange.hpp index 65c3984d5..ef992f9a4 100644 --- a/src/libslic3r/Arrange.hpp +++ b/src/libslic3r/Arrange.hpp @@ -83,7 +83,8 @@ struct ArrangeParams { /// Progress indicator callback called when an object gets packed. /// The unsigned argument is the number of items remaining to pack. - std::function<void(unsigned)> progressind; + /// Second is the current bed idx being filled. + std::function<void(unsigned, unsigned /*bed_idx*/)> progressind; /// A predicate returning true if abort is needed. std::function<bool(void)> stopcondition; diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index 7a8c21365..7af0b4703 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -158,14 +158,14 @@ void ArrangeJob::process() params.stopcondition = [this]() { return was_canceled(); }; try { - params.progressind = [this, count](unsigned st) { + params.progressind = [this, count](unsigned st, unsigned) { st += m_unprintable.size(); if (st > 0) update_status(int(count - st), arrangestr); }; arrangement::arrange(m_selected, m_unselected, bedpts, params); - params.progressind = [this, count](unsigned st) { + params.progressind = [this, count](unsigned st, unsigned) { if (st > 0) update_status(int(count - st), arrangestr); }; diff --git a/src/slic3r/GUI/Jobs/FillBedJob.cpp b/src/slic3r/GUI/Jobs/FillBedJob.cpp index 060528006..9c959ff16 100644 --- a/src/slic3r/GUI/Jobs/FillBedJob.cpp +++ b/src/slic3r/GUI/Jobs/FillBedJob.cpp @@ -90,9 +90,13 @@ void FillBedJob::process() params.min_obj_distance = scaled(settings.distance); params.allow_rotations = settings.enable_rotation; - params.stopcondition = [this]() { return was_canceled(); }; + unsigned curr_bed = 0; + params.stopcondition = [this, &curr_bed]() { + return was_canceled() || curr_bed > 0; + }; - params.progressind = [this](unsigned st) { + params.progressind = [this, &curr_bed](unsigned st, unsigned bed) { + curr_bed = bed; if (st > 0) update_status(int(m_status_range - st), _(L("Filling bed"))); }; From aa64902cf95216fb621c70caf6ad56e07c133872 Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Tue, 24 Nov 2020 14:42:15 +0100 Subject: [PATCH 099/138] Increase arrange accuracy due to errors with large number of objects --- src/libslic3r/Arrange.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Arrange.hpp b/src/libslic3r/Arrange.hpp index ef992f9a4..69511e7ec 100644 --- a/src/libslic3r/Arrange.hpp +++ b/src/libslic3r/Arrange.hpp @@ -74,7 +74,7 @@ struct ArrangeParams { /// The accuracy of optimization. /// Goes from 0.0 to 1.0 and scales performance as well - float accuracy = 0.65f; + float accuracy = 1.f; /// Allow parallel execution. bool parallel = true; From 250bd689f25fd35ef18bf61c9c597290035e6963 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Tue, 24 Nov 2020 15:04:47 +0100 Subject: [PATCH 100/138] Fix for #5231. Suppress scrolling for the PresetComboBoxes when they aren't dropped. --- src/slic3r/GUI/PresetComboBoxes.cpp | 15 +++++++++++++++ src/slic3r/GUI/PresetComboBoxes.hpp | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index 5acf71fef..78559b937 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -103,6 +103,8 @@ PresetComboBox::PresetComboBox(wxWindow* parent, Preset::Type preset_type, const // parameters for an icon's drawing fill_width_height(); + Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent& evt) { m_suppress_change = false; }); + Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent& evt) { m_suppress_change = true ; }); Bind(wxEVT_COMBOBOX, [this](wxCommandEvent& evt) { // see https://github.com/prusa3d/PrusaSlicer/issues/3889 @@ -147,6 +149,15 @@ bool PresetComboBox::set_printer_technology(PrinterTechnology pt) return false; } +bool PresetComboBox::check_event_for_suppress_change(wxCommandEvent& evt) +{ + if (m_suppress_change) { + evt.StopPropagation(); + SetSelection(m_last_selected); + } + return m_suppress_change; +} + void PresetComboBox::invalidate_selection() { m_last_selected = INT_MAX; // this value means that no one item is selected @@ -534,6 +545,8 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset PresetComboBox(parent, preset_type, wxSize(15 * wxGetApp().em_unit(), -1)) { Bind(wxEVT_COMBOBOX, [this](wxCommandEvent &evt) { + if (check_event_for_suppress_change(evt)) + return; auto selected_item = evt.GetSelection(); auto marker = reinterpret_cast<Marker>(this->GetClientData(selected_item)); @@ -871,6 +884,8 @@ TabPresetComboBox::TabPresetComboBox(wxWindow* parent, Preset::Type preset_type) PresetComboBox(parent, preset_type, wxSize(35 * wxGetApp().em_unit(), -1)) { Bind(wxEVT_COMBOBOX, [this](wxCommandEvent& evt) { + if (check_event_for_suppress_change(evt)) + return; // see https://github.com/prusa3d/PrusaSlicer/issues/3889 // Under OSX: in case of use of a same names written in different case (like "ENDER" and "Ender") // m_presets_choice->GetSelection() will return first item, because search in PopupListCtrl is case-insensitive. diff --git a/src/slic3r/GUI/PresetComboBoxes.hpp b/src/slic3r/GUI/PresetComboBoxes.hpp index 2967ff263..0bd4f036f 100644 --- a/src/slic3r/GUI/PresetComboBoxes.hpp +++ b/src/slic3r/GUI/PresetComboBoxes.hpp @@ -86,6 +86,7 @@ protected: int m_last_selected; int m_em_unit; + bool m_suppress_change { true }; // parameters for an icon's drawing int icon_height; @@ -98,6 +99,7 @@ protected: PrinterTechnology printer_technology {ptAny}; + bool check_event_for_suppress_change(wxCommandEvent& evt); void invalidate_selection(); void validate_selection(bool predicate = false); void update_selection(); From 10c41290fd3760958904170a3f76d2684ddcc90a Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Tue, 24 Nov 2020 15:12:18 +0100 Subject: [PATCH 101/138] DoubleSlider: Fixed ruler for the short objects --- src/slic3r/GUI/DoubleSlider.cpp | 135 +++++++++++++++++--------------- 1 file changed, 73 insertions(+), 62 deletions(-) diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index eaf75c254..f4838e7b8 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -569,7 +569,7 @@ void Control::draw_tick_on_mouse_position(wxDC& dc) if (m_extra_style & wxSL_VALUE_LABEL) { wxColour old_clr = dc.GetTextForeground(); - dc.SetTextForeground(LIGHT_GREY_PEN.GetColour()); + dc.SetTextForeground(GREY_PEN.GetColour()); draw_tick_text(dc, pos, tick, ltEstimatedTime, false); dc.SetTextForeground(old_clr); } @@ -893,6 +893,11 @@ void Control::Ruler::update(wxWindow* win, const std::vector<double>& values, do int DPI = GUI::get_dpi_for_window(win); int pixels_per_sm = lround((double)(DPI) * 5.0/25.4); + if (lround(scroll_step) > pixels_per_sm) { + long_step = -1.0; + return; + } + int pow = -2; int step = 0; auto end_it = count == 1 ? values.end() : values.begin() + lround(values.size() / count); @@ -907,15 +912,15 @@ void Control::Ruler::update(wxWindow* win, const std::vector<double>& values, do break; int tick = val_it - values.begin(); - if (lround(tick * scroll_step) > pixels_per_sm) { - step = istep; + // find next tick with istep + val *= 2; + val_it = std::lower_bound(values.begin(), end_it, val - epsilon()); + // count of short ticks between ticks + int short_ticks_cnt = val_it == values.end() ? tick : val_it - values.begin() - tick; - // find next tick with istep - val *= 2; - val_it = std::lower_bound(values.begin(), end_it, val - epsilon()); - // count of short ticks between ticks - int short_ticks_cnt = val_it == values.end() ? tick : val_it - values.begin() - tick; - // there couldn't be more then 10 short ticks between thicks + if (lround(short_ticks_cnt * scroll_step) > pixels_per_sm) { + step = istep; + // there couldn't be more then 10 short ticks between ticks short_step = 0.1 * short_ticks_cnt; break; } @@ -931,71 +936,77 @@ void Control::Ruler::update(wxWindow* win, const std::vector<double>& values, do void Control::draw_ruler(wxDC& dc) { m_ruler.update(this->GetParent(), m_values, get_scroll_step()); - if (!m_ruler.is_ok()) - return; int height, width; get_size(&width, &height); - const wxCoord mid = is_horizontal() ? 0.5 * height : 0.5 * width; + const wxCoord mid = is_horizontal() ? 0.5 * height : 0.5 * width; - auto draw_short_ticks = [this, mid](wxDC& dc, double& current_tick, int max_tick) { - while (current_tick < max_tick) { - wxCoord pos = get_position_from_value(lround(current_tick)); - draw_ticks_pair(dc, pos, mid, 2); - current_tick += m_ruler.short_step; - if (current_tick > m_max_value) - break; - } - }; - - dc.SetPen(LIGHT_GREY_PEN); + dc.SetPen(GREY_PEN); wxColour old_clr = dc.GetTextForeground(); - dc.SetTextForeground(LIGHT_GREY_PEN.GetColour()); + dc.SetTextForeground(GREY_PEN.GetColour()); - double short_tick; - int tick = 0; - double value = 0.0; - int sequence = 0; - - while (tick <= m_max_value) { - value += m_ruler.long_step; - if (value > m_values.back() && sequence < m_ruler.count) { - value = m_ruler.long_step; - for (tick; tick < m_values.size(); tick++) - if (m_values[tick] < value) - break; - // short ticks from the last tick to the end of current sequence - draw_short_ticks(dc, short_tick, tick); - sequence++; + if (m_ruler.long_step < 0) + for (int tick = 1; tick < m_values.size(); tick++) { + wxCoord pos = get_position_from_value(tick); + draw_ticks_pair(dc, pos, mid, 5); + draw_tick_text(dc, wxPoint(mid, pos), tick); } - short_tick = tick; + else { + auto draw_short_ticks = [this, mid](wxDC& dc, double& current_tick, int max_tick) { + while (current_tick < max_tick) { + wxCoord pos = get_position_from_value(lround(current_tick)); + draw_ticks_pair(dc, pos, mid, 2); + current_tick += m_ruler.short_step; + if (current_tick > m_max_value) + break; + } + }; - for (tick; tick < m_values.size(); tick++) { - if (m_values[tick] == value) - break; - if (m_values[tick] > value) { - if (tick > 0) - tick--; + double short_tick; + int tick = 0; + double value = 0.0; + int sequence = 0; + + while (tick <= m_max_value) { + value += m_ruler.long_step; + if (value > m_values.back() && sequence < m_ruler.count) { + value = m_ruler.long_step; + for (tick; tick < m_values.size(); tick++) + if (m_values[tick] < value) + break; + // short ticks from the last tick to the end of current sequence + draw_short_ticks(dc, short_tick, tick); + sequence++; + } + short_tick = tick; + + for (tick; tick < m_values.size(); tick++) { + if (m_values[tick] == value) + break; + if (m_values[tick] > value) { + if (tick > 0) + tick--; + break; + } + } + if (tick > m_max_value) break; + + wxCoord pos = get_position_from_value(tick); + draw_ticks_pair(dc, pos, mid, 5); + draw_tick_text(dc, wxPoint(mid, pos), tick); + + draw_short_ticks(dc, short_tick, tick); + + if (value == m_values.back() && sequence < m_ruler.count) { + value = 0.0; + sequence++; + tick++; } } - if (tick > m_max_value) - break; - - wxCoord pos = get_position_from_value(tick); - draw_ticks_pair(dc, pos, mid, 5); - draw_tick_text(dc, wxPoint(mid, pos), tick); - - draw_short_ticks(dc, short_tick, tick); - - if (value == m_values.back() && sequence < m_ruler.count) { - value = 0.0; - sequence++; - tick++; - } + // short ticks from the last tick to the end + draw_short_ticks(dc, short_tick, m_max_value); } - // short ticks from the last tick to the end - draw_short_ticks(dc, short_tick, m_max_value); dc.SetTextForeground(old_clr); } From d34beab557bb960a4ba6ef257f4fad09a1d47e91 Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Tue, 24 Nov 2020 15:36:39 +0100 Subject: [PATCH 102/138] Add "slow" hint to rotations for arrangement --- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 2ae852dbd..e55c5fa8c 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3892,7 +3892,7 @@ bool GLCanvas3D::_render_arrange_menu(float pos_x) settings_changed = true; } - if (imgui->checkbox(_(L("Enable rotations")), settings.enable_rotation)) { + if (imgui->checkbox(_(L("Enable rotations (slow)")), settings.enable_rotation)) { m_arrange_settings.enable_rotation = settings.enable_rotation; settings_changed = true; } From 62bdc192d87a9a1835e6ff6ff10b5a0893279c98 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Tue, 24 Nov 2020 16:00:46 +0100 Subject: [PATCH 103/138] Fix of [2.3.0-alpha4] Crash - several models cause crash when slicing #5208 Fixed some issues in internal anchors of the Adaptive Cubic infill. The ugly and dangerous implicit casting operators in Line, MultiPoint, Polyline and Polygon were made explicit. --- src/libslic3r/ClipperUtils.cpp | 8 +- src/libslic3r/ExPolygon.cpp | 21 +---- src/libslic3r/ExtrusionEntity.cpp | 4 +- src/libslic3r/Fill/Fill.cpp | 20 ++-- src/libslic3r/Fill/FillAdaptive.cpp | 128 +++++++++++++++++++------- src/libslic3r/Fill/FillBase.cpp | 83 ++++++++++++----- src/libslic3r/Fill/FillBase.hpp | 5 +- src/libslic3r/Fill/FillConcentric.cpp | 2 +- src/libslic3r/ModelArrange.cpp | 2 +- src/libslic3r/MotionPlanner.cpp | 2 +- src/libslic3r/MultiPoint.hpp | 2 - src/libslic3r/PerimeterGenerator.cpp | 4 +- src/libslic3r/Polygon.hpp | 4 +- src/libslic3r/Polyline.cpp | 2 +- src/libslic3r/Polyline.hpp | 4 +- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Print.cpp | 4 +- src/libslic3r/PrintConfig.cpp | 35 ++++++- src/libslic3r/PrintConfig.hpp | 2 + src/libslic3r/PrintObject.cpp | 1 + src/libslic3r/SLA/Pad.cpp | 2 +- src/libslic3r/SupportMaterial.cpp | 2 +- src/slic3r/GUI/2DBed.cpp | 2 +- src/slic3r/GUI/ConfigManipulation.cpp | 5 +- src/slic3r/GUI/Tab.cpp | 1 + 25 files changed, 237 insertions(+), 110 deletions(-) diff --git a/src/libslic3r/ClipperUtils.cpp b/src/libslic3r/ClipperUtils.cpp index 16d985e9c..59872ad66 100644 --- a/src/libslic3r/ClipperUtils.cpp +++ b/src/libslic3r/ClipperUtils.cpp @@ -1069,7 +1069,7 @@ Polygons variable_offset_inner(const ExPolygon &expoly, const std::vector<std::v ClipperLib::Paths holes; holes.reserve(expoly.holes.size()); for (const Polygon& hole : expoly.holes) - append(holes, fix_after_outer_offset(mittered_offset_path_scaled(hole, deltas[1 + &hole - expoly.holes.data()], miter_limit), ClipperLib::pftNegative, false)); + append(holes, fix_after_outer_offset(mittered_offset_path_scaled(hole.points, deltas[1 + &hole - expoly.holes.data()], miter_limit), ClipperLib::pftNegative, false)); #ifndef NDEBUG for (auto &c : holes) assert(ClipperLib::Area(c) > 0.); @@ -1113,7 +1113,7 @@ for (const std::vector<float>& ds : deltas) ClipperLib::Paths holes; holes.reserve(expoly.holes.size()); for (const Polygon& hole : expoly.holes) - append(holes, fix_after_inner_offset(mittered_offset_path_scaled(hole, deltas[1 + &hole - expoly.holes.data()], miter_limit), ClipperLib::pftPositive, true)); + append(holes, fix_after_inner_offset(mittered_offset_path_scaled(hole.points, deltas[1 + &hole - expoly.holes.data()], miter_limit), ClipperLib::pftPositive, true)); #ifndef NDEBUG for (auto &c : holes) assert(ClipperLib::Area(c) > 0.); @@ -1157,7 +1157,7 @@ for (const std::vector<float>& ds : deltas) ClipperLib::Paths holes; holes.reserve(expoly.holes.size()); for (const Polygon& hole : expoly.holes) - append(holes, fix_after_inner_offset(mittered_offset_path_scaled(hole, deltas[1 + &hole - expoly.holes.data()], miter_limit), ClipperLib::pftPositive, true)); + append(holes, fix_after_inner_offset(mittered_offset_path_scaled(hole.points, deltas[1 + &hole - expoly.holes.data()], miter_limit), ClipperLib::pftPositive, true)); #ifndef NDEBUG for (auto &c : holes) assert(ClipperLib::Area(c) > 0.); @@ -1205,7 +1205,7 @@ ExPolygons variable_offset_inner_ex(const ExPolygon &expoly, const std::vector<s ClipperLib::Paths holes; holes.reserve(expoly.holes.size()); for (const Polygon& hole : expoly.holes) - append(holes, fix_after_outer_offset(mittered_offset_path_scaled(hole, deltas[1 + &hole - expoly.holes.data()], miter_limit), ClipperLib::pftNegative, false)); + append(holes, fix_after_outer_offset(mittered_offset_path_scaled(hole.points, deltas[1 + &hole - expoly.holes.data()], miter_limit), ClipperLib::pftNegative, false)); #ifndef NDEBUG for (auto &c : holes) assert(ClipperLib::Area(c) > 0.); diff --git a/src/libslic3r/ExPolygon.cpp b/src/libslic3r/ExPolygon.cpp index 5bdd5055e..989cfd442 100644 --- a/src/libslic3r/ExPolygon.cpp +++ b/src/libslic3r/ExPolygon.cpp @@ -350,23 +350,10 @@ void ExPolygon::get_trapezoids2(Polygons* polygons) const // find trapezoids by looping from first to next-to-last coordinate for (std::vector<coord_t>::const_iterator x = xx.begin(); x != xx.end()-1; ++x) { coord_t next_x = *(x + 1); - if (*x == next_x) continue; - - // build rectangle - Polygon poly; - poly.points.resize(4); - poly[0](0) = *x; - poly[0](1) = bb.min(1); - poly[1](0) = next_x; - poly[1](1) = bb.min(1); - poly[2](0) = next_x; - poly[2](1) = bb.max(1); - poly[3](0) = *x; - poly[3](1) = bb.max(1); - - // intersect with this expolygon - // append results to return value - polygons_append(*polygons, intersection(poly, to_polygons(*this))); + if (*x != next_x) + // intersect with rectangle + // append results to return value + polygons_append(*polygons, intersection({ { { *x, bb.min.y() }, { next_x, bb.min.y() }, { next_x, bb.max.y() }, { *x, bb.max.y() } } }, to_polygons(*this))); } } diff --git a/src/libslic3r/ExtrusionEntity.cpp b/src/libslic3r/ExtrusionEntity.cpp index 6516713ce..390d107f2 100644 --- a/src/libslic3r/ExtrusionEntity.cpp +++ b/src/libslic3r/ExtrusionEntity.cpp @@ -14,12 +14,12 @@ namespace Slic3r { void ExtrusionPath::intersect_expolygons(const ExPolygonCollection &collection, ExtrusionEntityCollection* retval) const { - this->_inflate_collection(intersection_pl(this->polyline, (Polygons)collection), retval); + this->_inflate_collection(intersection_pl((Polylines)polyline, to_polygons(collection.expolygons)), retval); } void ExtrusionPath::subtract_expolygons(const ExPolygonCollection &collection, ExtrusionEntityCollection* retval) const { - this->_inflate_collection(diff_pl(this->polyline, (Polygons)collection), retval); + this->_inflate_collection(diff_pl((Polylines)this->polyline, to_polygons(collection.expolygons)), retval); } void ExtrusionPath::clip_end(double distance) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 90cd5699f..6dbfa18fa 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -37,7 +37,8 @@ struct SurfaceFillParams bool dont_adjust = false; // Length of the infill anchor along the perimeter line. // 1000mm is roughly the maximum length line that fits into a 32bit coord_t. - float anchor_length = 1000.f; + float anchor_length = 1000.f; + float anchor_length_max = 1000.f; // width, height of extrusion, nozzle diameter, is bridge // For the output, for fill generator. @@ -68,6 +69,7 @@ struct SurfaceFillParams RETURN_COMPARE_NON_EQUAL(density); RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, dont_adjust); RETURN_COMPARE_NON_EQUAL(anchor_length); + RETURN_COMPARE_NON_EQUAL(anchor_length_max); RETURN_COMPARE_NON_EQUAL(flow.width); RETURN_COMPARE_NON_EQUAL(flow.height); RETURN_COMPARE_NON_EQUAL(flow.nozzle_diameter); @@ -85,7 +87,8 @@ struct SurfaceFillParams this->angle == rhs.angle && this->density == rhs.density && this->dont_adjust == rhs.dont_adjust && - this->anchor_length == rhs.anchor_length && + this->anchor_length == rhs.anchor_length && + this->anchor_length_max == rhs.anchor_length_max && this->flow == rhs.flow && this->extrusion_role == rhs.extrusion_role; } @@ -171,8 +174,12 @@ std::vector<SurfaceFill> group_fills(const Layer &layer) // Anchor a sparse infill to inner perimeters with the following anchor length: params.anchor_length = float(region_config.infill_anchor); if (region_config.infill_anchor.percent) - params.anchor_length *= 0.01 * params.spacing; + params.anchor_length = float(params.anchor_length * 0.01 * params.spacing); + params.anchor_length_max = float(region_config.infill_anchor_max); + if (region_config.infill_anchor_max.percent) + params.anchor_length_max = float(params.anchor_length_max * 0.01 * params.spacing); } + params.anchor_length = std::min(params.anchor_length, params.anchor_length_max); auto it_params = set_surface_params.find(params); if (it_params == set_surface_params.end()) @@ -376,9 +383,10 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: // apply half spacing using this flow's own spacing and generate infill FillParams params; - params.density = float(0.01 * surface_fill.params.density); - params.dont_adjust = surface_fill.params.dont_adjust; // false - params.anchor_length = surface_fill.params.anchor_length; + params.density = float(0.01 * surface_fill.params.density); + params.dont_adjust = surface_fill.params.dont_adjust; // false + params.anchor_length = surface_fill.params.anchor_length; + params.anchor_length_max = surface_fill.params.anchor_length_max; for (ExPolygon &expoly : surface_fill.expolygons) { // Spacing is modified by the filler to indicate adjustments. Reset it for each expolygon. diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 3b6297626..0865c3693 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -667,9 +667,26 @@ static inline rtree_segment_t mk_rtree_seg(const Line &l) { // Create a hook based on hook_line and append it to the begin or end of the polyline in the intersection static void add_hook( const Intersection &intersection, const double scaled_offset, - const int hook_length, double scaled_trim_distance, + const coordf_t hook_length, double scaled_trim_distance, const rtree_t &rtree, const Lines &lines_src) { + if (hook_length < SCALED_EPSILON) + // Ignore open hooks. + return; + +#ifndef NDEBUG + { + const Vec2d v = (intersection.closest_line->b - intersection.closest_line->a).cast<double>(); + const Vec2d va = (intersection.intersect_point - intersection.closest_line->a).cast<double>(); + const double l2 = v.squaredNorm(); // avoid a sqrt + assert(l2 > 0.); + const double t = va.dot(v) / l2; + assert(t > 0. && t < 1.); + const double d = (t * v - va).norm(); + assert(d < 1000.); + } +#endif // NDEBUG + // Trim the hook start by the infill line it will connect to. Point hook_start; bool intersection_found = intersection.intersect_line->intersection( @@ -700,7 +717,7 @@ static void add_hook( const std::vector<std::pair<rtree_segment_t, size_t>> &hook_intersections, bool self_intersection, const std::optional<Line> &self_intersection_line, const Point &self_intersection_point) { // No hook is longer than hook_length, there shouldn't be any intersection closer than that. - auto max_length = double(hook_length); + auto max_length = hook_length; auto update_max_length = [&max_length](double d) { if (d < max_length) max_length = d; @@ -757,15 +774,32 @@ static void add_hook( } } -static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &boundary, const double spacing, const int hook_length) +#ifndef NDEBUG +bool validate_intersection_t_joint(const Intersection &intersection) +{ + const Vec2d v = (intersection.closest_line->b - intersection.closest_line->a).cast<double>(); + const Vec2d va = (intersection.intersect_point - intersection.closest_line->a).cast<double>(); + const double l2 = v.squaredNorm(); // avoid a sqrt + assert(l2 > 0.); + const double t = va.dot(v); + assert(t > SCALED_EPSILON && t < l2 - SCALED_EPSILON); + const double d = ((t / l2) * v - va).norm(); + assert(d < 1000.); + return true; +} +bool validate_intersections(const std::vector<Intersection> &intersections) +{ + for (const Intersection& intersection : intersections) + assert(validate_intersection_t_joint(intersection)); + return true; +} +#endif // NDEBUG + +static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &boundary, const double spacing, const coordf_t hook_length, const coordf_t hook_length_max) { rtree_t rtree; size_t poly_idx = 0; - Lines lines_src; - lines_src.reserve(lines.size()); - std::transform(lines.begin(), lines.end(), std::back_inserter(lines_src), [](const Line& l) { return Polyline{ l.a, l.b }; }); - // 19% overlap, slightly lower than the allowed overlap in Fill::connect_infill() const float scaled_offset = float(scale_(spacing) * 0.81); // 25% overlap @@ -814,16 +848,19 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b } return std::make_pair(static_cast<Polyline*>(nullptr), false); }; - auto collinear_front = collinear_segment(poly.points.front(), poly.points.back(), &poly); + auto collinear_front = collinear_segment(poly.points.front(), poly.points.back(), &poly); + auto collinear_back = collinear_segment(poly.points.back(), poly.points.front(), &poly); + assert(! collinear_front.first || ! collinear_back.first || collinear_front.first != collinear_back.first); if (collinear_front.first) { Polyline &other = *collinear_front.first; + assert(&other != &poly); poly.points.front() = collinear_front.second ? other.points.back() : other.points.front(); other.points.clear(); } - auto collinear_back = collinear_segment(poly.points.back(), poly.points.front(), &poly); if (collinear_back.first) { - Polyline &other = *collinear_front.first; - poly.points.back() = collinear_front.second ? other.points.back() : other.points.front(); + Polyline &other = *collinear_back.first; + assert(&other != &poly); + poly.points.back() = collinear_back.second ? other.points.back() : other.points.front(); other.points.clear(); } } @@ -831,6 +868,12 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b } } + // Convert input polylines to lines_src after the colinear segments were merged. + Lines lines_src; + lines_src.reserve(lines.size()); + std::transform(lines.begin(), lines.end(), std::back_inserter(lines_src), [](const Polyline &pl) { + return pl.empty() ? Line(Point(0, 0), Point(0, 0)) : Line(pl.points.front(), pl.points.back()); }); + sort_remove_duplicates(lines_touching_at_endpoints); std::vector<Intersection> intersections; @@ -854,23 +897,38 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b // Find the nearest line from the start point of the line. std::optional<size_t> tjoint_front, tjoint_back; { - auto has_tjoint = [&closest, line_idx, &rtree, &lines](const Point &pt) { - auto filter_itself = [line_idx](const auto &item) { return item.second != line_idx; }; + auto has_tjoint = [&closest, line_idx, &rtree, &lines, &lines_src](const Point &pt) { + auto filter_t_joint = [line_idx, &lines_src, pt](const auto &item) { + if (item.second != line_idx) { + // Verify that the point projects onto the line. + const Line &line = lines_src[item.second]; + const Vec2d v = (line.b - line.a).cast<double>(); + const Vec2d va = (pt - line.a).cast<double>(); + const double l2 = v.squaredNorm(); // avoid a sqrt + if (l2 > 0.) { + const double t = va.dot(v); + return t > SCALED_EPSILON && t < l2 - SCALED_EPSILON; + } + } + return false; + }; closest.clear(); - rtree.query(bgi::nearest(mk_rtree_point(pt), 1) && bgi::satisfies(filter_itself), std::back_inserter(closest)); - const Polyline &pl = lines[closest.front().second]; + rtree.query(bgi::nearest(mk_rtree_point(pt), 1) && bgi::satisfies(filter_t_joint), std::back_inserter(closest)); std::optional<size_t> out; - if (pl.points.empty()) { - // The closest infill line was already dropped as it was too short. - // Such an infill line should not make a T-joint anyways. -#if 0 // #ifndef NDEBUG - const auto &seg = closest.front().first; - struct Linef { Vec2d a; Vec2d b; }; - Linef l { { bg::get<0, 0>(seg), bg::get<0, 1>(seg) }, { bg::get<1, 0>(seg), bg::get<1, 1>(seg) } }; - assert(line_alg::distance_to_squared(l, Vec2d(pt.cast<double>())) > 1000 * 1000); -#endif // NDEBUG - } else if (((Line)pl).distance_to_squared(pt) <= 1000 * 1000) - out = closest.front().second; + if (! closest.empty()) { + const Polyline &pl = lines[closest.front().second]; + if (pl.points.empty()) { + // The closest infill line was already dropped as it was too short. + // Such an infill line should not make a T-joint anyways. + #if 0 // #ifndef NDEBUG + const auto &seg = closest.front().first; + struct Linef { Vec2d a; Vec2d b; }; + Linef l { { bg::get<0, 0>(seg), bg::get<0, 1>(seg) }, { bg::get<1, 0>(seg), bg::get<1, 1>(seg) } }; + assert(line_alg::distance_to_squared(l, Vec2d(pt.cast<double>())) > 1000 * 1000); + #endif // NDEBUG + } else if (((Line)pl).distance_to_squared(pt) <= 1000 * 1000) + out = closest.front().second; + } return out; }; // Refuse to create a T-joint if the infill lines touch at their ends. @@ -912,12 +970,16 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b // A shorter line than spacing could produce a degenerate polyline. line.points.clear(); } else if (anchor) { - if (tjoint_front) + if (tjoint_front) { // T-joint of line's front point with the 'closest' line. intersections.emplace_back(lines_src[*tjoint_front], lines_src[line_idx], &line, front_point, true); - if (tjoint_back) + assert(validate_intersection_t_joint(intersections.back())); + } + if (tjoint_back) { // T-joint of line's back point with the 'closest' line. intersections.emplace_back(lines_src[*tjoint_back], lines_src[line_idx], &line, back_point, false); + assert(validate_intersection_t_joint(intersections.back())); + } } else { if (tjoint_front) // T joint at the front at a 60 degree angle, the line is very short. @@ -940,6 +1002,7 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b ++ it; } } + assert(validate_intersections(intersections)); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT static int iRun = 0; @@ -1106,7 +1169,7 @@ static Polylines connect_lines_using_hooks(Polylines &&lines, const ExPolygon &b } Points &first_points = first_i.intersect_pl->points; Points &second_points = nearest_i.intersect_pl->points; - could_connect &= (nearest_i_point - first_i_point).cast<double>().squaredNorm() <= Slic3r::sqr(3. * hook_length); + could_connect &= (nearest_i_point - first_i_point).cast<double>().squaredNorm() <= Slic3r::sqr(hook_length_max); if (could_connect) { // Both intersections are so close that their polylines can be connected. // Verify that no other infill line intersects this anchor line. @@ -1219,7 +1282,7 @@ bool has_no_collinear_lines(const Polylines &polylines) const Point* operator()(const LineEnd &pt) const { return &pt.point(); } }; typedef ClosestPointInRadiusLookup<LineEnd, LineEndAccessor> ClosestPointLookupType; - ClosestPointLookupType closest_end_point_lookup(1001. * sqrt(2.)); + ClosestPointLookupType closest_end_point_lookup(coord_t(1001. * sqrt(2.))); for (const Polyline& pl : polylines) { // assert(pl.points.size() == 2); auto line_start = LineEnd(&pl, true); @@ -1321,9 +1384,10 @@ void Filler::_fill_surface_single( } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ - const auto hook_length = coord_t(std::min(scale_(this->spacing * 5), scale_(params.anchor_length))); + const auto hook_length = coordf_t(std::min<float>(std::numeric_limits<coord_t>::max(), scale_(params.anchor_length))); + const auto hook_length_max = coordf_t(std::min<float>(std::numeric_limits<coord_t>::max(), scale_(params.anchor_length_max))); - Polylines all_polylines_with_hooks = all_polylines.size() > 1 ? connect_lines_using_hooks(std::move(all_polylines), expolygon, this->spacing, hook_length) : std::move(all_polylines); + Polylines all_polylines_with_hooks = all_polylines.size() > 1 ? connect_lines_using_hooks(std::move(all_polylines), expolygon, this->spacing, hook_length, hook_length_max) : std::move(all_polylines); #ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT { diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index 326c1bd42..370b2f85a 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -200,10 +200,10 @@ struct ContourIntersectionPoint { // Could extrude a complete segment from this to this->prev_on_contour. bool could_connect_prev() const throw() - { return ! this->consumed && this->prev_on_contour && ! this->prev_on_contour->consumed && ! this->prev_trimmed && ! this->prev_on_contour->next_trimmed; } + { return ! this->consumed && this->prev_on_contour != this && ! this->prev_on_contour->consumed && ! this->prev_trimmed && ! this->prev_on_contour->next_trimmed; } // Could extrude a complete segment from this to this->next_on_contour. bool could_connect_next() const throw() - { return ! this->consumed && this->next_on_contour && ! this->next_on_contour->consumed && ! this->next_trimmed && ! this->next_on_contour->prev_trimmed; } + { return ! this->consumed && this->next_on_contour != this && ! this->next_on_contour->consumed && ! this->next_trimmed && ! this->next_on_contour->prev_trimmed; } }; // Distance from param1 to param2 when going counter-clockwise. @@ -390,7 +390,12 @@ static void take(Polyline &pl1, const Polyline &pl2, const Points &contour, size static void take(Polyline &pl1, const Polyline &pl2, const Points &contour, ContourIntersectionPoint *cp_start, ContourIntersectionPoint *cp_end, bool clockwise) { + assert(cp_start->prev_on_contour != nullptr); + assert(cp_start->next_on_contour != nullptr); + assert(cp_end ->prev_on_contour != nullptr); + assert(cp_end ->next_on_contour != nullptr); assert(cp_start != cp_end); + take(pl1, pl2, contour, cp_start->point_idx, cp_end->point_idx, clockwise); // Mark the contour segments in between cp_start and cp_end as consumed. @@ -410,7 +415,12 @@ static void take_limited( ContourIntersectionPoint *cp_start, ContourIntersectionPoint *cp_end, bool clockwise, float take_max_length, float line_half_width) { #ifndef NDEBUG - assert(cp_start != cp_end); + // This is a valid case, where a single infill line connect to two different contours (outer contour + hole or two holes). +// assert(cp_start != cp_end); + assert(cp_start->prev_on_contour != nullptr); + assert(cp_start->next_on_contour != nullptr); + assert(cp_end ->prev_on_contour != nullptr); + assert(cp_end ->next_on_contour != nullptr); assert(pl1.size() >= 2); assert(contour.size() + 1 == params.size()); #endif /* NDEBUG */ @@ -438,8 +448,18 @@ static void take_limited( float length = params.back(); float length_to_go = take_max_length; cp_start->consumed = true; - if (clockwise) { + if (cp_start == cp_end) { + length_to_go = std::max(0.f, std::min(length_to_go, length - line_half_width)); + length_to_go = std::min(length_to_go, clockwise ? cp_start->contour_not_taken_length_prev : cp_start->contour_not_taken_length_next); + cp_start->consume_prev(); + cp_start->consume_next(); + if (length_to_go > SCALED_EPSILON) + clockwise ? + take_cw_limited (pl1, contour, params, cp_start->point_idx, cp_start->point_idx, length_to_go) : + take_ccw_limited(pl1, contour, params, cp_start->point_idx, cp_start->point_idx, length_to_go); + } else if (clockwise) { // Going clockwise from cp_start to cp_end. + assert(cp_start != cp_end); for (ContourIntersectionPoint *cp = cp_start; cp != cp_end; cp = cp->prev_on_contour) { // Length of the segment from cp to cp->prev_on_contour. float l = closed_contour_distance_cw(cp->param, cp->prev_on_contour->param, length); @@ -461,6 +481,7 @@ static void take_limited( } } } else { + assert(cp_start != cp_end); for (ContourIntersectionPoint *cp = cp_start; cp != cp_end; cp = cp->next_on_contour) { float l = closed_contour_distance_ccw(cp->param, cp->next_on_contour->param, length); length_to_go = std::min(length_to_go, cp->contour_not_taken_length_next); @@ -869,6 +890,10 @@ void mark_boundary_segments_touching_infill( for (auto it_contour_and_segment = cell_data_range.first; it_contour_and_segment != cell_data_range.second; ++ it_contour_and_segment) { // End points of the line segment and their vector. auto segment = this->grid.segment(*it_contour_and_segment); + std::vector<ContourIntersectionPoint*> &intersections = boundary_intersections[it_contour_and_segment->first]; + if (intersections.empty()) + // There is no infil line touching this contour, thus effort will be saved to calculate overlap with other infill lines. + continue; const Vec2d seg_pt1 = segment.first.cast<double>(); const Vec2d seg_pt2 = segment.second.cast<double>(); std::pair<double, double> interval; @@ -892,20 +917,23 @@ void mark_boundary_segments_touching_infill( const float param_overlap1 = param_seg_pt1 + interval.first; const float param_overlap2 = param_seg_pt1 + interval.second; // 2) Find the ContourIntersectionPoints before param_overlap1 and after param_overlap2. - std::vector<ContourIntersectionPoint*> &intersections = boundary_intersections[it_contour_and_segment->first]; // Find the span of ContourIntersectionPoints, that is trimmed by the interval (param_overlap1, param_overlap2). ContourIntersectionPoint *ip_low, *ip_high; - { + if (intersections.size() == 1) { + // Only a single infill line touches this contour. + ip_low = ip_high = intersections.front(); + } else { + assert(intersections.size() > 1); auto it_low = Slic3r::lower_bound_by_predicate(intersections.begin(), intersections.end(), [param_overlap1](const ContourIntersectionPoint *l) { return l->param < param_overlap1; }); auto it_high = Slic3r::lower_bound_by_predicate(intersections.begin(), intersections.end(), [param_overlap2](const ContourIntersectionPoint *l) { return l->param < param_overlap2; }); ip_low = it_low == intersections.end() ? intersections.front() : *it_low; ip_high = it_high == intersections.end() ? intersections.front() : *it_high; if (ip_low->param != param_overlap1) ip_low = ip_low->prev_on_contour; + assert(ip_low != ip_high); + // Verify that the interval (param_overlap1, param_overlap2) is inside the interval (ip_low->param, ip_high->param). + assert(cyclic_interval_inside_interval(ip_low->param, ip_high->param, param_overlap1, param_overlap2, contour_length)); } - assert(ip_low != ip_high); - // Verify that the interval (param_overlap1, param_overlap2) is inside the interval (ip_low->param, ip_high->param). - assert(cyclic_interval_inside_interval(ip_low->param, ip_high->param, param_overlap1, param_overlap2, contour_length)); assert(validate_boundary_intersections(boundary_intersections)); // Mark all ContourIntersectionPoints between ip_low and ip_high as consumed. if (ip_low->next_on_contour != ip_high) @@ -1068,8 +1096,11 @@ void Fill::connect_infill(Polylines &&infill_ordered, const Polygons &boundary_s void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Polygon*> &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms) { assert(! infill_ordered.empty()); - assert(params.anchor_length >= 0.01f); - const auto anchor_length = float(scale_(params.anchor_length)); + assert(params.anchor_length >= 0.f); + assert(params.anchor_length_max >= 0.01f); + assert(params.anchor_length_max >= params.anchor_length); + const auto anchor_length = float(scale_(params.anchor_length)); + const auto anchor_length_max = float(scale_(params.anchor_length_max)); #if 0 append(polylines_out, infill_ordered); @@ -1097,7 +1128,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po EdgeGrid::Grid::ClosestPointResult cp = grid.closest_point(*pt, SCALED_EPSILON); if (cp.valid()) { // The infill end point shall lie on the contour. - assert(cp.distance < 2.); + assert(cp.distance <= 3.); intersection_points.emplace_back(cp, (&pl - infill_ordered.data()) * 2 + (pt == &pl.points.front() ? 0 : 1)); } } @@ -1154,7 +1185,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po //add new point here contour_dst.emplace_back(pt); } - if (pprev != pfirst) { + if (pfirst) { pprev->next_on_contour = pfirst; pfirst->prev_on_contour = pprev; } @@ -1170,10 +1201,15 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po ip->param = contour_params[ip->point_idx]; // and measure distance to the previous and next intersection point. const float contour_length = contour_params.back(); - for (ContourIntersectionPoint *ip : contour_intersection_points) { - ip->contour_not_taken_length_prev = closed_contour_distance_ccw(ip->prev_on_contour->param, ip->param, contour_length); - ip->contour_not_taken_length_next = closed_contour_distance_ccw(ip->param, ip->next_on_contour->param, contour_length); - } + for (ContourIntersectionPoint *ip : contour_intersection_points) + if (ip->next_on_contour == ip) { + assert(ip->prev_on_contour == ip); + ip->contour_not_taken_length_prev = ip->contour_not_taken_length_next = contour_length; + } else { + assert(ip->prev_on_contour != ip); + ip->contour_not_taken_length_prev = closed_contour_distance_ccw(ip->prev_on_contour->param, ip->param, contour_length); + ip->contour_not_taken_length_next = closed_contour_distance_ccw(ip->param, ip->next_on_contour->param, contour_length); + } } assert(boundary.size() == boundary_src.size()); @@ -1277,7 +1313,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po idx_first = get_and_update_merged_with(idx_first); assert(idx_first < idx_second); assert(idx_second == merged_with[idx_second]); - if (could_connect && length < anchor_length * 2.5) { + if (could_connect && length < anchor_length_max) { // Take the complete contour. // Connect the two polygons using the boundary contour. take(infill_ordered[idx_first], infill_ordered[idx_second], boundary[cp1->contour_idx], cp1, cp2, connection_cost.reversed); @@ -1299,10 +1335,11 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po std::vector<Arc> arches; arches.reserve(map_infill_end_point_to_boundary.size()); for (ContourIntersectionPoint &cp : map_infill_end_point_to_boundary) - if (! cp.contour_idx != boundary_idx_unconnected && cp.next_on_contour != &cp && cp.could_connect_next()) + if (cp.contour_idx != boundary_idx_unconnected && cp.next_on_contour != &cp && cp.could_connect_next()) arches.push_back({ &cp, path_length_along_contour_ccw(&cp, cp.next_on_contour, boundary_params[cp.contour_idx].back()) }); std::sort(arches.begin(), arches.end(), [](const auto &l, const auto &r) { return l.arc_length < r.arc_length; }); + //FIXME improve the Traveling Salesman problem with 2-opt and 3-opt local optimization. for (Arc &arc : arches) if (! arc.intersection->consumed && ! arc.intersection->next_on_contour->consumed) { // Indices of the polylines to be connected by a perimeter segment. @@ -1315,7 +1352,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po if (polyline_idx1 != polyline_idx2) { Polyline &polyline1 = infill_ordered[polyline_idx1]; Polyline &polyline2 = infill_ordered[polyline_idx2]; - if (arc.arc_length < anchor_length * 2.5) { + if (arc.arc_length < anchor_length_max) { // Not closing a loop, connecting the lines. assert(contour[cp1->point_idx] == polyline1.points.front() || contour[cp1->point_idx] == polyline1.points.back()); if (contour[cp1->point_idx] == polyline1.points.front()) @@ -1333,7 +1370,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po polyline2.points.clear(); merged_with[polyline_idx2] = merged_with[polyline_idx1]; } - } else { + } else if (anchor_length > SCALED_EPSILON) { // Move along the perimeter, but don't take the whole arc. take_limited(polyline1, contour, contour_params, cp1, cp2, false, anchor_length, line_half_width); take_limited(polyline2, contour, contour_params, cp2, cp1, true, anchor_length, line_half_width); @@ -1360,7 +1397,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po assert(contour[contour_point.point_idx] == polyline.points.front() || contour[contour_point.point_idx] == polyline.points.back()); bool connected = false; for (float l : { std::min(lprev, lnext), std::max(lprev, lnext) }) { - if (l == std::numeric_limits<float>::max() || l > anchor_length * 2.5) + if (l == std::numeric_limits<float>::max() || l > anchor_length_max) break; // Take the complete contour. bool reversed = l == lprev; @@ -1392,7 +1429,7 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po connected = true; break; } - if (! connected) { + if (! connected && anchor_length > SCALED_EPSILON) { // Which to take? One could optimize for: // 1) Shortest path // 2) Hook length diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index 4ebad7a8d..c09b70bca 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -34,14 +34,15 @@ struct FillParams { bool full_infill() const { return density > 0.9999f; } // Don't connect the fill lines around the inner perimeter. - bool dont_connect() const { return anchor_length < 0.05f; } + bool dont_connect() const { return anchor_length_max < 0.05f; } // Fill density, fraction in <0, 1> float density { 0.f }; // Length of an infill anchor along the perimeter. // 1000mm is roughly the maximum length line that fits into a 32bit coord_t. - float anchor_length { 1000.f }; + float anchor_length { 1000.f }; + float anchor_length_max { 1000.f }; // Don't adjust spacing to fill the space evenly. bool dont_adjust { true }; diff --git a/src/libslic3r/Fill/FillConcentric.cpp b/src/libslic3r/Fill/FillConcentric.cpp index 587038178..87bddeb61 100644 --- a/src/libslic3r/Fill/FillConcentric.cpp +++ b/src/libslic3r/Fill/FillConcentric.cpp @@ -39,7 +39,7 @@ void FillConcentric::_fill_surface_single( size_t iPathFirst = polylines_out.size(); Point last_pos(0, 0); for (const Polygon &loop : loops) { - polylines_out.push_back(loop.split_at_index(last_pos.nearest_point_index(loop))); + polylines_out.push_back(loop.split_at_index(last_pos.nearest_point_index(loop.points))); last_pos = polylines_out.back().last_point(); } diff --git a/src/libslic3r/ModelArrange.cpp b/src/libslic3r/ModelArrange.cpp index 230b04de5..fcea7e14e 100644 --- a/src/libslic3r/ModelArrange.cpp +++ b/src/libslic3r/ModelArrange.cpp @@ -49,7 +49,7 @@ Slic3r::arrangement::ArrangePolygon get_arrange_poly(const Model &model) std::copy(pts.begin(), pts.end(), std::back_inserter(apts)); } - apts = Geometry::convex_hull(apts); + apts = std::move(Geometry::convex_hull(apts).points); return ap; } diff --git a/src/libslic3r/MotionPlanner.cpp b/src/libslic3r/MotionPlanner.cpp index ae50df8f4..a8ce59086 100644 --- a/src/libslic3r/MotionPlanner.cpp +++ b/src/libslic3r/MotionPlanner.cpp @@ -264,7 +264,7 @@ Point MotionPlannerEnv::nearest_env_point(const Point &from, const Point &to) co for (const ExPolygon &ex : m_env.expolygons) { for (const Polygon &hole : ex.holes) if (hole.contains(from)) - pp = hole; + pp = hole.points; if (! pp.empty()) break; } diff --git a/src/libslic3r/MultiPoint.hpp b/src/libslic3r/MultiPoint.hpp index 9ff91b502..fa6dbabb9 100644 --- a/src/libslic3r/MultiPoint.hpp +++ b/src/libslic3r/MultiPoint.hpp @@ -17,8 +17,6 @@ class MultiPoint public: Points points; - operator Points() const { return this->points; } - MultiPoint() {} MultiPoint(const MultiPoint &other) : points(other.points) {} MultiPoint(MultiPoint &&other) : points(std::move(other.points)) {} diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 3cd91dafe..e6261ebd1 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -158,7 +158,7 @@ static ExtrusionEntityCollection traverse_loops(const PerimeterGenerator &perime // get non-overhang paths by intersecting this loop with the grown lower slices extrusion_paths_append( paths, - intersection_pl(loop.polygon, perimeter_generator.lower_slices_polygons()), + intersection_pl((Polygons)loop.polygon, perimeter_generator.lower_slices_polygons()), role, is_external ? perimeter_generator.ext_mm3_per_mm() : perimeter_generator.mm3_per_mm(), is_external ? perimeter_generator.ext_perimeter_flow.width : perimeter_generator.perimeter_flow.width, @@ -169,7 +169,7 @@ static ExtrusionEntityCollection traverse_loops(const PerimeterGenerator &perime // the loop centerline and original lower slices is >= half nozzle diameter extrusion_paths_append( paths, - diff_pl(loop.polygon, perimeter_generator.lower_slices_polygons()), + diff_pl((Polygons)loop.polygon, perimeter_generator.lower_slices_polygons()), erOverhangPerimeter, perimeter_generator.mm3_per_mm_overhang(), perimeter_generator.overhang_flow.width, diff --git a/src/libslic3r/Polygon.hpp b/src/libslic3r/Polygon.hpp index 8479a0bd6..b550ae7d7 100644 --- a/src/libslic3r/Polygon.hpp +++ b/src/libslic3r/Polygon.hpp @@ -16,8 +16,8 @@ typedef std::vector<Polygon> Polygons; class Polygon : public MultiPoint { public: - operator Polygons() const { Polygons pp; pp.push_back(*this); return pp; } - operator Polyline() const { return this->split_at_first_point(); } + explicit operator Polygons() const { Polygons pp; pp.push_back(*this); return pp; } + explicit operator Polyline() const { return this->split_at_first_point(); } Point& operator[](Points::size_type idx) { return this->points[idx]; } const Point& operator[](Points::size_type idx) const { return this->points[idx]; } diff --git a/src/libslic3r/Polyline.cpp b/src/libslic3r/Polyline.cpp index d24788c7b..a6be64299 100644 --- a/src/libslic3r/Polyline.cpp +++ b/src/libslic3r/Polyline.cpp @@ -200,7 +200,7 @@ BoundingBox get_extents(const Polylines &polylines) if (! polylines.empty()) { bb = polylines.front().bounding_box(); for (size_t i = 1; i < polylines.size(); ++ i) - bb.merge(polylines[i]); + bb.merge(polylines[i].points); } return bb; } diff --git a/src/libslic3r/Polyline.hpp b/src/libslic3r/Polyline.hpp index 2a53a13f9..ef1da9afb 100644 --- a/src/libslic3r/Polyline.hpp +++ b/src/libslic3r/Polyline.hpp @@ -60,8 +60,8 @@ public: } } - operator Polylines() const; - operator Line() const; + explicit operator Polylines() const; + explicit operator Line() const; const Point& last_point() const override { return this->points.back(); } const Point& leftmost_point() const; diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 0b13745e1..c7e0c5040 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -427,7 +427,7 @@ const std::vector<std::string>& Preset::print_options() "infill_extruder", "solid_infill_extruder", "support_material_extruder", "support_material_interface_extruder", "ooze_prevention", "standby_temperature_delta", "interface_shells", "extrusion_width", "first_layer_extrusion_width", "perimeter_extrusion_width", "external_perimeter_extrusion_width", "infill_extrusion_width", "solid_infill_extrusion_width", - "top_infill_extrusion_width", "support_material_extrusion_width", "infill_overlap", "infill_anchor", "bridge_flow_ratio", "clip_multipart_objects", + "top_infill_extrusion_width", "support_material_extrusion_width", "infill_overlap", "infill_anchor", "infill_anchor_max", "bridge_flow_ratio", "clip_multipart_objects", "elefant_foot_compensation", "xy_size_compensation", "threads", "resolution", "wipe_tower", "wipe_tower_x", "wipe_tower_y", "wipe_tower_width", "wipe_tower_rotation_angle", "wipe_tower_bridging", "single_extruder_multi_material_priming", "wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits" diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 4e4c90fb2..a8d4b2ea0 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1220,9 +1220,9 @@ static inline bool sequential_print_horizontal_clearance_valid(const Print &prin // instance.shift is a position of a centered object, while model object may not be centered. // Conver the shift from the PrintObject's coordinates into ModelObject's coordinates by removing the centering offset. convex_hull.translate(instance.shift - print_object->center_offset()); - if (! intersection(convex_hulls_other, convex_hull).empty()) + if (! intersection(convex_hulls_other, (Polygons)convex_hull).empty()) return false; - polygons_append(convex_hulls_other, convex_hull); + convex_hulls_other.emplace_back(std::move(convex_hull)); } } return true; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 629838a0b..97b62bf56 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1064,11 +1064,15 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionInt(1)); - def = this->add("infill_anchor", coFloatOrPercent); + auto def_infill_anchor_min = def = this->add("infill_anchor", coFloatOrPercent); def->label = L("Length of the infill anchor"); def->category = L("Advanced"); def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " - "If expressed as percentage (example: 15%) it is calculated over infill extrusion width."); + "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. " + "PrusaSlicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment " + "shorter than infill_anchor_max is found, the infill line is connected to a perimeter segment at just one side " + "and the length of the perimeter segment taken is limited to this parameter, but no longer than anchor_length_max. " + "Set this parameter to zero to disable anchoring perimeters connected to a single infill line."); def->sidetext = L("mm or %"); def->ratio_over = "infill_extrusion_width"; def->gui_type = "f_enum_open"; @@ -1078,15 +1082,36 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("5"); def->enum_values.push_back("10"); def->enum_values.push_back("1000"); - def->enum_labels.push_back(L("0 (not anchored)")); + def->enum_labels.push_back(L("0 (no open anchors)")); def->enum_labels.push_back("1 mm"); def->enum_labels.push_back("2 mm"); def->enum_labels.push_back("5 mm"); def->enum_labels.push_back("10 mm"); def->enum_labels.push_back(L("1000 (unlimited)")); def->mode = comAdvanced; -// def->set_default_value(new ConfigOptionFloatOrPercent(300, true)); - def->set_default_value(new ConfigOptionFloatOrPercent(1000, false)); + def->set_default_value(new ConfigOptionFloatOrPercent(600, true)); + + def = this->add("infill_anchor_max", coFloatOrPercent); + def->label = L("Maximum length of the infill anchor"); + def->category = def_infill_anchor_min->category; + def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " + "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. " + "PrusaSlicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment " + "shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side " + "and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. " + "Set this parameter to zero to disable anchoring."); + def->sidetext = def_infill_anchor_min->sidetext; + def->ratio_over = def_infill_anchor_min->ratio_over; + def->gui_type = def_infill_anchor_min->gui_type; + def->enum_values = def_infill_anchor_min->enum_values; + def->enum_labels.push_back(L("0 (not anchored)")); + def->enum_labels.push_back("1 mm"); + def->enum_labels.push_back("2 mm"); + def->enum_labels.push_back("5 mm"); + def->enum_labels.push_back("10 mm"); + def->enum_labels.push_back(L("1000 (unlimited)")); + def->mode = def_infill_anchor_min->mode; + def->set_default_value(new ConfigOptionFloatOrPercent(50, false)); def = this->add("infill_extruder", coInt); def->label = L("Infill extruder"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 5ca04a341..aa7b159d0 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -532,6 +532,7 @@ public: ConfigOptionEnum<InfillPattern> fill_pattern; ConfigOptionFloat gap_fill_speed; ConfigOptionFloatOrPercent infill_anchor; + ConfigOptionFloatOrPercent infill_anchor_max; ConfigOptionInt infill_extruder; ConfigOptionFloatOrPercent infill_extrusion_width; ConfigOptionInt infill_every_layers; @@ -584,6 +585,7 @@ protected: OPT_PTR(fill_pattern); OPT_PTR(gap_fill_speed); OPT_PTR(infill_anchor); + OPT_PTR(infill_anchor_max); OPT_PTR(infill_extruder); OPT_PTR(infill_extrusion_width); OPT_PTR(infill_every_layers); diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 3937f4fed..c70542a26 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -591,6 +591,7 @@ bool PrintObject::invalidate_state_by_config_options(const std::vector<t_config_ || opt_key == "fill_angle" || opt_key == "fill_pattern" || opt_key == "infill_anchor" + || opt_key == "infill_anchor_max" || opt_key == "top_infill_extrusion_width" || opt_key == "first_layer_extrusion_width") { steps.emplace_back(posInfill); diff --git a/src/libslic3r/SLA/Pad.cpp b/src/libslic3r/SLA/Pad.cpp index f2b189cd1..927c32589 100644 --- a/src/libslic3r/SLA/Pad.cpp +++ b/src/libslic3r/SLA/Pad.cpp @@ -369,7 +369,7 @@ bool add_cavity(Contour3D &pad, ExPolygon &top_poly, const PadConfig3D &cfg, if (inner_base.empty() || middle_base.empty()) { logerr(); return false; } - ExPolygons pdiff = diff_ex(top_poly, middle_base.contour); + ExPolygons pdiff = diff_ex((Polygons)top_poly, (Polygons)middle_base.contour); if (pdiff.size() != 1) { logerr(); return false; } diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index a27b85734..0fc4eb024 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -2513,7 +2513,7 @@ void LoopInterfaceProcessor::generate(MyLayerExtruded &top_contact_layer, const Polygon &contour = (i_contour == 0) ? it_contact_expoly->contour : it_contact_expoly->holes[i_contour - 1]; const Point *seg_current_pt = nullptr; coordf_t seg_current_t = 0.; - if (! intersection_pl(contour.split_at_first_point(), overhang_with_margin).empty()) { + if (! intersection_pl((Polylines)contour.split_at_first_point(), overhang_with_margin).empty()) { // The contour is below the overhang at least to some extent. //FIXME ideally one would place the circles below the overhang only. // Walk around the contour and place circles so their centers are not closer than circle_distance from each other. diff --git a/src/slic3r/GUI/2DBed.cpp b/src/slic3r/GUI/2DBed.cpp index debd104ef..ea6720356 100644 --- a/src/slic3r/GUI/2DBed.cpp +++ b/src/slic3r/GUI/2DBed.cpp @@ -87,7 +87,7 @@ void Bed_2D::repaint(const std::vector<Vec2d>& shape) for (auto y = bb.min(1) - fmod(bb.min(1), step) + step; y < bb.max(1); y += step) { polylines.push_back(Polyline::new_scale({ Vec2d(bb.min(0), y), Vec2d(bb.max(0), y) })); } - polylines = intersection_pl(polylines, bed_polygon); + polylines = intersection_pl(polylines, (Polygons)bed_polygon); dc.SetPen(wxPen(wxColour(230, 230, 230), 1, wxPENSTYLE_SOLID)); for (auto pl : polylines) diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 845dc1c0b..899a01369 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -237,8 +237,11 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig* config) bool have_infill = config->option<ConfigOptionPercent>("fill_density")->value > 0; // infill_extruder uses the same logic as in Print::extruders() for (auto el : { "fill_pattern", "infill_every_layers", "infill_only_where_needed", - "solid_infill_every_layers", "solid_infill_below_area", "infill_extruder" }) + "solid_infill_every_layers", "solid_infill_below_area", "infill_extruder", "infill_anchor_max" }) toggle_field(el, have_infill); + // Only allow configuration of open anchors if the anchoring is enabled. + bool has_infill_anchors = have_infill && config->option<ConfigOptionFloatOrPercent>("infill_anchor_max")->value > 0; + toggle_field("infill_anchor", has_infill_anchors); bool has_spiral_vase = config->opt_bool("spiral_vase"); bool has_top_solid_infill = config->opt_int("top_solid_layers") > 0; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 940b4eeb2..469a48527 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1423,6 +1423,7 @@ void TabPrint::build() optgroup->append_single_option_line("fill_density", category_path + "fill-density"); optgroup->append_single_option_line("fill_pattern", category_path + "fill-pattern"); optgroup->append_single_option_line("infill_anchor", category_path + "fill-pattern"); + optgroup->append_single_option_line("infill_anchor_max", category_path + "fill-pattern"); optgroup->append_single_option_line("top_fill_pattern", category_path + "top-fill-pattern"); optgroup->append_single_option_line("bottom_fill_pattern", category_path + "bottom-fill-pattern"); From 2f65bcc83ffe7a36455bf205e3427243540a337a Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Tue, 24 Nov 2020 16:43:37 +0100 Subject: [PATCH 104/138] Performance improvements and cleanup --- .../include/libnest2d/placers/nfpplacer.hpp | 251 +++++------------- 1 file changed, 69 insertions(+), 182 deletions(-) diff --git a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp index 6cdaadd25..7b4f36716 100644 --- a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp +++ b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp @@ -479,13 +479,18 @@ class _NofitPolyPlacer: public PlacerBoilerplate<_NofitPolyPlacer<RawShape, TBin using MaxNfpLevel = nfp::MaxNfpLevel<RawShape>; - // Norming factor for the optimization function - const double norm_; - public: using Pile = nfp::Shapes<RawShape>; +private: + + // Norming factor for the optimization function + const double norm_; + Pile merged_pile_; + +public: + inline explicit _NofitPolyPlacer(const BinType& bin): Base(bin), norm_(std::sqrt(sl::area(bin))) @@ -576,6 +581,20 @@ private: using Shapes = TMultiShape<RawShape>; + template<nfp::NfpLevel lvl> + static Shapes calcnfp(const Shapes &pile, const RawShape &orb) + { + Shapes ret; ret.reserve(2 * pile.size()); + + for (auto &stat : pile) { + Shapes subnfp = nfp::noFitPolygon<lvl>(stat, orb); + for (auto &nfp : subnfp) + ret.emplace_back(subnfp); + } + + return nfp::merge(ret); + } + Shapes calcnfp(const Item &trsh, Lvl<nfp::NfpLevel::CONVEX_ONLY>) { using namespace nfp; @@ -616,135 +635,9 @@ private: template<class Level> Shapes calcnfp(const Item &trsh, Level) { // Function for arbitrary level of nfp implementation - using namespace nfp; - Shapes nfps; - - auto& orb = trsh.transformedShape(); - bool orbconvex = trsh.isContourConvex(); - - for(Item& sh : items_) { - nfp::NfpResult<RawShape> subnfp; - auto& stat = sh.transformedShape(); - - if(sh.isContourConvex() && orbconvex) - subnfp = nfp::noFitPolygon<NfpLevel::CONVEX_ONLY>(stat, orb); - else if(orbconvex) - subnfp = nfp::noFitPolygon<NfpLevel::ONE_CONVEX>(stat, orb); - else - subnfp = nfp::noFitPolygon<Level::value>(stat, orb); - - correctNfpPosition(subnfp, sh, trsh); - - nfps = nfp::merge(nfps, subnfp.first); - } - - return nfps; - } - - // Very much experimental - void repack(Item& item, PackResult& result) { - - if((sl::area(bin_) - this->filledArea()) >= item.area()) { - auto prev_func = config_.object_function; - - unsigned iter = 0; - ItemGroup backup_rf = items_; - std::vector<Item> backup_cpy; - for(Item& itm : items_) backup_cpy.emplace_back(itm); - - auto ofn = [this, &item, &result, &iter, &backup_cpy, &backup_rf] - (double ratio) - { - auto& bin = bin_; - iter++; - config_.object_function = [bin, ratio]( - nfp::Shapes<RawShape>& pile, - const Item& item, - const ItemGroup& /*remaining*/) - { - pile.emplace_back(item.transformedShape()); - auto ch = sl::convexHull(pile); - auto pbb = sl::boundingBox(pile); - pile.pop_back(); - - double parea = 0.5*(sl::area(ch) + sl::area(pbb)); - - double pile_area = std::accumulate( - pile.begin(), pile.end(), item.area(), - [](double sum, const RawShape& sh){ - return sum + sl::area(sh); - }); - - // The pack ratio -- how much is the convex hull occupied - double pack_rate = (pile_area)/parea; - - // ratio of waste - double waste = 1.0 - pack_rate; - - // Score is the square root of waste. This will extend the - // range of good (lower) values and shrink the range of bad - // (larger) values. - auto wscore = std::sqrt(waste); - - - auto ibb = item.boundingBox(); - auto bbb = sl::boundingBox(bin); - auto c = ibb.center(); - double norm = 0.5*pl::distance(bbb.minCorner(), - bbb.maxCorner()); - - double dscore = pl::distance(c, pbb.center()) / norm; - - return ratio*wscore + (1.0 - ratio) * dscore; - }; - - auto bb = sl::boundingBox(bin); - double norm = bb.width() + bb.height(); - - auto items = items_; - clearItems(); - auto it = items.begin(); - while(auto pr = _trypack(*it++)) { - this->accept(pr); if(it == items.end()) break; - } - - auto count_diff = items.size() - items_.size(); - double score = count_diff; - - if(count_diff == 0) { - result = _trypack(item); - - if(result) { - std::cout << "Success" << std::endl; - score = 0.0; - } else { - score += result.overfit() / norm; - } - } else { - result = PackResult(); - items_ = backup_rf; - for(unsigned i = 0; i < items_.size(); i++) { - items_[i].get() = backup_cpy[i]; - } - } - - std::cout << iter << " repack result: " << score << " " - << ratio << " " << count_diff << std::endl; - - return score; - }; - - opt::StopCriteria stopcr; - stopcr.max_iterations = 30; - stopcr.stop_score = 1e-20; - opt::TOptimizer<opt::Method::L_SUBPLEX> solver(stopcr); - solver.optimize_min(ofn, opt::initvals(0.5), - opt::bound(0.0, 1.0)); - - // optimize - config_.object_function = prev_func; - } + // TODO: implement + return {}; } struct Optimum { @@ -798,6 +691,50 @@ private: Radians final_rot = initial_rot; Shapes nfps; + auto& bin = bin_; + double norm = norm_; + auto pbb = sl::boundingBox(merged_pile_); + auto binbb = sl::boundingBox(bin); + + // This is the kernel part of the object function that is + // customizable by the library client + std::function<double(const Item&)> _objfunc; + if(config_.object_function) _objfunc = config_.object_function; + else { + + // Inside check has to be strict if no alignment was enabled + std::function<double(const Box&)> ins_check; + if(config_.alignment == Config::Alignment::DONT_ALIGN) + ins_check = [&binbb, norm](const Box& fullbb) { + double ret = 0; + if(!sl::isInside(fullbb, binbb)) + ret += norm; + return ret; + }; + else + ins_check = [&bin](const Box& fullbb) { + double miss = overfit(fullbb, bin); + miss = miss > 0? miss : 0; + return std::pow(miss, 2); + }; + + _objfunc = [norm, binbb, pbb, ins_check](const Item& item) + { + auto ibb = item.boundingBox(); + auto fullbb = sl::boundingBox(pbb, ibb); + + double score = pl::distance(ibb.center(), + binbb.center()); + score /= norm; + + score += ins_check(fullbb); + + return score; + }; + } + + Pile merged_pile = merged_pile_; + for(auto rot : config_.rotations) { item.translation(initial_tr); @@ -822,57 +759,6 @@ private: ecache.back().accuracy(config_.accuracy); } - Shapes pile; - pile.reserve(items_.size()+1); - // double pile_area = 0; - for(Item& mitem : items_) { - pile.emplace_back(mitem.transformedShape()); - // pile_area += mitem.area(); - } - - auto merged_pile = nfp::merge(pile); - auto& bin = bin_; - double norm = norm_; - auto pbb = sl::boundingBox(merged_pile); - auto binbb = sl::boundingBox(bin); - - // This is the kernel part of the object function that is - // customizable by the library client - std::function<double(const Item&)> _objfunc; - if(config_.object_function) _objfunc = config_.object_function; - else { - - // Inside check has to be strict if no alignment was enabled - std::function<double(const Box&)> ins_check; - if(config_.alignment == Config::Alignment::DONT_ALIGN) - ins_check = [&binbb, norm](const Box& fullbb) { - double ret = 0; - if(!sl::isInside(fullbb, binbb)) - ret += norm; - return ret; - }; - else - ins_check = [&bin](const Box& fullbb) { - double miss = overfit(fullbb, bin); - miss = miss > 0? miss : 0; - return std::pow(miss, 2); - }; - - _objfunc = [norm, binbb, pbb, ins_check](const Item& item) - { - auto ibb = item.boundingBox(); - auto fullbb = sl::boundingBox(pbb, ibb); - - double score = pl::distance(ibb.center(), - binbb.center()); - score /= norm; - - score += ins_check(fullbb); - - return score; - }; - } - // Our object function for placement auto rawobjfunc = [_objfunc, iv, startpos] (Vertex v, Item& itm) @@ -1041,6 +927,7 @@ private: item.translation(final_tr); item.rotation(final_rot); + merged_pile_ = nfp::merge(merged_pile, item.transformedShape()); } if(can_pack) { From 77f845b0be1e42c3f45c093c023ac1c4682ea4e5 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Tue, 24 Nov 2020 18:44:13 +0100 Subject: [PATCH 105/138] Added a possibility to suppress scrolling for some ComboBoxes --- src/slic3r/GUI/Field.cpp | 31 ++++++++++++++++++++++++++++--- src/slic3r/GUI/Field.hpp | 7 ++++++- src/slic3r/GUI/Plater.cpp | 3 +++ 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index a92a98844..a0176ad4a 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -862,7 +862,19 @@ void Choice::BUILD() { #endif // temp->Bind(wxEVT_TEXT, ([this](wxCommandEvent e) { on_change_field(); }), temp->GetId()); - temp->Bind(wxEVT_COMBOBOX, ([this](wxCommandEvent e) { on_change_field(); }), temp->GetId()); + temp->Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent&) { m_is_dropped = true; }); + temp->Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent&) { m_is_dropped = false; }); + + temp->Bind(wxEVT_COMBOBOX, ([this, temp](wxCommandEvent evt) { + if (m_suppress_scroll) { + if (!m_is_dropped) { + temp->SetSelection(m_last_selected); + return; + } + m_last_selected = evt.GetSelection(); + } + on_change_field(); + }), temp->GetId()); if (m_is_editable) { temp->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) { @@ -876,8 +888,7 @@ void Choice::BUILD() { if (is_defined_input_value<choice_ctrl>(window, m_opt.type)) { if (fabs(old_val - boost::any_cast<double>(get_value())) <= 0.0001) return; - else - on_change_field(); + on_change_field(); } else on_kill_focus(); @@ -887,6 +898,13 @@ void Choice::BUILD() { temp->SetToolTip(get_tooltip_text(temp->GetValue())); } +void Choice::suppress_scroll() +{ + m_suppress_scroll = true; + choice_ctrl* ctrl = dynamic_cast<choice_ctrl*>(window); + m_last_selected = ctrl->GetSelection(); +} + void Choice::set_selection() { /* To prevent earlier control updating under OSX set m_disable_change_event to true @@ -901,6 +919,7 @@ void Choice::set_selection() case coEnum:{ int id_value = m_opt.get_default_value<ConfigOptionEnum<SeamPosition>>()->value; //!! field->SetSelection(id_value); + if (m_suppress_scroll) m_last_selected = id_value; break; } case coFloat: @@ -934,6 +953,8 @@ void Choice::set_selection() ++idx; } idx == m_opt.enum_values.size() ? field->SetValue(text_value) : field->SetSelection(idx); + + if (m_suppress_scroll && idx < m_opt.enum_values.size()) m_last_selected = idx; } } @@ -953,6 +974,7 @@ void Choice::set_value(const std::string& value, bool change_event) //! Redunda idx == m_opt.enum_values.size() ? field->SetValue(value) : field->SetSelection(idx); + if (m_suppress_scroll && idx < m_opt.enum_values.size()) m_last_selected = idx; m_disable_change_event = false; } @@ -990,6 +1012,7 @@ void Choice::set_value(const boost::any& value, bool change_event) } else field->SetSelection(idx); + if (m_suppress_scroll && idx < m_opt.enum_values.size()) m_last_selected = idx; break; } case coEnum: { @@ -1020,6 +1043,7 @@ void Choice::set_value(const boost::any& value, bool change_event) val = 0; } field->SetSelection(val); + if (m_suppress_scroll) m_last_selected = val; break; } default: @@ -1179,6 +1203,7 @@ void Choice::msw_rescale() idx == m_opt.enum_values.size() ? field->SetValue(selection) : field->SetSelection(idx); + if (m_suppress_scroll && idx < m_opt.enum_values.size()) m_last_selected = idx; #else auto size = wxSize(def_width_wider() * m_em_unit, wxDefaultCoord); if (m_opt.height >= 0) size.SetHeight(m_opt.height * m_em_unit); diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index b4bcf9f33..6cadb607d 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -385,7 +385,10 @@ public: /* Under OSX: wxBitmapComboBox->GetWindowStyle() returns some weard value, * so let use a flag, which has TRUE value for a control without wxCB_READONLY style */ - bool m_is_editable { false }; + bool m_is_editable { false }; + bool m_is_dropped { false }; + bool m_suppress_scroll { false }; + int m_last_selected { wxNOT_FOUND }; void set_selection(); void set_value(const std::string& value, bool change_event = false); @@ -399,6 +402,8 @@ public: void enable() override ;//{ dynamic_cast<wxBitmapComboBox*>(window)->Enable(); }; void disable() override;//{ dynamic_cast<wxBitmapComboBox*>(window)->Disable(); }; wxWindow* getWindow() override { return window; } + + void suppress_scroll(); }; class ColourPicker : public Field { diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 763a906f5..c2facfc06 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -439,6 +439,9 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent) : m_og->activate(); + Choice* choice = dynamic_cast<Choice*>(m_og->get_field("support")); + choice->suppress_scroll(); + // Frequently changed parameters for SLA_technology m_og_sla = std::make_shared<ConfigOptionsGroup>(parent, ""); m_og_sla->hide_labels(); From 5363dcb5bc6898aacf9bff327894f7e1a418dba2 Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Tue, 24 Nov 2020 18:44:59 +0100 Subject: [PATCH 106/138] Fix broken arrange from 2f65bcc83ffe7a36455bf205e3427243540a337a --- .../include/libnest2d/placers/nfpplacer.hpp | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp index 7b4f36716..3554892b3 100644 --- a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp +++ b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp @@ -581,20 +581,6 @@ private: using Shapes = TMultiShape<RawShape>; - template<nfp::NfpLevel lvl> - static Shapes calcnfp(const Shapes &pile, const RawShape &orb) - { - Shapes ret; ret.reserve(2 * pile.size()); - - for (auto &stat : pile) { - Shapes subnfp = nfp::noFitPolygon<lvl>(stat, orb); - for (auto &nfp : subnfp) - ret.emplace_back(subnfp); - } - - return nfp::merge(ret); - } - Shapes calcnfp(const Item &trsh, Lvl<nfp::NfpLevel::CONVEX_ONLY>) { using namespace nfp; @@ -927,11 +913,11 @@ private: item.translation(final_tr); item.rotation(final_rot); - merged_pile_ = nfp::merge(merged_pile, item.transformedShape()); } if(can_pack) { ret = PackResult(item); + merged_pile_ = nfp::merge(merged_pile_, item.transformedShape()); } else { ret = PackResult(best_overfit); } From df40f6ba119669a2d527a425d8b2bd7e395ac918 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Wed, 25 Nov 2020 10:31:58 +0100 Subject: [PATCH 107/138] ENABLE_GCODE_VIEWER set as default --- src/libslic3r/Technologies.hpp | 36 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 29a3721ff..95076733a 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -1,9 +1,9 @@ #ifndef _prusaslicer_technologies_h_ #define _prusaslicer_technologies_h_ -//============ +//============= // debug techs -//============ +//============= // Shows camera target in the 3D scene #define ENABLE_SHOW_CAMERA_TARGET 0 @@ -23,20 +23,24 @@ #define DISABLE_INSTANCES_SYNCH 0 // Use wxDataViewRender instead of wxDataViewCustomRenderer #define ENABLE_NONCUSTOM_DATA_VIEW_RENDERING 0 +// Enable G-Code viewer statistics imgui dialog +#define ENABLE_GCODE_VIEWER_STATISTICS 0 +// Enable G-Code viewer comparison between toolpaths height and width detected from gcode and calculated at gcode generation +#define ENABLE_GCODE_VIEWER_DATA_CHECKING 0 -//================ +//================= // 2.2.0.rc1 techs -//================ +//================= #define ENABLE_2_2_0_RC1 1 // Enable hack to remove crash when closing on OSX 10.9.5 #define ENABLE_HACK_CLOSING_ON_OSX_10_9_5 (1 && ENABLE_2_2_0_RC1) -//=================== +//==================== // 2.3.0.alpha1 techs -//=================== +//==================== #define ENABLE_2_3_0_ALPHA1 1 // Enable rendering of objects using environment map @@ -51,27 +55,22 @@ // Enable built-in DPI changed event handler of wxWidgets 3.1.3 #define ENABLE_WX_3_1_3_DPI_CHANGED_EVENT (1 && ENABLE_2_3_0_ALPHA1) -// Enable G-Code viewer -#define ENABLE_GCODE_VIEWER (1 && ENABLE_2_3_0_ALPHA1) -#define ENABLE_GCODE_VIEWER_STATISTICS (0 && ENABLE_GCODE_VIEWER) -#define ENABLE_GCODE_VIEWER_DATA_CHECKING (0 && ENABLE_GCODE_VIEWER) - -//=================== +//==================== // 2.3.0.alpha3 techs -//=================== +//==================== #define ENABLE_2_3_0_ALPHA3 1 #define ENABLE_CTRL_M_ON_WINDOWS (0 && ENABLE_2_3_0_ALPHA3) -//=================== +//==================== // 2.3.0.alpha4 techs -//=================== +//==================== #define ENABLE_2_3_0_ALPHA4 1 -#define ENABLE_FIXED_SCREEN_SIZE_POINT_MARKERS (1 && ENABLE_GCODE_VIEWER && ENABLE_2_3_0_ALPHA4) -#define ENABLE_SHOW_OPTION_POINT_LAYERS (1 && ENABLE_GCODE_VIEWER && ENABLE_2_3_0_ALPHA4) +#define ENABLE_FIXED_SCREEN_SIZE_POINT_MARKERS (1 && ENABLE_2_3_0_ALPHA4) +#define ENABLE_SHOW_OPTION_POINT_LAYERS (1 && ENABLE_2_3_0_ALPHA4) //=================== @@ -79,6 +78,7 @@ //=================== #define ENABLE_2_3_0_BETA1 1 -#define ENABLE_SHOW_WIPE_MOVES (1 && ENABLE_GCODE_VIEWER && ENABLE_2_3_0_BETA1) +#define ENABLE_SHOW_WIPE_MOVES (1 && ENABLE_2_3_0_BETA1) + #endif // _prusaslicer_technologies_h_ From 3d78ae9271f401838d3886716e3b61bbd591cf48 Mon Sep 17 00:00:00 2001 From: David Kocik <kocikdav@gmail.com> Date: Wed, 25 Nov 2020 12:28:10 +0100 Subject: [PATCH 108/138] Instance check on windows: concider whole window name when searching for another instance --- src/slic3r/GUI/InstanceCheck.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/InstanceCheck.cpp b/src/slic3r/GUI/InstanceCheck.cpp index aaf3ba3c6..d4dfa1f35 100644 --- a/src/slic3r/GUI/InstanceCheck.cpp +++ b/src/slic3r/GUI/InstanceCheck.cpp @@ -79,7 +79,7 @@ namespace instance_check_internal return true; std::wstring classNameString(className); std::wstring wndTextString(wndText); - if (wndTextString.find(L"PrusaSlicer") == 0 && classNameString == L"wxWindowNR") { + if (wndTextString.find(L"PrusaSlicer") != std::wstring::npos && classNameString == L"wxWindowNR") { //check if other instances has same instance hash //if not it is not same version(binary) as this version HANDLE handle = GetProp(hwnd, L"Instance_Hash_Minor"); From abf5a58336e8b75cb38a351e555c4dd1ec3842b7 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Wed, 25 Nov 2020 12:40:05 +0100 Subject: [PATCH 109/138] Preference dialog centered on the application --- src/slic3r/GUI/Preferences.cpp | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 95e86ff7e..578c9d397 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -256,8 +256,8 @@ void PreferencesDialog::build() create_settings_mode_widget(); } - if (is_editor) { #if ENABLE_ENVIRONMENT_MAP + if (is_editor) { m_optgroup_render = std::make_shared<ConfigOptionsGroup>(this, _L("Render")); m_optgroup_render->label_width = 40; m_optgroup_render->m_on_change = [this](t_config_option_key opt_key, boost::any value) { @@ -272,8 +272,8 @@ void PreferencesDialog::build() m_optgroup_render->append_single_option_line(option); m_optgroup_render->activate(); -#endif // ENABLE_ENVIRONMENT_MAP } +#endif // ENABLE_ENVIRONMENT_MAP auto sizer = new wxBoxSizer(wxVERTICAL); sizer->Add(m_optgroup_general->sizer, 0, wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT, 10); @@ -293,13 +293,13 @@ void PreferencesDialog::build() SetSizer(sizer); sizer->SetSizeHints(this); + this->CenterOnParent(); } void PreferencesDialog::accept() { - if (m_values.find("no_defaults") != m_values.end()) { + if (m_values.find("no_defaults") != m_values.end()) warning_catcher(this, wxString::Format(_L("You need to restart %s to make the changes effective."), SLIC3R_APP_NAME)); - } auto app_config = get_app_config(); @@ -308,9 +308,9 @@ void PreferencesDialog::accept() m_seq_top_layer_only_changed = app_config->get("seq_top_layer_only") != it->second; m_settings_layout_changed = false; - for (const std::string& key : {"old_settings_layout_mode", - "new_settings_layout_mode", - "dlg_settings_layout_mode" }) + for (const std::string& key : { "old_settings_layout_mode", + "new_settings_layout_mode", + "dlg_settings_layout_mode" }) { auto it = m_values.find(key); if (it != m_values.end() && app_config->get(key) != it->second) { @@ -319,8 +319,7 @@ void PreferencesDialog::accept() } } - for (const std::string& key : {"default_action_on_close_application", "default_action_on_select_preset"}) - { + for (const std::string& key : {"default_action_on_close_application", "default_action_on_select_preset"}) { auto it = m_values.find(key); if (it != m_values.end() && it->second != "none" && app_config->get(key) != "none") m_values.erase(it); // we shouldn't change value, if some of those parameters was selected, and then deselected @@ -421,9 +420,9 @@ void PreferencesDialog::create_icon_size_slider() void PreferencesDialog::create_settings_mode_widget() { - wxString choices[] = { _L("Old regular layout with the tab bar"), - _L("New layout, access via settings button in the top menu"), - _L("Settings in non-modal window") }; + wxString choices[] = { _L("Old regular layout with the tab bar"), + _L("New layout, access via settings button in the top menu"), + _L("Settings in non-modal window") }; auto app_config = get_app_config(); int selection = app_config->get("old_settings_layout_mode") == "1" ? 0 : @@ -432,14 +431,13 @@ void PreferencesDialog::create_settings_mode_widget() wxWindow* parent = m_optgroup_gui->ctrl_parent(); - m_layout_mode_box = new wxRadioBox(parent, wxID_ANY, _L("Layout Options"), wxDefaultPosition, wxDefaultSize, WXSIZEOF(choices), choices, - 3, wxRA_SPECIFY_ROWS); + m_layout_mode_box = new wxRadioBox(parent, wxID_ANY, _L("Layout Options"), wxDefaultPosition, wxDefaultSize, + WXSIZEOF(choices), choices, 3, wxRA_SPECIFY_ROWS); m_layout_mode_box->SetFont(wxGetApp().normal_font()); m_layout_mode_box->SetSelection(selection); m_layout_mode_box->Bind(wxEVT_RADIOBOX, [this](wxCommandEvent& e) { int selection = e.GetSelection(); - m_values["old_settings_layout_mode"] = boost::any_cast<bool>(selection == 0) ? "1" : "0"; m_values["new_settings_layout_mode"] = boost::any_cast<bool>(selection == 1) ? "1" : "0"; m_values["dlg_settings_layout_mode"] = boost::any_cast<bool>(selection == 2) ? "1" : "0"; @@ -447,7 +445,6 @@ void PreferencesDialog::create_settings_mode_widget() auto sizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(m_layout_mode_box, 1, wxALIGN_CENTER_VERTICAL); - m_optgroup_gui->sizer->Add(sizer, 0, wxEXPAND); } From 0a932ebfe37af8ded2506dca1d0a6df472b8deef Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Wed, 25 Nov 2020 13:56:57 +0100 Subject: [PATCH 110/138] Enable http digest authentication for CURL --- deps/deps-linux.cmake | 1 - deps/deps-macos.cmake | 1 - src/slic3r/Utils/Http.cpp | 9 +++++ src/slic3r/Utils/Http.hpp | 2 + tests/slic3rutils/slic3rutils_tests_main.cpp | 40 +++++++++++++++++++- 5 files changed, 50 insertions(+), 3 deletions(-) diff --git a/deps/deps-linux.cmake b/deps/deps-linux.cmake index ae972327f..420638d2f 100644 --- a/deps/deps-linux.cmake +++ b/deps/deps-linux.cmake @@ -80,7 +80,6 @@ ExternalProject_Add(dep_libcurl --disable-smb --disable-smtp --disable-gopher - --disable-crypto-auth --without-gssapi --without-libpsl --without-libidn2 diff --git a/deps/deps-macos.cmake b/deps/deps-macos.cmake index a71a0ebfc..f985cc561 100644 --- a/deps/deps-macos.cmake +++ b/deps/deps-macos.cmake @@ -67,7 +67,6 @@ ExternalProject_Add(dep_libcurl --disable-smb --disable-smtp --disable-gopher - --disable-crypto-auth --without-gssapi --without-libpsl --without-libidn2 diff --git a/src/slic3r/Utils/Http.cpp b/src/slic3r/Utils/Http.cpp index 31b23defd..94a8c9a56 100644 --- a/src/slic3r/Utils/Http.cpp +++ b/src/slic3r/Utils/Http.cpp @@ -448,6 +448,15 @@ Http& Http::auth_digest(const std::string &user, const std::string &password) return *this; } +Http& Http::auth_basic(const std::string &user, const std::string &password) +{ + curl_easy_setopt(p->curl, CURLOPT_USERNAME, user.c_str()); + curl_easy_setopt(p->curl, CURLOPT_PASSWORD, password.c_str()); + curl_easy_setopt(p->curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); + + return *this; +} + Http& Http::ca_file(const std::string &name) { if (p && priv::ca_file_supported(p->curl)) { diff --git a/src/slic3r/Utils/Http.hpp b/src/slic3r/Utils/Http.hpp index b629fb328..f34a27fbc 100644 --- a/src/slic3r/Utils/Http.hpp +++ b/src/slic3r/Utils/Http.hpp @@ -67,6 +67,8 @@ public: Http& remove_header(std::string name); // Authorization by HTTP digest, based on RFC2617. Http& auth_digest(const std::string &user, const std::string &password); + // Basic HTTP authorization + Http& auth_basic(const std::string &user, const std::string &password); // Sets a CA certificate file for usage with HTTPS. This is only supported on some backends, // specifically, this is supported with OpenSSL and NOT supported with Windows and OS X native certificate store. // See also ca_file_supported(). diff --git a/tests/slic3rutils/slic3rutils_tests_main.cpp b/tests/slic3rutils/slic3rutils_tests_main.cpp index b82114976..06989c5ee 100644 --- a/tests/slic3rutils/slic3rutils_tests_main.cpp +++ b/tests/slic3rutils/slic3rutils_tests_main.cpp @@ -2,7 +2,7 @@ #include "slic3r/Utils/Http.hpp" -TEST_CASE("Http", "[Http][NotWorking]") { +TEST_CASE("Check SSL certificates paths", "[Http][NotWorking]") { Slic3r::Http g = Slic3r::Http::get("https://github.com/"); @@ -20,3 +20,41 @@ TEST_CASE("Http", "[Http][NotWorking]") { REQUIRE(status == 200); } +TEST_CASE("Http digest authentication", "[Http][NotWorking]") { + Slic3r::Http g = Slic3r::Http::get("https://jigsaw.w3.org/HTTP/Digest/"); + + g.auth_digest("guest", "guest"); + + unsigned status = 0; + g.on_error([&status](std::string, std::string, unsigned http_status) { + status = http_status; + }); + + g.on_complete([&status](std::string /* body */, unsigned http_status){ + status = http_status; + }); + + g.perform_sync(); + + REQUIRE(status == 200); +} + +TEST_CASE("Http basic authentication", "[Http][NotWorking]") { + Slic3r::Http g = Slic3r::Http::get("https://jigsaw.w3.org/HTTP/Basic/"); + + g.auth_basic("guest", "guest"); + + unsigned status = 0; + g.on_error([&status](std::string, std::string, unsigned http_status) { + status = http_status; + }); + + g.on_complete([&status](std::string /* body */, unsigned http_status){ + status = http_status; + }); + + g.perform_sync(); + + REQUIRE(status == 200); +} + From e5b3af0e533eaffa575820e57cfda10d597b9666 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Wed, 25 Nov 2020 14:44:07 +0100 Subject: [PATCH 111/138] =?UTF-8?q?Fix=20of=20Monotonic=20infill=20leaves?= =?UTF-8?q?=20gaps=20in=20top=20infill=20where=20rectilinear=20does=20not?= =?UTF-8?q?=20#5259=20and=20Chyba=20nebo=20vlastnost=20v=C3=BDpln=C4=9B=20?= =?UTF-8?q?Monotonic=3F=20#5225?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libslic3r/Fill/FillBase.cpp | 8 +- src/libslic3r/Fill/FillRectilinear.cpp | 111 ++++++++++++++++++++----- 2 files changed, 94 insertions(+), 25 deletions(-) diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index 370b2f85a..cd2c1178b 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -910,12 +910,16 @@ void mark_boundary_segments_touching_infill( const std::vector<float> &contour_parameters = boundary_parameters[it_contour_and_segment->first]; const float contour_length = contour_parameters.back(); const float param_seg_pt1 = contour_parameters[it_contour_and_segment->second]; + const float param_seg_pt2 = contour_parameters[it_contour_and_segment->second + 1]; #ifdef INFILL_DEBUG_OUTPUT this->perimeter_overlaps.push_back({ Point((seg_pt1 + (seg_pt2 - seg_pt1).normalized() * interval.first).cast<coord_t>()), Point((seg_pt1 + (seg_pt2 - seg_pt1).normalized() * interval.second).cast<coord_t>()) }); #endif // INFILL_DEBUG_OUTPUT - const float param_overlap1 = param_seg_pt1 + interval.first; - const float param_overlap2 = param_seg_pt1 + interval.second; + assert(interval.first >= 0.); + assert(interval.second >= 0.); + assert(interval.first <= interval.second); + const auto param_overlap1 = std::min(param_seg_pt2, float(param_seg_pt1 + interval.first)); + const auto param_overlap2 = std::min(param_seg_pt2, float(param_seg_pt1 + interval.second)); // 2) Find the ContourIntersectionPoints before param_overlap1 and after param_overlap2. // Find the span of ContourIntersectionPoints, that is trimmed by the interval (param_overlap1, param_overlap2). ContourIntersectionPoint *ip_low, *ip_high; diff --git a/src/libslic3r/Fill/FillRectilinear.cpp b/src/libslic3r/Fill/FillRectilinear.cpp index 0a75b6729..e3860af46 100644 --- a/src/libslic3r/Fill/FillRectilinear.cpp +++ b/src/libslic3r/Fill/FillRectilinear.cpp @@ -19,6 +19,7 @@ #include "FillRectilinear.hpp" // #define SLIC3R_DEBUG +// #define INFILL_DEBUG_OUTPUT // Make assert active if SLIC3R_DEBUG #ifdef SLIC3R_DEBUG @@ -26,6 +27,10 @@ #include "SVG.hpp" #endif +#if defined(SLIC3R_DEBUG) || defined(INFILL_DEBUG_OUTPUT) + #include "SVG.hpp" +#endif + #include <cassert> // We want our version of assert. @@ -1870,6 +1875,60 @@ static std::vector<MonotonicRegion> generate_montonous_regions(std::vector<Segme return monotonic_regions; } +#ifdef INFILL_DEBUG_OUTPUT +static void export_monotonous_regions_to_svg( + const ExPolygonWithOffset &poly_with_offset, + const std::vector<SegmentedIntersectionLine> &segs, + const std::vector<MonotonicRegion> &monotonic_regions, + const std::string &path) +{ + BoundingBox bbox = get_extents(poly_with_offset.polygons_src); + bbox.offset(scale_(3.)); + + ::Slic3r::SVG svg(path, bbox); + svg.draw(poly_with_offset.polygons_src); + svg.draw_outline(poly_with_offset.polygons_src, "green"); + svg.draw_outline(poly_with_offset.polygons_outer, "green"); + svg.draw_outline(poly_with_offset.polygons_inner, "green"); + + // Draw the infill line candidates in red. + for (const SegmentedIntersectionLine &sil : segs) { + for (size_t i = 0; i + 1 < sil.intersections.size(); ++ i) + if (sil.intersections[i].type == SegmentIntersection::INNER_LOW && sil.intersections[i + 1].type == SegmentIntersection::INNER_HIGH) { + Line l(Point(sil.pos, sil.intersections[i].pos()), Point(sil.pos, sil.intersections[i + 1].pos())); + svg.draw(l, "blue"); + } else if (sil.intersections[i].type == SegmentIntersection::INNER_HIGH && sil.intersections[i].has_vertical_up()) { + std::string color; + const SegmentIntersection *it = &sil.intersections[i]; + switch (it->vertical_up_quality()) { + case SegmentIntersection::LinkQuality::Invalid: color = "red"; break; + case SegmentIntersection::LinkQuality::Valid: color = "blue"; break; + case SegmentIntersection::LinkQuality::TooLong: + default: color = "yellow"; break; + } + Polyline polyline; + polyline.points.push_back({ sil.pos, it->pos() }); + emit_perimeter_segment_on_vertical_line(poly_with_offset, segs, &sil - segs.data() , it->iContour, it - sil.intersections.data(), it->vertical_up(), polyline, it->has_left_vertical_up()); + svg.draw(polyline, color, scale_(0.05)); + } + } + + // Draw the monotonic regions. + for (const MonotonicRegion ®ion : monotonic_regions) { + auto draw_boundary_line = [&poly_with_offset, &segs, &svg](const MonotonicRegion::Boundary &boundary) { + const SegmentedIntersectionLine &sil = segs[boundary.vline]; + for (size_t i = boundary.low; i < boundary.high; ++ i) + if (sil.intersections[i].type == SegmentIntersection::INNER_LOW && sil.intersections[i + 1].type == SegmentIntersection::INNER_HIGH) { + Line l(Point(sil.pos, sil.intersections[i].pos()), Point(sil.pos, sil.intersections[i + 1].pos())); + svg.draw(l, "red", scale_(0.05)); + } + }; + draw_boundary_line(region.left); + draw_boundary_line(region.right); + } +} +#endif // INFILL_DEBUG_OUTPUT + // Traverse path, calculate length of the draw for the purpose of optimization. // This function is very similar to polylines_from_paths() in the way how it traverses the path, but // polylines_from_paths() emits a path, while this function just calculates the path length. @@ -1928,14 +1987,22 @@ static float montonous_region_path_length(const MonotonicRegion ®ion, bool di break; int inext = it->right_horizontal(); - if (inext != -1 && it->next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) { + assert(iright != -1); + assert(inext == -1 || inext == iright); + + // Find the end of the next overlapping vertical segment. + const SegmentedIntersectionLine &vline_right = segs[i_vline + 1]; + const SegmentIntersection *right = going_up ? + &vertical_run_top(vline_right, vline_right.intersections[iright]) : &vertical_run_bottom(vline_right, vline_right.intersections[iright]); + i_intersection = int(right - vline_right.intersections.data()); + + if (inext == i_intersection && it->next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) { // Summarize length of the connection line along the perimeter. //FIXME should it be weighted with a lower weight than non-extruding connection line? What weight? // Taking half of the length. total_length += 0.5f * float(measure_perimeter_horizontal_segment_length(poly_with_offset, segs, i_vline, it - vline.intersections.data(), inext)); // Don't add distance to the next vertical line start to the total length. - no_perimeter = false; - i_intersection = inext; + no_perimeter = false; } else { // Finish the current vertical line, going_up ? ++ it : -- it; @@ -1945,14 +2012,6 @@ static float montonous_region_path_length(const MonotonicRegion ®ion, bool di last_point = Vec2f(vline.pos, it->pos()); // Remember to add distance to the last point. no_perimeter = true; - if (inext == -1) { - // Find the end of the next overlapping vertical segment. - const SegmentedIntersectionLine &vline_right = segs[i_vline + 1]; - const SegmentIntersection *right = going_up ? - &vertical_run_top(vline_right, vline_right.intersections[iright]) : &vertical_run_bottom(vline_right, vline_right.intersections[iright]); - i_intersection = int(right - vline_right.intersections.data()); - } else - i_intersection = inext; } ++ i_vline; @@ -2493,7 +2552,7 @@ static void polylines_from_paths(const std::vector<MonotonicRegionLink> &path, c for (const MonotonicRegionLink &path_segment : path) { MonotonicRegion ®ion = *path_segment.region; - bool dir = path_segment.flipped; + bool dir = path_segment.flipped; // From the initial point (i_vline, i_intersection), follow a path. int i_intersection = region.left_intersection_point(dir); @@ -2579,11 +2638,19 @@ static void polylines_from_paths(const std::vector<MonotonicRegionLink> &path, c if (i_vline == region.right.vline) break; - int inext = it->right_horizontal(); - if (inext != -1 && it->next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) { + int inext = it->right_horizontal(); + assert(iright != -1); + assert(inext == -1 || inext == iright); + + // Find the end of the next overlapping vertical segment. + const SegmentedIntersectionLine &vline_right = segs[i_vline + 1]; + const SegmentIntersection *right = going_up ? + &vertical_run_top(vline_right, vline_right.intersections[iright]) : &vertical_run_bottom(vline_right, vline_right.intersections[iright]); + i_intersection = int(right - vline_right.intersections.data()); + + if (inext == i_intersection && it->next_on_contour_quality == SegmentIntersection::LinkQuality::Valid) { // Emit a horizontal connection contour. emit_perimeter_prev_next_segment(poly_with_offset, segs, i_vline, it->iContour, it - vline.intersections.data(), inext, *polyline, true); - i_intersection = inext; } else { // Finish the current vertical line, going_up ? ++ it : -- it; @@ -2591,14 +2658,6 @@ static void polylines_from_paths(const std::vector<MonotonicRegionLink> &path, c assert(it->is_high() == going_up); polyline->points.back() = Point(vline.pos, it->pos()); finish_polyline(); - if (inext == -1) { - // Find the end of the next overlapping vertical segment. - const SegmentedIntersectionLine &vline_right = segs[i_vline + 1]; - const SegmentIntersection *right = going_up ? - &vertical_run_top(vline_right, vline_right.intersections[iright]) : &vertical_run_bottom(vline_right, vline_right.intersections[iright]); - i_intersection = int(right - vline_right.intersections.data()); - } else - i_intersection = inext; } ++ i_vline; @@ -2717,6 +2776,12 @@ bool FillRectilinear::fill_surface_by_lines(const Surface *surface, const FillPa // Insert phony OUTER_HIGH / OUTER_LOW pairs at the position where the contour is pinched. pinch_contours_insert_phony_outer_intersections(segs); std::vector<MonotonicRegion> regions = generate_montonous_regions(segs); +#ifdef INFILL_DEBUG_OUTPUT + { + static int iRun; + export_monotonous_regions_to_svg(poly_with_offset, segs, regions, debug_out_path("%s-%03d.svg", "MontonousRegions-initial", iRun ++)); + } +#endif // INFILL_DEBUG_OUTPUT connect_monotonic_regions(regions, poly_with_offset, segs); if (! regions.empty()) { std::mt19937_64 rng; From 3e54c0b775f94e6f8da79798a6545f38db871ec2 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Wed, 25 Nov 2020 14:55:39 +0100 Subject: [PATCH 112/138] Gyroid infill: Lowered the threshold to drop infill line segments. --- src/libslic3r/Fill/FillGyroid.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Fill/FillGyroid.cpp b/src/libslic3r/Fill/FillGyroid.cpp index 5cbfed57c..5797c47a5 100644 --- a/src/libslic3r/Fill/FillGyroid.cpp +++ b/src/libslic3r/Fill/FillGyroid.cpp @@ -182,12 +182,14 @@ void FillGyroid::_fill_surface_single( polylines = intersection_pl(polylines, to_polygons(expolygon)); - if (! polylines.empty()) - // remove too small bits (larger than longer) + if (! polylines.empty()) { + // Remove very small bits, but be careful to not remove infill lines connecting thin walls! + // The infill perimeter lines should be separated by around a single infill line width. + const double minlength = scale_(0.8 * this->spacing); polylines.erase( - //FIXME what is the small size? Removing tiny extrusions disconnects walls! - std::remove_if(polylines.begin(), polylines.end(), [this](const Polyline &pl) { return pl.length() < scale_(this->spacing * 3); }), + std::remove_if(polylines.begin(), polylines.end(), [minlength](const Polyline &pl) { return pl.length() < minlength; }), polylines.end()); + } if (! polylines.empty()) { // connect lines From 9305535039e1b411f777b745265d6f1d100ea95f Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Wed, 25 Nov 2020 19:18:44 +0100 Subject: [PATCH 113/138] OSX and Linux specific: Fixed preset selection --- src/slic3r/GUI/Field.cpp | 18 +++++++++++++----- src/slic3r/GUI/PresetComboBoxes.cpp | 11 ++++++++++- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index a0176ad4a..67bd1c455 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -861,9 +861,15 @@ void Choice::BUILD() { temp->SetItemBitmap(0, empty_bmp); #endif -// temp->Bind(wxEVT_TEXT, ([this](wxCommandEvent e) { on_change_field(); }), temp->GetId()); temp->Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent&) { m_is_dropped = true; }); - temp->Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent&) { m_is_dropped = false; }); + temp->Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent& evt) { + // EVT_COMBOBOX_CLOSEUP is called after EVT_COMBOBOX on Windows + // so, always set m_suppress_change to "true" +#ifndef __WXMSW__ + if (m_last_selected == evt.GetSelection()) +#endif //__WXMSW__ + m_is_dropped = false; + }); temp->Bind(wxEVT_COMBOBOX, ([this, temp](wxCommandEvent evt) { if (m_suppress_scroll) { @@ -874,6 +880,7 @@ void Choice::BUILD() { m_last_selected = evt.GetSelection(); } on_change_field(); + m_is_dropped = false; }), temp->GetId()); if (m_is_editable) { @@ -998,13 +1005,14 @@ void Choice::set_value(const boost::any& value, bool change_event) else text_value = boost::any_cast<wxString>(value); size_t idx = 0; - for (auto el : m_opt.enum_values) + const std::vector<std::string>& enums = m_opt.enum_values.empty() ? m_opt.enum_labels : m_opt.enum_values; + for (auto el : enums) { if (el == text_value) break; ++idx; } - if (idx == m_opt.enum_values.size()) { + if (idx == enums.size()) { // For editable Combobox under OSX is needed to set selection to -1 explicitly, // otherwise selection doesn't be changed field->SetSelection(-1); @@ -1012,7 +1020,7 @@ void Choice::set_value(const boost::any& value, bool change_event) } else field->SetSelection(idx); - if (m_suppress_scroll && idx < m_opt.enum_values.size()) m_last_selected = idx; + if (m_suppress_scroll && idx < enums.size()) m_last_selected = idx; break; } case coEnum: { diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index 78559b937..c60c84bad 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -104,7 +104,14 @@ PresetComboBox::PresetComboBox(wxWindow* parent, Preset::Type preset_type, const // parameters for an icon's drawing fill_width_height(); Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent& evt) { m_suppress_change = false; }); - Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent& evt) { m_suppress_change = true ; }); + Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent& evt) { + // EVT_COMBOBOX_CLOSEUP is called after EVT_COMBOBOX on Windows + // so, always set m_suppress_change to "true" +#ifndef __WXMSW__ + if (m_last_selected == evt.GetSelection()) +#endif //__WXMSW__ + m_suppress_change = true; + }); Bind(wxEVT_COMBOBOX, [this](wxCommandEvent& evt) { // see https://github.com/prusa3d/PrusaSlicer/issues/3889 @@ -572,6 +579,7 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset } else { evt.StopPropagation(); } + m_suppress_change = true; }); if (m_type == Preset::TYPE_FILAMENT) @@ -911,6 +919,7 @@ TabPresetComboBox::TabPresetComboBox(wxWindow* parent, Preset::Type preset_type) } evt.StopPropagation(); + m_suppress_change = true; }); } From 275bc52fdf890756c9b19bf71090dfbf2ab699a2 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Wed, 25 Nov 2020 20:11:53 +0100 Subject: [PATCH 114/138] Suppress scroll for SLA support and pad settings on the right panel --- src/slic3r/GUI/Plater.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 11c2448b7..05a30584a 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -513,6 +513,10 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent) : m_og_sla->append_line(line); m_og_sla->activate(); + choice = dynamic_cast<Choice*>(m_og_sla->get_field("support")); + choice->suppress_scroll(); + choice = dynamic_cast<Choice*>(m_og_sla->get_field("pad")); + choice->suppress_scroll(); m_sizer = new wxBoxSizer(wxVERTICAL); m_sizer->Add(m_og->sizer, 0, wxEXPAND); From 32c60b070ece10da07a9ed951067a4b81abb9e85 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Wed, 25 Nov 2020 21:18:51 +0100 Subject: [PATCH 115/138] Hot fix for https://github.com/prusa3d/PrusaSlicer/commit/9305535039e1b411f777b745265d6f1d100ea95f --- src/slic3r/GUI/Field.cpp | 4 ++-- src/slic3r/GUI/PresetComboBoxes.cpp | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 67bd1c455..7c7838afa 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -862,11 +862,11 @@ void Choice::BUILD() { #endif temp->Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent&) { m_is_dropped = true; }); - temp->Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent& evt) { + temp->Bind(wxEVT_COMBOBOX_CLOSEUP, [this, temp](wxCommandEvent&) { // EVT_COMBOBOX_CLOSEUP is called after EVT_COMBOBOX on Windows // so, always set m_suppress_change to "true" #ifndef __WXMSW__ - if (m_last_selected == evt.GetSelection()) + if (m_last_selected == temp->GetSelection()) #endif //__WXMSW__ m_is_dropped = false; }); diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index c60c84bad..1fbded377 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -103,12 +103,12 @@ PresetComboBox::PresetComboBox(wxWindow* parent, Preset::Type preset_type, const // parameters for an icon's drawing fill_width_height(); - Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent& evt) { m_suppress_change = false; }); - Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent& evt) { + Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent&) { m_suppress_change = false; }); + Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent&) { // EVT_COMBOBOX_CLOSEUP is called after EVT_COMBOBOX on Windows // so, always set m_suppress_change to "true" #ifndef __WXMSW__ - if (m_last_selected == evt.GetSelection()) + if (m_last_selected == this->GetSelection()) #endif //__WXMSW__ m_suppress_change = true; }); From 9bb0848d27d5a5fb714b7ad116001c304f9d4830 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Wed, 25 Nov 2020 22:45:24 +0100 Subject: [PATCH 116/138] PhysicalPrinterDialog: Fixed editing of the SLA physical printers Bug repro: 1. Create sla physical printer. 2. Close dialog. 3. Open dialog to edit printer -> in preset combobox is selected fff printer preset --- src/slic3r/GUI/PhysicalPrinterDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/PhysicalPrinterDialog.cpp b/src/slic3r/GUI/PhysicalPrinterDialog.cpp index b9096ce10..a82161055 100644 --- a/src/slic3r/GUI/PhysicalPrinterDialog.cpp +++ b/src/slic3r/GUI/PhysicalPrinterDialog.cpp @@ -189,10 +189,10 @@ PhysicalPrinterDialog::PhysicalPrinterDialog(wxWindow* parent, wxString printer_ } else { + m_printer = *printer; const std::set<std::string>& preset_names = printer->get_preset_names(); for (const std::string& preset_name : preset_names) m_presets.emplace_back(new PresetForPrinter(this, preset_name)); - m_printer = *printer; } if (m_presets.size() == 1) From 4d483f323f732ceccf6e581e160b962aa49d09f5 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Thu, 26 Nov 2020 08:43:04 +0100 Subject: [PATCH 117/138] GCode Viewer -> Show extimated layer time on the vertical slider for gcode produced by PrusaSlicer 2.3.0, Cura, Simplify3D, CraftWare, ideaMaker --- src/libslic3r/GCode/GCodeProcessor.cpp | 49 +++++++++++++++++++++++--- src/slic3r/GUI/DoubleSlider.cpp | 2 +- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index d30ec70b5..65f0859ae 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -403,7 +403,13 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename) // remove trailing '\n' assert(! gcode_line.empty()); assert(gcode_line.back() == '\n'); - return gcode_line.substr(0, gcode_line.length() - 1) == ";" + Layer_Change_Tag; + + // return true for decorations which are used in processing the gcode but that should not be exported into the final gcode + // i.e.: + // bool ret = gcode_line.substr(0, gcode_line.length() - 1) == ";" + Layer_Change_Tag; + // ... + // return ret; + return false; }; // Iterators for the normal and silent cached time estimate entry recently processed, used by process_line_G1. @@ -1211,6 +1217,14 @@ bool GCodeProcessor::process_cura_tags(const std::string_view comment) return true; } + // layer + tag = "LAYER:"; + pos = comment.find(tag); + if (pos != comment.npos) { + ++m_layer_id; + return true; + } + return false; } @@ -1295,9 +1309,8 @@ bool GCodeProcessor::process_simplify3d_tags(const std::string_view comment) return true; } -#if ENABLE_GCODE_VIEWER_DATA_CHECKING // geometry - +#if ENABLE_GCODE_VIEWER_DATA_CHECKING // ; tool std::string tag = " tool"; pos = comment.find(tag); @@ -1322,6 +1335,19 @@ bool GCodeProcessor::process_simplify3d_tags(const std::string_view comment) } #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING + // ; layer + std::string tag = " layer"; + pos = comment.find(tag); + if (pos == 0) { + // skip lines "; layer end" + const std::string_view data = comment.substr(pos + tag.length()); + size_t end_start = data.find("end"); + if (end_start == data.npos) + ++m_layer_id; + + return true; + } + return false; } @@ -1362,6 +1388,13 @@ bool GCodeProcessor::process_craftware_tags(const std::string_view comment) return true; } + // layer + pos = comment.find(" Layer #"); + if (pos == 0) { + ++m_layer_id; + return true; + } + return false; } @@ -1393,9 +1426,8 @@ bool GCodeProcessor::process_ideamaker_tags(const std::string_view comment) return true; } -#if ENABLE_GCODE_VIEWER_DATA_CHECKING // geometry - +#if ENABLE_GCODE_VIEWER_DATA_CHECKING // width tag = "WIDTH:"; pos = comment.find(tag); @@ -1415,6 +1447,13 @@ bool GCodeProcessor::process_ideamaker_tags(const std::string_view comment) } #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING + // layer + pos = comment.find("LAYER:"); + if (pos == 0) { + ++m_layer_id; + return true; + } + return false; } diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index f4838e7b8..3fb47418d 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -629,7 +629,7 @@ wxString Control::get_label(int tick, LabelType label_type/* = ltHeightWithLayer return wxString::Format("%d", static_cast<unsigned int>(m_values[value])); else { if (label_type == ltEstimatedTime) { - if (m_values.size() != m_layers_times.size()) + if (value > m_layers_times.size() - 1) return wxEmptyString; return short_and_splitted_time(get_time_dhms(m_layers_times[value])); } From aa6ddfec85975d3ad1ba3de64126d4fc535a472d Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Thu, 26 Nov 2020 09:01:27 +0100 Subject: [PATCH 118/138] Added functions to export raw image data to PNG for debugging purposes. Renamed PNGRead.cpp/hpp to PNGReadWrite.cpp,hpp EdgeGrid: Resurrected debugging output to PNG. --- src/libslic3r/CMakeLists.txt | 4 +- src/libslic3r/EdgeGrid.cpp | 93 +++----- src/libslic3r/EdgeGrid.hpp | 4 +- src/libslic3r/Format/SL1.cpp | 2 +- src/libslic3r/PNGRead.cpp | 100 -------- src/libslic3r/PNGReadWrite.cpp | 219 ++++++++++++++++++ .../{PNGRead.hpp => PNGReadWrite.hpp} | 12 + tests/libslic3r/test_png_io.cpp | 2 +- 8 files changed, 273 insertions(+), 163 deletions(-) delete mode 100644 src/libslic3r/PNGRead.cpp create mode 100644 src/libslic3r/PNGReadWrite.cpp rename src/libslic3r/{PNGRead.hpp => PNGReadWrite.hpp} (65%) diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 0cf5af93c..c475c6575 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -159,8 +159,8 @@ add_library(libslic3r STATIC PrintConfig.hpp PrintObject.cpp PrintRegion.cpp - PNGRead.hpp - PNGRead.cpp + PNGReadWrite.hpp + PNGReadWrite.cpp Semver.cpp ShortestPath.cpp ShortestPath.hpp diff --git a/src/libslic3r/EdgeGrid.cpp b/src/libslic3r/EdgeGrid.cpp index fa68092ee..e7307fda4 100644 --- a/src/libslic3r/EdgeGrid.cpp +++ b/src/libslic3r/EdgeGrid.cpp @@ -3,16 +3,16 @@ #include <float.h> #include <unordered_map> -#if 0 -// #ifdef SLIC3R_GUI -#include <wx/image.h> -#endif /* SLIC3R_GUI */ +#include <png.h> #include "libslic3r.h" #include "ClipperUtils.hpp" #include "EdgeGrid.hpp" #include "Geometry.hpp" #include "SVG.hpp" +#include "PNGReadWrite.hpp" + +// #define EDGE_GRID_DEBUG_OUTPUT #if 0 // Enable debugging and assert in this file. @@ -677,6 +677,11 @@ struct PropagateDanielssonSingleVStep3 { void EdgeGrid::Grid::calculate_sdf() { +#ifdef EDGE_GRID_DEBUG_OUTPUT + static int iRun = 0; + ++ iRun; +#endif + // 1) Initialize a signum and an unsigned vector to a zero iso surface. size_t nrows = m_rows + 1; size_t ncols = m_cols + 1; @@ -774,19 +779,12 @@ void EdgeGrid::Grid::calculate_sdf() } } -#if 0 - static int iRun = 0; - ++ iRun; - if (wxImage::FindHandler(wxBITMAP_TYPE_PNG) == nullptr) - wxImage::AddHandler(new wxPNGHandler); -//#ifdef SLIC3R_GUI +#ifdef EDGE_GRID_DEBUG_OUTPUT { - wxImage img(ncols, nrows); - unsigned char *data = img.GetData(); - memset(data, 0, ncols * nrows * 3); - for (coord_t r = 0; r < nrows; ++r) { - for (coord_t c = 0; c < ncols; ++c) { - unsigned char *pxl = data + (((nrows - r - 1) * ncols) + c) * 3; + std::vector<uint8_t> pixels(ncols * nrows * 3, 0); + for (coord_t r = 0; r < nrows; ++ r) { + for (coord_t c = 0; c < ncols; ++ c) { + uint8_t *pxl = pixels.data() + (((nrows - r - 1) * ncols) + c) * 3; float d = m_signed_distance_field[r * ncols + c]; if (d != search_radius) { float s = 255 * d / search_radius; @@ -802,15 +800,13 @@ void EdgeGrid::Grid::calculate_sdf() } } } - img.SaveFile(debug_out_path("unsigned_df-%d.png", iRun), wxBITMAP_TYPE_PNG); + png::write_rgb_to_file_scaled(debug_out_path("unsigned_df-%d.png", iRun), ncols, nrows, pixels, 10); } { - wxImage img(ncols, nrows); - unsigned char *data = img.GetData(); - memset(data, 0, ncols * nrows * 3); - for (coord_t r = 0; r < nrows; ++r) { - for (coord_t c = 0; c < ncols; ++c) { - unsigned char *pxl = data + (((nrows - r - 1) * ncols) + c) * 3; + std::vector<uint8_t> pixels(ncols * nrows * 3, 0); + for (coord_t r = 0; r < nrows; ++ r) { + for (coord_t c = 0; c < ncols; ++ c) { + unsigned char *pxl = pixels.data() + (((nrows - r - 1) * ncols) + c) * 3; float d = m_signed_distance_field[r * ncols + c]; if (d != search_radius) { float s = 255 * d / search_radius; @@ -835,9 +831,9 @@ void EdgeGrid::Grid::calculate_sdf() } } } - img.SaveFile(debug_out_path("signed_df-%d.png", iRun), wxBITMAP_TYPE_PNG); + png::write_rgb_to_file_scaled(debug_out_path("signed_df-%d.png", iRun), ncols, nrows, pixels, 10); } -#endif /* SLIC3R_GUI */ +#endif // EDGE_GRID_DEBUG_OUTPUT // 2) Propagate the signum. #define PROPAGATE_SIGNUM_SINGLE_STEP(DELTA) do { \ @@ -909,17 +905,14 @@ void EdgeGrid::Grid::calculate_sdf() } } -#if 0 -//#ifdef SLIC3R_GUI +#ifdef EDGE_GRID_DEBUG_OUTPUT { - wxImage img(ncols, nrows); - unsigned char *data = img.GetData(); - memset(data, 0, ncols * nrows * 3); + std::vector<uint8_t> pixels(ncols * nrows * 3, 0); float search_radius = float(m_resolution * 5); for (coord_t r = 0; r < nrows; ++r) { for (coord_t c = 0; c < ncols; ++c) { - unsigned char *pxl = data + (((nrows - r - 1) * ncols) + c) * 3; - unsigned char sign = signs[r * ncols + c]; + uint8_t *pxl = pixels.data() + (((nrows - r - 1) * ncols) + c) * 3; + uint8_t sign = signs[r * ncols + c]; switch (sign) { case 0: // Positive, outside of a narrow band. @@ -960,20 +953,17 @@ void EdgeGrid::Grid::calculate_sdf() } } } - img.SaveFile(debug_out_path("signed_df-signs-%d.png", iRun), wxBITMAP_TYPE_PNG); + png::write_rgb_to_file_scaled(debug_out_path("signed_df-signs-%d.png", iRun), ncols, nrows, pixels, 10); } -#endif /* SLIC3R_GUI */ +#endif // EDGE_GRID_DEBUG_OUTPUT -#if 0 -//#ifdef SLIC3R_GUI +#ifdef EDGE_GRID_DEBUG_OUTPUT { - wxImage img(ncols, nrows); - unsigned char *data = img.GetData(); - memset(data, 0, ncols * nrows * 3); + std::vector<uint8_t> pixels(ncols * nrows * 3, 0); float search_radius = float(m_resolution * 5); for (coord_t r = 0; r < nrows; ++r) { for (coord_t c = 0; c < ncols; ++c) { - unsigned char *pxl = data + (((nrows - r - 1) * ncols) + c) * 3; + uint8_t *pxl = pixels.data() + (((nrows - r - 1) * ncols) + c) * 3; float d = m_signed_distance_field[r * ncols + c]; float s = 255.f * fabs(d) / search_radius; int is = std::max(0, std::min(255, int(floor(s + 0.5f)))); @@ -989,9 +979,9 @@ void EdgeGrid::Grid::calculate_sdf() } } } - img.SaveFile(debug_out_path("signed_df2-%d.png", iRun), wxBITMAP_TYPE_PNG); + png::write_rgb_to_file_scaled(debug_out_path("signed_df2-%d.png", iRun), ncols, nrows, pixels, 10); } -#endif /* SLIC3R_GUI */ +#endif // EDGE_GRID_DEBUG_OUTPUT } float EdgeGrid::Grid::signed_distance_bilinear(const Point &pt) const @@ -1491,26 +1481,18 @@ bool EdgeGrid::Grid::has_intersecting_edges() const return false; } -#if 0 -void EdgeGrid::save_png(const EdgeGrid::Grid &grid, const BoundingBox &bbox, coord_t resolution, const char *path) +void EdgeGrid::save_png(const EdgeGrid::Grid &grid, const BoundingBox &bbox, coord_t resolution, const char *path, size_t scale) { - if (wxImage::FindHandler(wxBITMAP_TYPE_PNG) == nullptr) - wxImage::AddHandler(new wxPNGHandler); - unsigned int w = (bbox.max(0) - bbox.min(0) + resolution - 1) / resolution; unsigned int h = (bbox.max(1) - bbox.min(1) + resolution - 1) / resolution; - wxImage img(w, h); - unsigned char *data = img.GetData(); - memset(data, 0, w * h * 3); - static int iRun = 0; - ++iRun; - + std::vector<uint8_t> pixels(w * h * 3, 0); + const coord_t search_radius = grid.resolution() * 2; const coord_t display_blend_radius = grid.resolution() * 2; for (coord_t r = 0; r < h; ++r) { for (coord_t c = 0; c < w; ++ c) { - unsigned char *pxl = data + (((h - r - 1) * w) + c) * 3; + unsigned char *pxl = pixels.data() + (((h - r - 1) * w) + c) * 3; Point pt(c * resolution + bbox.min(0), r * resolution + bbox.min(1)); coordf_t min_dist; bool on_segment = true; @@ -1584,9 +1566,8 @@ void EdgeGrid::save_png(const EdgeGrid::Grid &grid, const BoundingBox &bbox, coo } } - img.SaveFile(path, wxBITMAP_TYPE_PNG); + png::write_rgb_to_file_scaled(path, w, h, pixels, scale); } -#endif /* SLIC3R_GUI */ // Find all pairs of intersectiong edges from the set of polygons. std::vector<std::pair<EdgeGrid::Grid::ContourEdge, EdgeGrid::Grid::ContourEdge>> intersecting_edges(const Polygons &polygons) diff --git a/src/libslic3r/EdgeGrid.hpp b/src/libslic3r/EdgeGrid.hpp index fd13ddc7f..e8a8d4374 100644 --- a/src/libslic3r/EdgeGrid.hpp +++ b/src/libslic3r/EdgeGrid.hpp @@ -309,10 +309,8 @@ protected: std::vector<float> m_signed_distance_field; }; -#if 0 // Debugging utility. Save the signed distance field. -extern void save_png(const Grid &grid, const BoundingBox &bbox, coord_t resolution, const char *path); -#endif /* SLIC3R_GUI */ +extern void save_png(const Grid &grid, const BoundingBox &bbox, coord_t resolution, const char *path, size_t scale = 1); } // namespace EdgeGrid diff --git a/src/libslic3r/Format/SL1.cpp b/src/libslic3r/Format/SL1.cpp index c4a9f5864..f04855182 100644 --- a/src/libslic3r/Format/SL1.cpp +++ b/src/libslic3r/Format/SL1.cpp @@ -18,7 +18,7 @@ #include "libslic3r/PrintConfig.hpp" #include "libslic3r/SLA/RasterBase.hpp" #include "libslic3r/miniz_extension.hpp" -#include "libslic3r/PNGRead.hpp" +#include "libslic3r/PNGReadWrite.hpp" #include <boost/property_tree/ini_parser.hpp> #include <boost/filesystem/path.hpp> diff --git a/src/libslic3r/PNGRead.cpp b/src/libslic3r/PNGRead.cpp deleted file mode 100644 index e66143b84..000000000 --- a/src/libslic3r/PNGRead.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "PNGRead.hpp" - -#include <memory> - -#include <cstdio> -#include <png.h> - -namespace Slic3r { namespace png { - -struct PNGDescr { - png_struct *png = nullptr; png_info *info = nullptr; - - PNGDescr() = default; - PNGDescr(const PNGDescr&) = delete; - PNGDescr(PNGDescr&&) = delete; - PNGDescr& operator=(const PNGDescr&) = delete; - PNGDescr& operator=(PNGDescr&&) = delete; - - ~PNGDescr() - { - if (png && info) png_destroy_info_struct(png, &info); - if (png) png_destroy_read_struct( &png, nullptr, nullptr); - } -}; - -bool is_png(const ReadBuf &rb) -{ - static const constexpr int PNG_SIG_BYTES = 8; - -#if PNG_LIBPNG_VER_MINOR <= 2 - // Earlier libpng versions had png_sig_cmp(png_bytep, ...) which is not - // a const pointer. It is not possible to cast away the const qualifier from - // the input buffer so... yes... life is challenging... - png_byte buf[PNG_SIG_BYTES]; - auto inbuf = static_cast<const std::uint8_t *>(rb.buf); - std::copy(inbuf, inbuf + PNG_SIG_BYTES, buf); -#else - auto buf = static_cast<png_const_bytep>(rb.buf); -#endif - - return rb.sz >= PNG_SIG_BYTES && !png_sig_cmp(buf, 0, PNG_SIG_BYTES); -} - -// Buffer read callback for libpng. It provides an allocated output buffer and -// the amount of data it desires to read from the input. -void png_read_callback(png_struct *png_ptr, - png_bytep outBytes, - png_size_t byteCountToRead) -{ - // Retrieve our input buffer through the png_ptr - auto reader = static_cast<IStream *>(png_get_io_ptr(png_ptr)); - - if (!reader || !reader->is_ok()) return; - - reader->read(static_cast<std::uint8_t *>(outBytes), byteCountToRead); -} - -bool decode_png(IStream &in_buf, ImageGreyscale &out_img) -{ - static const constexpr int PNG_SIG_BYTES = 8; - - std::vector<png_byte> sig(PNG_SIG_BYTES, 0); - in_buf.read(sig.data(), PNG_SIG_BYTES); - if (!png_check_sig(sig.data(), PNG_SIG_BYTES)) - return false; - - PNGDescr dsc; - dsc.png = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, - nullptr); - - if(!dsc.png) return false; - - dsc.info = png_create_info_struct(dsc.png); - if(!dsc.info) return false; - - png_set_read_fn(dsc.png, static_cast<void *>(&in_buf), png_read_callback); - - // Tell that we have already read the first bytes to check the signature - png_set_sig_bytes(dsc.png, PNG_SIG_BYTES); - - png_read_info(dsc.png, dsc.info); - - out_img.cols = png_get_image_width(dsc.png, dsc.info); - out_img.rows = png_get_image_height(dsc.png, dsc.info); - size_t color_type = png_get_color_type(dsc.png, dsc.info); - size_t bit_depth = png_get_bit_depth(dsc.png, dsc.info); - - if (color_type != PNG_COLOR_TYPE_GRAY || bit_depth != 8) - return false; - - out_img.buf.resize(out_img.rows * out_img.cols); - - auto readbuf = static_cast<png_bytep>(out_img.buf.data()); - for (size_t r = 0; r < out_img.rows; ++r) - png_read_row(dsc.png, readbuf + r * out_img.cols, nullptr); - - return true; -} - -}} // namespace Slic3r::png diff --git a/src/libslic3r/PNGReadWrite.cpp b/src/libslic3r/PNGReadWrite.cpp new file mode 100644 index 000000000..2b7f64f6d --- /dev/null +++ b/src/libslic3r/PNGReadWrite.cpp @@ -0,0 +1,219 @@ +#include "PNGReadWrite.hpp" + +#include <memory> + +#include <cstdio> +#include <png.h> + +#include <boost/log/trivial.hpp> +#include <boost/nowide/cstdio.hpp> + +namespace Slic3r { namespace png { + +struct PNGDescr { + png_struct *png = nullptr; png_info *info = nullptr; + + PNGDescr() = default; + PNGDescr(const PNGDescr&) = delete; + PNGDescr(PNGDescr&&) = delete; + PNGDescr& operator=(const PNGDescr&) = delete; + PNGDescr& operator=(PNGDescr&&) = delete; + + ~PNGDescr() + { + if (png && info) png_destroy_info_struct(png, &info); + if (png) png_destroy_read_struct( &png, nullptr, nullptr); + } +}; + +bool is_png(const ReadBuf &rb) +{ + static const constexpr int PNG_SIG_BYTES = 8; + +#if PNG_LIBPNG_VER_MINOR <= 2 + // Earlier libpng versions had png_sig_cmp(png_bytep, ...) which is not + // a const pointer. It is not possible to cast away the const qualifier from + // the input buffer so... yes... life is challenging... + png_byte buf[PNG_SIG_BYTES]; + auto inbuf = static_cast<const std::uint8_t *>(rb.buf); + std::copy(inbuf, inbuf + PNG_SIG_BYTES, buf); +#else + auto buf = static_cast<png_const_bytep>(rb.buf); +#endif + + return rb.sz >= PNG_SIG_BYTES && !png_sig_cmp(buf, 0, PNG_SIG_BYTES); +} + +// Buffer read callback for libpng. It provides an allocated output buffer and +// the amount of data it desires to read from the input. +static void png_read_callback(png_struct *png_ptr, + png_bytep outBytes, + png_size_t byteCountToRead) +{ + // Retrieve our input buffer through the png_ptr + auto reader = static_cast<IStream *>(png_get_io_ptr(png_ptr)); + + if (!reader || !reader->is_ok()) return; + + reader->read(static_cast<std::uint8_t *>(outBytes), byteCountToRead); +} + +bool decode_png(IStream &in_buf, ImageGreyscale &out_img) +{ + static const constexpr int PNG_SIG_BYTES = 8; + + std::vector<png_byte> sig(PNG_SIG_BYTES, 0); + in_buf.read(sig.data(), PNG_SIG_BYTES); + if (!png_check_sig(sig.data(), PNG_SIG_BYTES)) + return false; + + PNGDescr dsc; + dsc.png = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, + nullptr); + + if(!dsc.png) return false; + + dsc.info = png_create_info_struct(dsc.png); + if(!dsc.info) return false; + + png_set_read_fn(dsc.png, static_cast<void *>(&in_buf), png_read_callback); + + // Tell that we have already read the first bytes to check the signature + png_set_sig_bytes(dsc.png, PNG_SIG_BYTES); + + png_read_info(dsc.png, dsc.info); + + out_img.cols = png_get_image_width(dsc.png, dsc.info); + out_img.rows = png_get_image_height(dsc.png, dsc.info); + size_t color_type = png_get_color_type(dsc.png, dsc.info); + size_t bit_depth = png_get_bit_depth(dsc.png, dsc.info); + + if (color_type != PNG_COLOR_TYPE_GRAY || bit_depth != 8) + return false; + + out_img.buf.resize(out_img.rows * out_img.cols); + + auto readbuf = static_cast<png_bytep>(out_img.buf.data()); + for (size_t r = 0; r < out_img.rows; ++r) + png_read_row(dsc.png, readbuf + r * out_img.cols, nullptr); + + return true; +} + +// Down to earth function to store a packed RGB image to file. Mostly useful for debugging purposes. +// Based on https://www.lemoda.net/c/write-png/ +bool write_rgb_to_file(const char *file_name_utf8, size_t width, size_t height, const uint8_t *data_rgb) +{ + bool result = false; + + FILE *fp = boost::nowide::fopen(file_name_utf8, "wb"); + if (! fp) { + BOOST_LOG_TRIVIAL(error) << "write_png_file: File could not be opened for writing: " << file_name_utf8; + goto fopen_failed; + } + + png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); + if (! png_ptr) { + BOOST_LOG_TRIVIAL(error) << "write_png_file: png_create_write_struct() failed"; + goto png_create_write_struct_failed; + } + + png_infop info_ptr = png_create_info_struct(png_ptr); + if (! info_ptr) { + BOOST_LOG_TRIVIAL(error) << "write_png_file: png_create_info_struct() failed"; + goto png_create_info_struct_failed; + } + + // Set up error handling. + if (setjmp(png_jmpbuf(png_ptr))) { + BOOST_LOG_TRIVIAL(error) << "write_png_file: setjmp() failed"; + goto png_failure; + } + + // Set image attributes. + png_set_IHDR(png_ptr, + info_ptr, + png_uint_32(width), + png_uint_32(height), + 8, // depth + PNG_COLOR_TYPE_RGB, + PNG_INTERLACE_NONE, + PNG_COMPRESSION_TYPE_DEFAULT, + PNG_FILTER_TYPE_DEFAULT); + + // Initialize rows of PNG. + auto row_pointers = reinterpret_cast<png_byte**>(::png_malloc(png_ptr, height * sizeof(png_byte*))); + for (size_t y = 0; y < height; ++ y) { + auto row = reinterpret_cast<png_byte*>(::png_malloc(png_ptr, sizeof(uint8_t) * width * 3)); + row_pointers[y] = row; + memcpy(row, data_rgb + width * y * 3, sizeof(uint8_t) * width * 3); + } + + // Write the image data to "fp". + png_init_io(png_ptr, fp); + png_set_rows(png_ptr, info_ptr, row_pointers); + png_write_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, nullptr); + + for (size_t y = 0; y < height; ++ y) + png_free(png_ptr, row_pointers[y]); + png_free(png_ptr, row_pointers); + result = true; + +png_failure: +png_create_info_struct_failed: + ::png_destroy_write_struct(&png_ptr, &info_ptr); +png_create_write_struct_failed: + ::fclose(fp); +fopen_failed: + return result; +} + +bool write_rgb_to_file(const std::string &file_name_utf8, size_t width, size_t height, const uint8_t *data_rgb) +{ + return write_rgb_to_file(file_name_utf8.c_str(), width, height, data_rgb); +} + +bool write_rgb_to_file(const std::string &file_name_utf8, size_t width, size_t height, const std::vector<uint8_t> &data_rgb) +{ + assert(width * height * 3 == data_rgb.size()); + return write_rgb_to_file(file_name_utf8.c_str(), width, height, data_rgb.data()); +} + +// Scaled variants are mostly useful for debugging purposes, for example to export images of low resolution distance fileds. +// Scaling is done by multiplying rows and columns without any smoothing to emphasise the original pixels. +bool write_rgb_to_file_scaled(const char *file_name_utf8, size_t width, size_t height, const uint8_t *data_rgb, size_t scale) +{ + if (scale <= 1) + return write_rgb_to_file(file_name_utf8, width, height, data_rgb); + else { + std::vector<uint8_t> scaled(width * height * 3 * scale * scale); + uint8_t *dst = scaled.data(); + for (size_t r = 0; r < height; ++ r) { + for (size_t repr = 0; repr < scale; ++ repr) { + const uint8_t *row = data_rgb + width * 3 * r; + for (size_t c = 0; c < width; ++ c) { + for (size_t repc = 0; repc < scale; ++ repc) { + *dst ++ = row[0]; + *dst ++ = row[1]; + *dst ++ = row[2]; + } + row += 3; + } + } + } + return write_rgb_to_file(file_name_utf8, width * scale, height * scale, scaled.data()); + } +} + +bool write_rgb_to_file_scaled(const std::string &file_name_utf8, size_t width, size_t height, const uint8_t *data_rgb, size_t scale) +{ + return write_rgb_to_file_scaled(file_name_utf8.c_str(), width, height, data_rgb, scale); +} + +bool write_rgb_to_file_scaled(const std::string &file_name_utf8, size_t width, size_t height, const std::vector<uint8_t> &data_rgb, size_t scale) +{ + assert(width * height * 3 == data_rgb.size()); + return write_rgb_to_file_scaled(file_name_utf8.c_str(), width, height, data_rgb.data(), scale); +} + +}} // namespace Slic3r::png diff --git a/src/libslic3r/PNGRead.hpp b/src/libslic3r/PNGReadWrite.hpp similarity index 65% rename from src/libslic3r/PNGRead.hpp rename to src/libslic3r/PNGReadWrite.hpp index 082edd569..6be8ed555 100644 --- a/src/libslic3r/PNGRead.hpp +++ b/src/libslic3r/PNGReadWrite.hpp @@ -65,6 +65,18 @@ template<class Img> bool decode_png(const ReadBuf &in_buf, Img &out_img) // TODO: std::istream of FILE* could be similarly adapted in case its needed... + + +// Down to earth function to store a packed RGB image to file. Mostly useful for debugging purposes. +bool write_rgb_to_file(const char *file_name_utf8, size_t width, size_t height, const uint8_t *data_rgb); +bool write_rgb_to_file(const std::string &file_name_utf8, size_t width, size_t height, const uint8_t *data_rgb); +bool write_rgb_to_file(const std::string &file_name_utf8, size_t width, size_t height, const std::vector<uint8_t> &data_rgb); +// Scaled variants are mostly useful for debugging purposes, for example to export images of low resolution distance fileds. +// Scaling is done by multiplying rows and columns without any smoothing to emphasise the original pixels. +bool write_rgb_to_file_scaled(const char *file_name_utf8, size_t width, size_t height, const uint8_t *data_rgb, size_t scale); +bool write_rgb_to_file_scaled(const std::string &file_name_utf8, size_t width, size_t height, const uint8_t *data_rgb, size_t scale); +bool write_rgb_to_file_scaled(const std::string &file_name_utf8, size_t width, size_t height, const std::vector<uint8_t> &data_rgb, size_t scale); + }} // namespace Slic3r::png #endif // PNGREAD_HPP diff --git a/tests/libslic3r/test_png_io.cpp b/tests/libslic3r/test_png_io.cpp index 51f94be32..b4fcd6255 100644 --- a/tests/libslic3r/test_png_io.cpp +++ b/tests/libslic3r/test_png_io.cpp @@ -3,7 +3,7 @@ #include <numeric> -#include "libslic3r/PNGRead.hpp" +#include "libslic3r/PNGReadWrite.hpp" #include "libslic3r/SLA/AGGRaster.hpp" #include "libslic3r/BoundingBox.hpp" From e2b4de455bc564b291ebe8ed4fc987a3b8affa62 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Thu, 26 Nov 2020 10:09:34 +0100 Subject: [PATCH 119/138] Customizable association of .3mf, .stl and .gcode files on Windows --- src/libslic3r/AppConfig.cpp | 17 ++ src/libslic3r/Technologies.hpp | 1 + src/slic3r/GUI/ConfigWizard.cpp | 200 +++++++++++++++--------- src/slic3r/GUI/ConfigWizard_private.hpp | 24 +++ src/slic3r/GUI/GUI_App.cpp | 54 ++++++- src/slic3r/GUI/GUI_App.hpp | 11 ++ src/slic3r/GUI/Preferences.cpp | 96 ++++++++---- 7 files changed, 292 insertions(+), 111 deletions(-) diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 1f1b1623b..c8d1687e1 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -68,6 +68,15 @@ void AppConfig::set_defaults() if (get("export_sources_full_pathnames").empty()) set("export_sources_full_pathnames", "0"); +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN +#ifdef _WIN32 + if (get("associate_3mf").empty()) + set("associate_3mf", "0"); + if (get("associate_stl").empty()) + set("associate_stl", "0"); +#endif // _WIN32 +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + // remove old 'use_legacy_opengl' parameter from this config, if present if (!get("use_legacy_opengl").empty()) erase("", "use_legacy_opengl"); @@ -109,6 +118,14 @@ void AppConfig::set_defaults() if (get("use_inches").empty()) set("use_inches", "0"); } +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + else { +#ifdef _WIN32 + if (get("associate_gcode").empty()) + set("associate_gcode", "0"); +#endif // _WIN32 + } +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN if (get("seq_top_layer_only").empty()) set("seq_top_layer_only", "1"); diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 738fdd7c0..85493d6f1 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -80,6 +80,7 @@ #define ENABLE_SHOW_WIPE_MOVES (1 && ENABLE_2_3_0_BETA1) #define ENABLE_DRAG_AND_DROP_FIX (1 && ENABLE_2_3_0_BETA1) +#define ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN (1 && ENABLE_2_3_0_BETA1) #endif // _prusaslicer_technologies_h_ diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index b993fb327..18e89f114 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -238,7 +238,7 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt : from_u8(model.name); if (i == 1) { - auto *alt_label = new wxStaticText(variants_panel, wxID_ANY, _(L("Alternate nozzles:"))); + auto *alt_label = new wxStaticText(variants_panel, wxID_ANY, _L("Alternate nozzles:")); alt_label->SetFont(font_alt_nozzle); variants_sizer->Add(alt_label, 0, wxBOTTOM, 3); is_variants = true; @@ -302,9 +302,9 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt if (/*titles.size() > 1*/is_variants) { // It only makes sense to add the All / None buttons if there's multiple printers - auto *sel_all_std = new wxButton(this, wxID_ANY, titles.size() > 1 ? _(L("All standard")) : _(L("Standard"))); - auto *sel_all = new wxButton(this, wxID_ANY, _(L("All"))); - auto *sel_none = new wxButton(this, wxID_ANY, _(L("None"))); + auto *sel_all_std = new wxButton(this, wxID_ANY, titles.size() > 1 ? _L("All standard") : _L("Standard")); + auto *sel_all = new wxButton(this, wxID_ANY, _L("All")); + auto *sel_none = new wxButton(this, wxID_ANY, _L("None")); sel_all_std->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &event) { this->select_all(true, false); }); sel_all->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &event) { this->select_all(true, true); }); sel_none->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &event) { this->select_all(false); }); @@ -444,14 +444,14 @@ PageWelcome::PageWelcome(ConfigWizard *parent) #else _utf8(L("Welcome to the %s Configuration Wizard")) #endif - ) % SLIC3R_APP_NAME).str()), _(L("Welcome"))) + ) % SLIC3R_APP_NAME).str()), _L("Welcome")) , welcome_text(append_text(from_u8((boost::format( _utf8(L("Hello, welcome to %s! This %s helps you with the initial configuration; just a few settings and you will be ready to print."))) % SLIC3R_APP_NAME % _utf8(ConfigWizard::name())).str()) )) , cbox_reset(append( - new wxCheckBox(this, wxID_ANY, _(L("Remove user profiles (a snapshot will be taken beforehand)"))) + new wxCheckBox(this, wxID_ANY, _L("Remove user profiles (a snapshot will be taken beforehand)")) )) { welcome_text->Hide(); @@ -582,10 +582,10 @@ PageMaterials::PageMaterials(ConfigWizard *parent, Materials *materials, wxStrin grid->AddGrowableCol(3, 1); grid->AddGrowableRow(1, 1); - grid->Add(new wxStaticText(this, wxID_ANY, _(L("Printer:")))); + grid->Add(new wxStaticText(this, wxID_ANY, _L("Printer:"))); grid->Add(new wxStaticText(this, wxID_ANY, list1name)); - grid->Add(new wxStaticText(this, wxID_ANY, _(L("Vendor:")))); - grid->Add(new wxStaticText(this, wxID_ANY, _(L("Profile:")))); + grid->Add(new wxStaticText(this, wxID_ANY, _L("Vendor:"))); + grid->Add(new wxStaticText(this, wxID_ANY, _L("Profile:"))); grid->Add(list_printer, 0, wxEXPAND); grid->Add(list_type, 0, wxEXPAND); @@ -593,8 +593,8 @@ PageMaterials::PageMaterials(ConfigWizard *parent, Materials *materials, wxStrin grid->Add(list_profile, 1, wxEXPAND); auto *btn_sizer = new wxBoxSizer(wxHORIZONTAL); - auto *sel_all = new wxButton(this, wxID_ANY, _(L("All"))); - auto *sel_none = new wxButton(this, wxID_ANY, _(L("None"))); + auto *sel_all = new wxButton(this, wxID_ANY, _L("All")); + auto *sel_none = new wxButton(this, wxID_ANY, _L("None")); btn_sizer->Add(sel_all, 0, wxRIGHT, em / 2); btn_sizer->Add(sel_none); @@ -657,7 +657,7 @@ void PageMaterials::reload_presets() { clear(); - list_printer->append(_(L("(All)")), &EMPTY); + list_printer->append(_L("(All)"), &EMPTY); //list_printer->SetLabelMarkup("<b>bald</b>"); for (const Preset* printer : materials->printers) { list_printer->append(printer->name, &printer->name); @@ -686,10 +686,10 @@ void PageMaterials::set_compatible_printers_html_window(const std::vector<std::s const auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()); const auto text_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); const auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue()); - wxString first_line = _(L("Filaments marked with <b>*</b> are <b>not</b> compatible with some installed printers.")); + wxString first_line = _L("Filaments marked with <b>*</b> are <b>not</b> compatible with some installed printers."); wxString text; if (all_printers) { - wxString second_line = _(L("All installed printers are compatible with the selected filament.")); + wxString second_line = _L("All installed printers are compatible with the selected filament."); text = wxString::Format( "<html>" "<style>" @@ -709,7 +709,7 @@ void PageMaterials::set_compatible_printers_html_window(const std::vector<std::s , second_line ); } else { - wxString second_line = _(L("Only the following installed printers are compatible with the selected filament:")); + wxString second_line = _L("Only the following installed printers are compatible with the selected filament:"); text = wxString::Format( "<html>" "<style>" @@ -807,7 +807,7 @@ void PageMaterials::update_lists(int sel_printer, int sel_type, int sel_vendor) if (sel_printers_count != sel_printer_count_prev || (sel_printers_count == 1 && sel_printer_item_prev != sel_printer && sel_printer != -1)) { // Refresh type list list_type->Clear(); - list_type->append(_(L("(All)")), &EMPTY); + list_type->append(_L("(All)"), &EMPTY); if (sel_printers_count > 0) { // If all is selected with other printers // unselect "all" or all printers depending on last value @@ -868,7 +868,7 @@ void PageMaterials::update_lists(int sel_printer, int sel_type, int sel_vendor) // but the number of vendors is going to be very small this shouldn't be a problem. list_vendor->Clear(); - list_vendor->append(_(L("(All)")), &EMPTY); + list_vendor->append(_L("(All)"), &EMPTY); if (sel_printers_count != 0 && sel_type != wxNOT_FOUND) { const std::string& type = list_type->get_data(sel_type); // find printer preset @@ -1005,7 +1005,7 @@ void PageMaterials::sort_list_data(StringList* list, bool add_All_item, bool mat list->Clear(); if (add_All_item) - list->append(_(L("(All)")), &EMPTY); + list->append(_L("(All)"), &EMPTY); for (const auto& item : prusa_profiles) list->append(item, &const_cast<std::string&>(item.get())); for (const auto& item : other_profiles) @@ -1095,11 +1095,11 @@ void PageMaterials::on_activate() const char *PageCustom::default_profile_name = "My Settings"; PageCustom::PageCustom(ConfigWizard *parent) - : ConfigWizardPage(parent, _(L("Custom Printer Setup")), _(L("Custom Printer"))) + : ConfigWizardPage(parent, _L("Custom Printer Setup"), _L("Custom Printer")) { - cb_custom = new wxCheckBox(this, wxID_ANY, _(L("Define a custom printer profile"))); + cb_custom = new wxCheckBox(this, wxID_ANY, _L("Define a custom printer profile")); tc_profile_name = new wxTextCtrl(this, wxID_ANY, default_profile_name); - auto *label = new wxStaticText(this, wxID_ANY, _(L("Custom profile name:"))); + auto *label = new wxStaticText(this, wxID_ANY, _L("Custom profile name:")); tc_profile_name->Enable(false); tc_profile_name->Bind(wxEVT_KILL_FOCUS, [this](wxFocusEvent &evt) { @@ -1124,7 +1124,7 @@ PageCustom::PageCustom(ConfigWizard *parent) } PageUpdate::PageUpdate(ConfigWizard *parent) - : ConfigWizardPage(parent, _(L("Automatic updates")), _(L("Updates"))) + : ConfigWizardPage(parent, _L("Automatic updates"), _L("Updates")) , version_check(true) , preset_update(true) { @@ -1132,60 +1132,76 @@ PageUpdate::PageUpdate(ConfigWizard *parent) auto boldfont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); boldfont.SetWeight(wxFONTWEIGHT_BOLD); - auto *box_slic3r = new wxCheckBox(this, wxID_ANY, _(L("Check for application updates"))); + auto *box_slic3r = new wxCheckBox(this, wxID_ANY, _L("Check for application updates")); box_slic3r->SetValue(app_config->get("version_check") == "1"); append(box_slic3r); - append_text(wxString::Format(_(L( + append_text(wxString::Format(_L( "If enabled, %s checks for new application versions online. When a new version becomes available, " "a notification is displayed at the next application startup (never during program usage). " - "This is only a notification mechanisms, no automatic installation is done.")), SLIC3R_APP_NAME)); + "This is only a notification mechanisms, no automatic installation is done."), SLIC3R_APP_NAME)); append_spacer(VERTICAL_SPACING); - auto *box_presets = new wxCheckBox(this, wxID_ANY, _(L("Update built-in Presets automatically"))); + auto *box_presets = new wxCheckBox(this, wxID_ANY, _L("Update built-in Presets automatically")); box_presets->SetValue(app_config->get("preset_update") == "1"); append(box_presets); - append_text(wxString::Format(_(L( + append_text(wxString::Format(_L( "If enabled, %s downloads updates of built-in system presets in the background." "These updates are downloaded into a separate temporary location." - "When a new preset version becomes available it is offered at application startup.")), SLIC3R_APP_NAME)); - const auto text_bold = _(L("Updates are never applied without user's consent and never overwrite user's customized settings.")); + "When a new preset version becomes available it is offered at application startup."), SLIC3R_APP_NAME)); + const auto text_bold = _L("Updates are never applied without user's consent and never overwrite user's customized settings."); auto *label_bold = new wxStaticText(this, wxID_ANY, text_bold); label_bold->SetFont(boldfont); label_bold->Wrap(WRAP_WIDTH); append(label_bold); - append_text(_(L("Additionally a backup snapshot of the whole configuration is created before an update is applied."))); + append_text(_L("Additionally a backup snapshot of the whole configuration is created before an update is applied.")); box_slic3r->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent &event) { this->version_check = event.IsChecked(); }); box_presets->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent &event) { this->preset_update = event.IsChecked(); }); } PageReloadFromDisk::PageReloadFromDisk(ConfigWizard* parent) - : ConfigWizardPage(parent, _(L("Reload from disk")), _(L("Reload from disk"))) + : ConfigWizardPage(parent, _L("Reload from disk"), _L("Reload from disk")) , full_pathnames(false) { - auto* box_pathnames = new wxCheckBox(this, wxID_ANY, _(L("Export full pathnames of models and parts sources into 3mf and amf files"))); + auto* box_pathnames = new wxCheckBox(this, wxID_ANY, _L("Export full pathnames of models and parts sources into 3mf and amf files")); box_pathnames->SetValue(wxGetApp().app_config->get("export_sources_full_pathnames") == "1"); append(box_pathnames); - append_text(_(L( + append_text(_L( "If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n" "If not enabled, the Reload from disk command will ask to select each file using an open file dialog." - ))); + )); box_pathnames->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent& event) { this->full_pathnames = event.IsChecked(); }); } -PageMode::PageMode(ConfigWizard *parent) - : ConfigWizardPage(parent, _(L("View mode")), _(L("View mode"))) +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN +#ifdef _WIN32 +PageFilesAssociation::PageFilesAssociation(ConfigWizard* parent) + : ConfigWizardPage(parent, _L("Files association"), _L("Files association")) { - append_text(_(L("PrusaSlicer's user interfaces comes in three variants:\nSimple, Advanced, and Expert.\n" + cb_3mf = new wxCheckBox(this, wxID_ANY, _L("Associate .3mf files to PrusaSlicer")); + cb_stl = new wxCheckBox(this, wxID_ANY, _L("Associate .stl files to PrusaSlicer")); +// cb_gcode = new wxCheckBox(this, wxID_ANY, _L("Associate .gcode files to PrusaSlicer G-code Viewer")); + + append(cb_3mf); + append(cb_stl); +// append(cb_gcode); +} +#endif // _WIN32 +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + +PageMode::PageMode(ConfigWizard *parent) + : ConfigWizardPage(parent, _L("View mode"), _L("View mode")) +{ + append_text(_L("PrusaSlicer's user interfaces comes in three variants:\nSimple, Advanced, and Expert.\n" "The Simple mode shows only the most frequently used settings relevant for regular 3D printing. " "The other two offer progressively more sophisticated fine-tuning, " - "they are suitable for advanced and expert users, respectively."))); + "they are suitable for advanced and expert users, respectively.")); - radio_simple = new wxRadioButton(this, wxID_ANY, _(L("Simple mode"))); - radio_advanced = new wxRadioButton(this, wxID_ANY, _(L("Advanced mode"))); - radio_expert = new wxRadioButton(this, wxID_ANY, _(L("Expert mode"))); + radio_simple = new wxRadioButton(this, wxID_ANY, _L("Simple mode")); + radio_advanced = new wxRadioButton(this, wxID_ANY, _L("Advanced mode")); + radio_expert = new wxRadioButton(this, wxID_ANY, _L("Expert mode")); append(radio_simple); append(radio_advanced); @@ -1226,11 +1242,11 @@ void PageMode::serialize_mode(AppConfig *app_config) const } PageVendors::PageVendors(ConfigWizard *parent) - : ConfigWizardPage(parent, _(L("Other Vendors")), _(L("Other Vendors"))) + : ConfigWizardPage(parent, _L("Other Vendors"), _L("Other Vendors")) { const AppConfig &appconfig = this->wizard_p()->appconfig_new; - append_text(wxString::Format(_(L("Pick another vendor supported by %s")), SLIC3R_APP_NAME) + ":"); + append_text(wxString::Format(_L("Pick another vendor supported by %s"), SLIC3R_APP_NAME) + ":"); auto boldfont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); boldfont.SetWeight(wxFONTWEIGHT_BOLD); @@ -1261,11 +1277,11 @@ PageVendors::PageVendors(ConfigWizard *parent) } PageFirmware::PageFirmware(ConfigWizard *parent) - : ConfigWizardPage(parent, _(L("Firmware Type")), _(L("Firmware")), 1) + : ConfigWizardPage(parent, _L("Firmware Type"), _L("Firmware"), 1) , gcode_opt(*print_config_def.get("gcode_flavor")) , gcode_picker(nullptr) { - append_text(_(L("Choose the type of firmware used by your printer."))); + append_text(_L("Choose the type of firmware used by your printer.")); append_text(_(gcode_opt.tooltip)); wxArrayString choices; @@ -1299,10 +1315,10 @@ void PageFirmware::apply_custom_config(DynamicPrintConfig &config) } PageBedShape::PageBedShape(ConfigWizard *parent) - : ConfigWizardPage(parent, _(L("Bed Shape and Size")), _(L("Bed Shape")), 1) + : ConfigWizardPage(parent, _L("Bed Shape and Size"), _L("Bed Shape"), 1) , shape_panel(new BedShapePanel(this)) { - append_text(_(L("Set the shape of your printer's bed."))); + append_text(_L("Set the shape of your printer's bed.")); shape_panel->build_panel(*wizard_p()->custom_config->option<ConfigOptionPoints>("bed_shape"), *wizard_p()->custom_config->option<ConfigOptionString>("bed_custom_texture"), @@ -1322,7 +1338,7 @@ void PageBedShape::apply_custom_config(DynamicPrintConfig &config) } PageDiameters::PageDiameters(ConfigWizard *parent) - : ConfigWizardPage(parent, _(L("Filament and Nozzle Diameters")), _(L("Print Diameters")), 1) + : ConfigWizardPage(parent, _L("Filament and Nozzle Diameters"), _L("Print Diameters"), 1) , spin_nozzle(new wxSpinCtrlDouble(this, wxID_ANY)) , spin_filam(new wxSpinCtrlDouble(this, wxID_ANY)) { @@ -1336,11 +1352,11 @@ PageDiameters::PageDiameters(ConfigWizard *parent) auto *default_filam = print_config_def.get("filament_diameter")->get_default_value<ConfigOptionFloats>(); spin_filam->SetValue(default_filam != nullptr && default_filam->size() > 0 ? default_filam->get_at(0) : 3.0); - append_text(_(L("Enter the diameter of your printer's hot end nozzle."))); + append_text(_L("Enter the diameter of your printer's hot end nozzle.")); auto *sizer_nozzle = new wxFlexGridSizer(3, 5, 5); - auto *text_nozzle = new wxStaticText(this, wxID_ANY, _(L("Nozzle Diameter:"))); - auto *unit_nozzle = new wxStaticText(this, wxID_ANY, _(L("mm"))); + auto *text_nozzle = new wxStaticText(this, wxID_ANY, _L("Nozzle Diameter:")); + auto *unit_nozzle = new wxStaticText(this, wxID_ANY, _L("mm")); sizer_nozzle->AddGrowableCol(0, 1); sizer_nozzle->Add(text_nozzle, 0, wxALIGN_CENTRE_VERTICAL); sizer_nozzle->Add(spin_nozzle); @@ -1349,12 +1365,12 @@ PageDiameters::PageDiameters(ConfigWizard *parent) append_spacer(VERTICAL_SPACING); - append_text(_(L("Enter the diameter of your filament."))); - append_text(_(L("Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average."))); + append_text(_L("Enter the diameter of your filament.")); + append_text(_L("Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average.")); auto *sizer_filam = new wxFlexGridSizer(3, 5, 5); - auto *text_filam = new wxStaticText(this, wxID_ANY, _(L("Filament Diameter:"))); - auto *unit_filam = new wxStaticText(this, wxID_ANY, _(L("mm"))); + auto *text_filam = new wxStaticText(this, wxID_ANY, _L("Filament Diameter:")); + auto *unit_filam = new wxStaticText(this, wxID_ANY, _L("mm")); sizer_filam->AddGrowableCol(0, 1); sizer_filam->Add(text_filam, 0, wxALIGN_CENTRE_VERTICAL); sizer_filam->Add(spin_filam); @@ -1387,7 +1403,7 @@ void PageDiameters::apply_custom_config(DynamicPrintConfig &config) } PageTemperatures::PageTemperatures(ConfigWizard *parent) - : ConfigWizardPage(parent, _(L("Nozzle and Bed Temperatures")), _(L("Temperatures")), 1) + : ConfigWizardPage(parent, _L("Nozzle and Bed Temperatures"), _L("Temperatures"), 1) , spin_extr(new wxSpinCtrlDouble(this, wxID_ANY)) , spin_bed(new wxSpinCtrlDouble(this, wxID_ANY)) { @@ -1403,12 +1419,12 @@ PageTemperatures::PageTemperatures(ConfigWizard *parent) auto *default_bed = def_bed.get_default_value<ConfigOptionInts>(); spin_bed->SetValue(default_bed != nullptr && default_bed->size() > 0 ? default_bed->get_at(0) : 0); - append_text(_(L("Enter the temperature needed for extruding your filament."))); - append_text(_(L("A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS."))); + append_text(_L("Enter the temperature needed for extruding your filament.")); + append_text(_L("A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS.")); auto *sizer_extr = new wxFlexGridSizer(3, 5, 5); - auto *text_extr = new wxStaticText(this, wxID_ANY, _(L("Extrusion Temperature:"))); - auto *unit_extr = new wxStaticText(this, wxID_ANY, _(L("°C"))); + auto *text_extr = new wxStaticText(this, wxID_ANY, _L("Extrusion Temperature:")); + auto *unit_extr = new wxStaticText(this, wxID_ANY, _L("°C")); sizer_extr->AddGrowableCol(0, 1); sizer_extr->Add(text_extr, 0, wxALIGN_CENTRE_VERTICAL); sizer_extr->Add(spin_extr); @@ -1417,12 +1433,12 @@ PageTemperatures::PageTemperatures(ConfigWizard *parent) append_spacer(VERTICAL_SPACING); - append_text(_(L("Enter the bed temperature needed for getting your filament to stick to your heated bed."))); - append_text(_(L("A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed."))); + append_text(_L("Enter the bed temperature needed for getting your filament to stick to your heated bed.")); + append_text(_L("A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed.")); auto *sizer_bed = new wxFlexGridSizer(3, 5, 5); - auto *text_bed = new wxStaticText(this, wxID_ANY, _(L("Bed Temperature:"))); - auto *unit_bed = new wxStaticText(this, wxID_ANY, _(L("°C"))); + auto *text_bed = new wxStaticText(this, wxID_ANY, _L("Bed Temperature:")); + auto *unit_bed = new wxStaticText(this, wxID_ANY, _L("°C")); sizer_bed->AddGrowableCol(0, 1); sizer_bed->Add(text_bed, 0, wxALIGN_CENTRE_VERTICAL); sizer_bed->Add(spin_bed); @@ -1780,6 +1796,11 @@ void ConfigWizard::priv::load_pages() index->add_page(page_update); index->add_page(page_reload_from_disk); +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN +#ifdef _WIN32 + index->add_page(page_files_association); +#endif // _WIN32 +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN index->add_page(page_mode); index->go_to(former_active); // Will restore the active item/page if possible @@ -1876,7 +1897,7 @@ void ConfigWizard::priv::load_vendors() void ConfigWizard::priv::add_page(ConfigWizardPage *page) { - const int proportion = (page->shortname == _(L("Filaments"))) || (page->shortname == _(L("SLA Materials"))) ? 1 : 0; + const int proportion = (page->shortname == _L("Filaments")) || (page->shortname == _L("SLA Materials")) ? 1 : 0; hscroll_sizer->Add(page, proportion, wxEXPAND); all_pages.push_back(page); } @@ -1930,12 +1951,12 @@ void ConfigWizard::priv::create_3rdparty_pages() PagePrinters* pageSLA = nullptr; if (is_fff_technology) { - pageFFF = new PagePrinters(q, vendor->name + " " +_(L("FFF Technology Printers")), vendor->name+" FFF", *vendor, 1, T_FFF); + pageFFF = new PagePrinters(q, vendor->name + " " +_L("FFF Technology Printers"), vendor->name+" FFF", *vendor, 1, T_FFF); add_page(pageFFF); } if (is_sla_technology) { - pageSLA = new PagePrinters(q, vendor->name + " " + _(L("SLA Technology Printers")), vendor->name+" MSLA", *vendor, 1, T_SLA); + pageSLA = new PagePrinters(q, vendor->name + " " + _L("SLA Technology Printers"), vendor->name+" MSLA", *vendor, 1, T_SLA); add_page(pageSLA); } @@ -2241,7 +2262,7 @@ bool ConfigWizard::priv::check_and_install_missing_materials(Technology technolo const auto ask_and_select_default_materials = [this](const wxString &message, const std::set<const VendorProfile::PrinterModel*> &printer_models, Technology technology) { - wxMessageDialog msg(q, message, _(L("Notice")), wxYES_NO); + wxMessageDialog msg(q, message, _L("Notice"), wxYES_NO); if (msg.ShowModal() == wxID_YES) select_default_materials_for_printer_models(technology, printer_models); }; @@ -2372,6 +2393,26 @@ void ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese app_config->set("preset_update", page_update->preset_update ? "1" : "0"); app_config->set("export_sources_full_pathnames", page_reload_from_disk->full_pathnames ? "1" : "0"); +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN +#ifdef _WIN32 + app_config->set("associate_3mf", page_files_association->associate_3mf() ? "1" : "0"); + app_config->set("associate_stl", page_files_association->associate_stl() ? "1" : "0"); +// app_config->set("associate_gcode", page_files_association->associate_gcode() ? "1" : "0"); + + if (wxGetApp().is_editor()) { + if (page_files_association->associate_3mf()) + wxGetApp().associate_3mf_files(); + if (page_files_association->associate_stl()) + wxGetApp().associate_stl_files(); + } +// else { +// if (page_files_association->associate_gcode()) +// wxGetApp().associate_gcode_files(); +// } + +#endif // _WIN32 +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + page_mode->serialize_mode(app_config); std::string preferred_model; @@ -2491,13 +2532,13 @@ ConfigWizard::ConfigWizard(wxWindow *parent) topsizer->AddSpacer(INDEX_MARGIN); topsizer->Add(p->hscroll, 1, wxEXPAND); - p->btn_sel_all = new wxButton(this, wxID_ANY, _(L("Select all standard printers"))); + p->btn_sel_all = new wxButton(this, wxID_ANY, _L("Select all standard printers")); p->btnsizer->Add(p->btn_sel_all); - p->btn_prev = new wxButton(this, wxID_ANY, _(L("< &Back"))); - p->btn_next = new wxButton(this, wxID_ANY, _(L("&Next >"))); - p->btn_finish = new wxButton(this, wxID_APPLY, _(L("&Finish"))); - p->btn_cancel = new wxButton(this, wxID_CANCEL, _(L("Cancel"))); // Note: The label needs to be present, otherwise we get accelerator bugs on Mac + p->btn_prev = new wxButton(this, wxID_ANY, _L("< &Back")); + p->btn_next = new wxButton(this, wxID_ANY, _L("&Next >")); + p->btn_finish = new wxButton(this, wxID_APPLY, _L("&Finish")); + p->btn_cancel = new wxButton(this, wxID_CANCEL, _L("Cancel")); // Note: The label needs to be present, otherwise we get accelerator bugs on Mac p->btnsizer->AddStretchSpacer(); p->btnsizer->Add(p->btn_prev, 0, wxLEFT, BTN_SPACING); p->btnsizer->Add(p->btn_next, 0, wxLEFT, BTN_SPACING); @@ -2510,10 +2551,10 @@ ConfigWizard::ConfigWizard(wxWindow *parent) p->add_page(p->page_welcome = new PageWelcome(this)); - p->page_fff = new PagePrinters(this, _(L("Prusa FFF Technology Printers")), "Prusa FFF", *vendor_prusa, 0, T_FFF); + p->page_fff = new PagePrinters(this, _L("Prusa FFF Technology Printers"), "Prusa FFF", *vendor_prusa, 0, T_FFF); p->add_page(p->page_fff); - p->page_msla = new PagePrinters(this, _(L("Prusa MSLA Technology Printers")), "Prusa MSLA", *vendor_prusa, 0, T_SLA); + p->page_msla = new PagePrinters(this, _L("Prusa MSLA Technology Printers"), "Prusa MSLA", *vendor_prusa, 0, T_SLA); p->add_page(p->page_msla); // Pages for 3rd party vendors @@ -2528,13 +2569,18 @@ ConfigWizard::ConfigWizard(wxWindow *parent) p->update_materials(T_ANY); p->add_page(p->page_filaments = new PageMaterials(this, &p->filaments, - _(L("Filament Profiles Selection")), _(L("Filaments")), _(L("Type:")) )); + _L("Filament Profiles Selection"), _L("Filaments"), _L("Type:") )); p->add_page(p->page_sla_materials = new PageMaterials(this, &p->sla_materials, - _(L("SLA Material Profiles Selection")) + " ", _(L("SLA Materials")), _(L("Type:")) )); + _L("SLA Material Profiles Selection") + " ", _L("SLA Materials"), _L("Type:") )); p->add_page(p->page_update = new PageUpdate(this)); p->add_page(p->page_reload_from_disk = new PageReloadFromDisk(this)); +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN +#ifdef _WIN32 + p->add_page(p->page_files_association = new PageFilesAssociation(this)); +#endif // _WIN32 +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN p->add_page(p->page_mode = new PageMode(this)); p->add_page(p->page_firmware = new PageFirmware(this)); p->add_page(p->page_bed = new PageBedShape(this)); diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp index 9fcc9267d..62ec6b18b 100644 --- a/src/slic3r/GUI/ConfigWizard_private.hpp +++ b/src/slic3r/GUI/ConfigWizard_private.hpp @@ -392,6 +392,25 @@ struct PageReloadFromDisk : ConfigWizardPage PageReloadFromDisk(ConfigWizard* parent); }; +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN +#ifdef _WIN32 +struct PageFilesAssociation : ConfigWizardPage +{ +private: + wxCheckBox* cb_3mf{ nullptr }; + wxCheckBox* cb_stl{ nullptr }; +// wxCheckBox* cb_gcode; + +public: + PageFilesAssociation(ConfigWizard* parent); + + bool associate_3mf() const { return cb_3mf->IsChecked(); } + bool associate_stl() const { return cb_stl->IsChecked(); } +// bool associate_gcode() const { return cb_gcode->IsChecked(); } +}; +#endif // _WIN32 +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + struct PageMode: ConfigWizardPage { wxRadioButton *radio_simple; @@ -550,6 +569,11 @@ struct ConfigWizard::priv PageCustom *page_custom = nullptr; PageUpdate *page_update = nullptr; PageReloadFromDisk *page_reload_from_disk = nullptr; +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN +#ifdef _WIN32 + PageFilesAssociation* page_files_association = nullptr; +#endif // _WIN32 +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN PageMode *page_mode = nullptr; PageVendors *page_vendors = nullptr; Pages3rdparty pages_3rdparty; diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index fa913f6b5..dc5b5ad6d 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -804,7 +804,14 @@ bool GUI_App::on_init_inner() if (is_editor()) { #ifdef __WXMSW__ - associate_3mf_files(); +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + if (app_config->get("associate_3mf") == "1") +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + associate_3mf_files(); +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + if (app_config->get("associate_stl") == "1") + associate_stl_files(); +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN #endif // __WXMSW__ preset_updater = new PresetUpdater(); @@ -820,7 +827,10 @@ bool GUI_App::on_init_inner() } else { #ifdef __WXMSW__ - associate_gcode_files(); +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + if (app_config->get("associate_gcode") == "1") +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + associate_gcode_files(); #endif // __WXMSW__ } @@ -1577,6 +1587,20 @@ void GUI_App::add_config_menu(wxMenuBar *menu) app_layout_changed = dlg.settings_layout_changed(); if (dlg.seq_top_layer_only_changed()) this->plater_->refresh_print(); +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN +#ifdef _WIN32 + if (is_editor()) { + if (app_config->get("associate_3mf") == "1") + associate_3mf_files(); + if (app_config->get("associate_stl") == "1") + associate_stl_files(); + } + else { + if (app_config->get("associate_gcode") == "1") + associate_gcode_files(); + } +#endif // _WIN32 +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN } if (app_layout_changed) { // hide full main_sizer for mainFrame @@ -2112,6 +2136,32 @@ void GUI_App::associate_3mf_files() ::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nullptr, nullptr); } +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN +void GUI_App::associate_stl_files() +{ + wchar_t app_path[MAX_PATH]; + ::GetModuleFileNameW(nullptr, app_path, sizeof(app_path)); + + std::wstring prog_path = L"\"" + std::wstring(app_path) + L"\""; + std::wstring prog_id = L"Prusa.Slicer.1"; + std::wstring prog_desc = L"PrusaSlicer"; + std::wstring prog_command = prog_path + L" \"%1\""; + std::wstring reg_base = L"Software\\Classes"; + std::wstring reg_extension = reg_base + L"\\.stl"; + std::wstring reg_prog_id = reg_base + L"\\" + prog_id; + std::wstring reg_prog_id_command = reg_prog_id + L"\\Shell\\Open\\Command"; + + bool is_new = false; + is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_extension.c_str(), prog_id.c_str()); + is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_prog_id.c_str(), prog_desc.c_str()); + is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_prog_id_command.c_str(), prog_command.c_str()); + + if (is_new) + // notify Windows only when any of the values gets changed + ::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nullptr, nullptr); +} +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + void GUI_App::associate_gcode_files() { wchar_t app_path[MAX_PATH]; diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index fec73b724..44ef4f493 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -274,6 +274,14 @@ public: bool is_gl_version_greater_or_equal_to(unsigned int major, unsigned int minor) const { return m_opengl_mgr.get_gl_info().is_version_greater_or_equal_to(major, minor); } bool is_glsl_version_greater_or_equal_to(unsigned int major, unsigned int minor) const { return m_opengl_mgr.get_gl_info().is_glsl_version_greater_or_equal_to(major, minor); } +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN +#ifdef __WXMSW__ + void associate_3mf_files(); + void associate_stl_files(); + void associate_gcode_files(); +#endif // __WXMSW__ +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + private: bool on_init_inner(); void init_app_config(); @@ -285,11 +293,14 @@ private: bool config_wizard_startup(); void check_updates(const bool verbose); +#if !ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN #ifdef __WXMSW__ void associate_3mf_files(); void associate_gcode_files(); #endif // __WXMSW__ +#endif // !ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN }; + DECLARE_APP(GUI_App) } // GUI diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 578c9d397..6a1a95b03 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -85,6 +85,25 @@ void PreferencesDialog::build() option = Option(def, "export_sources_full_pathnames"); m_optgroup_general->append_single_option_line(option); +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN +#ifdef _WIN32 + // Please keep in sync with ConfigWizard + def.label = L("Associate .3mf files to PrusaSlicer"); + def.type = coBool; + def.tooltip = L("If enabled, sets PrusaSlicer as default application to open .3mf files."); + def.set_default_value(new ConfigOptionBool(app_config->get("associate_3mf") == "1")); + option = Option(def, "associate_3mf"); + m_optgroup_general->append_single_option_line(option); + + def.label = L("Associate .stl files to PrusaSlicer"); + def.type = coBool; + def.tooltip = L("If enabled, sets PrusaSlicer as default application to open .stl files."); + def.set_default_value(new ConfigOptionBool(app_config->get("associate_stl") == "1")); + option = Option(def, "associate_stl"); + m_optgroup_general->append_single_option_line(option); +#endif // _WIN32 +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN + // Please keep in sync with ConfigWizard def.label = L("Update built-in Presets automatically"); def.type = coBool; @@ -126,7 +145,44 @@ void PreferencesDialog::build() def.set_default_value(new ConfigOptionBool{ app_config->has("single_instance") ? app_config->get("single_instance") == "1" : false }); option = Option(def, "single_instance"); m_optgroup_general->append_single_option_line(option); + + /* // ysFIXME THis part is temporary commented + // The using of inches is implemented just for object's size and position + + def.label = L("Use inches instead of millimeters"); + def.type = coBool; + def.tooltip = L("Use inches instead of millimeters for the object's size"); + def.set_default_value(new ConfigOptionBool{ app_config->get("use_inches") == "1" }); + option = Option(def, "use_inches"); + m_optgroup_general->append_single_option_line(option); + */ + + def.label = L("Ask for unsaved changes when closing application"); + def.type = coBool; + def.tooltip = L("When closing the application, always ask for unsaved changes"); + def.set_default_value(new ConfigOptionBool{ app_config->get("default_action_on_close_application") == "none" }); + option = Option(def, "default_action_on_close_application"); + m_optgroup_general->append_single_option_line(option); + + def.label = L("Ask for unsaved changes when selecting new preset"); + def.type = coBool; + def.tooltip = L("Always ask for unsaved changes when selecting new preset"); + def.set_default_value(new ConfigOptionBool{ app_config->get("default_action_on_select_preset") == "none" }); + option = Option(def, "default_action_on_select_preset"); + m_optgroup_general->append_single_option_line(option); } +#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN +#ifdef _WIN32 + else { + def.label = L("Associate .gcode files to PrusaSlicer G-code Viewer"); + def.type = coBool; + def.tooltip = L("If enabled, sets PrusaSlicer G-code Viewer as default application to open .gcode files."); + def.set_default_value(new ConfigOptionBool(app_config->get("associate_gcode") == "1")); + option = Option(def, "associate_gcode"); + m_optgroup_general->append_single_option_line(option); + } +#endif // _WIN32 +#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN #if __APPLE__ def.label = L("Use Retina resolution for the 3D scene"); @@ -137,30 +193,6 @@ void PreferencesDialog::build() option = Option (def, "use_retina_opengl"); m_optgroup_general->append_single_option_line(option); #endif -/* // ysFIXME THis part is temporary commented - // The using of inches is implemented just for object's size and position - - def.label = L("Use inches instead of millimeters"); - def.type = coBool; - def.tooltip = L("Use inches instead of millimeters for the object's size"); - def.set_default_value(new ConfigOptionBool{ app_config->get("use_inches") == "1" }); - option = Option(def, "use_inches"); - m_optgroup_general->append_single_option_line(option); -*/ - - def.label = L("Ask for unsaved changes when closing application"); - def.type = coBool; - def.tooltip = L("When closing the application, always ask for unsaved changes"); - def.set_default_value(new ConfigOptionBool{ app_config->get("default_action_on_close_application") == "none" }); - option = Option(def, "default_action_on_close_application"); - m_optgroup_general->append_single_option_line(option); - - def.label = L("Ask for unsaved changes when selecting new preset"); - def.type = coBool; - def.tooltip = L("Always ask for unsaved changes when selecting new preset"); - def.set_default_value(new ConfigOptionBool{ app_config->get("default_action_on_select_preset") == "none" }); - option = Option(def, "default_action_on_select_preset"); - m_optgroup_general->append_single_option_line(option); // Show/Hide splash screen def.label = L("Show splash screen"); @@ -229,6 +261,14 @@ void PreferencesDialog::build() def.set_default_value(new ConfigOptionBool{ app_config->get("use_custom_toolbar_size") == "1" }); option = Option(def, "use_custom_toolbar_size"); m_optgroup_gui->append_single_option_line(option); + + def.label = L("Suppress to open hyperlink in browser"); + def.type = coBool; + def.tooltip = L("If enabled, the descriptions of configuration parameters in settings tabs woldn't work as hyperlinks. " + "If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks."); + def.set_default_value(new ConfigOptionBool{ app_config->get("suppress_hyperlinks") == "1" }); + option = Option(def, "suppress_hyperlinks"); + m_optgroup_gui->append_single_option_line(option); } def.label = L("Sequential slider applied only to top layer"); @@ -239,14 +279,6 @@ void PreferencesDialog::build() option = Option(def, "seq_top_layer_only"); m_optgroup_gui->append_single_option_line(option); - def.label = L("Suppress to open hyperlink in browser"); - def.type = coBool; - def.tooltip = L("If enabled, the descriptions of configuration parameters in settings tabs woldn't work as hyperlinks. " - "If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks."); - def.set_default_value(new ConfigOptionBool{ app_config->get("suppress_hyperlinks") == "1" }); - option = Option(def, "suppress_hyperlinks"); - m_optgroup_gui->append_single_option_line(option); - m_optgroup_gui->activate(); if (is_editor) { From 2314a9e8c7f3a55ba18aa74720f6a8c8f36fdaeb Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Thu, 26 Nov 2020 10:54:06 +0100 Subject: [PATCH 120/138] Fixing compilation issues on conforming compilers --- src/libslic3r/PNGReadWrite.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/PNGReadWrite.cpp b/src/libslic3r/PNGReadWrite.cpp index 2b7f64f6d..1e8a7de53 100644 --- a/src/libslic3r/PNGReadWrite.cpp +++ b/src/libslic3r/PNGReadWrite.cpp @@ -104,21 +104,26 @@ bool decode_png(IStream &in_buf, ImageGreyscale &out_img) // Based on https://www.lemoda.net/c/write-png/ bool write_rgb_to_file(const char *file_name_utf8, size_t width, size_t height, const uint8_t *data_rgb) { - bool result = false; + bool result = false; - FILE *fp = boost::nowide::fopen(file_name_utf8, "wb"); + // Forward declaration due to the gotos. + png_structp png_ptr = nullptr; + png_infop info_ptr = nullptr; + png_byte **row_pointers = nullptr; + + FILE *fp = boost::nowide::fopen(file_name_utf8, "wb"); if (! fp) { BOOST_LOG_TRIVIAL(error) << "write_png_file: File could not be opened for writing: " << file_name_utf8; goto fopen_failed; } - png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); + png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); if (! png_ptr) { BOOST_LOG_TRIVIAL(error) << "write_png_file: png_create_write_struct() failed"; goto png_create_write_struct_failed; } - png_infop info_ptr = png_create_info_struct(png_ptr); + info_ptr = png_create_info_struct(png_ptr); if (! info_ptr) { BOOST_LOG_TRIVIAL(error) << "write_png_file: png_create_info_struct() failed"; goto png_create_info_struct_failed; @@ -142,7 +147,7 @@ bool write_rgb_to_file(const char *file_name_utf8, size_t width, size_t height, PNG_FILTER_TYPE_DEFAULT); // Initialize rows of PNG. - auto row_pointers = reinterpret_cast<png_byte**>(::png_malloc(png_ptr, height * sizeof(png_byte*))); + row_pointers = reinterpret_cast<png_byte**>(::png_malloc(png_ptr, height * sizeof(png_byte*))); for (size_t y = 0; y < height; ++ y) { auto row = reinterpret_cast<png_byte*>(::png_malloc(png_ptr, sizeof(uint8_t) * width * 3)); row_pointers[y] = row; @@ -157,6 +162,7 @@ bool write_rgb_to_file(const char *file_name_utf8, size_t width, size_t height, for (size_t y = 0; y < height; ++ y) png_free(png_ptr, row_pointers[y]); png_free(png_ptr, row_pointers); + result = true; png_failure: From 10fb75edf072f20604857896c279645ee9890858 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Thu, 26 Nov 2020 11:00:24 +0100 Subject: [PATCH 121/138] Enabled tech ENABLE_CTRL_M_ON_WINDOWS -> Added customizable support for legacy CTRL+M settings dialog on Windows in preference dialog --- src/libslic3r/AppConfig.cpp | 17 ++++++++++++----- src/libslic3r/Technologies.hpp | 2 +- src/slic3r/GUI/GLCanvas3D.cpp | 22 ++++++++++++++-------- src/slic3r/GUI/KBShortcutsDialog.cpp | 4 ++++ src/slic3r/GUI/Mouse3DController.cpp | 8 ++++---- src/slic3r/GUI/Mouse3DController.hpp | 4 ++-- src/slic3r/GUI/Preferences.cpp | 11 +++++++++++ 7 files changed, 48 insertions(+), 20 deletions(-) diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index c8d1687e1..7c9403382 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -117,6 +117,12 @@ void AppConfig::set_defaults() if (get("use_inches").empty()) set("use_inches", "0"); + + if (get("default_action_on_close_application").empty()) + set("default_action_on_close_application", "none"); // , "discard" or "save" + + if (get("default_action_on_select_preset").empty()) + set("default_action_on_select_preset", "none"); // , "transfer", "discard" or "save" } #if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN else { @@ -142,11 +148,12 @@ void AppConfig::set_defaults() if (get("show_splash_screen").empty()) set("show_splash_screen", "1"); - if (get("default_action_on_close_application").empty()) - set("default_action_on_close_application", "none"); // , "discard" or "save" - - if (get("default_action_on_select_preset").empty()) - set("default_action_on_select_preset", "none"); // , "transfer", "discard" or "save" +#if ENABLE_CTRL_M_ON_WINDOWS +#ifdef _WIN32 + if (get("use_legacy_3DConnexion").empty()) + set("use_legacy_3DConnexion", "0"); +#endif // _WIN32 +#endif // ENABLE_CTRL_M_ON_WINDOWS // Remove legacy window positions/sizes erase("", "main_frame_maximized"); diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 85493d6f1..3e9db414a 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -61,7 +61,7 @@ //==================== #define ENABLE_2_3_0_ALPHA3 1 -#define ENABLE_CTRL_M_ON_WINDOWS (0 && ENABLE_2_3_0_ALPHA3) +#define ENABLE_CTRL_M_ON_WINDOWS (1 && ENABLE_2_3_0_ALPHA3) //==================== diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index e55c5fa8c..a8221ce69 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2434,9 +2434,15 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) #if ENABLE_CTRL_M_ON_WINDOWS case WXK_CONTROL_M: { - Mouse3DController& controller = wxGetApp().plater()->get_mouse3d_controller(); - controller.show_settings_dialog(!controller.is_settings_dialog_shown()); - m_dirty = true; +#ifdef _WIN32 + if (wxGetApp().app_config->get("use_legacy_3DConnexion") == "1") { +#endif //_WIN32 + Mouse3DController& controller = wxGetApp().plater()->get_mouse3d_controller(); + controller.show_settings_dialog(!controller.is_settings_dialog_shown()); + m_dirty = true; +#ifdef _WIN32 + } +#endif //_WIN32 break; } #else @@ -3880,26 +3886,26 @@ bool GLCanvas3D::_render_arrange_menu(float pos_x) const float x = pos_x * float(wxGetApp().plater()->get_camera().get_zoom()) + 0.5f * canvas_w; imgui->set_next_window_pos(x, m_main_toolbar.get_height(), ImGuiCond_Always, 0.5f, 0.0f); - imgui->begin(_(L("Arrange options")), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse); + imgui->begin(_L("Arrange options"), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse); ArrangeSettings settings = m_arrange_settings; auto &appcfg = wxGetApp().app_config; bool settings_changed = false; - if (imgui->slider_float(_(L("Gap size")), &settings.distance, 0.f, 100.f)) { + if (imgui->slider_float(_L("Gap size"), &settings.distance, 0.f, 100.f)) { m_arrange_settings.distance = settings.distance; settings_changed = true; } - if (imgui->checkbox(_(L("Enable rotations (slow)")), settings.enable_rotation)) { + if (imgui->checkbox(_L("Enable rotations (slow)"), settings.enable_rotation)) { m_arrange_settings.enable_rotation = settings.enable_rotation; settings_changed = true; } ImGui::Separator(); - if (imgui->button(_(L("Reset")))) { + if (imgui->button(_L("Reset"))) { m_arrange_settings = ArrangeSettings{}; settings_changed = true; } @@ -3911,7 +3917,7 @@ bool GLCanvas3D::_render_arrange_menu(float pos_x) ImGui::SameLine(); - if (imgui->button(_(L("Arrange")))) { + if (imgui->button(_L("Arrange"))) { wxGetApp().plater()->arrange(); } diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 62fb1cec9..608cc7a48 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -171,7 +171,11 @@ void KBShortcutsDialog::fill_shortcuts() { "Tab", L("Switch between Editor/Preview") }, { "Shift+Tab", L("Collapse/Expand the sidebar") }, #if ENABLE_CTRL_M_ON_WINDOWS +#ifdef _WIN32 + { ctrl + "M", L("Show/Hide 3Dconnexion devices settings dialog, if enabled") }, +#else { ctrl + "M", L("Show/Hide 3Dconnexion devices settings dialog") }, +#endif // _WIN32 #else #if defined(__linux__) || defined(__APPLE__) { ctrl + "M", L("Show/Hide 3Dconnexion devices settings dialog") }, diff --git a/src/slic3r/GUI/Mouse3DController.cpp b/src/slic3r/GUI/Mouse3DController.cpp index 44ccb8b3e..24da199db 100644 --- a/src/slic3r/GUI/Mouse3DController.cpp +++ b/src/slic3r/GUI/Mouse3DController.cpp @@ -99,7 +99,7 @@ void Mouse3DController::State::append_button(unsigned int id, size_t /* input_qu #endif // ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT } -#ifdef WIN32 +#ifdef _WIN32 #if ENABLE_CTRL_M_ON_WINDOWS static std::string format_device_string(int vid, int pid) { @@ -319,7 +319,7 @@ bool Mouse3DController::State::process_mouse_wheel() m_mouse_wheel_counter = 0; return true; } -#endif // WIN32 +#endif // _WIN32 bool Mouse3DController::State::apply(const Mouse3DController::Params ¶ms, Camera& camera) { @@ -700,10 +700,10 @@ void Mouse3DController::shutdown() } #if ENABLE_CTRL_M_ON_WINDOWS -#ifdef WIN32 +#ifdef _WIN32 if (!m_device_str.empty()) m_params_by_device[m_device_str] = m_params_ui; -#endif // WIN32 +#endif // _WIN32 #endif // ENABLE_CTRL_M_ON_WINDOWS } diff --git a/src/slic3r/GUI/Mouse3DController.hpp b/src/slic3r/GUI/Mouse3DController.hpp index 559e0874f..d99cbad1e 100644 --- a/src/slic3r/GUI/Mouse3DController.hpp +++ b/src/slic3r/GUI/Mouse3DController.hpp @@ -189,7 +189,7 @@ public: bool handle_input(const DataPacketAxis& packet); #endif // __APPLE__ -#ifdef WIN32 +#ifdef _WIN32 bool handle_raw_input_win32(const unsigned char *data, const int packet_lenght); // Called by Win32 HID enumeration callback. @@ -202,7 +202,7 @@ public: // if the application does not register at the driver. This is a workaround to ignore these superfluous // mouse wheel events. bool process_mouse_wheel() { return m_state.process_mouse_wheel(); } -#endif // WIN32 +#endif // _WIN32 // Apply the received 3DConnexion mouse events to the camera. Called from the UI rendering thread. bool apply(Camera& camera); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 6a1a95b03..a2d65d2d1 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -202,6 +202,17 @@ void PreferencesDialog::build() option = Option(def, "show_splash_screen"); m_optgroup_general->append_single_option_line(option); +#if ENABLE_CTRL_M_ON_WINDOWS +#ifdef _WIN32 + def.label = L("Enable support for legacy 3DConnexion devices"); + def.type = coBool; + def.tooltip = L("If enabled, the legacy 3DConnexion devices settings dialog is available by pressing CTRL+M"); + def.set_default_value(new ConfigOptionBool{ app_config->get("use_legacy_3DConnexion") == "1" }); + option = Option(def, "use_legacy_3DConnexion"); + m_optgroup_general->append_single_option_line(option); +#endif // _WIN32 +#endif // ENABLE_CTRL_M_ON_WINDOWS + m_optgroup_general->activate(); m_optgroup_camera = std::make_shared<ConfigOptionsGroup>(this, _L("Camera")); From d9be78d4cb1188073c2b3502c573154961ef24f2 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Thu, 26 Nov 2020 13:37:08 +0100 Subject: [PATCH 122/138] Fixed bug introduced with 4d483f323f732ceccf6e581e160b962aa49d09f5 --- src/slic3r/GUI/DoubleSlider.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index 3fb47418d..34660927a 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -629,9 +629,7 @@ wxString Control::get_label(int tick, LabelType label_type/* = ltHeightWithLayer return wxString::Format("%d", static_cast<unsigned int>(m_values[value])); else { if (label_type == ltEstimatedTime) { - if (value > m_layers_times.size() - 1) - return wxEmptyString; - return short_and_splitted_time(get_time_dhms(m_layers_times[value])); + return (value < m_layers_times.size()) ? short_and_splitted_time(get_time_dhms(m_layers_times[value])) : ""; } wxString str = m_values.empty() ? wxString::Format("%.*f", 2, m_label_koef * value) : From 7f22ce63f65e2af48631eaed0ec1c396a373ea76 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Thu, 26 Nov 2020 13:45:30 +0100 Subject: [PATCH 123/138] Refactoring: 1. Use C++ style cast instead of C style 2. Deleted unused code from Search --- src/slic3r/GUI/AboutDialog.cpp | 6 +- src/slic3r/GUI/ConfigSnapshotDialog.cpp | 3 +- src/slic3r/GUI/ExtraRenderers.cpp | 2 +- src/slic3r/GUI/ExtruderSequenceDialog.cpp | 3 +- src/slic3r/GUI/Field.hpp | 49 ++---------- src/slic3r/GUI/GUI_App.cpp | 2 +- src/slic3r/GUI/KBShortcutsDialog.cpp | 2 +- src/slic3r/GUI/ObjectDataViewModel.cpp | 90 +++++++++++------------ src/slic3r/GUI/ObjectDataViewModel.hpp | 27 ++++--- src/slic3r/GUI/OptionsGroup.cpp | 7 +- src/slic3r/GUI/OptionsGroup.hpp | 17 +---- src/slic3r/GUI/Plater.cpp | 12 +-- src/slic3r/GUI/PresetComboBoxes.cpp | 2 +- src/slic3r/GUI/PresetComboBoxes.hpp | 4 +- src/slic3r/GUI/Search.cpp | 75 ------------------- src/slic3r/GUI/Search.hpp | 44 ++--------- src/slic3r/GUI/SysInfoDialog.cpp | 3 +- src/slic3r/GUI/UnsavedChangesDialog.cpp | 18 ++--- 18 files changed, 110 insertions(+), 256 deletions(-) diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index 6e3f8ecc8..dca77aa24 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -4,7 +4,7 @@ #include "libslic3r/Utils.hpp" #include "GUI.hpp" #include "GUI_App.hpp" - +#include "MainFrame.hpp" namespace Slic3r { namespace GUI { @@ -37,7 +37,7 @@ void AboutDialogLogo::onRepaint(wxEvent &event) // CopyrightsDialog // ----------------------------------------- CopyrightsDialog::CopyrightsDialog() - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, from_u8((boost::format("%1% - %2%") + : DPIDialog(static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, from_u8((boost::format("%1% - %2%") % (wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME) % _utf8(L("Portions copyright"))).str()), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) @@ -201,7 +201,7 @@ void CopyrightsDialog::onCloseDialog(wxEvent &) } AboutDialog::AboutDialog() - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, from_u8((boost::format(_utf8(L("About %s"))) % (wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME)).str()), wxDefaultPosition, + : DPIDialog(static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, from_u8((boost::format(_utf8(L("About %s"))) % (wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME)).str()), wxDefaultPosition, wxDefaultSize, /*wxCAPTION*/wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { SetFont(wxGetApp().normal_font()); diff --git a/src/slic3r/GUI/ConfigSnapshotDialog.cpp b/src/slic3r/GUI/ConfigSnapshotDialog.cpp index fb171a177..487604b1c 100644 --- a/src/slic3r/GUI/ConfigSnapshotDialog.cpp +++ b/src/slic3r/GUI/ConfigSnapshotDialog.cpp @@ -6,6 +6,7 @@ #include "libslic3r/Utils.hpp" #include "libslic3r/Time.hpp" #include "GUI_App.hpp" +#include "MainFrame.hpp" #include "wxExtensions.hpp" namespace Slic3r { @@ -109,7 +110,7 @@ static wxString generate_html_page(const Config::SnapshotDB &snapshot_db, const } ConfigSnapshotDialog::ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db, const wxString &on_snapshot) - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, _(L("Configuration Snapshots")), wxDefaultPosition, + : DPIDialog(static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, _(L("Configuration Snapshots")), wxDefaultPosition, wxSize(45 * wxGetApp().em_unit(), 40 * wxGetApp().em_unit()), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMAXIMIZE_BOX) { diff --git a/src/slic3r/GUI/ExtraRenderers.cpp b/src/slic3r/GUI/ExtraRenderers.cpp index 2915d498c..27e2c1224 100644 --- a/src/slic3r/GUI/ExtraRenderers.cpp +++ b/src/slic3r/GUI/ExtraRenderers.cpp @@ -316,7 +316,7 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR bool BitmapChoiceRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value) { - wxBitmapComboBox* c = (wxBitmapComboBox*)ctrl; + wxBitmapComboBox* c = static_cast<wxBitmapComboBox*>(ctrl); int selection = c->GetSelection(); if (selection < 0) return false; diff --git a/src/slic3r/GUI/ExtruderSequenceDialog.cpp b/src/slic3r/GUI/ExtruderSequenceDialog.cpp index d009648c2..e505f1470 100644 --- a/src/slic3r/GUI/ExtruderSequenceDialog.cpp +++ b/src/slic3r/GUI/ExtruderSequenceDialog.cpp @@ -14,13 +14,14 @@ #include "GUI_App.hpp" #include "I18N.hpp" #include "OptionsGroup.hpp" +#include "MainFrame.hpp" namespace Slic3r { namespace GUI { ExtruderSequenceDialog::ExtruderSequenceDialog(const DoubleSlider::ExtrudersSequence& sequence) - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("Set extruder sequence")), + : DPIDialog(static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("Set extruder sequence")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), m_sequence(sequence) { diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index 6cadb607d..9a15542de 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -38,39 +38,6 @@ using t_back_to_init = std::function<void(const std::string&)>; wxString double_to_string(double const value, const int max_precision = 4); -class RevertButton : public ScalableButton -{ - bool hidden = false; // never show button if it's hidden ones -public: -// RevertButton() {} -// RevertButton(wxWindow* parent, wxWindowID id, const wxString& label = wxEmptyString, -// const wxPoint& pos = wxDefaultPosition, -// const wxSize& size = wxDefaultSize, long style = 0, -// const wxValidator& validator = wxDefaultValidator, -// const wxString& name = wxTextCtrlNameStr) -// { -// this->Create(parent, id, label, pos, size, style, validator, name); -// } - RevertButton( - wxWindow *parent, - const std::string& icon_name = "" - ) : - ScalableButton(parent, wxID_ANY, icon_name) {} - - // overridden from wxWindow base class - virtual bool - AcceptsFocusFromKeyboard() const { return false; } - - void set_as_hidden() { - Hide(); - hidden = true; - } - - virtual bool Show(bool show = true) override { - return wxButton::Show(hidden ? false : show); - } -}; - class Field { protected: // factory function to defer and enforce creation of derived type. @@ -283,14 +250,14 @@ public: void propagate_value(); wxWindow* window {nullptr}; - virtual void set_value(const std::string& value, bool change_event = false) { + void set_value(const std::string& value, bool change_event = false) { m_disable_change_event = !change_event; dynamic_cast<wxTextCtrl*>(window)->SetValue(wxString(value)); m_disable_change_event = false; } - virtual void set_value(const boost::any& value, bool change_event = false) override; - virtual void set_last_meaningful_value() override; - virtual void set_na_value() override; + void set_value(const boost::any& value, bool change_event = false) override; + void set_last_meaningful_value() override; + void set_na_value() override; boost::any& get_value() override; @@ -392,7 +359,7 @@ public: void set_selection(); void set_value(const std::string& value, bool change_event = false); - void set_value(const boost::any& value, bool change_event = false); + void set_value(const boost::any& value, bool change_event = false) override; void set_values(const std::vector<std::string> &values); void set_values(const wxArrayString &values); boost::any& get_value() override; @@ -448,7 +415,7 @@ public: // Propagate value from field to the OptionGroupe and Config after kill_focus/ENTER void propagate_value(wxTextCtrl* win); void set_value(const Vec2d& value, bool change_event = false); - void set_value(const boost::any& value, bool change_event = false); + void set_value(const boost::any& value, bool change_event = false) override; boost::any& get_value() override; void msw_rescale() override; @@ -478,7 +445,7 @@ public: dynamic_cast<wxStaticText*>(window)->SetLabel(wxString::FromUTF8(value.data())); m_disable_change_event = false; } - void set_value(const boost::any& value, bool change_event = false) { + void set_value(const boost::any& value, bool change_event = false) override { m_disable_change_event = !change_event; dynamic_cast<wxStaticText*>(window)->SetLabel(boost::any_cast<wxString>(value)); m_disable_change_event = false; @@ -509,7 +476,7 @@ public: void BUILD() override; void set_value(const int value, bool change_event = false); - void set_value(const boost::any& value, bool change_event = false); + void set_value(const boost::any& value, bool change_event = false) override; boost::any& get_value() override; void enable() override { diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index dc5b5ad6d..cebd4482e 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -86,7 +86,7 @@ class SplashScreen : public wxSplashScreen { public: SplashScreen(const wxBitmap& bitmap, long splashStyle, int milliseconds, wxPoint pos = wxDefaultPosition) - : wxSplashScreen(bitmap, splashStyle, milliseconds, (wxWindow*)wxGetApp().mainframe, wxID_ANY, wxDefaultPosition, wxDefaultSize, + : wxSplashScreen(bitmap, splashStyle, milliseconds, static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, wxDefaultPosition, wxDefaultSize, #ifdef __APPLE__ wxSIMPLE_BORDER | wxFRAME_NO_TASKBAR | wxSTAY_ON_TOP #else diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 608cc7a48..53ae8f66c 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -31,7 +31,7 @@ namespace Slic3r { namespace GUI { KBShortcutsDialog::KBShortcutsDialog() - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, wxString(wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME) + " - " + _L("Keyboard Shortcuts"), + : DPIDialog(static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, wxString(wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME) + " - " + _L("Keyboard Shortcuts"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); diff --git a/src/slic3r/GUI/ObjectDataViewModel.cpp b/src/slic3r/GUI/ObjectDataViewModel.cpp index 569dbf9a2..ef65f5974 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.cpp +++ b/src/slic3r/GUI/ObjectDataViewModel.cpp @@ -285,7 +285,7 @@ wxDataViewItem ObjectDataViewModel::AddVolumeChild( const wxDataViewItem &parent const int extruder/* = 0*/, const bool create_frst_child/* = true*/) { - ObjectDataViewModelNode *root = (ObjectDataViewModelNode*)parent_item.GetID(); + ObjectDataViewModelNode *root = static_cast<ObjectDataViewModelNode*>(parent_item.GetID()); if (!root) return wxDataViewItem(0); wxString extruder_str = extruder == 0 ? _(L("default")) : wxString::Format("%d", extruder); @@ -331,7 +331,7 @@ wxDataViewItem ObjectDataViewModel::AddVolumeChild( const wxDataViewItem &parent wxDataViewItem ObjectDataViewModel::AddSettingsChild(const wxDataViewItem &parent_item) { - ObjectDataViewModelNode *root = (ObjectDataViewModelNode*)parent_item.GetID(); + ObjectDataViewModelNode *root = static_cast<ObjectDataViewModelNode*>(parent_item.GetID()); if (!root) return wxDataViewItem(0); const auto node = new ObjectDataViewModelNode(root, itSettings); @@ -370,7 +370,7 @@ static bool append_root_node(ObjectDataViewModelNode *parent_node, wxDataViewItem ObjectDataViewModel::AddRoot(const wxDataViewItem &parent_item, ItemType root_type) { - ObjectDataViewModelNode *parent_node = (ObjectDataViewModelNode*)parent_item.GetID(); + ObjectDataViewModelNode *parent_node = static_cast<ObjectDataViewModelNode*>(parent_item.GetID()); if (!parent_node) return wxDataViewItem(0); // get InstanceRoot node @@ -408,7 +408,7 @@ wxDataViewItem ObjectDataViewModel::AddInstanceChild(const wxDataViewItem& paren const wxDataViewItem inst_root_item = AddInstanceRoot(parent_item); if (!inst_root_item) return wxDataViewItem(0); - ObjectDataViewModelNode* inst_root_node = (ObjectDataViewModelNode*)inst_root_item.GetID(); + ObjectDataViewModelNode* inst_root_node = static_cast<ObjectDataViewModelNode*>(inst_root_item.GetID()); // Add instance nodes ObjectDataViewModelNode *instance_node = nullptr; @@ -437,7 +437,7 @@ void ObjectDataViewModel::UpdateObjectPrintable(wxDataViewItem parent_item) if (!inst_root_item) return; - ObjectDataViewModelNode* inst_root_node = (ObjectDataViewModelNode*)inst_root_item.GetID(); + ObjectDataViewModelNode* inst_root_node = static_cast<ObjectDataViewModelNode*>(inst_root_item.GetID()); const size_t child_cnt = inst_root_node->GetChildren().Count(); PrintIndicator obj_pi = piUnprintable; @@ -447,7 +447,7 @@ void ObjectDataViewModel::UpdateObjectPrintable(wxDataViewItem parent_item) break; } // and set printable state for object_node to piUndef - ObjectDataViewModelNode* obj_node = (ObjectDataViewModelNode*)parent_item.GetID(); + ObjectDataViewModelNode* obj_node = static_cast<ObjectDataViewModelNode*>(parent_item.GetID()); obj_node->set_printable_icon(obj_pi); ItemChanged(parent_item); } @@ -459,10 +459,10 @@ void ObjectDataViewModel::UpdateInstancesPrintable(wxDataViewItem parent_item) if (!inst_root_item) return; - ObjectDataViewModelNode* obj_node = (ObjectDataViewModelNode*)parent_item.GetID(); + ObjectDataViewModelNode* obj_node = static_cast<ObjectDataViewModelNode*>(parent_item.GetID()); const PrintIndicator obj_pi = obj_node->IsPrintable(); - ObjectDataViewModelNode* inst_root_node = (ObjectDataViewModelNode*)inst_root_item.GetID(); + ObjectDataViewModelNode* inst_root_node = static_cast<ObjectDataViewModelNode*>(inst_root_item.GetID()); const size_t child_cnt = inst_root_node->GetChildren().Count(); for (size_t i=0; i < child_cnt; i++) @@ -476,7 +476,7 @@ void ObjectDataViewModel::UpdateInstancesPrintable(wxDataViewItem parent_item) bool ObjectDataViewModel::IsPrintable(const wxDataViewItem& item) const { - ObjectDataViewModelNode* node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode* node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (!node) return false; @@ -493,7 +493,7 @@ wxDataViewItem ObjectDataViewModel::AddLayersChild(const wxDataViewItem &parent_ const int extruder/* = 0*/, const int index /* = -1*/) { - ObjectDataViewModelNode *parent_node = (ObjectDataViewModelNode*)parent_item.GetID(); + ObjectDataViewModelNode *parent_node = static_cast<ObjectDataViewModelNode*>(parent_item.GetID()); if (!parent_node) return wxDataViewItem(0); wxString extruder_str = extruder == 0 ? _(L("default")) : wxString::Format("%d", extruder); @@ -530,7 +530,7 @@ wxDataViewItem ObjectDataViewModel::AddLayersChild(const wxDataViewItem &parent_ wxDataViewItem ObjectDataViewModel::Delete(const wxDataViewItem &item) { auto ret_item = wxDataViewItem(0); - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (!node) // happens if item.IsOk()==false return ret_item; @@ -701,7 +701,7 @@ wxDataViewItem ObjectDataViewModel::Delete(const wxDataViewItem &item) wxDataViewItem ObjectDataViewModel::DeleteLastInstance(const wxDataViewItem &parent_item, size_t num) { auto ret_item = wxDataViewItem(0); - ObjectDataViewModelNode *parent_node = (ObjectDataViewModelNode*)parent_item.GetID(); + ObjectDataViewModelNode *parent_node = static_cast<ObjectDataViewModelNode*>(parent_item.GetID()); if (!parent_node) return ret_item; const int inst_root_id = get_root_idx(parent_node, itInstanceRoot); @@ -755,7 +755,7 @@ void ObjectDataViewModel::DeleteAll() void ObjectDataViewModel::DeleteChildren(wxDataViewItem& parent) { - ObjectDataViewModelNode *root = (ObjectDataViewModelNode*)parent.GetID(); + ObjectDataViewModelNode *root = static_cast<ObjectDataViewModelNode*>(parent.GetID()); if (!root) // happens if item.IsOk()==false return; @@ -787,7 +787,7 @@ void ObjectDataViewModel::DeleteChildren(wxDataViewItem& parent) void ObjectDataViewModel::DeleteVolumeChildren(wxDataViewItem& parent) { - ObjectDataViewModelNode *root = (ObjectDataViewModelNode*)parent.GetID(); + ObjectDataViewModelNode *root = static_cast<ObjectDataViewModelNode*>(parent.GetID()); if (!root) // happens if item.IsOk()==false return; @@ -821,7 +821,7 @@ void ObjectDataViewModel::DeleteVolumeChildren(wxDataViewItem& parent) void ObjectDataViewModel::DeleteSettings(const wxDataViewItem& parent) { - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)parent.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(parent.GetID()); if (!node) return; // if volume has a "settings"item, than delete it before volume deleting @@ -880,7 +880,7 @@ wxDataViewItem ObjectDataViewModel::GetItemById(const int obj_idx, const int sub if (!item) return wxDataViewItem(0); - auto parent = (ObjectDataViewModelNode*)item.GetID(); + auto parent = static_cast<ObjectDataViewModelNode*>(item.GetID()); for (size_t i = 0; i < parent->GetChildCount(); i++) if (parent->GetNthChild(i)->m_idx == sub_obj_idx) return wxDataViewItem(parent->GetNthChild(i)); @@ -909,7 +909,7 @@ wxDataViewItem ObjectDataViewModel::GetItemByLayerRange(const int obj_idx, const if (!item) return wxDataViewItem(0); - auto parent = (ObjectDataViewModelNode*)item.GetID(); + auto parent = static_cast<ObjectDataViewModelNode*>(item.GetID()); for (size_t i = 0; i < parent->GetChildCount(); i++) if (parent->GetNthChild(i)->m_layer_range == layer_range) return wxDataViewItem(parent->GetNthChild(i)); @@ -931,7 +931,7 @@ int ObjectDataViewModel::GetIdByItem(const wxDataViewItem& item) const if(!item.IsOk()) return -1; - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); auto it = find(m_objects.begin(), m_objects.end(), node); if (it == m_objects.end()) return -1; @@ -943,7 +943,7 @@ int ObjectDataViewModel::GetIdByItemAndType(const wxDataViewItem& item, const It { wxASSERT(item.IsOk()); - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (!node || node->m_type != type) return -1; return node->GetIdx(); @@ -973,7 +973,7 @@ t_layer_height_range ObjectDataViewModel::GetLayerRangeByItem(const wxDataViewIt { wxASSERT(item.IsOk()); - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (!node || node->m_type != itLayer) return { 0.0f, 0.0f }; return node->GetLayerRange(); @@ -1029,7 +1029,7 @@ void ObjectDataViewModel::GetItemInfo(const wxDataViewItem& item, ItemType& type wxASSERT(item.IsOk()); type = itUndef; - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (!node || node->GetIdx() <-1 || ( node->GetIdx() == -1 && @@ -1098,7 +1098,7 @@ bool ObjectDataViewModel::InvalidItem(const wxDataViewItem& item) if (!item) return true; - ObjectDataViewModelNode* node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode* node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (!node || node->invalid()) return true; @@ -1107,7 +1107,7 @@ bool ObjectDataViewModel::InvalidItem(const wxDataViewItem& item) wxString ObjectDataViewModel::GetName(const wxDataViewItem &item) const { - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (!node) // happens if item.IsOk()==false return wxEmptyString; @@ -1116,13 +1116,13 @@ wxString ObjectDataViewModel::GetName(const wxDataViewItem &item) const wxBitmap& ObjectDataViewModel::GetBitmap(const wxDataViewItem &item) const { - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); return node->m_bmp; } wxString ObjectDataViewModel::GetExtruder(const wxDataViewItem& item) const { - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (!node) // happens if item.IsOk()==false return wxEmptyString; @@ -1131,7 +1131,7 @@ wxString ObjectDataViewModel::GetExtruder(const wxDataViewItem& item) const int ObjectDataViewModel::GetExtruderNumber(const wxDataViewItem& item) const { - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (!node) // happens if item.IsOk()==false return 0; @@ -1142,7 +1142,7 @@ void ObjectDataViewModel::GetValue(wxVariant &variant, const wxDataViewItem &ite { wxASSERT(item.IsOk()); - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); switch (col) { case colPrint: @@ -1166,7 +1166,7 @@ bool ObjectDataViewModel::SetValue(const wxVariant &variant, const wxDataViewIte { wxASSERT(item.IsOk()); - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); return node->SetValue(variant, col); } @@ -1196,7 +1196,7 @@ void ObjectDataViewModel::SetExtruder(const wxString& extruder, wxDataViewItem i void ObjectDataViewModel::AddAllChildren(const wxDataViewItem& parent) { - ObjectDataViewModelNode* node = (ObjectDataViewModelNode*)parent.GetID(); + ObjectDataViewModelNode* node = static_cast<ObjectDataViewModelNode*>(parent.GetID()); if (!node || node->GetChildCount() == 0) return; @@ -1222,7 +1222,7 @@ wxDataViewItem ObjectDataViewModel::ReorganizeChildren( const int current_volume if (current_volume_id == new_volume_id) return ret_item; wxASSERT(parent.IsOk()); - ObjectDataViewModelNode *node_parent = (ObjectDataViewModelNode*)parent.GetID(); + ObjectDataViewModelNode *node_parent = static_cast<ObjectDataViewModelNode*>(parent.GetID()); if (!node_parent) // happens if item.IsOk()==false return ret_item; @@ -1270,7 +1270,7 @@ wxDataViewItem ObjectDataViewModel::ReorganizeObjects( const int current_id, co bool ObjectDataViewModel::IsEnabled(const wxDataViewItem &item, unsigned int col) const { wxASSERT(item.IsOk()); - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); // disable extruder selection for the non "itObject|itVolume" item return !(col == colExtruder && node->m_extruder.IsEmpty()); @@ -1282,7 +1282,7 @@ wxDataViewItem ObjectDataViewModel::GetParent(const wxDataViewItem &item) const if (!item.IsOk()) return wxDataViewItem(0); - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); assert(node != nullptr && node->valid()); // objects nodes has no parent too @@ -1298,7 +1298,7 @@ wxDataViewItem ObjectDataViewModel::GetTopParent(const wxDataViewItem &item) con if (!item.IsOk()) return wxDataViewItem(0); - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (node->m_type == itObject) return item; @@ -1315,13 +1315,13 @@ bool ObjectDataViewModel::IsContainer(const wxDataViewItem &item) const if (!item.IsOk()) return true; - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); return node->IsContainer(); } unsigned int ObjectDataViewModel::GetChildren(const wxDataViewItem &parent, wxDataViewItemArray &array) const { - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)parent.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(parent.GetID()); if (!node) { for (auto object : m_objects) @@ -1346,7 +1346,7 @@ unsigned int ObjectDataViewModel::GetChildren(const wxDataViewItem &parent, wxDa void ObjectDataViewModel::GetAllChildren(const wxDataViewItem &parent, wxDataViewItemArray &array) const { - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)parent.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(parent.GetID()); if (!node) { for (auto object : m_objects) array.Add(wxDataViewItem((void*)object)); @@ -1374,7 +1374,7 @@ ItemType ObjectDataViewModel::GetItemType(const wxDataViewItem &item) const { if (!item.IsOk()) return itUndef; - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); return node->m_type < 0 ? itUndef : node->m_type; } @@ -1383,7 +1383,7 @@ wxDataViewItem ObjectDataViewModel::GetItemByType(const wxDataViewItem &parent_i if (!parent_item.IsOk()) return wxDataViewItem(0); - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)parent_item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(parent_item.GetID()); if (node->GetChildCount() == 0) return wxDataViewItem(0); @@ -1414,7 +1414,7 @@ bool ObjectDataViewModel::IsSettingsItem(const wxDataViewItem &item) const { if (!item.IsOk()) return false; - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); return node->m_type == itSettings; } @@ -1422,7 +1422,7 @@ void ObjectDataViewModel::UpdateSettingsDigest(const wxDataViewItem &item, const std::vector<std::string>& categories) { if (!item.IsOk()) return; - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (!node->update_settings_digest(categories)) return; ItemChanged(item); @@ -1433,7 +1433,7 @@ void ObjectDataViewModel::SetVolumeType(const wxDataViewItem &item, const Slic3r if (!item.IsOk() || GetItemType(item) != itVolume) return; - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); node->SetBitmap(*m_volume_bmps[int(type)]); ItemChanged(item); } @@ -1451,7 +1451,7 @@ wxDataViewItem ObjectDataViewModel::SetPrintableState( item = subobj_type&itInstance ? GetItemByInstanceId(obj_idx, subobj_idx) : GetItemByVolumeId(obj_idx, subobj_idx); - ObjectDataViewModelNode* node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode* node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (!node) return wxDataViewItem(0); node->set_printable_icon(printable); @@ -1467,7 +1467,7 @@ wxDataViewItem ObjectDataViewModel::SetObjectPrintableState( PrintIndicator printable, wxDataViewItem obj_item) { - ObjectDataViewModelNode* node = (ObjectDataViewModelNode*)obj_item.GetID(); + ObjectDataViewModelNode* node = static_cast<ObjectDataViewModelNode*>(obj_item.GetID()); if (!node) return wxDataViewItem(0); node->set_printable_icon(printable); @@ -1488,7 +1488,7 @@ void ObjectDataViewModel::Rescale() if (!item.IsOk()) continue; - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); node->msw_rescale(); switch (node->m_type) @@ -1537,7 +1537,7 @@ void ObjectDataViewModel::DeleteWarningIcon(const wxDataViewItem& item, const bo if (!item.IsOk()) return; - ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); if (!node->GetBitmap().IsOk() || !(node->GetType() & (itVolume | itObject))) return; diff --git a/src/slic3r/GUI/ObjectDataViewModel.hpp b/src/slic3r/GUI/ObjectDataViewModel.hpp index 807f1347a..17ad2047f 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.hpp +++ b/src/slic3r/GUI/ObjectDataViewModel.hpp @@ -300,15 +300,15 @@ public: // helper methods to change the model - virtual unsigned int GetColumnCount() const override { return 3;} - virtual wxString GetColumnType(unsigned int col) const override{ return wxT("string"); } + unsigned int GetColumnCount() const override { return 3;} + wxString GetColumnType(unsigned int col) const override{ return wxT("string"); } - virtual void GetValue( wxVariant &variant, - const wxDataViewItem &item, - unsigned int col) const override; - virtual bool SetValue( const wxVariant &variant, - const wxDataViewItem &item, - unsigned int col) override; + void GetValue( wxVariant &variant, + const wxDataViewItem &item, + unsigned int col) const override; + bool SetValue( const wxVariant &variant, + const wxDataViewItem &item, + unsigned int col) override; bool SetValue( const wxVariant &variant, const int item_idx, unsigned int col); @@ -322,18 +322,17 @@ public: const wxDataViewItem &parent); wxDataViewItem ReorganizeObjects( int current_id, int new_id); - virtual bool IsEnabled(const wxDataViewItem &item, unsigned int col) const override; + bool IsEnabled(const wxDataViewItem &item, unsigned int col) const override; - virtual wxDataViewItem GetParent(const wxDataViewItem &item) const override; + wxDataViewItem GetParent(const wxDataViewItem &item) const override; // get object item wxDataViewItem GetTopParent(const wxDataViewItem &item) const; - virtual bool IsContainer(const wxDataViewItem &item) const override; - virtual unsigned int GetChildren(const wxDataViewItem &parent, - wxDataViewItemArray &array) const override; + bool IsContainer(const wxDataViewItem &item) const override; + unsigned int GetChildren(const wxDataViewItem &parent, wxDataViewItemArray &array) const override; void GetAllChildren(const wxDataViewItem &parent,wxDataViewItemArray &array) const; // Is the container just a header or an item with all columns // In our case it is an item with all columns - virtual bool HasContainerColumns(const wxDataViewItem& WXUNUSED(item)) const override { return true; } + bool HasContainerColumns(const wxDataViewItem& WXUNUSED(item)) const override { return true; } ItemType GetItemType(const wxDataViewItem &item) const ; wxDataViewItem GetItemByType( const wxDataViewItem &parent_item, diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index dee250fa7..9da291984 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -111,6 +111,11 @@ OptionsGroup::OptionsGroup( wxWindow* _parent, const wxString& title, { } +wxWindow* OptionsGroup::ctrl_parent() const +{ + return this->custom_ctrl && m_use_custom_ctrl_as_parent ? static_cast<wxWindow*>(this->custom_ctrl) : (this->stb ? static_cast<wxWindow*>(this->stb) : this->parent()); +} + bool OptionsGroup::is_legend_line() { if (m_lines.size() == 1) { @@ -209,7 +214,7 @@ void OptionsGroup::activate_line(Line& line) bool is_legend_line = option_set.front().opt.gui_type == "legend"; if (!custom_ctrl && m_use_custom_ctrl) { - custom_ctrl = new OG_CustomCtrl(is_legend_line ? this->parent() : (wxWindow*)this->stb, this); + custom_ctrl = new OG_CustomCtrl(is_legend_line ? this->parent() : static_cast<wxWindow*>(this->stb), this); if (is_legend_line) sizer->Add(custom_ctrl, 0, wxEXPAND | wxLEFT, wxOSX ? 0 : 10); else diff --git a/src/slic3r/GUI/OptionsGroup.hpp b/src/slic3r/GUI/OptionsGroup.hpp index 5a18332cd..48e4ba0e9 100644 --- a/src/slic3r/GUI/OptionsGroup.hpp +++ b/src/slic3r/GUI/OptionsGroup.hpp @@ -115,22 +115,9 @@ public: /// Returns a copy of the pointer of the parent wxWindow. /// Accessor function is because users are not allowed to change the parent /// but defining it as const means a lot of const_casts to deal with wx functions. - inline wxWindow* parent() const { -#if 0//#ifdef __WXGTK__ - return m_panel; -#else - return m_parent; -#endif /* __WXGTK__ */ - } -#if 0//#ifdef __WXGTK__ - wxWindow* get_parent() const { - return m_parent; - } -#endif /* __WXGTK__ */ + inline wxWindow* parent() const { return m_parent; } - wxWindow* ctrl_parent() const { - return this->custom_ctrl && m_use_custom_ctrl_as_parent ? (wxWindow*)this->custom_ctrl : (this->stb ? (wxWindow*)this->stb : this->parent()); - } + wxWindow* ctrl_parent() const; void append_line(const Line& line); // create controls for the option group diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 05a30584a..edd6b72af 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1396,7 +1396,7 @@ protected: }; ProjectDropDialog::ProjectDropDialog(const std::string& filename) - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, + : DPIDialog(static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, from_u8((boost::format(_utf8(L("%s - Drop project file"))) % SLIC3R_APP_NAME).str()), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE) { @@ -1463,7 +1463,7 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &fi } if (paths.size() > 1) { - wxMessageDialog((wxWindow*)m_plater, _L("You can open only one .gcode file at a time."), + wxMessageDialog(static_cast<wxWindow*>(m_plater), _L("You can open only one .gcode file at a time."), wxString(SLIC3R_APP_NAME) + " - " + _L("Drag and drop G-code file"), wxCLOSE | wxICON_WARNING | wxCENTRE).ShowModal(); return false; } @@ -2070,7 +2070,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) q->SetDropTarget(new PlaterDropTarget(q)); // if my understanding is right, wxWindow takes the owenership q->Layout(); - set_current_panel(wxGetApp().is_editor() ? (wxPanel*)view3D : (wxPanel*)preview); + set_current_panel(wxGetApp().is_editor() ? static_cast<wxPanel*>(view3D) : static_cast<wxPanel*>(preview)); if (wxGetApp().is_gcode_viewer()) preview->hide_layers_slider(); @@ -4836,7 +4836,7 @@ protected: }; ProjectDropDialog::ProjectDropDialog(const std::string& filename) - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, + : DPIDialog(static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, from_u8((boost::format(_utf8(L("%s - Drop project file"))) % SLIC3R_APP_NAME).str()), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE) { @@ -4895,7 +4895,7 @@ bool Plater::load_files(const wxArrayString& filenames) } if (paths.size() > 1) { - wxMessageDialog((wxWindow*)this, _L("You can open only one .gcode file at a time."), + wxMessageDialog(static_cast<wxWindow*>(this), _L("You can open only one .gcode file at a time."), wxString(SLIC3R_APP_NAME) + " - " + _L("Drag and drop G-code file"), wxCLOSE | wxICON_WARNING | wxCENTRE).ShowModal(); return false; } @@ -5021,7 +5021,7 @@ void Plater::remove(size_t obj_idx) { p->remove(obj_idx); } void Plater::reset() { p->reset(); } void Plater::reset_with_confirm() { - if (wxMessageDialog((wxWindow*)this, _L("All objects will be removed, continue?"), wxString(SLIC3R_APP_NAME) + " - " + _L("Delete all"), wxYES_NO | wxCANCEL | wxYES_DEFAULT | wxCENTRE).ShowModal() == wxID_YES) + if (wxMessageDialog(static_cast<wxWindow*>(this), _L("All objects will be removed, continue?"), wxString(SLIC3R_APP_NAME) + " - " + _L("Delete all"), wxYES_NO | wxCANCEL | wxYES_DEFAULT | wxCENTRE).ShowModal() == wxID_YES) reset(); } diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index 1fbded377..60cc2c620 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -519,7 +519,7 @@ void PresetComboBox::OnDrawItem(wxDC& dc, int item, int flags) const { - const wxBitmap& bmp = *(wxBitmap*)m_bitmaps[item]; + const wxBitmap& bmp = *(static_cast<wxBitmap*>(m_bitmaps[item])); if (bmp.IsOk()) { // we should use scaled! size values of bitmap diff --git a/src/slic3r/GUI/PresetComboBoxes.hpp b/src/slic3r/GUI/PresetComboBoxes.hpp index 0bd4f036f..a76d7d18b 100644 --- a/src/slic3r/GUI/PresetComboBoxes.hpp +++ b/src/slic3r/GUI/PresetComboBoxes.hpp @@ -131,8 +131,8 @@ protected: * For this purpose control drawing methods and * control size calculation methods (virtual) are overridden. **/ - virtual bool OnAddBitmap(const wxBitmap& bitmap) override; - virtual void OnDrawItem(wxDC& dc, const wxRect& rect, int item, int flags) const override; + bool OnAddBitmap(const wxBitmap& bitmap) override; + void OnDrawItem(wxDC& dc, const wxRect& rect, int item, int flags) const override; #endif private: diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index 6be8f11bf..2dfa0dec1 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -335,81 +335,6 @@ void OptionsSearcher::add_key(const std::string& opt_key, const wxString& group, } -//------------------------------------------ -// SearchComboPopup -//------------------------------------------ - - -void SearchComboPopup::Init() -{ - this->Bind(wxEVT_MOTION, &SearchComboPopup::OnMouseMove, this); - this->Bind(wxEVT_LEFT_UP, &SearchComboPopup::OnMouseClick, this); - this->Bind(wxEVT_KEY_DOWN, &SearchComboPopup::OnKeyDown, this); -} - -bool SearchComboPopup::Create(wxWindow* parent) -{ - return wxListBox::Create(parent, 1, wxPoint(0, 0), wxDefaultSize); -} - -void SearchComboPopup::SetStringValue(const wxString& s) -{ - int n = wxListBox::FindString(s); - if (n >= 0 && n < int(wxListBox::GetCount())) - wxListBox::Select(n); - - // save a combo control's string - m_input_string = s; -} - -void SearchComboPopup::ProcessSelection(int selection) -{ - wxCommandEvent event(wxEVT_LISTBOX, GetId()); - event.SetInt(selection); - event.SetEventObject(this); - ProcessEvent(event); - - Dismiss(); -} - -void SearchComboPopup::OnMouseMove(wxMouseEvent& event) -{ - wxPoint pt = wxGetMousePosition() - this->GetScreenPosition(); - int selection = this->HitTest(pt); - wxListBox::Select(selection); -} - -void SearchComboPopup::OnMouseClick(wxMouseEvent&) -{ - int selection = wxListBox::GetSelection(); - SetSelection(wxNOT_FOUND); - ProcessSelection(selection); -} - -void SearchComboPopup::OnKeyDown(wxKeyEvent& event) -{ - int key = event.GetKeyCode(); - - // change selected item in the list - if (key == WXK_UP || key == WXK_DOWN) - { - int selection = wxListBox::GetSelection(); - - if (key == WXK_UP && selection > 0) - selection--; - if (key == WXK_DOWN && selection < int(wxListBox::GetCount() - 1)) - selection++; - - wxListBox::Select(selection); - } - // send wxEVT_LISTBOX event if "Enter" was pushed - else if (key == WXK_NUMPAD_ENTER || key == WXK_RETURN) - ProcessSelection(wxListBox::GetSelection()); - else - event.Skip(); // !Needed to have EVT_CHAR generated as well -} - - //------------------------------------------ // SearchDialog //------------------------------------------ diff --git a/src/slic3r/GUI/Search.hpp b/src/slic3r/GUI/Search.hpp index a57e0d015..f8c9dffa6 100644 --- a/src/slic3r/GUI/Search.hpp +++ b/src/slic3r/GUI/Search.hpp @@ -131,38 +131,6 @@ public: }; -class SearchComboPopup : public wxListBox, public wxComboPopup -{ -public: - // Initialize member variables - void Init(); - - // Create popup control - virtual bool Create(wxWindow* parent); - // Return pointer to the created control - virtual wxWindow* GetControl() { return this; } - - // Translate string into a list selection - virtual void SetStringValue(const wxString& s); - // Get list selection as a string - virtual wxString GetStringValue() const { - // we shouldn't change a combo control's string - return m_input_string; - } - - void ProcessSelection(int selection); - - // Do mouse hot-tracking (which is typical in list popups) - void OnMouseMove(wxMouseEvent& event); - // On mouse left up, set the value and close the popup - void OnMouseClick(wxMouseEvent& WXUNUSED(event)); - // process Up/Down arrows and Enter press - void OnKeyDown(wxKeyEvent& event); - -protected: - wxString m_input_string; -}; - //------------------------------------------ // SearchDialog //------------------------------------------ @@ -204,7 +172,7 @@ public: protected: void on_dpi_changed(const wxRect& suggested_rect) override; - virtual void on_sys_color_changed() override; + void on_sys_color_changed() override; }; @@ -234,11 +202,11 @@ public: // implementation of base class virtuals to define model - virtual unsigned int GetColumnCount() const override { return colMax; } - virtual wxString GetColumnType(unsigned int col) const override; - virtual void GetValueByRow(wxVariant& variant, unsigned int row, unsigned int col) const override; - virtual bool GetAttrByRow(unsigned int row, unsigned int col, wxDataViewItemAttr& attr) const override { return true; } - virtual bool SetValueByRow(const wxVariant& variant, unsigned int row, unsigned int col) override { return false; } + unsigned int GetColumnCount() const override { return colMax; } + wxString GetColumnType(unsigned int col) const override; + void GetValueByRow(wxVariant& variant, unsigned int row, unsigned int col) const override; + bool GetAttrByRow(unsigned int row, unsigned int col, wxDataViewItemAttr& attr) const override { return true; } + bool SetValueByRow(const wxVariant& variant, unsigned int row, unsigned int col) override { return false; } }; diff --git a/src/slic3r/GUI/SysInfoDialog.cpp b/src/slic3r/GUI/SysInfoDialog.cpp index d112a295b..8d9572b47 100644 --- a/src/slic3r/GUI/SysInfoDialog.cpp +++ b/src/slic3r/GUI/SysInfoDialog.cpp @@ -12,6 +12,7 @@ #include <wx/clipbrd.h> #include <wx/platinfo.h> #include "GUI_App.hpp" +#include "MainFrame.hpp" #include "wxExtensions.hpp" #ifdef _WIN32 @@ -78,7 +79,7 @@ std::string get_mem_info(bool format_as_html) } SysInfoDialog::SysInfoDialog() - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, (wxGetApp().is_editor() ? wxString(SLIC3R_APP_NAME) : wxString(GCODEVIEWER_APP_NAME)) + " - " + _L("System Information"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) + : DPIDialog(static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, (wxGetApp().is_editor() ? wxString(SLIC3R_APP_NAME) : wxString(GCODEVIEWER_APP_NAME)) + " - " + _L("System Information"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { wxColour bgr_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); SetBackgroundColour(bgr_clr); diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index fd2682b28..149564fca 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -327,7 +327,7 @@ static void update_parents(ModelNode* node) void UnsavedChangesModel::UpdateItemEnabling(wxDataViewItem item) { assert(item.IsOk()); - ModelNode* node = (ModelNode*)item.GetID(); + ModelNode* node = static_cast<ModelNode*>(item.GetID()); node->UpdateEnabling(); update_children(node); @@ -337,7 +337,7 @@ void UnsavedChangesModel::UpdateItemEnabling(wxDataViewItem item) bool UnsavedChangesModel::IsEnabledItem(const wxDataViewItem& item) { assert(item.IsOk()); - ModelNode* node = (ModelNode*)item.GetID(); + ModelNode* node = static_cast<ModelNode*>(item.GetID()); return node->IsToggled(); } @@ -345,7 +345,7 @@ void UnsavedChangesModel::GetValue(wxVariant& variant, const wxDataViewItem& ite { assert(item.IsOk()); - ModelNode* node = (ModelNode*)item.GetID(); + ModelNode* node = static_cast<ModelNode*>(item.GetID()); switch (col) { case colToggle: @@ -382,7 +382,7 @@ bool UnsavedChangesModel::SetValue(const wxVariant& variant, const wxDataViewIte { assert(item.IsOk()); - ModelNode* node = (ModelNode*)item.GetID(); + ModelNode* node = static_cast<ModelNode*>(item.GetID()); switch (col) { case colToggle: @@ -440,7 +440,7 @@ bool UnsavedChangesModel::IsEnabled(const wxDataViewItem& item, unsigned int col return true; // disable unchecked nodes - return ((ModelNode*)item.GetID())->IsToggled(); + return (static_cast<ModelNode*>(item.GetID()))->IsToggled(); } wxDataViewItem UnsavedChangesModel::GetParent(const wxDataViewItem& item) const @@ -449,7 +449,7 @@ wxDataViewItem UnsavedChangesModel::GetParent(const wxDataViewItem& item) const if (!item.IsOk()) return wxDataViewItem(nullptr); - ModelNode* node = (ModelNode*)item.GetID(); + ModelNode* node = static_cast<ModelNode*>(item.GetID()); // "MyMusic" also has no parent if (node->IsRoot()) @@ -464,7 +464,7 @@ bool UnsavedChangesModel::IsContainer(const wxDataViewItem& item) const if (!item.IsOk()) return true; - ModelNode* node = (ModelNode*)item.GetID(); + ModelNode* node = static_cast<ModelNode*>(item.GetID()); return node->IsContainer(); } @@ -522,7 +522,7 @@ void UnsavedChangesModel::Rescale() //------------------------------------------ UnsavedChangesDialog::UnsavedChangesDialog(const wxString& header) - : DPIDialog((wxWindow*)wxGetApp().mainframe , wxID_ANY, _L("PrusaSlicer is closing: Unsaved Changes"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) + : DPIDialog(static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, _L("PrusaSlicer is closing: Unsaved Changes"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { m_app_config_key = "default_action_on_close_application"; @@ -539,7 +539,7 @@ UnsavedChangesDialog::UnsavedChangesDialog(const wxString& header) } UnsavedChangesDialog::UnsavedChangesDialog(Preset::Type type, PresetCollection* dependent_presets, const std::string& new_selected_preset) - : DPIDialog((wxWindow*)wxGetApp().mainframe, wxID_ANY, _L("Switching Presets: Unsaved Changes"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) + : DPIDialog(static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, _L("Switching Presets: Unsaved Changes"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { m_app_config_key = "default_action_on_select_preset"; From dfbf4cbab2a61ef4258087f58e8b29fed2df42b6 Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Thu, 26 Nov 2020 13:58:21 +0100 Subject: [PATCH 124/138] Fix bed filling with more existing instances than needed --- src/libnest2d/include/libnest2d/nester.hpp | 8 ++++++ .../include/libnest2d/selections/firstfit.hpp | 5 ++-- .../selections/selection_boilerplate.hpp | 3 +++ src/libslic3r/Arrange.cpp | 25 ++++++++++++++++--- src/libslic3r/Arrange.hpp | 5 ++-- src/slic3r/GUI/Jobs/ArrangeJob.cpp | 4 +-- src/slic3r/GUI/Jobs/FillBedJob.cpp | 15 ++++++----- 7 files changed, 49 insertions(+), 16 deletions(-) diff --git a/src/libnest2d/include/libnest2d/nester.hpp b/src/libnest2d/include/libnest2d/nester.hpp index 2f207d526..59477b4f1 100644 --- a/src/libnest2d/include/libnest2d/nester.hpp +++ b/src/libnest2d/include/libnest2d/nester.hpp @@ -741,6 +741,10 @@ public: return impl_.getResult(); } + inline int lastPackedBinId() const { + return impl_.lastPackedBinId(); + } + void clear() { impl_.clear(); } }; @@ -862,6 +866,10 @@ public: { return selector_.getResult(); } + + inline int lastPackedBinId() const { + return selector_.lastPackedBinId(); + } }; } diff --git a/src/libnest2d/include/libnest2d/selections/firstfit.hpp b/src/libnest2d/include/libnest2d/selections/firstfit.hpp index 373e8b618..e50fd7009 100644 --- a/src/libnest2d/include/libnest2d/selections/firstfit.hpp +++ b/src/libnest2d/include/libnest2d/selections/firstfit.hpp @@ -71,8 +71,9 @@ public: std::sort(store_.begin(), store_.end(), sortfunc); auto total = last-first; - auto makeProgress = [this, &total](Placer& placer, size_t idx) { - packed_bins_[idx] = placer.getItems(); + auto makeProgress = [this, &total](Placer& placer, size_t bin_idx) { + packed_bins_[bin_idx] = placer.getItems(); + this->last_packed_bin_id_ = int(bin_idx); this->progress_(static_cast<unsigned>(--total)); }; diff --git a/src/libnest2d/include/libnest2d/selections/selection_boilerplate.hpp b/src/libnest2d/include/libnest2d/selections/selection_boilerplate.hpp index e96378296..431159641 100644 --- a/src/libnest2d/include/libnest2d/selections/selection_boilerplate.hpp +++ b/src/libnest2d/include/libnest2d/selections/selection_boilerplate.hpp @@ -18,6 +18,8 @@ public: return packed_bins_; } + inline int lastPackedBinId() const { return last_packed_bin_id_; } + inline void progressIndicator(ProgressFunction fn) { progress_ = fn; } inline void stopCondition(StopCondition cond) { stopcond_ = cond; } @@ -54,6 +56,7 @@ protected: PackGroup packed_bins_; ProgressFunction progress_ = [](unsigned){}; StopCondition stopcond_ = [](){ return false; }; + int last_packed_bin_id_ = -1; }; } diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index 1036844d7..705e213e3 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -309,7 +309,7 @@ protected: public: AutoArranger(const TBin & bin, const ArrangeParams ¶ms, - std::function<void(unsigned, unsigned /*bins*/)> progressind, + std::function<void(unsigned)> progressind, std::function<bool(void)> stopcond) : m_pck(bin, params.min_obj_distance) , m_bin(bin) @@ -347,10 +347,27 @@ public: }; m_pconf.object_function = get_objfn(); + + auto on_packed = params.on_packed; - if (progressind) m_pck.progressIndicator([this, &progressind](unsigned rem) { - progressind(rem, m_pck.lastResult().size() - 1); + if (progressind || on_packed) + m_pck.progressIndicator([this, progressind, on_packed](unsigned rem) { + + if (progressind) + progressind(rem); + + if (on_packed) { + int last_bed = m_pck.lastPackedBinId(); + if (last_bed >= 0) { + Item &last_packed = m_pck.lastResult()[last_bed].back(); + ArrangePolygon ap; + ap.bed_idx = last_packed.binId(); + ap.priority = last_packed.priority(); + on_packed(ap); + } + } }); + if (stopcond) m_pck.stopCondition(stopcond); m_pck.configure(m_pconf); @@ -464,7 +481,7 @@ void _arrange( std::vector<Item> & excludes, const BinT & bin, const ArrangeParams ¶ms, - std::function<void(unsigned, unsigned)> progressfn, + std::function<void(unsigned)> progressfn, std::function<bool()> stopfn) { // Integer ceiling the min distance from the bed perimeters diff --git a/src/libslic3r/Arrange.hpp b/src/libslic3r/Arrange.hpp index 69511e7ec..ec46da8d3 100644 --- a/src/libslic3r/Arrange.hpp +++ b/src/libslic3r/Arrange.hpp @@ -83,8 +83,9 @@ struct ArrangeParams { /// Progress indicator callback called when an object gets packed. /// The unsigned argument is the number of items remaining to pack. - /// Second is the current bed idx being filled. - std::function<void(unsigned, unsigned /*bed_idx*/)> progressind; + std::function<void(unsigned)> progressind; + + std::function<void(const ArrangePolygon &)> on_packed; /// A predicate returning true if abort is needed. std::function<bool(void)> stopcondition; diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index 7af0b4703..7a8c21365 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -158,14 +158,14 @@ void ArrangeJob::process() params.stopcondition = [this]() { return was_canceled(); }; try { - params.progressind = [this, count](unsigned st, unsigned) { + params.progressind = [this, count](unsigned st) { st += m_unprintable.size(); if (st > 0) update_status(int(count - st), arrangestr); }; arrangement::arrange(m_selected, m_unselected, bedpts, params); - params.progressind = [this, count](unsigned st, unsigned) { + params.progressind = [this, count](unsigned st) { if (st > 0) update_status(int(count - st), arrangestr); }; diff --git a/src/slic3r/GUI/Jobs/FillBedJob.cpp b/src/slic3r/GUI/Jobs/FillBedJob.cpp index 9c959ff16..dc91ca9e3 100644 --- a/src/slic3r/GUI/Jobs/FillBedJob.cpp +++ b/src/slic3r/GUI/Jobs/FillBedJob.cpp @@ -90,17 +90,20 @@ void FillBedJob::process() params.min_obj_distance = scaled(settings.distance); params.allow_rotations = settings.enable_rotation; - unsigned curr_bed = 0; - params.stopcondition = [this, &curr_bed]() { - return was_canceled() || curr_bed > 0; + bool do_stop = false; + params.stopcondition = [this, &do_stop]() { + return was_canceled() || do_stop; }; - params.progressind = [this, &curr_bed](unsigned st, unsigned bed) { - curr_bed = bed; + params.progressind = [this](unsigned st) { if (st > 0) update_status(int(m_status_range - st), _(L("Filling bed"))); }; + params.on_packed = [&do_stop] (const ArrangePolygon &ap) { + do_stop = ap.bed_idx > 0 && ap.priority == 0; + }; + arrangement::arrange(m_selected, m_unselected, m_bedpts, params); // finalize just here. @@ -119,7 +122,7 @@ void FillBedJob::finalize() size_t inst_cnt = model_object->instances.size(); for (ArrangePolygon &ap : m_selected) { - if (ap.priority != 0 || !(ap.bed_idx == arrangement::UNARRANGED || ap.bed_idx > 0)) + if (ap.bed_idx != arrangement::UNARRANGED && (ap.priority != 0 || ap.bed_idx == 0)) ap.apply(); } From 00a67ba0043eea72d4579b5e0f29c3edd6f4eced Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Thu, 26 Nov 2020 16:07:07 +0100 Subject: [PATCH 125/138] GCode Viewer -> Parse gcode produced by KISSSlicer --- src/libslic3r/GCode/GCodeProcessor.cpp | 113 ++++++++++++++++++++++++- src/libslic3r/GCode/GCodeProcessor.hpp | 4 +- 2 files changed, 115 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 65f0859ae..0735b789f 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -501,7 +501,8 @@ const std::vector<std::pair<GCodeProcessor::EProducer, std::string>> GCodeProces { EProducer::Cura, "Cura_SteamEngine" }, { EProducer::Simplify3D, "Simplify3D" }, { EProducer::CraftWare, "CraftWare" }, - { EProducer::ideaMaker, "ideaMaker" } + { EProducer::ideaMaker, "ideaMaker" }, + { EProducer::KissSlicer, "KISSlicer" } }; unsigned int GCodeProcessor::s_result_id = 0; @@ -1143,11 +1144,14 @@ bool GCodeProcessor::process_producers_tags(const std::string_view comment) { switch (m_producer) { + case EProducer::Slic3rPE: + case EProducer::Slic3r: case EProducer::PrusaSlicer: { return process_prusaslicer_tags(comment); } case EProducer::Cura: { return process_cura_tags(comment); } case EProducer::Simplify3D: { return process_simplify3d_tags(comment); } case EProducer::CraftWare: { return process_craftware_tags(comment); } case EProducer::ideaMaker: { return process_ideamaker_tags(comment); } + case EProducer::KissSlicer: { return process_kissslicer_tags(comment); } default: { return false; } } } @@ -1457,6 +1461,113 @@ bool GCodeProcessor::process_ideamaker_tags(const std::string_view comment) return false; } +bool GCodeProcessor::process_kissslicer_tags(const std::string_view comment) +{ + // extrusion roles + + // ; 'Raft Path' + size_t pos = comment.find(" 'Raft Path'"); + if (pos == 0) { + m_extrusion_role = erSkirt; + return true; + } + + // ; 'Support Interface Path' + pos = comment.find(" 'Support Interface Path'"); + if (pos == 0) { + m_extrusion_role = erSupportMaterialInterface; + return true; + } + + // ; 'Travel/Ironing Path' + pos = comment.find(" 'Travel/Ironing Path'"); + if (pos == 0) { + m_extrusion_role = erIroning; + return true; + } + + // ; 'Support (may Stack) Path' + pos = comment.find(" 'Support (may Stack) Path'"); + if (pos == 0) { + m_extrusion_role = erSupportMaterial; + return true; + } + + // ; 'Perimeter Path' + pos = comment.find(" 'Perimeter Path'"); + if (pos == 0) { + m_extrusion_role = erExternalPerimeter; + return true; + } + + // ; 'Pillar Path' + pos = comment.find(" 'Pillar Path'"); + if (pos == 0) { + m_extrusion_role = erNone; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + return true; + } + + // ; 'Destring/Wipe/Jump Path' + pos = comment.find(" 'Destring/Wipe/Jump Path'"); + if (pos == 0) { + m_extrusion_role = erNone; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + return true; + } + + // ; 'Prime Pillar Path' + pos = comment.find(" 'Prime Pillar Path'"); + if (pos == 0) { + m_extrusion_role = erNone; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + return true; + } + + // ; 'Loop Path' + pos = comment.find(" 'Loop Path'"); + if (pos == 0) { + m_extrusion_role = erNone; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + return true; + } + + // ; 'Crown Path' + pos = comment.find(" 'Crown Path'"); + if (pos == 0) { + m_extrusion_role = erNone; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + return true; + } + + // ; 'Solid Path' + pos = comment.find(" 'Solid Path'"); + if (pos == 0) { + m_extrusion_role = erNone; + return true; + } + + // ; 'Stacked Sparse Infill Path' + pos = comment.find(" 'Stacked Sparse Infill Path'"); + if (pos == 0) { + m_extrusion_role = erInternalInfill; + return true; + } + + // ; 'Sparse Infill Path' + pos = comment.find(" 'Sparse Infill Path'"); + if (pos == 0) { + m_extrusion_role = erSolidInfill; + return true; + } + + // geometry + + // layer + pos = comment.find(" BEGIN_LAYER_"); + if (pos == 0) { + ++m_layer_id; + return true; + } + + return false; +} + bool GCodeProcessor::detect_producer(const std::string_view comment) { for (const auto& [id, search_string] : Producers) { diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index 1911c83ad..657052703 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -429,7 +429,8 @@ namespace Slic3r { Cura, Simplify3D, CraftWare, - ideaMaker + ideaMaker, + KissSlicer }; static const std::vector<std::pair<GCodeProcessor::EProducer, std::string>> Producers; @@ -486,6 +487,7 @@ namespace Slic3r { bool process_simplify3d_tags(const std::string_view comment); bool process_craftware_tags(const std::string_view comment); bool process_ideamaker_tags(const std::string_view comment); + bool process_kissslicer_tags(const std::string_view comment); bool detect_producer(const std::string_view comment); From cbe0b4f0f13a622825145a639fbadffc5218f636 Mon Sep 17 00:00:00 2001 From: David Kocik <kocikdav@gmail.com> Date: Thu, 26 Nov 2020 17:15:26 +0100 Subject: [PATCH 126/138] Change log level of boost::filesystem::permisions error code message. Now it shouldnt bother like in #5254 --- src/libslic3r/utils.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index d5555f27a..67bf73514 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -432,7 +432,7 @@ CopyFileResult copy_file_inner(const std::string& from, const std::string& to, s boost::system::error_code ec; boost::filesystem::permissions(target, perms, ec); if (ec) - BOOST_LOG_TRIVIAL(error) << "boost::filesystem::permisions before copy error message (this could be irrelevant message based on file system): " << ec.message(); + BOOST_LOG_TRIVIAL(debug) << "boost::filesystem::permisions before copy error message (this could be irrelevant message based on file system): " << ec.message(); ec.clear(); boost::filesystem::copy_file(source, target, boost::filesystem::copy_option::overwrite_if_exists, ec); if (ec) { @@ -442,7 +442,7 @@ CopyFileResult copy_file_inner(const std::string& from, const std::string& to, s ec.clear(); boost::filesystem::permissions(target, perms, ec); if (ec) - BOOST_LOG_TRIVIAL(error) << "boost::filesystem::permisions after copy error message (this could be irrelevant message based on file system): " << ec.message(); + BOOST_LOG_TRIVIAL(debug) << "boost::filesystem::permisions after copy error message (this could be irrelevant message based on file system): " << ec.message(); return SUCCESS; } From 184e4f77cd5a980b1c3d079a02de6b91c5f7365c Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Fri, 27 Nov 2020 09:35:32 +0100 Subject: [PATCH 127/138] Bring PrusaSlicer to top when drag and dropping a project file on its executable --- src/slic3r/GUI/Plater.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index edd6b72af..c82c7f2e7 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2137,6 +2137,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) for (size_t i = 0; i < evt.data.size(); ++i) { input_files.push_back(from_u8(evt.data[i].string())); } + wxGetApp().mainframe->Raise(); this->q->load_files(input_files); }); #else From 22f93a34a8c3ac36e17d271cb65eeb975af6cd60 Mon Sep 17 00:00:00 2001 From: Lukas Matena <lukasmatena@seznam.cz> Date: Mon, 9 Nov 2020 08:16:55 +0100 Subject: [PATCH 128/138] Fix horrible complexity of custom seam lookup (#5067) - polygons are offset individually - custom areas are kept separately for each PrintObject - AABB tree is used to get logN lookup complexity --- src/libslic3r/AABBTreeIndirect.hpp | 30 +++++ src/libslic3r/GCode/SeamPlacer.cpp | 169 ++++++++++++++++++++++------- src/libslic3r/GCode/SeamPlacer.hpp | 37 +++++-- src/libslic3r/PrintObject.cpp | 1 - 4 files changed, 183 insertions(+), 54 deletions(-) diff --git a/src/libslic3r/AABBTreeIndirect.hpp b/src/libslic3r/AABBTreeIndirect.hpp index 964133faa..19fbf1378 100644 --- a/src/libslic3r/AABBTreeIndirect.hpp +++ b/src/libslic3r/AABBTreeIndirect.hpp @@ -726,6 +726,36 @@ inline bool is_any_triangle_in_radius( return hit_point.allFinite(); } + +// Traverse the tree and return the index of an entity whose bounding box +// contains a given point. Returns size_t(-1) when the point is outside. +template<typename TreeType, typename VectorType> +size_t get_candidate_idx(const TreeType& tree, const VectorType& v) +{ + if (tree.empty() || ! tree.node(0).bbox.contains(v)) + return size_t(-1); + + size_t node_idx = 0; + while (true) { + decltype(tree.node(node_idx)) node = tree.node(node_idx); + static_assert(std::is_reference<decltype(node)>::value, + "Nodes shall be addressed by reference."); + assert(node.is_valid()); + assert(node.bbox.contains(v)); + + if (! node.is_leaf()) { + if (tree.left_child(node_idx).bbox.contains(v)) + node_idx = tree.left_child_idx(node_idx); + else if (tree.right_child(node_idx).bbox.contains(v)) + node_idx = tree.right_child_idx(node_idx); + else + return size_t(-1); + } else + return node.idx; + } +} + + } // namespace AABBTreeIndirect } // namespace Slic3r diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index db31f8f67..ff01621b8 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -191,19 +191,93 @@ void SeamPlacer::init(const Print& print) { m_enforcers.clear(); m_blockers.clear(); - //m_last_seam_position.clear(); m_seam_history.clear(); + m_po_list.clear(); - for (const PrintObject* po : print.objects()) { - po->project_and_append_custom_facets(true, EnforcerBlockerType::ENFORCER, m_enforcers); - po->project_and_append_custom_facets(true, EnforcerBlockerType::BLOCKER, m_blockers); - } - const std::vector<double>& nozzle_dmrs = print.config().nozzle_diameter.values; - float max_nozzle_dmr = *std::max_element(nozzle_dmrs.begin(), nozzle_dmrs.end()); - for (ExPolygons& explgs : m_enforcers) - explgs = Slic3r::offset_ex(explgs, scale_(max_nozzle_dmr)); - for (ExPolygons& explgs : m_blockers) - explgs = Slic3r::offset_ex(explgs, scale_(max_nozzle_dmr)); + const std::vector<double>& nozzle_dmrs = print.config().nozzle_diameter.values; + float max_nozzle_dmr = *std::max_element(nozzle_dmrs.begin(), nozzle_dmrs.end()); + + + std::vector<ExPolygons> temp_enf; + std::vector<ExPolygons> temp_blk; + + for (const PrintObject* po : print.objects()) { + temp_enf.clear(); + temp_blk.clear(); + po->project_and_append_custom_facets(true, EnforcerBlockerType::ENFORCER, temp_enf); + po->project_and_append_custom_facets(true, EnforcerBlockerType::BLOCKER, temp_blk); + + // Offset the triangles out slightly. + for (auto* custom_per_object : {&temp_enf, &temp_blk}) + for (ExPolygons& explgs : *custom_per_object) + explgs = Slic3r::offset_ex(explgs, scale_(max_nozzle_dmr)); + +// FIXME: Offsetting should be done somehow cheaper, but following does not work +// for (auto* custom_per_object : {&temp_enf, &temp_blk}) { +// for (ExPolygons& plgs : *custom_per_object) { +// for (ExPolygon& plg : plgs) { +// auto out = Slic3r::offset_ex(plg, scale_(max_nozzle_dmr)); +// plg = out.empty() ? ExPolygon() : out.front(); +// assert(out.empty() || out.size() == 1); +// } +// } +// } + + + + // Remember this PrintObject and initialize a store of enforcers and blockers for it. + m_po_list.push_back(po); + size_t po_idx = m_po_list.size() - 1; + m_enforcers.emplace_back(std::vector<CustomTrianglesPerLayer>(temp_enf.size())); + m_blockers.emplace_back(std::vector<CustomTrianglesPerLayer>(temp_blk.size())); + + // A helper class to store data to build the AABB tree from. + class CustomTriangleRef { + public: + CustomTriangleRef(size_t idx, + Point&& centroid, + BoundingBox&& bb) + : m_idx{idx}, m_centroid{centroid}, + m_bbox{AlignedBoxType(bb.min, bb.max)} + {} + size_t idx() const { return m_idx; } + const Point& centroid() const { return m_centroid; } + const TreeType::BoundingBox& bbox() const { return m_bbox; } + + private: + size_t m_idx; + Point m_centroid; + AlignedBoxType m_bbox; + }; + + // A lambda to extract the ExPolygons and save them into the member AABB tree. + // Will be called for enforcers and blockers separately. + auto add_custom = [](std::vector<ExPolygons>& src, std::vector<CustomTrianglesPerLayer>& dest) { + // Go layer by layer, and append all the ExPolygons into the AABB tree. + size_t layer_idx = 0; + for (ExPolygons& expolys_on_layer : src) { + CustomTrianglesPerLayer& layer_data = dest[layer_idx]; + std::vector<CustomTriangleRef> triangles_data; + layer_data.polys.reserve(expolys_on_layer.size()); + triangles_data.reserve(expolys_on_layer.size()); + + for (ExPolygon& expoly : expolys_on_layer) { + if (expoly.empty()) + continue; + layer_data.polys.emplace_back(std::move(expoly)); + triangles_data.emplace_back(layer_data.polys.size() - 1, + layer_data.polys.back().centroid(), + layer_data.polys.back().bounding_box()); + } + // All polygons are saved, build the AABB tree for them. + layer_data.tree.build(std::move(triangles_data)); + ++layer_idx; + } + }; + + add_custom(temp_enf, m_enforcers.at(po_idx)); + add_custom(temp_blk, m_blockers.at(po_idx)); + } } @@ -216,7 +290,9 @@ Point SeamPlacer::get_seam(const size_t layer_idx, const SeamPosition seam_posit BoundingBox polygon_bb = polygon.bounding_box(); const coord_t nozzle_r = coord_t(scale_(0.5 * nozzle_dmr) + 0.5); - if (this->is_custom_seam_on_layer(layer_idx)) { + size_t po_idx = std::find(m_po_list.begin(), m_po_list.end(), po) - m_po_list.begin(); + + if (this->is_custom_seam_on_layer(layer_idx, po_idx)) { // Seam enf/blockers can begin and end in between the original vertices. // Let add extra points in between and update the leghths. polygon.densify(MINIMAL_POLYGON_SIDE); @@ -229,11 +305,10 @@ Point SeamPlacer::get_seam(const size_t layer_idx, const SeamPosition seam_posit if (seam_position == spAligned) { // Seam is aligned to the seam at the preceding layer. if (po != nullptr) { - std::optional<Point> pos = m_seam_history.get_last_seam(po, layer_idx, polygon_bb); + std::optional<Point> pos = m_seam_history.get_last_seam(m_po_list[po_idx], layer_idx, polygon_bb); if (pos.has_value()) { - //last_pos = m_last_seam_position[po]; last_pos = *pos; - last_pos_weight = is_custom_enforcer_on_layer(layer_idx) ? 0.f : 1.f; + last_pos_weight = is_custom_enforcer_on_layer(layer_idx, po_idx) ? 0.f : 1.f; } } } @@ -313,12 +388,12 @@ Point SeamPlacer::get_seam(const size_t layer_idx, const SeamPosition seam_posit // Custom seam. Huge (negative) constant penalty is applied inside // blockers (enforcers) to rule out points that should not win. - this->apply_custom_seam(polygon, penalties, lengths, layer_idx, seam_position); + this->apply_custom_seam(polygon, po_idx, penalties, lengths, layer_idx, seam_position); // Find a point with a minimum penalty. size_t idx_min = std::min_element(penalties.begin(), penalties.end()) - penalties.begin(); - if (seam_position != spAligned || ! is_custom_enforcer_on_layer(layer_idx)) { + if (seam_position != spAligned || ! is_custom_enforcer_on_layer(layer_idx, po_idx)) { // Very likely the weight of idx_min is very close to the weight of last_pos_proj_idx. // In that case use last_pos_proj_idx instead. float penalty_aligned = penalties[last_pos_proj_idx]; @@ -368,15 +443,15 @@ Point SeamPlacer::get_seam(const size_t layer_idx, const SeamPosition seam_posit // The other loops will get a seam close to the random point chosen // on the innermost contour. //FIXME This works correctly for inner contours first only. - last_pos = this->get_random_seam(layer_idx, polygon); + last_pos = this->get_random_seam(layer_idx, polygon, po_idx); } - if (loop.role() == erExternalPerimeter && is_custom_seam_on_layer(layer_idx)) { + if (loop.role() == erExternalPerimeter && is_custom_seam_on_layer(layer_idx, po_idx)) { // There is a possibility that the loop will be influenced by custom // seam enforcer/blocker. In this case do not inherit the seam // from internal loops (which may conflict with the custom selection // and generate another random one. bool saw_custom = false; - Point candidate = this->get_random_seam(layer_idx, polygon, &saw_custom); + Point candidate = this->get_random_seam(layer_idx, polygon, po_idx, &saw_custom); if (saw_custom) last_pos = candidate; } @@ -385,7 +460,7 @@ Point SeamPlacer::get_seam(const size_t layer_idx, const SeamPosition seam_posit } -Point SeamPlacer::get_random_seam(size_t layer_idx, const Polygon& polygon, +Point SeamPlacer::get_random_seam(size_t layer_idx, const Polygon& polygon, size_t po_idx, bool* saw_custom) const { // Parametrize the polygon by its length. @@ -394,7 +469,7 @@ Point SeamPlacer::get_random_seam(size_t layer_idx, const Polygon& polygon, // Which of the points are inside enforcers/blockers? std::vector<size_t> enforcers_idxs; std::vector<size_t> blockers_idxs; - this->get_enforcers_and_blockers(layer_idx, polygon, enforcers_idxs, blockers_idxs); + this->get_enforcers_and_blockers(layer_idx, polygon, po_idx, enforcers_idxs, blockers_idxs); bool has_enforcers = ! enforcers_idxs.empty(); bool has_blockers = ! blockers_idxs.empty(); @@ -444,32 +519,44 @@ Point SeamPlacer::get_random_seam(size_t layer_idx, const Polygon& polygon, void SeamPlacer::get_enforcers_and_blockers(size_t layer_id, const Polygon& polygon, + size_t po_idx, std::vector<size_t>& enforcers_idxs, std::vector<size_t>& blockers_idxs) const { enforcers_idxs.clear(); blockers_idxs.clear(); - // FIXME: This is quadratic and it should be improved, maybe by building - // an AABB tree (or at least utilize bounding boxes). - for (size_t i=0; i<polygon.points.size(); ++i) { + auto is_inside = [](const Point& pt, + const CustomTrianglesPerLayer& custom_data) -> bool { + assert(! custom_data.polys.empty()); + // Now ask the AABB tree which polygon we should check and check it. + size_t candidate = AABBTreeIndirect::get_candidate_idx(custom_data.tree, pt); + if (candidate != size_t(-1) + && custom_data.polys[candidate].contains(pt)) + return true; + return false; + }; - if (! m_enforcers.empty()) { - assert(layer_id < m_enforcers.size()); - for (const ExPolygon& explg : m_enforcers[layer_id]) { - if (explg.contains(polygon.points[i])) - enforcers_idxs.push_back(i); - } - } - - if (! m_blockers.empty()) { - assert(layer_id < m_blockers.size()); - for (const ExPolygon& explg : m_blockers[layer_id]) { - if (explg.contains(polygon.points[i])) - blockers_idxs.push_back(i); + if (! m_enforcers[po_idx].empty()) { + const CustomTrianglesPerLayer& enforcers = m_enforcers[po_idx][layer_id]; + if (! enforcers.polys.empty()) { + for (size_t i=0; i<polygon.points.size(); ++i) { + if (is_inside(polygon.points[i], enforcers)) + enforcers_idxs.emplace_back(i); } } } + + if (! m_blockers[po_idx].empty()) { + const CustomTrianglesPerLayer& blockers = m_blockers[po_idx][layer_id]; + if (! blockers.polys.empty()) { + for (size_t i=0; i<polygon.points.size(); ++i) { + if (is_inside(polygon.points[i], blockers)) + blockers_idxs.emplace_back(i); + } + } + } + } @@ -543,17 +630,17 @@ static std::vector<size_t> find_enforcer_centers(const Polygon& polygon, -void SeamPlacer::apply_custom_seam(const Polygon& polygon, +void SeamPlacer::apply_custom_seam(const Polygon& polygon, size_t po_idx, std::vector<float>& penalties, const std::vector<float>& lengths, int layer_id, SeamPosition seam_position) const { - if (! is_custom_seam_on_layer(layer_id)) + if (! is_custom_seam_on_layer(layer_id, po_idx)) return; std::vector<size_t> enforcers_idxs; std::vector<size_t> blockers_idxs; - this->get_enforcers_and_blockers(layer_id, polygon, enforcers_idxs, blockers_idxs); + this->get_enforcers_and_blockers(layer_id, polygon, po_idx, enforcers_idxs, blockers_idxs); for (size_t i : enforcers_idxs) { assert(i < penalties.size()); diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index e603b7d57..28ab91313 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -3,9 +3,10 @@ #include <optional> -#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/Polygon.hpp" #include "libslic3r/PrintConfig.hpp" #include "libslic3r/BoundingBox.hpp" +#include "libslic3r/AABBTreeIndirect.hpp" namespace Slic3r { @@ -44,9 +45,20 @@ public: coordf_t nozzle_diameter, const PrintObject* po, bool was_clockwise, const EdgeGrid::Grid* lower_layer_edge_grid); + using TreeType = AABBTreeIndirect::Tree<2, coord_t>; + using AlignedBoxType = Eigen::AlignedBox<TreeType::CoordType, TreeType::NumDimensions>; + private: - std::vector<ExPolygons> m_enforcers; - std::vector<ExPolygons> m_blockers; + + struct CustomTrianglesPerLayer { + Polygons polys; + TreeType tree; + }; + + + std::vector<std::vector<CustomTrianglesPerLayer>> m_enforcers; + std::vector<std::vector<CustomTrianglesPerLayer>> m_blockers; + std::vector<const PrintObject*> m_po_list; //std::map<const PrintObject*, Point> m_last_seam_position; SeamHistory m_seam_history; @@ -54,32 +66,33 @@ private: // Get indices of points inside enforcers and blockers. void get_enforcers_and_blockers(size_t layer_id, const Polygon& polygon, + size_t po_id, std::vector<size_t>& enforcers_idxs, std::vector<size_t>& blockers_idxs) const; // Apply penalties to points inside enforcers/blockers. - void apply_custom_seam(const Polygon& polygon, + void apply_custom_seam(const Polygon& polygon, size_t po_id, std::vector<float>& penalties, const std::vector<float>& lengths, int layer_id, SeamPosition seam_position) const; // Return random point of a polygon. The distribution will be uniform // along the contour and account for enforcers and blockers. - Point get_random_seam(size_t layer_idx, const Polygon& polygon, + Point get_random_seam(size_t layer_idx, const Polygon& polygon, size_t po_id, bool* saw_custom = nullptr) const; // Is there any enforcer/blocker on this layer? - bool is_custom_seam_on_layer(size_t layer_id) const { - return is_custom_enforcer_on_layer(layer_id) - || is_custom_blocker_on_layer(layer_id); + bool is_custom_seam_on_layer(size_t layer_id, size_t po_idx) const { + return is_custom_enforcer_on_layer(layer_id, po_idx) + || is_custom_blocker_on_layer(layer_id, po_idx); } - bool is_custom_enforcer_on_layer(size_t layer_id) const { - return (! m_enforcers.empty() && ! m_enforcers[layer_id].empty()); + bool is_custom_enforcer_on_layer(size_t layer_id, size_t po_idx) const { + return (! m_enforcers.at(po_idx).empty() && ! m_enforcers.at(po_idx)[layer_id].polys.empty()); } - bool is_custom_blocker_on_layer(size_t layer_id) const { - return (! m_blockers.empty() && ! m_blockers[layer_id].empty()); + bool is_custom_blocker_on_layer(size_t layer_id, size_t po_idx) const { + return (! m_blockers.at(po_idx).empty() && ! m_blockers.at(po_idx)[layer_id].polys.empty()); } }; diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index c70542a26..51b3128ba 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -11,7 +11,6 @@ #include "Slicing.hpp" #include "Tesselate.hpp" #include "Utils.hpp" -#include "AABBTreeIndirect.hpp" #include "Fill/FillAdaptive.hpp" #include "Format/STL.hpp" From f485f66b2a87a480586f6213709e50fbed441b4c Mon Sep 17 00:00:00 2001 From: Lukas Matena <lukasmatena@seznam.cz> Date: Wed, 25 Nov 2020 13:13:37 +0100 Subject: [PATCH 129/138] Seam - fix indexing of layers (#5112, #5014) --- src/libslic3r/GCode.cpp | 2 +- src/libslic3r/GCode/SeamPlacer.cpp | 22 +++++++++++++++++++++- src/libslic3r/GCode/SeamPlacer.hpp | 8 +++++++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 86a89fd6f..ba391ab63 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2343,7 +2343,7 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou const EdgeGrid::Grid* edge_grid_ptr = (lower_layer_edge_grid && *lower_layer_edge_grid) ? lower_layer_edge_grid->get() : nullptr; - Point seam = m_seam_placer.get_seam(m_layer->id(), seam_position, loop, + Point seam = m_seam_placer.get_seam(*m_layer, seam_position, loop, last_pos, EXTRUDER_CONFIG(nozzle_diameter), (m_layer == NULL ? nullptr : m_layer->object()), was_clockwise, edge_grid_ptr); diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index ff01621b8..243b633fc 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -6,6 +6,7 @@ #include "libslic3r/EdgeGrid.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/SVG.hpp" +#include "libslic3r/Layer.hpp" namespace Slic3r { @@ -282,7 +283,7 @@ void SeamPlacer::init(const Print& print) -Point SeamPlacer::get_seam(const size_t layer_idx, const SeamPosition seam_position, +Point SeamPlacer::get_seam(const Layer& layer, const SeamPosition seam_position, const ExtrusionLoop& loop, Point last_pos, coordf_t nozzle_dmr, const PrintObject* po, bool was_clockwise, const EdgeGrid::Grid* lower_layer_edge_grid) { @@ -292,6 +293,25 @@ Point SeamPlacer::get_seam(const size_t layer_idx, const SeamPosition seam_posit size_t po_idx = std::find(m_po_list.begin(), m_po_list.end(), po) - m_po_list.begin(); + // Find current layer in respective PrintObject. Cache the result so the + // lookup is only done once per layer, not for each loop. + const Layer* layer_po = nullptr; + if (po == m_last_po && layer.print_z == m_last_print_z) + layer_po = m_last_layer_po; + else { + layer_po = po->get_layer_at_printz(layer.print_z); + m_last_po = po; + m_last_print_z = layer.print_z; + m_last_layer_po = layer_po; + } + if (! layer_po) + return last_pos; + + // Index of this layer in the respective PrintObject. + size_t layer_idx = layer_po->id() - po->layers().front()->id(); // raft layers + + assert(layer_idx < po->layer_count()); + if (this->is_custom_seam_on_layer(layer_idx, po_idx)) { // Seam enf/blockers can begin and end in between the original vertices. // Let add extra points in between and update the leghths. diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index 28ab91313..759e1592e 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -13,6 +13,7 @@ namespace Slic3r { class PrintObject; class ExtrusionLoop; class Print; +class Layer; namespace EdgeGrid { class Grid; } @@ -40,7 +41,7 @@ class SeamPlacer { public: void init(const Print& print); - Point get_seam(const size_t layer_idx, const SeamPosition seam_position, + Point get_seam(const Layer& layer, const SeamPosition seam_position, const ExtrusionLoop& loop, Point last_pos, coordf_t nozzle_diameter, const PrintObject* po, bool was_clockwise, const EdgeGrid::Grid* lower_layer_edge_grid); @@ -55,6 +56,11 @@ private: TreeType tree; }; + // Just a cache to save some lookups. + const Layer* m_last_layer_po = nullptr; + coordf_t m_last_print_z = -1.; + const PrintObject* m_last_po = nullptr; + std::vector<std::vector<CustomTrianglesPerLayer>> m_enforcers; std::vector<std::vector<CustomTrianglesPerLayer>> m_blockers; From ca09bf0805740739fd9d1ea4ebab99f2a0ff8afc Mon Sep 17 00:00:00 2001 From: Lukas Matena <lukasmatena@seznam.cz> Date: Fri, 27 Nov 2020 11:32:35 +0100 Subject: [PATCH 130/138] Fix random seam for single contour islands (#5003) and for external_perimeters_first --- src/libslic3r/GCode/SeamPlacer.cpp | 48 ++++++++++++++++++++---------- src/libslic3r/GCode/SeamPlacer.hpp | 1 + 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 243b633fc..1dc1c002d 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -458,22 +458,38 @@ Point SeamPlacer::get_seam(const Layer& layer, const SeamPosition seam_position, return polygon.points[idx_min]; } else { // spRandom - if (loop.loop_role() == elrContourInternalPerimeter && loop.role() != erExternalPerimeter) { - // This loop does not contain any other loop. Set a random position. - // The other loops will get a seam close to the random point chosen - // on the innermost contour. - //FIXME This works correctly for inner contours first only. - last_pos = this->get_random_seam(layer_idx, polygon, po_idx); - } - if (loop.role() == erExternalPerimeter && is_custom_seam_on_layer(layer_idx, po_idx)) { - // There is a possibility that the loop will be influenced by custom - // seam enforcer/blocker. In this case do not inherit the seam - // from internal loops (which may conflict with the custom selection - // and generate another random one. - bool saw_custom = false; - Point candidate = this->get_random_seam(layer_idx, polygon, po_idx, &saw_custom); - if (saw_custom) - last_pos = candidate; + if (po->print()->default_region_config().external_perimeters_first) { + if (loop.role() == erExternalPerimeter) + last_pos = this->get_random_seam(layer_idx, polygon, po_idx); + else { + // Internal perimeters will just use last_pos. + } + } else { + if (loop.loop_role() == elrContourInternalPerimeter && loop.role() != erExternalPerimeter) { + // This loop does not contain any other loop. Set a random position. + // The other loops will get a seam close to the random point chosen + // on the innermost contour. + last_pos = this->get_random_seam(layer_idx, polygon, po_idx); + m_last_loop_was_external = false; + } + if (loop.role() == erExternalPerimeter) { + if (m_last_loop_was_external) { + // There was no internal perimeter before this one. + last_pos = this->get_random_seam(layer_idx, polygon, po_idx); + } else { + if (is_custom_seam_on_layer(layer_idx, po_idx)) { + // There is a possibility that the loop will be influenced by custom + // seam enforcer/blocker. In this case do not inherit the seam + // from internal loops (which may conflict with the custom selection + // and generate another random one. + bool saw_custom = false; + Point candidate = this->get_random_seam(layer_idx, polygon, po_idx, &saw_custom); + if (saw_custom) + last_pos = candidate; + } + } + m_last_loop_was_external = true; + } } return last_pos; } diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index 759e1592e..0bae7af5a 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -61,6 +61,7 @@ private: coordf_t m_last_print_z = -1.; const PrintObject* m_last_po = nullptr; + bool m_last_loop_was_external = true; std::vector<std::vector<CustomTrianglesPerLayer>> m_enforcers; std::vector<std::vector<CustomTrianglesPerLayer>> m_blockers; From a650801b80a4fad1030662f3de38135c966ce465 Mon Sep 17 00:00:00 2001 From: David Kocik <kocikdav@gmail.com> Date: Fri, 27 Nov 2020 12:51:49 +0100 Subject: [PATCH 131/138] call correct load_files at MacOpenFiles --- src/slic3r/GUI/GUI_App.cpp | 11 ++++++++++- src/slic3r/GUI/Plater.cpp | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index cebd4482e..8a033610f 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1771,8 +1771,17 @@ void GUI_App::MacOpenFiles(const wxArrayString &fileNames) if (!non_gcode_files.empty()) start_new_slicer(non_gcode_files, true); } else { - if (! files.empty()) + if (! files.empty()) { +#if ENABLE_DRAG_AND_DROP_FIX + wxArrayString input_files; + for (size_t i = 0; i < non_gcode_files.size(); ++i) { + input_files.push_back(non_gcode_files[i]); + } + this->plater()->load_files(input_files); +#else this->plater()->load_files(files, true, true); +#endif + } for (const wxString &filename : gcode_files) start_new_gcodeviewer(&filename); } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index c82c7f2e7..f1edb711d 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2132,7 +2132,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) #if ENABLE_DRAG_AND_DROP_FIX this->q->Bind(EVT_LOAD_MODEL_OTHER_INSTANCE, [this](LoadFromOtherInstanceEvent& evt) { - BOOST_LOG_TRIVIAL(debug) << "received load from other instance event "; + BOOST_LOG_TRIVIAL(error) << "received load from other instance event (1)"; wxArrayString input_files; for (size_t i = 0; i < evt.data.size(); ++i) { input_files.push_back(from_u8(evt.data[i].string())); @@ -2142,7 +2142,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) }); #else this->q->Bind(EVT_LOAD_MODEL_OTHER_INSTANCE, [this](LoadFromOtherInstanceEvent &evt) { - BOOST_LOG_TRIVIAL(debug) << "received load from other instance event "; + BOOST_LOG_TRIVIAL(error) << "received load from other instance event (2)"; this->load_files(evt.data, true, true); }); #endif // ENABLE_DRAG_AND_DROP_FIX From b71c001845f8158260b15818a5c30d8f917b1780 Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Fri, 27 Nov 2020 22:41:23 +0100 Subject: [PATCH 132/138] Fixed suppress scrolling for preset comboboxes and some comboboxes on right panel on all platforms --- src/slic3r/GUI/Field.cpp | 38 +++++++---------------------- src/slic3r/GUI/PresetComboBoxes.cpp | 31 ++++++----------------- src/slic3r/GUI/PresetComboBoxes.hpp | 1 - 3 files changed, 17 insertions(+), 53 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 7c7838afa..4ef39fad5 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -861,27 +861,16 @@ void Choice::BUILD() { temp->SetItemBitmap(0, empty_bmp); #endif - temp->Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent&) { m_is_dropped = true; }); - temp->Bind(wxEVT_COMBOBOX_CLOSEUP, [this, temp](wxCommandEvent&) { - // EVT_COMBOBOX_CLOSEUP is called after EVT_COMBOBOX on Windows - // so, always set m_suppress_change to "true" -#ifndef __WXMSW__ - if (m_last_selected == temp->GetSelection()) -#endif //__WXMSW__ - m_is_dropped = false; - }); + temp->Bind(wxEVT_MOUSEWHEEL, [this](wxMouseEvent& e) { + if (m_suppress_scroll && !m_is_dropped) + e.StopPropagation(); + else + e.Skip(); + }); + temp->Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent&) { m_is_dropped = true; }); + temp->Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent&) { m_is_dropped = false; }); - temp->Bind(wxEVT_COMBOBOX, ([this, temp](wxCommandEvent evt) { - if (m_suppress_scroll) { - if (!m_is_dropped) { - temp->SetSelection(m_last_selected); - return; - } - m_last_selected = evt.GetSelection(); - } - on_change_field(); - m_is_dropped = false; - }), temp->GetId()); + temp->Bind(wxEVT_COMBOBOX, ([this, temp](wxCommandEvent) { on_change_field(); }), temp->GetId()); if (m_is_editable) { temp->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) { @@ -908,8 +897,6 @@ void Choice::BUILD() { void Choice::suppress_scroll() { m_suppress_scroll = true; - choice_ctrl* ctrl = dynamic_cast<choice_ctrl*>(window); - m_last_selected = ctrl->GetSelection(); } void Choice::set_selection() @@ -926,7 +913,6 @@ void Choice::set_selection() case coEnum:{ int id_value = m_opt.get_default_value<ConfigOptionEnum<SeamPosition>>()->value; //!! field->SetSelection(id_value); - if (m_suppress_scroll) m_last_selected = id_value; break; } case coFloat: @@ -960,8 +946,6 @@ void Choice::set_selection() ++idx; } idx == m_opt.enum_values.size() ? field->SetValue(text_value) : field->SetSelection(idx); - - if (m_suppress_scroll && idx < m_opt.enum_values.size()) m_last_selected = idx; } } @@ -981,7 +965,6 @@ void Choice::set_value(const std::string& value, bool change_event) //! Redunda idx == m_opt.enum_values.size() ? field->SetValue(value) : field->SetSelection(idx); - if (m_suppress_scroll && idx < m_opt.enum_values.size()) m_last_selected = idx; m_disable_change_event = false; } @@ -1020,7 +1003,6 @@ void Choice::set_value(const boost::any& value, bool change_event) } else field->SetSelection(idx); - if (m_suppress_scroll && idx < enums.size()) m_last_selected = idx; break; } case coEnum: { @@ -1051,7 +1033,6 @@ void Choice::set_value(const boost::any& value, bool change_event) val = 0; } field->SetSelection(val); - if (m_suppress_scroll) m_last_selected = val; break; } default: @@ -1211,7 +1192,6 @@ void Choice::msw_rescale() idx == m_opt.enum_values.size() ? field->SetValue(selection) : field->SetSelection(idx); - if (m_suppress_scroll && idx < m_opt.enum_values.size()) m_last_selected = idx; #else auto size = wxSize(def_width_wider() * m_em_unit, wxDefaultCoord); if (m_opt.height >= 0) size.SetHeight(m_opt.height * m_em_unit); diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index 60cc2c620..2ef7b3e1f 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -103,15 +103,15 @@ PresetComboBox::PresetComboBox(wxWindow* parent, Preset::Type preset_type, const // parameters for an icon's drawing fill_width_height(); - Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent&) { m_suppress_change = false; }); - Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent&) { - // EVT_COMBOBOX_CLOSEUP is called after EVT_COMBOBOX on Windows - // so, always set m_suppress_change to "true" -#ifndef __WXMSW__ - if (m_last_selected == this->GetSelection()) -#endif //__WXMSW__ - m_suppress_change = true; + + Bind(wxEVT_MOUSEWHEEL, [this](wxMouseEvent& e) { + if (m_suppress_change) + e.StopPropagation(); + else + e.Skip(); }); + Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent&) { m_suppress_change = false; }); + Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent&) { m_suppress_change = true; }); Bind(wxEVT_COMBOBOX, [this](wxCommandEvent& evt) { // see https://github.com/prusa3d/PrusaSlicer/issues/3889 @@ -156,15 +156,6 @@ bool PresetComboBox::set_printer_technology(PrinterTechnology pt) return false; } -bool PresetComboBox::check_event_for_suppress_change(wxCommandEvent& evt) -{ - if (m_suppress_change) { - evt.StopPropagation(); - SetSelection(m_last_selected); - } - return m_suppress_change; -} - void PresetComboBox::invalidate_selection() { m_last_selected = INT_MAX; // this value means that no one item is selected @@ -552,8 +543,6 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset PresetComboBox(parent, preset_type, wxSize(15 * wxGetApp().em_unit(), -1)) { Bind(wxEVT_COMBOBOX, [this](wxCommandEvent &evt) { - if (check_event_for_suppress_change(evt)) - return; auto selected_item = evt.GetSelection(); auto marker = reinterpret_cast<Marker>(this->GetClientData(selected_item)); @@ -579,7 +568,6 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset } else { evt.StopPropagation(); } - m_suppress_change = true; }); if (m_type == Preset::TYPE_FILAMENT) @@ -892,8 +880,6 @@ TabPresetComboBox::TabPresetComboBox(wxWindow* parent, Preset::Type preset_type) PresetComboBox(parent, preset_type, wxSize(35 * wxGetApp().em_unit(), -1)) { Bind(wxEVT_COMBOBOX, [this](wxCommandEvent& evt) { - if (check_event_for_suppress_change(evt)) - return; // see https://github.com/prusa3d/PrusaSlicer/issues/3889 // Under OSX: in case of use of a same names written in different case (like "ENDER" and "Ender") // m_presets_choice->GetSelection() will return first item, because search in PopupListCtrl is case-insensitive. @@ -919,7 +905,6 @@ TabPresetComboBox::TabPresetComboBox(wxWindow* parent, Preset::Type preset_type) } evt.StopPropagation(); - m_suppress_change = true; }); } diff --git a/src/slic3r/GUI/PresetComboBoxes.hpp b/src/slic3r/GUI/PresetComboBoxes.hpp index a76d7d18b..d3cc6277d 100644 --- a/src/slic3r/GUI/PresetComboBoxes.hpp +++ b/src/slic3r/GUI/PresetComboBoxes.hpp @@ -99,7 +99,6 @@ protected: PrinterTechnology printer_technology {ptAny}; - bool check_event_for_suppress_change(wxCommandEvent& evt); void invalidate_selection(); void validate_selection(bool predicate = false); void update_selection(); From 7ab1fcaa5cf94eab51697f2e32e9af37b358d75a Mon Sep 17 00:00:00 2001 From: YuSanka <yusanka@gmail.com> Date: Sat, 28 Nov 2020 01:17:01 +0100 Subject: [PATCH 133/138] Fixed update after editing for "infill_ancor" and "infill_ancor_max" parameters. * Update value only if it is changed * Show info dialog (suggestion to change mm to %) only when parameter value is bigger than 100 --- src/slic3r/GUI/Field.cpp | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 4ef39fad5..e5ba38432 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -262,6 +262,11 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true double val = 0.; // Replace the first occurence of comma in decimal number. str.Replace(",", ".", false); + + // remove space and "mm" substring, if any exists + str.Replace(" ", "", true); + str.Replace("m", "", true); + if (!str.ToCDouble(&val)) { if (!check_value) { @@ -280,13 +285,15 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true break; } + bool infill_anchors = m_opt.opt_key == "infill_anchor" || m_opt.opt_key == "infill_anchor_max"; + const std::string sidetext = m_opt.sidetext.rfind("mm/s") != std::string::npos ? "mm/s" : "mm"; const wxString stVal = double_to_string(val, 2); const wxString msg_text = from_u8((boost::format(_utf8(L("Do you mean %s%% instead of %s %s?\n" "Select YES if you want to change this value to %s%%, \n" "or NO if you are sure that %s %s is a correct value."))) % stVal % stVal % sidetext % stVal % stVal % sidetext).str()); wxMessageDialog dialog(m_parent, msg_text, _(L("Parameter validation")) + ": " + m_opt_id , wxICON_WARNING | wxYES | wxNO); - if (dialog.ShowModal() == wxID_YES) { + if ((!infill_anchors || val > 100) && dialog.ShowModal() == wxID_YES) { set_value(from_u8((boost::format("%s%%") % stVal).str()), false/*true*/); str += "%%"; } @@ -870,20 +877,27 @@ void Choice::BUILD() { temp->Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent&) { m_is_dropped = true; }); temp->Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent&) { m_is_dropped = false; }); - temp->Bind(wxEVT_COMBOBOX, ([this, temp](wxCommandEvent) { on_change_field(); }), temp->GetId()); + temp->Bind(wxEVT_COMBOBOX, [this](wxCommandEvent&) { on_change_field(); }, temp->GetId()); if (m_is_editable) { temp->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) { e.Skip(); - if (m_opt.type == coStrings || m_opt.type == coFloatOrPercent) { + if (m_opt.type == coStrings) { on_change_field(); return; } - double old_val = !m_value.empty() ? boost::any_cast<double>(m_value) : -99999; if (is_defined_input_value<choice_ctrl>(window, m_opt.type)) { - if (fabs(old_val - boost::any_cast<double>(get_value())) <= 0.0001) - return; + if (m_opt.type == coFloatOrPercent) { + std::string old_val = !m_value.empty() ? boost::any_cast<std::string>(m_value) : ""; + if (old_val == boost::any_cast<std::string>(get_value())) + return; + } + else { + double old_val = !m_value.empty() ? boost::any_cast<double>(m_value) : -99999; + if (fabs(old_val - boost::any_cast<double>(get_value())) <= 0.0001) + return; + } on_change_field(); } else From 6d27b0f5d0d16e23ad23a490832554da2056c830 Mon Sep 17 00:00:00 2001 From: rtyr <36745189+rtyr@users.noreply.github.com> Date: Sat, 28 Nov 2020 10:35:59 +0100 Subject: [PATCH 134/138] 1.2.0-beta0 --- resources/profiles/PrusaResearch.idx | 290 +++++++++++---------- resources/profiles/PrusaResearch.ini | 374 +++++++++++++++++++++++---- 2 files changed, 465 insertions(+), 199 deletions(-) diff --git a/resources/profiles/PrusaResearch.idx b/resources/profiles/PrusaResearch.idx index 6f647c910..45308ffa5 100644 --- a/resources/profiles/PrusaResearch.idx +++ b/resources/profiles/PrusaResearch.idx @@ -1,143 +1,147 @@ -min_slic3r_version = 2.3.0-alpha4 -1.2.0-alpha0 Added filament spool weights -min_slic3r_version = 2.2.0-alpha3 -1.1.10 Updated firmware version. -1.1.9 Updated K values in filament profiles (linear advance). Added new filament profiles and SLA materials. -1.1.8 Updated start/end g-code scripts for MK3 family printer profiles (reduced extruder motor current for some print profiles). Added new filament and SLA material profiles. -1.1.7 Updated end g-code for MMU2 Single printer profiles. Added/updated filament and SLA material profiles. -1.1.6 Updated firmware version for MK2.5/S and MK3/S. -1.1.5 Updated MMU1 specific retraction settings for Prusament PC Blend -1.1.4 Added Prusament PC Blend filament profile. -1.1.3 Added SLA material and filament profile -1.1.2 Added renamed_from fields for PETG filaments to indicate that they were renamed from PET. -1.1.1 Added Verbatim and Fiberlogy PETG filament profiles. Updated auto cooling settings for ABS. -1.1.1-beta Updated for PrusaSlicer 2.2.0-beta -1.1.1-alpha4 Extended list of default filaments to be installed, top/bottom_solid_min_thickness defined, infill_acceleration changed etc -1.1.1-alpha3 Print bed textures are now configurable from the Preset Bundle. Requires PrusaSlicer 2.2.0-alpha3 and newer. -# The following line (max_slic3r_version) forces the users of PrusaSlicer 2.2.0-alpha3 and newer to update the profiles to 1.1.1-alpha3 and newer, -# so they will see the print bed. -max_slic3r_version = 2.2.0-alpha2 -min_slic3r_version = 2.2.0-alpha0 -1.1.1-alpha2 Bumped up config version, so our in house customer will get updated profiles. -1.1.0 Filament aliases, Creality profiles and other goodies for PrusaSlicer 2.2.0-alpha0 -min_slic3r_version = 2.1.1-beta0 -1.0.10 Updated firmware version for MK2.5/S and MK3/S. -1.0.9 Updated firmware version for MK2.5/S and MK3/S. -1.0.8 Various changes in FFF profiles, new filaments/materials added. See changelog. -1.0.7 Updated layer height limits for MINI -1.0.6 Added Prusa MINI profiles -min_slic3r_version = 2.1.0-alpha0 -1.0.5 Added SLA materials -1.0.4 Updated firmware version and 0.25mm nozzle profiles -1.0.3 Added filament profiles -1.0.2 Added SLA materials -1.0.1 Updated MK3 firmware version check to 3.8.0, new soluble support profiles for 0.6mm nozzle diameter MMU2S printers. -1.0.0 Updated end G-code for the MMU2 profiles to lift the extruder at the end of print. Wipe tower bridging distance was made smaller for soluble supports. -1.0.0-beta1 Updated color for the ASA filaments to differ from the other filaments. Single extruder printers now have no extruder color assigned, obects and toolpaths will be colored with the color of the active filament. -1.0.0-beta0 Printer model checks in start G-codes, ASA filament profiles, limits on min / max SL1 exposition times -1.0.0-alpha2 Printer model and nozzle diameter check -1.0.0-alpha1 Added Prusament ASA profile -1.0.0-alpha0 Filament specific retract for PET and similar copolymers, and for FLEX -min_slic3r_version = 1.42.0-alpha6 -0.8.9 Updated firmware version for MK2.5/S and MK3/S. -0.8.8 Updated firmware version for MK2.5/S and MK3/S. -0.8.7 Updated firmware version -0.8.6 Updated firmware version for MK2.5/S and MK3/S -0.8.5 Updated SL1 printer and material settings -0.8.4 Added Prusament ASA profile -0.8.3 FW version and SL1 materials update -0.8.2 FFF and SL1 settings update -0.8.1 Output settings and SLA materials update -0.8.0 Updated for the PrusaSlicer 2.0.0 final release -0.8.0-rc2 Updated firmware versions for MK2.5/S and MK3/S -0.8.0-rc1 Updated SLA profiles -0.8.0-rc Updated for the PrusaSlicer 2.0.0-rc release -0.8.0-beta4 Updated SLA profiles -0.8.0-beta3 Updated SLA profiles -0.8.0-beta2 Updated SLA profiles -0.8.0-beta1 Updated SLA profiles -0.8.0-beta Updated SLA profiles -0.8.0-alpha9 Updated SLA and FFF profiles -0.8.0-alpha8 Updated SLA profiles -0.8.0-alpha7 Updated SLA profiles -0.8.0-alpha6 Updated SLA profiles -min_slic3r_version = 1.42.0-alpha -0.8.0-alpha Updated SLA profiles -0.4.0-alpha4 Updated SLA profiles -0.4.0-alpha3 Update of SLA profiles -0.4.0-alpha2 First SLA profiles -min_slic3r_version = 1.41.3-alpha -0.4.12 Updated firmware version for MK2.5/S and MK3/S. -0.4.11 Updated firmware version for MK2.5/S and MK3/S. -0.4.10 Updated firmware version -0.4.9 Updated firmware version for MK2.5/S and MK3/S -0.4.8 MK2.5/3/S FW update -0.4.7 MK2/S/MMU FW update -0.4.6 Updated firmware versions for MK2.5/S and MK3/S -0.4.5 Enabled remaining time support for MK2/S/MMU1 -0.4.4 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt -0.4.3 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt -0.4.2 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt -0.4.1 New MK2.5S and MK3S FW versions -0.4.0 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt -min_slic3r_version = 1.41.1 -0.3.11 Updated firmware version for MK2.5/S and MK3/S. -0.3.10 Updated firmware version -0.3.9 Updated firmware version for MK2.5/S and MK3/S -0.3.8 MK2.5/3/S FW update -0.3.7 MK2/S/MMU FW update -0.3.6 Updated firmware versions for MK2.5 and MK3 -0.3.5 New MK2.5 and MK3 FW versions -0.3.4 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt -0.3.3 Prusament PETG released -0.3.2 New MK2.5 and MK3 FW versions -0.3.1 New MK2.5 and MK3 FW versions -0.3.0 New MK2.5 and MK3 FW version -min_slic3r_version = 1.41.0-alpha -0.2.9 New MK2.5 and MK3 FW versions -0.2.8 New MK2.5 and MK3 FW version -min_slic3r_version = 1.41.1 -0.2.7 New MK2.5 and MK3 FW version -0.2.6 Added MMU2 MK2.5 settings -min_slic3r_version = 1.41.0-alpha -0.2.5 Prusament is out - added prusament settings -0.2.4 Added soluble support profiles for MMU2 -0.2.3 Added materials for MMU2 single mode, edited MK3 xy stealth feedrate limit -0.2.2 Edited MMU2 Single mode purge line -0.2.1 Added PET and BVOH settings for MMU2 -0.2.0-beta5 Fixed MMU1 ramming parameters -0.2.0-beta4 Added filament loading speed at start, increased minimal purge on wipe tower -0.2.0-beta3 Edited ramming parameters and filament cooling moves for MMU2 -0.2.0-beta2 Edited first layer speed and wipe tower position -0.2.0-beta Removed limit on the MK3MMU2 height, added legacy M204 S T format to the MK2 profiles -0.2.0-alpha8 Added filament_load/unload_time for the PLA/ABS MMU2 filament presets. -0.2.0-alpha7 Vojtech's fix the incorrect *MK3* references -0.2.0-alpha6 Jindra's way to fix the 0.2.0-alpha5 version -0.2.0-alpha5 Bumped up firmware versions for MK2.5/MK3 to 3.3.1, disabled priming areas for MK3MMU2 -0.2.0-alpha4 Extended the custom start/end G-codes of the MMU2.0 printers for no priming towers. -0.2.0-alpha3 Adjusted machine limits for time estimates, added filament density and cost -0.2.0-alpha2 Renamed the key MK3SMMU to MK3MMU2, added a generic PLA MMU2 material -0.2.0-alpha1 added initial profiles for the i3 MK3 Multi Material Upgrade 2.0 -0.2.0-alpha moved machine limits from the start G-code to the new print profile parameters -min_slic3r_version = 1.40.0 -0.1.18 Updated firmware version -0.1.17 Updated firmware version for MK2.5/S and MK3/S -0.1.16 MK2.5/3/S FW update -0.1.15 MK2/S/MMU FW update -0.1.14 Updated firmware versions for MK2.5 and MK3 -0.1.13 New MK2.5 and MK3 FW versions -0.1.12 New MK2.5 and MK3 FW versions -0.1.11 fw version changed to 3.3.1 -0.1.10 MK3 jerk and acceleration update -0.1.9 edited support extrusion width for 0.25 and 0.6 nozzles -0.1.8 extrusion width for 0,25, 0.6 and variable layer height fixes -0.1.7 Fixed errors in 0.25mm and 0.6mm profiles -0.1.6 Split the MK2.5 profile from the MK2S -min_slic3r_version = 1.40.0-beta -0.1.5 fixed printer_variant fields for the i3 MK3 0.25 and 0.6mm nozzles -0.1.4 edited fw version, added z-raise after print -min_slic3r_version = 1.40.0-alpha -0.1.3 Fixed an incorrect position of the max_print_height parameter -0.1.2 Wipe tower changes -0.1.1 Minor print speed adjustments -0.1.0 Initial +min_slic3r_version = 2.3.0-beta0 +1.2.0-beta0 Adjusted infill anchor limits. Added filament spool weights. +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-alpha0 Added filament spool weights +min_slic3r_version = 2.2.0-alpha3 +1.1.11 Renamed MK3S and MINI printer profiles. Updated end g-code (MINI). Added new SLA materials and filament profiles. +1.1.10 Updated firmware version. +1.1.9 Updated K values in filament profiles (linear advance). Added new filament profiles and SLA materials. +1.1.8 Updated start/end g-code scripts for MK3 family printer profiles (reduced extruder motor current for some print profiles). Added new filament and SLA material profiles. +1.1.7 Updated end g-code for MMU2 Single printer profiles. Added/updated filament and SLA material profiles. +1.1.6 Updated firmware version for MK2.5/S and MK3/S. +1.1.5 Updated MMU1 specific retraction settings for Prusament PC Blend +1.1.4 Added Prusament PC Blend filament profile. +1.1.3 Added SLA material and filament profile +1.1.2 Added renamed_from fields for PETG filaments to indicate that they were renamed from PET. +1.1.1 Added Verbatim and Fiberlogy PETG filament profiles. Updated auto cooling settings for ABS. +1.1.1-beta Updated for PrusaSlicer 2.2.0-beta +1.1.1-alpha4 Extended list of default filaments to be installed, top/bottom_solid_min_thickness defined, infill_acceleration changed etc +1.1.1-alpha3 Print bed textures are now configurable from the Preset Bundle. Requires PrusaSlicer 2.2.0-alpha3 and newer. +# The following line (max_slic3r_version) forces the users of PrusaSlicer 2.2.0-alpha3 and newer to update the profiles to 1.1.1-alpha3 and newer, +# so they will see the print bed. +max_slic3r_version = 2.2.0-alpha2 +min_slic3r_version = 2.2.0-alpha0 +1.1.1-alpha2 Bumped up config version, so our in house customer will get updated profiles. +1.1.0 Filament aliases, Creality profiles and other goodies for PrusaSlicer 2.2.0-alpha0 +min_slic3r_version = 2.1.1-beta0 +1.0.10 Updated firmware version for MK2.5/S and MK3/S. +1.0.9 Updated firmware version for MK2.5/S and MK3/S. +1.0.8 Various changes in FFF profiles, new filaments/materials added. See changelog. +1.0.7 Updated layer height limits for MINI +1.0.6 Added Prusa MINI profiles +min_slic3r_version = 2.1.0-alpha0 +1.0.5 Added SLA materials +1.0.4 Updated firmware version and 0.25mm nozzle profiles +1.0.3 Added filament profiles +1.0.2 Added SLA materials +1.0.1 Updated MK3 firmware version check to 3.8.0, new soluble support profiles for 0.6mm nozzle diameter MMU2S printers. +1.0.0 Updated end G-code for the MMU2 profiles to lift the extruder at the end of print. Wipe tower bridging distance was made smaller for soluble supports. +1.0.0-beta1 Updated color for the ASA filaments to differ from the other filaments. Single extruder printers now have no extruder color assigned, obects and toolpaths will be colored with the color of the active filament. +1.0.0-beta0 Printer model checks in start G-codes, ASA filament profiles, limits on min / max SL1 exposition times +1.0.0-alpha2 Printer model and nozzle diameter check +1.0.0-alpha1 Added Prusament ASA profile +1.0.0-alpha0 Filament specific retract for PET and similar copolymers, and for FLEX +min_slic3r_version = 1.42.0-alpha6 +0.8.9 Updated firmware version for MK2.5/S and MK3/S. +0.8.8 Updated firmware version for MK2.5/S and MK3/S. +0.8.7 Updated firmware version +0.8.6 Updated firmware version for MK2.5/S and MK3/S +0.8.5 Updated SL1 printer and material settings +0.8.4 Added Prusament ASA profile +0.8.3 FW version and SL1 materials update +0.8.2 FFF and SL1 settings update +0.8.1 Output settings and SLA materials update +0.8.0 Updated for the PrusaSlicer 2.0.0 final release +0.8.0-rc2 Updated firmware versions for MK2.5/S and MK3/S +0.8.0-rc1 Updated SLA profiles +0.8.0-rc Updated for the PrusaSlicer 2.0.0-rc release +0.8.0-beta4 Updated SLA profiles +0.8.0-beta3 Updated SLA profiles +0.8.0-beta2 Updated SLA profiles +0.8.0-beta1 Updated SLA profiles +0.8.0-beta Updated SLA profiles +0.8.0-alpha9 Updated SLA and FFF profiles +0.8.0-alpha8 Updated SLA profiles +0.8.0-alpha7 Updated SLA profiles +0.8.0-alpha6 Updated SLA profiles +min_slic3r_version = 1.42.0-alpha +0.8.0-alpha Updated SLA profiles +0.4.0-alpha4 Updated SLA profiles +0.4.0-alpha3 Update of SLA profiles +0.4.0-alpha2 First SLA profiles +min_slic3r_version = 1.41.3-alpha +0.4.12 Updated firmware version for MK2.5/S and MK3/S. +0.4.11 Updated firmware version for MK2.5/S and MK3/S. +0.4.10 Updated firmware version +0.4.9 Updated firmware version for MK2.5/S and MK3/S +0.4.8 MK2.5/3/S FW update +0.4.7 MK2/S/MMU FW update +0.4.6 Updated firmware versions for MK2.5/S and MK3/S +0.4.5 Enabled remaining time support for MK2/S/MMU1 +0.4.4 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt +0.4.3 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt +0.4.2 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt +0.4.1 New MK2.5S and MK3S FW versions +0.4.0 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt +min_slic3r_version = 1.41.1 +0.3.11 Updated firmware version for MK2.5/S and MK3/S. +0.3.10 Updated firmware version +0.3.9 Updated firmware version for MK2.5/S and MK3/S +0.3.8 MK2.5/3/S FW update +0.3.7 MK2/S/MMU FW update +0.3.6 Updated firmware versions for MK2.5 and MK3 +0.3.5 New MK2.5 and MK3 FW versions +0.3.4 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt +0.3.3 Prusament PETG released +0.3.2 New MK2.5 and MK3 FW versions +0.3.1 New MK2.5 and MK3 FW versions +0.3.0 New MK2.5 and MK3 FW version +min_slic3r_version = 1.41.0-alpha +0.2.9 New MK2.5 and MK3 FW versions +0.2.8 New MK2.5 and MK3 FW version +min_slic3r_version = 1.41.1 +0.2.7 New MK2.5 and MK3 FW version +0.2.6 Added MMU2 MK2.5 settings +min_slic3r_version = 1.41.0-alpha +0.2.5 Prusament is out - added prusament settings +0.2.4 Added soluble support profiles for MMU2 +0.2.3 Added materials for MMU2 single mode, edited MK3 xy stealth feedrate limit +0.2.2 Edited MMU2 Single mode purge line +0.2.1 Added PET and BVOH settings for MMU2 +0.2.0-beta5 Fixed MMU1 ramming parameters +0.2.0-beta4 Added filament loading speed at start, increased minimal purge on wipe tower +0.2.0-beta3 Edited ramming parameters and filament cooling moves for MMU2 +0.2.0-beta2 Edited first layer speed and wipe tower position +0.2.0-beta Removed limit on the MK3MMU2 height, added legacy M204 S T format to the MK2 profiles +0.2.0-alpha8 Added filament_load/unload_time for the PLA/ABS MMU2 filament presets. +0.2.0-alpha7 Vojtech's fix the incorrect *MK3* references +0.2.0-alpha6 Jindra's way to fix the 0.2.0-alpha5 version +0.2.0-alpha5 Bumped up firmware versions for MK2.5/MK3 to 3.3.1, disabled priming areas for MK3MMU2 +0.2.0-alpha4 Extended the custom start/end G-codes of the MMU2.0 printers for no priming towers. +0.2.0-alpha3 Adjusted machine limits for time estimates, added filament density and cost +0.2.0-alpha2 Renamed the key MK3SMMU to MK3MMU2, added a generic PLA MMU2 material +0.2.0-alpha1 added initial profiles for the i3 MK3 Multi Material Upgrade 2.0 +0.2.0-alpha moved machine limits from the start G-code to the new print profile parameters +min_slic3r_version = 1.40.0 +0.1.18 Updated firmware version +0.1.17 Updated firmware version for MK2.5/S and MK3/S +0.1.16 MK2.5/3/S FW update +0.1.15 MK2/S/MMU FW update +0.1.14 Updated firmware versions for MK2.5 and MK3 +0.1.13 New MK2.5 and MK3 FW versions +0.1.12 New MK2.5 and MK3 FW versions +0.1.11 fw version changed to 3.3.1 +0.1.10 MK3 jerk and acceleration update +0.1.9 edited support extrusion width for 0.25 and 0.6 nozzles +0.1.8 extrusion width for 0,25, 0.6 and variable layer height fixes +0.1.7 Fixed errors in 0.25mm and 0.6mm profiles +0.1.6 Split the MK2.5 profile from the MK2S +min_slic3r_version = 1.40.0-beta +0.1.5 fixed printer_variant fields for the i3 MK3 0.25 and 0.6mm nozzles +0.1.4 edited fw version, added z-raise after print +min_slic3r_version = 1.40.0-alpha +0.1.3 Fixed an incorrect position of the max_print_height parameter +0.1.2 Wipe tower changes +0.1.1 Minor print speed adjustments +0.1.0 Initial diff --git a/resources/profiles/PrusaResearch.ini b/resources/profiles/PrusaResearch.ini index fa9e14b22..074723438 100644 --- a/resources/profiles/PrusaResearch.ini +++ b/resources/profiles/PrusaResearch.ini @@ -5,7 +5,7 @@ name = Prusa Research # Configuration version of this file. Config file will only be installed, if the config_version differs. # This means, the server may force the PrusaSlicer configuration to be downgraded. -config_version = 1.2.0-alpha0 +config_version = 1.2.0-beta0 # Where to get the updates from? 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% @@ -18,7 +18,7 @@ changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1% [printer_model:MINI] -name = Original Prusa MINI +name = Original Prusa MINI && MINI+ variants = 0.4; 0.25; 0.6 technology = FFF family = MINI @@ -27,7 +27,7 @@ bed_texture = mini.svg default_materials = Generic PLA; Generic ABS @MINI; Generic PETG @MINI; Prusament PLA; Prusament PETG @MINI; Prusament ASA @MINI; Prusament PC Blend @MINI [printer_model:MK3S] -name = Original Prusa i3 MK3S +name = Original Prusa i3 MK3S && MK3S+ variants = 0.4; 0.25; 0.6 technology = FFF family = MK3 @@ -45,7 +45,7 @@ bed_texture = mk3.svg default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend [printer_model:MK3SMMU2S] -name = Original Prusa i3 MK3S MMU2S +name = Original Prusa i3 MK3S && MK3S+ MMU2S variants = 0.4; 0.25; 0.6 technology = FFF family = MK3 @@ -228,6 +228,8 @@ wipe_tower_y = 140 xy_size_compensation = 0 top_solid_min_thickness = 0.6 bottom_solid_min_thickness = 0.5 +infill_anchor = 2.5 +infill_anchor_max = 12 [print:*MK3*] fill_pattern = grid @@ -356,6 +358,7 @@ support_material_extrusion_width = 0.55 support_material_contact_distance = 0.15 support_material_xy_spacing = 80% output_filename_format = {input_filename_base}_{nozzle_diameter[0]}n_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode +infill_anchor_max = 15 [print:*0.6nozzleMK3*] external_perimeter_extrusion_width = 0.65 @@ -371,6 +374,7 @@ bridge_speed = 25 support_material_contact_distance = 0.15 support_material_xy_spacing = 80% output_filename_format = {input_filename_base}_{nozzle_diameter[0]}n_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode +infill_anchor_max = 15 [print:*0.6nozzleMINI*] external_perimeter_extrusion_width = 0.65 @@ -395,6 +399,7 @@ first_layer_acceleration = 1000 default_acceleration = 1250 support_material_speed = 40 output_filename_format = {input_filename_base}_{nozzle_diameter[0]}n_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode +infill_anchor_max = 15 [print:*soluble_support*] overhangs = 1 @@ -1433,7 +1438,7 @@ filament_notes = "" filament_settings_id = "" filament_soluble = 0 min_print_speed = 15 -slowdown_below_layer_time = 20 +slowdown_below_layer_time = 15 start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif} ; Filament gcode" [filament:*PLA*] @@ -1517,6 +1522,7 @@ filament_retract_lift = nil filament_retract_before_travel = 3 filament_wipe = 0 filament_max_volumetric_speed = 10 +slowdown_below_layer_time = 20 compatible_printers_condition = printer_model=="MINI" start_filament_gcode = "M900 K{if nozzle_diameter[0]==0.6}0.12{else}0.2{endif} ; Filament gcode" @@ -1617,6 +1623,7 @@ compatible_printers_condition = nozzle_diameter[0]>0.35 and ! (printer_notes=~/. extrusion_multiplier = 1.2 filament_cost = 49.99 filament_density = 3.9 +filament_spool_weight = 236 filament_colour = #804040 filament_max_volumetric_speed = 9 @@ -1627,6 +1634,7 @@ compatible_printers_condition = nozzle_diameter[0]>0.35 and ! (printer_notes=~/. extrusion_multiplier = 1.2 filament_cost = 49.99 filament_density = 3.13 +filament_spool_weight = 236 filament_colour = #808080 filament_max_volumetric_speed = 8 @@ -1637,6 +1645,7 @@ compatible_printers_condition = nozzle_diameter[0]>0.35 and ! (printer_notes=~/. extrusion_multiplier = 1.2 filament_cost = 72.89 filament_density = 3.9 +filament_spool_weight = 236 filament_colour = #82603E filament_max_volumetric_speed = 9 @@ -1651,6 +1660,7 @@ fan_always_on = 0 fan_below_layer_time = 10 filament_cost = 65.66 filament_density = 1.18 +filament_spool_weight = 236 first_layer_bed_temperature = 105 first_layer_temperature = 270 max_fan_speed = 20 @@ -1663,6 +1673,7 @@ inherits = *PLA* filament_vendor = ColorFabb filament_cost = 52.46 filament_density = 1.24 +filament_spool_weight = 236 [filament:ColorFabb woodFill] inherits = *PLA* @@ -1671,6 +1682,7 @@ compatible_printers_condition = nozzle_diameter[0]>0.35 and ! (printer_notes=~/. extrusion_multiplier = 1.1 filament_cost = 38.99 filament_density = 1.15 +filament_spool_weight = 236 filament_colour = #dfc287 filament_max_volumetric_speed = 9 first_layer_temperature = 200 @@ -1685,6 +1697,7 @@ compatible_printers_condition = nozzle_diameter[0]>0.35 and ! (printer_notes=~/. extrusion_multiplier = 1.1 filament_cost = 38.99 filament_density = 1.18 +filament_spool_weight = 236 filament_colour = #634d33 filament_max_volumetric_speed = 6 first_layer_temperature = 220 @@ -1697,6 +1710,7 @@ inherits = *PET* filament_vendor = ColorFabb filament_cost = 38.99 filament_density = 1.27 +filament_spool_weight = 236 first_layer_bed_temperature = 90 first_layer_temperature = 260 temperature = 270 @@ -1707,6 +1721,7 @@ filament_vendor = ColorFabb extrusion_multiplier = 1.05 filament_cost = 49.99 filament_density = 1.35 +filament_spool_weight = 236 filament_colour = #804040 filament_max_volumetric_speed = 2 first_layer_bed_temperature = 90 @@ -1715,12 +1730,14 @@ start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and no temperature = 260 filament_retract_length = nil filament_retract_lift = 0.4 +compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) [filament:ColorFabb nGen] inherits = *PET* filament_vendor = ColorFabb filament_cost = 52.46 filament_density = 1.2 +filament_spool_weight = 236 bridge_fan_speed = 40 fan_always_on = 0 fan_below_layer_time = 10 @@ -1734,6 +1751,7 @@ inherits = *FLEX* filament_vendor = ColorFabb filament_cost = 58.30 filament_density = 1 +filament_spool_weight = 236 bed_temperature = 85 bridge_fan_speed = 40 cooling = 1 @@ -1764,6 +1782,7 @@ temperature = 240 filament_retract_length = nil filament_retract_lift = 0.3 start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.06{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K15{else}M900 K30{endif} ; Filament gcode LA 1.0" +compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) [filament:Kimya ABS Carbon] inherits = *ABSC* @@ -1774,16 +1793,12 @@ filament_colour = #804040 filament_max_volumetric_speed = 6 first_layer_temperature = 260 temperature = 260 +compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) [filament:Kimya ABS Kevlar] -inherits = *ABSC* +inherits = Kimya ABS Carbon filament_vendor = Kimya -filament_cost = 140.4 filament_density = 1.037 -filament_colour = #804040 -filament_max_volumetric_speed = 6 -first_layer_temperature = 260 -temperature = 260 [filament:E3D Edge] inherits = *PET* @@ -1971,13 +1986,14 @@ inherits = *ABSC* filament_vendor = Esun filament_cost = 27.82 filament_density = 1.04 +filament_spool_weight = 265 [filament:Hatchbox ABS] inherits = *ABSC* filament_vendor = Hatchbox filament_cost = 27.82 filament_density = 1.04 -filament_spool_weight = 225 +filament_spool_weight = 245 [filament:Plasty Mladec ABS] inherits = *ABSC* @@ -1991,6 +2007,7 @@ inherits = *ABSC* filament_vendor = Verbatim filament_cost = 25.87 filament_density = 1.05 +filament_spool_weight = 235 start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.03{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{else}M900 K20{endif} ; Filament gcode LA 1.0" [filament:Generic PETG] @@ -2018,12 +2035,14 @@ inherits = *PLA* filament_vendor = Devil Design filament_cost = 20.99 filament_density = 1.24 +filament_spool_weight = 250 [filament:Devil Design PETG] inherits = *PET* filament_vendor = Devil Design filament_cost = 20.99 filament_density = 1.23 +filament_spool_weight = 250 first_layer_temperature = 230 first_layer_bed_temperature = 85 temperature = 230 @@ -2313,6 +2332,7 @@ inherits = *PET* filament_vendor = Verbatim filament_cost = 27.90 filament_density = 1.27 +filament_spool_weight = 235 compatible_printers_condition = nozzle_diameter[0]!=0.6 and printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) [filament:Fiberlogy PETG] @@ -2370,6 +2390,7 @@ temperature = 230 bed_temperature = 90 filament_cost = 20.99 filament_density = 1.23 +filament_spool_weight = 250 filament_type = PETG [filament:Verbatim PETG @0.6 nozzle] @@ -2379,6 +2400,7 @@ first_layer_temperature = 230 temperature = 240 filament_cost = 27.90 filament_density = 1.27 +filament_spool_weight = 235 filament_type = PETG [filament:Fiberlogy PETG @0.6 nozzle] @@ -2489,18 +2511,26 @@ filament_vendor = AmazonBasics filament_cost = 25.4 filament_density = 1.24 +[filament:Overture PLA] +inherits = *PLA* +filament_vendor = Overture +filament_cost = 22 +filament_density = 1.24 +filament_spool_weight = 235 + [filament:Hatchbox PLA] inherits = *PLA* filament_vendor = Hatchbox filament_cost = 25.4 filament_density = 1.24 -filament_spool_weight = 225 +filament_spool_weight = 245 [filament:Esun PLA] inherits = *PLA* filament_vendor = Esun filament_cost = 25.4 filament_density = 1.24 +filament_spool_weight = 265 [filament:Das Filament PLA] inherits = *PLA* @@ -2636,6 +2666,75 @@ min_fan_speed = 0 start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.05{else}0.1{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K28{else}M900 K48{endif} ; Filament gcode LA 1.0" temperature = 250 +[filament:Fiberthree F3 PA Pure Pro] +inherits = *common* +filament_vendor = Fiberthree +filament_cost = 165.98 +filament_density = 1.2 +bed_temperature = 70 +first_layer_bed_temperature = 75 +first_layer_temperature = 270 +temperature = 270 +bridge_fan_speed = 30 +cooling = 1 +disable_fan_first_layers = 3 +fan_always_on = 1 +fan_below_layer_time = 20 +min_print_speed = 15 +slowdown_below_layer_time = 10 +filament_colour = #DEE0E6 +filament_max_volumetric_speed = 5 +filament_soluble = 0 +filament_type = NYLON +max_fan_speed = 20 +min_fan_speed = 20 +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.05{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K15{else}M900 K30{endif} ; Filament gcode LA 1.0" +filament_retract_length = 2 +filament_retract_speed = 40 +filament_retract_lift = nil +filament_retract_before_travel = 1.5 +filament_wipe = 0 +compatible_printers_condition = printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) + +[filament:Fiberthree F3 PA-CF Pro] +inherits = *common* +filament_vendor = Fiberthree +filament_cost = 171.98 +filament_density = 1.25 +bed_temperature = 70 +first_layer_bed_temperature = 75 +first_layer_temperature = 275 +temperature = 275 +bridge_fan_speed = 30 +cooling = 1 +disable_fan_first_layers = 3 +fan_always_on = 0 +fan_below_layer_time = 20 +min_print_speed = 15 +slowdown_below_layer_time = 10 +filament_colour = #DEE0E6 +filament_max_volumetric_speed = 5 +filament_soluble = 0 +filament_type = NYLON +max_fan_speed = 0 +min_fan_speed = 0 +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.05{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K15{else}M900 K30{endif} ; Filament gcode LA 1.0" +filament_retract_length = 2 +filament_retract_speed = 40 +filament_retract_lift = nil +filament_retract_before_travel = 1.5 +filament_wipe = 0 +compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) + +[filament:Fiberthree F3 PA-GF Pro] +inherits = Fiberthree F3 PA-CF Pro +filament_vendor = Fiberthree +filament_cost = 169.98 +filament_density = 1.27 +fan_always_on = 1 +max_fan_speed = 15 +min_fan_speed = 15 + [filament:Taulman T-Glase] inherits = *PET* filament_vendor = Taulman @@ -2655,12 +2754,14 @@ inherits = *PLA* filament_vendor = Verbatim filament_cost = 42.99 filament_density = 1.24 +filament_spool_weight = 235 [filament:Verbatim BVOH] inherits = *common* filament_vendor = Verbatim filament_cost = 79.99 filament_density = 1.23 +filament_spool_weight = 235 bed_temperature = 60 bridge_fan_speed = 100 cooling = 0 @@ -2742,6 +2843,7 @@ inherits = *common* filament_vendor = Verbatim filament_cost = 72 filament_density = 0.89 +filament_spool_weight = 235 bed_temperature = 100 bridge_fan_speed = 100 cooling = 1 @@ -2772,6 +2874,7 @@ fan_always_on = 0 fan_below_layer_time = 10 filament_cost = 58.66 filament_density = 1.18 +filament_spool_weight = 236 first_layer_bed_temperature = 105 first_layer_temperature = 270 max_fan_speed = 20 @@ -2785,6 +2888,7 @@ filament_vendor = ColorFabb filament_type = PETG filament_cost = 38.99 filament_density = 1.27 +filament_spool_weight = 236 first_layer_bed_temperature = 90 first_layer_temperature = 260 temperature = 270 @@ -2792,10 +2896,11 @@ temperature = 270 [filament:ColorFabb XT-CF20 @MMU1] inherits = *PETMMU1* filament_vendor = ColorFabb -compatible_printers_condition = nozzle_diameter[0]>0.35 and printer_model=="MK2SMM" +compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model=="MK2SMM" extrusion_multiplier = 1.05 filament_cost = 49.99 filament_density = 1.35 +filament_spool_weight = 236 filament_colour = #804040 filament_max_volumetric_speed = 2 first_layer_bed_temperature = 90 @@ -2808,6 +2913,7 @@ inherits = *PETMMU1* filament_vendor = ColorFabb filament_cost = 21.2 filament_density = 1.2 +filament_spool_weight = 236 bridge_fan_speed = 40 fan_always_on = 0 fan_below_layer_time = 10 @@ -2848,6 +2954,7 @@ inherits = *PETMMU1* filament_vendor = Devil Design filament_cost = 20.99 filament_density = 1.23 +filament_spool_weight = 250 first_layer_temperature = 230 first_layer_bed_temperature = 85 temperature = 230 @@ -2865,6 +2972,7 @@ inherits = *PETMMU1* filament_vendor = Verbatim filament_cost = 27.90 filament_density = 1.27 +filament_spool_weight = 235 [filament:Fiberlogy PETG @MMU1] inherits = *PETMMU1* @@ -2904,6 +3012,65 @@ max_fan_speed = 5 min_fan_speed = 0 start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode" +[filament:Fiberthree F3 PA Pure Pro @MMU1] +inherits = *common* +filament_vendor = Fiberthree +filament_cost = 165.98 +filament_density = 1.2 +bed_temperature = 70 +first_layer_bed_temperature = 75 +first_layer_temperature = 270 +temperature = 270 +bridge_fan_speed = 30 +cooling = 1 +disable_fan_first_layers = 3 +fan_always_on = 1 +fan_below_layer_time = 20 +min_print_speed = 15 +slowdown_below_layer_time = 10 +filament_colour = #DEE0E6 +filament_max_volumetric_speed = 4 +filament_soluble = 0 +filament_type = NYLON +max_fan_speed = 20 +min_fan_speed = 20 +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.05{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K15{else}M900 K30{endif} ; Filament gcode LA 1.0" +compatible_printers_condition = printer_model=="MK2SMM" + +[filament:Fiberthree F3 PA-CF Pro @MMU1] +inherits = *common* +filament_vendor = Fiberthree +filament_cost = 171.98 +filament_density = 1.25 +bed_temperature = 70 +first_layer_bed_temperature = 75 +first_layer_temperature = 275 +temperature = 275 +bridge_fan_speed = 30 +cooling = 1 +disable_fan_first_layers = 3 +fan_always_on = 0 +fan_below_layer_time = 20 +min_print_speed = 15 +slowdown_below_layer_time = 10 +filament_colour = #DEE0E6 +filament_max_volumetric_speed = 4 +filament_soluble = 0 +filament_type = NYLON +max_fan_speed = 0 +min_fan_speed = 0 +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.05{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K15{else}M900 K30{endif} ; Filament gcode LA 1.0" +compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model=="MK2SMM" + +[filament:Fiberthree F3 PA-GF Pro @MMU1] +inherits = Fiberthree F3 PA-CF Pro @MMU1 +filament_vendor = Fiberthree +filament_cost = 169.98 +filament_density = 1.27 +fan_always_on = 1 +max_fan_speed = 15 +min_fan_speed = 15 + [filament:SemiFlex or Flexfill 98A @MMU1] inherits = *FLEX* filament_vendor = Generic @@ -2941,6 +3108,7 @@ inherits = Generic PETG; *PETMINI* filament_vendor = Devil Design filament_cost = 20.99 filament_density = 1.23 +filament_spool_weight = 250 first_layer_temperature = 230 first_layer_bed_temperature = 85 temperature = 230 @@ -2960,6 +3128,7 @@ inherits = Generic PETG; *PETMINI* filament_vendor = Verbatim filament_cost = 27.90 filament_density = 1.27 +filament_spool_weight = 235 compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6 [filament:Fiberlogy PETG @MINI] @@ -2978,11 +3147,69 @@ fan_always_on = 0 cooling = 1 min_fan_speed = 15 max_fan_speed = 15 -slowdown_below_layer_time = 20 disable_fan_first_layers = 4 fan_below_layer_time = 30 bridge_fan_speed = 25 +[filament:Fiberthree F3 PA Pure Pro @MINI] +inherits = *common* +filament_vendor = Fiberthree +filament_cost = 165.98 +filament_density = 1.2 +bed_temperature = 70 +first_layer_bed_temperature = 75 +first_layer_temperature = 270 +temperature = 270 +bridge_fan_speed = 30 +cooling = 1 +disable_fan_first_layers = 3 +fan_always_on = 1 +fan_below_layer_time = 20 +min_print_speed = 15 +slowdown_below_layer_time = 10 +filament_colour = #DEE0E6 +filament_max_volumetric_speed = 4 +filament_soluble = 0 +filament_type = NYLON +max_fan_speed = 20 +min_fan_speed = 20 +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.05{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K15{else}M900 K30{endif} ; Filament gcode LA 1.0" +compatible_printers_condition = printer_model=="MINI" + +[filament:Fiberthree F3 PA-CF Pro @MINI] +inherits = *common* +filament_vendor = Fiberthree +filament_cost = 171.98 +filament_density = 1.25 +bed_temperature = 70 +first_layer_bed_temperature = 75 +first_layer_temperature = 275 +temperature = 275 +bridge_fan_speed = 30 +cooling = 1 +disable_fan_first_layers = 3 +fan_always_on = 0 +fan_below_layer_time = 20 +min_print_speed = 15 +slowdown_below_layer_time = 10 +filament_colour = #DEE0E6 +filament_max_volumetric_speed = 4 +filament_soluble = 0 +filament_type = NYLON +max_fan_speed = 0 +min_fan_speed = 0 +start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.6}0.04{else}0.05{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K15{else}M900 K30{endif} ; Filament gcode LA 1.0" +compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model=="MINI" + +[filament:Fiberthree F3 PA-GF Pro @MINI] +inherits = Fiberthree F3 PA-CF Pro @MINI +filament_vendor = Fiberthree +filament_cost = 169.98 +filament_density = 1.27 +fan_always_on = 1 +max_fan_speed = 15 +min_fan_speed = 15 + [filament:Kimya ABS Carbon @MINI] inherits = *ABSMINI* filament_vendor = Kimya @@ -2992,27 +3219,23 @@ filament_colour = #804040 filament_max_volumetric_speed = 6 first_layer_temperature = 260 temperature = 260 +compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model=="MINI" [filament:Kimya ABS Kevlar @MINI] -inherits = *ABSMINI* +inherits = Kimya ABS Carbon @MINI filament_vendor = Kimya -filament_cost = 140.4 filament_density = 1.037 -filament_colour = #804040 -filament_max_volumetric_speed = 6 -first_layer_temperature = 260 -temperature = 260 [filament:Esun ABS @MINI] inherits = Generic ABS; *ABSMINI* filament_vendor = Esun filament_cost = 27.82 filament_density = 1.08 +filament_spool_weight = 265 fan_always_on = 0 cooling = 1 min_fan_speed = 15 max_fan_speed = 15 -slowdown_below_layer_time = 20 disable_fan_first_layers = 4 fan_below_layer_time = 30 bridge_fan_speed = 25 @@ -3022,12 +3245,11 @@ inherits = Generic ABS; *ABSMINI* filament_vendor = Hatchbox filament_cost = 27.82 filament_density = 1.08 -filament_spool_weight = 225 +filament_spool_weight = 245 fan_always_on = 0 cooling = 1 min_fan_speed = 15 max_fan_speed = 15 -slowdown_below_layer_time = 20 disable_fan_first_layers = 4 fan_below_layer_time = 30 bridge_fan_speed = 25 @@ -3042,7 +3264,6 @@ fan_always_on = 0 cooling = 1 min_fan_speed = 15 max_fan_speed = 15 -slowdown_below_layer_time = 20 disable_fan_first_layers = 4 fan_below_layer_time = 30 bridge_fan_speed = 25 @@ -3052,11 +3273,11 @@ inherits = Generic ABS; *ABSMINI* filament_vendor = Verbatim filament_cost = 25.87 filament_density = 1.05 +filament_spool_weight = 235 fan_always_on = 0 cooling = 1 min_fan_speed = 15 max_fan_speed = 15 -slowdown_below_layer_time = 20 disable_fan_first_layers = 4 fan_below_layer_time = 30 bridge_fan_speed = 25 @@ -3084,6 +3305,7 @@ first_layer_temperature = 240 temperature = 240 filament_retract_length = nil filament_retract_lift = 0.3 +compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model=="MINI" [filament:Prusament PETG @0.6 nozzle MINI] inherits = Prusament PETG; *PETMINI06* @@ -3106,6 +3328,7 @@ temperature = 230 bed_temperature = 90 filament_cost = 20.99 filament_density = 1.23 +filament_spool_weight = 250 [filament:Plasty Mladec PETG @0.6 nozzle MINI] inherits = Generic PETG; *PETMINI06* @@ -3115,6 +3338,7 @@ filament_spool_weight = 230 [filament:Verbatim PETG @0.6 nozzle MINI] inherits = Generic PETG; *PETMINI06* filament_vendor = Verbatim +filament_spool_weight = 235 [filament:Fiberlogy PETG @0.6 nozzle MINI] inherits = Generic PETG; *PETMINI06* @@ -3250,6 +3474,7 @@ filament_spool_weight = 230 inherits = ColorFabb nGen; *PETMINI* filament_cost = 52.46 filament_density = 1.2 +filament_spool_weight = 236 [filament:E3D PC-ABS @MINI] inherits = E3D PC-ABS; *ABSMINI* @@ -3265,7 +3490,6 @@ fan_always_on = 0 cooling = 1 min_fan_speed = 15 max_fan_speed = 15 -slowdown_below_layer_time = 20 disable_fan_first_layers = 4 fan_below_layer_time = 30 bridge_fan_speed = 25 @@ -3318,7 +3542,6 @@ min_fan_speed = 20 max_fan_speed = 20 bridge_fan_speed = 30 min_print_speed = 15 -slowdown_below_layer_time = 20 disable_fan_first_layers = 4 fan_below_layer_time = 30 filament_type = PC @@ -3341,7 +3564,6 @@ fan_always_on = 0 cooling = 1 min_fan_speed = 15 max_fan_speed = 15 -slowdown_below_layer_time = 20 disable_fan_first_layers = 4 fan_below_layer_time = 30 bridge_fan_speed = 25 @@ -3375,6 +3597,7 @@ fan_always_on = 0 fan_below_layer_time = 10 filament_cost = 58.66 filament_density = 1.18 +filament_spool_weight = 236 first_layer_bed_temperature = 100 first_layer_temperature = 270 max_fan_speed = 20 @@ -3387,6 +3610,7 @@ filament_vendor = ColorFabb filament_type = PETG filament_cost = 38.99 filament_density = 1.27 +filament_spool_weight = 236 first_layer_bed_temperature = 90 first_layer_temperature = 260 temperature = 270 @@ -3394,10 +3618,11 @@ temperature = 270 [filament:ColorFabb XT-CF20 @MINI] inherits = *PETMINI* filament_vendor = ColorFabb -compatible_printers_condition = nozzle_diameter[0]>0.35 and printer_model=="MINI" +compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model=="MINI" extrusion_multiplier = 1.05 filament_cost = 49.99 filament_density = 1.35 +filament_spool_weight = 236 filament_colour = #804040 filament_max_volumetric_speed = 2 first_layer_bed_temperature = 90 @@ -3825,6 +4050,27 @@ initial_exposure_time = 35 material_type = Tough material_vendor = Made for Prusa +[sla_material:Prusa Rich Black Tough @0.025] +inherits = *common 0.025* +exposure_time = 5 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Made for Prusa + +[sla_material:Prusa Deep Blue Transparent Tough @0.025] +inherits = *common 0.025* +exposure_time = 5 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Made for Prusa + +[sla_material:Prusa Yellow Jewelry Casting @0.025] +inherits = *common 0.025* +exposure_time = 8 +initial_exposure_time = 45 +material_type = Casting +material_vendor = Made for Prusa + [sla_material:Siraya Tech Simple Clear @0.025] inherits = *common 0.025* exposure_time = 8 @@ -4582,6 +4828,20 @@ initial_exposure_time = 35 material_type = Tough material_vendor = Made for Prusa +[sla_material:Prusa Rich Black Tough @0.05] +inherits = *common 0.05* +exposure_time = 8 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Made for Prusa + +[sla_material:Prusa Deep Blue Transparent Tough @0.05] +inherits = *common 0.05* +exposure_time = 8 +initial_exposure_time = 35 +material_type = Tough +material_vendor = Made for Prusa + ########### Materials 0.035 [sla_material:Prusa Orange Tough @0.035] @@ -5106,18 +5366,21 @@ min_layer_height = 0.15 printer_variant = 0.6 default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 -[printer:Original Prusa i3 MK3S] +[printer:Original Prusa i3 MK3S & MK3S+] inherits = Original Prusa i3 MK3 +renamed_from = "Original Prusa i3 MK3S" printer_model = MK3S start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.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 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.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:Original Prusa i3 MK3S 0.25 nozzle] +[printer:Original Prusa i3 MK3S & MK3S+ 0.25 nozzle] inherits = Original Prusa i3 MK3 0.25 nozzle +renamed_from = "Original Prusa i3 MK3S 0.25 nozzle" printer_model = MK3S start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.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 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E8.0 F700.0 ; intro line\nG1 X100.0 E12.5 F700.0 ; intro line\nG92 E0.0\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} -[printer:Original Prusa i3 MK3S 0.6 nozzle] +[printer:Original Prusa i3 MK3S & MK3S+ 0.6 nozzle] inherits = Original Prusa i3 MK3 0.6 nozzle +renamed_from = "Original Prusa i3 MK3S 0.6 nozzle" printer_model = MK3S start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.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 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} @@ -5184,15 +5447,17 @@ extruder_colour = #FF8000;#DB5182;#00FFFF;#FF4F4F;#9FFF9F start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.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 E32.0 F1073.0\nG1 X5.0 E32.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\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 = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\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\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors\n -[printer:Original Prusa i3 MK3S MMU2S Single] +[printer:Original Prusa i3 MK3S & MK3S+ MMU2S Single] inherits = *mm2s* +renamed_from = "Original Prusa i3 MK3S MMU2S Single" single_extruder_multi_material = 0 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.9.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.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.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\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\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 layer_z < max_print_height}G1 Z{z_offset+min(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.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 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 MMU2S Single 0.6 nozzle] -inherits = Original Prusa i3 MK3S MMU2S Single +[printer:Original Prusa i3 MK3S & MK3S+ MMU2S Single 0.6 nozzle] +inherits = Original Prusa i3 MK3S & MK3S+ MMU2S Single +renamed_from = "Original Prusa i3 MK3S MMU2S Single 0.6 nozzle" single_extruder_multi_material = 0 nozzle_diameter = 0.6 max_layer_height = 0.40 @@ -5201,8 +5466,9 @@ printer_variant = 0.6 start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.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.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.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\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0 default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 -[printer:Original Prusa i3 MK3S MMU2S Single 0.25 nozzle] -inherits = Original Prusa i3 MK3S MMU2S Single +[printer:Original Prusa i3 MK3S & MK3S+ MMU2S Single 0.25 nozzle] +inherits = Original Prusa i3 MK3S & MK3S+ MMU2S Single +renamed_from = "Original Prusa i3 MK3S MMU2S Single 0.25 nozzle" single_extruder_multi_material = 0 nozzle_diameter = 0.25 max_layer_height = 0.15 @@ -5212,8 +5478,9 @@ retract_lift = 0.15 start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.9.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.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F1400.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\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\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 -[printer:Original Prusa i3 MK3S MMU2S] +[printer:Original Prusa i3 MK3S & MK3S+ MMU2S] inherits = *mm2s* +renamed_from = "Original Prusa i3 MK3S MMU2S" machine_max_acceleration_e = 8000,8000 nozzle_diameter = 0.4,0.4,0.4,0.4,0.4 extruder_colour = #FF8000;#DB5182;#00FFFF;#FF4F4F;#9FFF9F @@ -5222,8 +5489,9 @@ end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG ## 0.6mm nozzle MMU2/S printer profiles -[printer:Original Prusa i3 MK3S MMU2S 0.6 nozzle] -inherits = Original Prusa i3 MK3S MMU2S +[printer:Original Prusa i3 MK3S & MK3S+ MMU2S 0.6 nozzle] +inherits = Original Prusa i3 MK3S & MK3S+ MMU2S +renamed_from = "Original Prusa i3 MK3S MMU2S 0.6 nozzle" nozzle_diameter = 0.6,0.6,0.6,0.6,0.6 max_layer_height = 0.40 min_layer_height = 0.15 @@ -5242,8 +5510,9 @@ default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3 ## MINI -[printer:Original Prusa MINI] +[printer:Original Prusa MINI & MINI+] inherits = *common* +renamed_from = "Original Prusa MINI" printer_model = MINI printer_technology = FFF printer_variant = 0.4 @@ -5286,12 +5555,13 @@ retract_layer_change = 0 silent_mode = 0 remaining_times = 1 start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S170 ; set extruder temp for bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nM109 R170 ; wait for bed leveling temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG28 ; home all without mesh bed level\nG29 ; mesh bed leveling \nM104 S[first_layer_temperature] ; set extruder temp\nG92 E0.0\nG1 Y-2.0 X179 F2400\nG1 Z3 F720\nM109 S[first_layer_temperature] ; wait for extruder temp\n\n; intro line\nG1 X170 F1000\nG1 Z0.2 F720\nG1 X110.0 E8.0 F900\nG1 X40.0 E10.0 F700\nG92 E0.0\n\nM221 S95 ; set flow -end_gcode = G1 E-1 F2100 ; retract\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+2, max_print_height)}{endif} F720 ; Move print head up\nG1 X178 Y180 F4200 ; park print head\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} F720 ; Move print head further up\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow\nM900 K0 ; reset LA\nM84 ; disable motors +end_gcode = G1 E-1 F2100 ; retract\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+2, max_print_height)}{endif} F720 ; Move print head up\nG1 X178 Y178 F4200 ; park print head\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} F720 ; Move print head further up\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow\nM900 K0 ; reset LA\nM84 ; disable motors 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_MINI\n extruder_colour = -[printer:Original Prusa MINI 0.25 nozzle] -inherits = Original Prusa MINI +[printer:Original Prusa MINI & MINI+ 0.25 nozzle] +inherits = Original Prusa MINI & MINI+ +renamed_from = "Original Prusa MINI 0.25 nozzle" printer_variant = 0.25 nozzle_diameter = 0.25 max_layer_height = 0.15 @@ -5299,26 +5569,18 @@ min_layer_height = 0.05 default_print_profile = 0.10mm DETAIL @0.25 nozzle MINI retract_length = 3 retract_lift = 0.15 -retract_speed = 70 -deretract_speed = 40 -wipe = 1 -retract_before_wipe = 70% retract_before_travel = 1 start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S170 ; set extruder temp for bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nM109 R170 ; wait for bed leveling temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG28 ; home all without mesh bed level\nG29 ; mesh bed leveling \nM104 S[first_layer_temperature] ; set extruder temp\nG92 E0.0\nG1 Y-2.0 X179 F2400\nG1 Z3 F720\nM109 S[first_layer_temperature] ; wait for extruder temp\n\n; intro line\nG1 X170 F1000\nG1 Z0.2 F720\nG1 X110.0 E8.0 F600\nG1 X40.0 E10.0 F400\nG92 E0.0\n\nM221 S95 ; set flow -[printer:Original Prusa MINI 0.6 nozzle] -inherits = Original Prusa MINI +[printer:Original Prusa MINI & MINI+ 0.6 nozzle] +inherits = Original Prusa MINI & MINI+ +renamed_from = "Original Prusa MINI 0.6 nozzle" printer_variant = 0.6 nozzle_diameter = 0.6 max_layer_height = 0.40 min_layer_height = 0.15 default_print_profile = 0.30mm QUALITY @0.6 nozzle MINI retract_length = 3.5 -retract_lift = 0.2 -retract_speed = 70 -deretract_speed = 40 -wipe = 1 -retract_before_wipe = 70% retract_before_travel = 1.5 [printer:Original Prusa SL1] From 6beb49325550cd83c2b20a81fa4e18fe0174f48c Mon Sep 17 00:00:00 2001 From: David Kocik <kocikdav@gmail.com> Date: Sat, 28 Nov 2020 10:56:31 +0100 Subject: [PATCH 135/138] Logging level at LoadFromOtherInstanceEvent --- src/slic3r/GUI/Plater.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index f1edb711d..6709800ff 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2132,7 +2132,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) #if ENABLE_DRAG_AND_DROP_FIX this->q->Bind(EVT_LOAD_MODEL_OTHER_INSTANCE, [this](LoadFromOtherInstanceEvent& evt) { - BOOST_LOG_TRIVIAL(error) << "received load from other instance event (1)"; + BOOST_LOG_TRIVIAL(trace) << "Received load from other instance event."; wxArrayString input_files; for (size_t i = 0; i < evt.data.size(); ++i) { input_files.push_back(from_u8(evt.data[i].string())); @@ -2142,7 +2142,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) }); #else this->q->Bind(EVT_LOAD_MODEL_OTHER_INSTANCE, [this](LoadFromOtherInstanceEvent &evt) { - BOOST_LOG_TRIVIAL(error) << "received load from other instance event (2)"; + BOOST_LOG_TRIVIAL(trace) << "Received load from other instance event."; this->load_files(evt.data, true, true); }); #endif // ENABLE_DRAG_AND_DROP_FIX From 3dd6d7e878c42acca6f5e910191885c3b6c72a8c Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Sat, 28 Nov 2020 11:13:46 +0100 Subject: [PATCH 136/138] Escaping of ampersands in label texts (otherwise the ampersand is processed as a hotkey prefix and not displayed at all). Solves visualization of the new profile names containing ampersands (Original Prusa Mini & Mini+) Also the text was not correcly converted from UTF8. --- src/slic3r/GUI/Tab.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 469a48527..b95488112 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1279,7 +1279,9 @@ void Tab::update_preset_description_line() } else if (parent == nullptr) { description_line = _(L("Current preset is inherited from the default preset.")); } else { - description_line = _(L("Current preset is inherited from")) + ":\n\t" + parent->name; + std::string name = parent->name; + boost::replace_all(name, "&", "&&"); + description_line = _(L("Current preset is inherited from")) + ":\n\t" + from_u8(name); } if (preset.is_default || preset.is_system) From 30d7ef2cf911c89e36aa373794952fb947929cac Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Sat, 28 Nov 2020 11:14:53 +0100 Subject: [PATCH 137/138] Bumped up version number to beta1. Changed the location of PrusaSlicer profiles from PrusaSlicer-alpha to PrusaSlicer-beta. --- src/slic3r/GUI/GUI_App.cpp | 4 ++-- version.inc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 8a033610f..7a8b78664 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -663,8 +663,8 @@ bool GUI_App::init_opengl() void GUI_App::init_app_config() { // Profiles for the alpha are stored into the PrusaSlicer-alpha directory to not mix with the current release. - SetAppName(SLIC3R_APP_KEY); - SetAppName(SLIC3R_APP_KEY "-alpha"); +// SetAppName(SLIC3R_APP_KEY); + SetAppName(SLIC3R_APP_KEY "-beta"); // SetAppDisplayName(SLIC3R_APP_NAME); // Set the Slic3r data directory at the Slic3r XS module. diff --git a/version.inc b/version.inc index b34ee729d..156cdc6a4 100644 --- a/version.inc +++ b/version.inc @@ -3,7 +3,7 @@ set(SLIC3R_APP_NAME "PrusaSlicer") set(SLIC3R_APP_KEY "PrusaSlicer") -set(SLIC3R_VERSION "2.3.0-alpha4") +set(SLIC3R_VERSION "2.3.0-beta1") set(SLIC3R_BUILD_ID "PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN") set(SLIC3R_RC_VERSION "2,3,0,0") set(SLIC3R_RC_VERSION_DOTS "2.3.0.0") From 3f999acef867441ea35d31a9875c91ddbcc90d3f Mon Sep 17 00:00:00 2001 From: Lukas Matena <lukasmatena@seznam.cz> Date: Sat, 28 Nov 2020 20:51:57 +0100 Subject: [PATCH 138/138] Added a missing include (gcc 8.4) --- src/slic3r/GUI/Tab.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index b95488112..45af589ef 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -27,6 +27,7 @@ #include <wx/filedlg.h> #include <boost/algorithm/string/predicate.hpp> +#include <boost/algorithm/string/replace.hpp> #include "wxExtensions.hpp" #include "PresetComboBoxes.hpp" #include <wx/wupdlock.h>